PHP Manual

# PHP Kılavuzu

07-07-2026

# Telif Hakkı

Copyright © 1997 - 2026 PHP Belgelendirme Grubu. Bu belge, sadece Creative Commons Attribution lisansının 3.0 veya sonraki sürümlerinin koşullarına bağlı kalınarak dağıtılabilir. Creative Commons Attribution lisansının 3.0 sürümü bu kılavuzla birlikte dağıtılmaktadır. Şu anki son sürümü » http://creativecommons.org/licenses/by/3.0/ adresinden temin edilebilir.

# PHP Kılavuzu

# Bu kılavuz hakkında

PHP, "`PHP: Hypertext Preprocessor`" sözcüklerinin baş harfleriyle temsil edilen HTML içine gömülebilir açık kaynak kodlu, genel amaçlı, özellikle site geliştirmeye uygun bir betik dilidir. Dil yapısının önemli bir kısmını C, Java ve Perl gibi dillerden almış, kendisine has özelliklerle bu yapıyı pekiştirmiş, kolay öğrenilen bir dildir. Dilin ana amacı, site geliştiricilerinin devingen sayfalar oluşturmasını çabuklaştırmaksa da PHP ile çok daha fazlasını yapabilirsiniz.

Bu kılavuz temel olarak bir işlev başvuru kılavuzudur. Fakat bunun yanında bir dil kılavuzu, PHP'nin önemli özelliklerinin bazılarının açıklamaları ile tamamlayıcı bazı bilgiler de içermektedir.

Bu kılavuz, PHP'nin en son iki büyük sürümünü (sürüm 7 ve 8) kapsayan bilgileri içerir. PHP'nin bu sürümlerine artık dahil olmayan eklentiler ve önceki sürümlerdeki işlevlerde yapılan değişiklikler hakkında bilgi dahil değildir. PHP'nin önceki sürümlerini belgelendiren kılavuzun eski sürümlerinin arşivlerine » PHP sitesinin "Belgeler" ("Documentation") sayfasındaki "Daha fazla belge" ("More documentation") bölümünden ulaşılabilir.

Bu kılavuzu çeşitli biçemlerde » https://www.php.net/download-docs.php adresinden temin edebilirsiniz. Bu kılavuzun nasıl geliştirildiğiyle ilgili daha ayrıntılı bilgi edinmek için eklerdeki 'Kılavuz Hakkında' bölümüne bakabilirsiniz. PHP'nin tarihçesi ile ilgileniyorsanız onu da ek bölümler arasında bulabilirsiniz.

# Yazarlar ve Katkıda Bulunanlar

Çalışmamıza halen katkıda bulunmakta olan çok sayıda kişi ve geçmişte önemli katkılarda bulunmuş birçok insan var. Ayrıca, kılavuz sayfalarında kullanıcı önerileri üzerinden katılımda bulunarak destek veren birçok isimsiz kişi de var. Bu kişiler düzenli olarak buradaki listelere ekleniyor, tüm katılımcılara destekleri için müteşekkiriz. Aşağıdaki listelerde isimler alfabetik olarak sıralanmıştır.

# Yazarlar ve Düzeltmenler

Burada yer alan katılımcılar kılavuzun içeriğine yaptıkları ve/veya yapmakta oldukları eklemelerden dolayı takdir edilmelidirler: Mehdi Achour, Bill Abt, Jouni Ahto, Alexander Aulbach, Stig Bakken, George Peter Banyard, Christoph M. Becker, Daniel Beckham, Friedhelm Betz, Nilgün Belma Bugüner, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Peter Cowburn, Antony Dovgal, Daniel Egeberg, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Nuno Lopes, Hannes Magnusson, Stanislav Malyshev, Justin Martin, Rafael Martinez, Rick McGuire, Moacir de Oliveira Miranda Júnior, Kalle Sommer Nielsen, Yasuo Ohgaki, Philip Olson, Richard Quadling, Derick Rethans, Rob Richards, Georg Richter, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Damien Seguy, Masahiro Takagi, Yoshinari Takaoka, Yannick Torres, Jakub Vrana, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar ve Andrei Zmievski.

Burada yer alan katılımcılar kılavuzun düzenlenmesi çalışmasında kayda değer katkılarda bulunmuşlardır: Stig Bakken, Peter Cowburn, Gabor Hojtsy, Hartmut Holzgraefe, Philip Olson ve Egon Schmid.

# Kullanıcı Önerilerini Sürdürenler

Şu anki en etkin geliştiriciler: Daniel Brown, Nuno Lopes, Felipe Pena, Thiago Pojda ve Maciek Sokolewicz.

Bu kişiler kullanıcı önerilerinin yönetiminde çok ciddi çaba sarfetmişlerdir: Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Etienne Kneuss, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Hannes Magnusson, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles ve Jeroen van Wolffelaar.

# Başlarken

# PHP nedir ve ne yapabilir?

## PHP nedir?

PHP (açılımı PHP: Hypertext Preprocessor) geniş bir kitle tarafından kullanılan, özellikle sanal yöreler üzerinde geliştirme için tasarlanmış HTML içine gömülebilen bir betik dilidir.

Tamam da, bu tam olarak ne anlama gelmektedir? Bir örnek:

Örnek 1 - Başlangıç olarak bir örnek

    <!DOCTYPE html>
    <html>
        <head>
            <title>Örnek</title>
        </head>
        <body>

            <?php
                echo "Merhaba, ben bir PHP betiğiyim!";
            ?>

        </body>
    </html>

Bir PHP betiğinin Perl ya da C gibi dillerden ne kadar farklı bir yapıda olduğuna dikkat edilmelidir. HTML kodu oluşturmak için bir sürü kod yazmak yerine, istenen işi yapan bir PHP kodu yazılır ve HTML kodunun içine gömülür (bu örnekte, yapılan iş ekrana yazı yazmak). PHP kodu `<?php` ve `?>` özel başlangıç ve bitiş etiketleri arasına yazılır. Bu etiketler "PHP kipine" rahatlıkla girip çıkabilmeyi sağlar.

PHP'yi Javascript gibi kullanıcı tarafında çalışan dillerden ayıran, sunucu tarafında çalıştırılıyor olmasıdır. Yukardaki örnekteki kodu kendi sunucunuzda çalıştırırsanız, sitenize bağlanan kullanıcılar kodu göremeyecekler ve müdahale edemeyecekler, yalnızca sonucu görebileceklerdir. Dilerseniz HTTP sunucunuzu bütün HTML dosyalarınızı PHP dosyası olarak görüp işleyecek hale bile getirebilirsiniz. Buna rağmen kullanıcılar sizin gerçekte sunucu taraflı bir uygulama kullandığınızı fark edemeyebilir.

PHP kullanmanın en güzel yanlarından biri, yeni kullanıcılar için öğreniminin oldukça kolay olması ve aynı zamanda profesyonel kullanıcılar için ileri seviyede özellikler içermesidir. PHP'nin özellikler listesi uzun da olsa okunmalıdır. Kısa sürede PHP ile programlamaya başlanabilir ve birkaç saat içersinde basit programlar yazmaya başlanabilir.

PHP'nin gelişimi sunucu-taraflı programlamaya odaklanmışsa da, çok daha fazlasının yapılmasına olanak tanıyan araçlara da sahiptir. PHP neler yapabilir? bölümünde bu araçlar hakkında daha fazla bilgiye ulaşılabilir. Eğer yalnızca site programlaması yapılacaksa, Basit bir eğitmen bölümünden devam edilebilir.

## PHP neler yapabilir?

Her şeyi. PHP temel olarak sunucu-taraflı programlamaya odaklanmıştır, bu nedenle CGI uygulamalarının yaptığı her şey, örneğin formdan veri toplama, dinamik sayfa içeriği oluşturma, ya da çerez alıp gönderme gibi işlemler yapılabilir. Ancak PHP bunlardan çok daha fazlasını yapabilecek yetenektedir.

PHP betiklerinin kullanıldığı başlıca iki alan vardır.

- Sunucu-taraflı programlama. Bu PHP için en geleneksel ve en temel olan alandır. Sunucu-taraflı programlama için üç şey gerekir: PHP çözümleyici (CGI ya da sunucu modülü), bir HTTP sunucusu ve bir tarayıcı. PHP programlamada deneyimli olanlar tüm bunları evindeki makinede çalıştırabilir. Yapılandırma ve Kurulum bölümünden bununla ilgili daha fazla bilgiye ulaşılabilir.
- Komut satırı uygulamaları. Bir PHP uygulaması komut satırından hiçbir sunucu ya da tarayıcı uygulaması kullanmadan çalıştırılabilir. Burada tek gereksinim PHP çözümleyicidir. Bu tür kullanım cron üzerinden (Windows eşdeğeri görev yöneticisi) düzenli çalıştırılan işlemler ya da basit metin işleme görevleri için idealdir. PHP'nin komut satırında kullanımı bölümünde daha ayrıntılı bilgiye ulaşılabilir.

PHP bütün büyük işletim sistemlerinde, Linux, birçok Unix türevi (HP-UX, Solaris, OpenBSD vb.), Microsoft Windows, MacOS, RISC OS dahil olmak üzere çok çeşitli platformlarda çalışabilir. PHP benzer biçimde bugün yaygın biçimde kullanılan HTTP sunucularının büyük kısmını destekler. Bunlara Apache, IIS ve daha birçok sunucu örnek gösterilebilir. Bunlara FastCGI PHP çalıştırılabilirini kullanan lighttpd ve nginx gibi sunucular da dahildir. PHP modül olarak kullanılabildiği gibi bir CGI işleyici olarak da çalıştırılabilir.

Sonuç olarak, PHP ile işletim sistemi ve HTTP sunucusu seçme özgürlüğü gelir. Dahası, hangi programlama yönteminin kullanılacağına, işlevsel yaklaşımın mı yoksa nesne yönelimli yaklaşımın mı yoksa her ikisinin birden mi kullanılacağına bile karar verilebilir.

PHP'nin yetenekleri yalnızca HTML çıktı üretmekle sınırlı değildir. Örneğin, görüntüler ve PDF dosyaları gibi zengin çeşitlilikte dosya türünün çıktılanması, veri şifreleme, epostaların gönderilmesi ve daha pek işlem PHP'nin yetenekleri arasındadır. Aynı şekilde JSON ya da XML gibi her türden metin tabanlı dosyayı oluşturabilmek mümkündür. PHP bu dosyaları otomatik olarak oluşturabilir ve ekrana yazdırmanın yanında dosya sisteminde saklayabilir, böylece dinamik içerik için sunucu-taraflı bir depo sistemini kullanıma sunabilir.

PHP'nin en güçlü ve en çok üstünde durulan özelliklerinden biri, sahip olduğu geniş ve gelişmiş veritabanı desteğidir. Veritabanlarına özgü eklentilerden birini (örn. mysql) kullanarak veya PDO gibi bir soyutlama katmanı kullanarak PHP ile veritabanı bağlantılı site sayfaları oluşturmak ya da ODBC eklentisi üzerinden bu standardı destekleyen bir bağlantı açmak son derece basittir. Diğer veritabanları için cURL eklentisi veya soketler (CouchDB gibi) kullanılabilir.

PHP, farklı hizmetlerle LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (Windows için) ve daha sayısız protokol aracılığıyla iletişim kurabilecek bir altyapıya da sahiptir. Hazır modüllerin haricinde ham ağ soketleri açıp bu soketler üzerinden istediğiniz bütün protokollerle çalışabilirsiniz. PHP, WDDX üzerinden sanal olarak sanal doku üzerinde hangi dilde yazılmış olursa olsun tüm uygulamalarla haberleşebilir. Ayrıca Java nesnelerinin oluşturulabilmesi ve şeffaf biçimde PHP nesneleri olarak kullanılabilmeleri önemli bir diğer özelliktir.

PHP oldukça faydalı belge işleme özelliklerine sahiptir. Bu yelpaze Genişletilmiş POSIX ya da Perl düzenli ifade komutlarından (PCRE) XML dosyalarını okumaya ve çözümlemeye kadar uzanır. PHP tüm XML uzantılarını libxml2 tabanında tek bir standartta toplamış ve SimpleXML ile XMLReader ve XMLWriter desteğini de bünyesine katarak sunduğu imkan yelpazesini genişletmiştir.

Alfabetik olarak ve sınıflandırılarak belgelenmiş daha pek çok ilginç eklenti vardır. Bunlara ek olarak » XDebug gibi PHP kılavuzu içinde belgelenmiş ya da belgelenmemiş PECL eklentileri de mevcuttur.

Görüldüğü üzere bu sayfa PHP'nin sunabileceği bütün özellikleri ve faydaları anlatabilmek için yeterli değil. Yapılandırma ve Kurulum bölümünde ve İşlev başvuru kılavuzunda listelenen eklentilerin başlangıç bölümlerindeki açıklamalardan her bir eklenti için daha fazla bilgiye ulaşılabilir.

# Basit bir eğitmen

## İçindekiler

- Neye ihtiyaç var?
- İlk PHP-etkin sayfa
- İşe yarar bir şey
- Form Kullanımı
- Sonraki adım nedir?

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 PHP'nin yapabildikleri bölümü incelenebilir.

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.

## Neye ihtiyaç var?

Bu eğitmen süresince HTTP sunucusunda PHP desteğinin etkinleştirilmiş olduğu ve tüm .php 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 .php 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.

Çok değerli olan band genişliği boşa harcanmadan yerel olarak geliştirme yapılmak isteniyor olsun. Bu durumda, » Apache gibi bir HTTP sunucusunun ve elbette » PHP'nin indirilmesi ve kurulması gerekecektir. Bu ikilinin yanında, » MySQL gibi bir veritabanının da indirilip kurulması iyi olacaktır.

Bu üçlüyü tek tek kurmak yerine daha basit bir yol izlenebilir. Bu kılavuz PHP için kurulum bilgileri (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 » kurulum posta listesi'ne başvurulabilir. Daha basit bir yoldan gitmek istenirse, işletim sistemine uygun olan » ön yapılandırmalı paketler 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, » rpmfind ve » PBone gibi araçlar RPM dosyalarını bulmakta yardımcı olacaktır. Debian için ise » apt-get sayfası ziyaret edilebilir.

## İlk PHP-etkin sayfa

merhaba.php isimli bir dosya oluşturulup HTTP sunucusunun belge kök dizinine (DOCUMENT_ROOT) aşağıdaki içerikle kaydedilebilir:

Örnek 1 - İlk PHP betiği: merhaba.php

    <?php

    echo "Merhaba Dünya";

    ?>

Tarayıcı kullanılarak HTTP sunucusunun adresine erişilebilir, bunun için sunucu alan adının sonuna `/merhaba.php` eklemek yeterli olacaktır. Yerel olarak geliştirme yaparken bu URL `http://localhost/merhaba.php` veya `http://127.0.0.1/merhaba.php` ya da `http://[::1]/merhaba.php` gibi bir şey olacaktır, ancak bu HTTP sunucusunun yapılandırma ayarlarına bağlıdır.

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:

    <!DOCTYPE html>
    <html>
      <head>
        <title>PHP Denemesi</title>
      </head>
      <body>
        <?php echo '<p>Merhaba Dünya</p>'; ?>
      </body>
    </html>

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:

    <html>
      <head>
        <title>PHP Denemesi</title>
      </head>
      <body>
        <p>Merhaba Dünya</p>
      </body>
    </html>

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 echo deyimi kullanılarak elde edilen `Merhaba Dünya` cümlesidir. Bu dosyanın hiçbir şekilde çalıştırılabilir olmasına ya da özel bir türde olmasına ihtiyaç duyulmaz. 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.

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 Kurulum 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 `http://` üzerinden erişilmelidir. Dosya `file://` üzerinden isteniyorsa, PHP tarafından işlenmeyecektir. Sorun her şeye rağmen devam ediyorsa, » PHP desteği alma yöntemleri kullanılabilir.

Bu örneğin amacı özel PHP etiketi biçemini göstermektir. Örnekte `<?php` ile PHP başlangıç etiketi belirtilmektedir. Sonra PHP komutu yazılmış ve kapanış etiketi `?>` 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 temel PHP sözdimi bölümünü okunabilir.

> Bilginize: Satır-sonları hakkında

> 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. `?>` 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. `?>` 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.

> Bilginize: Metin Düzenleyiciler Hakkında

> 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ı » PHP Düzenleyicileri Listesi 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.

> Bilginize: Kelime İşlemciler Hakkında

> 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 salt metin olarak kaydedildiğinden emin olunmalıdır, aksi takdirde PHP'nin betiği okuması ve çalıştırması mümkün olmayacaktır.

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! phpinfo() işlevi çalıştırılıp sistem ve yapılandırma ilgili öntanımlı değişkenler, yüklü PHP modülleri ve yapılandırma ayarları gibi konularda faydalı birçok bilgiye ulaşılabilir. Bu önemli bilgiler için biraz vakit ayrılması ve bunların incelenmesi önerilir.

Örnek 2 - PHP ile sistem bilgisine ulaşmak

    <?php phpinfo(); ?>

## İşe yarar bir şey

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 değişkende saklanır. Değişkenler PHP'de her zaman dolar imi ile başlar. Şu an için ilgilenilen değişken $_SERVER['HTTP_USER_AGENT']'tir.

> Bilginize:

> $_SERVER 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 Süper Küreseller bölümünde bulunabilir.

Bu değişkenin değerinin görüntülenmesi için yapılacaklar:

Örnek 1 - Bir değişkeni (dizi öğesini) yazdırmak

    <?php echo $_SERVER['HTTP_USER_AGENT']; ?>

Bu betiğin çıktısı şöyle bir dizge olabilirdi:

    Mozilla/5.0 (Linux) Firefox/112.0

PHP'de birçok farklı değişken türü mevcuttur. Yukardaki örnekte bir diziye ait bir öğe yazdırıldı. Diziler çok daha kullanışlı olabilir.

$_SERVER PHP tarafından kullanıma otomatik olarak sunulan bir değişkendir. Kullanım kılavuzunun Öntanımlı Değişkenler bölümünden tümünün listesine ulaşılabilir ya da önceki örnekte kullanılan phpinfo() işlevi ile üretilen çıktıya bakarak bütün listeye ulaşılabilir.

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:

Örnek 2 - Denetim yapılarının ve işlevlerin kullanım örneği

    <?php
    if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
        echo 'Firefox kullanıldığı saptandı';
    }
    ?>

Bu betiğin çıktısı şöyle olabilirdi:

    Firefox kullanıldığı saptandı.

Burada birkaç yeni kavram devreye sokuldu. Örneğin, if 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 Dil Başvuru Kılavuzu bölümünün okunması faydalı olacaktır.

Devreye sokulan ikinci kavram, str_contains() işlevi ile yapılan çağrı oldu. str_contains(), bir dizgeyi başka bir dizgenin içinde arayan yerleşik bir PHP işlevidir. Burada $_SERVER['HTTP_USER_AGENT'] içinde (samanlık) `'Firefox'` dizgesi (iğne) aranıyor. İğne samanlıkta bulunursa `true`, aksi takdirde `false` döner. if 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. If, else gibi denetim yapıları ile strtoupper() ve strlen() 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 bir işlev tanımı nasıl okunur ve PHP işlevleri bölümleri okunabilir.

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:

Örnek 3 - HTML ve PHP kiplerini karıştırmak

    <?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
    }
    ?>

Bu betikten elde edilebilecek sonuçlardan biri:

    <h3>str_contains() false döndürmemiş olmalı</h3>
    <p>Firefox kullanıldığı saptandı.</p>

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. str_contains() 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ş `Firefox` dizgesinin bulunup bulunmamasına bağlıdır.

## Form Kullanımı

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 Dış kaynaklı değişkenler bölümü okunabilir. Örnek HTML formu:

Örnek 1 - Örnek HTML formu

    <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>

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, action.php sayfası çağrılır. Bu dosyaya aşağıdakiler yazılabilir:

Örnek 2 - Formdan veri yazdırmak

    Merhaba <?php echo htmlspecialchars($_POST['name']); ?>.
    Siz <?php echo (int) $_POST['age']; ?> yaşındasınız.

Bu betikten elde edilecek örnek çıktı:

    Merhaba Ahmet. Siz 22 yaşındasınız.

htmlspecialchars() ve `(int)` kısımları haricinde yapılan iş oldukça açıktır. htmlspecialchars() 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 int türüne dönüştürülmesiyle 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 süzgeç eklentisi de kullanılabilirdi. $_POST['isim'] değişkeni ve $_POST['yaş'] değişkenleri PHP tarafından otomatik olarak oluşturulur. Daha önce $_SERVER süper küresel değişkeni kullanılmıştı, yukarıda ise tüm POST verisini içeren $_POST süper küresel değişkeni tanıtıldı. Formda tanımlı yöntemin POST oluşuna dikkat edilmelidir. GET yöntemi kullanılmış olsaydı, form bilgileri $_GET süper küresel değişkenine atanmış olacaktı. Bunların haricinde, istemciden gelen verinin hangi kaynaktan geldiği önemli değilse $_REQUEST süper küreseli de kullanılabilirdi. Bu değişken GET, POST ve COOKIE verilerinin birleşiminden oluşur.

## Sonraki adım nedir?

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.

PHP ile neler yapabileceği ile ilgili sunumlara ulaşmak için, » http://talks.php.net/ adresindeki PHP Konferans Malzemeleri Sitesi ziyaret edilebilir.

- Giriş — PHP nedir ve ne yapabilir?
- Basit bir eğitmen
  - Neye ihtiyaç var?
  - İlk PHP-etkin sayfa
  - İşe yarar bir şey
  - Form Kullanımı
  - Sonraki adım nedir?

# Yapılandırma ve Kurulum

# Genel Kurulum Değerlendirmesi

Kuruluma başlamadan önce PHP'yi ne amaçla kullanacağınızı bilmeniz faydalı olur. Kullanım amaçları PHP ile ne yapılabilir? bölümünde anlatıldığı üzere iki bölümde incelenebilir:

- Genel Ağ siteleri ve uygulamaları (Sunucu taraflı)
- Komut satırı uygulamaları

İlk ve en önemli amaç için üç şeye ihtiyacınız bulunmaktadır: PHP'nin kendisi, bir HTTP Sunucusu ve bir tarayıcı. Muhtemelen bir tarayıcınız zaten vardır. Kullanmakta olduğunuz işletim sistemine bağlı olarak bir HTTP Sunucunuz da olabilir (Linux ve macOS üzerinde Apache, Windows üzerinde IIS gibi). Yoksa, bir firmadan site barındırma hizmeti alabilirsiniz. Böylece herşeyi kendiniz ayarlamak zorunda kalmazsınız. Sadece PHP betiklerinizi yazmakla ilgilenir ve onları kiraladığınız alana yükleyip tarayıcınızla sonuçları görürsünüz.

Sunucuyu ve PHP’yi kendiniz yapılandıracaksanız, PHP’yi sunucuya bağlamak için iki seçeneğiniz olacak. Bir çok sunucunun PHP için (SAPI de denilen) bir modülü vardır. Apache, Microsoft Internet Information Server, Netscape and iPlanet sunucuları bu tür sunuculardandır. Eğer sunucunuzda PHP için modül desteği yoksa sunucunuz ne türde olursa olsun onu bir CGI veya FastCGI işlemcisi olarak kullanabilirsiniz. Yani, sunucuya gelen tüm PHP dosyası isteklerini işleme sokmak için PHP’nin CGI çalıştırılabilirini kullanmak üzere sunucunuzu yapılandırabilirsiniz.

PHP'yi komut satırı betikleri yazmak için kullanmayı düşünüyorsanız (otomatik olarak görüntü üreten veya komut satırından aktardığınız bağımsız değişkenlerle metin dosyalarını işleyen betikler gibi), bir komut satırı betik yorumlayıcısına ihtiyacınız var demektir. Bu konuda daha fazla bigi edinmek için Komut satırı PHP uygulamalarının yazılması bölümüne bakınız. Bu durumda ne sunucuya ne de tarayıcıya ihtiyacınız olur.

Bu noktadan itibaren belgede, daha çok Unix ve Windows üzerinde çalışan modüllü HTTP sunucuları ve CGI çalıştırılabilirlerinin yapılandırılması üzerinde durulacaktır. Ayrıca, komut satırı çalıştırılabiliri hakkında da bilgi bulabileceksiniz.

PHP'nin kaynak kodu ve Windows için çalıştırılabilir sürümleri » https://www.php.net/downloads.php adresinden temin edilebilir.

# Unix Sistemlere Kurulum

## İçindekiler

- Debian GNU/Linux Kurulum Bilgileri
- Installing from packages on GNU/Linux distributions that use DNF
- OpenBSD üzerinde portlar ve paketlerden kurulum
- Installing from source on Unix and macOS systems
- CGI ve Komut Satırı Ayarları
- Unix sistemler ve Apache 2.x
- Nginx 1.4.x on Unix systems
- Unix sistemlerde Lighttpd 1.4
- LiteSpeed Web Server/OpenLiteSpeed Web Server on Unix systems
- Solaris'e özgü Kurulum İpuçları

Çoğu Unix (ve Linux) işletim sistemi ve dağıtımında, PHP'nin paketlenmiş bir sürümü ve paketleme sistemleri aracılığıyla erişilebilen eklentiler bulunur. Bu sistemleri kullanarak PHP yükleme hakkında temel bilgiler içeren bölümler vardır.

Bazı dağıtımlar için, genellikle daha geniş çeşitlilikte kullanılabilir sürümler ve eklentiler içeren paketlerin üçüncü taraf depoları da vardır.

PHP, FrankenPHP ve Open Swoole gibi bazı üçüncü taraf uygulama sunucularının bir bileşeni olarak da yüklenebilir.

Son olarak, PHP her zaman kaynak dağıtımlarından yüklenebilir; bu da hangi özelliklerin, eklentilerin ve sunucu API'lerinin etkinleştirileceğini seçmede en büyük esnekliği sağlar. Özellikle farklı sunucu API'leriyle kullanmak üzere PHP'yi derleme ve yapılandırma hakkında bilgi içeren bölümler vardır.

## Debian GNU/Linux Kurulum Bilgileri

Bu bölüm Unix sistemlerde PHP'nin » Debian GNU/Linux kurulumu hakkında bilgiler ve ipuçları içerir.

Uyarı

Üçüncü partilerdeki resmi olmayan derlemeler burada desteklenmemektedir. » İndirme alanımızdaki en son paketi alıp aynı hatanın devam ettiğini görmedikçe Debian ekibine herhangi bir yazılım hatası raporlanmamalıdır.

PHP'nin Unix üzerinde derlenmesi ile ilgili talimatlar Debian için de geçerli olsa da bu kılavuz sayfasında ayrıca, hem `apt` hem de `aptitude` komutlarının kullanımı gibi diğer seçeneklere özgü bilgilere de yer verilmiştir. Bu kılavuz sayfasında bu iki komut kimi zaman diğerinin yerine kullanılmıştır.

### APT kullanımı

Öncelikle dikkat edeceğiniz şey, Apache2 ile tümleştirmek için `libapache-mod-php` ve PEAR ile tümleştirmek için `php-pear` gibi PHP ile ilgili diğer paketlerinde gerekli olabileceğidir.

İkinci olarak, bir paketi kurmadan önce paket listesini güncellemeniz yerinde bir hareket olacaktır. Bu işlem genellikle apt update komutu çalıştırılarık yapılır.

Örnek 1 - Apache2 ile kurulum örneği

    # apt install php5-common libapache2-mod-php5 php5-cli

APT, Apache2 için hazırlanmış PHP modülünü ve bu modülü etkinleştirmek için bağımlı olduğu diğer paketleri otomatik olarak kuracaktır. Yapılan değişikliğin geçerli olması için Apache2 yeniden başlatılmalıdır. Örnek:

Artık herşey yerli yerine oturduğuna göre aşağıdaki örneği izleyerek Apache ve PHP'yi kurabilirsiniz:

Örnek 2 - PHP kurulduktan sonra Apache2'nin dirdirilip yeniden başlatılması

    # /etc/init.d/apache2 stop
    # /etc/init.d/apache2 start

### Yapılandırma üzerinde daha iyi denetim

Bir önceki bölümde PHP sadece çekirdek modüllerle kurulmuştu. Çok geçmeden MySQL, cURL, GD ve benzeri modülleri etkinleştirme ihtiyacı duyabilirsiniz. Bunları da `apt` komutuyla kurabilirsiniz.

Örnek 3 - Ek PHP paketleri listesinin alınma yöntemleri

    # apt-cache search php
    # apt search php | grep -i mysql
    # aptitude search php

Bu örnek komutların çıktısından da görebileceğiniz gibi, php-cgi, php-cli ve php-dev gibi özel paketlerde dahil olmak üzere kurabileceğiniz çok sayıda PHP modülü vardır. Listeyi dikkatlice inceleyip ihtiyacınız olanları seçtikten sonra `apt` veya `aptitude` ile bunları kurabilirsiniz. Debian bunlar içinde bağımlılık denetimleri yapacağından, örneğin MySQL ve cURL kurmak istediğinizde bunların bağımlı olduğu paketleri de kurmayı teklif edecektir:

Örnek 4 - MySQL ve cURL PHP modüllerinin kurulumu

    # apt install php5-mysql php5-curl

APT otomatik olarak farklı php.ini (/etc/php/7.4/apache2/php.ini, /etc/php/7.4/conf.d/pdo.ini ve benzeri) dosyalarına uygun satırları ve eklentinin türüne bağlı olarak `extension=foo.so` benzeri girdileri ekleyecektir. Bu değişikliklerin de etkili olabilmesi için Apache2'nin yeniden başlatılması gerekir.

### Bilinen sorunlar

- Bir betiğin sonucu yerine betiğin PHP kaynak kodlarını görüyorsanız, Debian muhtemelen /etc/apache2/apache2.conf dosyasına (veya benzeri bir dosyaya) PHP ile ilgili satırları eklememiştir. Bu konu ile ilgili ayrıntılar için Debian kılavuzuna bakınız.
- Eğer bir eklenti tanımlı gibi gözüktüğü halde işlevlerini kullanamıyorsanız ilgili ini dosyasının yüklendiğinden ve Apache2'nin yeniden başlatıldığından emin olmalısınız.
- Debian üzerinde paket kurmak için kullanılabilecek iki temel komut vardır: `apt` ve `aptitude`. Bu iki komut arasındaki farklar için dağıtımınızla gelen belgelere bakınız.

## Installing from packages on GNU/Linux distributions that use DNF

While PHP can be installed from source, it is also available through packages on systems that use DNF, such as Red Hat Enterprise Linux, OpenSUSE, Fedora, CentOS, Rocky Linux, and Oracle Enterprise Linux.

Uyarı

Üçüncü taraflardan gelen paketlerin resmi olmadığı varsayılır ve PHP projesi tarafından doğrudan desteklenmez. Karşılaşılan herhangi bir hata, » resmi indirme alanındaki paketler kullanılarak yeniden üretilemediği sürece, hata, resmi olmayan paketlerin sağlayıcısına bildirilmelidir.

The packages can be installed using the dnf command.

### Installing packages

First, note that other related packages may be desired like `php-pear` for » PEAR, or `php-mysqlnd` for the MySQL extension.

Second, before installing a package, it's wise to ensure the package list is up to date. Typically, this is done by running the command dnf update.

Örnek 1 DNF Install Example

    # dnf install php php-common

DNF will automatically install the configuration for PHP for the web server, but it may need to be restarted in order for the changes to take effect. For example:

Örnek 2 Restarting Apache once PHP is installed

    # sudo systemctl restart httpd

### Better control of configuration

In the last section, PHP was installed with only core modules. It's very likely that additional modules will be desired, such as MySQL, cURL, GD, etc. These may also be installed via the dnf command.

Örnek 3 Methods for listing additional PHP packages

    # dnf search php

The list of packages will include a large number of packages that includes basic PHP components, such as `php-cli`, `php-fpm`, and `php-devel`, as well as many PHP extensions. When extensions are installed, additional packages will be automatically installed as necessary to satisfy the dependencies of those packages.

Örnek 4 Install PHP with MySQL, GD

    # dnf install php-mysqlnd php-gd

DNF will automatically add the appropriate lines to the different php.ini related files like /etc/php/8.3/php.ini, /etc/php/8.3/conf.d/*.ini, etc. and depending on the extension will add entries similar to `extension=foo.so`. However, restarting the web server (like Apache) is required before these changes take effect.

## OpenBSD üzerinde portlar ve paketlerden kurulum

Bu bölüm PHP'nin » OpenBSD sistemlere kurulumu hakkında bilgiler ve ipuçları içerir.

### İkil Paketlerin Kullanımı

PHP'yi OpenBSD üzerine kurmak için ikil paketlerin kullanımı en basit ve önerilen bir yoldur. Temel paket, modül paketlerinden ayrıdır ve her modül paketi diğerlerinden bağımsız olarak kurulup kaldırılabilir. İhtiyaç duyacağınız dosyaları OpenBSD CD'nizde veya FTP sitesinde bulabilirsiniz.

İhtiyacınız olan ana paket php olup, temel motoru (artı fpm, gettext ve iconv) içerir ve aralarından seçim yapabileceğiniz çeşitli sürümler de mevcut olabilir. Modül paketleri ise php-mysql veya php-imap gibi isimler alırlar. Bu modülleri php.ini dosyanızda etkin ve etkisiz kılmak için phpxs komutuna ihtiyacınız olacak.

Örnek 1 - OpenBSD Paket Kurulum Örneği

    # pkg_add php
    # pkg_add php-apache
    # pkg_add php-mysqli
      (PEAR kütüphanesini kur)
    # pkg_add pear

    Paketlerle ilgili talimatları izle
      (paketleri kaldırmak için)
    # pkg_delete php
    # pkg_delete php-apache
    # pkg_delete php-mysqli
    # pkg_delete pear

OpenBSD'deki ikil paketler hakkında ayrıntılı bilgi edinmek için » packages(7) kılavuz sayfasını okuyunuz.

### Portların Kullanımı

Ayrıca, PHP'yi kaynak paketinden » port ağacını kullanarak da derleyebilirsiniz. Ancak, bu sadece OpenBSD üzerinde tecrübeli kullanıcılar için önerilebilecek bir yoldur. PHP portu iki alt dizine ayrılır: çekirdek ve eklentiler. Eklentilerin bulunduğu dizin desteklenen tüm PHP modülleri için alt paketler üretir. Bu modüllerden üretilmesini istemedikleriniz için no_* FLAVOR'unu kullanınız. Örneğin imap modülünün derlenmeden geçilmesi için FLAVOR'a no_imap atayınız.

### Bilinen Sorunlar

- Apache ve Nginx artık OpenBSD'nin öntanımlı sunucusu olmamakla beraber her ikiksi de portlarda ve paketlerde kolayca bulunabilir. Yeni öntanımlı sunucu 'httpd'dir.
- httpd'nin öntanımlı kurulumu bir » chroot(2) hücresinde çalışır, böylece PHP betiklerinin /var/www altındaki dosyalara erişmesi engellenir. Bu bakımdan PHP oturum dosyalarının saklanması için ya /var/www/tmp diye bir dizine ya da başka bir oturum arayüzü kullanmaya ihtiyacınız olacaktır. Buna ek olarak, veritabanı soketlerinin de hücre içine yerleştirilmesi veya localhost arayüzünü dinlemesi gerekir. Ağ işlevleri kullanıyorsanız, /etc dizinindeki /etc/resolv.conf ve /etc/services gibi dosyaların /var/www/etc dizinine taşınması gerekecektir. OpenBSD PEAR paketi otomatik olarak doğru chroot dizinlerine kurulur.
- » gd eklentisi için, OpenBSD paketi Xorg'un kurulu olmasını gerektirir. xbase.tgz dosya kümesi eklenerek temel kurulumda zaten kurulmadıysa, kurulum sonrasında eklenebilir (Bkz: » OpenBSD FAQ#4).

## Installing from source on Unix and macOS systems

Prerequisite software for compiling:

- » GNU make
- A C compiler (as of PHP 8.0.0, C99 compatibility is required; as of PHP 8.4.0, C11 compatibility is required)
- A web server
- Any module specific components (such as GD, PDF libs, etc.)

When building directly from Git sources or after custom modifications, these additional tools may be necessary:

- » autoconf:
  - PHP 7.3 and later: 2.68+
  - PHP 7.2: 2.64+
  - PHP 7.1 and earlier: 2.59+
- » re2c:
  - PHP 8.3 and later: 1.0.3+
  - PHP 8.2 and earlier: 0.13.4+
- » bison:
  - PHP 7.4 and later: 3.0.0+
  - PHP 7.3 and earlier: 2.4+ (including Bison 3.x)

For more detailed steps for compiling PHP from source, see the » README.md file in the source tarball.

The initial PHP setup and configuration process is controlled by the use of the command line options of the configure script. A list of available options along with short explanations can be shown by running ./configure --help. This manual documents the different options separately. The core options can be found in the appendix, while the different extension specific options are described on the reference pages.

After the configuration script was been run, PHP can be built using the make command. The Installation section of the frequently asked questions has further information about how to handle build problems.

> Bilginize: Some Unix systems (such as OpenBSD and SELinux) may disallow mapping pages both writable and executable for security reasons, what is called » PaX MPROTECT or » W^X violation protection. This kind of memory mapping is necessary for PCRE's JIT support, so either PHP has to be built without PCRE's JIT support, or the binary has to be whitelisted by any means provided by the system.

> Bilginize: Cross-compiling for ARM with the Android toolchain is currently not supported.

## CGI ve Komut Satırı Ayarları

PHP, CGI işlemleri için öntanımlı olarak hem bir CLI hem de bir CGI programı olarak derlenir. Bu sayede HTTP sunucuda çalışmayacak betikleri yorumlamak için veya CGI işlemleri için kullanılabilecek bir komut satırı yorumlayıcısı oluşturulmuş olur. PHP'nin bir modül olarak çalıştığı bir HTTP sunucusu genellikle başarım sorunlarına bir çözüm olarak kullanılır. Bununla birlikte, CGI sürümü, farklı PHP sayfalarını farklı kullanıcı kimlikleriyle çalıştırabilme imkanı sunar.

Uyarı

CGI kipinde çalışan bir sunucu olası saldırılara açık hale gelir. Sunucunuzun böyle saldırılardan nasıl korunacağınızı öğrenmek için CGI güvenliği bölümü okunabilir.

### Sınama

PHP'yi bir CGI programı olarak derlediyseniz, derlemenizi make test komutunu vererek sınayabilirsiniz. Derlemenizi sınamak daima iyidir. Bu yolla sonradan karşılaşabileceğiniz sorunları daha ortaya çıkmadan yakalama şansınız olur.

### Değişkenlerin kullanımı

Bazı sunucu kaynaklı ortam değişkenleri geçerli » CGI/1.1 belirtiminde tanımlanmamıştır; sadece şu değişkenler tanımlıdır: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL ve SERVER_SOFTWARE. Bunların dışında kalan herşey 'üretici eklentileri' olarak ele alınmalıdır.

## Unix sistemler ve Apache 2.x

Bu bölüm Unix sistemlerde PHP'nin Apache 2.x'e kurulumu hakkında bilgiler ve ipuçları içerir.

Uyarı

Apache 2'nin bir hizmet ortamında evreli MPM'lerle kullanımını önerilmemektedir. Bunun yerine Apache 2.0 ve 2.2'de öntanımlı MPM olan Prefork MPM'sini kullanmanızı önerilir. Bunun sebebini SSS altında Apache ve evreli MPM'ler başlığı altında bulunabilir.

Apache 2.x HTTP Sunucusu hakkında temel bir bilgi edinmek için mutlaka » Apache HTTP Sunucusu Sürüm 2.x Belgelerine bakmanızı öneririz.

En son sürümü » Apache 2.x indirme sitesinden ve buna uygun PHP sürümünü yukarıda bahsedilen yerlerden indirebilirsiniz. Bu kısa kılavuz Apache 2.x ve PHP hakkında sadece temel bilgi sağlar. Daha ayrıntılı bilgi edinmek için » Apache HTTP Sunucusu Belgelerine bakınız. Kurulum talimatlarının sürüm numaralarından ötürü geçerliliğini yitirmemesi için sürüm numaraları 'NN' şeklinde belirtilmiştir, NN yerine kurulan Apache sürümünün sürüm numarası yazılmalıdır.

Apache 2.x'in şu an iki sürümü mevcuttur: 2.4 ve 2.2. Bunlardan birini seçmek için çeşitli sebepler olabilirse de 2.4 şu an için en son ve önerilen sürümdür. Ancak, burada sözü edilen talimatlar hem 2.4 hem de 2.2 için çalışır. Apache httpd 2.2 resmen sonlandırılmış olup yeni geliştirmeler yapılmamakta ve yama çıkarılmamaktadır.

1. Apache HTTP sunucusunu edindikten sonra şu komutları verin:

       tar -xzf httpd-2.x.NN.tar.gz

2. Benzer işlemleri PHP için de yapın:

       tar -xzf php-NN.tar.gz

3. Apache'yi derleyip kurun. Apache'nin nasıl derleneceğini Apache kurulumu belgesinden öğrenebilirsinz.

       cd httpd-2_x_NN
       ./configure --enable-so
       make
       make install

4. Böylece standart prefork MPM'si ve yüklenebilir modül desteği ile Apache 2.x.NN /usr/local/apache2 altına kurulmuş oldu. Kurulumu denemek için Apache HTTP sunucusunu normal yollardan başlatabilirsiniz. Örnek:

       /usr/local/apache2/bin/apachectl start

   PHP yapılandırması ile çalıştırmak üzere sunucuyu durdurun:

       /usr/local/apache2/bin/apachectl stop

5. Şimdi PHP'yi yapılandırıp kurun. Bunu hangi eklentileri etkin kılacaksanız onların seçeneklerini kullanarak yapabilirsiniz. Olası seçeneklerin listesini almak için komut satırına `./configure --help` yazın. Örneğimizde Apache ve MySQL desteğini etkin kılacağız.

   Apache'yi yukarıda açklandığı gibi kaynak paketinden derlediyseniz aşağıdaki örnek sizin apxs yolunuzla eşleşecektir. Fakat Apache'yi başka bir şekilde kurduysanız apxs yolunu buna uygun olarak ayarlamalısınız. Bazı dağıtımlar apxs yerine apxs2 ismini kullanır, buna dikkat edin.

       cd ../php-NN
       ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
       make
       make install

   Eğer kurulumdan sonra yapılandırmanızı değiştirmek isterseniz sadece configure, make ve make install adımlarını yinelemeniz yeterli olacaktır. Yeni modülün etkin olabilmesi için Apache'yi yeniden başlatmanız gerekir. Apache'yi yeniden derlemeniz gerekmez. Aksi özellikle belirtilmedikçe 'make install' ile phpize gibi çeşitli PHP araçları, PEAR, PHP CLI ve bir takım başka şeylerin de kurulumu yapılır.

   Aksi belirtilmedikçe, 'make install' ile phpize gibi çeşitli PHP araçları, PEAR, PHP CLI ve benzerleri de kurulacaktır.

6. php.ini dosyanızı yapılandırın.

       cp php.ini-development /usr/local/lib/php.ini

   PHP seçeneklerini ayarlamak için .ini dosyanızı düzenleyebilirsiniz. .ini dosyanızın başka bir yerde durmasını istiyorsanız, 5. şıkta --with-config-file-path=/başka/bir/yer seçeneği ile dosyanız için başka bir yer belirtebilirsiniz.

   php.ini-dist yerine php.ini-production (dağıtımın standart .ini dosyası yerine önerilen yapılandırmalar dosyasını) kullanmayı tercih ederseniz, değişiklik listesini okumayı ihmal etmeyin, çünkü bunlar PHP'nin davranışını etkileyecektir.

7. PHP modülünün yüklenmesi için httpd.conf dosyasını düzenlemelisiniz. LoadModule yönergesinin değeri PHP modülünün sistemdeki yerini göstermelidir. Yukarıdaki 'make install' bunu sizin yerinize yapmıştır ama emin olmak için siz yine de bir bakın.

   PHP 8 için:

       LoadModule php7_module modules/libphp.so

   PHP 7 için:

       LoadModule php5_module modules/libphp7.so

8. Apache'ye belli dosya uzantılarını PHP uzantıları olarak ele almasını söyleyin. Örneğin, .php uzantılı dosyaları Apache'nin PHP dosyaları olarak ele almasını isteyebiliriz. Apache AddType yönergesini kullanmamak suretiyle, PHP tarafından çalıştırılmak üzere istismar.php.jpg gibi dosyaların oluşturulması ve yüklenmesi gibi tehlikeli durumlardan kaçınmak isteyebilirsiniz. Biz örnek olsun diye .php uzantısını ekledik. Başka uzantıları da buraya ekleyebilirsiniz. Bunları aralarında boşluk bırakarak aynı satıra yazabilirsiniz.

       <FilesMatch \.php$>
        SetHandler application/x-httpd-php
       </FilesMatch>

   Veya .php, .php2, .php3, .php4, .php5, .php6 ve .phtml gibi dosyalar dışında hiçbir dosyanın PHP tarafından çalıştırılmamasını şöyle sağlayabilirsiniz:

       <FilesMatch "\.ph(p[2-6]?|tml)$">
        SetHandler application/x-httpd-php
       </FilesMatch>

   PHP kaynak kodlarını renklendirilmiş olarak göstermek için .phps uzantısını da yapılandırmanıza ekleyebilirsiniz. Bu, şöyle yapılır:

       <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
       </FilesMatch>

   .php dosyalarının uzantılarını .phps olarak değiştirmeden kaynak kodlarını renklendirilmiş olarak göstermek isterseniz bunu şöyle yapabilirsiniz:

       RewriteEngine On
       RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]

   PHP kaynak süzgeci, gizli kalması gereken bilgiler içeren genel kullanıma açık sunucularda kullanılmamalıdır. Aksi takdirde gizli kalması gereken bilgiler kaynak koda eklenebilir.

9. Artık Apache'yi başlatabilirsiniz. Bunun için Apache'yi her zaman ki gibi başlatmanız yetecektir:

       /usr/local/apache2/bin/apachectl start

   VEYA

       service httpd restart

Yukarıdaki adımları izleyerek PHP'nin bir `SAPI` modülü olarak çalıştığı bir Apache 2 HTTP sunucusuna sahip olursunuz. Apache ve PHP için şüphesiz birçok farklı yapılandırma seçeneği vardır. Yapılandırma seçeneklerinin listesi için her kaynak ağacında ./configure --help çalıştırabilirsiniz.

Apache derlenirken prefork MPM modülü yerine , worker MPM modülü seçilerek çok evreli derlenebilir. Bunu yapmak için 3. şıkta derleme seçeneklerinize şu seçeneğini ekleyebilirsiniz:

    --with-mpm=worker

Bunu yapmadan önce, bunun olası sonuçları hakkında bilgi sahibi olmaya, azından ne gibi etkilerinin olacağını anlamaya çalışın. Bu konuda daha ayrıntılı bilgi edinmek için Apache HTTP sunucusunun belgelerinden » Çok Süreçlilik Modülleri (MPM'ler) belgesini okuyunuz.

> Bilginize:

> İçerik dili uzlaşımı kullanmak isterseniz Apache MultiViews SSS'ine bakınız.

> Bilginize:

> Ayrıca, PHP'yi Zend Thread Safety (ZTS) motoru ile de derleyebilirsiniz. Böyle bir yapılandırmada bütün eklentiler kullanılamayacaktır. Bu bakımdan Apache'yi standart prefork MPM'si ile derlemenizi öneriyoruz.

## Nginx 1.4.x on Unix systems

This documentation will cover installing and configuring PHP with PHP-FPM for a Nginx 1.4.x HTTP server.

This guide will assume that you have built Nginx from source and therefore all binaries and configuration files are located at `/usr/local/nginx`. If this is not the case and you have obtained Nginx through other means then please refer to the » Nginx Wiki in order to translate this manual to your setup.

This guide will cover the basics of configuring an Nginx server to process PHP applications and serve them on port 80, it is recommended that you study the Nginx and PHP-FPM documentation if you wish to optimise your setup past the scope of this documentation.

Please note that throughout this documentation version numbers have been replaced with an 'x' to ensure this documentation stays correct in the future, please replace these as necessary with the corresponding version numbers.

1. It is recommended that you visit the Nginx Wiki » install page in order to obtain and install Nginx on your system.

2. Obtain and unpack the PHP source:

       tar zxf php-x.x.x

3. Configure and build PHP. This is where you customize PHP with various options, like which extensions will be enabled. Run ./configure --help for a list of available options. In our example we'll do a simple configure with PHP-FPM and MySQLi support.

       cd ../php-x.x.x
       ./configure --enable-fpm --with-mysqli
       make
       sudo make install

4. Obtain and move configuration files to their correct locations

       cp php.ini-development /usr/local/php/php.ini
       cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
       cp sapi/fpm/php-fpm /usr/local/bin

5. It is important that we prevent Nginx from passing requests to the PHP-FPM backend if the file does not exist, allowing us to prevent arbitrarily script injection.

   We can fix this by setting the cgi.fix_pathinfo directive to `0` within our php.ini file.

   Load up php.ini:

       vim /usr/local/php/php.ini

   Locate `cgi.fix_pathinfo=` and modify it as follows:

       cgi.fix_pathinfo=0

6. php-fpm.conf must be modified to specify that php-fpm must run as the user www-data and the group www-data before we can start the service:

       vim /usr/local/etc/php-fpm.d/www.conf

   Find and modify the following:

       ; Unix user/group of processes
       ; Note: The user is mandatory. If the group is not set, the default user's group
       ;       will be used.
       user = www-data
       group = www-data

   The php-fpm service can now be started:

       /usr/local/bin/php-fpm

   This guide will not configure php-fpm any further, if you are interested in further configuring php-fpm then please consult the documentation.

7. Nginx must now be configured to support the processing of PHP applications:

       vim /usr/local/nginx/conf/nginx.conf

   Modify the default location block to be aware it must attempt to serve .php files:

       location / {
           root   html;
           index  index.php index.html index.htm;
       }

   The next step is to ensure that .php files are passed to the PHP-FPM backend. Below the commented default PHP location block, enter the following:

       location ~* \.php$ {
           fastcgi_index   index.php;
           fastcgi_pass    127.0.0.1:9000;
           include         fastcgi_params;
           fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
           fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
       }

   Restart Nginx.

       sudo /usr/local/nginx/sbin/nginx -s stop
       sudo /usr/local/nginx/sbin/nginx

8. Create a test file

       rm /usr/local/nginx/html/index.html
       echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

   Now navigate to http://localhost. The phpinfo() should now be shown.

Following the steps above you will have a running Nginx web server with support for PHP as an `FPM` `SAPI` module. Of course there are many more configuration options available for Nginx and PHP. For more information type ./configure --help in the corresponding source tree.

## Unix sistemlerde Lighttpd 1.4

Bu bölüm PHP'nin Unix sistemlerde Lighttpd 1.4 ile kurulumu hakkında bilgiler ve ipuçları içerir.

Lütfen devam etmeden önce » Lighttpd redmine sitesini ziyaret edip Lighttpd'nin doğru düzgün nasıl kurulacağını öğreniniz.

PHP ve Lighttpd'ye bağlanmak için tercih edilen SAPI FastCGI'dir. FastCGI, php-cgi'yi otosihirli bir şekilde etkin kılar.

### Lighttpd'ye PHP süreçlerini çatallattırmak

Lighttpd'nin PHP'ye bağlanmasını ve fastcgi süreçlerini çatallamasını sağlamak üzere yapılandırmak için lighttpd.conf dosyasını düzenlemeniz gerekir. FastCGI süreçlerine yerel sistemden bağlanmak için soketler tercih edilir.

Örnek 1 - lighttpd.conf'tan bir bölüm

    server.modules += ( "mod_fastcgi" )

    fastcgi.server = ( ".php" =>
      ((
        "socket" => "/tmp/php.socket",
        "bin-path" => "/usr/local/bin/php-cgi",
        "bin-environment" => (
          "PHP_FCGI_CHILDREN" => "16",
          "PHP_FCGI_MAX_REQUESTS" => "10000"
        ),
        "min-procs" => 1,
        "max-procs" => 1,
        "idle-timeout" => 20
      ))
    )

bin-path yönergesi lighttpd'nin fastcgi süreçlerini dinamik olarak çatallamasına izin verir. PHP kendi çocuklarını PHP_FCGI_CHILDREN ortam değişkenine göre çatallayacaktır. Çatallanan sürecin ortamını `bin-environment` yönergesi tanımlar. PHP, PHP_FCGI_MAX_REQUESTS değerinin aşılmasına sebep olan çocuk süreci öldürür. PHP'de `min-procs` ve `max-procs` yönergelerinden genel olarak kaçınılması gerekir. PHP kendi çocuklarını yönetir ve makine kodu önbelleklerini APC gibi çocukları arasında paylaştırır. `min-procs` yönergesine `1`'den büyük bir değer atanmışsa PHP yanıtçılarının sayısı PHP_FCGI_CHILDREN değerinin katları olacaktır (`2 min-procs * 16 çocuk eşittir 32 yanıtçı`).

### Spawn-fcgi ile çatallama

Lighttpd, FastCGI süreçlerinin çatallanmasını kolaylaştırmak için `spawn-fcgi` adında bir uygulamayla gelir.

### php-cgi'nin çatallanması

Süreçleri `spawn-fcgi` kullanmaksızın çatallamak mümkünse de, biraz ağır kaldırma çalışmak gerekir. Gelen istekleri karşılamak için PHP'nin kaç çocuk çatallayacağı PHP_FCGI_CHILDREN ortam değişkeni ile belirlenir. PHP'nin her çocuğunun kaç isteklik yaşayacağını ise PHP_FCGI_MAX_REQUESTS belirler. Aşağıda, PHP yanıtçılarının çatallanmasına yardımcı olan basit bir `bash` betiği verilmiştir.

Örnek 2 - FastCGI Yanıtçılarının Çatallanması

    #!/bin/sh

    # php-cgi çalıştırılabilirinin yeri
    PHP=/usr/local/bin/php-cgi

    # PID dosyasının yeri
    PHP_PID=/tmp/php.pid

    # Dinlenecek adres
    #FCGI_BIND_ADDRESS=10.0.1.1:10000
    # Dinlenecek soket
    FCGI_BIND_ADDRESS=/tmp/php.sock

    PHP_FCGI_CHILDREN=16
    PHP_FCGI_MAX_REQUESTS=10000

    env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
           PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
           $PHP -b $FCGI_BIND_ADDRESS &

    echo $! > "$PHP_PID"

### Uzak FCGI (nesnel) örneklerine bağlanmak

Uygulamaları dengelemek için FastCGI örnekleri çok sayıda uzak makineye çatallanabilir.

Örnek 3 - Uzak FCGI örneklerine bağlanmak

    fastcgi.server = ( ".php" =>
       (( "host" => "10.0.0.2", "port" => 1030 ),
        ( "host" => "10.0.0.3", "port" => 1030 ))
    )

## LiteSpeed Web Server/OpenLiteSpeed Web Server on Unix systems

LiteSpeed PHP is an optimized compilation of PHP built to work with LiteSpeed products through the LiteSpeed SAPI. LSPHP runs as its own process and has its own standalone binary, which can be used as a simple command line binary to execute PHP scripts from the command line.

The LSAPI is a highly optimized API that allows communication between LiteSpeed and third party web engines. Its protocol is similar to FCGI, but is more efficient.

This documentation will cover installing and configuring PHP with LSAPI for a LiteSpeed Web Server and OpenLiteSpeed Web Server.

This guide will assume that either LSWS or OLS is installed with their default paths and flags. The default installation directory for both web servers is /usr/local/lsws and both can be run from the bin subdirectory.

Please note that throughout this documentation, version numbers have been replaced with an `x` to ensure this documentation stays correct in the future, please replace these, as necessary, with the corresponding version numbers.

1. To obtain and install either LiteSpeed Web Server or OpenLiteSpeed Web Server, visit the LiteSpeed Web Server documentation » install page or OpenLiteSpeed documentation » install page.

2. Obtain and unpack the php source:

       mkdir /home/php
       cd /home/php
       wget http://us1.php.net/get/php-x.x.x.tar.gz/from/this/mirror
       tar -zxvf php-x.x.x.tar.gz
       cd php-x.x.x

3. Configure and build PHP. This is where PHP can be customized with various options, such as which extensions will be enabled. Run ./configure --help for a list of available options. In the example, we'll use the default recommended configuration options for LiteSpeed Web Server:

       ./configure ... '--with-litespeed'
       make
       sudo make install

4. Checking The LSPHP Installation

   One of the simplest ways to check whether the installation of PHP was successful is to run the following code:

       cd /usr/local/lsws/fcgi-bin/
       ./lsphp5 -v

   This should return information about the new PHP build:

       PHP 5.6.17 (litespeed) (built: Mar 22 2016 11:34:19)
       Copyright (c) 1997-2014 The PHP Group
       Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

   Notice the `litespeed` in parenthesis. This means that the PHP binary has been built with LSAPI support.

Following the steps above, LiteSpeed / OpenLiteSpeed Web Server should now be running with support for PHP as an SAPI extension. There are many more configuration options available for LSWS / OLS and PHP. For more information, check out the LiteSpeed documentation about » PHP.

Using LSPHP from the command line:

LSPHP(LSAPI + PHP) command line mode is used to process PHP scripts running on a remote server that does not necessarily have a web server running. It is used to process PHP scripts residing on a local web server (separate). This setup is suitable for service scalability as PHP processing is offloaded to a remote server.

Start lsphp from the command line on a remote server: LSPHP is an executable and can be started manually and bound to IPv4, IPv6, or Unix domain socket addresses with the command line option -b socket_address

Examples:

Have LSPHP bind to port 3000 on all IPv4 and IPv6 addresses:

    /path/to/lsphp -b [::]:3000

Have LSPHP bind to port 3000 on all IPv4 addresses:

    /path/to/lsphp -b *:3000

Have LSPHP bind to address 192.168.0.2:3000:

    /path/to/lsphp -b 192.168.0.2:3000

Have LSPHP accept requests on Unix domain socket `/tmp/lsphp_manual.sock`:

    /path/to/lsphp -b /tmp/lsphp_manual.sock

Environment variables can be added before the LSPHP executable:

    PHP_LSAPI_MAX_REQUESTS=500 PHP_LSAPI_CHILDREN=35 /path/to/lsphp -b IP_address:port

Currently LiteSpeed PHP can be used with LiteSpeed Web Server, OpenLiteSpeed Web Server, and Apache mod_lsapi. For steps on server-side configuration, visit the documentation pages for » LiteSpeed Web Server and » OpenLiteSpeed.

LSPHP can be installed in several other ways as well.

CentOS: On CentOS, LSPHP can be installed from the LiteSpeed Repository or the Remi Repository using » RPM.

Debian: On Debian, LSPHP can be installed from the LiteSpeed Repository using » apt.

cPanel: Visit the respective » documentation page about how to install LSPHP with cPanel and LSWS/OLS using EasyApache 4.

Plesk: Plesk can be used with LSPHP on CentOS, CloudLinux, Debian, and Ubuntu, for more details on this, visit the respective » documentation page

## Solaris'e özgü Kurulum İpuçları

Bu bölüm PHP'nin Solaris sistemlere kurulumu hakkında bilgiler ve ipuçları içerir.

### Gerekli Yazılımlar

Solaris kurulumlarında sıklıkla C derleyicilerin ve bunlarla ilgili araçların yokluğu sözkonusu olur. Bu araçların GNU sürümlerinin gerekliliği hakkında bilgi edinmek için lütfen SSS'nin bu bölümünü okuyunuz.

PHP paketini açmak için gerekenler:

- tar
- gzip veya
- bzip2

PHP'yi derlemek için gerekenler:

- gcc (önerilir, fakat başka C derleyiciler de iş görür)
- make
- GNU sed

PHP koduyla oynamak veya eklentileri derlemek için ayrıca gerekenler:

- re2c
- bison
- m4
- autoconf
- automake

Bunlara ek olarak, Oracle veya MySQL gibi yapılandırmanıza özgü bir takım ek yazılımların kurulması da gerekebilir.

### Paketlerin kullanımı

Kurulması gereken bileşinlerin çoğunu kurmak için pkgadd kullanarak Solaris kurulum işlemlerini kolaylaştırabilirsiniz. Solaris 11 Express için Image Packaging System (IPS) de pkg komutunu kullanarak kurulum için gereken bileşenlerin çoğunu içermektedir.

# macOS üzerine Kurulum

## İçindekiler

- Üçüncü parti paketlerden macOS üzerinde kurulum
- macOS üzerine PHP kurulumu
- macOS Monterey öncesinde dağıtımla gelen PHP Kullanımı

PHP, macOS ile 10 ve 11 sürümlerinde birlikte geldi, ancak macOS 12'den (Monterey) sonraki sürümlerde yer almıyor. Son sürümlerde kurulum, üçüncü taraf kaynaklardan paketler kullanmayı veya kaynaktan derlemeyi gerektirir.

## Üçüncü parti paketlerden macOS üzerinde kurulum

PHP'nin macOS için bir kaç tane paketlenmiş ve derlenmiş sürümü vardır. Standart bir yapılandırma için bunlar yeterlidir, ancak farklı özelliklere ihtiyaç duyarsanız (güvenli sunucu, farklı bir veritabanı sürücüsü gibi), kendi PHP'nizi ve/veya HTTP sunucunuzu derlemeniz gerekebilir. Bu işleri yapacak tecrübeniz yoksa, sizin ihtiyaçlarınıza uygun olarak derlenmiş paketlerin olup olmadığını araştırmalısınız.

PHP'yi macOS üzerinde kurmanın en kolay yolu » Homebrew paket yöneticisini kullanmaktır.

1. Sitesindeki talimatları izleyerek homebrew'i kurun.

2. brew install php

Aşağıdakiler, macOS üzerinde PHP için paket ve derlenmiş ikillerin kurulumunu kolaylaştıracaktır:

- » MacPorts
- » Fink

## macOS üzerine PHP kurulumu

macOS üzerine PHP kurmak için Unix kurulum rehberini kullanın.

## macOS Monterey öncesinde dağıtımla gelen PHP Kullanımı

PHP, Mac OS X'in 10.0.0 sürümünden Monterey (12.0.0) sürümüne kadar macOS ile birlikte gelmektedir. PHP'yi öntanımlı HTTP sunucusunda etkin kılmak için Apache yapılandırma dosyası httpd.conf'ta bir kaç satırı etkin duruma getirmek gerekir, bunun yanında CGI ve/veya CLI öntanımlı olarak etkin (Terminal programından kolayca erişilebilir) kılınabilir.

Aşağıdaki talimatları kullanarak PHP'yi etkin kılmak demek çabucak bir yerel geliştirme ortamına sahip olmak demektir. Daima PHP'nin en yeni sürümünü kullanmanızı hararetle öneririz. Gelişimi sürmekte olan çoğu yazılım gibi yeni sürümlerde eski hatalar sürekli düzeltilmekte ve yeni özellikler eklenmektedir. Ayrıntılar için macOS kurulum belgelerine bakınız. Aşağıdaki talimatların ayrıntı düzeyi başlangıç düzeyinde bir kullanıcıya göre olup öntanımlı ayarlarla çalışmak üzere düzenlenmiştir. Daha yeni sürümlerin derlenmesi veya daha yeni paketlerin kurulması tüm kullanıcılara tavsiye edilmektedir.

Standard kurulum türü mod_php kullanmak olup macOS üzerinde Apache HTTP Sunucusu için mod_php'yi etkin kılmak (öntanımlı HTTP sunucusuna Sistem Tercihlerinden erişilebilir) amacıyla şu adımlar izlenmelidir:

1. Apache yapılandırma dosyasını bulup açın. Öntanımlı olarak yeri: /etc/apache2/httpd.conf Bu dosyanın sahibi `root` olduğundan ve öntanımlı olarak onun özelinde olduğundan `Finder` veya `Spotlight` kullanarak dosyayı bulmak zor olabilir.

   > Bilginize: Dosyayı açmanın tek yolu Terminal'de `nano` gibi Unix temelli bir metin düzenleyici kullanmaktır. Dosyanın sahibi `root` olduğundan dosyayı (`root` olarak) açmak için `Terminal`'de `sudo` komutunu kullanmalıyız (`root` parolası istenecektir): `sudo nano /etc/apache2/httpd.conf` Önemli nano komutları: `^w` (arama), `^o` (kayıt), and `^x` (çıkış). Burada `^` imi, Ctrl tuşu anlamındadır.

   > Bilginize: Mac OS X'in 10.5'ten önceki sürümleri PHP ve Apache'nin eski sürümleriyle gelir. Böyle makinelerde Apache yapılandırma dosyası /etc/httpd/httpd.conf olabilir.

2. Bir metin düzenleyici ile aşağıdaki satırların başlarındaki # imlerini kaldırın (bu iki satır genelde birarada değildir, onları arayıp bulmalısınız):

       # LoadModule php5_module libexec/httpd/libphp5.so

       # AddModule mod_php5.c

   Konuma/yola dikkat. PHP'yi gelecekte tekrar derlerseniz yukarıdaki dosyaların yerine yenilerini koymayı unutmayın. Yoksa bu satırları tekrar açıklama haline getirmelisiniz.

3. PHP olarak yorumlanacak uzantıları belirleyiniz (örnekler: .php, .html ve .inc).

   (Mac Panther'den itibaren) httpd.conf dosyasında bulunan aşağıdaki deyimden dolayı PHP etkin kılındığı anda .php uzantılı dosyalar otomatik olarak PHP tarafından yorumlanır.

       <IfModule mod_php5.c>
           # php etkinse, .php ve .phps dosyalarını yorumlasın isteriz.
           AddType application/x-httpd-php .php
           AddType application/x-httpd-php-source .phps

           # Çoğu kullanıcı index.php'yi ister
           <IfModule mod_dir.c>
               DirectoryIndex index.html index.php
           </IfModule>
       </IfModule>

   > Bilginize:

   > Mac OS X 10.5 (Leopard) öncesinde, PHP 5 yerine PHP 4 kullanılırdı; dolayısıyla yukarıdaki 5'leri 4'lere çevirmeniz gerekir.

4. DirectoryIndex yönergesinde belirtilen öntanımlı dizin içerik dosyasının yüklendiğinden emin olun. Bu ayrıca httpd.conf içinde de atanır. Bu amaçla genellikle index.php ve index.html kullanılır. PHP'nin varlığını sınayan yukarıdakı satırlardan dolayı öntanımlı olarak index.php etkindir. Gerekirse bu ayarı kendinize göre değiştirin.
5. Ya php.ini dosyasının yerini ayarlayın ya da öntanımlıyı kullanın Mac OS X üzerindeki öntanımlı yeri genellikle /usr/local/php/php.ini olup bir phpinfo() işlev çağrısı da yerini gösterecektir. Eğer bir php.ini kullanılmamışsa, PHP öntanımlı değerleri kullanacaktır. php.ini'yi bulmak için SSS'ye bakabilirsiniz.
6. `DocumentRoot`'u belirleyip ayarlayın. Bu, HTTP sunucusunun belge kök dizinidir. Bu dizindeki dosyalar HTTP sunucusu tarafından sunulur. Dolayısıyla PHP dosyaları da tarayıcıya gönderilmeden önce PHP tarafından yorumlanır. Genelde öntanımlı belge kök dizini /Library/WebServer/Documents olup httpd.conf dosyasında belirtilmesi gerekir. Ayrıca, her kullanıcının kendi öntanımlı belge kök dizini vardır: /Users/kullanıcı/Sites
7. Bir phpinfo() dosyası oluşturun

   phpinfo() işlevi PHP ile ilgili bilgileri gösterir. Aşağıdaki içeriğe sahip bir dosyayı belge kök dizininde oluşturun:

       <?php phpinfo(); ?>

8. Apache'yi yeniden başlatın ve yukarıdaki PHP dosyasını yükleyin

   Apache'yi başlatmak için ya kabukta `sudo apachectl graceful` komutunu verin ya da macOS Sistem Tercihlerinden "Kişisel HTTP Sunucusu" seçeneğini durdurup başlatın. Öntanımlı olarak, yerel dosyaları tarayıcıya yüklemek için şöyle bir URL kullanılır: http://localhost/info.php. Kullanıcı dizinizdeki belge kök dizinini kullanarak bunu şöyle yapabilirsiniz: http://localhost/~kullanıcı/info.php

CLI (veya eski sürümlerde CGI) çalıştırılabilirinin ismi php olup genellikle bulunduğu yer /usr/bin/php'dir. PHP kılavuzunun komut satırı bölümünü okuyun ve Terminal'i açıp PHP çalıştırılabilirinin sürümünü öğrenmek için `php -v` komutunu çalıştırın. phpinfo() işlevine yapılacak bir çağrı da bu bilgiyi gösterecektir.

# Windows Sistemlerine Kurulum

## İçindekiler

- Windows sistemlerinde Önerilen Yapılandırma
- Windows üzerine Elle PHP Kurulum Adımları
- Microsoft Windows üzerinde Apache 2.x
- Installation with IIS for Windows
- Windows'ta PHP Kurulum Araçları
- Kaynaktan derleme
- Microsoft Windows üzerinde PHP Komut Satırı

PHP'nin Windows üzerindeki Resmi sürümleri, üretimde kullanım için önerilir. Bununla birlikte, PHP'yi kaynak paketinden de derleyebilirsiniz.

Ayrıca, Azure App Services üzerinde de PHP kurulabilir (nam-ı diğer Microsoft Azure, Windows Azure veya (Windows) Azure Web Apps).

Sıkça Sorulan Soruların Kurulum bölümü karşılaşılabilecek yaygın kurulum ve yapılandırma sorunlarını kapsar.

## Windows sistemlerinde Önerilen Yapılandırma

### OpCache

OpCache'i etkinleştirmeniz önemle tavsiye edilir. Bu eklenti, Windows için PHP'ye dahildir. PHP betiklerini derler, en iyilendirir ve sayfa her yüklendiğinde yeniden derlenmemeleri için onları bellekte önbelleğe alır.

php.ini dosyasında şunu yapın:

Örnek 1 Önerilen OpCache Yapılandırması

    opcache.enable=On
    opcache.enable_cli=On

Ve http sunucusunu yeniden başlatın. Daha fazla bilgi için bkz: OpCache Yapılandırması

### WinCache

Özellikle paylaşılan bir web barındırma ortamında IIS kullanılıyorsa veya ağ bağlantılı dosya depolama (NAS) kullanılıyorsa, WinCache kullanılması önerilir. WinCache, PHP 8.0.0'dan itibaren artık desteklenmemektedir.

Tüm PHP Uygulamaları, WinCache dosya önbelleği özelliğinden otomatik olarak yararlanır. Dosya sistemi işlemleri bellekte önbelleğe alınır.

WinCache ayrıca kullanıcı nesnelerini bellekte önbelleğe alabilir ve bunları php.exe veya php-cgi.exe süreçleri arasında paylaşabilir (nesneleri istekler arasında paylaşır).

Birçok büyük http uygulamasının, WinCache kullanıcı nesnesi önbelleğini kullanmak için bir eklenti, uzantı veya yapılandırma seçeneği vardır.

Yüksek başarıma ihtiyacınız varsa uygulamalarınızda nesne önbelleğini kullanmalısınız.

PHP eklentilerini dizininize bir WinCache DLL (veya tgz) indirmek için (php.ini'nizdeki extensions_dir) bkz: » http://pecl.php.net/package/WinCache

php.ini dosyasında şunu yapın:

Örnek 2 Önerilen WinCache Yapılandırması

    extension=php_wincache.dll
    wincache.fcenabled=1
    wincache.ocenabled=1 ; removed as of wincache 2.0.0.0

Daha fazla bilgi için bkz: WinCache Yapılandırması

### IIS Yapılandırması

IIS Yöneticisinde, FastCGI modülünü kurun ve PHP-CGI.exe (PHP.exe değil) yoluna `.php` için bir işleyici eşlemi ekleyin.

IIS yapılandırmasını betik olarak oluşturmak için APPCMD komut satırı aracını kullanabilirsiniz.

### Veritabanı

Muhtemelen bir Veritabanı Sunucusuna ihtiyacınız olacaktır. Çoğu veritabanının PHP eklentisi vardır. Siteniz çok fazla trafik almıyorsa, veritabanı sunucunuzu http sunucunuzla aynı sunucuda çalıştırabilirsiniz. Birçok veritabanı sunucusu Windows üzerinde çalışır.

PHP, mysqli ve pdo_mysql eklentilerini içerir.

Bkz: » https://dev.mysql.com/downloads/windows/

## Windows üzerine Elle PHP Kurulum Adımları

### Web Sunucusunu seçin

#### IIS

IIS Windows'ta yerleşiktir. Windows Sunucusunda, IIS rolü Sunucu Yöneticisi üzerinden eklenebilir.CGI Rol Özelliği dahil edilmelidir. Windows Masaüstünde, IIS'nin Denetim Masası'ndaki Program Ekle/Kaldır aracılığıyla eklenmesi gerekir. Microsoft belgelerinde » ayrıntılı talimatlar bulunmaktadır. Masaüstü web uygulamaları ve web geliştirme için IIS/Express veya PHP Desktop da kullanılabilir.

Örnek 1 IIS ve PHP'yi yapılandırmak için komut satırı kullanımı

    @echo off

    REM http://windows.php.net/downloads/ adresinden PHP kurulumu için
    REM .ZIP dosyasını indirin

    REM PHP .ZIP dosyasını açtığınız dizinin yolunu phppath=c:\php
    REM (sonda \ yok) olarak ayarlayın

    REM Geçerli PHP işleyicilerini temizleyin:
    %windir%\system32\inetsrv\appcmd clear config /section:system.webServer/fastCGI

    REM PHP kurulu değilse aşağıdaki komut bir hata iletisi üretir.
    REM Bu yok sayılabilir.
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']

    REM PHP işleyicisini ayarlayın
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='%phppath%\php-cgi.exe']
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath%\php-cgi.exe',resourceType='Unspecified']
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script

    REM FastCGI Değişkenlerini Yapılandırın
    %windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='%phppath%\php-cgi.exe'].instanceMaxRequests:10000
    %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
    %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%\php.ini']"

#### Apache

Windows için çeşitli Apache2 derlemeleri mevcuttur. ApacheLounge'un Apache2 derlemeleri önerilir, fakat but diğer seçenekler arasında otomatik kurulum araçları sağlayan XAMPP, WampServer ve BitNami bulunur. PHP, Apache'de mod_php veya mod_fastcgi aracılığıyla kullanılabilir. mod_php, aynı Visual C sürümü ve aynı CPU (x86 veya x64) ile oluşturulmuş bir TS Apache derlemesi gerektirir.

### Derlenmiş paket seçimi

PHP'nin Windows derlemeleri » http://windows.php.net/download/ adresinden indirilebilir. Tüm derlemeler (PGO) en iyilenmiş olup QA ve GA sürümleri kapsamlı bir şekilde denenmiştir.

4 tür PHP derlemesi vardır:

- Thread-Safe(TS) - tek süreçli web sunucular için - Apache ve mod_php gibi

- Non-Thread-Safe(NTS) - IIS ve diğer FastCGI web sunucuları için - (Apache ve mod_fastcgi)- komut satırı betikleri için önerilir.

- x86 - 32 bitlik sistemler için

- x64 - 64 bitlik sistemler için

## Microsoft Windows üzerinde Apache 2.x

Bu bölüm, PHP'nin Microsoft Windows sistemlerinde Apache 2.x kurulumlarına özel notlar ve ipuçları içerir.

> Bilginize:

> Lütfen önce elle kurulum adımlarını okuyun!

Apache 2.x Sunucusu hakkında temel bir anlayışa sahip olmak için » Apache Belgelerine başvurmanız şiddetle tavsiye edilir. Ayrıca, burayı okumadan önce » Windows'a özgü Apache 2.x notlarını okumanız yararlı olur.

» Apache 2.x'in en son sürümünü ve uygun bir PHP sürümünü indirin. Elle Kurulum Adımlarını izleyin ve PHP'nin Apache ile bütünleştirilmesine devam etmek için geri gelin.

PHP'yi Windows'ta Apache 2.x ile çalışacak şekilde kurmanın üç yolu vardır. PHP, işleyici olarak, CGI olarak veya FastCGI altında çalıştırılabilir.

> Bilginize: Windows üzerinde, Apache yapılandırma dosyalarına c:\dizin\dosya.uzn gibi dosya yollarını eklerken tüm tersbölü çizgilerini normal bölü çizgilerine çevirmeyi unutmayınız: c:/dizin/dosya.uzn. Dizin yollarını eklerken sona da bir bölü çizgisi eklemeniz gerekebilir.

### Apache işleyicisi olarak kurulum

Apache 2.x PHP modülünü yüklemek için Apache httpd.conf yapılandırma dosyasına aşağıdaki satırlar eklenmelidir:

Örnek 1 Apache 2.x işleyicisi olarak PHP

    # PHP 8.0.0 öncesinde modülün ismi php7_module idi
    LoadModule php_module "c:/php/php8apache2_4.dll"
    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>
    # php.ini yolunu yapılandır
    PHPIniDir "C:/php"

> Bilginize: Yukarıdaki örneklerde C:/php/ yerine PHP'nin gerçek yolu yazılmalıdır. `LoadModule` yönergesinde başvurulan dosyanın belirtilen konumda olduğundan emin olun. PHP 7 için php7apache2_4.dll, PHP 8 için php8apache2_4.dll kullanın.

### PHP'yi CGI olarak çalıştırmak

Apache'de CGI çalıştırmanın daha iyi bir şekilde anlaşılması için » Apache CGI belgelerine başvurmanız şiddetle tavsiye edilir.

PHP'yi CGI olarak çalıştırmak için, php-cgi dosyalarının ScriptAlias yönergesi kullanılarak CGI dizini olarak belirlenmiş bir dizine yerleştirilmesi gerekecektir.

PHP dosyalarının başına PHP çalıştırılabilirinin konumuna işaret eden `#!` satırının yerleştirilmesi gerekir:

Örnek 2 CGI olarak PHP ve Apache 2.x

    #!C:/php/php.exe
    <?php
      phpinfo();
    ?>

Uyarı

CGI kipinde çalışan bir sunucu olası saldırılara açık hale gelir. Sunucunuzun böyle saldırılardan nasıl korunacağınızı öğrenmek için CGI güvenliği bölümü okunabilir.

### PHP'yi FastCGI altında çalıştırmak

PHP'yi FastCGI altında çalıştırmanın, bir CGI olarak çalıştırmaya göre bir takım getirileri vardır. Bu şekilde ayarlamak oldukça basittir:

`mod_fcgid` modülünü » https://www.apachelounge.com adresinden edinin. Win32 ikili dosyaları bu siteden indirilebilir. Modülü beraberinde gelen talimatlara göre kurun.

Web sunucunuzu, sisteminize yüklediğiniz yeri belirten dosya yolunu ayarlamaya özen göstererek aşağıda gösterildiği gibi yapılandırın:

Örnek 3 PHP'yi FastCGI altında çalıştırmak için Apache yapılandırması

    LoadModule fcgid_module modules/mod_fcgid.so
    # php.ini dosyanızın yeri
    FcgidInitialEnv PHPRC        "c:/php"
    <FilesMatch \.php$>
        SetHandler fcgid-script
    </FilesMatch>
    FcgidWrapper "c:/php/php-cgi.exe" .php

.php uzantılı dosyalar artık PHP FastCGI sarmalayıcısı tarafından yürütülecektir.

## Installation with IIS for Windows

### Installing IIS

Internet Information Services (IIS) is built in to Windows. On Windows Server, the IIS role can be added via the Server Manager. The CGI Role Feature needs to be included. On Windows Desktop, IIS has to be added via the Control Panel's Add/Remove Programs. The Microsoft documentation has » detailed instructions for enabling IIS. For development, » IIS/Express can also be used.

> Bilginize: The Non-Thread Safe (NTS) version of PHP should be installed when using the FastCGI handler with IIS.

### Configuring PHP with IIS

In IIS Manager, Install FastCGI module and add a handler mapping for `.php` to the path to php-cgi.exe (not php.exe)

The APPCMD command line tool can be used to script IIS configuration.

### Example batch script

Örnek 1 Command line to configure IIS and PHP

    @echo off

    REM download .ZIP file of PHP build from http://windows.php.net/downloads/

    REM path to directory into which PHP .ZIP file was decompressed (no trailing \)
    set phppath=c:\php

    REM Clear current PHP handlers
    %windir%\system32\inetsrv\appcmd clear config /section:system.webServer/fastCGI
    REM The following command will generate an error message if PHP is not installed. This can be ignored.
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']

    REM Set up the PHP handler
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='%phppath%\php-cgi.exe']
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phppath%\php-cgi.exe',resourceType='Unspecified']
    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script

    REM Configure FastCGI Variables
    %windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='%phppath%\php-cgi.exe'].instanceMaxRequests:10000
    %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
    %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phppath%\php.ini']"

## Windows'ta PHP Kurulum Araçları

### PHP Kurulum Araçları

» XAMPP, WampServer ve BitNami, Windows üzerinde Apache ile kullanım için PHP uygulamalarını kuracaktır.

Windows'ta Nginx'i kurmak ve yapılandırmak biraz daha fazla yapılandırma gerektirir. Daha fazala bilgi için bkz: » Nginx belgeleri

## Kaynaktan derleme

Bu bölümde, Microsoft araçları kullanılarak Windews üzerinde PHP'nin nasıl derleneceği anlatılmaktadır. PHP'yi cygwin ile derlemek için bkz: Unix Sistemlere Kurulum.

Wiki belgeleri için bkz: » https://wiki.php.net/internals/windows/stepbystepbuild

## Microsoft Windows üzerinde PHP Komut Satırı

Bu bölüm, PHP'nin Windows üzerinde komut satırından çalıştırılmasına özgü bilgiler ve ipuçları içerir.

> Bilginize:

> Lütfen önce elle kurulum adımlarını okuyun!

PHP'nin komut satırından çalıştırılması, Windows'ta herhangi bir değişiklik yapılmadan gerçekleştirilebilir.

    C:\php\php.exe -f "C:\PHP Betikler\betik.php" -- -dğş1 -dğş2 -dğş3

Ancak bunu daha basit hale getirmek için izlenebilecek bazı kolay adımlar var. Bu adımlardan bazıları daha önce atılmış olmalıdır, ancak tam bir adım adım sıralama sağlayabilmek için bunlar burada tekrarlanmıştır.

> Bilginize:

> PATH ve PATHEXT, Windows'ta önceden tanımlanmış önemli sistem değişkenleridir ve bunlara ekleme yaparken mevcut değerlerin geçersiz kılınmamasına dikkat edilmelidir.

- PHP çalıştırılabilirinin (PHP sürümünüze ve görüntüleme tercihlerinize bağlı olarak php.exe, php-win.exe veya php-cli.exe) konumunu PATH ortam değişkenine ekleyin. İlgili SSS girdisine bakıp PHP dizininizi PATH ortam değişkenine nasıl ekleyeceğinizi öğrenebilirsiniz.

- `.PHP` uzantısını PATHEXT ortam değişkenine ekleyin. Bu, PATH ortam değişkenine ekleme yapılırken yapılabilir. SSS bölümünde açıklanan adımları izleyin ancak PATH ortam değişkeni yerine PATHEXT ortam değişkenini değiştirin.

  > Bilginize:

  > `.PHP` uzantısını yerleştirdiğiniz konum, dosya adlarının eşleşmesi durumunda hangi betiğin veya programın önce yürütüleceğini belirleyecektir. Örneğin, `.PHP`'yi `.BAT`'nin önüne yerleştirmek, aynı ada sahip bir betik dosyası varsa, php betiğinizin bat betiğinin yerine çalıştırılmasına neden olur.

- `.PHP` uzantısının bir dosya türü ile ilişkilendirilmesi, aşağıdaki komut çalıştırılarak yapılır:

      assoc .php=phpfile

- `phpfile` dosya türünün uygun PHP çalıştırılabiliri ile ilişkilendirilmesi aşağıdaki komut çalıştırılarak yapılır:

      ftype phpfile="C:\php\php.exe" -f "%1" -- %~2

Aşağıdaki adımlar takip edilerek, PHP çalıştırılabilir dosyasının veya `.PHP` uzantısının yazılmasına gerek kalmadan PHP komut dosyaları herhangi bir dizinden çalıştırılabilir ve tüm bağımsız değişkenler işlenmek üzere betik dosyasına aktarılabilir.

Aşağıdaki örnek, elle yapılabilecek bazı kayıt defteri değişikliklerinin ayrıntılarını vermektedir.

Örnek 1 Kayıt Defteri değişiklikleri

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
    @="phpfile"
    "Content Type"="application/php"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
    @="PHP Script"
    "EditFlags"=dword:00000000
    "BrowserFlags"=dword:00000008
    "AlwaysShowExt"=""

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
    @="C:\\php\\php-win.exe,0"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
    @="Open"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
    @="&Open"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
    @="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"

Bu değişikliklerle aynı komut şu şekilde yazılabilir:

    "C:\PHP Betikler\betik" dğş1 -dğş2 -dğş3

veya `"C:\PHP Betikler"` yolu PATH ortam değişkeninde mevcutsa:

    betik dğş1 -dğş2 -dğş3

> Bilginize:

> Bu tekniği kullanmayı ve PHP betiklerinizi aşağıdaki örnekte olduğu gibi bir komut satırı süzgeci olarak kullanmayı düşünüyorsanız küçük bir sorun var demektir:

>     dir | "C:\PHP Betikler\betik" dğş1 -dğş2 -dğş3

> veya

>     dir | betik dğş1 -dğş2 -dğş3

> Betiğinizin basitçe askıda kaldığını ve hiçbir şey çıkmadığını görebilirsiniz. Bunu çalışır hale getirmek için başka bir kayıt defteri değişikliği yapmanız gerekir.

>     Windows Registry Editor Version 5.00

>     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
>     "InheritConsoleHandles"=dword:00000001

> Bu sorunla ilgili daha fazla bilgiyi bu » Microsoft Bilgi Bankası Makalesi : 321788'de bulabilirsiniz. Windows 10'dan itibaren, bu ayar tersine çevrilmiş gibi görünür ve öntanımlı Windows 10 kurulumu devralınan konsol işlemlerinin otomatik olarak yapılmasını desteklemektedir. Bu » Microsoft forum gönderisinde bir açıklama bulunmaktadır.

# Bulut Bilişim Platformlarına Kurulum

## İçindekiler

- Azure Uygulama Hizmetleri
- Amazon EC2
- DigitalOcean

PHP buluta kurulur. PHP bulutuna!

## Azure Uygulama Hizmetleri

PHP, Azure Uygulama Hizmetlerine sıklıkla kurulmaktadır (nam-ı diğer Microsoft Azure, Windows Azure, Azure Web Apps).

Azure Uygulama Hizmetleri http uygulamalarınızı barındıracak Windows HTTP Sunucuları havuzlarını yönetir. Ayrıca, kendi HTTP sunucularınızı, kendi Azure Bilişim Sanal Makinelerinizde veya diğer sunucularda da yönetebilirsiniz.

Azure Uygulama Hizmetleri HTTP sitesinde PHP otomatik olarak zaten etkin olur. Azure Portalında, kendi sitenizi seçtikten sonra kullanacağınız PHP sürümünü seçebilirsiniz. Öntanımlı sürüm yerine daha yeni bir sürümü seçmeniz de mümkündür.

Bu nedenle PHP ve eklentileri, diğer Windows sunucularında olduğu gibi Azure Uygulama Hizmetleri üzerinde de çalışacaktır.Ancak Azure Uygulama Hizmetleri için yönetim arabirimi farklıdır:

- » Azure portalı: Kendi sitenizi oluşturun, ayarları düzenleyin ve silin.

- Kudu Panosu: Sitenizin adresi `[sitenizin adı].azurewebsites.net` ise Kudu panosu `https://site_name.scm.azurewebsites.net/` olur. Pano, bazı hata ayıklama yeteneklerine, dosya yönetimine ve site eklentilerine erişmenizi sağlar. Site eklentileri,sitenize PHP önizleme yapıları gibi ek programlar ekleyebilmeniz sağlayan bir Azure mekanizmasıdır.

- IIS Yöneticisi, Sunucu Yöneticisi veya RDP kullanamazsınız.

PHP kodunuzdan birçok Azure Hizmetini yazılımsal olarak olarak kullanmak için bir PHP SDK'sı da vardır. Bkz: » PHP için Azure SDK'sı'.

Daha fazla bilgi için bkz: » Azure PHP Geliştirici Merkezi

### WinCache

WinCache, Azure Uygulama Hizmetleri üzerinde öntanımlı olarak etkindir ve etkin durumda bırakmanız önerilir. Kendi PHP kurulumunuzu yapmak isterseniz WinCache'yi de etkinleştirmelisiniz.

### Özel PHP Kurulumu

Kendi PHP derlemenizi D:\Home (C:\ yazılabilir değildir) dizini altına yükleyebilirsiniz. Ardından Azure Portalında, .php için SCRIPT_PROCESSOR'e yapınızdaki php-cgi.exe dosyasının mutlak yoluna atayın.

## Amazon EC2

PHP » EC2 bulut platformuna kurulabilmektedir.

Ayrıca bkz: » PHP için AWS SDK.

## DigitalOcean

DigitalOcean offers the following platforms to get PHP installed, and running web application on its cloud-hosting infrastructure.

- » Cloudways: One-click deployment of major PHP applications: WordPress, Magento, Drupal, Laravel, and more.

- » Droplet: Virtual machine boxes and installing » Lamp stack on a Linux server .

- » App Platform: Managed infrastructure to build, deploy, and scale apps quickly. Learn » how to run PHP application on the App Platform .

- » Functions: Serverless platform that allows developers to run code without provisioning or managing servers. PHP is supported natively. Learn » how to create serverless functions in PHP .

# FastCGI Process Manager (FPM)

## İçindekiler

- Installation
- Configuration

FPM (FastCGI Process Manager - FastCGI Süreç Yöneticisi) ağır yüklü siteler için (çoğunlukla) yararlı bazı özellikleri içeren birincil PHP FastCGI uygulamasıdır.

These features include:

- advanced process management with graceful stop/start;

- pools that give ability to start workers with different uid/gid/chroot/environment, listening on different ports and using different php.ini (replaces safe_mode);

- configurable stdout and stderr logging;

- emergency restart in case of accidental opcode cache destruction;

- accelerated upload support;

- "slowlog" - logging scripts (not just their names, but their PHP backtraces too, using ptrace and similar things to read remote process' execute_data) that are executed unusually slow;

- fastcgi_finish_request() - special function to finish request and flush all data while continuing to do something time-consuming (video converting, stats processing etc.);

- dynamic/ondemand/static child spawning;

- basic and extended status info (similar to Apache mod_status) with various formats like json, xml and openmetrics supported;

- php.ini-based config file.

## Installation

### Compiling from sources

In order to enable FPM in your PHP build you need to add `--enable-fpm` to your configure line.

There are several other FPM-specific configure options (all of them optional):

- `--with-fpm-user` - set FPM user (default - nobody).

- `--with-fpm-group` - set FPM group (default - nobody).

- `--with-fpm-systemd` - Activate systemd integration (default - no).

- `--with-fpm-acl` - Use POSIX Access Control Lists (default - no).

- `--with-fpm-apparmor` - Activate AppArmor integration (default - no).

- `--with-fpm-selinux` - Activate SELinux integration (default - no).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | The `--with-fpm-selinux` option was added.
8.0.0 | The `--with-fpm-apparmor` option was added.

## Configuration

FPM uses php.ini syntax for its configuration file - php-fpm.conf, and pool configuration files.

### List of global php-fpm.conf directives

`pid` string

  Path to PID file. Default value: none.

`error_log` string

  Path to error log file. Default value: `#INSTALL_PREFIX#/log/php-fpm.log`. If it's set to "syslog", log is sent to syslogd instead of being written in a local file.

`log_level` string

  Error log level. Possible values: alert, error, warning, notice, debug. Default value: notice.

`log_limit` int

  Log limit for the logged lines which allows to log messages longer than 1024 characters without wrapping. Default value: 1024. Available as of PHP 7.3.0.

`log_buffering` bool

  Experimental logging without extra buffering. Default value: yes. Available as of PHP 7.3.0.

`syslog.facility` string

  used to specify what type of program is logging the message. Default value: daemon.

`syslog.ident` string

  Prepended to every message. If you have multiple FPM instances running on the same server, you can change the default value which must suit common needs. Default value: php-fpm.

`emergency_restart_threshold` int

  If this number of child processes exit with SIGSEGV or SIGBUS within the time interval set by `emergency_restart_interval`, then FPM will restart. A value of 0 means 'Off'. Default value: 0 (Off).

`emergency_restart_interval` mixed

  Interval of time used by `emergency_restart_interval` to determine when a graceful restart will be initiated. This can be useful to work around accidental corruptions in an accelerator's shared memory. Available Units: s(econds), m(inutes), h(ours), or d(ays). Default Unit: seconds. Default value: 0 (Off).

`process_control_timeout` mixed

  Time limit for child processes to wait for a reaction on signals from master. Available units: s(econds), m(inutes), h(ours), or d(ays) Default Unit: seconds. Default value: 0.

`process.max` int

  The maximum number of processes FPM will fork. This has been design to control the global number of processes when using dynamic PM within a lot of pools. Use it with caution. Default value: 0.

`process.priority` int

  Specify the nice(2) priority to apply to the master process (only if set). The value can vary from -19 (highest priority) to 20 (lower priority). Default value: not set.

`daemonize` bool

  Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. Default value: yes.

`rlimit_files` int

  Set open file descriptor rlimit for the master process. Default value: system defined value.

`rlimit_core` int

  Set max core size rlimit for the master process. Default value: 0.

`events.mechanism` string

  Specify the event mechanism FPM will use. The following is available: epoll, kqueue (*BSD), port (Solaris), poll, select. Default value: not set (auto detection preferring epoll and kqueue).

`systemd_interval` int

  When FPM is build with systemd integration, specify the interval, in second, between health report notification to systemd. Set to 0 to disable. Default value: 10.

### List of pool directives

With FPM you can run several pools of processes with different setting. These are settings that can be tweaked per pool.

`listen` string

  The address on which to accept FastCGI requests. Valid syntaxes are: 'ip.add.re.ss:port', 'port', '/path/to/unix/socket'. This option is mandatory for each pool.

`listen.backlog` int

  Set listen(2) backlog. A value of `-1` means maximum on BSD systems. Default value: `-1` (FreeBSD or OpenBSD) or `511` (Linux and other platforms).

`listen.allowed_clients` string

  List of IPv4 or IPv6 addresses of FastCGI clients which are allowed to connect. Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original PHP FastCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address must be separated by a comma. If this value is left blank, connections will be accepted from any ip address. Default value: not set (any ip address accepted).

`listen.owner` string

  Set permissions for unix socket, if one is used. In Linux, read/write permissions must be set in order to allow connections from a web server. Many BSD-derived systems allow connections regardless of permissions. Default values: user and group are set as the running user, mode is set to 0660.

`listen.group` string

  See `listen.owner`.

`listen.mode` string

  See `listen.owner`.

`listen.acl_users` string

  When POSIX Access Control Lists are supported you can set them using this option. When set, `listen.owner` and `listen.group` are ignored. Value is a comma separated list of user names.

`listen.acl_groups` string

  See `listen.acl_users`. Value is a comma separated list of group names.

`listen.setfib` int

  Set the associated the route table (FIB). FreeBSD only. Default Value: `-1`. Since PHP 8.2.0.

`user` string

  Unix user of FPM processes. This option is mandatory.

`group` string

  Unix group of FPM processes. If not set, the default user's group is used.

`pm` string

  Choose how the process manager will control the number of child processes. Possible values: `static`, `ondemand`, `dynamic`. This option is mandatory.

  `static` - the number of child processes is fixed (`pm.max_children`).

  `ondemand` - the processes spawn on demand (when requested, as opposed to dynamic, where `pm.start_servers` are started when the service is started). `dynamic` - the number of child processes is set dynamically based on the following directives: `pm.max_children`, `pm.start_servers`, `pm.min_spare_servers`, `pm.max_spare_servers`.
`pm.max_children` int
  The number of child processes to be created when `pm` is set to `static` and the maximum number of child processes to be created when `pm` is set to `dynamic` or `ondemand`. This option is mandatory.

  This option sets the limit on the number of simultaneous requests that will be served. Equivalent to the ApacheMaxClients directive with mpm_prefork and to the PHP_FCGI_CHILDREN environment variable in the original PHP FastCGI.

`pm.start_servers` int

  The number of child processes created on startup. Used only when `pm` is set to `dynamic`. Default Value: (min_spare_servers + max_spare_servers) / 2.

`pm.min_spare_servers` int

  The desired minimum number of idle server processes. Used only when `pm` is set to `dynamic`. Also mandatory in this case.

`pm.max_spare_servers` int

  The desired maximum number of idle server processes. Used only when `pm` is set to `dynamic`. Also mandatory in this case.

`pm.max_spawn_rate` int

  The number of rate to spawn child processes at once. Used only when `pm` is set to `dynamic`. Default value: 32

`pm.process_idle_timeout` mixed

  The number of seconds after which an idle process will be killed. Used only when `pm` is set to `ondemand`. Available units: s(econds)(default), m(inutes), h(ours), or d(ays). Default value: 10s.

`pm.max_requests` int

  The number of requests each child process should execute before respawning. This can be useful to work around memory leaks in 3rd party libraries. For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. Default value: 0.

`pm.status_listen` string

  The address on which to accept FastCGI status request. This creates a new invisible pool that can handle requests independently. This is useful if the main pool is busy with long running requests because it is still possible to get the FPM status page before finishing the long running requests. The syntax is the same as for listen directive. Default value: none.

`pm.status_path` string

  The URI to view the FPM status page. This value must start with a leading slash (/). If this value is not set, no URI will be recognized as a status page. Default value: none.

`ping.path` string

  The ping URI to call the monitoring page of FPM. If this value is not set, no URI will be recognized as a ping page. This could be used to test from outside that FPM is alive and responding. Please note that the value must start with a leading slash (/).

`ping.response` string

  This directive may be used to customize the response to a ping request. The response is formatted as text/plain with a 200 response code. Default value: pong.

`process.priority` int

  Specify the nice(2) priority to apply to the worker process (only if set). The value can vary from -19 (highest priority) to 20 (lower priority). Default value: not set.

`process.dumpable` bool

  Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user or group is different than the master process user. It allows to create process core dump and ptrace the process for the pool user. Default Value: no. Since PHP 7.0.29, 7.1.17 and 7.2.5.

`prefix` string

  Specify prefix for path evaluation

`request_terminate_timeout` mixed

  The timeout for serving a single request after which the worker process will be killed. This option should be used when the 'max_execution_time' ini option does not stop script execution for some reason. A value of '0' means 'Off'. Available units: s(econds)(default), m(inutes), h(ours), or d(ays). Default value: 0.

`request_terminate_timeout_track_finished` bool

  The timeout set by request_terminate_timeout is not engaged after a fastcgi_finish_request or when application has finished and internal shutdown functions are being called. This directive will enable timeout limit to be applied unconditionally even in such cases. Default value: no. Since PHP 7.3.0.

`request_slowlog_timeout` mixed

  The timeout for serving a single request after which a PHP backtrace will be dumped to the 'slowlog' file. A value of '0' means 'Off'. Available units: s(econds)(default), m(inutes), h(ours), or d(ays). Default value: 0.

`request_slowlog_trace_depth` int

  The depth of slowlog log stack trace. Default value: 20. Since PHP 7.2.0.

`slowlog` string

  The log file for slow requests. Default value: `#INSTALL_PREFIX#/log/php-fpm.log.slow`.

`rlimit_files` int

  Set open file descriptor rlimit for child processes in this pool. Default value: system defined value.

`rlimit_core` int

  Set max core size rlimit for child processes in this pool. Possible Values: 'unlimited' or an integer greater or equal to 0. Default value: system defined value.

`chroot` string

  Chroot to this directory at the start. This value must be defined as an absolute path. When this value is not set, chroot is not used.

`chdir` string

  Chdir to this directory at the start. This value must be an absolute path. Default value: current directory or / when chroot.

`catch_workers_output` bool

  Redirect worker stdout and stderr into main error log. If not set, stdout and stderr will be redirected to /dev/null according to FastCGI specs. Default value: no.

`decorate_workers_output` bool

  Enable the output decoration for workers output when catch_workers_output is enabled. Default value: yes. Available as of PHP 7.3.0.

`clear_env` bool

  Clear environment in FPM workers. Prevents arbitrary environment variables from reaching FPM worker processes by clearing the environment in workers before env vars specified in this pool configuration are added. Default value: Yes.

`security.limit_extensions` string

  Limits the extensions of the main script FPM will allow to parse. This can prevent configuration mistakes on the web server side. You should only limit FPM to .php extensions to prevent malicious users to use other extensions to execute php code. Default value: .php .phar

`apparmor_hat` string

  If AppArmor is enabled, it allows to change a hat. Default value: not set

`access.log` string

  The access log file. Default value: not set

`access.format` string

  The access log format. Default value: `"%R - %u %t \"%m %r\" %s"`:

  Valid options
  Placeholder | Description
  --- | ---
  `%%` | The `%` character
  `%C` | %CPU used by the request. It can accept the following format: `%{user}C` for user CPU only, `%{system}C` for system CPU only, `%{total}C` for user + system CPU (default)
  `%d` | Time taken to serve the request. It can accept the following formats for precision: `%{seconds}d` (default), `%{milliseconds}d`, `%{microseconds}d`
  `%{name}e` | An environment variable (same as $_ENV or $_SERVER). A variable name must be specified within curly brackets to specify the name of the env variable. For example, server specifics like `%{REQUEST_METHOD}e` or `%{SERVER_PROTOCOL}e`, HTTP headers like `%{HTTP_HOST}e` or `%{HTTP_USER_AGENT}e`
  `%f` | Script filename
  `%l` | `Content-Length` of the request (for HTTP POST request only)
  `%m` | Request HTTP method
  `%M` | Peak of memory allocated by PHP. It can accept the following format: `%{bytes}M` (default), `%{kilobytes}M` `%{kilo}M`, `%{megabytes}M`, `%{mega}M`
  `%n` | Pool name
  `%{name}o` | Output header. The header name must be specified within curly brackets. For example: `%{Content-Type}o`, `%{X-Powered-By}o`, `%{Transfer-Encoding}o`
  `%p` | PID of the child that serviced the request
  `%P` | PID of the parent of the child that serviced the request
  `%q` | Query string
  `%Q` | The `'?'` character, or glue between `%q` and `%r`, if query string exists
  `%r` | Request URI without the query string, see `%q` and `%Q`
  `%R` | Remote IP address
  `%s` | Status (response code)
  `%t` | Server time the request was received. It can accept a `strftime(3)` format: `%d/%b/%Y:%H:%M:%S %z` (default) The `strftime(3)` format must be encapsulated in a `%{<strftime_format>}t` tag, e.g. for a ISO8601 formatted timestring, use: `%{%Y-%m-%dT%H:%M:%S%z}t`
  `%T` | Time the log was written (when the request finished). It can accept a `strftime(3)` format: `%d/%b/%Y:%H:%M:%S %z` (default). The `strftime(3)` format must be encapsulated in a `%{<strftime_format>}T` tag, e.g. for a ISO8601 formatted timestring, use: `%{%Y-%m-%dT%H:%M:%S%z}T`
  `%u` | Basic access authentication user, if specified in `Authorization` header

`access.suppress_path` array

  A list of request_uri values which should be filtered from the access log. Default value: not set. Since PHP 8.2.0.

It's possible to pass additional environment variables and update PHP settings of a certain pool. To do this, you need to add the following options to the pool configuration file.

Örnek 1 Passing environment variables and PHP settings to a pool

    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

    php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
    php_flag[display_errors] = off
    php_admin_value[error_log] = /var/log/fpm-php.www.log
    php_admin_flag[log_errors] = on
    php_admin_value[memory_limit] = 32M

PHP settings passed with `php_value` or `php_flag` will overwrite their previous value. Please note that defining disable_functions will not overwrite previously defined php.ini values, but will append the new value instead.

Settings defined with `php_admin_value` and `php_admin_flag` cannot be overridden with ini_set().

PHP settings can be set in the webserver configuration.

Örnek 2 set PHP settings in nginx.conf

    set $php_value "pcre.backtrack_limit=424242";
    set $php_value "$php_value \n pcre.recursion_limit=99999";
    fastcgi_param  PHP_VALUE $php_value;

    fastcgi_param  PHP_ADMIN_VALUE "open_basedir=/var/www/htdocs";

Dikkat

Because these settings are passed to php-fpm as fastcgi headers, php-fpm should not be bound to a worldwide accessible address. Otherwise, anyone could alter the PHP configuration options. See also listen.allowed_clients.

> Bilginize: Pools are not a security mechanism, because they do not provide full separation; e.g. all pools would use a single OPcache instance.

# PECL eklentilerinin kurulması

## İçindekiler

- PECL Kurulumları Hakkında
- PECL Eklentilerinin İndirilmesi
- Bir PHP Eklentisinin Windows Kurulumu
- Paylaşımlı PECL eklentilerinin pecl komutu ile derlenmesi
- Paylaşımlı PECL eklentilerinin phpize ile derlenmesi
- php-config
- PECL eklentilerinin PHP içinde duruk olarak derlenmesi

## PECL Kurulumları Hakkında

» PECL, » PEAR üzerinden kullanılabililen bir PHP eklentileri deposudur. Kılavuzun bu bölümü PECL eklentilerinin nasıl edinileceği ve nasıl kurulacağını göstermek için tasarlanmıştır.

Bu talimatlarda, PHP kaynak kodunun `/php/kaynak/dizininiz/` altında bulunduğu ve PECL eklentisinin isminin `eklenti` olduğu varsayılacaktır. Hazırlıkları buna göre yapılmalıdır. Bu talimatlarda ayrıca, » pear komutunun kullanılmasının bilindiği varsayılacaktır. PEAR kılavuzundaki `pear` komutu ile ilgili bilgiler pecl komutu için de geçerlidir.

Burada genel olarak eklentinin paylaşımlı olarak derlenmesi, kurulması ve yüklenmesi üzerinde durulacaktır. Sonraki bölümlerde açıklanan yöntemler eklentiyi nasıl derleyip kuracağınızla ilgili çeşitli talimatlar içerir, fakat bunlar otomatik olarak yüklenmez. Eklentiler bir extension yönergesi eklenerek yüklenebilirler. Bunun için php.ini dosyası veya dl() işlevi kullanılabilir.

PHP modüllerini derlerken, derleme için gerekli araçların (autoconf, automake, libtool gibi) birbirleriyle en uyumlu sürümlerini kullanıyor olmak önemlidir. Gerekli araçlar ve bunların gerekli sürümleriyle ilgili ayrıntılı bilgi » Anonim Git Talimatları sayfasında bulunabilir.

## PECL Eklentilerinin İndirilmesi

PECL eklentilerini indirmek için çeşitli seçenekler vardır:

- pecl install eklenti komutu eklenti kodunu otomatik olarak indirir, dolayısıyla ayrı bir indirme işlemine gerek kalmaz.
- » https://pecl.php.net/ PECL sitesi, PHP Geliştirme Ekibi tarafından önerilen farklı eklentiler hakkında bilgiler içerir. Burada bulunan bilgilerden bazıları: ChangeLog dosyaları, dağıtım notları, gereksinimler ve benzeri ayrıntılar.
- pecl download eklenti komutu PECL sitesinine dağıtım listesinde bulunan eklentileri indirip kurmak için » pecl komutu kullanılabilir. İstenen sürümler ayrıca belirtilebilir.
- git Birçok PECL uzantısı GitHub'da bulunabilir.
- SVN Bazı PECL eklentileri ayrıca SVN'de de bulunmaktadır. SVN içeriği » https://svn.php.net/pecl/ adresinde incelenebilir. Eklentileri doğrudan SVN'den indirmek için sırayla aşağıdaki komutlar verilebilir.

  $ svn checkout https://svn.php.net/repository/pecl/extname/trunk eklenti
- Windows için PHP projesi çoğu PECL eklentisinin Windows çalıştırılabilirlerini derlemekte ve ilgili yere kurmaktadır.

## Bir PHP Eklentisinin Windows Kurulumu

Windows'ta bir PHP eklentisini yüklemenin iki yolu vardır: Ya eklenti PHP içinde derlenir ya da DLL olarak yüklenir. Derlenmiş bir eklentiyi yüklemek en kolay ve en çok tercih edilen yoldur.

Bir eklentiyi yüklemek için sistemde o eklentinin .dll dosyasının bulunması gerekir. Tüm eklentiler otomatik olarak belirli aralıklarla PHP Grubu tarafından derlenirler (bunları indirilmesi sonraki bölümde açıklanmıştır.

Bir eklentiyi PHP içinde derlemek için Kaynak kod paketinden derleme belgesine bakılabilir.

Bir eklentiyi tek başına (yani bir DLL olarak) derlemek için Kaynak kod paketinden derleme belgesine bakılabilir. Eğer DLL dosyası ne PHP dağıtımında ne de PECL sitesinde mevcutsa, eklentiyi kullanmaya başlamadan önce derlemek gerekebilir.

### Bir eklenti nereden bulunur?

PHP eklentileri genellikle php_*.dll biçeminde isimlendirilir (yıldız iminin yerine eklentinin ismi gelir) ve PHP\ext dizini altında bulunur.

PHP, geliştiricilerin büyük çoğunluğunca en faydalı bulunan eklentilerle birlikte gelir. Bu tür paketlere toplu paket adı verilir.

Bununla birlikte, çekirdek eklentilerle sağlanmamış bir işlevselliğe ihtiyaç duyulursa, bunları edinmek için » PECL sitesinde bulunabilir. PHP Eklentileri Halk Kütüphanesi (PECL - PHP Extension Community Library) bir PHP Eklentileri deposu olup PHP eklentilerinin geliştirilmesi ve indirilmesi için barındırma oluşumlarını ve bilinen tüm eklentilerin bir dizinini içerir.

Kendi kullanımı için eklenti geliştirenler bu eklentinin PECL'de barındırılmasını isteyebilir, böylece ihtiyaçları aynı olan başkaları da bu eklentiden yararlanabilir. Bunun bazı olumlu yan etkileri de vardır: Geribildirim, teşekkür, hata bildirimi, hatta düzeltme ve yama alma şansı olur. Eklentiyi barındırılmak üzere PECL'ye göndermeden önce » PECL adresinin incelenmesi önerilir.

### Hangi eklenti indirilecek?

Çoğu zaman her DLL'nin çok sayıda sürümü vardır:

- Farklı sürüm numaraları (en azından ilk iki sayı tutmalı)
- Farklı evre güvenceli olanlar
- Farklı işlemciler için olanlar (x86, x64, ...)
- Farklı hata ayıklama seçenekli olanlar
- `vs.`

Şuna da dikkat edilmelidir: Eklenti ayarları kullanılan PHP çalıştırılabilirinin ayarları ile aynı olmalıdır. Aşağıdaki PHP betiği PHP ayarlarının tamamını içerecektir:

Örnek 1 - phpinfo() kullanımı

    <?php
    phpinfo();
    ?>

Ya da komut satırından:

    sürücü:\dizin\yolu\php\executable\php.exe -i

### Bir eklentinin yüklenmesi

Bir PHP eklentisini yüklemenin en bilinen yolu eklentiyi php.ini dosyasına eklemektir. Dikkatle incelenirse php.ini dosyasında bir çok eklentinin zaten ekli olduğunu görülür. Eklentiyi etkin kılmak için yapılacak tek değişiklik eklentinin belirtildiği satırın başındaki noktalı virgülü silmek olacaktır.

PHP 7.2.0 ve üzeri sürümlerde, eklentinin dosya adı yerine eklenti adı da kullanılabilir. Bu işletim sisteminden bağımsız ve daha kolay olduğundan, özellikle yeni başlayanlar için, yüklenecek eklentileri belirlemenin önerilen yolu haline gelir. Dosya adları, önceki sürümlerle uyumluluk için desteklenmeye devam etmektedir.

    ;extension=php_eklenti.dll

    extension=php_eklenti.dll

    ; PHP 7.2 ve sonrasında önerilen:
    extension=eklenti
    zend_extension=diğer_eklenti

Bununla birlikte, bazı HTTP sunucuları, PHP çalıştırılabilirinin yanına konmuş php.ini dosyasını kullanmadıklarından eklentiyi göremeyebilir. HTTP sunucusunun kullandığı php.ini dosyasının bulunduğu yer phpinfo() işlevi kullanılarak şöyle öğrenilebilir:

    Configuration File (php.ini) Path C:\WINDOWS

    Loaded Configuration File         C:\Program Files\PHP\8.2\php.ini

Eklentiyi etkin kıldıktan sonra php.ini dosyası kaydedilmeli ve HTTP sunucusu yeniden başlatıldıktan sonra tekrar phpinfo() çıktısına bakılmalıdır. Yeni eklentinin artık kendi bölümünde görünüyor olması gerekir.

### Sorunların çözümlenmesi

Eğer eklenti phpinfo() çıktısında görünmüyorsa sorunun kaynağını bulmak için günlük dosyalarına bakılmalıdır.

PHP, komut satırından kullanılıyorsa (CGI), eklenti yükleme hatası doğrudan ekranda görülebilir.

PHP bir HTTP sunucusu ile kullanılıyorsa günlük dosyalarının yeri ve biçemi kullanılan yazılıma göre değişir. Günlüklerin yerini bulmak için kullanılan HTTP sunucusunun belgelerine bakılmalıdır.

Sorunların çoğu DLL dosyasının ve bu dosyanın bağımlı olduğu DLL'lerin yeri ile ilgilidir. `php.ini` içindeki "extension_dir" yönergesinin değeri ile derleme sırasında yapılan ayarlar arasında bir tutarsızlık olabilir.

Eğer sorun derleme sırasında yapılan ayarlarla uyumsuzluktan kaynaklanıyorsa muhtemelen indirilen DLL dosyası doğru yere konulmamış demektir. Eklentinin doğru ayarlarla tekrar indirilmesi gerekebilir. Bu yapıldıktan sonra phpinfo() çıktısının tekrar incelenmesi uygun olacaktır.

## Paylaşımlı PECL eklentilerinin `pecl` komutu ile derlenmesi

PECL, paylaşımlı PHP eklentilerinin oluşturulmasını kolaylaştırır. » pecl komutu şöyle kullanılabilir:

$ pecl install eklenti

Bu komutla eklentinin kaynak kodu indirilecek, derlenecek ve eklenti.so adıyla extension_dir yönergesinde belirtilen dizine kurulacaktır. Böylece eklenti.so php.ini üzerinden yüklenebilir duruma gelmiş olacaktır.

Öntanımlı olarak, pecl komutu, `alfa` veya `beta` olarak imlenmiş paketleri kurmaz. Eklentinin henüz `kararlı` bir sürümü yoksa, `beta` sürümü şöyle kurulabilir:

$ pecl install eklenti-beta

Ayrıca belli bir sürüm şu şekilde kurulabilir:

$ pecl install eklenti-0.1

> Bilginize:

> Eklentiyi php.ini dosyasında etkin kıldıktan sonra değişikliklerin etkin olması için HTTP sunucusunun yeniden başlatııması gerekir.

## Paylaşımlı PECL eklentilerinin `phpize` ile derlenmesi

pecl komutu ile kurulumun mümkün olmadığı durumlar olabilir. Bir güvenlik duvarı etkin olabilir veya eklentinin PECL uyumlu paketi yoktur ya da henüz dağıtılmamış git sürümü kurulmak isteniyordur, vs. Böyle bir eklentinin derleme işlemi daha temel derleme araçları (make gibi) kullanılarak gerçekleştirilebilir.

Bir PHP eklentisini derleme işlemine hazırlamak için phpize komutu kullanılır. Aşağıdaki örnekte, eklentinin kaynak kod paketinin eklenti dizininde bulunduğu varsayılmıştır:

    $ cd eklenti
    $ phpize
    $ ./configure
    $ make
    # make install

Başarılı bir kurulum sonucunda eklenti PHP eklentileri dizinine eklenti.so adıyla yerleştirilir. Eklentiyi etkin kılmak için php.ini dosyasına bir `extension=eklenti.so` satırı eklemek gerekecektir.

Eğer sistemde phpize komutu yoksa ve RPM gibi önceden derlenmiş paketler kullanılabiliyorsa, phpize komutunu ve PHP eklentilerini derlemek için gerekli başlık dosyalarını içermesi muhtemel uygun bir PHP geliştirme sürümünü kurmak gerekebilir.

Komutun kullanım bilgilerini görmek için phpize --help komutu verilmelidir.

## php-config

php-config basit bir kabuk betiği olup kurulu PHP yapılandırması hakkında bilgi edinmek için kullanılır.

Eklentiler derlenirken, birden fazla PHP sürümü kuruluysa yapılandırma sırasında --with-php-config seçeneğinde ilgili php-config betiğinin yolu belirtilerek hangi sürümün kurulmak istendiği belirtilebilir.

php-config betiği tarafından sağlanan komut satırı seçeneklerinin listesi, betiği -h seçeneği ile çalıştırarak alınabilir:

    Usage: /usr/local/bin/php-config [OPTION]
    Options:
      --prefix            [...]
      --includes          [...]
      --ldflags           [...]
      --libs              [...]
      --extension-dir     [...]
      --include-dir       [...]
      --php-binary        [...]
      --php-sapis         [...]
      --configure-options [...]
      --version           [...]
      --vernum            [...]

Komut satırı seçenekleri
Seçenek | Açıklama
--- | ---
--prefix | PHP'nin kurulu olduğu dizinin öneki, /usr/local gibi.
--includes | Tüm başlık dosyaları ile -I seçeneklerinin listesi
--ldflags | PHP'nin birlikte derlendiği `LD` seçenekleri
--libs | PHP'nin birlikte derlendiği ek kütüphaneler
--extension-dir | Eklentilerin aranacağı öntanımlı dizin
--include-dir | Başlık dosyalarının bulunduğu öntanımlı dizininin öneki
--php-binary | PHP CLI veya CGI çalıştırılabilirinin tam yolu
--php-sapis | Kullanılabilir tüm SAPI modüllerini gösterir
--configure-options | Geçerli PHP kurulumunu yeniden oluşturmak için yapılandırma seçenekleri
--version | PHP sürümü
--vernum | Tamsayı olarak PHP sürümü

## PECL eklentilerinin PHP içinde duruk olarak derlenmesi

Bazen bir PECL eklentisini PHP çalıştırılabilirinin içinde duruk olarak derlemek gerekebilir. Bunu yapmak için eklentinin /php/kaynak/dizininiz/ext/ dizinine yerleştirilmesi ve PHP kaynak paketinin `configure` betiğinin yeniden çalıştırılması gerekir.

    $ cd /php/kaynak/dizininiz/ext
    $ pecl download eklenti
    $ gzip -d < eklenti.tgz | tar -xvf -
    $ mv eklenti-x.x.x eklenti

Bu işlemin sonucunda eklenti şöyle bir dizinin altına yerleştirilmiş olacaktır:

/php/kaynak/dizininiz/ext/eklenti

Artık PHP kaynak paketinin `configure` betiğini yeniden oluşturulup PHP her zamanki gibi derlenebilir:

$ cd /php/kaynak/dizininiz/
$ rm configure
$ ./buildconf --force
$ ./configure --help
$ ./configure --with-eklenti --enable-baskabireklenti --with-filanca
$ make
$ make install

> Bilginize: buildconf betiğini çalıştırabilmek için autoconf 2.68 ve automake 1.4+ paketlerinin sistemde kurulu olması gerekir (daha yeni autoconf sürümleri de çalışabilir ama onlar desteklenmemektedir).

--enable-eklenti seçeneğinin mi yoksa --with-eklenti seçeneğinin mi kullanılacağı eklentiye bağlıdır. Genellikle harici kütüphanelere ihtiyacı olmayan eklentiler --enable seçeneğini kullanır. Hangisinin kullanılacağından emin olmak için buildconf'tan sonra şu çalıştırılabilir:

$ ./configure --help | grep eklenti

# Installation of Composer and third-party packages

## Introduction to Composer

» Composer is a dependency manager for PHP that makes it possible to define third-party code packages used by a project that can then be easily installed and updated. It leverages the built-in class autoloading features of PHP, repositories of PHP packages such as » Packagist, and common project layout and coding conventions.

For example, if a PHP application or website needs to work with UUID values, » Ben Ramsey's `ramsey/uuid` package that implements the widely known and used types of UUIDs that are defined by » RFC 4122 could be used.

Briefly, this is done by creating a `composer.json` in the project, using Composer to install the latest version of the package, and including Composer's autoload script to make it available to the code. The » Composer "Basic Usage" documentation goes into this in more depth.

Örnek 1 `composer.json` that requires a single package

    {
        "require": {
            "ramsey/uuid": "^4.7"
        }
    }

# Installation of PIE and third-party extensions

## Introduction to PIE

» PIE is an installer for PHP, that makes it possible to install third-party PHP extensions, that can then be easily installed and updated. It leverages the PHP extension repository part of » Packagist to find the source code to build the extension, or a Windows binary to download, if it exists. If it downloads the source code, it also knows how to build and install it.

After » installing the requirements and PIE itself, you can then install the MongoDB extension by running the following on the command line.

Örnek 1 Installing the MongoDB extension with PIE

    pie install mongodb/mongodb-extension

The » "PIE Usage" documentation goes into this in more depth.

# Çalışma Anı Yapılandırması

## İçindekiler

- Yapılandırma Dosyası
- .user.ini dosyaları
- Yapılandırma ayarlarının yeri
- Yapılandırma ayarlarının değiştirilmesi

## Yapılandırma Dosyası

Yapılandırma dosyası (php.ini) PHP başlatıldığında okunur. PHP'nin sunucu modülü sürümlerinde bu işlem bir kereliğine HTTP sunucusu başlatıldığında gerçekleşir. CGI ve CLI sürümlerinde ise PHP'nin her çağrılışında işlem tekrarlanır.

php.ini sırasıyla şuralarda aranır:

- SAPI modülüne özgü konum (Apache 2'de `PHPIniDir` yönergesi, CGI ve CLI için `-c` komut satırı seçeneği)

- PHPRC ortam değişkeni.

- `php.ini` dosyasının konumu PHP'nin farklı sürümleri için ayarlanabilmektedir. Kayıt defteri anahtarlarının kökü, kurulu işletim sistemi ve PHP'nin 32 veya 64 bit oluşuna bağlıdır. 32 bit işletim sisteminde 32 bit PHP veya 64 bit işletim sisteminde 64 bit PHP için [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP], 64 bit işletim sisteminde 32 bit PHP sürümü için bunu yerine [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]] kullanın. Aynı bitlik kurulum için kayıt defteri anahtarları aşağıdaki sırayla incelenir: `[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]`, `[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]` ve `[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]`. Burada x, y ve z harfleri PHP'nin ana, alt ve yama sürümlerini belirtir. 64 bit işletim sisteminde PHP'nin 32 bit sürümleri için kayıt defteri anahtarları aşağıdaki sırayla incelenir: `[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]`, `[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]` ve `[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]`. Burada x, y ve z harfleri PHP'nin ana, alt ve yama sürümlerini belirtir. Bu anahtarlarda bir `IniFilePath` değeri varsa ilk bulunan `php.ini` konumu kullanılır (sadece Windows).

- `[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]` or `[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]` anahtarının `\IniFilePath` değeri (sadece Windows).

- Geçerli çalışma dizini (CLI dışında)

- HTTP sunucusunun dizini (SAPI modülleri için) veya PHP dizini (Windows için)

- Windows dizini (C:\windows veya C:\winnt) (Windows için) veya `--with-config-file-path` derleme seçeneği ile belirtilen dizin.

php-SAPI.ini mevcutsa (burada SAPI, kullanılan SAPI'dir, dolayısıyla php-cli.ini veya php-apache.ini gibi bir dosya ismidir), php.ini yerine bu dosya kullanılır. SAPI ismi php_sapi_name() işlevi ile saptanabilir.

> Bilginize:

> Apache HTTP sunucusunun başlatıldığında kök dizine geçmesi PHP'nin php.ini dosyasını dosya sisteminin kök dizininde aramasına sebep olur.

php.ini içinde kullanılabilen ortam değişkenlerinin kullanımı aşağıda gösterilmiştir.

Örnek 1 - php.ini Ortam Değişkenleri

    ; PHP_MEMORY_LIMIT'in ortamdan alınışı
    memory_limit = ${PHP_MEMORY_LIMIT}

php.ini yönergelerinin eklentilerle ilgili olanlarının belgeleri her eklentinin kendi belgeleri içindedir. Temel yönergelerin listesini eklerde bulabilirsiniz. Tamamı olmasa da yönergelerin büyük çoğunluğu kılavuzda belgelenmiş durumdadır. Kurulu PHP sürümünüzde geçerli yönergelerin tam listesi için kendi içinde iyi açıklanmış php.ini dosyanızı okuyun. Ayrıca, Git'te bulunan » en son php.ini dosyası da bu konuda size yardımcı olabilir.

Örnek 2 - php.ini örneği

    ; bir noktalı virgülden (;) sonra gelen tüm metin parçaları yok sayılır
    [php] ; bölüm imleyiciler de (köşeli ayraç içindeki metinler) yok sayılır
    ; Mantıksal değerler için şu değerlerden herhangi biri kullanılabilir:
    ;      true,  on,  yes
    ;      false, off, no, none
    register_globals = off
    track_errors = yes

    ; Dizgeleri çift tırnak imlerinin arasında belirtebilirsiniz
    include_path = ".:/usr/local/lib/php"

    ; tersbölü karakterleri diğer karakterler gibi ele alınır
    include_path = ".;c:\php\lib"

.ini dosyalarında bulunan yönergelere isimleriyle değişken olarak erişilebilir. Örnek: `open_basedir = ${open_basedir} ":/new/dir"`.

### Tarama Dizinleri

PHP'yi, php.ini'yi okuduktan sonra bir dizindeki .ini dosyalarını tarayacak şekilde yapılandırmak mümkündür. Bu, --with-config-file-scan-dir seçeneği ayarlanarak derleme sırasında yapılabilir. Tarama dizini daha sonra çalışma anında PHP_INI_SCAN_DIR ortam değişkeni ayarlanarak geçersiz kılınabilir.

Birden fazla dizini platforma özgü yol ayırıcıyla ayırarak taramak mümkündür (Windows, NetWare ve RISC OS için `;` diğer tüm platformlarda `:` kullanılır. PHP'nin kullandığı değer `PATH_SEPARATOR` sabiti olarak mevcuttur). PHP_INI_SCAN_DIR'de boş bir dizin verilmişse, PHP ayrıca derleme sırasında --with-config-file-scan-dir seçeneği ile verilen dizini de tarayacaktır.

PHP her dizinde, PHP `.ini` uzantılı tüm dosyaları alfabetik sırayla tarar. php_ini_scanned_files() işlevi ile veya PHP'yi --ini seçeneğiyle çalıştırarak yüklenen dosyaların bir listesi ve sırası elde edilebilir.

    PHP'nin --with-config-file-scan-dir=/etc/php.d ile yapılandırıldığını
    ve yol ayırıcının : olduğunu varsayalım ...

    $ php
      PHP /etc/php.d/*.ini dosyalarının tamamını
      yapılandırma dosyaları olarak yükler

    $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d php
      PHP /usr/local/etc/php.d/*.ini dosyalarının tamamını
      yapılandırma dosyaları olarak yükler

    $ PHP_INI_SCAN_DIR=:/usr/local/etc/php.d php
      PHP /etc/php.d/*.ini ve ardından /usr/local/etc/php.d/*.ini
      dosyalarının tamamını yapılandırma dosyaları olarak yükler

    $ PHP_INI_SCAN_DIR=/usr/local/etc/php.d: php
      PHP /usr/local/etc/php.d/*.ini ve ardından /etc/php.d/*.ini
      dosyalarının tamamını yapılandırma dosyaları olarak yükler

## .user.ini dosyaları

Dizinler için .htaccess tarzı INI dosyaları desteklenmektedir. Bu dosyalar sadece CGI/FastCGI SAPI tarafından işlenir. Bu işlevsellik ile PECL htscanner eklentisi atıl duruma düşmüştür. PHP'yi Apache modülü olarak çalıştırıyorsanız aynı etkiyi elde etmek için .htaccess dosyalarını kullanın.

Ana php.ini dosyasına ek olarak, PHP istenen PHP dosyasının bulunduğu dizinden itibaren her dizini INI dosyaları için tarar ve bunları geçerli belge kök dizinine uygulanıyormuş gibi uygular ($_SERVER['DOCUMENT_ROOT'] değişkenine atandığı gibi). PHP dosyasının belge kökü dışında olduğu durumlarda sadece onun dizini taranır.

.user.ini tarzı INI dosyalarında sadece `INI_PERDIR` ve `INI_USER` kipindeki INI ayarları işleme sokulur.

Kullanıcı INI dosyalarını denetlemek için iki yeni INI yönergesi kullanılmaktadır: user_ini.filename ve user_ini.cache_ttl

user_ini.filename ile PHP'nin dizinlerde arayacağı dosyanın ismi belirtilir. `.user.ini` öntanımlı değerdir.

user_ini.cache_ttl ile kullanıcı INI dosyalarının ne sıklıkta denetleneceği belirtilir. 300 saniye (5 dakika) öntanımlı değerdir.

## Yapılandırma ayarlarının yeri

Bu kipler, bir PHP yönergesinin nerede ve ne zaman atanabileceğini belirlerler ve bu kılavuzdaki her yönerge bu kiplerden biri ile ilişkilidir. Örneğin, bazı ayarlar bir PHP betiğinin içinde ini_set() kullanarak atanabilirken bazıları da php.ini veya httpd.conf dosyasında atanabilirler.

Örneğin, output_buffering ayarı için kip `INI_PERDIR` olup ini_set() kullanarak atanamaz. Bununla birlikte, display_errors yönergesinin kipi `INI_ALL` olup ini_set() kullanımı dahil her yerde atanabilir.

INI kip sabitleri
`INI_USER` (int)
  Kullanıcı betiklerinde (örn, ini_set() ile) veya Windows kayıt defteri içinde atanabilir.
`INI_PERDIR` (int)
  php.ini, .htaccess, httpd.conf veya .user.ini içinde atanabilir.
`INI_SYSTEM` (int)
  php.ini veya httpd.conf içinde atanabilir.
`INI_ALL` (int)
  Herhangi bir yerde atanabilir.

## Yapılandırma ayarlarının değiştirilmesi

### PHP'nin bir Apache modülü olarak çalıştırılması

PHP'yi bir Apache modülü olarak kullanırken, yapılandırma ayarlarını Apache yapılandırma dosyalarındaki (httpd.conf ve .htaccess dosyaları) yönergeleri kullanarak da değiştirebilirsiniz. Bunu yapabilmek için Apache yapılandırmasında "AllowOverride Options" veya "AllowOverride All" olması gerekir.

PHP yapılandırmasını Apache yapılandırma dosyaları içinden değiştirmenize imkan veren çeşitli Apache yönergeleri vardır. `INI_ALL`, `INI_PERDIR` veya `INI_SYSTEM` olarak belirtilebilen yönergeleri eklerdeki php.ini yönergelerinin listesi sayfasında bulabilirsiniz.

`php_value` `isim` `değer`

  Belirtilen değeri ismi belirtilen yönergeye atar. Sadece `INI_ALL` ve `INI_PERDIR` türü yönergeler için kullanılabilir. Önceki atanan değeri silmek için değer olarak `none` kullanın.

  > Bilginize: Mantıksal değer atamak için `php_value` yönergesini değil, `php_flag` (aşağıya bakınız) yönergesini kullanmalısınız.

`php_flag` `isim` `on|off`

  Bir mantıksal yapılandırma yönergesi atamak için kullanılır. Sadece `INI_ALL` ve `INI_PERDIR` türü yönergeler için kullanılabilir.

`php_admin_value` `isim` `değer`

  İsmi belirtilen yönergeye belirtilen değeri atar. .htaccess dosyalarında kullanılamaz. Bu yönerge ile atanan hiçbir yönerge türü ini_set() veya .htaccess tarafından geçersiz kılınamaz. Önceki atanan değeri silmek için değer olarak `none` kullanın.

`php_admin_flag` `isim` `on|off`

  Bir mantıksal yapılandırma yönergesi atamak için kullanılır. .htaccess dosyalarında kullanılamaz. Bu yönerge ile atanan hiçbir yönerge türü .htaccess veya ini_set() tarafından geçersiz kılınamaz.

Örnek 1 - Apache yapılandırma örneği

    <IfModule mod_php5.c>
      php_value include_path ".:/usr/local/lib/php"
      php_admin_flag engine on
    </IfModule>
    <IfModule mod_php4.c>
      php_value include_path ".:/usr/local/lib/php"
      php_admin_flag engine on
    </IfModule>

Dikkat

PHP sabitleri PHP dışında mevcut değildir. Örneğin, httpd.conf dosyasında error_reporting yönergesine `E_ALL` veya `E_NOTICE` PHP sabitlerini atayamazsınız. Bunu yaparsanız daima 0 olarak değerlendirileceklerdir. Sabitleri kullanmak yerine bunların bit maskelerini kullanın. Bu sabitler php.ini içinde kullanılabilir.

### PHP yapılandırmasının Windows kayıt defteri üzerinden değiştirilmesi

PHP, Windows üzerinde çalışırken, yapılandırma değerleri Windows kayıt defteri kullanılarak her dizin için ayrı ayrı değiştirilebilir. Yapılandırma değerleri defterde `HKLM\SOFTWARE\PHP\Per Directory Values` anahtarının dizin isimlerine karşılık gelen alt anahtarlarında saklanır. Örneğin, `c:\inetpub\wwwroot` dizini için yapılandırma değerleri `HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot` anahtarında saklanır. Dizin ile ilgili ayarlar, dizin içinde ve alt dizinlerde çalıştırılan her betik için geçerli olur. Anahtar altındaki değerler PHP yapılandırma yönergelerinin isimlerini ve dizge değerlerini içermelidir. Değerlerde bulunan PHP sabitleri çözümlenmez. Sadece, `INI_USER` türü değişebilir yapılandırma değerleri bu yolla atanabilir, `INI_PERDIR` değerleri atanamaz, çünkü bu yapılandırma değerleri her istekte yeniden okunur.

### Diğer PHP arayüzleri

PHP'yi nasıl çalıştırdığınızdan bağımsız olarak, belli değerleri betiğinizin çalışması sırasında ini_set() işlevi sayesinde değiştirebilirsiniz. Bu konuda daha ayrıntılı bilgi için ini_set() sayfasına bakınız.

Sistem yapılandırmanızla ilgili ayarlar ve mevcut değerleri ilginizi çekiyorsa phpinfo() işlevini çalıştırabilir ve elde ettiğiniz sayfayı inceleyebilirsiniz. Ayrıca, yapılandırma yönergelerinin her birine çalışma anında ini_get() veya get_cfg_var() işlevini kullanarak erişebilirsiniz.

- Genel Kurulum Değerlendirmesi
- Unix Sistemlere Kurulum
  - Debian GNU/Linux Kurulum Bilgileri
  - Installing from packages on GNU/Linux distributions that use DNF
  - OpenBSD üzerinde portlar ve paketlerden kurulum
  - Installing from source on Unix and macOS systems
  - CGI ve Komut Satırı Ayarları
  - Unix sistemler ve Apache 2.x
  - Nginx 1.4.x on Unix systems
  - Unix sistemlerde Lighttpd 1.4
  - LiteSpeed Web Server/OpenLiteSpeed Web Server on Unix systems
  - Solaris'e özgü Kurulum İpuçları
- macOS üzerine Kurulum
  - Üçüncü parti paketlerden macOS üzerinde kurulum
  - macOS üzerine PHP kurulumu
  - macOS Monterey öncesinde dağıtımla gelen PHP Kullanımı
- Windows Sistemlerine Kurulum
  - Windows sistemlerinde Önerilen Yapılandırma
  - Windows üzerine Elle PHP Kurulum Adımları
  - Microsoft Windows üzerinde Apache 2.x
  - Installation with IIS for Windows
  - Windows'ta PHP Kurulum Araçları
  - Kaynaktan derleme
  - Microsoft Windows üzerinde PHP Komut Satırı
- Bulut Bilişim Platformlarına Kurulum
  - Azure Uygulama Hizmetleri
  - Amazon EC2
  - DigitalOcean
- FastCGI Process Manager (FPM)
  - Installation
  - Configuration
- PECL eklentilerinin kurulması
  - PECL Kurulumları Hakkında
  - PECL Eklentilerinin İndirilmesi
  - Bir PHP Eklentisinin Windows Kurulumu
  - Paylaşımlı PECL eklentilerinin pecl komutu ile derlenmesi
  - Paylaşımlı PECL eklentilerinin phpize ile derlenmesi
  - php-config
  - PECL eklentilerinin PHP içinde duruk olarak derlenmesi
- Introduction to Composer
- Introduction to PIE
- Çalışma Anı Yapılandırması
  - Yapılandırma Dosyası
  - .user.ini dosyaları
  - Yapılandırma ayarlarının yeri
  - Yapılandırma ayarlarının değiştirilmesi

# Dil Başvuru Kılavuzu

# Temel Sözdizimi

## İçindekiler

- PHP etiketleri
- HTML'den Kaçmak
- Deyim Ayırma
- Açıklamalar

## PHP etiketleri

PHP bir dosyayı işlerken, PHP kodunun yürütülme sınırlarını tanımlamak için `<?php` ve `?>` açma ve kapatma etiketlerini tanır. Bu etiketlerin dışındaki içerik, PHP ayrıştırıcısı tarafından göz ardı edilir ve PHP'nin çeşitli belge türlerine sorunsuz bir şekilde gömülmesini sağlar.

Uygun dizgeciklerin ayrılmasını sağlamak için `<?php` etiketinin hemen ardında bir boşluk karakteri (boşluk, sekme veya satır sonu) bulunmalıdır. Bu boşluğun bulunmaması sözdizimi hatasına neden olacaktır.

PHP ayrıca `<?php echo` için kısayol olan `<?=` kısa `echo` etiketi içerir.

Örnek 1 - PHP Açılış ve Kapanış Etiketleri

    1.  <?php echo 'XHTML veya XML belgelerde PHP kodu sunmak isterseniz,
                    bu etiketleri kullanın'; ?>

    2.  Kısa echo etiketi kullanabilirsiniz: <?= 'print this string' ?>.
        <?php echo 'print this string' ?> koduna eşdeğerdir.

    3.  <? echo 'bu kod kısa etiketler arasında olmakla birlikte sadece,'.
                'short_open_tag etkinse çalışır.'; ?>

PHP ayrıca kısa başlangıç etiketine de `<?` izin verir. Bu sadece, PHP --enable-short-tags yapılandırma seçeneği ile derlenerek veya php.ini yapılandırma dosyası yönergesi short_open_tag kullanılarak etkinleştirilebilir.

> Bilginize:

> Kısa etiketler iptal edilebileceğinden uyumluluk adına sadece normal etiketlerin (`<?php ?>` ve `<?= ?>`) kullanılması önerilir.

Bir dosya PHP kodu ile bitiyorsa, dosyanın sonunda PHP kapanış etiketini koymamak tercih edilir. Yazılımcıdan herhangi bir çıktı gönderme isteği gelmezse PHP betiğin bu noktasında çıktı tamponlamasını başlatacağından kapama etiketinden sonra istenmeyen etkilere neden olabilecek boşluk veya yeni satırların yanlışlıkla eklenmesi böylece engellenmiş olur.

Örnek 2 - PHP koduyla biten dosya

    <?php
    echo "Merhaba Dünya\n";

    // ... daha kod

    echo "İletişimin sonu\n";

    // PHP kapama etiketi olmadan betik burada biter

## HTML'den Kaçmak

Başlangıç ve bitiş etiketlerinin dışında kalan her şey PHP ayrıştırcısı tarafından gözardı edilerek PHP dosyalarının karışık içeriğe sahip olabilmesi sağlanır. Çoğu zaman, bu örnekte olduğu gibi PHP'nin HTML içine gömülmüş olduğunu göreceksiniz.

Örnek 1 - HTML içine PHP gömmek

    <p>Bu bölüm PHP tarafından gözardı edilecek ve tarayıcıda gösterilecektir.</p>
    <?php echo 'Bu bölüm PHP tarafından çözümlenecektir.'; ?>
    <p>Bu bölüm de PHP tarafından gözardı edilecek ve tarayıcıda gösterilecektir.</p>

Bu beklendiği gibi çalışır, çünkü PHP ayrıştırcısı `?>` kapanış etiketine rastlayınca (hemen ardından bir satır sonu karakteri gelmesi durumu hariç - bak: deyim ayırma) başka bir açılış etiketine rastlayıncaya kadar (etiketin koşullu bir ifadenin ortasında olması durumu hariç - bu durumda ayrıştırıcı neyin atlanacağına karar vermek için ifadenin sonucun saptamaya çalışacaktır) herşeyi çıktılamaya başlar. Aşağıdaki örneğe bakınız:

Yapıların koşullu kullanımı

Örnek 2 - Koşul kullanan gelişmiş önceleme

    <?php if ($ifade == true): ?>
      İfade doğruysa bu gösterilir.
    <?php else: ?>
      İfade doğru değilse bu gösterilir.
    <?php endif; ?>

Bu örnekte PHP, açılış/kapanış etiketlerinin dışında olsa bile koşulun karşılanmadığı blokları atlayacaktır, çünkü PHP yorumlayıcısı koşulun karşılanmadığı durumda koşulun içinde bulunan blokları atlar.

Büyük metin bloklarını görüntülemek istediğimizde PHP'yi çözümleme kipinden çıkartmak çoğu zaman tüm metni echo ya da print ile görüntülemekten daha verimlidir.

> Bilginize:

> PHP'yi XML ya da XHTML içine gömmek istiyorsanız standartlarla uyumlu kalabilmek için normal PHP `<?php ?>` etiketlerini kullanmalısınız.

## Deyim Ayırma

C ya da Perl'de olduğu gibi, PHP de deyimlerin birbirlerinden her bir deyimin sonuna konulacak noktalı virgülle ayrılmasını gerektirir. Bir PHP kod bloğunun sonunda yer alan kapanış etiketi kendinden önceki deyim için noktalı virgül işlevi görür; yani, bir PHP bloğunun son satırının sonuna noktalı virgül koymak zorunda değilsiniz. Kapanış etiketi aynı zamanda satır sonu karakterini de kendisi ekleyecektir.

Örnek 1 - Sondaki satır sonu karakterini kapsayan kapanış etiketini gösteren örnek

    Satırsonu karakteri yok
    <?= "Ama şimdi var" ?>

Yukarıdaki örneğin çıktısı:

    Satırsonu karakteri yok
    Ama şimdi var

Örnek 2 - PHP ayrıştırıcısına girme ve çıkma örnekleri

    <?php
        echo "Bu bir denemedir\n";
    ?>

    <?php echo "Bu bir denemedir\n" ?>

    <?php echo "Son kapanış etiketini koymadık\n";

> Bilginize:

> Dosya sonunda PHP kapanış etiketini kullanmak isteğe bağlıdır, hatta dosya sonlarında istem dışı boş satırlar oluşması gibi durumlarda include, require gibi işlevlerin kullanımında yararlı bile olabilir, dahası sonradan yanıta başlık eklemeye devam edebilirsiniz. Bu özellik ayrıca, çıktı tamponlama kullanıyorsanız ve betiğe include ile eklediğiniz dosyalar tarafından üretilen kısımların sonunda gereksiz boş satırların oluşmasını istemediğinizde de işe yarar.

## Açıklamalar

PHP, 'C', 'C++' ve Unix kabuk tarzı (Perl tarzı) açıklamaların hepsini destekler. Örnegin:

Örnek 1 - Açıklamalar

    <?php
        echo "Bu bir denemedir\n"; // Bu tek satırlık c++ tarzı açıklamadır
        /* Bu, C tarzı çok satırlı
           bir açıklamadır */
        echo "Bir deneme daha\n";
        echo "Bu da sonuncusu\n"; # Bu tek satırlık kabuk tarzı açıklamadır
    ?>

"Tek satırlık" bir açıklamanın etki alanı yalnızca satır sonuna ya da PHP kod bloğunun sonuna kadardır. Yani, `// ... ?>` ya da `# ... ?>` kullanımından sonra gelecek HTML kodu YAZDIRILACAKTIR: `?>` etiketi PHP kipinden çıkılmasına ve HTML kipine dönülmesini sağlar, `//` ya da `#` kullanımı bunu etkileyemez.

Örnek 2 - Tek satırlık açıklamalar

    <h1>Bu <?php # echo 'basit';?> bir örnektir.</h1>
    <p>Yukarıdaki başlık 'Bu bir örnektir' diye gösterilecektir.</p>

Bir 'C' tarzı açıklama ilk `*/` ile karşılaşıldığı noktada sona erer. 'C' tarzı açıklamaları iç içe kullanmamalısınız. Büyük miktarda kod bloğunu açıklama haline getirirken bu yanlış genellikle yapılır.

    <?php
     /*
        echo 'Bu bir denemedir'; /* Bu açıklama sorun çıkaracak. */
     */
    ?>

# Türler

## İçindekiler

- Giriş
- Tür Sistemi
- null
- bool
- int
- float
- string
- Sayısal Dizeler
- array
- object
- Sayılamalar
- resource
- Geriçağırımlar / Çağrılılabilirler
- mixed
- void
- never
- parent, self, static
- Singleton types
- iterable
- Tür bildirimleri
- Tür Dönüşümü

## Giriş

PHP'deki her ifadenin türü, değerine bağlı olarak aşağıdaki yerleşik türlerden biridir:

- null
- bool (mantıksal)
- int (tamsayı)
- float (gerçek sayı)
- string (dizge)
- array (dizi)
- object (nesne)
- callable (çağrılabilen)
- resource (özkaynak)

PHP dinamik olarak yazılan bir dildir, yani bir değişkenin türü çalışma anında belirleneceği için türü belirtmeye gerek olmadığı varsayılır. Bununla birlikte, tür bildirimlerini kullanarak dilin bazı yönlerini statik olarak yazmak mümkündür.

Türler, üzerlerinde gerçekleştirilebilecek işlem türlerini kısıtlar. Bununla birlikte, bir işlemde türünün desteklemediği bir ifade veya değişken kullanılırsa, PHP değerin türünü işlemi destekleyen türe dönüştürmeye çalışır. Bu süreç, değerin kullanıldığı bağlama bağlıdır. Daha fazla bilgi Tür Dönüşümü bölümünde bulunabilir.

İpucu

Farklı türdeki değerler arasında karşılaştırma örnekleri tür karşılaştırma tablolarında bulunabilir.

> Bilginize: Tür çarpıtma kullanarak bir ifadenin belirli bir türe göre değerlendirilmesini sağlamak mümkündür. Bir değişkenin türü ayrıca, settype() işlevi ile kullanıldığı bağlamda da değiştirilebilir.

Bir ifadenin değerini ve türünü denetlemek için var_dump() işlevi kullanılabilir. Bir ifadenin yalnızca türü öğrenilmek istenirse get_debug_type() işlevi kullanılabilir. Ancak, bir ifadenin belirli bir türde olup olmadığını saptamak için `is_tür` işlevleri kullanılmalıdır.

    <?php
    $a_bool = true;   // bool türünde
    $a_str  = "foo";  // string türünde
    $a_str2 = 'foo';  // string türünde
    $an_int = 12;     // int  türünde

    echo get_debug_type($a_bool), "\n";
    echo get_debug_type($a_str), "\n";

    // Değişken bir tamsayı ise değeri dört arttır
    if (is_int($an_int)) {
        $an_int += 4;
    }
    var_dump($an_int);

    // $a_bool bir dizge ise değeri çıktıla
    if (is_string($a_bool)) {
        echo "Dizge: $a_bool";
    }
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    bool
    string
    int(16)

> Bilginize: PHP 8.0.0 öncesinde, get_debug_type() kullanılamadığından, yerine gettype() kullanılabilir. Ancak, bu işlevin döndürdüğü bazı tür adları bu belgedekinden farklı olabilir. PHP tür sisteminin desteklediği farklı türler tür sistemi sayfasında bulunabilir.

## Tür Sistemi

PHP, davranışsal alt tür ilişkileri ile güçlendirilmiş sembolik bir tür sistemi kullanır. Alt türlerle ilişkiler derleme sırasında sınanırken türlerin doğrulanması çalışma anında dinamik olarak gerçekleştirilir.

PHP'nin tür sistemi, daha karmaşık türler oluşturmak için bir araya getirilebilecek çeşitli temel türleri destekler. Bu türlerden bazıları tür bildirimleri olarak yazılabilir.

### Temel türler

Bazı temel türler, dille sıkı bir şekilde bütünleşmiş yerleşik türler olup kullanıcı tanımlı türlerle yeniden türetilemez.

Temel türler:

- Yerleşik türler
  - Sayıl türler:
    - bool türü
    - int türü
    - float türü
    - string türü
  - array türü
  - object türü
  - resource türü
  - never türü
  - void türü
  - Göreli sınıf türleri: self, parent, static
  - Tekil türler
    - false
    - true
  - Birim türleri
    - null
- Kullanıcı tanımlı türler (genelde sınıf türleri olarak bilinir)
  - Arayüzler
  - Sınıflar
  - Sayılamalar
- callable türü

#### Sayıl türler

int, float, string veya bool türündeki değerler sayıl olarak kabul edilir.

#### Kullanıcı tanımlı türler

Özel türleri arayüzler, sınıflar ve sayılamalar ile tanımlamak mümkündür. Bunlar kullanıcı tanımlı türler veya sınıf türleri olarak kabul edilir. Örneğin, `Fil` adında bir sınıf tanımlanabilir, ardından `Fil` türündeki nesneler örneklenebilir ve bir işlev `Fil` türünde bir bağımsız değişken isteyebilir.

### Birleşim türleri

Temel türleri birleşik türler halinde birleştirmek mümkündür. PHP, türlerin aşağıdaki şekillerde birleştirilmesine izin verir:

- Sınıf türlerinin (arayüz ve sınıf isimlerinin) kesişimi.
- Tür birleşimleri.

#### Tür kesişimleri (& ile birleşim)

Tür kesişiminde, tek bir sınıf yerine birden çok sınıf türü bildirimine karşılık gelen değerler kabul edilir. Kesişimi oluşturan tekil türler & simgesi ile birleştirilir. Örneğin, `T`, `U` ve `V` türlerinden oluşan bir tür kesişimi `T&U&V` biçeminde yazılır.

#### Bileşik türler (| ile birleşim)

Bileşik tür (union), tek bir değer yerine birden fazla türde değer kabul eder. Bileşik türü oluşturan tekil türler `|` simgesi ile birleştirilir. Örneğin, `T`, `U` ve `V` türlerinden oluşan bir bileşik tür `T|U|V` biçeminde yazılır. Türlerden biri kesişim içeriyorsa, kesişimin yaylı ayraçlar arasına alınması gerekir: `T|(X&Y)`.

### Tür takma adları

PHP iki tür-takma-adı destekler: `object|resource|array|string|float|int|bool|null` karşılığı olarak mixed ve `Traversable|array` karşılığı olarak iterable.

> Bilginize: PHP kullanıcı tanımlı tür takma adlarını desteklemez.

## null

null PHP'nin yokluk türü olup olası tek değeri `null`'dur.

Tanımsızdır ve değişkenler unset() ile `null` değere çözümlenir.

### Sözdizimi

null türünde, harf büyüklüğüne duyarsız tek bir sabit vardır: `null`.

    <?php
    $var = NULL;
    ?>

### `null` türüne çarpıtım

Uyarı

Bu özelliğin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

`(unset) $var` kullanarak bir değişken null türüne çarpıtılırsa değişken kaldırılmaz fakat değersiz hale getirilmiş olur ve sadece `null` değer döndürür.

### Ayrıca Bakınız

- is_null()
- unset()

## bool

Yalnızca iki değer bool türünde olabilir ve bunlar `true` ve `false` (doğru ve yanlış) olup doğruluk değerleri adını alır.

### Sözdizimi

Bir bool sayılını belirtmek için `true` veya `false` sabiti kullanılır. Her ikisi de harf büyüklüğüne duyarsızdır.

    <?php
    $foo = True; // $foo değişkenine TRUE değeri atanır.
    ?>

Genelde, bool türünde bir değer döndüren bir işleç ifadesinin sonucu bir denetim yapısına aktarılır.

    <?php
    // == işleci, eşitliği sınar ve
    // bool türünde bir değer döndürür
    if ($eylem == "sürümü göster") {
        echo "Sürüm numarası 1.23'tür.";
    }

    // Bu gereksizdir çünkü aynı manada kullanılır
    if ($ayırıcı_göster == TRUE) {
        echo "<hr>\n";
    }

    // ... böylesi daha iyidir:
    if ($ayırıcı_göster) {
        echo "<hr>\n";
    }
    ?>

### `bool` türüne dönüşüm

Bir değeri doğrudan bool türüne dönüştürmek için `(bool)` çarpıtması kullanılabilir. Genelde bu gereksizdir, çünkü mantıksal bir bağlamda kullanılan bir değer otomatik olarak bool türünde bir değer olarak yorumlanır. Daha ayrıntılı bilgi için Tür Dönüşümü sayfasına bakılabilir.

Ayrıca, Tür Dönüşümü bölümüne de bakınız.

Aşağıdaki değerler bool türüne dönüşümde `false` olarak ele alınırlar:

- mantıksal `false` (kendisi)
- tamsayı `0` (sıfır)
- gerçel `0.0` ve `-0.0` (sıfır)
- boş dizge `""` ve dizgesel `"0"`
- hiç elemanı olmayan dizi
- tür olarak NULL (tanımsız değişkenler dahil)
- bool türüne dönüşmek için `(bool)` çarpıtmasını aşırı yükleyen dahili nesneler. Örneğin, SimpleXML nesneleri özniteliksiz boş elemanlardan oluşturulur.

Bunların dışında kalan tüm değerler `true` olarak ele alınır (resource türler ve `NAN` dahil).

Uyarı

`-1` ve sıfırdan farklı diğer değerler (pozitif veya negatif) `true` olarak ele alınır.

    <?php
    var_dump((bool) "");        // bool(false)
    var_dump((bool) "0");       // bool(false)
    var_dump((bool) 1);         // bool(true)
    var_dump((bool) -2);        // bool(true)
    var_dump((bool) "foo");     // bool(true)
    var_dump((bool) 2.3e5);     // bool(true)
    var_dump((bool) array(12)); // bool(true)
    var_dump((bool) array());   // bool(false)
    var_dump((bool) "false");   // bool(true)
    ?>

## int

Bir int türünde değer şu kümeden bir tamsayıdır: ℤ = {..., -2, -1, 0, 1, 2, ...}.

### Ayrıca Bakınız

- Kayan noktalı sayılar
- Keyfi ondalık hassasiyet / BCMath
- Keyfi uzunlukta tamsayı / GMP

### Sözdizimi

int türünde değerler onluk, sekizlik veya onaltılık tabanda belirtilebilirler. değil işleci negatif bir int belirtmekte kullanılabilir.

Sekizlik gösterimde sayıların önüne `0` (sıfır), onaltılık gösterimde `0x` ve ikil gösterimde `0b` getirilir. PHP 8.1.0 ve sonrasında sekizlik gösterim ayrıca, `0o` veya `0O` ile öncelenmiş de olabilir.

PHP 7.4.0'dan itibaren, tamsayı değişmezleri, değişmez değerlerin daha iyi okunabilirliği için rakamlar arasında alt çizgi (`_`) içerebilir. Bu alt çizgiler PHP'nin tarayıcısı tarafından kaldırılır.

Örnek 1 - Tamsayı değişmezler

    <?php
    $a = 1234; // onluk sayı
    $a = -123; // negatif sayı
    $a = 0123; // sekizlik sayı (onluk: 83)
    $a = 0o123; // sekizlik sayı (PHP 8.1.0 ve sonrası)
    $a = 0x1A; // onaltılık sayı (onluk: 26)
    $a = 0b11111111; // ikil sayı (onluk: 255)
    $a = 1_234.567; // onluk sayı (PHP 7.4.0 ve sonrası)
    ?>

PHP 8.1.0'dan itibaren, biçimsel olarak, int değişmezlerinin yapısı (evvelce, `0o` ve `0O` sekizlik öneklerine ve PHP 7.4.0'dan önce alt çizgilere izin verilmezdi):

    onluk     : [1-9][0-9]*(_[0-9]+)*
              | 0

    onaltılık : 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*

    sekizlik  : 0[oO]?[0-7]+(_[0-7]+)*

    ikil      : 0[bB][01]+(_[01]+)*

    tamsayı   : onluk
              | onaltılık
              | sekizlik
              | ikil

Bir int türün genişliği platforma göre değişir. 32 bitlik sistemlerde azami değer 2 milyon civarında iken 64 bitlik sistemlerde 9E18 civarındadır. PHP işaretsiz tamsayıları (C'deki unsigned) desteklemez. int türün genişliği `PHP_INT_SIZE` sabitine, olası en büyük değeri `PHP_INT_MAX` sabitine ve en küçük değeri ise `PHP_INT_MIN` sabitine atanmıştır.

### Tamsayılarda taşma

PHP, int türünde bir değerin bellekte int türüne ayrılan genişliğe sığmadığını saptarsa float türünde bir değer olarak ele alır ve bu durum yapılan bir işlem sırasında ortaya çıkmışsa işlemden dönen değer float türünde olur.

Örnek 2 - Tamsayı taşması

    <?php
    $büyük_sayı =  50000000000000000000;
    var_dump($büyük_sayı);           // float(5.0E+19)

    var_dump(PHP_INT_MAX + 1);       // 32-bit sistem: float(2147483648)
                                     // 64-bit sistem: float(9.2233720368548E+18)
    ?>

### Tamsayı Bölme

PHP'de sonucun int türünde elde edileceği bir bölme işleci mevcut değildir, bunu sağlamak için intdiv() işlevini kullanın. `1/2` işleminin sonucu float türünde `0.5` değeridir. Bu değer (int) ile çarpıtılarak sıfıra yuvarlamak suretiyle bir tamsayıya dönüştürülebilirse de round() işlevini kullanırsanız dönüşümün nasıl yapılacağını kendiniz belirleyebilirsiniz.

    <?php
    var_dump(25/7);         // float(3.5714285714286)
    var_dump((int) (25/7)); // int(3)
    var_dump(round(25/7));  // float(4)
    ?>

### `int` türüne dönüşüm

Bir değeri doğrudan int türüne dönüştürmek için `(int)` veya `(integer)` çarpıtmasını kullanabilirsiniz. Ancak, çoğu durumda türü çarpıtmak gerekmez, bir int değer gerektiren bir işlev veya denetim yapısı, değeri kendiliğinden int türüne dönüştürecektir. Ayrıca, bir değer int türüne intval() işleviyle de dönüştürülebilir.

Bir resource bir inte sayıya dönüştürülürse, sonuç, PHP tarafından çalışma anında özkaynağa atanan eşsiz özkaynak numarası olacaktır.

Ayrıca, Tür Dönüşümü bölümüne de bakınız.

#### `bool` türünden dönüşüm

`false`, `0`'a (sıfır); `true`, `1`'e (bir) dönüştürülür.

#### `float` türünden dönüşüm

float türünden int türüne dönüşümde sayı sıfıra yaklaştırılarak yuvarlanır. PHP 8.1.0 ve sonrasında, örtük dönüşümdeki hassasiyet kaybından dolayı işlemin önerilmediğini belirten bir uyarı çıktılanmaktadır.

    <?php

    function foo($value): int {
      return $value;
    }

    var_dump(foo(8.1)); // "Önerilmiyor: float 8.1 değerin int türüne örtük
    // olarak dönüştürülmesi hassasiyet kaybı oluşturduğundan PHP 8.1.0 ve
    // sonrasında önerilmemektedir.
    var_dump(foo(8.1)); // PHP 8.1.0 öncesinde 8
    var_dump(foo(8.0)); // Her iki durumda  8

    var_dump((int) 8.1);    // Her iki durumda  8
    var_dump(intval(8.1)); // Her iki durumda  8
    ?>

Dönüşüm sonucu int türüne ayrılan genişliğe (normalde 32 bitlik sistemlerde `+/- 2.15e+9 = 2^31`, 64 bitlik sistemlerde ise `+/- 9.22e+18 = 2^63`) sığmıyorsa, float türün hassasiyeti int türünde tam bir sonuç vermeyeceğinden sonuç tanımsızdır. Bu durumda ne bir uyarı ne de bir bilgi verilir!

> Bilginize:

> int türüne çarpıtıldığında `NaN`, `Inf` ve `-Inf` daima sıfır olacaktır.

Uyarı

Ondalık kısmı int türüne asla dönüştürmeyin, yoksa beklenmedik sonuçlar elde edebilirsiniz.

    <?php
    echo (int) ( (0.1+0.7) * 10 ); // çıktısı: 7!
    ?>

Ayrıca bakınız: Kayan noktalı sayılarda hassasiyet uyarısı.

#### string türünden dönüşüm

Dizge sayısal veya öncü sayısal ise, karşılık gelen tamsayı değerine çözümlenir, aksi takdirde sıfıra (`0`) dönüştürülür.

#### NULL türünden dönüşüm

`null` daima sıfıra dönüşür (`0`).

#### Diğer türlerden dönüşüm

Dikkat

Diğer türlerden int türüne dönüşümün nasıl davranacağı henüz kesin olarak tanımlanmamıştır. Gözlemlediğiniz bir davranışın doğruluğuna güvenmeyiniz, ileride bu davranış hiçbir bilgi verilmeden değiştirilebilir.

## float

Gerçek sayılar (veya kayan noktalı sayılar) şu sözdizimleri ile belirtilebilir:

    <?php
    $a = 1.234;
    $b = 1.2e3;
    $c = 7E-10;
    $d = 1_234.567; // PHP 7.4.0 ve sonrası
    ?>

Biçimsel olarak PHP 7.4.0 ve sonrasında (öncesinde altçizgilere izin verilmezdi):

    LNUM          [0-9]+(_[0-9]+)*
    DNUM          ({LNUM}?"."{LNUM}) | ({LNUM}"."{LNUM}?)
    EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})

Bir gerçek sayının bellekte kapladığı genişlik platforma göre değişmekteyse de kabaca 14 hanelik bir hassasiyetle 1.8e308'lik olası bir en büyük değer (64 bitlik IEEE biçemi) hepsi için sağlanır.

Uyarı

# Kayan nokta hassasiyeti

Kayan noktalı sayılar sınırlı bir hassasiyete sahiptir. Sisteme bağımlı olmakla birlikte PHP normalde (1.11e-16'lık bir yuvarlamadan dolayı görece en büyük hatayı verecek olan) IEEE 754 çift hassasiyetli biçimi kullanır. 4 temel işlemden daha karmaşık aritmetik işlemler daha büyük hatalar verebilir, dolayısıyla işlemler karmaşık hale gelmeye başlayınca hatanın açıklanması bir önkabul olarak ele alınmalıdır.

Ek olarak, `0.1` veya `0.7` gibi 10 tabanında kayan noktalı sayılar olarak tamamiyle gösterilebilen gerçel sayılar, 2 tabanında kayan noktalı sayılar olarak tamamiyle gösterilemezler. Bu bakımdan, az da olsa bir kayıp olmaksızın dahili ikil karşılıklarına dönüştürülemezler. Bunun şöyle bir sonucu olur: örneğin, `floor((0.1+0.7)*10)` işlevinden beklendiği gibi `8` değil, `7` döner; bunun sebebi dahili gösterimin aslında `7.9999999999999991118...` gibi bir değer olmasıdır.

Bu bakımdan, son ondalık hanesine bakarak sonucun ne olacağına karar verilemez, bu bakımdan kayan noktalı sayılar arasında asla eşitlik karşılaştırmaları yapılmaz. Eğer daha yüksek hassasiyet isteniyorsa keyfi hassasiyetli matematik işlevleri ve gmp işlevleri kullanılabilir.

"Basit" bir açıklama için » kayan noktalı sayılar kılavuzuna bakınız.

### `float` türüne dönüşüm

#### Dizelerden

Dize sayısal veya öncü sayısal ise, karşılık gelen float değere çözümlenir, aksi takdirde sıfıra (`0`) dönüştürülür.

#### Diğer türlerden

Diğer türlerdeki değerler için, dönüşüm, değerin önce int'e ardından float'a dönüştürülmesiyle gerçekleştirilir. Daha fazla bilgi için bkz. int türüne dönüşüm.

> Bilginize:

> Belirli türlerin int türüne dönüştürülürken tanımlanmamış davranışları olup, bu ayrıca float türüne dönüştürülürken de geçerlidir.

### Kayan noktalı sayıların karşılaştırılması

Yukarıdaki uyarıda kısaca değinildiği gibi kayan noktalı sayılar arasında eşitlik karşılaştırmaları, bunların dahili gösterimlerinden dolayı biraz sorunludur. Bununla birlikte, bu sınırlamaların aşılmasını ve kayan noktalı sayılar arasında karşılaştırma yapılmasını sağlayan yollar vardır.

Kayan noktalı değerlerin eşitliğini sınamak için yuvarlamadan dolayı ortaya çıkan göreli hatanın bir üst sınırı kullanılır. Bu değer makine epsilonu veya yuvarlama birimi olarak bilinir ve hesaplamalardaki kabul edilebilir en küçük farktır.

$a ve $b 5 haneli hassasiyetle eşittir.

    <?php
    $a = 1.23456789;
    $b = 1.23456780;
    $epsilon = 0.00001;

    if(abs($a-$b) < $epsilon) {
        echo "doğru";
    }
    ?>

### NaN

Bazı sayısal işlemler `NAN` sabiti ile gösterilen bir değerle sonuçlanabilir. Bu sonuç, kayan noktalı hesaplamalarda tanımlanamayan veya gösterilemeyen bir değeri gösterir. Bu değerin, kendisi dahil herhangi bir değerle gevşek ya da sıkı bir karşılaştırması `false` sonucuna sebep olur.

`NAN` farklı değerdeki herhangi bir sayıyı temsil ettiğinden kendisi dahil fakat `true` hariç, başka bir değerle karşılaştırılmamalı, bunun yerine değer is_nan() ile sınanmalıdır.

## string

Bir dize string türünde bir sayıl değer olup bir dizi tek baytlık karakterden oluşur. Yani, olası karakter sayısı 256'dan ibarettir. Bu yüzden PHP Unicode için yerleşik desteğe sahip olamıyor. Dize türünün ayrıntıları belgesine bakınız.

> Bilginize: 32 bitlik derlemelerde, dize uzunluğu en fazla 2GB (2147483647 bayt) olabilir.

### Sözdizimi

string türünde bir sayıl dört şekilde belirtilebilir:

- tek tırnaklı dize
- çift tırnaklı dize
- yorumlu metin (heredoc)
- yorumsuz metin (nowdoc)

#### Tek tırnaklı dizeler

Bir dizeyi belirtmenin en basit yolu dizeyi tek tırnak (`'`) imlerinin arasına almaktır.

Tek tırnaklı bir dize içinde tek tırnağı sayıl değeriyle kullanmak isterseniz önüne bir tersbölü imi getirmelisiniz (`\`). Bir tersbölü imini sayıl değeriyle kullanmak isterseniz onun da önüne bir tersbölü imi getirmelisiniz (`\\`). Tersbölü imini bunlardan başka bir karakterin önünde kullanırsanız, tersbölü imi karakterle birlikte basılır. `\r` veya `\n` gibi özel anlamı olan öncelemeler özel anlamı yoksayılarak olduğu gibi basılır.

> Bilginize: çift tırnak ve yorumlu metin sözdizimlerinin aksine, değişkenler ve özel karakterlerin öncelemleri tek tırnaklı dizelerin içinde kullanıldıklarında yorumlanmazlar.

    <?php
    echo 'Bu basit bir dizedir';

    echo 'Dizgelerin içinde satırsonu karakterlerini
    tıpkı buradaki gibi
    kullanabilirsiniz';

    // Çıktısı: Arnold dedi ki: "I'll be back"
    echo 'Arnold dedi ki: "I\'ll be back"';

    // Çıktısı: You deleted C:\*.*?
    echo 'You deleted C:\\*.*?';

    // Çıktısı: You deleted C:\*.*?
    echo 'You deleted C:\*.*?';

    // Çıktısı: This will not expand: \n a newline
    echo 'This will not expand: \n a newline';

    // Çıktısı: Variables do not $expand $either
    echo 'Variables do not $expand $either';
    ?>

#### Çift tırnaklı dizeler

Eğer bir dize çift tırnak (") içine alınmışsa PHP, aşağıdaki özel karakter öncelemlerini yorumlayacaktır:

Tersbölü ile öncelenmiş karakterler
Öncelem | Anlamı
--- | ---
`\n` | satırsonu (LF veya ASCII 10 (0x0A))
`\r` | satırbaşı (CR veya ASCII 13 (0x0D))
`\t` | yatay sekme (HT veya ASCII 9 (0x09))
`\v` | düşey sekme (VT veya ASCII 11 (0x0B))
`\e` | escape (ESC veya ASCII 27 (0x1B)
`\f` | sayfa ileri (FF veya ASCII 12 (0x0C))
`\\` | tersbölü
`\$` | dolar imi
`\"` | çift tırnak
`\[0-7]{1,3}` | Sekizlik: Bu düzenli ifade ile eşleşen dizilim, karakterin sekizlik gösterimi (örn, `"\101" === "A"`) olup bir bayta sığmak için sessizce taşar (örn, `"\400" === "\000"`).
`\x[0-9A-Fa-f]{1,2}` | Onaltılık: Bu düzenli ifade ile eşleşen dizilim, karakterin onaltılık gösterimidir (örn, `"\x41" === "A"`).
`\u{[0-9A-Fa-f]+}` | Unicode: Bu düzenli ifade ile eşleşen dizilim bir Unicode karakter kodu olup, dizeye karakter kodunun UTF-8 gösterimini çıktılar. Kod kaşlı ayraçlarla sarmalanmalıdır (örn, `"\u{41}" === "A"`).

Tersbölü imini bunlardan başka bir karakterin önünde kullanırsanız, tersbölü imi karakterle birlikte basılır.

Çift tırnaklı dizelerin en önemli özelliği içerdiği değişkenlerin yorumlanmasıdır. Bu konuda daha ayrıntılı bilgi edinmek için Değişken çözümleme bölümüne bakınız.

#### Yorumlu metinler

Bir dizenin sınırlarını belirlemenin üçüncü yolu, yorumlu metin sözdizimidir. Bir yorumlu metin daima `<<<` karakterleri ile başlar ve hemen ardından bir betimleyici ve bir satırsonu karakteri gelir. Asıl dize satırsonu karakterinden sonra yer alır. Dizgenin sonunu belirtmek üzere dizenin sonuna, baştaki betimleyici konur.

Kapanış betimleyicisinin dizeden sonraki satırın başında olması gerekmez. Boşluk veya sekme karakterleriyle girintilenebilir. Bu durumda girinti miktarı dizedeki tüm satırlardan ayıklanır. PHP 7.3.0 öncesinde kapanış betimleyicisinin satırın başında olması gerekirdi.

Ayrıca, betimleyici PHP'deki diğer isimlere uygulanan kurallara uygun olmalıdır: Sadece bir harfle veya alt çizgi imi ile başlayabilir; sadece harfler, rakamlar veya alt çizgi imleri içerebilir.

Örnek 1 - PHP 7.3.0 ve sonrası için Yorumlu Metin örneği

    <?php
    // girintisiz
    echo <<<END
          a
         b
        c
    \n
    END;

    // 4 boşluk girintili
    echo <<<END
          a
         b
        c
        END;

Yukarıdaki örneğin PHP 7.3 çıktısı:

          a
         b
        c

      a
     b
    c

Kapanış betimleyicisi, dizedeki tüm satırlardan daha uzun girintilenmişse ParseError istisnası yavrulanır:

Örnek 2 - Kapanış betimleyicisi, dizedeki tüm satırlardan daha uzun girintilenmemeli

    <?php
    echo <<<END
      a
     b
    c
       END;

Yukarıdaki örneğin PHP 7.3 çıktısı:

    PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4

Kapanış betimleyicisi ve metin girintilenirken sekmeler kullanılabilir, ancak sekmeler ve boşluklar birlikte kullanılmamalıdır. Böyle bir durumda ParseError istisnası yavrulanır. Girinti için sekmeleri ve boşlukları karıştırmak okunabilirliğe zararlı olduğundan bu kısıtlamaya gidilmiştir.

Örnek 3 - Kapanış betimleyicisin girintilenirken sekmeler ve boşluklar birlikte kullanılmamalı

    <?php
    // Aşağıdaki kod çalışmaz.

    // Metin boşluklarla kapanış betimleyici sekmelerle girintilenmiş
    {
           echo <<<END
            a
                   END;
    }

    // Metinde boşluk ve sekmelerin karışık kullanımı
    {
        echo <<<END
           a
         END;
    }

    // Kapanış betimleyicide boşluk ve sekmelerin karışık kullanımı
    {
           echo <<<END
                     a
                    END;
    }

Yukarıdaki örneğin PHP 7.3 çıktısı:

    PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8

Kapanış betimleyicisinin noktalı virgül ve satırsonu ile sonlandırılması gerekmez. Örneğin PHP 7.3.0 ve sonrasında aşağıdaki gibi bir kod çalışır:

Örnek 4 - Kapanış betimleyicisinden sonra devam eden ifade

    <?php
    $values = [<<<END
    a
      b
        c
    END, 'd e f'];
    var_dump($values);

Yukarıdaki örneğin PHP 7.3 çıktısı:

    array(2) {
      [0] =>
      string(11) "a
      b
        c"
      [1] =>
      string(5) "d e f"
    }

Uyarı

Kapanış betimleyicisi satırın hemen başındaysa başka bir sözcüğün parçası olup olmadığında bakılmaksızın kapanış betimleyici olarak ele alınır ve ParseError istisnasına sebep olur.

Örnek 5 - Metin içindeki kapanış betimleyici dizesi ParseError yavrulatır

    <?php
    $values = [<<<END
    a
    b
    END ING
    END, 'd e f'];

Yukarıdaki örneğin PHP 7.3 çıktısı:

    PHP Parse error:  syntax error, unexpected identifier "ING", expecting "]" in example.php on line 6

Bu sorundan kaçınmak için basit bir kurala uymak yeterlidir: betimleyiciyi metin gövdesi içinde görünenlerden seçme..

Uyarı

PHP 7.3.0 öncesinde, kapanış betimleyicisinin bulunduğu satırda betimleyicinin hemen ardına konan muhtemel bir noktalı virgül (`;`) dışında hiçbir karakter bulunmaması çok önemli olup buna özellikle dikkat etmelisiniz. Yani, betimleyici özellikle girintilenmemeli; noktalı virgülden önce ve sonra herhangi bir boşluk karakteri bulunmamalıdır. Ayrıca, kapanış betimleyicisinden hemen önce gelen karakterin yerel işletim sistemine özgü satırsonu karakteri olması çok önemlidir. Bu karakter Unix ve macOS için `\n`'dir. Kapanış betimleyicisinden (ve olası noktalı virgül karakterinden) sonraki karakter de böyle bir satırsonu karakteri olmalıdır.

Eğer bu kurallara uyulmaz ve kapanış betimleyicisinin etrafı temiz tutulmazsa kapanış betimleyicisi algılanamayacağından PHP kapanış betimleyicisini aramaya devam edecektir. Eğer dosyanın sonuna kadar uygun bir kapanış betimleyicisi bulunamazsa son satırda bir çözümleme hatası oluşacaktır.

Yorumlu metinler sınıf özelliklerini ilklendirmek için kullanılamazlar. PHP 5.3'ten beri bu sınırlama sadece değişken içeren yorumlu metinler için geçerlidir. Bunun yerine yorumsuz metinler kullanılabilir.

Örnek 6 - PHP 7.3.0 öncesi için geçersiz örnek

    <?php
    class foo {
        public $bar = <<<EOT
    bar
        EOT;
    }
    // Betimleyici girintilenmez
    ?>

Örnek 7 - PHP 7.3.0 öncesi için bile geçerli örnek

    <?php
    class foo {
        public $bar = <<<EOT
    bar
    EOT;
    }
    ?>

Değişken içeren yorumlu metinler sınıf özelliklerini ilklendirmek için kullanılamaz.

Yorumlu metinler tıpkı çift tırnaklı dizeler gibi davranırlar. Yorumlu metin çift tırnaklar arasına alınmaz ve metin içindeki çift tırnak imlerinin tersbölü ile öncelenmesi gerekmez, ancak yukarıda çift tırnaklı dizeler için belirtilen öncelem kodları kullanılabilir. Değişkenler yorumlanır, fakat yorumlanan metin içinde yer alan karmaşık değişkenler ifade edilirken dizelerde dikkate alınması gerekenler yorumlu metinlerde de dikkate alınmalıdır.

Örnek 8 - Yorumlu metin örneği

    <?php
    $str = <<<EOD
    Yorumlu metin sözdizimi
    kullanılarak çok sayıda
    satıra bölünmüş dize örneği.
    EOD;

    /* Değişkenlerin de kullanıldığı daha karmaşık bir örnek */
    class foo
    {
        var $foo;
        var $bar;

        function __construct()
        {
            $this->foo = 'Foo';
            $this->bar = array('Bar1', 'Bar2', 'Bar3');
        }
    }

    $foo = new foo();
    $name = 'Kimimben';

    echo <<<EOT
    Adım "$name" ve işim $foo->foo basmak.
    Şimdi {$foo->bar[1]} basıyorum.
    Bu büyük 'A' basmalı: \x41\n
    EOT;
    ?>

Yukarıdaki örneğin çıktısı:

    Adım "Kimimben" ve işim Foo basmak.
    Şimdi Bar2 basıyorum.
    Bu büyük 'A' basmalı: A

Ayrıca işlev bağımsız değişkeninde veri aktarırken de yorumlu metin kullanılabilir:

Örnek 9 - Bağımsız değişkenlerde yorumlu metin kullanımı

    <?php
    var_dump(array(<<<EOD
    foobar!
    EOD
    ));
    ?>

Statik değişkenleri ve sınıf özelliklerini veya sabitlerini yorumlu metin sözdizimini kullanarak ilklendirmek mümkündür:

Örnek 10 - Statik değer olarak yorumlu metin kullanımı

    <?php
    // Statik değişkenler
    function foo()
    {
      static $bar = <<<LABEL
    Burada  hiçbir şey yok...
    LABEL;
    }

    // Sınıf özellikleri ve sabitleri
    class foo
    {
      const BAR = <<<FOOBAR
    Sınıf sabiti örneği
    FOOBAR;

      public $baz = <<<FOOBAR
    Özellik örneği
    FOOBAR;
    }
    ?>

Yorumlu metinlerin açılış betimleyicisi seçimlik olarak çift tırnaklarla kapatılabilir:

Örnek 11 - Yorumlu metin bildiriminde çift tırnak kullanımı

    <?php
    echo <<<"TIRNAKLI"
    Merhaba Dünya!
    TIRNAKLI;
    ?>

#### Yorumsuz metinler

Yorumlu metinlerin çift tırnaklı dizelere karşılık gelmesi gibi yorumsuz metinler de tek tırnaklı dizelere karşılık gelir. Yorumsuz metinler de yorumlular gibi belirtilir ama, yorumsuz metin içinde çözümleme yapılmaz. Yorumsuz metinler, PHP kodlarını veya büyük metin bloklarını herhangi bir önlem almaksızın içine yerleştirmek için elverişlidirler. Belirtilen metin bloğunun çözümlenmemesinden dolayı SGML'nin `<![CDATA[ ]]>` oluşumu ile benzer özelliklere sahiptir.

Yorumsuz metin de yorumlu metindeki `<<<` dizesini kullanır fakat betimleyicisi tek tırnak içine alınır; yani, şuna benzer: `<<<'EOT'`. Yorumlu metin için geçerli tüm diğer kurallar yorumsuz metin için de geçerlidir; özellikle de kapanış betimleyici ile ilgili olanlar.

Örnek 12 - Yorumsuz metin örneği

    <?php
    $str = <<<'EOD'
    Yorumlu metin sözdizimi kullanılarak çok sayıda satıra bölünmüş
    dize örneği. Tersbölüler daima birebir ele alınır,
    örn, \\ and \'
    EOD;

Yukarıdaki örneğin çıktısı:

    Yorumlu metin sözdizimi kullanılarak çok sayıda satıra bölünmüş
    dize örneği. Tersbölüler daima birebir ele alınır,
    örn, \\ and \'

Örnek 13 - Değişkenli yorumsuz metin örneği

    <?php
    class foo
    {
        public $foo;
        public $bar;

        function __construct()
        {
            $this->foo = 'Foo';
            $this->bar = array('Bar1', 'Bar2', 'Bar3');
        }
    }

    $foo = new foo();
    $name = 'Kimimben';

    echo <<<'EOT'
    İsmim "$name" ve işim $foo->foo basmak.
    Artık {$foo->bar[1]} basıyorum.
    Bu büyük 'A' basmalı: \x41
    EOT;
    ?>

Yukarıdaki örneğin çıktısı:

    İsmim "$name" ve işim $foo->foo basmak.
    Artık {$foo->bar[1]} basıyorum.
    Bu büyük 'A' basmalı: \x41

Örnek 14 - Statik veri örneği

    <?php
    class foo {
        public $bar = <<<'EOT'
    bar
    EOT;
    }
    ?>

#### Değişken çözümleme

Bir dize çift tırnaklar arasında veya bir yorumlu metin olarak belirtilmişse içindeki değişkenler çözümlenir.

İki sözdizimi türü vardır: Biri basit, diğeri karmaşık. Basit sözdizimi en çok kullanılanı ve elverişli olanıdır; bir değişken, bir dizi değeri veya bir nesne özelliğini bir dize içinde en az çabayla kullanmayı sağlar.

Karmaşık sözdizimi ifadeyi sarmalayan kaşlı ayraçlar biçiminde kendini gösterir.

##### Basit Sözdizimi

Çözümleyici, bir dolar imine (`$`) rastlandığında, geçerli bir değişken ismi oluşturmak için alabildiği bütün dizecikleri açgözlülükle toplar. Değişken isminin kaşlı ayraçlar arasına alınması ismin sonunun açıkça belirtilmesini sağlar.

    <?php
    $juice = "apple";

    echo "He drank some $juice juice.".PHP_EOL;

    // "s" değişken ismi olarak geçerli karakterdir fakat, $juice değişkendir.
    echo "He drank some juice made of $juices.";

    // Kaşlı ayraçların içine alınarak değişken isminin bitimi açıkça belirtilmiş
    echo "He drank some juice made of ${juice}s.";
    ?>

Yukarıdaki örneğin çıktısı:

    He drank some apple juice.
    He drank some juice made of .
    He drank some juice made of apples.

Bir dizi indisi veya bir nesne özelliği de benzer şekilde çözümlenebilir. Dizi indislerinde indis sonunu, kapayan köşeli ayraç (`]`) belirler. Aynı kural, basit değişkenler olarak nesne özelliklerine de uygulanır.

Örnek 15 - Basit sözdizimi örneği

    <?php
    $juices = array("apple", "orange", "koolaid1" => "purple");

    echo "He drank some $juices[0] juice.".PHP_EOL;
    echo "He drank some $juices[1] juice.".PHP_EOL;
    echo "He drank some $juices[koolaid1] juice.".PHP_EOL;

    class people {
        public $john = "John Smith";
        public $jane = "Jane Smith";
        public $robert = "Robert Paulsen";

        public $smith = "Smith";
    }
    $people = new people();

    echo "$people->john drank some $juices[0] juice.".PHP_EOL;
    echo "$people->john then said hello to $people->jane.".PHP_EOL;
    echo "$people->john's wife greeted $people->robert.".PHP_EOL;
    echo "$people->robert greeted the two $people->smiths."; // Won't work
    ?>

Yukarıdaki örneğin çıktısı:

    He drank some apple juice.
    He drank some orange juice.
    He drank some purple juice.
    John Smith drank some apple juice.
    John Smith then said hello to Jane Smith.
    John Smith's wife greeted Robert Paulsen.
    Robert Paulsen greeted the two .

PHP 7.1.0 ve sonrasında negatif sayısal indisler desteklenir.

Örnek 16 - Negatif sayısal indisler

    <?php
    $string = 'string';
    echo "The character at index -2 is $string[-2].", PHP_EOL;
    $string[-3] = 'o';
    echo "Changing the character at index -3 to o gives $string.", PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    The character at index -2 is n.
    Changing the character at index -3 to o gives strong.

Bunlardan daha karmaşık herşey için karmaşık sözdizimini kullanmalısınız.

##### Karmaşık (kaşlı ayraçlı) sözdizimi

Buna karmaşık denmesinin sebebi sözdiziminin karmaşıklığı değil, karmaşık ifadelerin kullanımını mümkün kılmasıdır.

Herhangi bir sayıl değer, dizi elemanı veya nesne özelliği bir dize içinde bu sözdizimi ile yer alabilir. İfade dize dışındaki gösterimiyle yazılıp `{` ve `}` arasına alınır. `{` öncelenemeyeceğinden bu sözdizimi sadece `$` iminin `{` iminin hemen ardında yer aldığı durumlarda tanınır. `{\$` kullanımı `{$` imlerinin kendilerinin alınmasıyla sonuçlanır. Bazı örnekler:

    <?php
    // Tüm hataları görelim
    error_reporting(E_ALL);

    $şahane = 'harika';

    // Çalışmaz, çıktısı: Bu çok { harika}
    echo "Bu çok { $şahane}";

    // Çalışır, çıktısı: Bu çok harika
    echo "Bu çok {$şahane}";

    // Çalışır
    echo "Bu karenin bir kenarı {$square->width}00 santimetre uzunluktadır.";

    // Çalışır, tırnaklı anahtarlar sadece kaşlı ayraç sözdizimi kullanılarak çalışır
    echo "Bu çalışır: {$arr['key']}";

    // Çalışır
    echo "Bu çalışır: {$arr[4][3]}";

    // $foo[bar] bir dize dışında neden yanlışsa bu da o yüzden yanlıştır.
    // PHP önce foo adında bir sabit arar, bulamazsa hata oluşur.
    // Sabit bulunursa, değeri (foo'nun kendisi değil) dizi indisinde kullanılır.
    echo "Bu yanlış: {$arr[foo][3]}";

    // Çalışır. Çok boyutlu dizileri dizelerin içinde kullanılırken,
    // dizileri daima kaşlı ayraçlar arasına alın.
    echo "Bu çalışır: {$arr['foo'][3]}";

    // Çalışır.
    echo "Bu çalışır: " . $arr['foo'][3];

    echo "Bu da çalışır: {$obj->values[3]->name}";

    echo "$name adlı değişkenin değeri: {${$name}}";

    echo "Adı getName() işlevinin dönüş değeri olan değişkenin değeri: {${getName()}}";

    echo "Adı \$object->getName() yönteminin dönüş değeri olan değişkenin değeri: {${$object->getName()}}";

    // Çalışmaz, çıktısı: This is the return value of getName(): {getName()}
    echo "This is the return value of getName(): {getName()}";

    // Çalışmaz, çıktısı: C:\folder\{harika}.txt
    echo "C:\folder\{$şahane}.txt"
    // Çalışır, çıktısı: C:\folder\harika.txt
    echo "C:\\folder\\{$şahane}.txt"
    ?>

Bu sözdizimini kullanan dizeler içindeki değişkenler üzerinden de sınıf özelliklerine erişmek mümkündür.

    <?php
    class foo {
        var $bar = 'I am bar.';
    }

    $foo = new foo();
    $bar = 'bar';
    $baz = array('foo', 'bar', 'baz', 'quux');
    echo "{$foo->$bar}\n";
    echo "{$foo->{$baz[1]}}\n";
    ?>

Yukarıdaki örneğin çıktısı:

     I am bar.
     I am bar.

> Bilginize:

> `{$}` içindeki işlev ve yöntem çağrılarından, statik sınıf değişkenlerinden ve sınıf sabitlerinden erişilen değer, dizenin tanımlandığı etki alanındaki bir değişkenin ismi olarak yorumlanır. Kaşlı ayraçların tek başına kullanımı (`{}`), statik sınıf değişkenlerinin veya sınıf sabitlerinin değerlerine veya işlev ve yöntemlerin dönüş değerlerine erişim için kullanılmaz.

    <?php
    // Tüm hatalar gösterilsin.
    error_reporting(E_ALL);

    class beers {
        const softdrink = 'rootbeer';
        public static $ale = 'ipa';
    }

    $rootbeer = 'A & W';
    $ipa = 'Alexander Keith\'s';

    // Bu çalışır; çıktısı: I'd like an A & W
    echo "I'd like an {${beers::softdrink}}\n";

    // Bu da çalışır; çıktısı: I'd like an Alexander Keith's
    echo "I'd like an {${beers::$ale}}\n";
    ?>

#### Dizge erişimi ve karaktere göre değişiklik

Dizgelerin içindeki karakterlere, dizilerin köşeli ayraçları arasında karakterin dizinin başlangıcından itibaren (ilk karakterin indisi sıfır olmak üzere) kaçıncı karakter olduğu belirtilerek ($dize[42] gibi) erişilebilir veya o karakterde değişiklik yapılabilir. Dizgeler bu nedenle bir karakter dizisi olarak düşünülür. 1 karakterden fazlasını elde etmek veya yer değiştirmek isterseniz substr() ve substr_replace() işlevlerini kullanabilirsiniz.

> Bilginize: PHP 7.1.0 ve sonrasında, negatif dize başlangıçları da desteklenmektedir. Öncesinde, bunların okunması boş bir dizeyle ve `E_NOTICE` çıktılanmasıyla, yazılması ise dizenin olduğu gibi bırakılması ve `E_WARNING` çıktılanması ile sonuçlanırdı.

> Bilginize: PHP 8.0.0 öncesinde, dizge karakterlerine ayrıca $str{42} biçeminde kaşlı ayraçlar kullanılarak da erişilebiliyordu. Bu tür kaşlı ayraç kullanımı PHP 7.4.0 itibariyle önerilmemekte olup PHP 8.0.0 ve sonrasında desteklenmemektedir.

Uyarı

Karakter indisi olarak dizenin uzunluğundan büyük bir değer belirtmek, dizenin sonuna boşlukların eklenmesine sebep olur. Tamsayı olmayan indis değerleri tamsayıya dönüştürülür. Kuraldışı indis belirtimi `E_WARNING`'e sebep olur. Atanmış bir dizenin sadece ilk karakteri kullanılır. PHP 7.1.0 ve sonrasında, boş dize ataması ölümcül hata ile sonuçlanır. Evvelce, bir NULL bayt atanırdı.

Uyarı

Dahili olarak, PHP dizeleri bayt dizileridir. Sonuç olarak, dizi ayraçları kullanarak bir dizeye erişmek ve değişklik yapmak, çok baytlı gösterimde güvenli değildir. Bu işlem dizelere sadece ASCII gibi tek baytlık kodlamalarda yapılmalıdır.

> Bilginize: PHP 7.1.0 ve sonrasında, boş dize üzerinde boş indis işleci kullanımı ölümcül hataya yol açar. Evvelce, boş dize sessizce bir diziye dönüştürülürdü.

Örnek 17 - Bazı dize örnekleri

    <?php
    // Dizgenin ilk karakterini alalım
    $str = 'This is a test.';
    $first = $str[0];

    // Dizgenin üçüncü karakterini alalım
    $third = $str[2];

    // Dizgenin son karakterini alalım
    $str = 'This is still a test.';
    $last = $str[strlen($str)-1];

    // Dizgenin son karakterini değiştirelim
    $str = 'Look at the sea';
    $str[strlen($str)-1] = 'e';

    ?>

Dizi başlangıçları ya tamsayı ya da tamsayı benzeri dize olmalıdır, aksi takdirde bir uyarı yavrulanır.

Örnek 18 - Geçersiz dize başlangıçları örneği

    <?php
    $str = 'abc';

    var_dump($str['1']);
    var_dump(isset($str['1']));

    var_dump($str['1.0']);
    var_dump(isset($str['1.0']));

    var_dump($str['x']);
    var_dump(isset($str['x']));

    var_dump($str['1x']);
    var_dump(isset($str['1x']));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "b"
    bool(true)

    Warning: Illegal string offset '1.0' in /tmp/t.php on line 7
    string(1) "b"
    bool(false)

    Warning: Illegal string offset 'x' in /tmp/t.php on line 9
    string(1) "a"
    bool(false)
    string(1) "b"
    bool(false)

> Bilginize:

> Dize değişmezleri içindeki karakterlere `[]` veya `{}` kullanılarak erişilebilir.

> Bilginize:

> `{}` sözdizimini kullanarak dize değişmezleri içindeki karakterlere erişim PHP 7.4'te kullanımdan kaldırılmıştır. PHP 8.0'da ise tamemen kaldırılmıştır.

### Kullanışlı işlevler ve işleçler

Dizgeler '.' (nokta) işleci kullanılarak ardarda eklenebilir. '+' (toplama) işlecinin bu amaçla kullanımının yararsız oluşuna dikkat ediniz. Daha ayrıntılı bilgi edinmek için Dizge İşleçleri belgesine bakınız.

Dizgelerde değişiklik yapmak için çok sayıda yararlı işlev mevcuttur.

Genel işlevler için Dize İşlevlerine, ileri düzey bul ve değiştir işlevselliği için Perl uyumlu düzenli ifade işlevlerine bakınız.

Ayrıca, URL dizeleri için işlevler ve dizeleri şifrelemek veya şifrelerini çözmek için Sodium ve Hash işlevleri vardır.

Son olarak, karakter türü işlevlerine de bakabilirsiniz.

### Dizgeye dönüşüm

Bir değer bir dizeye `(string)` tür çarpıtması veya strval() işleviyle dönüştürülür. Bir dizenin gerekli olduğu ifade bağlamlarında dizeye dönüşüm otomatik olarak gerçekleşir. Bu genellikle, echo veya print işlevleri kullanılırken veya bir değişken bir dize ile karşılaştırılırken gerçekleşir. Aşağıdakilere, Türler ve Tür Dönüşümü bölümlerinde daha ayrıntılı değinilmiştir. Ayrıca, settype() işlevine de bakabilirsiniz.

bool türündeki `true` değeri string türündeki `"1"` değerine dönüştürülür. bool türündeki `false` değeri string türündeki `""` değerine (boş dizeye) dönüştürülür. Bu şekilde, bool ve string değerler arasında her iki yönde de dönüşüm yapılabilmektedir.

integer veya float türünde bir değerin string türüne dönüşümü sayının dizesel gösterimiyle (üstel gösterim dahil) sonuçlanır. Kayan noktalı sayılar üstel gösterim kullanılarak dönüştürülebilir (`4.1E+6` gibi).

> Bilginize:

> PHP 8.0.0 itibariyle, ondalık nokta karakteri daima noktadır ("`.`"). PHP 8.0.0 öncesinde betiğin çalıştığı yerele (LC_NUMERIC) özgüdür. Bakınız: setlocale() işlevi.

Diziler daima `"Array"` dizesine dönüştürülür; bundan dolayı echo ve print bir dizinin içeriğini kendiliklerinden gösteremezler. Tek bir dizi elemanını görüntüleyebilmek için `echo $arr['foo']` gibi bir oluşum kullanınız. İçeriğin tamamının görüntülenebilmesiyle ilgili ipuçları için aşağıya bakınız.

object türleri string türüne dönüştürmek için __toString sihirli yöntemi kullanılmalıdır.

resource türler daima `"Resource id #1"` benzeri bir dizeye dönüştürülürler; buradaki `1`, özkaynağa PHP tarafından çalışma anında atanan eşsiz bir sayıdır. Bu dizenin tam yapısı değişikliğe konu olduğundan güvenilmemelidir ve değişime tabi tutulmalıdır. Çalıştırılan bir betiğin (bir sayfa isteği veya CLI işlemi) ömrü boyunca, belirli bir özkaynak için daima benzersiz olacak ve yeniden kullanılabilir olmayacaktır. Özkaynağın türünü öğrenmek için get_resource_type() işlevini kullanınız.

`null` daima boş bir dizeye dönüştürülür.

Yukarıda bahsedildiği gibi, bir diziyi, nesneyi veya özkaynağı doğrudan dönüştürmek, bunların değerleri hakkında işe yarar hiçbir bilgi sağlamaz. Bu tür içerikleri daha verimli şekilde incelemek isterseniz print_r() ve var_dump() işlevlerine bakınız.

Çoğu PHP değeri kalıcı olarak saklamak amacıyla dizelere dönüştürülebilir. Bu yönteme dizeleştirme adı verilir ve serialize() işlevi tarafından gerçekleştirilir.

### String Türü ve Ayrıntılar

PHP'de string türü bir bayt dizisi ve tampon uzumlığunu belirten bir tamsayı olarak gerçeklenmiştir. Bu baytların nasıl karakterlere dönüştüğü hakkında bir bilgiye sahip değildir, bu görev yazılımcıya bırakılmıştır. Bir dizeyi oluşturan değerlerle ilgili bir sınırlama yoktur. Özellikle `0` değerli baytlara (NUL baytlar) dizenin her yerinde izin verilir. (Bununla birlikte, bu kılavuzda "ikil olarak güvenli" olmadığı belirtilen bir kaç işlev, dizeleri, NULL baytından sonra verileri yok sayan kitaplıklara dağıtabilir.)

string türünün bu doğası, PHP'de neden ayrı bir bayt türünün olmadığını açıklar; bu rolü dizeler üstlenir. Örneğin metin veri döndürmeyen işlevler, ham veriyi bir ağ soketinden okuyup yine de dize döndürecektir.

PHP dizelere belli bir karakter kodlaması dayatmaz, dizelerin nasıl baytlara dönüştüğü merak edilebilir. Örneğin, `"Ã¡"` dizesi `"\xE1"` (ISO-8859-1), `"\xC3\xA1"` (UTF-8, C form), `"\x61\xCC\x81"` (UTF-8, D form) olarak mı yoksa olası başka bir gösterime göre mi kodlanacak? Bunun yanıtı, betiğin karakter kodlaması neyse ona göre karakterler kodlanır, olacaktır. Bu bakımdan, betik örneğin ISO-8859-1'de yazılmışsa dize de ISO-8859-1'de kodlanacaktır. Ancak, Zend Çokbaytlılık etkinse bu uygulanmaz; bu durumda betik keyfi bir kodlamada (açıkça belirtilmiş veya algılanmış olabilir) yazılabilir ve ardından belli bir dahili kodlamaya (dizeler için kullanılacak kodlama) dönüştürülebilir. Betiğin kodlanmasında (veya dahili kodlamada, Zend Çokbaytlılık etkin olmalıdır) bazı kısıtlamalar olduğunu unutmayın. Bu hemen hemen her zaman, bu kodlamanın UTF-8 veya ISO-8859-1 gibi ASCII'nin uyumlu bir üst kümesi olması gerektiği anlamına gelir. Bununla birlikte, büyük/küçük harf durumlarında aynı bayt değerlerinin kullanılabildiği durum bağımlı kodlamaların sorunlu olabileceğini unutmayın.

Şüphesiz, kullanışlı olmak noktasında, metinler üzerinde çalışan işlevler dizenin nasıl kodlanacağına ilşkin bazı varsayımlarda bulunabilir. Ne yazık ki, işlevler arasında bu konuda çok farklı varsayımlar mevcuttur:

- Bazı işlevler dizenin tek baytlı bir kodlamayla kodlanacağını varsayar, fakat bu baytları belli karakterlere yorumlama gereği duymazlar. substr(), strpos(), strlen() ve strcmp() işlevleri bu durumdadır. Bu işlevlerin bellek tamponlarında, yani baytlar ve bayt adresleriyle çalıştıkları için böyle oldukları düşünülebilir.
- Diğer bir işlev grubu, dizgenin kodlamasının aktarıldığını ya da bir öntanımlı kodlamanın olduğunu varsayar. mbstring eklentisindeki işlevler ve htmlentities() böyledir.
- Bir başka işlev grubu geçerli yereli kullanır (bak setlocale()), fakat bayt bayt çalışır.
- Son grup, dizenin belli bir kodlamayı, normal olarak UTF-8 kullandığını varsayar. intl ve PCRE eklentilerindeki işlevlerin çoğu böyledir (PCRE eklentilerindeki işlevlerde sadece `u` değiştircisi kullanıldığında).

Sonuç olarak, Unicode kullanarak doğru programların yazılması, çalışmayan ve büyük olasılıkla verileri bozacak işlevlerden itinayla kaçınmaya ve bunun yerine doğru davranan, genellikle intl ve mbstring eklentilerindeki işlevleri kullanmaya bağlıdır. Bununla birlikte, Unicode kodlamaları işleyebilen işlevleri kullanmak sadece başlangıçtır. Dilin sağladığı işlevler ne olursa olsun, asıl olan Unicode belirtimini bilmektir. Örneğin, sadece büyük ve küçük harfler olduğunu varsayan bir yazılım yanlış kabul yapıyor demektir.

## Sayısal Dizeler

Bir PHP dizesi, int veya float olarak yorumlanabiliyorsa sayısal kabul edilir.

Resmi olarak PHP 8.0.0'dan itibaren:

    WHITESPACES      \s*
    LNUM             [0-9]+
    DNUM             ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
    EXPONENT_DNUM    (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
    INT_NUM_STRING   {WHITESPACES} [+-]? {LNUM} {WHITESPACES}
    FLOAT_NUM_STRING {WHITESPACES} [+-]? ({DNUM} | {EXPONENT_DNUM}) {WHITESPACES}
    NUM_STRING       ({INT_NUM_STRING} | {FLOAT_NUM_STRING})

PHP ayrıca öncü sayısal dizeler kavramına sahiptir. Bu, sayısal bir dizge gibi başlayan ve ardından herhangi bir karakter gelen bir dizedir.

> Bilginize:

> Sayılarla sınırlanmış (harfe büyüklüğüne duyarsız) `E` harfini içeren herhangi bir dizge, bilimsel gösterimiyle ifade edilen bir sayı olarak görülecektir. Bu beklenmedik sonuçlar doğurabilir.

>     <?php
>     var_dump("0D1" == "000"); // yanlış, "0D1" bilimsel gösterim değil
>     var_dump("0E1" == "000"); // doğru, "0E1" =>  0 * (10 ^ 1), yani 0
>     var_dump("2E1" == "020"); // doğru, "2E1" =>  2 * (10 ^ 1), yani 20
>     ?>

### Sayısal bağlamlarda kullanılan dizeler

Bir dizenin sayı olarak değerlendirilmesi gerektiğinde (örneğin, aritmetik işlemler, int tür bildirimi, vb.), Sonucu belirlemek için aşağıdaki adımlar atılır:

1. Dize sayısal ise, (`PHP_INT_MAX` tarafından tanımlandığı gibi) int türü sınırlarına uyuyorsa ve dize bir tamsayı sayısal dizeyse, int olarak çözümlenir, aksi takdirde bir float olarak çözümlenir.
2. Bağlam, öncü sayısal dizelere izin veriyorsa ve dize tek ise, (`PHP_INT_MAX` tarafından tanımlandığı gibi) int türü sınırlarına uyuyorsa ve dizenin baştaki bölümü bir tamsayı sayısal dizeyse, int olarak çözümlenir, aksi takdirde bir float olarak çözümlenir. Ek olarak `E_WARNING` seviyesinde bir hata ortaya çıkar.
3. Dize sayısal değilse, bir TypeError yavrulanır.

### PHP 8.0.0 öncesindeki davranış

PHP 8.0.0 öncesinde, bir dize yalnızca, önünde beyaz boşluklar varsa sayısal, sonunda beyaz boşluklar varsa öncü sayısal dize olduğu kabul edilirdi.

PHP 8.0.0 öncesinde, bir dize sayısal bir bağlamda kullanıldığında, yukarıdaki adımlar aşağıdaki farklılıklarla uygulanırdı:

- Öncü sayısal dize kullanımı `E_WARNING` yerine `E_NOTICE` seviyesinde bir hataya sebep olurdu.
- Dize sayısal değilse, `E_WARNING` seviyesinde bir hata ortaya çıkar ve değer olarak `0` dönerdi.

PHP 7.1.0 öncesinde, ne `E_NOTICE` ne de `E_WARNING` seviyesinde bir hata ortaya çıkardı.

    <?php
    $foo = 1 + "10.5";                // $foo bir float (11.5)
    $foo = 1 + "-1.3e3";              // $foo bir float (-1299)
    $foo = 1 + "bob-1.3e3";           // PHP 8.0.0 sonrasında TypeError, öncesinde int (1)
    $foo = 1 + "bob3";                // PHP 8.0.0 sonrasında TypeError, öncesinde int (1)
    $foo = 1 + "10 Small Pigs";       // $foo bir int (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
    $foo = 4 + "10.2 Little Piggies"; // $foo bir float (14.2) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
    $foo = "10.0 pigs " + 1;          // $foo bir float (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
    $foo = "10.0 pigs " + 1.0;        // $foo bir float (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
    ?>

## array

PHP'de bir dizi aslında sıralı bir eşlemdir. Bir eşlem, değerleri anahtarlarla ilişkilendiren bir veri türüdür. Bu veri türü farklı kullanım amaçları için en iyilenebilir; bir dizi, bir yöneysel liste, bir isim-değer çiftleri tablosu, bir sözlük, bir nesne listesi, yığıt, kuyruk ve daha bir sürü başka şey olarak ele alınabilir. Dizilerin değerleri, ağaçlar, diziler ve hatta çok boyutlu diziler bile olabilir.

Tüm bu veri yapılarının açıklanması bu kılavuzun amacını aşar. Fakat, en azından her biri için birer örnek verilebilir. Bu konuda daha fazla bilgi edinmek için bu konuyla ilgili olarak yayımlanmış eserleri inceleyiniz.

### Sözdizimi

#### Bir dizinin array() ile belirtilmesi

Bir dizi array() işlevi kullanılarak belirtilebilir. Bağımsız değişken olarak, birbirlerinden virgüllerle ayrılmış çok sayıda `anahtar => değer` çifti alabilir.

    array(
        anahtar  => değer,
        anahtar2 => değer2,
        anahtar3 => değer3,
        ...
    )

Son dizi elemanından sonraki virgül seçimliktir ve konmayabilir. Bu genellikle tek satırlık dizilerde yapılır. Yani, `array(1, 2, )` yerine `array(1, 2)` yazmak tercih edilir. Diğer taraftan, çok satırlı dizilerde yeni elemanların sona eklenmesini kolaylaştırdığından sondaki virgülün konulması tercih edilir.

> Bilginize:

> `array()` yerine `[]` kullanılan kısa bir dizi sözdizimi de vardır.

Örnek 1 - Basit bir dizi

    <?php
    $array = array(
        "foo" => "bar",
        "bar" => "foo",
    );

    // Kısa dizi sözdizimi kullanımı
    $array = [
        "foo" => "bar",
        "bar" => "foo",
    ];
    ?>

Bir anahtar ya int ya da string türünde olabilir. Bir değer ise herhangi bir türde olabilir.

Ek olarak anahtar için şu tür çarpıtmaları oluşur:

- Geçerli onluk tamsayı içeren bir string `+` imi ile başlamadıkça int türüne çarpıtılır. Yani, `"8"` anahtarı aslında `8` olarak saklanır. Diğer yandan, `"08"` geçerli bir onluk tamsayı olmadığından tür çarpıtmasına uğramaz.
- Float türler ondalık kısmı kırpılarak int türüne çarpıtılır. Yani, `8.7` anahtarı aslında `8` olarak saklanır.
- Bool türler int türüne çarpıtılır. Yani `true` anahtarı `1`, `false` anahtarı da `0` olarak saklanır.
- Null türler boş dizeye çarpıtılır. Yani `null` aslında `""` olarak saklanır.
- Array ve object türler anahtar olarak kullanılaMAZ. Bunu yapmak `Illegal offset type` uyarısına sebep olur.

Dizi bildiriminde çok sayıda eleman aynı anahtarı kullanıyorsa, diğerleri birbirlerinin üzerine yazıyormuşçasına sadece son eleman kullanılır.

Örnek 2 - Tür Çarpıtma ve Üzerine Yazma örneği

    <?php
    $array = array(
        1    => "a",
        "1"  => "b",
        1.5  => "c",
        true => "d",
    );
    var_dump($array);
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      [1]=>
      string(1) "d"
    }

Yukarıdaki örnekte tüm anahtarlar `1`'e çarpıtıldığından her yeni eleman değeri bir öncekinin üzerie yazılır ve dizide sadece son atanan değer kalır.

PHP indisli ve ilişkisel diziler arasında bir ayrım yapmadığından int ve string türündeki anahtarlar aynı anda bulunabilir.

Örnek 3 - Karışık int ve string anahtarlar

    <?php
    dizi = array(
        "foo" => "bar",
        "bar" => "foo",
        100   => -100,
        -100  => 100,
    );
    var_dump($dizi);

Yukarıdaki örneğin çıktısı:

    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }

anahtar belirtmek isteğe bağlıdır. Bir anahtar belirtmeksizin bir değer atanıyorsa bu değer, mevcut int anahtarların en büyüğüne bir eklenerek elde edilen int anahtarlı elemana atanır.

Örnek 4 - Anahtarsız indisli diziler

    <?php
    $dizi = array("foo", "bar", "hello", "world");
    var_dump($dizi);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(3) "foo"
      [1]=>
      string(3) "bar"
      [2]=>
      string(5) "hello"
      [3]=>
      string(5) "world"
    }

Bazı değerlere anahtar belirtirken bazılarına belirtmemek mümkündür.

Örnek 5 - Tüm elemanlar için birer anahtar belirtilmeyebilir

    <?php
    $dizi = array(
             "a",
             "b",
        6 => "c",
             "d",
    );
    var_dump($dizi);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(1) "a"
      [1]=>
      string(1) "b"
      [6]=>
      string(1) "c"
      [7]=>
      string(1) "d"
    }

Gördüğünüz gibi son değer `"d"`, `7` anahtarına atanmıştı. Bunun sebebi önceki en büyük tamsayılı indisin `6` olmasıdır.

Örnek 6 - Karmaşık Tür Çarpıtma ve Geçersizleştirme örneği

Bu örnekte anahtarlar üzerinde tür çarpıtmanın ve öğelerin üzerine yazılmasının tüm çeşitleri gösterilmiştir.

    <?php
    $array = array(
        1    => 'a',
        '1'  => 'b', // "a" değeri "b" ile geçersiz olur
        1.5  => 'c', // "b" değeri "c" ile geçersiz olur
        -1 => 'd',
        '01'  => 'e', // tamsayı dizesi olmadığından korunur
        '1.5' => 'f', // tamsayı dizesi olmadığından korunur
        true => 'g',  // "c" değeri "g" ile geçersiz olur
        false => 'h',
        '' => 'i',
        null => 'j',  // "i" değeri "j" ile geçersiz olur
        'k',   // 2 anahtarına "k" değeri atanır, çünkü önceki en büyük tamsayı: 1
        2 => 'l',     // "k" değeri "l" ile geçersiz olur
    );

    var_dump($array);
    ?>

Yukarıdaki örneğin çıktısı:

    array(7) {
      [1]=>
      string(1) "g"
      [-1]=>
      string(1) "d"
      ["01"]=>
      string(1) "e"
      ["1.5"]=>
      string(1) "f"
      [0]=>
      string(1) "h"
      [""]=>
      string(1) "j"
      [2]=>
      string(1) "l"
    }

#### Köşeli ayraç sözdizimi ile belirtilen dizilere erişim

Dizi elemanlarına `array[anahtar]` sözdizimi kullanılarak erişilir.

Örnek 7 - Dizi elemenlarına erişim

    <?php
    $dizi = array(
        "foo" => "bar",
        42    => 24,
        "çok" => array(
             "boyutlu" => array(
                 "dizi" => "foo"
             )
        )
    );

    var_dump($dizi["foo"]);
    var_dump($dizi[42]);
    var_dump($dizi["çok"]["boyutlu"]["dizi"]);
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "bar"
    int(24)
    string(3) "foo"

> Bilginize:

> PHP 8.0.0 öncesinde, dizilere erişmek için köşeli ayraçların yerine kaşlı ayraçlar da kullanılabilirdi (yani, yukarıdaki örnekte `$dizi[42]` ve `$dizi{42}` aynı şeyi yapar). Dizilere erişirken köşeli ayraçların yerine kaşlı ayraç kullanımı PHP 7.4.0 itibariyle önerilmemekte olup PHP 8.0.0 ve sonrasında desteklenmemektedir.

Örnek 8 - Dizi başvurusu

    <?php
    function getArray() {
        return array(1, 2, 3);
    }

    $ikinciEleman = getArray()[1];
    ?>

> Bilginize:

> Atanmamış bir dizi elemanına erişme çabası, atanmamış bir değişkene erişme çabasıyla aynı sonucu verir: `E_WARNING` seviyesinde (PHP 8.0.0 öncesinde `E_NOTICE` seviyesinde) bir hata çıktılanır ve sonuç `null` olur.

> Bilginize:

> string türünde olmayan bir sayıl değeri başka bir diziye atama işlemi sessiz bir `null` atamasıyla sonuçlanır. PHP 7.4.0 öncesinde, bir hata iletisi çıktılanmazdı. PHP 7.4.0 ve sonrasında, bir `E_NOTICE` çıktılanırken, PHP 8.0.0 ve sonrasında, bir `E_WARNING` çıktılanır.

#### Köşeli ayraçlarla atama ve değişiklik yapmak

Mevcut bir dizi, doğrudan değer atamak suretiyle değiştirilebilir.

Bu işlem, diziye köşeli ayraçlar arasında belirtilen bir anahtar kullanılarak değer atamak biçeminde yapılır. Diziye yeni bir değer atamak için köşeli ayraçlar boş olarak (`[]`) belirtilebilir.

    $dizi[anahtar] = değer;
    $dizi[] = değer;

    // anahtar sadece int veya string türünde olabilir.
    // değer herhangi bir türde olabilir.

$dizi mevcut değilse, değer olarak `null` veya `false` atanmışsa dizi oluşturulur. Yani bu işlem yeni bir dizi oluşturmak için kullanılabilir. Ancak bunun yapılması önerilmez. Çünkü $dizi bir dize değer içeriyor olabileceğinden bu değer yerinde kalır ve `[]` aslında bir dize erişim işleci haline gelir. Bir değişkeni doğrudan atamayla ilkendirmek daha iyidir.

> Bilginize: PHP 7.1.0 ve sonrasında, boş indis işlecini bir dizeye uygulamak ölümcül hataya sebep olur. Evvelce, dize sessizce bir diziye dönüştürülürdü.

> Bilginize: PHP 8.1.0 itibariyle, `false` değerden yeni bir dizi oluşturulması önerilmemektedir. `null` ve tanımsız değerlerden yeni bir dizi oluşturulması ise hala mümkündür.

Anahtar kullanarak bir elemana yeni bir değer atamak bu elemanın değerinin değiştirilmesi demektir. Belli bir anahtar/değer çiftini silmek için unset() işlevini kullanın.

    <?php
    $dizi = array(5 => 1, 12 => 2);

    $dizi[] = 56;    // Betiğin bu noktasında bu atama
                     // $dizi[13] = 56; ile aynıdır

    $dizi["x"] = 42; // "x" anahtarlı yeni bir eleman atar

    unset($dizi[5]); // Elemanı diziden siler

    unset($dizi);    // Dizinin tamamını siler
    ?>

> Bilginize:

> Yukarıda değinildiği gibi, bir diziye yeni değeri bir anahtar belirtmeden atamak, mevcut en büyük int indisine bir eklenerek elde edilen anahtar (en azından `0` değil) kullanılarak gerçekleşir. Dizide henüz bir int indis yoksa anahtar olarak `0` (sıfır) kullanılır.

> Dikkat ederseniz, dizinin mevcut olması halinde, yeni bir değer atamak için en büyük tamsayı indisli anahtar kullanmaya gerek yoktur. Buna sadece dizi yeniden indislenmişse gerek olabilir. Aşağıdaki örnek anlatımı pekiştirecektir:

>     <?php
>     // Basit bir dizi oluşturalım.
>     $dizi = array(1, 2, 3, 4, 5);
>     print_r($dizi);

>     // Şimdi bütün elemanları silelim ama dizi kalsın:
>     foreach ($dizi as $i => $value) {
>         unset($dizi[$i]);
>     }
>     print_r($dizi);

>     // Bir eleman ekleyelim (dikkat: yeni anahtar 0 değil 5 olacak!)
>     $dizi[] = 6;
>     print_r($dizi);

>     // Yeniden indisleyelim:
>     $dizi = array_values($dizi);
>     $dizi[] = 7;
>     print_r($dizi);
>     ?>

> Yukarıdaki örneğin çıktısı:

>     Array
>     (
>         [0] => 1
>         [1] => 2
>         [2] => 3
>         [3] => 4
>         [4] => 5
>     )
>     Array
>     (
>     )
>     Array
>     (
>         [5] => 6
>     )
>     Array
>     (
>         [0] => 6
>         [1] => 7
>     )

#### Dizilerin Yeniden Yapılandırılması

Diziler, `[]` (PHP 7.1.0 ve sonrası) veya list() dil yapıları kullanılarak yeniden yapılandırılabilir. Bu dil yapıları bir dizinin içindeki farklı değişkenleri yeniden yapılandırmakta da kullanılabilir.

    <?php
    $source_array = ['foo', 'bar', 'baz'];

    [$foo, $bar, $baz] = $source_array;

    echo $foo;    // "foo" basar
    echo $bar;    // "bar" basar
    echo $baz;    // "baz" basar
    ?>

Dizilerin yeniden yapılandırmasında çok boyutlu bir dizi, foreach kullanılarak yinelemeli olarak yeniden yapılandırılabilir.

    <?php
    $source_array = [
        [1, 'John'],
        [2, 'Jane'],
    ];

    foreach ($source_array as [$id, $name]) {
        // $id ve $name ile ilgili yinelemeler
    }
    ?>

Bir değişken sağlanmamış dizi elemanları yok sayılır. Yeniden yapılandırma daima `0`. indisten başlar.

    <?php
    $source_array = ['foo', 'bar', 'baz'];

    // 2. indisteki elemana $baz ile atama
    [, , $baz] = $source_array;

    echo $baz;    // "baz" basar
    ?>

PHP 7.1.0 ve sonrasında, ilişkisel diziler de yeniden yapılandırılabilmektedir. Ayrıca, sayısal indisli dizilerde indisler doğrudan belirtilebildiğinden doğru elemanın daha kolay belirlenebilmesini de sağlar.

    <?php
    $source_array = ['foo' => 1, 'bar' => 2, 'baz' => 3];

    // 'baz' indisli elemana $üç değişkenini atamak
    ['baz' => $üç] = $source_array;

    echo $üç;    // 3 basar

    $source_array = ['foo', 'bar', 'baz'];

    // 2. indisteki elemana $baz değişkenini atamak
    [2 => $baz] = $source_array;

    echo $baz;    // "baz" basar
    ?>

Dizi yeniden yapılandırması iki değişkeni kolayca takaslamak için de kullanılabilir.

    <?php
    $a = 1;
    $b = 2;

    [$b, $a] = [$a, $b];

    echo $a;    // 2 basar
    echo $b;    // 1 basar
    ?>

> Bilginize:

> Atamalarda çoğaltma işleci (`...`) desteklenmemektedir.

> Bilginize:

> Tanımlanmamış bir dizi anahtarına erişmeye çalışmak, diğer tanımsız değişkenlere erişmekle aynıdır: `E_WARNING` seviyesinde (PHP 8.0.0 öncesinde `E_NOTICE` seviyesinde) bir hata çıktılanır ve sonuç `null` olur.

### Kullanışlı işlevler

Dizilerle çalışmak için kullanılabilecek işlevlerin tamamını Dizi İşlevleri bölümünde bulabilirsiniz.

> Bilginize:

> unset() işlevi bir diziden anahtar silmeyi mümkün kılar. Ama bu silme işlemi dizinin yeniden indislenmesiyle sonuçlanmaz. Eğer silme işleminin gerçekten "sil ve kaydır" yapmasını istiyorsanız, anahtarı sildikten sonra array_values() işlevini kullanarak diziyi yeniden indislemelisiniz.

>     <?php
>     $a = array(1 => 'bir', 2 => 'iki', 3 => 'üç');
>     unset($a[2]);
>     /* Bu silme işlemi dizi şöyle tanımlanmış gibi sonuçlanacaktır:
>        $a = array(1 => 'bir', 3 => 'üç');
>        böyle DEĞİL:
>        $a = array(1 => 'bir', 2 =>'üç');
>     */

>     $b = array_values($a);
>     // $b artık array(0 => 'bir', 1 =>'üç') olmuştur
>     ?>

foreach denetim yapısı özellikle diziler için tasarlanmıştır. Diziler üzerinde hareket edilmesini kolaylaştırır.

### Diziler ne yapar, ne yapmaz?

#### `$foo[bar]` niye yanlıştır?

Bir dize sayıllı indis daima tırnak içinde kullanılır. Örneğin, `$foo[bar]` yanlışken `$foo['bar']` doğrudur. Ama, neden? Eski betiklerde şu sözdizimine sıkça rastlanır:

    <?php
    $foo[bar] = 'düşman';
    echo $foo[bar];
    // ve saire
    ?>

Bu yanlıştır, ama çalışır. Bunun sebebi, bu kodun bir dizeden ziyade tanımsız bir sabit (`bar`) belirtiyor olmasıdır. PHP ilerde şans eseri ismi aynı zamanda değeri olan bir sabit tanımlayabilir. PHP otomatik olarak bir çıplak dizeyi (tırnak içine alınmamış bir dizeyi), bu çıplak dizeyi içeren bir dizeye dönüştüreceğinden bu çalışır. Örneğin, `bar` isminde tanımlanmış bir sabit yoksa, PHP `bar` sabitine `'bar'` dizesini yerleştirecek ve bunu kullanacaktır.

Uyarı

Son çare olarak, tanımlanmamış bir sabitin çıplak bir dize olarak işleme sokulması `E_NOTICE` seviyesinde bir hata çıktılanmasına sebep olur. Bu, PHP 7.2.0'dan itibaren kullanımdan kaldırılmış olup `E_WARNING` seviyesinde bir hataya sebep olur. PHP 8.0.0 ve sonrasında, bu durumda, bir Error istisnası yavrulanmaktadır.

> Bilginize: Bu, "anahtarlar daima tırnak içine alınır" demek değildir. sabitleri ve değişkenleri tek tırnak içine almayın, çünkü o zaman yorumlanmazlar.

>     <?php
>     error_reporting(E_ALL);
>     ini_set('display_errors', true);
>     ini_set('html_errors', false);
>     // Basit bir dizi:
>     $dizi = array(1, 2);
>     $sayaç = count($dizi);
>     for ($i = 0; $i < $sayaç; $i++) {
>         echo "\n$i indisi inceleniyor: \n";
>         echo "Kötü: " . $dizi['$i'] . "\n";
>         echo "İyi: " . $dizi[$i] . "\n";
>         echo "Kötü: {$dizi['$i']}\n";
>         echo "İyi: {$dizi[$i]}\n";
>     }
>     ?>

> Yukarıdaki örneğin çıktısı:

>     0 indisi inceleniyor:

>     Notice: Undefined index: $i in /dosya/yolu/betik.php on line 10
>     Kötü:
>     İyi: 1

>     Notice: Undefined index: $i in /dosya/yolu/betik.php on line 12
>     Kötü:
>     İyi: 1

>     1 indisi inceleniyor:

>     Notice: Undefined index: $i in /dosya/yolu/betik.php on line 10
>     Kötü:
>     İyi: 2

>     Notice: Undefined index: $i in /dosya/yolu/betik.php on line 12
>     Kötü:
>     İyi: 2

Bu davranışla ilgili diğer örnekler:

    <?php
    // Tüm hataları görelim
    error_reporting(E_ALL);

    $dizi = array('meyve' => 'elma', 'sebze' => 'havuç');

    // Doğru
    print $dizi['meyve'];  // elma
    print $dizi['sebze'];  // havuç

    // Yanlış. Bu çalışır, fakat meyve tanımlanmamış bir sabit
    // olmadığından E_NOTICE seviyesinde bir PHP hatası oluşur
    //
    // Notice: Use of undefined constant meyve - assumed 'meyve'...
    print $dizi[meyve];    // elma

    // Bu, neler olup bittiğini gösteren bir sabit tanımlar;
    // 'sebze' değeri meyve sabitine atanır.
    define('meyve', 'sebze');

    // Şimdi farkı görelim
    print $dizi['meyve'];  // elma
    print $dizi[meyve];    // havuç

    // Bir dize içinde olduğundan bu da doğrudur.
    // Dizge içinde kalan sabitler, sabit olarak ele alınmazlar;
    // dolayısıyla burada bir E_NOTICE oluşmaz.
    print "Turfanda $dizi[meyve]";      // Turfanda elma

    // Bir istisna: Dizge içinde kaşlı ayraç içine alınmış
    // sabitler, sabit olarak ele alınırlar.
    print "Turfanda {$dizi[meyve]}";     // Turfanda havuç
    print "Turfanda {$dizi['meyve']}";   // Turfanda elma

    // Bu çalışmaz ve şöyle bir çözümleme hatasıyla sonuçlanır:
    // Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
    // Bu, dizeler içindeki süper küresellere de uygulanır.
    print "Turfanda $dizi['meyve']";
    print "Turfanda $_GET['foo']";

    // Ard arda eklemek de bir seçenektir
    print "Turfanda " . $dizi['meyve']; // Turfanda elma
    ?>

error_reporting yönergesine `E_NOTICE` seviyesinden hataları gösterecek bir atama yapılırsa (örneğin, `E_ALL` atanarak), böyle kullanımlar hemen görünür duruma gelir. error_reporting yönergesinin öntanımlı değeriyle `E_NOTICE` seviyesinden hatalar gösterilmez.

Sözdizimi bölümünde değinildiği gibi, köşeli ayraçlar ('`[`' ve '`]`') içinde belirtilenlerin birer ifade olması gerekir. Yani, aşağıdaki gibi bir kod çalışacaktır:

    <?php
    echo $dizi[birişlev($bar)];
    ?>

Bu, bir işlevin dönüş değerinin dizi indisi olarak kullanımına bir örnektir. PHP kendi sabitlerini de tanır:

    <?php
    $error_descriptions[E_ERROR]   = "Ölümcül bir hata oluştu";
    $error_descriptions[E_WARNING] = "PHP bir uyarı verdi";
    $error_descriptions[E_NOTICE]  = "Bu sadece bilgilendirici bir uyarı";
    ?>

`E_ERROR` sabitinin de ilk örnekteki `bar` kadar geçerli bir betimleyici oluşuna dikkat ediniz. Fakat, `E_ERROR` eşittir `1`, vb. olduğundan aşağıdaki örnek de aynı işi yapar:

    <?php
    $error_descriptions[1] = "Ölümcül bir hata oluştu";
    $error_descriptions[2] = "PHP bir uyarı verdi";
    $error_descriptions[8] = "Bu sadece bilgilendirici bir uyarı";
    ?>

##### O halde bunun nesi kötü?

Bilinmeyen bir gelecekte PHP ekibi başkalarının kodlarıyla çelişen bir sabit, bir anahtar sözcük veya bir değişken eklemek isteyebilir. Örneğin, `empty` ve `default` birer anahtar sözcük olduklarından bu amaçla kullanılmaları yanlıştır.

> Bilginize: Yinelemek gerekirse, çift tırnak imleri arasına alınmış bir dize, dizi indisini tırnak içine almadığından geçerlidir; yani, `"$foo[bar]"` geçeridir. Yukarıdaki örnekleri bu gözle tekrar inceleyin ve ayrıca dizelerin içinde değişken çözümleme bölümüne de bakın.

### Diziye dönüşüm

int, float, string, bool veya resource türünde bir değeri array türünde bir değere dönüştürme işlemi, sıfır indisli bir elemana bu değerin atanması ile sonuçlanır. Başka bir deyişle, `(array) $sayılDeğer` ile `array($sayılDeğer)` arasında bir fark yoktur.

Bir object türü array türüne dönüştürme işlemi, elemanları nesnenin üyeleri olan bir dizi ile sonuçlanır. Anahtarlar, bir kaç istisnai durum dışında üyelerin isimleridir: Tamsayı özellikler erişilebilir değildir; `private` değişkenlerin önüne sınıf isimleri getirilir; `public` değişkenlerin önünde bir '*' olur. Diğer taraftan, başlarına birşeyler eklenmiş böyle değişkenlerin değerleri `null` olur. Veri türüne sahip özellikler ilklendirilmemişse sessizce yok sayılır.

    <?php

    class A {
        private $B;
        protected $C;
        public $D;
        function __construct()
        {
            $this->{1} = null;
        }
    }

    var_export((array) new A());
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      '' . "\0" . 'A' . "\0" . 'B' => NULL,
      '' . "\0" . '*' . "\0" . 'C' => NULL,
      'D' => NULL,
      1 => NULL,
    )

Bu durum beklenmedik davranışlara yol açabilir:

    <?php

    class A {
        private $A; // Bu '\0A\0A' haline gelir.
    }

    class B extends A {
        private $A; // Bu '\0B\0A' haline gelir.
        public $AA; // Bu 'AA' haline gelir.
    }

    var_dump((array) new B());
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      ["BA"]=>
      NULL
      ["AA"]=>
      NULL
      ["AA"]=>
      NULL
    }

Bu örneğin çıktısı 'AA' isimli iki anahtar görüntülerse de onlardan birinin ismi aslında '\0A\0A''dır.

`null`, bir diziye dönüştürülmek istenirse sonuç boş bir dizi olur.

### Karşılaştırma

Dizileri array_diff() işleviyle veya dizi işleçleri kullanılarak karşılaştırmak mümkündür.

### Dizi genişletme

`...` ile öncelenmiş bir dizi dizinin tanımlanması sırasında bulunduğu yerde genişletilir. Yalnızca Traversable arayüzünü gerçekleyen diziler genişletilebilir. `...` ile genişletme PHP 7.4.0 ve sonrasında kullanılabilmektedir.

Defalarca genişletme yapmak ve `...` işlecinin önüne ve ardına normal elemanları eklemek mümkündür:

Örnek 9 - Basit dizi genişletmesi

    <?php
    // Kısa dizi sözdizimi kullanarak.
    // Ayrıca, array() sözdizimi da çalışır.
    $arr1 = [1, 2, 3];
    $arr2 = [...$arr1]; //[1, 2, 3]
    $arr3 = [0, ...$arr1]; //[0, 1, 2, 3]
    $arr4 = [...$arr1, ...$arr2, 111]; //[1, 2, 3, 1, 2, 3, 111]
    $arr5 = [...$arr1, ...$arr1]; //[1, 2, 3, 1, 2, 3]

    function getArr() {
      return ['a', 'b'];
    }
    $arr6 = [...getArr(), 'c' => 'd']; //['a', 'b', 'c' => 'd']
    ?>

`...` işleci ile bir diziyi genişletme işlemi array_merge() işlevindeki gibi yapılır. Yani, sonraki dizge anahtarlar öncekileri geçersiz kılarken tamsayı anahtarlar yeniden sıralanır:

Örnek 10 - Yinelenen anahtarlarla dizi genişletme

    <?php
    // dizge anahtar
    $arr1 = ["a" => 1];
    $arr2 = ["a" => 2];
    $arr3 = ["a" => 0, ...$arr1, ...$arr2];
    var_dump($arr3); // ["a" => 2]

    // integer key
    $arr4 = [1, 2, 3];
    $arr5 = [4, 5, 6];
    $arr6 = [...$arr4, ...$arr5];
    var_dump($arr6); // [1, 2, 3, 4, 5, 6]
    // [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6]
    // Burada özgün tamsayı anahtarlar korunmamıştır.
    ?>

> Bilginize:

> Dizge ya da tamsayı olmayan anahtarlar TypeError istisnasına yol açar. Böyle anahtarlar sadece Traversable nesnesi tarafından üretilebilir.

> Bilginize:

> PHP 8.1 öncesinde, dizge anahtarlı bir dizi genişletilmiyordu:

>     <?php

>     $arr1 = [1, 2, 3];
>     $arr2 = ['a' => 4];
>     $arr3 = [...$arr1, ...$arr2];
>     // Ölümcül hata: Dizge anahtarlı diziler genişletilemez: example.php:5

>     $arr4 = [1, 2, 3];
>     $arr5 = [4, 5];
>     $arr6 = [...$arr4, ...$arr5]; // works. [1, 2, 3, 4, 5]
>     ?>

### Örnekler

PHP'nin array türü çok yeteneklidir. Bazı örnekler:

    <?php
    // Bu:
    $a = array( 'renk'   => 'kırmızı',
                'lezzet' => 'tatlı',
                'şekil'  => 'yuvarlak',
                'isim'   => 'elma',
                4        // anahtarı 0 olacaktır
              );

    $b = array('a', 'b', 'c');

    // . . . buna tamamen eşdeğerdir:
    $a = array();
    $a['renk']   = 'kırmızı';
    $a['lezzet'] = 'tatlı';
    $a['şekil']  = 'yuvarlak';
    $a['isim']   = 'elma';
    $a[]         = 4;        // anahtarı 0 olacaktır

    $b = array();
    $b[] = 'a';
    $b[] = 'b';
    $b[] = 'c';

    // Yukarıdaki kod çalıştırıldığında $a, array('renk' => 'kırmızı',
    // 'lezzet' => 'tatlı', 'şekil' => 'yuvarlak', 'isim' => 'elma', 0 => 4)
    // dizisiyle, $b ise array(0 => 'a', 1 => 'b', 2 => 'c') veya basitçe
    // array('a', 'b', 'c') dizisiyle sonuçlanacaktır.
    ?>

Örnek 11 - array() kullanımı

    <?php
    // Özellik eşlemeli dizi
    $map = array( 'sürüm'    => 4,
                  'sistem'   => 'Linux',
                  'dil'      => 'english',
                  'kısaltma' => true
                );

    // tamamen sayısal anahtarlar
    $dizi = array(  7,
                    8,
                    0,
                  156,
                  -10
                  );
    // Bu, array(0 => 7, 1 => 8, ...) ile aynıdır

    $geçişli = array(        10, // key = 0
                     5    =>  6,
                     3    =>  7,
                     'a'  =>  4,
                             11, // anahtar = 6 (en büyük tamsayı indis 5 idi)
                     '8'  =>  2, // anahtar = 8 (tamsayı!)
                     '02' => 77, // anahtar = '02'
                     0    => 12  // 10 değerinin üzerine 12 yazılacak
                      );

    // boş dizi
    $boş = array();
    ?>

Örnek 12 - Döngü içinde elemen değiştirme

    <?php
    $renkler = array('Turuncu', 'Pembe', 'Mor', 'Turkuaz');

    foreach ($renkler as $renk) {
        echo "$renk rengi sever misiniz?\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    Turuncu rengi sever misiniz?
    Pembe rengi sever misiniz?
    Mor rengi sever misiniz?
    Turkuaz rengi sever misiniz?

Dizi değerleri gönderimli aktarıldıklarından dizi değerlerini doğrudan değiştirmek mümkündür. Fakat arada bazı şeyler yapmak gerekir:

Örnek 13 - Derlem

    <?php
    <?php
    $renkler = array('Turuncu', 'Pembe', 'Mor', 'Turkuaz');

    foreach ($renkler as &$renk) {
        $renk = mb_strtoupper($renk);
    }

    unset($renk); /* Aşağıdaki atamalarda $renk son
                     dizi elemanını değiştirmesin */

    print_r($renkler);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => TURUNCU
        [1] => PEMBE
        [2] => MOR
        [3] => TURKUAZ
    )

Bu örnekte dizi indisleri 1'den başlatılmaktadır.

Örnek 14 - İndisi 1'den başlatmak

    <?php
    $ilkçeyrek  = array(1 => 'Ocak', 'Şubat', 'Mart');
    print_r($ilkçeyrek);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [1] => Ocak
        [2] => Şubat
        [3] => Mart
    )

Örnek 15 - Diziyi doldurmak

    <?php
    // bir diziyi bir dizin'in içeriği ile dolduralım
    $tutamak = opendir('.');
    while (false !== ($dosya = readdir($tutamak))) {
        $dosyalar[] = $dosya;
    }
    closedir($tutamak);
    ?>

Diziler sıralıdır. Sıralama çeşitli sıralama işlevleri ile değiştirilebilir. Daha fazla bilgi için Dizi İşlevleri bölümüne bakınız. Bir dizinin eleman sayısını öğrenmek için count()işlevi kullanılabilir.

Örnek 16 - Dizi elemanlarının sıraya sokulması

    <?php
    sort($dosyalar);
    print_r($dosyalar);
    ?>

Bir dizinin elemanlarına her türlü değer atanabileceğinden başka bir dizi de atanabilir. Böylece iç içe ve çok boyutlu dizilerin oluşturulması mümkün olur.

Örnek 17 - İç içe ve çok boyutlu diziler

    <?php
    $yemişler = array ( "yemişler"  => array ( "a" => "iğde",
                                               "b" => "badem",
                                               "c" => "ceviz"
                                             ),
                        "sayılar"   => array ( 1,
                                               2,
                                               3,
                                               4,
                                               5,
                                               6
                                             ),
                        "yuvalar"   => array (        "birinci",
                                                5  => "ikinci",
                                                      "üçüncü"
                                              )
                    );

    // Yukarıdaki dizinin değerlerinin kullanıldığı bazı örnekler
    echo $yemişler["yuvalar"][5];    // "ikinci" basar
    echo $yemişler["meyveler"]["a"]; // "iğde" basar
    unset($yemişler["yuvalar"][0]);  // "birinci" silinir

    // Yeni bir çok boyutlu dizi oluşturalım
    $meyveler["elma"]["yeşil"] = "ekşi";
    ?>

Dizi atamaları daima değerleri kopyalamak şeklinde gerçekleşir. Bir diziyi gönderimli olarak kopyalamak için gönderim işleci kullanılır.

    <?php
    $dizi1 = array(2, 3);
    $dizi2 = $dizi1;
    $dizi2[] = 4; // $dizi2 değişti,
                  // $dizi1 hala array(2, 3)

    $dizi3 = &$dizi1;
    $dizi3[] = 4; // şimdi $dizi1 ve $dizi3 aynı
    ?>

## object

### Nesne İlklendirme

Yeni bir nesne oluşturmak için (bir sınıfın bir örneğini oluşturmak için) `new` deyimi kullanılır:

    <?php
    class kediler
    {
        function birŞeySöyle()
        {
            echo "Miyav.";
        }
    }

    $kedi = new kediler;
    $kedi->birŞeySöyle();
    ?>

Çok daha ayrıntılı bilgiyi Sınıflar ve Nesneler faslında bulabilirsiniz.

### `object` türüne dönüşüm

Eğer object türünde bir değer object türüne dönüştürülürse bir değişiklik olmaz. Başka türde bir değer object türüne dönüştürülürse yerleşik stdClass sınıfının yeni bir örneği oluşturulmuş olur. Eğer değer `null` ise yeni örnek boş olur. Bir dizi object türüne dönüştürülürse dizi elemanlarının isimleri değerleriyle birlikte nesnenin özellikleri haline gelirler. Bu durumda PHP 7.2.0 öncesinde, sayısal anahtarların yinelenmedikçe erişilmez olacağını unutmayın.

    <?php
    $obj = (object) array('1' => 'foo');
    var_dump(isset($obj->{'1'})); // PHP 7.2.0 ve sonrasında 'bool(true)'
                                  // öncesinde 'bool(false)' basar
    var_dump(key($obj)); // PHP 7.2.0 ve sonrasında 'string(1) "1"
                         // öncesinde 'int(1)' basar
    ?>

Herhangi bir başka değer için, `scalar` isimli bir üye değişken, değeri içerecektir.

    <?php
    $nesne = (object) 'heyo';
    echo $nesne->scalar;  // çıktısı: 'heyo'
    ?>

## Sayılamalar

(PHP 8 >= 8.1.0)

### Temel Sayılamalar

Sayılamalar, bir veri türü için kapalı bir olası değerler kümesi tanımlamanın bir yolunu sağlamayı amaçlayan sınıfların ve sınıf sabitlerinin üzerinde kısıtlayıcı bir katmandır.

    <?php
    enum Deste
    {
        case Kupalar;
        case Karolar;
        case Sinekler;
        case Maçalar;
    }
    function do_stuff(Deste $s)
    {
        // ...
    }
    do_stuff(Deste::Maçalar);
    ?>

Daha ayrıntılı bilgi için Sayılamalar bölümüne bakılabilir.

### Dönüşüm

Bir enum tür bir object türe dönüştülürse, değişikliğe uğramaz. Bir enum tür bir array türe dönüştülürse, ya sadece `name` anahtarı olan bir dizi (saf sayılama) ya da `name` ve `value` anahtarlarına sahip bir dizi (Destekli sayılama) oluşur. Tüm diğer dönüşüm türleri bir hatayla sonuçlanır.

## resource

resource türünde bir değişken harici bir özkaynağa bir gönderim içeren özel bir değişkendir. Özkaynaklar özel işlevler tarafından oluşturulur ve kullanılırlar. resource türüyle ilişkilendirilebilen özkaynakların ve özel işlevlerin bir listesini eklerde bulabilirsiniz.

Ayrıca, get_resource_type() işlevine de bakınız.

### `resource` türüne dönüşüm

Açık dosyalara, veritabanı bağlantılarına, görüntü tuval alanlarına ve benzerlerine birer tanıtıcı sağlayan değişkenleri resource türüne dönüştürmenin bir anlamı yoktur.

### Özkaynakları serbest bırakmak

Zend Motoru sayesinde gönderimsiz kalan özkaynaklar otomatik olarak saptanarak bunlara ayrılan bellek çöp toplayıcı tarafından serbest bırakılmaktadır. Bu sebeple bir özkaynağa ayrılan belleği serbest bırakmak ihtiyacı nadiren ortaya çıkar.

> Bilginize: Kalıcı veritabanı bağlantıları bu kuralın bir istisnasıdır. Çöp toplayıcı tarafından yok edilmezler. Bu konuda daha ayrıntılı bilgi edinmek için kalıcı bağlantılar bölümüne bakınız.

## Geriçağırımlar / Çağrılılabilirler

Geriçağırımlar callable tür ipucu ile belirtilebilir.

call_user_func() ya da usort() gibi bazı işlevler bağımsız değişken olarak kullanıcı tarafından belirlenen geriçağırım işlevleri kabul eder. Geriçağırım işlevleri basit işlevler olabileceği gibi, statik işlevler de dâhil olmak üzere object türünde nesne yöntemleri de olabilirler.

### Aktarım

Bir PHP işlevi adı ile string türünde aktarılır. Her türlü yerleşik ve kullanıcı tanımlı işlev kullanılabilir, ancak; array(), echo, empty(), eval(), exit(), isset(), list(), print ya da unset() gibi dil sabitleri müstesna.

Örneklenmiş bir nesne yöntemi, 0 indisinde nesne, 1 indisinde yöntem adı olan bir dizi ile aktarılır. Korumalı ve özel yöntemlere sınıf içinden erişilebilir.

Statik sınıf yöntemleri, 0 indisinde nesne yerine sınıf adı kullanılarak, sınıfın nesnesi örneklendirilmeden ya da `'SınıfAdı::yöntemAdı'` kullanılarak aktarılabilir.

Kullanıcı tanımlı işlevler haricinde, isimsiz işlevler ve ok işlevleri de geriçağırım bağımsız değişkeni olarak aktarılabilir.

> Bilginize:

> PHP 8.1.0 itibariyle, anonim işlevler de birinci sınıf çağrılabilir sözdizimi kullanılarak oluşturulabiliyor.

Genel olarak, __invoke() gerçekleyen her nesne bir geriçağırım bağımsız değişkeni olarak aktarılabilir.

Örnek 1 - Geriçağırım işlev örnekleri

    <?php

    // Örnek bir geriçağırım işlevi
    function benim_gericagirim_islevim() {
        echo 'merhaba dünya!';
    }

    // Örnek bir geriçağırım yöntemi
    class BenimSinifim {
        static function benimGericagirimYontemim() {
            echo 'Merhaba Dünya!';
        }
    }

    // Tür 1: Basit geriçağırım
    call_user_func('benim_gericagirim_islevim');

    // Tür 2: Statik sınıf yöntemi çağrısı
    call_user_func(array('BenimSinifim', 'benimGericagirimYontemim'));

    // Tür 3: Nesne yöntem çağrısı
    $nesne = new BenimSinifim();
    call_user_func(array($nesne, 'benimGericagirimYontemim'));

    // Tür 4: Statik sınıf yöntemi çağrısı
    call_user_func('BenimSinifim::benimGericagirimYontemim');

    // Tür 5: İlişkisel statik sınıf yöntem çağrısı
    class A {
        public static function kim() {
            echo "A\n";
        }
    }

    class B extends A {
        public static function kim() {
            echo "B\n";
        }
    }

    call_user_func(array('B', 'parent::kim')); // A, PHP 8.2.0 ve sonrasında önerilmiyor

    // Tür 6: Nesneler, __invoke uyguluyorlarsa çağırılabilir olarak kullanılabilirler
    class C {
        public function __invoke($ad) {
            echo 'Merhaba ', $ad, "\n";
        }
    }

    $c = new C();
    call_user_func($c, 'PHP!');
    ?>

Örnek 2 - Örtme kullanan Geriçağırım örneği

    <?php
    // Bizim örtücümüz
    $iki_misli = function($a) {
        return $a * 2;
    };

    // Bu bizim sayı aralığımız
    $sayilar = range(1, 5);

    // Sayı aralığımızın her bir elemanını
    // ikiye katlamak için burada örtücüyü
    // bir geriçağırım olarak kullandık
    $yeni_sayilar = array_map($iki_misli, $sayilar);

    print implode(' ', $yeni_sayilar);
    ?>

Yukarıdaki örneğin çıktısı:

    2 4 6 8 10

> Bilginize:

> call_user_func() ve call_user_func_array() gibi işlevlerle tanımlanmış geriçağırım işlevleri, bir önceki geriçağırım işlevinde yavrulanmış ve yakalanmamış bir istisna varsa çağrılmaz.

## mixed

mixed (karışık) her değeri kabul eden bir türdür. `object|resource|array|string|float|int|bool|null` türlerinin birleşimi olarak union türüne eşdeğerdir. PHP 8.0.0 ve sonrasında kullanılabilir.

mixed tür teorisi tabiriyle en üst türdür. Yani bütün türler alt türü olabilir.

## void

void işlevin değer döndürmeden sonlanabildiğini belirten bir bildirim türüdür. Bir değerin türü olmadığından union (birleşik) türün parçası olamaz. PHP 7.1.0 ve sonrasında kullanılabilir.

> Bilginize: void dönüş türü bildirimli bir işlev yine de değer döndürür ancak bu değer daima `null` olur.

## never

never işlevin sonlanmayacağı belirten bir dönüş türüdür. Yani ya exit() çağrısıyla bir istisna oluşturur ya da sonsuz döngüde kalır. Bu bakımdan union (birleşik) türün parçası olamaz. PHP 8.1.0 ve sonrasında kullanılabilir.

never tür teorisi tabiriyle en alt türdür. Yani diğer her türün alt türü olabilir ve kalıtım sırasında yerini başka bir tür alabilir.

## parent, self, static

Bu türlerin bildirimleri yalnızca sınıfların içinde kullanılabilir.

### self

Bu türden bir nesne, tür bildiriminin kullanıldığı sınıfın örneği (`instanceof`) olmalıdır.

### parent

Bu türden bir nesne, tür bildiriminin kullanıldığı sınıfın ebeveyninin örneği (`instanceof`) olmalıdır.

### static

static, döndürülen nesnenin yöntemin çağrıldığı sınıfın örneği (`instanceof`) olmasını gerektiren dönüş türüdür. PHP 8.0.0 ve sonrasında kullanılabilir.

## Singleton types

Singleton types are those which allow only one value. PHP has support for two singleton types: false as of PHP 8.0.0 and true as of PHP 8.2.0.

Uyarı

Prior to PHP 8.2.0 the false type could only be used as part of a union type.

> Bilginize: It is not possible to define custom singleton types. Consider using enumerations instead.

## iterable

Iterable (yinelenebilir tür) yerleşik olarak derleme sırasında `array|Traversable` türüne bir takma ad olarak tanımlanmıştır. PHP 7.1.0'dan PHP 8.2.0'a kadar yukarıda belirtilen tür takma adı olarak işlev gören ve bir tür bildirimi olarak kullanılabilen yerleşik bir sözde türdü. Yinelenebilir tür, üreteç içinde yield from ile ve foreach içinde kullanılabilir.

> Bilginize:

> Dönüş türü olarak iterable bildiren bir işlev ayrıca, bir üreteç olarak da kullanılabilir.

> Örnek 1 - Yinelenebilir üreteç dönüş türü örneği

>     <?php

>     function gen(): iterable {
>         yield 1;
>         yield 2;
>         yield 3;
>     }

>     ?>

## Tür bildirimleri

Tür bildirimleri işlev bağımsız değişkenlerine, dönüş değerlerine ve PHP 7.4.0 ve sonrasında sınıf özelliklerine eklenebilir. Çağrı sırasında değerin belirtilen türde olmasını gerektirir, aksi takdirde TypeError oluşur.

resource türü dışında PHP'nin desteklediği her tür, kullanıcı bildirimi olarak kullanılabilir. Bu sayfa, farklı türlerin kullanılabilirliğine ilişkin bir değişiklik günlüğü ve bunların tür bildirimlerinde kullanımına ilişkin belgeleri içerir.

> Bilginize:

> Bir sınıf, bir arayüz yöntemini gerçeklediğinde veya bir üst sınıf tarafından zaten tanımlanmış bir yöntemi yeniden gerçeklediğinde, gerçeklediği tanımla uyumlu olması gerekir. Bir yöntem, özgüllük kurallarına uyuyorsa uyumludur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Sınıf, arayüz, nitelik ve sayılama sabit türleri için destek eklendi.
8.2.0 | DNF türleri desteklenmeye başlandı.
8.2.0 | true kendisi tür olanlardan biri olarak eklendi.
8.2.0 | null ve false tek başlarına kullanılabilir oldu.
8.1.0 | Kesişim türleri desteklenmeye başlandı.
8.1.0 | void dönüş türünde bir işlevden dönen değere başvuru artık önerilmiyor.
8.1.0 | never dönüş türü desteklenmeye başlandı.
8.0.0 | mixed türü desteklenmeye başlandı.
8.0.0 | static dönüş türü desteklenmeye başlandı.
8.0.0 | Birleşik türler desteklenmeye başlandı.
7.4.0 | Sınıf özellik türü bildirim desteği eklendi.
7.2.0 | object türü desteklenmeye başlandı.
7.1.0 | iterable türü desteklenmeye başlandı.
7.1.0 | void türü desteklenmeye başlandı.
7.1.0 | Null olabilen türler desteklenmeye başlandı.

### Temel türlerle ilgili kullanım bilgileri

Temel türler, bu bölümde açıklanan bazı küçük yetersizlikler dışında basit şekilde davranır.

#### Sayıl türler

Uyarı

Sayıl türler (bool, int, float, string) için takma adlar desteklenmemekte, bunlar bir sınıf veya arayüz adı olarak ele alınmaktadır. Örneğin, tür bildirimi olarak `boolean`, değerin bool türünden ziyade `boolean` isimli sınıfın veya arayüzün bir örneği olmasını gerektirir:

    <?php
        function test(boolean $param) {}
        test(true);
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    Fatal error: Uncaught TypeError: test(): Argument #1 ($param) must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -(3): test(true)
    #1 {main}
      thrown in - on line 2

#### void

> Bilginize:

> void dönüş türünde bir işlevden dönen değere başvuru çelişki sebebiyle PHP 8.1.0 ve sonrasında önerilmemektedir. Evvelce böyle bir çağrı şöyle bir `E_NOTICE` çıktılıyordu: Only variable references should be returned by reference (Yalnızca değişkene atıflar atıf olarak döndürülebilir).

>     <?php
>     function &test(): void {}
>     ?>

#### Çağrılabilir türler

Bu türler sınıf özelliği türü olarak kullanılamaz.

> Bilginize: İşlev bildirimi olarak belirtilemez.

#### Atıf olarak aktarılan bağımsız değişkenlerde tür bildirimi

Atıf olarak aktarılan bir bağımsız değişkende tür bildirimi yapılmışsa değişkenin türü işlev dönerken değil, yalnızca çağrının başında işlev girdisi olarak sınanır. Yani işlev atıf yapılan değişkenin türünü değiştirebilir.

Örnek 1 - Atıf olarak aktarılan tür bildirimli bağımsız değişkenler

    <?php
    function array_baz(array &$param)
    {
        $param = 1;
    }
    $var = [];
    array_baz($var);
    var_dump($var);
    array_baz($var);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(1)
    Fatal error: Uncaught TypeError: array_baz(): Argument #1 ($param) must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -(9): array_baz(1)
    #1 {main}
      thrown in - on line 2

### Birleşik türlerle ilgili kullanım bilgileri

Birleşik tür bildirimleri ile ilgili birkaç kısıtlama vardır ve basit hataları önlemek için derleme sırasında gereksiz fazlalık denetimi yapılır.

Dikkat

PHP 8.2.0 öncesinde ve DNF türler desteklenmeye başlandığında kesişim türlerini bileşik türlerle birleştirmek mümkün değildi.

#### Bileşik türler

Uyarı

`false` ve `true` tekil türlerini aynı bileşik tür altında bildirmek mümkün değildir. Bunun yerine bool kullanılabilir.

Dikkat

PHP 8.2.0 öncesinde, `false` ve null tek başlarına kullanılamadığından yalnızca bu türlerden ibaret bir bileşik türe izin verilmezdi. İzin verilmeyen tür bildirimleri: `false`, `false|null` ve `?false`.

##### Null olabilen türde sözdizimsel nane

Temel tür bildirimlerinden yalnızca biri, türün önüne bir soru imi (`?`) konularak null olabilir olarak imlenebilir. Bu bakımdan `?T` ve `T|null` aynıdır.

> Bilginize: Bu sözdizimi PHP 7.1.0 ve sonrasında desteklenmekte olup genelleştirilmiş bileşik tür desteğinden önce desteklenmekteydi.

> Bilginize:

> `null` öntanımlı değer yapılarak null olabilir bağımsız değişkenler elde etmek de mümkündür. Bir alt sınıfta öntanımlı değer değiştirilirse, tür bildirimine null türün eklenmesini gerektireceğinden ve dolayısıyla tür uyumluluğunu bozacağından bu önerilmez.

> Örnek 2 - Bağımsız değişkenlerin null olabilmesinin eski yolu

>     <?php
>     class C {}
>     function f(C $c = null) {
>         var_dump($c);
>     }
>     f(new C);
>     f(null);
>     ?>

> Yukarıdaki örneğin çıktısı:

>     object(C)#1 (0) {
>     }
>     NULL

#### Yinelenen ve gereksiz türler

Birleşik tür bildirimlerindeki basit hataları yakalamak için, sınıf yüklemeden algılanabilen gereksiz türler, derleme zamanı hatasına neden olur. Bunlar:

- Adla çözümlenen her tür bir bildirimde yalnızca bir kez var olabilir. `int|string|INT` ve `Countable&Traversable&COUNTABLE` gibi türler hataya neden olur.
- mixed kullanımı hataya yol açar.
- Birleşik türler için:
  - bool türün yanına, false veya true eklenemez.
  - object türün yanına, sınıf türleri eklenemez.
  - iterable türün yanına, array ve Traversable eklenemez.
- Kesişim türleri için:
  - Sınıf türünde olmayan türlerin kullanımı hataya yol açar.
  - self, parent veya static kullanımı hataya yol açar.
- DNF türleri için:
  - Genel bir türün yanına kısıtlayıcı bir türü eklemek gereksizdir.
  - İki eşdeğer kesişim türü kullanımı.

> Bilginize: Bu, türün "en az" olasılığını garanti etmez çünkü bunu yapmak, kullanılan tüm sınıf türlerinin yüklenmesini gerektirir.

Örneğin, `A` ve `B` sınıf takma adlarıysa, `A or B`'ye indirgenebilse bile `A|B` uygun bir bileşik tür olarak kalır. Benzer şekilde, `B extends A {}` ise, yalnızca A'ya indirgenebilse bile `A|B` uygun bir bileşik türdür.

    <?php
    function foo(): int|INT {} // izin verilmez
    function foo(): bool|false {} // izin verilmez
    function foo(): int&Traversable {} // izin verilmez
    function foo(): self&Traversable {} // izin verilmez
    use A as B;
    function foo(): A|B {} // izin verilmez ("use" ad çözünürlüğünün parçasıdır)
    function foo(): A&B {} // izin verilmez ("use" ad çözünürlüğünün parçasıdır)
    class_alias('X', 'Y');
    function foo(): X|Y {} // izin verilir (gereksizlik yalnızca çalışma anında saptanabilir)
    function foo(): X&Y {} // izin verilir (gereksizlik yalnızca çalışma anında saptanabilir)
    ?>

### Örnekler

Örnek 3 - Temel sınıf türü bildirimi

    <?php
    class C {}
    class D extends C {}
    // C'yi genişletmiyor.
    class E {}
    function f(C $c) {
        echo get_class($c)."\n";
    }
    f(new C);
    f(new D);
    f(new E);
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    C
    D
    Fatal error: Uncaught TypeError: f(): Argument #1 ($c) must be of type C, E given, called in /in/gLonb on line 14 and defined in /in/gLonb:8
    Stack trace:
    #0 -(14): f(Object(E))
    #1 {main}
      thrown in - on line 8

Örnek 4 - Temel arayüz türü bildirimi

    <?php
    interface I { public function f(); }
    class C implements I { public function f() {} }
    // I'yi gerçeklemiyor.
    class E {}
    function f(I $i) {
        echo get_class($i)."\n";
    }
    f(new C);
    f(new E);
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    C
    Fatal error: Uncaught TypeError: f(): Argument #1 ($i) must be of type I, E given, called in - on line 13 and defined in -:8
    Stack trace:
    #0 -(13): f(Object(E))
    #1 {main}
      thrown in - on line 8

Örnek 5 - Temel dönüş türü bildirimi

    <?php
    function sum($a, $b): float {
        return $a + $b;
    }
    // dikkat: float dönecek
    var_dump(sum(1, 2));
    ?>

Yukarıdaki örneğin çıktısı:

    float(3)

Örnek 6 - Bir nesne döndürmek

    <?php
    class C {}
    function getC(): C {
        return new C;
    }
    var_dump(getC());
    ?>

Yukarıdaki örneğin çıktısı:

    object(C)#1 (0) {
    }

Örnek 7 - Null olabilen bağımsız değişken bildirimi

    <?php
    class C {}
    function f(?C $c) {
        var_dump($c);
    }
    f(new C);
    f(null);
    ?>

Yukarıdaki örneğin çıktısı:

    object(C)#1 (0) {
    }
    NULL

Örnek 8 - Null olabilen dönüş türü bildirimi

    <?php
    function get_item(): ?string {
        if (isset($_GET['item'])) {
            return $_GET['item'];
        } else {
            return null;
        }
    }
    ?>

### Katı kodlama

PHP öntanımlı olarak, yanlış türdeki değerleri mümkün olduğunca beklenen sayıl türe zorlar. Örneğin, bir dizge aktarılması gereken bir bağımsız değişkene tamsayı bir değer aktarılırsa, işlev int değil string türünde bir değişken alır.

Katı kipi her dosya için ayrı ayrı etkinleştirmek mümkündür. Katı kipte, yalnızca tür bildirimine tam olarak karşılık gelen değer kabul edilir, aksi takdirde bir TypeError oluşur. Bu kuralın tek istisnası, float tür bildirimine rağmen int türünde değer aktarmaktır.

Uyarı

Dahili işlevler içinden yapılan işlev çağrıları, `strict_types` bildiriminden etkilenmez.

Katı kipi etkinleştirmek için, `strict_types` bildirimi `declare` deyiminde kullanılır:

> Bilginize:

> Katı kodlama, katı kodlamanın etkinleştirildiği dosya içindeki işlev tanımlarına değil, işlev çağrılarına uygulanır. Katı kodlama etkin olmayan bir dosyadan, katı kodlamanın etkinleştirildiği dosya içinde tanımlanmış bir işleve çağrı yapılırsa, çağrıyı yapanın tercihine (zorlayıcı kodlama) saygı gösterilecek ve değer zorlanacaktır.

> Bilginize:

> Katı kodlama yalnızca sayıl tür bildirimleri için tanımlanmıştır.

Örnek 9 - Bağımsız değişken değerlerinde katı kodlama

    <?php
    declare(strict_types=1);
    function sum(int $a, int $b) {
        return $a + $b;
    }
    var_dump(sum(1, 2));
    var_dump(sum(1.5, 2.5));
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    int(3)
    Fatal error: Uncaught TypeError: sum(): Argument #1 ($a) must be of type int, float given, called in - on line 9 and defined in -:4
    Stack trace:
    #0 -(9): sum(1.5, 2.5)
    #1 {main}
      thrown in - on line 4

Örnek 10 - Bağımsız değişken değerlerinde zorlayıcı kodlama

    <?php
    function sum(int $a, int $b) {
        return $a + $b;
    }
    var_dump(sum(1, 2));
    // Değerler tamsayıya zorlanır. Çıktıya dikkat!
    var_dump(sum(1.5, 2.5));
    ?>

Yukarıdaki örneğin çıktısı:

    int(3)
    int(3)

Örnek 11 - Dönüş değerlerinde katı kodlama

    <?php
    declare(strict_types=1);
    function sum($a, $b): int {
        return $a + $b;
    }
    var_dump(sum(1, 2));
    var_dump(sum(1, 2.5));
    ?>

Yukarıdaki örneğin çıktısı:

    int(3)
    Fatal error: Uncaught TypeError: sum(): Return value must be of type int, float returned in -:5
    Stack trace:
    #0 -(9): sum(1, 2.5)
    #1 {main}
      thrown in - on line 5

Örnek 12 - Sınıf özellik türü bildirimi

    <?php
    class User {
        public static string $foo = 'foo';

        public int $id;
        public string $username;

        public function __construct(int $id, string $username) {
            $this->id = $id;
            $this->username = $username;
        }
    }
    ?>

## Tür Dönüşümü

PHP değişken bildiriminde tür tanımlamayı gerektirmez. Bu durumda değişkenin türü saklanan değere göre saptanır. Yani, string türünde bir değer $var değişkenine atanırsa, $var string türünde bir değişken haline gelir. $var değişkenine bir int değer atanırsa, $var int türünde bir değişken haline gelir.

PHP belli bağlamlarda bir değerin türünü otomatik olarak dönüştürmeyi deneyebilir:

- Sayısal
- Dizgesel
- Mantıksal
- Tamsayılar ve dizge
- Karşılaştırmalı
- İşlevsel

> Bilginize: Bir değerin farklı bir türde yorumlanması gerektiğinde değerin kendisinde tür değişikliği yapılmaz.

Bir değişkeni belli bir türde değerlendirilmeye zorlamak için Tür Çarpıtma, bir değişkenin türünü değiştirmek için ise settype() işlevinin açıklamasına bakılabilir.

### Sayısal bağlamlar

Aritmetik işleçlerin kullanıldığı bağlamlardır.

Bu bağlamlarda, terimlerden biri float türündeyse her iki terim float olarak ele alınır ve sonuç float türünde olur. Aksi takdirde, terimler int olarak yorumlanır ve sonuç int türünde olur. PHP 8.0.0 ve sonrasında, terimlerden birinin yorumlanamaması TypeError istisnasına yol açabilir.

### Dizgesel bağlamlar

echo, print, dizge çözümlemesi veya dizge birleştirme işleci kullanılan bağlamlardır.

Bu bağlamlarda değer string olarak yorumlanır. Değer yorumlanabilir değilse TypeError oluşur.. PHP 7.4.0 öncesinde `E_RECOVERABLE_ERROR` hatası oluşurdu.

### Mantıksal bağlamlar

Üç terimli işleç veya mantıksal işleçlerin kullanıldığı koşullu deyimler içeren bağlamlardır.

Bu bağlamlarda değer bool türünde ele alınır.

### Tamsayı ve dizge bağlamlar

Bitsel işleç kullanılan bağlamlardır.

Bu bağlamlarda tüm terimler string türündeyse sonuç da string türünde olur. Aksi takdirde, terimler int türünde yorumlanır ve sonuç da int türünde olur. PHP 8.0.0 ve sonrasında, terimlerden birinin yorumlanamaması TypeError istisnasına yol açabilir.

### Kaşılaştırmalı bağlamlar

Karşılaştıma işleçleri kullanılan bağlamlardır.

Bu bağlamlarda görülen tür dönüşümleri Çeşitli Türlerin Karşılaştırılması tablosunda açıklanmıştır.

### İşlevsel bağlamlar

Bir değerin belli bir türdeki bir bağımsız değişkene veya özelliğe atandığı veya dönüş türü bildiren bir işlevden döndürüldüğü bağlamlardır.

Bu bağlamlarda değerin bir türü olmalıdır. Bunun iki istisnası vardır. İlk istisna: Değer int türündeyse ve bildirilen tür float ise tamsayı gerçek sayıya dönüştürülür. İkinci istisna: Bildirim türü sayıl türlerden biriyse değer bir sayıl türe dönüştürülebilir, zorlayıcı tür kipi etkinse (öntanımlıdır), değer uygun bir sayıl türe dönüştürülebilir. Bu davranışın açıklaması aşağıda bulunabilir.

Uyarı

Dahili işlevler sayıl türleri otomatik olarak `null`'a dönüşmeye zorlar; bu davranışın PHP 8.1.0 itibariyle KULLANIMI ÖNERİLMEMEKTEDİR.

#### Basit tür bildirimli zorlayıcı tür kipi

- bool türünde bildirim: değer bool türünde değerlendirilir.
- int türünde bildirim: dönüşüm olması gerektiği gibi ise değer int türünde değerlendirilir. Örnek: Sayısal dizgeler.
- float türünde bildirim: dönüşüm olması gerektiği gibi ise değer float türünde değerlendirilir. Örnek: Sayısal dizgeler.
- string türünde bildirim: değer string türünde değerlendirilir.

#### Birleşim türleriyle zorlanmış tür dönüşümü

`strict_types` etkin olduğunda sayıl tür bildirimlerine örtük olarak sınırlı tür zorlamaları uygulanır. Değerin asıl türü birleşimin (union) parçası değilse hedef tür aşağıdaki öncelik sırasına göre belirlenir:

1. int
2. float
3. string
4. bool

Tür hem birleşimde hem de değerde mevcutsa, PHP'nin mevcut tür sınama anlamlandırmasına uygun olarak değerin türü zorlanarak tür seçilir, değilse birleşimin sonraki türü denenir.
Dikkat

Bir istisna olarak, değer bir dizgeyse ve hem int hem de float birleşime dahilse tercihli tür mevcut "sayısal dizge" anlamlandırmasına göre belirlenir. Örneğin, `"42"` değeri için int seçilirken, `"42.0"` değeri için float seçilir.

> Bilginize:

> Yukarıdaki tercih listesine dahil olmayan türler örtük zorlama için seçilebilir hedefler değildir. Özellikle, null, false ve true değerlere hiçbir örtük zorlama uygulanmaz.

Örnek 1 - Birleşimin türlerinden birine zorlama örneği

    <?php
    // int|string
    42    --> 42          // kesin tür
    "42"  --> "42"        // kesin tür
    new ObjectWithToString --> "__toString() sonucu"
                          // nesne int ile uyumsuz, son çare: string
    42.0  --> 42          // float ile int uyumlu
    42.1  --> 42          // float ile int uyumlu
    1e100 --> "1.0E+100"  // float; int için çok büyük, son çare: string
    INF   --> "INF"       // float; int için çok büyük, son çare: string
    true  --> 1           // bool ile int uyumlu
    []    --> TypeError   // array ile int veya string uyumlu değil

    // int|float|bool
    "45"    --> 45        // int sayısal dizge
    "45.0"  --> 45.0      // float sayısal dizge

    "45X"   --> true      // sayısal dizge değil, son çare: bool
    ""      --> false     // sayısal dizge değil, son çare: bool
    "X"     --> true      // sayısal dizge değil, son çare: bool
    []      --> TypeError // array ile int, float veya bool uyumlu değil
    ?>

### Tür Çarpıtma

İstenen türün ismi yaylı ayraçlar arasında türü çarpıtılacak değişkenin önüne yazılır.

    <?php
    $foo = 10;            // $foo bir tamsayıdır
    $bar = (bool) $foo;   // $bar mantıksal türdedir
    ?>

İzin verilen çarpıtmalar:

- `(int)` - int türüne dönüşüm
- `(bool)` - bool türüne dönüşüm
- `(float)` - float türüne dönüşüm
- `(string)` - string türüne dönüşüm
- `(array)` - array türüne dönüşüm
- `(object)` - object türüne dönüşüm
- `(unset)` - NULL'a dönüşüm

> Bilginize:

> `(integer)` çarpıtması `(int)` için takma addır. `(boolean)` çarpıtması `(bool)` için takma addır. `(binary)` çarpıtması `(string)` için takma addır. `(double)` ve `(real)` çarpıtması `(float)` için takma addır. Meşru tür isimleri kullanılmayan bu çarpıtmaların kullanımı önerilmemektedir.

Uyarı

PHP 8.0.0 ve sonrasında `(real)` dönüşüm takma adının kullanımı önerilmemektedir.

Uyarı

`(unset)` çarpıtması PHP 7.2.0 ve sonrasında önerilmemektedir. `(unset)` çarpıtması değişken veya çağrıya NULL değer atanmasıyla aynıdır. `(unset)` çarpıtması PHP 8.0.0 sürümünde kaldırılmıştır.

Dikkat

`(binary)` çarpıtması ve `b` öneki ileriye dönük desteklenmektedir. Halen `(binary)` çarpıtması `(string)` ile aynı olsa da buna güvenilmemelidir.

> Bilginize:

> Çarpıtmada yaylı ayraçların içinde sekmelere ve boşluklara izin verildiğinden aşağıdaki iki deyim eşdeğerdir:

>     <?php
>     $foo = (int) $bar;
>     $foo = ( int ) $bar;
>     ?>

Normal dizgelerin ikil dizgelere dönüştürülmesi:

    <?php
    $binary = (binary) $string;
    $binary = b"ikil dizge";
    ?>

> Bilginize: Bir değişkenin türünü string türüne çarpıtmak yerine değişkeni çift tırnak içine almak aynı sonucu sağlar:

>     <?php
>     $foo = 10;            // $foo integer türündedir
>     $str = "$foo";        // $str string türündedir
>     $fst = (string) $foo; // $fst de string türündedir

>     // "bunlar aynı" basar
>     if ($fst === $str) {
>         echo "bunlar aynı";
>     }
>     ?>

Belli türler arasında çarpıtma yapılırken tam olarak ne olup bittiği açıkça belli olmayabilir. Daha fazla bilgi için şu bölümlere bakınız:

- `bool` türüne dönüşüm
- `integer` türüne dönüşüm
- `float` türüne dönüşüm
- `string` türüne dönüşüm
- `array` türüne dönüşüm
- `object` türüne dönüşüm
- `resource` türüne dönüşüm
- `NULL`'a dönüşüm
- Tür karşılaştırma tabloları

> Bilginize: PHP dizgelerde dizge içi konumlar üzerinden dizilerdeki gibi indislemeyi desteklemektedir. Aşağıdaki örnekler tüm PHP sürümlerinde çalışır:

>     <?php
>     $a    = 'car'; // $a bir dizgedir
>     $a[0] = 'b';   // $a hala bir dizgedir
>     echo $a;       // bar
>     ?>

> Daha ayrıntılı bilgi için bkz: Karakter Karakter Dizgeye Erişim.

# Değişkenler

## İçindekiler

- Temeller
- Öntanımlı Değişkenler
- Değişken etki alanı
- Değişken değişkenler
- Dış Kaynaklı Değişkenler

## Temeller

PHP'de değişkenler dolar işaretini takip eden bir değişken adı ile gösterilir. Değişken adı büyük-küçük harf duyarlıdır.

Değişken isimleri PHP'deki diğer yaftalarla aynı kurallara tabidir. Geçerli bir değişken ismi bir harf veya alt çizgi imi ile başlar, herhangi sayıda harf, sayı veya alt çizgi iminden oluşur. Düzenli ifade olarak, şu şekilde ifade edilebilir: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`

> Bilginize: Burada kastedilen harf a-z veya A-Z arasındaki ASCII harfler ve 128 ile 255 (`0x80-0xff`) arasındaki baytlardır.

> Bilginize: `$this` atama yapılamayan özel bir değişkendir. PHP 7.1.0'dan önce dolaylı atama (örn. değişken değişkenler kullanılarak) mümkündü.

İpucu

Ayrıca Kullanıcı Alanı İsimlendirme Kılavuzu belgesine de bakılabilir.

Değişkenlerle ilgili işlevler hakkında bilgi için, Değişkenlerle ilgili işlevler belgesine bakınız.

    <?php
    $var = 'Kemal';
    $Var = 'gel';
    echo "$var, $Var";      // "Kemal, gel" yazdırır

    $4site = 'dene bakalım';     // geçersiz; sayı ile başlar
    $_4site = 'dene bakalım';    // geçerli; alt çizgi ile başlar
    $diğer = 'gerekirse diye';   // geçerli; ISO-8859-9'da 'ğ' harfi 127-255
                                 // arasında, UTF-8'de ise iki baytı 127-255
                                 // arasındadır.
    ?>

Öntanımlı olarak, değişkenler her zaman değerleriyle atanır. Başka bir deyişle, bir değişkene bir ifade atandığında özgün ifade bütün değeriyle hedef değişkene kopyalanır. Bu demektir ki, örneğin, bir değişkenin değerini başka bir değişkene atadıktan sonra, değişkenlerden birisinin değerini değiştirmenin diğeri üzerinde etkisi olmayacaktır. Bu çeşit atama hakkında daha fazla bilgi için, İfadeler bölümüne bakınız.

PHP değişkenlere değer atamak için başka bir yol daha sunar: Gönderimli atama. Yani, yeni değişken sadece asıl değişkene gönderim yapar (diğer bir deyişle, "onun takma adı olur" veya "onu gösterir") Gönderim yapılan değişkendeki değişiklikler aslını da etkiler, tersi de geçerlidir.

Gönderimli atama için, gönderim yapılacak (daha önce değer atanmış) değişkenin başına ve imi (&) ekleyin. Örneğin, aşağıdaki kod parçası iki kez '`Benim adım Mustafa`' yazar:

    <?php
    $foo = 'Mustafa';          // 'Mustafa' değerini $foo değişkenine ata
    $bar = &$foo;              // $foo değişkenini $bar değişkenine gönderimli ata
    $bar = "Benim adım $bar";  // $bar değişkenini değiştir ...
    echo $bar;
    echo $foo;                 // $foo değişkeninin değeri de değişti.
    ?>

Dikkat edilmesi gereken önemli bir şey de sadece isimli değişkenlerin gönderimle atanabileceğidir.

    <?php
    $foo = 25;
    $bar = &$foo;      // Bu geçerli bir atamadır.
    $bar = &(24 * 7);  // Geçersiz; isimlendirilmemiş bir ifadeye gönderim yapıyor

    function test()
    {
       return 25;
    }

    $bar = &test();    // Geçersiz.
    ?>

PHP'de değişkenleri ilklendirmek gerekmez ancak baştan bir değer atamak oldukça iyi bir alışkanlıktır. İlklendirilmeyen değişkenlerin kullanıldıkları bağlamda türlerine bağlı olarak öntanımlı değerleri vardır; öntanımlı değer boolean için `false`, integer ve float için sıfır, string için boş metin (örnekte echo da kullanıldı), array için ise boş bir dizidir.

Örnek 1 - İlklendirilmemiş değişkenlerin öntanımlı değerleri

    <?php
    // Herhangi bir bağlamda tanımlanmamış veya
    // gönderim yapılmamış değişken;  NULL sonuç verir.
    var_dump($tanımsız_değişken);

    // Mantıksal değer kullanımı;  'false' çıktısı verir
    // (Bu sözdizimi için üç terimli işlecine bakınız)
    echo $tanımsız_mantıksallık ? "true\n" : "false\n";

    // Dizge kullanımı;  çıktısı: 'string(3) "abc"'
    $tanımsız_metin .= 'abc';
    var_dump($tanımsız_metin);

    // Tamsayı kullanımı;  'int(25)' çıktılar.
    $tanımsız_tamsayı += 25;    // 0 + 25 => 25
    var_dump($tanımsız_tamsayı);

    // Gerçek sayı kullanımı;  'float(1.25)' çıktılar.
    $tanımsız_sayı += 1.25;
    var_dump($tanımsız_sayı);

    // Dizi kullanımı; çıktısı: array(1) {  [3]=>  string(3) "def" }
    $tanımsız_dizi[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
    var_dump($tanımsız_dizi);

    // Nesne kullanımı; yeni stdClass nesnesi oluşturur
    // (Öntanımlı sınıflar belgesine bakınız:
    // http://www.php.net/manual/tr/reserved.classes.php)
    // Çıktısı: object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }
    $tanımsız_nesne->foo = 'bar';
    var_dump($tanımsız_nesne);
    ?>

İlklendirilmemiş bir değişkenin öntanımlı değerine güvenmek, içinde aynı değişken isminin kullanıldığı bir dosyayı betiğe dahil ettiğinizde sorun çıkarır. İlklendirilmemiş değişken kullanımı `E_WARNING` (PHP 8.0.0 öncesinde, `E_NOTICE`) seviyesinde hata oluşturur, ancak ilklendirilmemiş bir diziye eleman eklenmesi halinde hata oluşmaz. isset() dil oluşumu bir değişkenin ilklendirilip ilklendirilmediğini öğrenmek için kullanılabilir.

## Öntanımlı Değişkenler

PHP çalıştırdığı herhangi bir betiğe çok sayıda önceden tanımlı değişken sağlar. Ancak, bu değişkenlerin çoğu hangi sunucunun çalıştığına, sunucunun sürümüne ve kurulumuna ve başka bir çok şeye bağlı olduğu için tam olarak belgelendirilememektedir. Bu değişkenlerden bazıları PHP komut satırından çalıştığında mevcut olmayacaktır. Ayrıntılar için, öntanımlı değişkenler listesine bakınız.

PHP, ayrıca, ortam değişkenleri ve kullanıcı girdi değişkenleri ile HTTP sunucusundaki değişkenleri (eğer uygulanabiliyorsa) içeren bir takım önceden tanımlı diziler sağlamaktadır. Bu diziler özel olmaktan ziyade otomatik olarak küreseldir, yani, otomatik olarak her etki alanında bulunurlar. Bu nedenle, "Süper küreseller" olarak bilinirler. (PHP'de kullanıcı-tanımlı süper küreseller için bir mekanizma yoktur.) Ayrıntılar için bkz, list of süper küresellerin listesi.

> Bilginize: Değişken değişkenler

> İşlevler veya sınıf yöntemleri içinde süper küreseller değişken değişkenleri olarak kullanılamazlar.

Eğer variables_order yönergesine uygun değişkenler atanmamışsa, ilgili oldukları PHP önceden tanımlı dizileri de boş bırakılır.

## Değişken etki alanı

Bir değişkenin etki alanı içinde tanımlandığı bağlamdır. Hemen her PHP değişkeninin sadece tek bir etki alanı vardır. Bu tek etki alanı betiğe include ve require ile dahil edilen dosyalara da uzanır. Örneğin:

    <?php
    $a = 1;
    include 'b.inc';
    ?>

Burada $a değişkeni içerilen b.inc betiğinin içinde mevcut olacaktır. Fakat, kullanıcı tanımlı işlevlerin etki alanı işleve özeldir. Yani, bir işlev içinde kullanılan herhangi bir değişkenin etki alanı öntanımlı olarak işlevin yerel etki alanı ile sınırlıdır. Örneğin:

    <?php
    $a = 1; /* küresel etki alanı */

    function deneme()
    {
        echo $a; /* işlevin etki alanı */
    }

    deneme();
    ?>

Bu betik tanı iletisi olarak `E_WARNING` (PHP 8.0.0 öncesinde `E_NOTICE`) üretir. display_errors INI yönergesi tanı iletilerini gizlemek üzere atanırsa bu betik herhangi bir çıktı üretmeyecektir, çünkü echo ifadesi $a değişkeninin yerel sürümüne atıf yapmakta olup bu etki alanı içinde değişkene bir değer atanmamıştır. Bunun C dilinden bir miktar farklı olduğuna dikkat edilmelidir, C dilinde küresel değişkenler, özellikle yerel bir tanımla geçersiz kılınmadıkları sürece, işlevler tarafından otomatik olarak erişilebilir olacaktır. Bu bazı sorunlara yol açabilir, öyle ki birileri dikkatsizlikle küresel değişkeni değiştirebilir. PHP'de küresel değişkenler eğer bir işlev içinde kullanılacaksa, o işlev içinde `global` sözcüğü ile bildirilmeleri gerekir.

### `global` anahtar sözcüğü

İlk olarak, `global` kullanımına bir örnek verelim:

Örnek 1 - `global` kullanımı

    <?php
    $a = 1;
    $b = 2;

    function topla()
    {
        global $a, $b;

        $b = $a + $b;
    }

    topla();
    echo $b;
    ?>

Yukarıdaki betik `3` çıktısı verecektir. $a ve $b işlev içinde küresel tanımlanarak, her iki değişkene yapılan bütün atıflar küresel sürüme yapılmış olacaktır. Bir işlev tarafından işlenebilecek küresel değişken sayısında bir sınır yoktur.

Küresel etki alanındaki değişkenlere erişimin ikinci yolu PHP tarafından tanımlanmış özel $GLOBALS dizisini kullanmaktır. Önceki örnek şu şekilde yazılabilir:

Örnek 2 - `global` yerine $GLOBALS kullanımı

    <?php
    $a = 1;
    $b = 2;

    function topla()
    {
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
    }

    topla();
    echo $b;
    ?>

$GLOBALS dizisi, anahtarı küresel değişkenin ismi, elemanının değeri değişkenin içeriği olan bir ilişkisel dizidir. $GLOBALS dizisinin her etki alanında mevcut oluşuna dikkat edin, bunun sebebi$GLOBALS dizisinin bir süper küresel olmasıdır. Süper küresellerin gücünü gösteren bir örnek aşağıda verilmiştir:

Örnek 3 - Süper küreselleri ve etki alanlarını gösteren örnek

    <?php
    function test_superglobal()
    {
        echo $_POST['isim'];
    }
    ?>

> Bilginize:

> Eğer içerildiği dosya bir işlevin içinde içerilmişse `global` anahtar sözcüğünün işlevlerin dışında kullanımı bir hataya yol açmaz.

### Statik değişkenlerin kullanımı

Değişken etki alanı ile ilgili önemli özelliklerden biri statik değişkenlerdir. Bir statik bir değişken sadece işlevin etki alanında geçerli olup, programın çalışması bu etki alanını terkettiği zaman değerini kaybetmez. Aşağıdaki örneğı ele alalım:

Örnek 4 - Statik değişkenlere ihtiyacı gösteren örnek

    <?php
    function dene()
    {
        $a = 0;
        echo $a;
        $a++;
    }
    ?>

Bu işlev her çağrıldığında $a'yı `0` yapar ve `0` yazdırır, bu nedenle oldukça kullanışsızdır. Değişkeni artıran `$a++` bir işe yaramaz çünkü işlev çıktığı gibi $a değişkeni kaybolur. Kaldığı değeri kaybetmeyecek kullanışlı bir sayaç işlevi yapması için $a değişkeni aşağıda `static` olarak bildirilmiştir.

Örnek 5 - Statik değişkenlerin kullanım örneği

    <?php
    function dene()
    {
        static $a = 0;
        echo $a;
        $a++;
    }
    ?>

Artık, $a değişkeni sadece `dene()` işlevinin ilk çağrılışında ilklendirilecek ve işlevin her çağrılışında $a değişkeninin değerini bastıktan sonra değerini bir artıracaktır.

Statik değişkenler aynı zamanda kendini çağıran işlevlerle çalışmak için de bir yol sunar. Kendini çağıran (recursive) işlev kendi kendini çağırır. Böyle bir işlev dikkatli yazılmazsa sonsuza kadar kendi kendini çağırır. Kendini çağırmayı bir noktada sonlandıracak uygun bir yönteminiz olmalıdır. Aşağıdaki basit işlev, kendini çağırmayı nerede durduracağını bilerek 10'a kadar sayar:

Örnek 6 - Kendini çağıran işlevlerle statik değişkenler

    <?php
    function say()
    {
        static $sayaç = 0;

        $sayaç++;
        echo "$sayaç\n";
        if ($sayaç < 10) {
            say();
        }
        $sayaç--;
    }
    say();
    ?>

Statik değişkenlere sabit ifadelerin sonucu olan değerler atanabilir, ancak işlev çağrıları gibi dinamik ifadeler bir ayrıştırma hatasına sebep olur.

Örnek 7 - Statik değişkenlerin bildirimi

    <?php
    function foo(){
        static $int = 0;          // doğru
        static $int = 1+2;        // doğru
        static $int = sqrt(121);  // yanlış (bir işlevle atandığı için)

        $int++;
        echo $int;
    }
    ?>

PHP 8.1.0 ve sonrasında, statik değişken kullanan bir yöntem miras alındığında (geçersiz kılınmamak şartıyla), statik değişkenlerini ebeveyn yöntemle paylaşmaktadır. Yani, yöntemlerdeki statik değişkenler artık birer statik özellik gibi davranmaktadır.

Örnek 8 - Miras alınan yöntemlerde statik değişken kullanımı

    <?php
    class Foo {
        public static function counter() {
            static $counter = 0;
            $counter++;
            return $counter;
        }
    }
    class Bar extends Foo {}
    var_dump(Foo::counter()); // int(1)
    var_dump(Foo::counter()); // int(2)
    var_dump(Bar::counter()); // int(3), PHP 8.1.0 öncesi int(1)
    var_dump(Bar::counter()); // int(4), PHP 8.1.0 öncesi int(2)
    ?>

> Bilginize:

> Statik bildirimler derleme sırasında çözümlenir.

### `global` ve `static` değişkenlere gönderim

`static` ve `global` değişken niteleyicileri gönderim olarak gerçeklenmiştir. Örneğin, `global` deyimi ile bir işlevin etki alanında geçerli kılınan bir küresel değişken aslında kendine bir gönderim oluşturur. Bu durum aşağıdaki örnekte de görüldüğü gibi beklenmedik davranışlara yol açabilir:

    <?php
    function gönderimli_küresel_dene() {
        global $nesne;
        $yeni = new stdClass;
        $nesne = &$yeni;
    }

    function gönderimsiz_küresel_dene() {
        global $nesne;
        $yeni = new stdClass;
        $nesne = $yeni;
    }

    gönderimli_küresel_dene();
    var_dump($nesne);
    gönderimsiz_küresel_dene();
    var_dump($nesne);
    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    object(stdClass)#1 (0) {
    }

Aynı davranış `static` deyimine de uyar. Gönderimler statik olarak saklanmazlar:

    <?php
    function &gönderimli_örnek() {
        static $obj;

        echo 'Statik nesne: ';
        var_dump($obj);
        if (!isset($obj)) {
            $new = new stdClass;
            // Statik değişkene gönderim atayalım
            $obj = &$new;
        }
        if (!isset($obj->property)) {
            $obj->property = 1;
        } else {
            $obj->property++;
        }
        return $obj;
    }

    function &gönderimsiz_örnek() {
        static $obj;

        echo 'Statik nesne: ';
        var_dump($obj);
        if (!isset($obj)) {
            // Statik değişkene nesne atayalım
            $obj = new stdClass;
        }
        $obj->property++;
        return $obj;
    }

    $nesne1 = gönderimli_örnek();
    $bu_da_nesne1 = gönderimli_örnek();
    echo "\n";
    $nesne2 = gönderimsiz_örnek();
    $bu_da_nesne2 = gönderimsiz_örnek();
    ?>

Yukarıdaki örneğin çıktısı:

    Statik nesne: NULL
    Statik nesne: NULL

    Statik nesne: NULL
    Statik nesne: object(stdClass)#3 (1) {
      ["property"]=>
      int(1)
    }

Bu örnek, bir statik değişkene gönderimli atama yapılması halinde, `&gönderimli_örnek()` işlevi ikinci kez çağrıldığında değişkene atanan değerin saklanmadığını gösterir.

## Değişken değişkenler

Bazen değişken değişken isimlerine sahip olabilmek kullanışlı olur. Bu, dinamik olarak belirtilebilen ve kullanılabilen bir değişken ismidir. Normal bir değişken şöyle bir deyimle atanır:

    <?php
    $a = 'merhaba';
    ?>

Bir değişken değişken bir değişkenin değerini alır ve bir değişkenin ismi gibi davranır. Yukarıdaki örnekteki, merhaba, iki tane dolar imi ile bir değişken ismi olarak kullanlabilir

    <?php
    $$a = 'dünya';
    ?>

Bu noktada PHP sembol ağacında iki değişken tanımlanmış ve saklanmış olur: $a "merhaba" içerirken $merhaba ise "dünya" içerir. Bu nedenle, aşağıdaki iki örnek aynı sonucu üretir:

    <?php
    echo "$a {$$a}";
    ?>

    <?php
    echo "$a $merhaba";
    ?>

Her ikisi de 'merhaba dünya' üretir.

Değişken değişkenleri dizilerle kullanmak için, bir anlam karmaşası sorununu çözümlemeniz gerekir. $$a[1] yazdığınızda değişken olarak $a[1]'i mi kastettiğiniz, yoksa $$a'nın değişken olmasını isteyip [1] ile o değişkenin indisini mi kastettiğinizi çözümleyicinin bilmesi gerekir. Bu anlam karmaşasını çözümleyen söz dizimi, birinci durum için ${$a[1]} ve ikinci için ${$a}[1]'dir.

Sınıf özelliklerine değişken özellik isimlerinden de erişilebilir. Değişken özellik ismi çağrının yapıldığı etki alanı içinde çözümlenir. Örneğin, $foo->$zam gibi bir değişkeniniz olsun; burada $zam'ın etki alanı incelenir ve $foo özelliğinin ismi olarak kullanılır. $zam, bir diziye erişim için kullanılıyorsa yine aynı durum geçerlidir.

Kaşlı ayraçlar, özellik ismini açıkça sınırlamak için de kullanılabilir. Bir dizi içinde bulunan bir özelliğin değerlerine erişmek için ya da özellik ismi başka türlü geçerli olmayan karakterler (örn, json_decode() veya SimpleXML ile üretilmiş) içeriyorsa çok kullanışlıdır.

Örnek 1 - Değişken özellik örneği

    <?php
    class foo {
        var $bar = 'I am bar.';
        var $arr = array('I am A.', 'I am B.', 'I am C.');
        var $r   = 'I am r.';
    }

    $foo = new foo();
    $bar = 'bar';
    $baz = array('foo', 'bar', 'baz', 'quux');
    echo $foo->$bar . "\n";
    echo $foo->{$baz[1]} . "\n";

    $start = 'b';
    $end   = 'ar';
    echo $foo->{$start . $end} . "\n";

    $arr = 'arr';
    echo $foo->{$arr[1]} . "\n";

    ?>

Yukarıdaki örneğin çıktısı:

I am bar.
I am bar.
I am bar.
I am r.
Uyarı

Değişken değişkenlerin işlev ve sınıf yöntemleri içinde PHP'nin Süper küresel dizileri ile kullanılamayacağını unutmayınız. `$this` değişkeni de dinamik olarak gönderimli olamayan özel bir değişkendir.

## Dış Kaynaklı Değişkenler

### HTML Formları (GET ve POST)

Bir PHP betiğine bir form gönderildiğinde o formdaki bilgi betik tarafından otomatik olarak kullanılır. Bu bilgiye erişmek için birçok yol vardır, örneğin:

Örnek 1 - Basit bir HTML formu

    <form action="foo.php" method="post">
        Name:  <input type="text" name="kullanici_adi" /><br />
        Email: <input type="text" name="eposta" /><br />
        <input type="submit" name="submit" value="Beni gönder!" />
    </form>

HTML formlarınızdaki bilgiye erişimin iki yolu vardır. Şu an için kullanılabilen yöntemler aşağıda sıralanmıştır:

Örnek 2 - Basit bir POST HTML formundan bilgiye erişim

    <?php

    echo $_POST['kullanici_adi'];
    echo $_REQUEST['kullanici_adi'];
    ?>

Bunun yerine önceden tanımlı uygun bir GET değişkeni kullanmak dışında, GET formunun kullanımı aynıdır. GET ayrıca `QUERY_STRING` (Bir URL'de '?' iminden sonraki bilgi) sorgu dizgesine de uygulanır. Bu bakımdan örneğin, `http://mesela.dom/dnm.php?id=3` $_GET['id'] ile erişilebilen GET verisini içerir. Ayrıca, $_REQUEST değişkenine de bakınız.

> Bilginize:

> Değişken isimlerindeki noktalar ve boşluklar altçizgi karakterine dönüştürülür. Örneğin, `<input name="a.b" />` ifadesi `$_REQUEST["a_b"]` haline gelir.

PHP form değişkenleri bağlamında dizileri de anlar (ilgili SSS'ye bakınız). Örneğin, ilgili değişkenleri birlikte gruplayabilir veya bu özelliği çoklu seçim girdisinden değerleri almak için kullanabilirsiniz. Örneğin, bir formu kendine gönderelim ve gönderilen veriyi gösterelim:

Örnek 3 - Daha karmaşık form değişkenleri

    <?php
    if ($_POST) {
        echo '<pre>';
        echo htmlspecialchars(print_r($_POST, true));
        echo '</pre>';
    }
    ?>
    <form action="" method="post">
        Adı:  <input type="text" name="personal[isim]" /><br />
        Eposta: <input type="text" name="personal[eposta]" /><br />
        Bira: <br />
        <select multiple name="bira[]">
            <option value="efes">Efes</option>
            <option value="tuborg">Tuborg</option>
            <option value="venus">Venüs</option>
        </select><br />
        <input type="submit" value="Gönder!" />
    </form>

> Bilginize: Harici değişken ismi geçerli bir dizi sözdizimi ile başlıyorsa sondaki karakterler sessizce yoksayılır. Örneğin, `<input name="foo[bar]baz">` girdisi `$_REQUEST['foo'] ['bar']` haline gelir.

#### Gönder düğmesi değişken isimleri

Bir formu gönderirken, şöyle bir etiketle standart gönder düğmesi yerine görüntü kullanılabilir:

    <input type="image" src="image.gif" name="sub" />

Kullanıcı görüntü üzerinde bir yere tıkladığında, eşlik eden form iki ek değişkenle sunucuya iletilmiş olur: sub_x ve sub_y. Bunlar kullanıcın görüntü üzerinde tıkladığı noktanın koordinatlarını içerir. Deneyimliler tarayıcı tarafından gönderilen asıl değişken isimlerinin alt çizgi yerine nokta içerdiğine dikkat etmiş olabilirler, fakat PHP noktaları otomatik olarak alt çizgiye çevirir.

### HTTP Çerezleri

PHP, » RFC 6265'de tanımlandığı gibi HTTP çerezlerini şeffaf olarak destekler. Çerezler kullanıcıları izleyip tanımlamak amacıyla kullanıcının tarayıcısında veri saklamak için kullanılan bir yöntemdir. Çerezleri setcookie() işlevini kullanarak belirtebilirsiniz. Çerezler HTTP başlığının bir parçasıdır, bu nedenle setcookie() işlevi tarayıcıya herhangi bir çıktı gönderilmeden önce çağrılmak zorundadır. Bu kısıtlama header() işlevi için de geçerlidir. Çerez verisi $_COOKIE veya $_REQUEST gibi uygun çerez veri dizisinde bulunur. Ayrıntılar ve örnekler için setcookie() kılavuz sayfasına bakınız.

> Bilginize: Sırasıyla PHP 7.2.34, 7.3.23 ve 7.4.11'den itibaren, gelen çerezlerin isimleri güvenlik kaygıları nedeniyle artık url-kodlu değildir.

Eğer tek bir çerez değişkenine birden fazla değer atamak isterseniz, değişkeni bir dizi olarak atayabilirsiniz. Örneğin:

    <?php
      setcookie("Cerezim[foo]", 'Deneme 1', time()+3600);
      setcookie("Cerezim[bar]", 'Deneme 2', time()+3600);
    ?>

Her ne kadar betiğinizde `Cerezim` tek bir dizi olsa da bu iki ayrı çerez oluşturacaktır. Eğer birden fazla değere sahip tek bir çerez atamak isterseniz, önce değer üzerinde serialize() veya explode() kullanmayı düşünün.

Yolu veya alan adı farklı olmadığı sürece aynı isimdeki bir çerez önceki çerezin üzerine yazılır. Böylece, isterseniz örneğin bir alışveriş sepeti uygulaması için bir sayaç tutabilir ve bunu karşıya aktarabilirsiniz.

Örnek 4 - setcookie() örneği

    <?php
    if (isset($_COOKIE['sayac'])) {
        $sayac = $_COOKIE['sayac'] + 1;
    } else {
        $sayac = 1;
    }
    setcookie('sayac', $sayac, time()+3600);
    setcookie("Sepet[$sayac]", $mal, time()+3600);
    ?>

### Gelen değişken isimleri içindeki noktalar

Genellikle, PHP bir betiğe aktarılan değişken isimlerini değiştirmez. Fakat, nokta iminin PHP'de değişken isimlerinde geçerli bir karakter olmadığına dikkat edilmelidir. Örnek:

    <?php
    $varname.ext;  /* geçersiz değişken ismi */
    ?>

Burada, yazım denetleyicinin gördüğü $varname isimli bir değişkeni takip eden bir dizge birleştirme işlemi ve çıplak bir (tırnaklarla çevrilmemiş, herhangi bir anahtar veya anahtar sözcük ile eşleşmeyen dizge) 'ext' metnidir. Açıkça görülüyor ki, bu istenen sonucu vermemektedir.

Bu nedenle, PHP'nin gelen değişken isimlerindeki nokta imlerini alt çizgi imi ile değiştirdiğini bilmekte yarar vardır.

### Değişken türlerini belirlemek

Değişken türlerini PHP belirlediği ve (genellikle) gerektiği gibi değiştirdiği için, verilen bir değişkenin herhangi bir anda hangi türde olduğu sorgulanmadan bilinemez. PHP'de bir değişkenin hangi türde olduğunu bulan birçok işlev vardır. Örnek: gettype(), is_array(), is_float(), is_int(), is_object() ve is_string(). Ayrıca Türler bölümüne de bakınız.

Bir metin protokolü olarak HTTP'de, çoğunlukla, tamamen olmasa da, Süper küresel diziler içinde gelen içerik dizge olarak kalır. PHP değerleri belli bir türe dönüştürmeyi denemez. Aşağıdaki örnekte, $_GET["var1"] değişkeni "null" ve $_GET["var2"]ise "123" dizgesini içerecektir.

    /index.php?var1=null&var2=123

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.34, 7.3.23, 7.4.11 | Gelen çerezlerin isimleri güvenlik kaygıları nedeniyle artık url-kodlu değildir.

# Sabitler

## İçindekiler

- Söz dizimi
- Öntanımlı Sabitler
- Sihirli Sabitler

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 sihirli sabitler hariç). Sabitler harf büyüklüğüne duyarlıdır. Geleneksel olarak, sabit isimleri daima büyük harfle yazılır.

> Bilginize:

> PHP 8.0.0'dan önce, define() işlevi kullanılarak tanımlanan sabitler harf büyüklüğüne duyarsız olabilir.

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: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`

Geçersiz ismleri ve PHP kullanımına ayrılmış isimleri define() işlevi ile tanımlamak mümkünse de bunların değeri sadece constant() işlevi ile elde edilebilir. Ancak, bu tavsiye edilmez.

İpucu

Ayrıca Kullanıcı Alanı İsimlendirme Kılavuzu belgesine de bakılabilir.

Örnek 1 - Geçerli ve geçersiz sabit isimleri

    <?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");

    ?>

> Bilginize: Burada bir harften söz ettiğimiz zaman, ASCII a-Z, A-Z ve karakter kodu 128-255 (`0x80-0xff`) arasındaki bir karakterden bahsetmiş oluyoruz.

Süper küresellerde 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 Değişken Etki Alanı bölümünü okuyunuz.

> Bilginize: 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.

## Söz dizimi

Bir sabit define() işlevi veya `const` anahtar sözcüğü kullanılarak tanımlanabilir. define() bir sabitin rastgele bir ifadede tanımlanmasına izin verir. `const` 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.

`const` anahtar sözcüğü kullanılırken, yalnızca sayıl (bool, int, float ve string) ifadeler ve yalnızca sayıl ifadeler içeren sabit dizileri kabul edilir. Sabitleri resource olarak tanımlamak mümkünse de, umulmadık sonuçlara yol açabileceğinden bundan kaçınılmalıdır.

Bir sabitin değerine basitçe ismi belirtilerek erişilebilir. Değişkenlerin aksine, sabitlerin önüne `$` imi eklemeMEniz gerekir. Bir sabitin ismi dinamik olarak belirtiliyorsa, sabitin değerini okumak için constant() işlevini kullanmak mümkündür. Tanımlanmış sabitlerin tamamının bir listesini almak için, get_defined_constants() işlevini kullanabilirsiniz.

> Bilginize: Sabitlerin ve (genel) değişkenlerin isim alanları farklıdır. Bu, örneğin `true` ile $TRUE değerlerinin farklı olabilecekleri anlamına gelir.

Tanımlanmamış bir sabit kullanırsanız, bir Error 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 `E_WARNING` çıktılanır. PHP 7.2.0 öncesinde ise E_NOTICE seviyesinde bir hata çıktılanırdı. Ayrıca $foo[bar]'ı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 Error yavrulayan (tamamen) nitelenmiş sabitlere uygulanmaz.

> Bilginize: Bir sabitin atanıp atanmadığına bakmak için defined() işlevini kullanın.

Sabitler ve değişkenler arasındaki farklar:

- Bir sabit ismi `$` imi ile başlamaz.
- Sabitler, değişken etki alanı kurallarına bağlı olmaksızın her yerde tanımlanabilir ve her yerden erişilebilir.
- Sabitler tanımlandıktan sonra yeniden tanımlanamaz ya da tanımsız duruma getirilemez.
- Bir sabit sadece sayıl değerlere veya dizilere çözümlenebilir.

Örnek 1 - Sabitlerin Tanımlanması

    <?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.
    ?>

Örnek 2 - Sabitlerin `const` ile tanımlanması

    <?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
    ?>

> Bilginize:

> Sabitlerin define() kullanılarak tanımlanmasının tersine, `const` 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, `if` deyimlerinin veya `try`/`catch` bloklarının içinde bildirilemez.

### Ayrıca Bakınız

- Sınıf Sabitleri

## Öntanımlı Sabitler

PHP, çalışan her betiğe çok sayıda öntanımlı sabit 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.

## Sihirli Sabitler

Değerleri kullanıldıkları yere göre değişen dokuz sihirli sabit vardır. Örneğin, `__LINE__` 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:

PHP'nin sihirli sabitleri
İsim | Açıklama
--- | ---
`__LINE__` | Dosyada geçerli satırın numarası.
`__FILE__` | Dosyanın veya sembolik bağdan çözümlenen dosyanın tam dosya yolu ve dosya ismi. include 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.
`__DIR__` | Dosyanın bulurduğu dizin. Dahil edilen bir dosyanın içinde kullanıldığında dahil edilen dosyanın dizini döner. Bu `dirname(__FILE__)` işlevine eşdeğerder. Bu dizin isminin sonuna bir kök dizin olmadıkça bir bölü imi konmaz.
`__FUNCTION__` | İşlev ismi veya anonim işlevler için `{closure}`.
`__CLASS__` | Sınıf ismi. Bildirildiği isim alanını (`Foo\Bar` gibi) içerir. Kalıtsal özelliklerin içinde kullanıldığında __CLASS__, içinde kullanıldığı sınıfın ismidir.
`__TRAIT__` | Kalıtsal özellik ismi. Bildirildiği isim alanını (`Foo\Bar` gibi) içerir.
`__METHOD__` | Yöntem ismi.
`__NAMESPACE__` | Geçerli isim alanının adı.
`SınıfAdı::class` | Tamamen nitelenmiş sınıf ismi.

### Ayrıca Bakınız

- ::class
- get_class()
- get_object_vars()
- file_exists()
- function_exists()

# İfadeler

İfadeler, PHP'nin en önemli yapı taşlarındandır. PHP'de, hemen hemen yazdığınız her şey bir ifadedir. Bir ifadenin en basit ama en etkili tanımı şudur: "Bir değere sahip olan herşey".

İfadelerin en basit şekli sabitler ve değişkenlerdir. "`$a = 5`" yazdığınızda, '`5`' değerini $a değişkenine atamış olursunuz. '`5`', açık bir şekilde, `5` değerine sahiptir, ya da başka bir deyişle '`5`', değeri `5` olan bir ifadedir (bu durumda, '`5`' bir tamsayı sabittir).

Bu atamadan sonra, $a'nın değerinin `5` olmasını beklersiniz, dolayısıyla `$b = $a` yazdığınızda, bunun `$b = 5` yazmışsınız gibi davranmasını beklersiniz. Başka bir deyişle, $a da değeri `5` olan ifadedir. Her şey doğru çalışırsa, olması gereken de tam budur.

İşlevler, ifadelerin biraz daha karmaşık örnekleridir. Örneğin, aşağıdaki işleve bakalım:

    <?php
    function foo ()
    {
        return 5;
    }
    ?>

İşlev kavramına aşina iseniz (değilseniz, işlevler bölümünü inceleyebilirsiniz), şu örnekten hareketle `$c = foo()` yazmak ile `$c = 5` yazmak arasında bir fark olmadığını bilirsiniz. İşlevler, değeri dönüş değeri olan ifadelerdir. `foo()` işlevi `5` değerini döndürdüğünden, "`foo()`" ifadesinin değeri `5`'tir. İşlevlerin amacı normalde statik bir değer döndürmek değildir, bir hesaplamanın sonucunu döndürürler.

Elbette, PHP'deki değerlerin hep tamsayılar olması gerekmez, zaten çoğunlukla değildirler. PHP dört çeşit sayıl değer destekler: Tamsayı (int) değerler, kayan noktalı (float) değerler, dizge (string) değerler ve mantıksal bool değerler (sayıl değerler, dizilerin aksine daha küçük parçalara bölemeyeceğiniz değerlerdir). PHP ayrıca iki bileşik (sayıl olmayan) tür destekler: Diziler ve nesneler. Bu değer türlerinden her biri bir değişkene atanabilir ya da bir işlevden döndürülebilir.

PHP, birçok başka dilin yaptığı gibi ifadeleri çok ileriye götürmüştür. PHP ifade-yönelimli bir dildir, bunun sebebi hemen hemen her şeyin bir ifade olmasıdır. Az önce üzerinde çalıştığımız '`$a = 5`' örneğini ele alalım. Burada iki değer kullanımı sözkonusudur, bir tamsayı sabit olan '`5`' ve `5` olarak değiştirilmiş $a'nın değeri. Ancak gerçek şu ki, burada bu ikiliye ek olarak başka bir değer daha vardır, o da atamanın kendi değeridir. Atamanın kendisi atanan değerle değerlendirilir, bu örnekte bu `5`'tir. Uygulamada, ne yaptığından bağımsız olarak "`$a = 5`", değeri `5` olan bir ifadedir. Böylece, "`$b = ($a = 5)`" yazmak, "`$a = 5; $b = 5;`" yazmak gibidir (noktalı virgül deyimin sonlandırıldığını gösterir). Atamalar sağdan sola doğru işlendiğinden, "`$b = $a = 5`" de yazabilirsiniz.

İfade yönelimi ile ilgili diğer güzel bir örnek atama öncesi ve sonrası arttırma ve eksiltme işlemleridir. PHP ve diğer birçok dilin kullanıcıları, değişken++ ve değişken-- gösterimine az çok aşinadır. Bunlar arttırma ve eksiltme işleçleridir. PHP'de, C'de olduğu gibi önceden arttırma ve sonradan arttırma diye iki tür arttırma vardır. Bunların her ikisi de değişkenin değerini bir arttırır ve değişken üzerindeki etkileri aynıdır. Fark, arttırma ifadesinin değerindedir. Önceden arttırma, ++$değişken olarak yazılır ve arttırılmış değer öncelik alır (PHP değişkenin değerini önce arttırır, sonra okur, bu sebeple önceden arttırma ismi verilmiştir). Sonradan arttırma ise, $değişken++ olarak yazılır ve değer arttırılmadan önceki özgün değer önceliklidir (PHP değişkenin değerini okuduktan sonra değerini arttırır, bu sebeple sonradan arttırma ismi verilmiştir).

Çok geniş bir kullanıma sahip olan ifade türlerinden birisi de karşılaştırma ifadeleridir. Bu ifadeler `false` ya da `true` değerlerinden birini alırlar. PHP `>` (büyüktür), `>=` (büyüktür ya da eşittir), `==` (eşittir), `!=` (eşit değildir), `<` (küçüktür) ve `<=` (küçüktür ya da eşittir) gösterimlerini destekler. Dil aynı zamanda aynılık işleçlerini de destekler: `===` (eşit ve aynı türdedir) ve `!==` (ne eşit ne de aynı türdedir). Bu ifadeler çoğunlukla `if` deyimleri gibi koşula bağlı işlemlerde kullanılmaktadırlar.

Vereceğimiz son ifade örneği işleçli atama ifadeleridir. $a'nın değerini 1 arttırmak istediğinizde, basitçe '`$a++`' ya da '`++$a`' yazmanızın yeterli olduğunu zaten biliyorsunuz. Ama ya birden daha büyük bir değer, örneğin 3 eklemek isterseniz? '`$a++`' ifadesini birkaç kez yazabilirsiniz, ama bunun pek verimli ya da kullanışlı yöntem olmadığı oldukça açık. '`$a = $a + 3`' çok daha yaygın bir kullanımdır. '`$a + 3`' ifadesi $a'nın değerini önce 3 arttırır sonra sonucu $a'ya atar, böylece $a'nın değeri 3 arttırılmış olur. PHP'de, birkaç dilde olduğu gibi C benzeri, daha temiz gözükecek ve daha kısa biçimde yazabileceğiniz bir gösterim daha vardır. $a'nın mevcut değerine 3 ekleme işlemi '`$a += 3`' biçiminde yazılabilir. Bunun anlamı tam olarak "$a'nın değerini al, 3 ekle ve yeni değeri `$a`'ya ata" olacaktır. Daha kısa ve temiz olmasının yanında, bu kod daha hızlı çalıştırılacaktır. '`$a += 3`' işleminin değeri, normal bir atama işleminde olduğu gibi, atanan değerdir. Bu değerin 3 OLMADIĞINA dikkat edin, bu değer $a ile 3'ün toplamıdır ($a’ya bu değer atanır). İşleçli atama kipinde herhangi bir iki terimli işleç kullanılabilir, örneğin '`$a -= 5`' ($a'nın değerinden 5 çıkarılır), '`$b *= 7`' ($b'nin değeri 7 ile çarpılır), vs.

Diğer dillerde görmediyseniz size farklı gözükebilecek bir ifade daha vardır, o da üç terimli koşul işlecidir:

    <?php
    $birinci ? $ikinci : $üçüncü
    ?>

İlk alt ifadenin değeri `true` (sıfırdan farklı) ise, ikinci alt ifade değerlendirilir ve koşullu ifadenin sonucu bu olur. Aksi takdirde, üçüncü alt ifade değerlendirilir ve koşullu ifadenin sonucu bu olur.

Aşağıdaki örnek, önceden ve sonradan arttırma işleçlerini ve ifadelerini genelde biraz daha iyi anlamanıza yardımcı olacaktır:

    <?php
    function double($i)
    {
        return $i*2;
    }
    $b = $a = 5;    /* beş değerini $a ve $b değişkenlerine atar */
    $c = $a++;      /* sonradan arttırma, $a'nın özgün değerini (5) $c'ye atar */
    $e = $d = ++$b; /* önceden arttırma, $b'nin arttırılmış değerini (6) $d
                       ve $e'ye atar */

    /* bu noktada, $d ve $e 6'ya eşittir */

    $f = double($d++);  /* $d'nin değerini arttırmadan önce $d'nin değerinin iki
                           katını $f'ye atar,  2*6 = 12 */
    $g = double(++$e);  /* $e'nin değerini arttırdıktan sonra iki katını alıp
                           $g'ye atar,  2*7 = 14 */
    $h = $g += 10;      /* önce, $g 10 arttırılır ve değeri 24 olur. Sonra bu
                           değer (24) $h'ye atanır ve onun da değeri 24 olur. */
    ?>

Bazı ifadeler deyim olarak ele alınabilir. Bu durumda, deyim 'ifade' ';' şeklinde, noktalı virgülle sonlandırılmış bir ifade şeklinde olacaktır. '`$=$a=5;`' olduğunda, `$a=5` geçerli bir ifadedir, ancak kendi başına bir deyim değildir. '`$b=$a=5;`' ise geçerli bir deyimdir.

Son olarak bahsetmemiz gereken bir konu da ifadelerin gerçek değeridir. Birçok olayda, çoğunlukla da koşula bağlı çalışmalarda ve döngülerde, ifadenin kendi değeri ile değil, `true` ya da `false` olması ile ilgileniyor olacaksınız. `true` ve `false` sabitleri (büyük-küçük harf duyarsız) olası iki mantıksal değerdir. Gerektiğinde, bir ifade otomatik olarak mantıksal değere dönüştürülür. Tür çarpıtma bölümünde bunun nasıl gerçekleştiği ayrıntılı olarak anlatılmıştır.

PHP ifadeleri tümüyle ve çok güçlü bir biçimde uygulamaya geçirmiştir ve bunların tamamını belgelemek bu kılavuzun kapsamının dışında kalır. Yukarıdaki örnekler hangi ifadelerle nasıl kullanışlı ifadeler oluşturabileceğiniz hakkında yeterli fikir verecektir. Bu kılavuzun geri kalanında, geçerli herhangi bir PHP ifadesini belirtmek için ifade sözcüğünü kullanacağız.

# İşleçler

## İçindekiler

- İşleç Önceliği
- Aritmetik
- Artırım ve Eksiltim
- Atama
- Bitsel
- Karşılaştırma
- Hata Denetim
- Çalıştırma
- Mantıksal
- Dizge
- Dizi
- Tür
- İşlevsel Öğeler

Bir işleç, başka bir değer üretmek üzere bir veya daha fazla değer (programcı dilinde ifade) alan bir şeydir (yani, bu yapı bir ifade haline gelir).

İşleçler aldıkları değer sayısına göre gruplanabilir. Tek terimli işleçler yalnızca bir değer alır, örneğin, `!` (mantıksal değil işleci) veya `++` (artırım işleci). İki terimli işleçler iki değer alır, PHP'nin desteklediği işleçlerin çoğunluğu bu grupta olup aritmetik işleçler `+` (artı) ve `-` (eksi) örnek olarak verilebilir. Son olarak tek bir üç terimli işleci, `? :` vardır ve üç terim alır. Koşul işleci olarak da bilinir.

PHP işleçleri tam liste halinde, aşağıda İşleç Önceliği bölümünde bulunabilir. Bölüm ayrıca, çeşitli farklı işleçleri içeren ifadelerin değerlendirilişini yöneten işleç önceliğini ve ilişkilendirmeyi de açıklamaktadır.

## İşleç Önceliği

İşleç önceliği iki ifadenin birbirine hangi sıkılıkta bağlı olduğunu belirtir. Örneğin, `1 + 5 * 3` ifadesinin sonucu 18 değil, 16'dır. Çünkü, çarpma ("*") işlecinin önceliği toplama ("+") işlecinden yüksektir. Önceliği arttırmak için gerekirse parantezler kullanılabilir. Örneğin, `(1 + 5) * 3` ifadesinin sonucu 18 olacaktır.

İşleçler eşit önceliğe sahip olduklarında aralarındaki ilişkiye işleçlerin gruplanışına göre karar verilir. Örneğin "-" isoldan ilişkilendirmelidir, dolayısıyla, `1 - 2 - 3` ifadesi `(1 - 2) - 3` olarak gruplanır ve `-4` olarak değerlendirlir. "=" ise sağdan ilişkilendirmelidir, dolayısıyla, `$a = $b = $c` ifadesi `$a = ($b = $c)` olarak gruplanır. Özetle, soldan ilişkilendirme, ifadenin soldan sağa, sağdan ilişkilendirme ise sağdan sola değerlendirileceği anlamına gelir.

İlişkisel olmayan eş öncelikli işleçler birbirlerinin ardından kullanılamazlar, örneğin `1 < 2 > 1` ifadesi PHP için uygun değilken `1 <= 1 == 1` ifadesi uygundur. Sebebi `==` işlecinin `<=` işlecinden daha az öncelikli olmasıdır.

İlişkisellik sadece iki terimli (ve üç terimli) işleçler için anlamlıdır. Tek terimli işleçlerin önüne veya ardına ekleme yapıldığından bu fikir tek terimlilere uygulanabilir değildir. Örneğin, `!!$a` ifadesi sadece `!(!$a)` olarak gruplanabilir.

Parantez kullanımı gerekli olmasa bile çoğunlukla kodun okunabilirliğini arttırır. Örtük işleç önceliğine ve ilişkiselliğine güvenmektense kodu açıkça gruplamak daha iyidir.

Aşağıdaki listede işleçler en yüksek öncelikliden başlayıp en düşük öncelikliye doğru sıralanmışlardır. Aynı satırda yer alan işleçler eş öncelikli olup hangi sırada ele alınacaklarına değerlendirme sırasında karar verilir.

İşleç Öncelikleri
İlişkilendirme | İşleçler | Ek bilgi
--- | --- | ---
(yok) | `clone` `new` | clone ve new
(yok) | `**` | aritmetik
sağdan | `+` `-` `++` `--` `~` `(int)` `(float)` `(string)` `(array)` `(object)` `(bool)` `@` | aritmetik (tek terimli `+` ve `-`), arttırım/eksiltim, bitsel, tür çarpıtma ve hata denetimi
soldan | `instanceof` | Tür
(yok) | `!` | mantıksal
soldan | `*` `/` `%` | aritmetik
soldan | `+` `-` `.` | aritmetik (iki terimli `+` ve `-`), dizi ve dize (PHP 8.0.0 öncesinde `.`)
soldan | `<<` `>>` | bitsel
soldan | `.` | dize (PHP 8.0.0 öncesinde `.`)
yönsüz | `<` `<=` `>` `>=` | karşılaştırma
yönsüz | `==` `!=` `===` `!==` `<>` `<=>` | karşılaştırma
left | `&` | bitsel ve gönderimler
soldan | `^` | bitsel
soldan | `|` | bitsel
soldan | `&&` | mantıksal
soldan | `||` | mantıksal
right | `??` | null birleşimi
yönsüz | `? :` | üç terimli (PHP 8.0.0 öncesinde soldan)
sağdan | `=` `+=` `-=` `*=` `**=` `/=` `.=` `%=` `&=` `|=` `^=` `<<=` `>>=` `??=` | atama
(yok) | `yield from` | yield from
(yok) | `yield` | yield
(yok) | `print` | print
soldan | `and` | mantıksal
soldan | `xor` | mantıksal
soldan | `or` | mantıksal

Örnek 1 - Öncelik yönü

    <?php
    $a = 3 * 3 % 5; // (3 * 3) % 5 = 4
    // üç terimli işlecin değerlendirilmesi C/C++ dillerinden farklıdır
    $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 (PHP 8.0.0 öncesi)

    $a = 1;
    $b = 2;
    $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
    ?>

İşleç önceliklerini ve işlem yönünü ifadeni gruplanışı belirler. PHP (genelde) ifadenin hangi sırayla değerlendirileceğini belirmez ve kodlamada özel bir değerlendirme sırası kabulünden kaçınılmalıdır. Çünkü davranış PHP'nin sürümleri arasında farklı olabildiği gibi sarmalayan koda bağlı olarak da değişebilir.

Örnek 2 - Tanımsız değerlendirme sırası

    <?php
    $a = 1;
    echo $a + $a++; // 2 veya 3 basabilir

    $i = 1;
    $array[$i] = $i++; // indis 1 veya 2 olabilir
    ?>

Örnek 3 `+`, `-` ve `.` aynı önceliğe sahiptir (PHP 8.0.0 öncesi)

    <?php
    $x = 4;
    // bu satır beklenmedik bir çıktı ile sonuçlanabilir:
    echo "x eksi bir eşittir " . $x-1 . ", ya da ben öyle umdum\n";

    // çünkü aşağıdaki satır gibi değerlendirilir:
    echo (("x eksi bir eşittir " . $x) - 1) . ", ya da ben öyle umdum\n";

    // istenen öncelik parantez kullanarak elde edilebilir:
    echo "x eksi bir eşittir " . ($x-1) . ", ya da ben öyle umdum\n";
    ?>

Yukarıdaki örneğin çıktısı:

    -1, ya da ben öyle umdum
    -1, ya da ben öyle umdum
    x eksi bir eşittir 3, ya da ben öyle umdum

> Bilginize:

> Eşitlik (`=`) işleci çoğu işleçten daha düşük önceliğe sahip olduğundan PHP halen şuna benzer ifadelere izin vermektedir: `foo()` işlevinin dönüş değerini $a değişkenine atayan `if (!$a = foo())` ifadesi.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Dizelerin ard arda eklenmesi (`.`) artık aritmetik toplama ve çıkarma (`+` ve `-`) ve bitsel sola/sağa kaydırma (`<<` ve `>>`) işleçlerinden daha düşük öncelikli oldu; evvelce `+` ve `-` ile aynı önceliğe, `<<` ve `>>` işleçlerinden daha yüksek önceliğe sahipti.
8.0.0 | Üç terimli işleç (`? :`) artık ilişkisel değil; evvelce soldan ilişkili idi.
7.4.0 | Dizelerin ard arda eklenmesinin (`.`) toplama ve çıkarma (`+` ve `-`) ve bitsel sola/sağa kaydırma (`<<` ve `>>`) işleçlerine göre önceliğine (yani parantezsiz birlikte kullanımlarına) güvenilmesi artık önerilmiyor.
7.4.0 | Üç terimli işlecin (`? :`) soldan ilişkiselliğine güvenmek artık önerilmiyor; yani, çok sayıda parantezsiz üç terimli artık iç içe yazılmamalıdır.

## Aritmetik İşleçler

Okulda öğrendiğiniz temel aritmetiği hatırlıyor musunuz? Bu işleçler tam da öyle çalışır.

Aritmetik İşleçler
Örnek | İsim | Sonuç
--- | --- | ---
+$a | Özdeşlik | $a'nın int veya float'a dönüşümü.
`-$a` | Olumsuzlama | $a'nın eksi işaretlisi.
`$a + $b` | Toplama | $a ile $b'nin toplamı.
`$a - $b` | Çıkarma | $a'nın $b'den farkı.
`$a * $b` | Çarpma | $a ile $b'nin çarpımı.
`$a / $b` | Bölme | $a'nın $b'ye bölümü.
`$a % $b` | Kalan | $a'nın $b'ye bölümünden kalan.
$a ** $b | Üs | $a üssü $b.

Bölme işlecinin tamsayı bölüm vermesi için iki teriminin de tamsayı (veya dönüşüm sonucu tamsayı olan dizge) olması ve birbirlerine tam olarak bölünmesi gerekir, aksi takdirde bölüm gerçek sayı olacaktır. Tamsayı bölme için intdiv() işlevine bakınız.

Kalan işlecinin (`%`) terimleri gerçek sayılarsa tamsayıya (int türüne) dönüştürülürler. Gerçek sayı bölmeden kalan için fmod() işlevine bakınız.

`%` kalan işlecinin sonucu bölünenin işaretini alır. Yani `$a % $b` işlemini sonucu $a ile aynı işaretli olacaktır. Örnek:

    <?php

    echo (5 % 3)."\n";           //  2 basar
    echo (5 % -3)."\n";          //  2 basar
    echo (-5 % 3)."\n";          // -2 basar
    echo (-5 % -3)."\n";         // -2 basar

    ?>

### Ayrıca Bakınız

- Matematik işlevleri

## Artırım ve Eksiltim İşleçleri

PHP, önceden ve sonradan artırım ve eksiltim işleçlerini destekler. Bunlar değeri bir artıran veya eksilten tek terimli işleçlerdir.

Arttırım ve Eksiltim İşleçleri
Örnek | İsim | Etkisi
--- | --- | ---
`++$a` | Önceden artırım | $a bir artırıldıktan sonra döndürülür.
`$a++` | Sonradan artırım | $a döndürüldükten sonra değeri bir artırılır.
`--$a` | Önceden eksiltim | $a bir eksiltildikten sonra döndürülür.
`$a--` | Sonradan eksiltim | $a döndürüldükten sonra değeri bir eksiltilir.

Basit bir betik örneği:

    <?php
    echo "Sonradan artırım\n";
    $a = 5;
    var_dump($a++);
    var_dump($a);

    echo "Önceden artırım\n";
    $a = 5;
    var_dump(++$a);
    var_dump($a);

    echo "Sonradan eksiltim\n";
    $a = 5;
    var_dump($a--);
    var_dump($a);

    echo "Sonradan eksiltim\n";
    $a = 5;
    var_dump(--$a);
    var_dump($a);
    ?>

Yukarıdaki örneğin çıktısı:

    Sonradan artırım:
    int(5)
    int(6)
    Önceden artırım:
    int(6)
    int(6)
    Sonradan eksiltim:
    int(5)
    int(4)
    Sonradan eksiltim:
    int(4)
    int(4)

Uyarı

Artırım ve eksiltim işleçlerinin bool türündeki değerler üstünde etkisi yoktur. İleri sürümlerde değer örtük olarak int türüne dönüşüm uygulanacağından PHP 8.3.0 ve sonrasında bir `E_WARNING` çıktılanır.

Eksiltim işlecinin null türünde değerler üzerinde etkisi yoktur. İleri sürümlerde değer örtük olarak int türüne dönüşüm uygulanacağından PHP 8.3.0 ve sonrasında bir `E_WARNING` çıktılanır.

Değer sayısal dizge değilse eksiltim işleci etkisizdir. İleri sürümlerde TypeError oluşturacak olan bu durum PHP 8.3.0 ve sonrasında bir `E_WARNING` çıktılanmasına sebep olur.

> Bilginize:

> Aşırı yüklemeyi destekleyen dahili nesnelerin toplama ve çıkarma işlemlerinde de artırım ve eksiltim yapılabilir. Böyle bir dahili nesneye örnek olarak GMP verilebilir.

### PERL dizge artırım özelliği

Uyarı

Bu özelliğin PHP 8.3.0 ve sonrasında kullanımı bazı durumlarda önerilmemekte olup böyle bir durumun ortaya çıkmaması için bu özellik yerine str_increment() işlevi kullanılmalıdır.

Değer sayısal dizge değilse dizgeye artırım uygulanabilir. Bunun için dizgenin abecesaysal ASCII dizge olması gerekir. Harflerin bir sonraki harfe kadar artırılması durumunda, `Z` harfine ulaşıldığında artış soldaki değere taşınır. Örneğin, `$a = 'Z'; $a++;` için $a değeri `'AA'` olur.

Örnek 1 - PERL dizge artırım örneği

    <?php
    echo '== Abecesel dizgeler ==' . PHP_EOL;
    $i = 'W';
    for ($n=0; $n<6; $n++) {
        echo ++$s . PHP_EOL;
    }
    // Sayısal dizgeler farklı davranır
    echo '== Sayısal dizgeler ==' . PHP_EOL;
    $d = 'A8';
    for ($n=0; $n<6; $n++) {
        echo ++$d . PHP_EOL;
    }
    $d = 'A08';
    for ($n=0; $n<6; $n++) {
        echo ++$d . PHP_EOL;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    == Abecesel dizgeler ==
    X
    Y
    Z
    AA
    AB
    AC
    == Sayısal dizgeler ==
    A9
    B0
    B1
    B2
    B3
    B4
    A09
    A10
    A11
    A12
    A13
    A14

Uyarı

Abecesayısal dizge, sayısal dizge olarak yorumlanırsa değer int veya float türüne dönüştürülür. Bu özellikle üstel gösterimle yazılmış gerçel bir sayı gibi görünen dizgelerde ortaya çıkar. str_increment() işlevi böyle örtük tür dönüşümlerinden etkilenmez.

Örnek 2 - float türüne dönüştürülen abecesayısal dizge

    <?php
    $s = "5d9";
    var_dump(++$s);
    var_dump(++$s);
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "5e0"
    float(6)

Bunun nedeni, `"5e0"` değerinin float olarak yorumlanması ve artırılmadan önce `5,0` değerine dönüştürülmesidir.

## Atama İşleçleri

Temel atama işleci "`=`" imidir. Programlamaya yeni başlayanlar bu işleci"eşittir" diye okurlar. Aslında yapılan işlem bir şeyleri birbirlerine eşitlemek değildir. Yaptığı iş sağındaki ifadenin değerini solundaki terimin değeri haline getirmektir, yani imleci içeren ifadeyi birşey'in değeri diye okumak daha doğrudur.

Bir atama ifadesinin değeri atanan değerdir. Yani, "`$a = 3`" ifadesinin değeri 3'tür. Bunun bir takım yan sonuçları da vardır:

    <?php

    $a = ($b = 4) + 5; // $a'nın değeri 9, $b'nin değeri 4 olur.

    ?>

Temel atama işlecinden başka atama işlemini temel aritmetik, ikil aritmetik işlemleriyle veya dizi ya da dizge birleştirme işlemleriyle birleştiren, "birleşik atama işleçleri" vardır. Örnek:

    <?php

    $a = 3;
    $a += 5; // $a'nın değeri 8 olur, asıl işlem: $a = $a + 5;
    $b = "Herkese ";
    $b .= "Merhaba!"; // $b'nin değeri "Herkese Merhaba!" olur.
                      // asıl işlem: $b = $b . "Merhaba!";

    ?>

Atama işleminin özgün değişkeni yeni değişkene kopyaladığına (değeriyle atadığına) dikkat ediniz. Dolayısıyla birinde yapılan değişiklik diğerini etkilemeyecektir. Kapalı bir döngü içinde büyükçe bir diziye atama işlemleri yapma ihtiyacı duyarsanız bu ayrı bir anlam kazanır.

PHP içindeki değere göre olağan atama davranışının bir istisnası, gönderimle atanan nesnelerle gerçekleşir. Nesneler clone anahtar sözcüğü ile doğrudan kopyalanabilir.

### Gönderimli atama

Gönderimli atama `$değişken = &$diğerdeğişken;` sözdizimi ile desteklenmektedir. 'Gönderimli atama', iki değişkenin aynı veriyi gösterdiği ve birbirlerinden birşeyler kopyalamadıkları anlamına gelir.

Örnek 1 - Gönderimli atama

    <?php
    $a = 3;
    $b = &$a; // $b, $a'ya bir gönderimdir

    print "$a\n"; // 3 basar
    print "$b\n"; // 3 basar

    $a = 4; // $a değişir

    print "$a\n"; // 4 basar
    print "$b\n"; // bu da 4 basar, $b, $a'ya bir gönderimdi ve $a değişti

    ?>

new işleci otomatik olarak bir gönderim döndürür. Dolayısıyla, new sonucunu gönderimli atamak bir hatadır.

Örneğin bu kod bir hata veya uyarı ile sonuçlanır:

    <?php
    class C {}

    $o = &new C;
    ?>

Yukarıdaki örneğin çıktısı:

    Parse error: syntax error, unexpected 'new' (T_NEW) in …
    // Çözümleme hatası: sözdizimi hatası, beklenmeyen 'new' (T_NEW) in …

Gönderimler hakkında daha ayrıntılı bilgi edinmek için Gönderimlerle ilgili herşey bölümüne bakınız.

### Aritmetik Atams İşleçleri

Örnek | Eşdeğeri | İşlem
--- | --- | ---
$a += $b | $a = $a + +$b | Toplama
$a -= $b | $a = $a - $b | Çıkarma
$a *= $b | $a = $a * $b | Çarpma
$a /= $b | $a = $a / $b | Bölme
$a %= $b | $a = $a % $b | Mod
$a **= $b | $a = $a ** $b | Üs alma

### Bitsel Atama İşleçleri

Örnek | Eşdeğeri | İşlem
--- | --- | ---
$a &= $b | $a = $a & $b | Bitsel VE
$a |= $b | $a = $a | $b | Bitsel VEYA
$a ^= $b | $a = $a ^ $b | Bitsel XOR
$a <<= $b | $a = $a << $b | Sola Öteleme
$a >>= $b | $a = $a >> $b | Sağa Öteleme

### Diğer Atama İşleçleri

Örnek | Eşdeğeri | İşlem
--- | --- | ---
$a .= $b | $a = $a . $b | Dize Birleştirme
$a ??= $b | $a = $a ?? $b | Null Birleşimi

### Ayrıca Bakınız

- aritmetik işleçler
- bitsel işleçler
- null birleşim işleçleri

## Bitsel İşleçler

Bitsel işleçler, bir tamsayının içindeki belli bitleri 0 ya da 1 yaparlar.

Bitsel İşleçler
Örnek | İsim | Sonuç
--- | --- | ---
`$a & $b` | Ve | Hem $a hem de $b'de 1 olan bitler sonuçta 1 yapılır.
`$a | $b` | Veya | $a veya $b'de 1 olan bitler sonuçta 1 yapılır.
`$a ^ $b` | Ayrıcalıklı Veya | Hem $a hem de $b'de 0 veya 1 olan bitler sonuçta 0, diğerleri 1 yapılır.
`~ $a` | Değil | $a'nın 0 olan bitleri 1, 1 olanları 0 yapılır.
`$a << $b` | Sola kaydırma | $a'nın bitleri $b adım sola kaydırılır (her adım ikiyle çarpma işlemine denktir).
`$a >> $b` | Sağa kaydırma | $a'nın bitleri $b adım sağa kaydırılır (her adım ikiye bölme işlemine denktir).

PHP'de bit kaydırma bir aritmetik işlemdir. Kaydırma sonucu her iki uçtan da taşan bitler silinir. Sola kaydırmada sağdan eksilen bitler sıfırlarla doldurulur, bu arada işaret biti soldan taşarak silinir, yani sola kaydırmada terimin işareti korunmaz. Sağa kaldırmada ise işaret biti yerinden oynatılmaz, yani sağa kaydırmada terimin işareti korunur.

Bir işlemin öncelik alması gerekiyorsa yaylı ayraçlar kullanılmalıdır. Örneğin, `$a & $b == true` işleminde önce eşitlik sonra bitsel VE uygulanırken `($a & $b) == true` işleminde ise önce bitsel VE sonra eşitlik uygulanır.

Eğer `&`, `|` ve `^` için her iki terim de dize ise terimlerdeki karakterlerin ASCII değerleri üzerinde işlem yapılır ve sonuç bir dize olur. Tüm diğer durumlarda, her iki terim tamsayıya dönüştürülür ve sonuç tamsayı olur.

`~` işleci için terim bir dize ise, terimdeki karakterlerin ASCII değerleri üzerinde işlem yapılır ve sonuç bir dize olur. Aksi takdirde, terim ve sonuç tamsayı olarak ele alınır.

`<<` ve `>>` işleçleri için her iki terim ve sonuç daima tamsayı olarak ele alınır.

    PHP'nin error_reporting yönergesi gerçekte neler olup bittiğini göstermek
    için bitsel değerler kullanır. Sadece bilgilendirmeleri değil hataların
    tümünü görmek için php.ini dosyasında ilgili yere şu yazılabilir:
    E_ALL & ~E_NOTICE

    Bu E_ALL için şöyle çalışır:
    00000000000000000111011111111111
    Keza E_NOTICE...
    00000000000000000000000000001000
    ... ve ~ ile ters çevrilerek:
    11111111111111111111111111110111
    Son olarak, her iki değer üzerinde etkin bitleri bulmak için
    VE (&) işlecini kullanır:
    00000000000000000111011111110111

    Bunu sağlamanın bir başka yolu da sadece bir değerde veya diğerinde etkin
    bitleri bulmak için XOR (^) kullanmaktır:
    E_ALL ^ E_NOTICE

    error_reporting yönergesi bitleri etkin kılmayı göstermek için de
    kullanılabilir. Sadece hataları ve kurtarılabilir göstermenin yolu:
    E_ERROR | E_RECOVERABLE_ERROR

    Bu işlem etkin bitleri almak için
    00000000000000000000000000000001
    ve
    00000000000000000001000000000000
    E_ERROR'ları üzerinde VEYA (|) işlecini kullanır:
    00000000000000000001000000000001

Örnek 1 - Tamsayılar üzerinde bitsel işlemler

    <?php
    /*
     * Üstteki bölümü yoksay,
     * çıktıyı iyileştirmek için biçemlemekten başka birşey yapmıyor.
     */

    $format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
            . ' %3$s (%4$2d = %4$04b)' . "\n";

    echo <<<EOH
     ---------     ---------  -- ---------
       sonuç         değer    işl   dnm
     ---------     ---------  -- ---------
    EOH;

    /*
     * Örnekler burada.
     */

    $değerler = array(0, 1, 2, 4, 8);
    $dnm = 1 + 4;

    echo "\n Bitsel VE \n";
    foreach ($değerler as $değer) {
        $sonuç = $değer & $dnm;
        printf($format, $sonuç, $değer, '&', $dnm);
    }

    echo "\n Bitsel Ayrıcalıklı VEYA \n";
    foreach ($değerler as $değer) {
        $sonuç = $değer | $dnm;
        printf($format, $sonuç, $değer, '|', $dnm);
    }

    echo "\n Bitsel Ayrıcalıklı VEYA (XOR) \n";
    foreach ($değerler as $değer) {
        $sonuç = $değer ^ $dnm;
        printf($format, $sonuç, $değer, '^', $dnm);
    }
    ?>

Yukarıdaki örneğin çıktısı:

     ---------     ---------  -- ---------
       sonuç         değer    işl   dnm
     ---------     ---------  -- ---------
     Bitsel VE
    ( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)
    ( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
    ( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)
    ( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)
    ( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

     Bitsel Ayrıcalıklı VEYA
    ( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)
    ( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)
    ( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)
    ( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)
    (13 = 1101) = ( 8 = 1000) | ( 5 = 0101)

     Bitsel Ayrıcalıklı VEYA (XOR)
    ( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)
    ( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)
    ( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)
    ( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)
    (13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)

Örnek 2 - Dizgeler üzerinde bitsel işlemler

    <?php
    echo 12 ^ 9; // '5' çıktılar

    echo "12" ^ "9"; // Gerisilme karakterini çıktılar (ASCII 8)
                     // ('1' (ascii 49)) ^ ('9' (ascii 57)) =  ASCII 8

    echo "hallo" ^ "hello"; // Çıktılanan ASCII değerler #0 #4 #0 #0 #0
                            // 'a' ^ 'e' = #4

    echo 2 ^ "3"; // 1 çıktılar
                  // 2 ^ ((int) "3") == 1

    echo "2" ^ 3; // 1 çıktılar
                  // ((int) "2") ^ 3 == 1
    ?>

Örnek 3 - Tamsayılarda bit kaydırma

    <?php
    /*
     * Bunlar örnektir.
     */

    echo "\n--- POZİTİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---\n";

    $dgr = 4;
    $hane = 1;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'işaret bitinin kopyası sola kaydırıldı');

    $dgr = 4;
    $hane = 2;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane);

    $dgr = 4;
    $hane = 3;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'bitler sağa kaydırıldı');

    $dgr = 4;
    $hane = 4;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'yukarıdakiyle aynı; 0\'dan sonrası kaydırılamaz');

    echo "\n--- NEGATİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---\n";

    $dgr = -4;
    $hane = 1;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'işaret bitinin kopyası sola kaydırıldı');

    $dgr = -4;
    $hane = 2;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'bitler sağa kaydırıldı');

    $dgr = -4;
    $hane = 3;
    $snç = $dgr >> $hane;
    p($snç, $dgr, '>>', $hane, 'yukarıdakiyle aynı; -1\'dan sonrası kaydırılamaz');

    echo "\n--- POZİTİF TAMSAYILARDA SOLA BİT KAYDIRMA ---\n";

    $dgr = 4;
    $hane = 1;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane, 'sağ taraf sıfırlarla doldurulur');

    $dgr = 4;
    $hane = (PHP_INT_SIZE * 8) - 4;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane);

    $dgr = 4;
    $hane = (PHP_INT_SIZE * 8) - 3;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane, 'işaret bitleri dışa kaydırılır');

    $dgr = 4;
    $hane = (PHP_INT_SIZE * 8) - 2;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane, 'bitler sola kaydırıldı');

    echo "\n--- NEGATİF TAMSAYILARDA SOLA BİT KAYDIRMA ---\n";

    $dgr = -4;
    $hane = 1;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane, 'sağ taraf sıfırlarla doldurulur');

    $dgr = -4;
    $hane = (PHP_INT_SIZE * 8) - 3;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane);

    $dgr = -4;
    $hane = (PHP_INT_SIZE * 8) - 2;
    $snç = $dgr << $hane;
    p($snç, $dgr, '<<', $hane, 'işaret biti dahil, bitler soldan dışa kaydırıldı');

    /*
     * Bundan sonrasını yoksayın; çıktıyı biçemlemekten başka bir şey yapmıyor.
     */

    function p($snç, $dgr, $op, $hane, $ilt = '') {
        $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";

        printf("İfade: %d = %d %s %d\n", $snç, $dgr, $op, $hane);

        echo " Onluk:\n";
        printf("  değer=%d\n", $dgr);
        printf("  sonuç=%d\n", $snç);

        echo " İkilik:\n";
        printf('  değer=' . $format, $dgr);
        printf('  sonuç=' . $format, $snç);

        if ($ilt) {
            echo " DİKKAT: $ilt\n";
        }

        echo "\n";
    }
    ?>

Yukarıdaki örneğin 32 bitlik makinelerdeki çıktısı:

    --- POZİTİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---
    İfade: 2 = 4 >> 1
     Onluk:
      değer=4
      sonuç=2
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000000010
     DİKKAT: işaret bitinin kopyası sola kaydırıldı

    İfade: 1 = 4 >> 2
     Onluk:
      değer=4
      sonuç=1
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000000001

    İfade: 0 = 4 >> 3
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000000000
     DİKKAT: bitler sağa kaydırıldı

    İfade: 0 = 4 >> 4
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000000000
     DİKKAT: yukarıdakiyle aynı; 0'dan sonrası kaydırılamaz

    --- NEGATİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---
    İfade: -2 = -4 >> 1
     Onluk:
      değer=-4
      sonuç=-2
     İkilik:
      değer=111111111111111111111111111100
      sonuç=111111111111111111111111111110
     DİKKAT: işaret bitinin kopyası sola kaydırıldı

    İfade: -1 = -4 >> 2
     Onluk:
      değer=-4
      sonuç=-1
     İkilik:
      değer=111111111111111111111111111100
      sonuç=111111111111111111111111111111
     DİKKAT: bitler sağa kaydırıldı

    İfade: -1 = -4 >> 3
     Onluk:
      değer=-4
      sonuç=-1
     İkilik:
      değer=111111111111111111111111111100
      sonuç=111111111111111111111111111111
     DİKKAT: yukarıdakiyle aynı; -1'dan sonrası kaydırılamaz

    --- POZİTİF TAMSAYILARDA SOLA BİT KAYDIRMA ---
    İfade: 8 = 4 << 1
     Onluk:
      değer=4
      sonuç=8
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000001000
     DİKKAT: sağ taraf sıfırlarla doldurulur

    İfade: 4611686018427387904 = 4 << 60
     Onluk:
      değer=4
      sonuç=4611686018427387904
     İkilik:
      değer=000000000000000000000000000100
      sonuç=010000000000000000000000000000

    İfade: -9223372036854775808 = 4 << 61
     Onluk:
      değer=4
      sonuç=-9223372036854775808
     İkilik:
      değer=000000000000000000000000000100
      sonuç=100000000000000000000000000000
     DİKKAT: işaret bitleri dışa kaydırılır

    İfade: 0 = 4 << 62
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=000000000000000000000000000100
      sonuç=000000000000000000000000000000
     DİKKAT: bitler sola kaydırıldı

    --- NEGATİF TAMSAYILARDA SOLA BİT KAYDIRMA ---
    İfade: -8 = -4 << 1
     Onluk:
      değer=-4
      sonuç=-8
     İkilik:
      değer=111111111111111111111111111100
      sonuç=111111111111111111111111111000
     DİKKAT: sağ taraf sıfırlarla doldurulur

    İfade: -9223372036854775808 = -4 << 61
     Onluk:
      değer=-4
      sonuç=-9223372036854775808
     İkilik:
      değer=111111111111111111111111111100
      sonuç=100000000000000000000000000000

    İfade: 0 = -4 << 62
     Onluk:
      değer=-4
      sonuç=0
     İkilik:
      değer=111111111111111111111111111100
      sonuç=000000000000000000000000000000
     DİKKAT: işaret biti dahil, bitler soldan dışa kaydırıldı

Yukarıdaki örneğin 64 bitlik makinelerdeki çıktısı:

    --- POZİTİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---
    İfade: 2 = 4 >> 1
     Onluk:
      değer=4
      sonuç=2
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000000010
     DİKKAT: işaret bitinin kopyası sola kaydırıldı

    İfade: 1 = 4 >> 2
     Onluk:
      değer=4
      sonuç=1
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000000001

    İfade: 0 = 4 >> 3
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000000000
     DİKKAT: bitler sağa kaydırıldı

    İfade: 0 = 4 >> 4
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000000000
     DİKKAT: yukarıdakiyle aynı; 0'dan sonrası kaydırılamaz

    --- NEGATİF TAMSAYILARDA SAĞA BİT KAYDIRMA ---
    İfade: -2 = -4 >> 1
     Onluk:
      değer=-4
      sonuç=-2
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=1111111111111111111111111111111111111111111111111111111111111110
     DİKKAT: işaret bitinin kopyası sola kaydırıldı

    İfade: -1 = -4 >> 2
     Onluk:
      değer=-4
      sonuç=-1
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=1111111111111111111111111111111111111111111111111111111111111111
     DİKKAT: bitler sağa kaydırıldı

    İfade: -1 = -4 >> 3
     Onluk:
      değer=-4
      sonuç=-1
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=1111111111111111111111111111111111111111111111111111111111111111
     DİKKAT: yukarıdakiyle aynı; -1'dan sonrası kaydırılamaz

    --- POZİTİF TAMSAYILARDA SOLA BİT KAYDIRMA ---
    İfade: 8 = 4 << 1
     Onluk:
      değer=4
      sonuç=8
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000001000
     DİKKAT: sağ taraf sıfırlarla doldurulur

    İfade: 4611686018427387904 = 4 << 60
     Onluk:
      değer=4
      sonuç=4611686018427387904
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0100000000000000000000000000000000000000000000000000000000000000

    İfade: -9223372036854775808 = 4 << 61
     Onluk:
      değer=4
      sonuç=-9223372036854775808
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=1000000000000000000000000000000000000000000000000000000000000000
     DİKKAT: işaret bitleri dışa kaydırılır

    İfade: 0 = 4 << 62
     Onluk:
      değer=4
      sonuç=0
     İkilik:
      değer=0000000000000000000000000000000000000000000000000000000000000100
      sonuç=0000000000000000000000000000000000000000000000000000000000000000
     DİKKAT: bitler sola kaydırıldı

    --- NEGATİF TAMSAYILARDA SOLA BİT KAYDIRMA ---
    İfade: -8 = -4 << 1
     Onluk:
      değer=-4
      sonuç=-8
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=1111111111111111111111111111111111111111111111111111111111111000
     DİKKAT: sağ taraf sıfırlarla doldurulur

    İfade: -9223372036854775808 = -4 << 61
     Onluk:
      değer=-4
      sonuç=-9223372036854775808
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=1000000000000000000000000000000000000000000000000000000000000000

    İfade: 0 = -4 << 62
     Onluk:
      değer=-4
      sonuç=0
     İkilik:
      değer=1111111111111111111111111111111111111111111111111111111111111100
      sonuç=0000000000000000000000000000000000000000000000000000000000000000
     DİKKAT: işaret biti dahil, bitler soldan dışa kaydırıldı

Uyarı

`PHP_INT_MAX`'ın ötesindeki sayılar üzerinde bitsel işlemler için gmp eklentisindeki işlevler kullanılmalıdır.

### Ayrıca Bakınız

- pack()
- unpack()
- gmp_and()
- gmp_or()
- gmp_xor()
- gmp_testbit()
- gmp_clrbit()

## Karşılaştırma İşleçleri

Karşılaştırma işleçleri isminden de anlaşılacağı üzere iki değerin karşılaştırılmasını sağlar. Çeşitli veri türleri arasındaki karşılaştırma örneklerinin yer aldığı tür karşılaştırma tabloları sayfasına da bakılabilir.

Karşılaştırma İşleçleri
Örnek | İsim | Sonuç
--- | --- | ---
`$a == $b` | Eşittir | Tür dönüşümünden sonra, $a ve $b aynı değere sahipse sonuç `true` olur.
`$a === $b` | Aynıdır | $a ve $b aynı değere sahipse ve türleri de aynıysa sonuç `true` olur.
`$a != $b` | Eşit değildir | Tür dönüşümünden sonra, $a ve $b aynı değere sahip değilse sonuç `true` olur.
`$a <> $b` | Eşit değildir | Tür dönüşümünden sonra, $a ve $b aynı değere sahip değilse sonuç `true` olur.
`$a !== $b` | Farklıdır | $a ve $b aynı değere sahip değilse veya türleri aynı değilse sonuç `true` olur.
`$a < $b` | Küçüktür | $a kesin olarak $b'den küçükse sonuç `true` olur.
`$a > $b` | Büyüktür | $a kesin olarak $b'den büyükse sonuç `true` olur.
`$a <= $b` | Küçük veya eşittir | $a, $b'den küçük veya ona eşitse sonuç `true` olur.
`$a >= $b` | Büyük veya eşittir | $a, $b'den büyük veya ona eşitse sonuç `true` olur.
$a <=> $b | Mekik | $a küçük, eşit veya büyük $b olduğunda, bir tamsayı da sırasıyla küçük, eşit veya büyük sıfırdır.

Her iki terim de sayısal dize ise veya bir terim sayı ve diğeri sayısal dizeyse, karşılaştırma sayısal olarak yapılır. Bu kurallar ayrıca switch deyimine de uygulanır. `===` veya `!==` ile tür ve dolayısıyla değer karşılaştırıldığından böyle karşılaştırmalarda tür dönüşümü yapılmaz.

Uyarı

PHP 8.0.0'dan önce, bir dize bir sayı veya sayısal bir dizeyle karşılaştırılırsa, karşılaştırma yapılmadan önce dize bir sayıya dönüştürülürdü. Bu, aşağıdaki örnekte görülebileceği gibi şaşırtıcı sonuçlara yol açabilir:

    <?php
    var_dump(0 == "a");
    var_dump("1" == "01");
    var_dump("10" == "1e1");
    var_dump(100 == "1e2");

    switch ("a") {
    case 0:
        echo "0";
        break;
    case "a":
        echo "a";
        break;
    }
    ?>

Yukarıdaki örneğin PHP 7 çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(true)
    0

Yukarıdaki örneğin PHP 8 çıktısı:

    bool(false)
    bool(true)
    bool(true)
    bool(true)
    a

    <?php
    // Tamsayılar
    echo 1 <=> 1; // 0
    echo 1 <=> 2; // -1
    echo 2 <=> 1; // 1

    // Gerçeller
    echo 1.5 <=> 1.5; // 0
    echo 1.5 <=> 2.5; // -1
    echo 2.5 <=> 1.5; // 1

    // Dizeler
    echo "a" <=> "a"; // 0
    echo "a" <=> "b"; // -1
    echo "b" <=> "a"; // 1

    echo "a" <=> "aa"; // -1
    echo "zz" <=> "aa"; // 1

    // Diziler
    echo [] <=> []; // 0
    echo [1, 2, 3] <=> [1, 2, 3]; // 0
    echo [1, 2, 3] <=> []; // 1
    echo [1, 2, 3] <=> [1, 2, 1]; // 1
    echo [1, 2, 3] <=> [1, 2, 4]; // -1

    // Nesneler
    $a = (object) ["a" => "b"];
    $b = (object) ["a" => "b"];
    echo $a <=> $b; // 0

    $a = (object) ["a" => "b"];
    $b = (object) ["a" => "c"];
    echo $a <=> $b; // -1

    $a = (object) ["a" => "c"];
    $b = (object) ["a" => "b"];
    echo $a <=> $b; // 1

    // sadece değerler karşılaştırılmaz, anahtarlar da eşleşmeli
    $a = (object) ["a" => "b"];
    $b = (object) ["b" => "b"];
    echo $a <=> $b; // 1

    ?>

Çeşitli türler arasında karşılaştırma aşağıdaki tabloya ve tablodaki sıralamaya uygun olarak yapılır.

Çeşitli Türlerin Karşılaştırılması
1. Terimin Türü | 2. Terimin Türü | Sonuç
--- | --- | ---
null veya string | string | `null`, "" dizgesine dönüştürülür, sayısal veya alfabetik karşılaştırma yapılır.
bool veya null | herhangi bir tür | Her iki tarafta bool türüne dönüşümden sonra `false` < `true` karşılaştırması yapılır
object | object | Yerleşik sınıflar kendi karşılaştırmalarını tanımlayabilir. Farklı sınıflar eşsizdir. Aynı sınıflar için bkz: Nesne karşılaştırması
string, resource, int veya float | string, resource, int veya float | Diziler ve özkaynaklar sayılara dönüştürülür, sayısal karşılaştırma yapılır.
array | array | Daha az üyeye sahip dizi diğerinden küçüktür. Eğer 1. terimin anahtarı 2. terimde yoksa diziler eşsizdir. Karşılaştırma daima değerler karşılaştırılarak yapılır (aşağıdaki örneğe bakınız).
object | herhangi bir tür | object daima büyüktür.
array | herhangi bir tür | array daima büyüktür

Örnek 1 - Bool/null karşılaştırması

    <?php
    // Bool ve null daima bool gibi karşılaştırılır.
    var_dump(1 == TRUE);  // TRUE - (bool) 1 == TRUE ile aynı
    var_dump(0 == FALSE); // TRUE - (bool) 0 == FALSE ile aynı
    var_dump(100 < TRUE); // FALSE - (bool) 100 < TRUE ile aynı
    var_dump(-10 < FALSE);// FALSE - (bool) -10 < FALSE ile aynı
    var_dump(min(-100, -10, NULL, 10, 100)); // NULL - (bool) NULL < (bool)-100 is FALSE < TRUE
    ?>

Örnek 2 - Özetle Standard Dizi Karşılaştırması

    <?php
    // Diziler mekik işlecinin yanı sıra standart karşılaştırma işleçleri ile
    // böyle karşılaştırılır
    function standard_dizi_karşılaştır($trm1, $trm2)
    {
        if (count($ter1) < count($ter2)) {
          return -1;                          // $ter1 < $ter2
        } elseif (count($op1) > count($op2)) {
            return 1;                         // $ter1 > $ter2
        }
        foreach ($ter1 as $anh => $değ) {
            if (!array_key_exists($anh, $ter2)) {
                return 1;
            } elseif ($değ < $ter2[$anh]) {
                return -1;
            } elseif ($değ > $ter2[$anh]) {
                return 1;
            }
        }
        return 0; // $ter1 == $ter2
    }
    ?>

Uyarı

# Kayan noktalı sayıların karşılaştırılması

float türlerinin dahili gösteriminden dolayı iki float sayının eşitliğine bakılamaz.

Bu konuda daha ayrıntılı bilgi için float türünün belgesine bakılabilir.

> Bilginize: Farklı türdeki değerleri karşılaştırırken, özellikle tamsayıları mantıksal değerlerle veya dizgelerle karşılaştırırken, PHP'nin otomatik tür dönüşümünün her zaman açık olmadığı unutmamalıdır. Bu nedenle, çoğu durumda `==` ve `!=` yerine genellikle `===` and `!==` karşılaştırmalarının kullanılması önerilir.

### Eşsiz Değerler

Benzerlik karşılaştırması (`===` and `!==`) her değere uygulanabilirken, diğer karşılaştırma işleçlerinin sadece karşılaştırılabilir değerlere uygulanması gerekir. Eşsiz değerlerin karşılaştırma sonucu tanımsızdır ve bu sonuca güvenilmemelidir.

### Ayrıca Bakınız

- strcasecmp()
- strcmp()
- Dizi işleçleri
- Türler

### Üç Terimli İşleç

Diğer bir karşılaştırma işleci `?:` (üç terimli) işlecidir.

Örnek 3 - Öntanımlı bir değer atama

    <?php
    // Üç terimli işleç için kullanım örneği
    $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

    // Yukarıdaki kod ile buradaki if/else deyimi aynı işlemi yapar.
    if (empty($_POST['action'])) {
        $action = 'default';
    } else {
        $action = $_POST['action'];
    }

    ?>

`(ifade1) ? (ifade2) : (ifade3)` ifadesinin sonucu, ifade1 doğruysa ifade2 değilse ifade3'tür.

Üç terimli işlecin orta parçasını dışarda bırakmak mümkündür. `ifade1 ?: ifade3` ifadesinin sonucu, ifade1 doğruysa ifade1 değilse ifade3'tür.

> Bilginize: Üç terimli işleç aslında bir ifadedir, dolayısıyla sonucu bir değişkene atanamaz, fakat bir deyimin sonucuna atanabilir. Bir değişkenin gönderimli döndürülmesi gerekiyorsa bu önem kazanır. Gönderimli olarak değer döndüren bir işlevde `return $var == 42 ? $a : $b;` deyimi bu bakımdan çalışmaz ve bir uyarı gösterilir.

> Bilginize:

> Üç terimli işleçleri parantezsiz olarak iç içe kullanmanız önerilmez. PHP'nin böyle bir işlemin tek bir deyimde yapılmak istenmesi durumundaki davranışı diğer dillerle karşılaştırıldığında beklendiği gibi olmayabilir. Aslında PHP 8.0.0'dan önce, üçlü ifadeler diğer programlama dilleri gibi sağdan sola yerine soldan sağa değerlendiriliyordu. PHP 7.4.0 itibariyle soldan sağa ilişkilendirmeye güvenilmesi önerilmemekte olup PHP 8.0.0 itibariyle üçlü işlecin değerlendirmesi yönsüzdür.

> Örnek 4 - İç içe üç terimli davranışı

>     <?php
>     // ilk bakışta aşağıdaki deyimin sonucu 'true' olacak sanılır.
>     echo (true ? 'true' : false ? 't' : 'f');

>     // ancak gerçekte çıktı 't' olur, PHP 8.0.0 öncesinde.
>     // Çünkü üç terimli ifade soldan ilişkilendirilir.

>     // Aynı deyimi şöyle yazarsanız, durum anlaşılır hale gelir
>     echo ((true ? 'true' : false) ? 't' : 'f');

>     // Burada, ilk ifade mantıksal olarak doğru olduğundan sonuç (bool) true
>     // olacak, böylece ikinci üç terimlinin ilk terimi 'true' olacak ve
>     // ikinci üç terimliden 't' dönecektir.
>     ?>

> Bilginize:

> Ancak kısa üç terimli (`?:`) zincirleri kararlıdır ve beklendiği gibi davranır. Yanlış olmayan ilk bağımsız değişken değerlendirilir. Tanımsız değerlerin yine de bir uyarı vereceği unutulmamalıdır.

> Örnek 5 - Kısa üç terimli zinciri

>     <?php
>     echo 0 ?: 1 ?: 2 ?: 3, PHP_EOL; //1
>     echo 0 ?: 0 ?: 2 ?: 3, PHP_EOL; //2
>     echo 0 ?: 0 ?: 0 ?: 3, PHP_EOL; //3
>     ?>

### Null kaynaşma işleci

Diğer bir kullanışlı işleç kısaltması olan "??" null kaynaşma işleci adını alır.

Örnek 6 - Öntanımlı değer atama

    <?php
    // Null kaynaşma işleci için kullanım örneği
    $action = $_POST['action'] ?? 'default';

    // Yukarıdaki satır, bu if/else deyimine eşdeğerdir.
    if (isset($_POST['action'])) {
        $action = $_POST['action'];
    } else {
        $action = 'default';
    }

    ?>

`(ifade1) ?? (ifade2)` ifadesinin sonucu, ifade1 `null` ise ifade2 değilse ifade1'dir.

Aslında, bu işleç sol taraf değeri mevcut değilse isset() gibi bir uyarı ya da bilgi çıktılamaz. Bu, özellikle dizi anahtarlarında kullanışlıdır.

> Bilginize: Null kaynaşma işleci bir ifade olup bir değişkene atanmaz ama bir deyimin sonucuna atanabilir. Bir değişkenin gönderimli döndürülmesi gerekiyorsa bunu belirtmek önemlidir. Gönderimli döndüren bir işlevde `return $foo ?? $bar;` deyimi bu nedenle çalışmaz ve bir uyarı çıktılanır.

> Bilginize:

> Null kaynaşma işleci düşük önceliğe sahiptir. Yani, diğer işleçlerle (dizge bitiştirme veya aritmetik işleçler gibi) birlikte kullanıldığında yay ayraçlar gerekli olabilir.

>     <?php
>     // $name tanımsızsa uyarı verilir
>     print 'Mr. ' . $name ?? 'Anonymous';

>     // "Mr. Anonymous" basar
>     print 'Mr. ' . ($name ?? 'Anonymous');
>     ?>

> Bilginize:

> Null kaynaşma işleci basit iç içeliğe izin verir:

> Örnek 7 - İçiçe null kaynaşma işleci

>     <?php

>     $foo = null;
>     $bar = null;
>     $baz = 1;
>     $qux = 2;

>     echo $foo ?? $bar ?? $baz ?? $qux; // 1 basar

>     ?>

## Hata Denetim İşleçleri

PHP tek bir hata denetim işlecini destekler: kuyruklu a imi (`@`). PHP'de bir deyimin başına getirildiğinde, bu deyimin üreteceği olası hata iletileri engellenir.

set_error_handler() ile özel bir hata işleyici işlevi ayarlanırsa, tanılama bastırılmış olsa bile işlev çağrılır.

Uyarı

PHP 8.0.0'dan önce, özel hata işleyicisinden çağrılan error_reporting() işlevi, hata `@` işleci ile bastırılmış olsa bile daima `0` döndürürdü. PHP 8.0.0 ve sonrasında `E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE` bitsel ifadesinin değeri dönmektedir.

İfade tarafından üretilenhata iletisi, get_error_last() işlevinden dönen dizinin `"message"` elemanında bulunur. Bu işlevin sonucu her hatada değişir, bu bakımdan sonuca yeterince kısa sürede bakmak gerekir.

    <?php
    /* Kasıtlı dosya hatası */
    $dosyam = @file ('var_olmayan_dosya') or
        die ("Dosya açılamadı: hata '" . get_error_last()['message'] . "'");

    // İfadelerle çalışır ama işlevlerle çalışmaz:
    $değer = @$cache[$key];
    // $key indisi mevcut değilse bir uyarı çıktılanır.

    ?>

> Bilginize: Kuyruklu a işleci sadece ifadelerin başında kullanıldığında çalışır. Kısaca: Bir değer elde edilebilen herşeyin başına `@` getirilebilir. Örneğin, değişkenlerin işlev veya include çağrılarının, sabitlerin ve benzerlerinin başına `@` getirilebilir. Ama işlev veya sınıf tanımlarının veya `if` ve foreach gibi denetim yapılarının başına `@` konamaz.

Uyarı

PHP 8.0.0 öncesinde, `@` hata denetim işleci ile betiğin çalışmasını sonlandıracak önemli hataların raporlanmasını iptal etmek mümkündü. Bu bakımdan, işleç örneğin bir işlevden kaynaklanabilecek hataları bastırmak için kullanılıyorsa, işlev tanımında yapılan yazım hataları nedeniyle veya işlevin yokluğu halinde, ne olup bittiği anlaşılamadan betik sonlanabiliyordu.

### Ayrıca Bakınız

- error_reporting()
- Hata İşleme İşlevleri

## Çalıştırma İşleci

PHP tek bir çalıştırma işlecini destekmektedir: ters tırnak imleri (````). Bunların sıradan tek tırnaklar olmadığına dikkat edilmelidir! Ters tırnak imlerinin arasına yazılmış komutları PHP komut satırında çalıştıracak ve çıktısını döndürecektir. Yani, komut satırına birşey çıktılanmaz; ama sonucu bir değişkene atayabilirsiniz. Çalıştırma işleci shell_exec() işlevinin yaptığı işi yapar.

    <?php
    $output = `ls -al`;
    echo "<pre>$output</pre>";
    ?>

> Bilginize:

> shell_exec() işlevi etkin değilse, çalıştırma işleci etkin değildir.

> Bilginize:

> Bazı başka dillerin aksine, tek tırnak imlerinin çift tırnaklı dizeler içinde özel bir anlamı yoktur.

### Ayrıca Bakınız

- Program Çalıştırma İşlevleri
- popen()
- proc_open()
- PHP'nin komut satırından kullanılması

## Mantıksal İşleçler

Mantıksal İşleçler
Örnek | İsim | Sonuç
--- | --- | ---
`$a and $b` | Ve | $a ve $b her ikisi de doğruysa sonuç doğrudur (`true`).
`$a or $b` | Veya | $a veya $b doğruysa sonuç doğrudur.
`$a xor $b` | Ayrıcalıklı Veya | $a veya $b doğruysa sonuç doğru, her ikiside doğruysa sonuç yanlıştır (`false`).
`! $a` | Değil | $a doğru değilse sonuç doğrudur.
`$a && $b` | Ve | $a ve $b her ikisi de doğruysa sonuç doğrudur.
`$a || $b` | Veya | $a veya $b doğruysa sonuç doğrudur.

Ve, Veya işleçlerinin iki farklı türü olmasının sebebi önceliklerinin farklı oluşudur. (Bakınız: İşleç Önceliği.)

Örnek 1 - Örneklerle mantıksal işleçler

    <?php
    // --------------------
    // Aşağıdaki ifadelerde ilk terim sonucu belirlediğinden ikinci
    // terime hiç bakılmayacak, yani foo() işlevi hiç çağrılmayacaktır.
    $a = (false && foo());
    $b = (true  || foo());
    $c = (false and foo());
    $d = (true  or  foo());

    // --------------------
    // "||" işlecinin önceliği "or" işlecinden yüksektir.
    // İfadenin sonucu $e'ye atanır (false || true)
    // Tıpkı şöyle: ($e = (false || true))
    $e = false || true;

    // "or" işleminden önce false sabiti $f'ye atanır ve true yoksayılır
    // Tıpkı böyle: (($f = false) or true)
    $f = false or true;

    var_dump($e, $f);

    // --------------------
    // "&&" işlecinin önceliği "and" işlecinden yüksektir.
    // İfadenin sonucu $g'ye atanır (true && false)
    // Tıpkı böyle: ($g = (true && false))
    $g = true && false;

    // "and" işleminden önce true sabiti $h'ya atanır ve false yoksayılır
    // Tıpkı böyle: (($h = true) and false)
    $h = true and false;

    var_dump($g, $h);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    bool(false)
    bool(false)
    bool(true)

## Dizge İşleçleri

İki tane dizge işleci vardır. İlki sol ve sağ terimlerini ard arda ekleyen birleştirme işleci ('.'), ikincisi ise sağ taraftaki bağımsız değişkeni sol taraftaki bağımsız değişkene ekleyen birleştirerek atama işlecidir (`.=`). Daha fazla bilgi için bkz: atama işleçleri.

    <?php
    $a = "Merhaba ";
    $b = $a . "Dünyalı!"; // $b artık "Merhaba Dünyalı!" içeriyor

    $a = "Merhaba ";
    $a .= "Dünyalı!";     // $a artık "Merhaba Dünyalı!" içeriyor
    ?>

### Ayrıca Bakınız

- string türü
- Dizge İşlevleri

## Dizi İşleçleri

Dizi İşleçleri
Örnek | İsim | Sonuç
--- | --- | ---
`$a + $b` | Birleşim | $a ve $b'nin birleşimi.
`$a == $b` | Eşitlik | $a ve $b aynı anahtar/değer çiftlerine sahipse sonuç doğrudur.
`$a === $b` | Aynılık | $a ve $b aynı anahtar/değer çiftlerine sahipse ve bunların sırası ve türleri aynıysa sonuç doğrudur.
`$a != $b` | Eşitsizlik | $a ve $b birbirine eşit değilse sonuç doğrudur.
`$a <> $b` | Eşitsizlik | $a ve $b birbirine eşit değilse sonuç doğrudur.
`$a !== $b` | Farklılık | $a ve $b aynı dizi değilse sonuç doğrudur.

`+` işleci sol taraf dizisini sağ taraf dizisine ekleyip sağ taraf dizisini döndürür. Her iki dizinin anahtarları alınır, sol taraf dizisinin elemenları alınır ve sağ taraf dizisindeki eşleşen elemanlar yok sayılır.

    <?php
    $a = array("a" => "elma", "b" => "armut");
    $b = array("a" => "vişne", "b" => "kiraz", "c" => "çilek");

    $c = $a + $b;
    echo "\$a ve \$b'nin birleşimi: \n";
    var_dump($c);

    $c = $b + $a;
    echo "\$b ve \$a'nın birleşimi: \n";
    var_dump($c);

    $a += $b; // $a += $b'nin birleşimi $a ve $b'dir
    echo "\$a += \$b'nin birleşimi: \n";
    var_dump($a);
    ?>

Betik çalıştırıldığında şu çıktıyı verir:

    $a ve $b'nin birleşimi:
    array(3) {
      ["a"]=>
      string(4) "elma"
      ["b"]=>
      string(5) "armut"
      ["c"]=>
      string(6) "çilek"
    }
    $b ve $a'nın birleşimi:
    array(3) {
      ["a"]=>
      string(6) "vişne"
      ["b"]=>
      string(5) "kiraz"
      ["c"]=>
      string(6) "çilek"
    }
    $a += $b'nin birleşimi:
    array(3) {
      ["a"]=>
      string(5) "elma"
      ["b"]=>
      string(6) "muz"
      ["c"]=>
      string(6) "çilek"
    }

Aynı anahtar ve değere sahip dizi elemanları birbirine eşit kabul edilir.

Örnek 1 - Dizilerin karşılaştırılması

    <?php
    $a = array("elma", "armut");
    $b = array(1 => "armut", "0" => "elma");

    var_dump($a == $b); // bool(true)
    var_dump($a === $b); // bool(false)
    ?>

### Ayrıca Bakınız

- array türü
- Dizi İşlevleri

## Tür İşleçleri

`instanceof` işleci, bir PHP değişkeninin belli bir sınıfın nesnel örneği olup olmadığını saptar:

Örnek 1 - `instanceof` ve sınıflar

    <?php
    class Sınıfım
    {
    }

    class BaşkaSınıf
    {
    }
    $a = new Sınıfım;

    var_dump($a instanceof Sınıfım);
    var_dump($a instanceof BaşkaSınıf);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

`instanceof` ayrıca, bir değişkenin, bir ebeveyn sınıftan miras alınan bir sınıfın nesnel örneği olup olmadığını saptamak için de kullanılabilir:

Örnek 2 - Miras alınan sınıflar ve `instanceof` kullanımı

    <?php
    class EbeveynSınıf
    {
    }

    class Sınıfım extends EbeveynSınıf
    {
    }

    $a = new Sınıfım;

    var_dump($a instanceof Sınıfım);
    var_dump($a instanceof EbeveynSınıf);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)

Bir nesne bir sınıfın örneği değilse bunu sınamak için mantıksal değil işleci kullanılabilir.

Örnek 3 - Bir sınıfın örneği olmayan bir sınıfın `instanceof` ile sınanması

    <?php
    class Sınıfım
    {
    }

    $a = new Sınıfım;
    var_dump(!($a instanceof stdClass));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

Son olarak, `instanceof` işleci, bir değişkenin, bir arayüzü gerçekleyen bir sınıfın örneği olup olmadığını sınamak için kullanılabilir:

Örnek 4 - Arayüzler için `instanceof` kullanımı

    <?php
    interface Arayüzüm
    {
    }

    class Sınıfım implements Arayüzüm
    {
    }

    $a = new Sınıfım;

    var_dump($a instanceof Sınıfım);
    var_dump($a instanceof Arayüzüm);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)

`instanceof` işlecinin normal olarak bir sayıl sınıf ismi ile kullanılmasının yanında başka bir nesne veya bir dizge değişkeni ile de kullanılabilir:

Örnek 5 - Başka değişkenlerle `instanceof` kullanımı

    <?php
    interface Arayüzüm
    {
    }

    class Sınıfım implements Arayüzüm
    {
    }

    $a = new Sınıfım;
    $b = new Sınıfım;
    $c = 'Sınıfım';
    $d = 'BaşkaSınıf';

    var_dump($a instanceof $b); // $b, Sınıfım sınıfının bir nesnesidir
    var_dump($a instanceof $c); // $c 'Sınıfım' dizgesini içerir
    var_dump($a instanceof $d); // $d 'BaşkaSınıf' dizgesini içerir
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)

Sınanan değişken bir nesne değilse instanceof hata çıktılamaz, basitçe `false` döndürür. Sabitlere, her nasılsa, PHP 7.3.0 öncesinde izin verilmezdi.

Örnek 6 - Değişkenleri sınamak için `instanceof` kullanımı

    <?php
    $a = 1;
    $b = NULL;
    $c = imagecreate(5, 5);
    var_dump($a instanceof stdClass); // $a bir tamsayıdır
    var_dump($b instanceof stdClass); // $b NULL'dur
    var_dump($c instanceof stdClass); // $c bir özkaynaktır
    var_dump(FALSE instanceof stdClass);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(false)
    PHP Fatal error:  instanceof expects an object instance, constant given

PHP 7.3.0 ve sonrasında, `instanceof` işlecinin sol tarafında sabitlere izin verilmektedir.

Örnek 7 - Sabit kullanımını sınamak için `instanceof` kullanımı

    <?php
    var_dump(FALSE instanceof stdClass);
    ?>

Yukarıdaki örneğin PHP 7.3 çıktısı:

    bool(false)

PHP 8.0.0 ve sonrasında, `instanceof` keyfi ifadelerde kullanılabilmektedir. Bu ifadeler parantezlerle sarmalanmalı ve bir dizge üretmelidir.

Örnek 8 - Keyfi ifadelerde `instanceof` kullanımı

    <?php

    class ClassA extends \stdClass {}
    class ClassB extends \stdClass {}
    class ClassC extends ClassB {}
    class ClassD extends ClassA {}

    function getSomeClass(): string
    {
        return ClassA::class;
    }

    var_dump(new ClassA instanceof ('std' . 'Class'));
    var_dump(new ClassB instanceof ('Class' . 'B'));
    var_dump(new ClassC instanceof ('Class' . 'A'));
    var_dump(new ClassD instanceof (getSomeClass()));
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(true)

`instanceof` işleci yerine kullanılabilecek bir işlev de vardır: is_a()

### Ayrıca Bakınız

- get_class()
- is_a()

## Çağrılabilir Öğe İşleçleri

PHP 8.5 ve sonraki sürümler, doğrudan çağrılabilir öğeler üzerinde çalışan bir işleci destekler. `|>` işleci veya "boru", sağ tarafta tek bağımsız değişkenli çağrılabilir bir öğeyi kabul eder ve sol taraftaki değeri ona aktararak çağrılabilir öğenin sonucunu değerlendirir. Sağ taraftaki çağrılabilir öğe, geçerli herhangi bir PHP çağrılabilir öğesi olabilir: bir Closure, birinci sınıf çağrılabilir bir öğe, __invoke() örnekleyen bir nesne vb.

Bu, aşağıdaki iki satırın mantıksal olarak eşdeğer olduğu anlamına gelir.

Örnek 1 - `|>` Kullanımı

    <?php
    $result = "Merhaba Dünya" |> strlen(...);
    echo $result, PHP_EOL;

    $result = strlen("Merhaba Dünya");
    echo $result, PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    14
    14

Tek bir çağrı için pek kullanışlı olmasa da, birden fazla çağrı birbirine zincirlendiğinde kullanışlı hale gelir. Yani, aşağıdaki iki kod parçası mantıksal olarak eşdeğerdir:

Örnek 2 |> çağrılarını zincirleme

    <?php
    $result = "PHP Rocks"
        |> htmlentities(...)
        |> str_split(...)
        |> (fn($x) => array_map(strtoupper(...), $x))
        |> (fn($x) => array_filter($x, fn($v) => $v != 'O'))
    ;
    echo $result, PHP_EOL;

    $temp = "PHP Rocks";
    $temp = htmlentities($temp);
    $temp = str_split($temp);
    $temp = array_map(strtoupper(...), $temp);
    $temp = array_filter($temp, fn($v) => $v != 'O');
    $result = $temp;
    echo $result, PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => P
        [1] => H
        [2] => P
        [3] =>
        [4] => R
        [6] => C
        [7] => K
        [8] => S
    )
    Array
    (
        [0] => P
        [1] => H
        [2] => P
        [3] =>
        [4] => R
        [6] => C
        [7] => K
        [8] => S
    )

Borunun sol tarafı herhangi bir değer veya ifade olabilir. Sağ taraf, tek bir bağımsız değişken alan geçerli bir PHP çağrılabilir öğesi veya böyle bir çağrılabilir öğe olarak değerlendirilen herhangi bir ifade olabilir. Birden fazla zorunlu bağımsız değişkeni olan işlevlere izin verilmez ve işlev yetersiz bağımsız değişkenlerle normal şekilde çağrılmış gibi başarısız olur. Başvuru olarak değişken alan işlevlere izin verilmez. Sağ taraf geçerli bir çağrılabilir öğe olarak değerlendirilmezse hata oluşur.

> Bilginize:

> Sözdizimi belirsizliğini önlemek için, yukarıdaki örneklerde olduğu gibi, bir boru işleciyle kullanıldığında ok işlevlerinin yaylı ayraç içine alınması GEREKTİĞİ unutulmamalıdır. Bunu yapmamak, ölümcül bir hataya yol açar.

### Ayrıca Bakınız

- Closure

# Denetim Yapıları

## İçindekiler

- Giriş
- if
- else
- elseif/else if
- Denetim yapıları için diğer sözdizimi
- while
- do-while
- for
- foreach
- break
- continue
- switch
- match
- declare
- return
- require
- include
- require_once
- include_once
- goto

## Giriş

Bütün PHP betikleri bir dizi deyimden oluşur. Bir deyim; bir atama, bir işlev çağrısı, bir döngü, bir koşullu deyim hatta hiçbir şey yapmayan bir deyim (boş bir deyim) olabilir. Deyimler bir noktalı virgülle sonlandırılır. Ek olarak, deyimler kaşlı ayraçlar içine alınarak deyim grupları haline getirilebilirler. Bir deyim grubu da kendi başına bir deyim olarak kabul edilir. Bu fasılda deyim türlerinden bahsedeğiz.

### Ayrıca Bakınız

Aşağıdakiler, kılavuzda işlevler altında bulunmalarına rağmen dil yapıları olarak kabul edilir.

- list()
- array()
- echo
- eval()
- print

## if

(PHP 4, PHP 5, PHP 7, PHP 8)

`if` oluşumu, PHP dahil olmak üzere birçok programlama dilindeki en önemli yapı taşlarından biri olup kod bölümlerinin koşullu olarak çalıştırılabilmelerini sağlar. PHP, C dilindekine benzer bir `if` yapısı sunar:

    if (ifade)
        deyim

İfadelerle ilgili bölümde de anlatıldığı gibi, ifade kendi mantıksal değeri üzerinden değerlendirilir. ifade'nin sonucu `true` ise, PHP deyim'i çalıştırır, `false` ise gözardı eder. Hangi değerlerin `false` olarak değerlendirildiği hakkında daha fazla bilgiyi boolean türüne dönüşüm bölümünde bulabilirsiniz.

Aşağıdaki örnek, $a değeri $b değerinden büyük olduğu takdirde `a büyüktür b` metnini görüntüleyecektir:

    <?php
    if ($a > $b)
        echo "a büyüktür b";
    ?>

Çoğunlukla birden çok deyimin koşullu olarak çalıştırılmasını isteyeceksiniz. Elbette, her deyimi ayrı ayrı `if` cümlecikleri içine almanıza gerek yoktur. Birden çok deyimi tek bir deyim grubu içine toplayabilirsiniz. Örneğin, aşağıdaki kod $a değeri $b değerinden büyük olduğu takdirde `a büyüktür b` metnini görüntüleyecektir ve sonrasında $a değişkeninin değerini $b değişkenine atayacaktır:

    <?php
    if ($a > $b) {
        echo "a büyüktür b";
      $b = $a;
    }
    ?>

Sonsuz sayıda `if` deyimi bir başka `if` deyiminin içine gömülebilir. Bu, uygulamanızın çeşitli bölümlerine koşullu deyimler uygulayabilmeniz için tam bir esneklik sağlar.

## else

(PHP 4, PHP 5, PHP 7, PHP 8)

Çoğu zaman belli bir koşul sağlandığında bir deyimin, o koşul sağlanmadığında başka bir deyimin çalıştırılmasını isteyeceksiniz. Bunun için `else` kullanılmaktadır. `Else`, bir `if` deyimini `false` döndürdüğü takdirde bir deyim çalıştırmak üzere genişletir. Örneğin, aşağıdaki kod $a değeri $b değerinden büyükse a büyüktür b, büyük değilse a büyük değildir b iletisini görüntüleyecektir:

    <?php
    if ($a > $b) {
        echo "a büyüktür b";
    } else {
        echo "a büyük değildir b";
    }
    ?>

`Else` deyimi yalnızca `if` deyiminin `false` döndürdüğü durumda çalıştırılacaktır. Aynı durum, `false` döndüren herhangi bir `elseif` ifadesinin olması durumunda da geçerlidir (bakınız elseif).

> Bilginize: Sarkan else

> `if`-`else` deyimlerinin iç içe olduğu durumda, `else` deyimleri daima en yakın `if` ile ilişkilendirilir.

>     <?php
>     $a = false;
>     $b = true;
>     if ($a)
>         if ($b)
>             echo "b";
>     else
>         echo "c";
>     ?>

> Girintiye (PHP için bu da yoksayılacak boşluklardan biridir) rağmen, `else` beklenenin aksine `if ($b)` ile ilişkilendirilir, bu nedenle örnek herhangi bir çıktı üretmez. Bu davranışa güvenilebilirse de, kaşlı ayraçları kullanarak olası belirsizlikleri gidermek daha iyidir.

## elseif/else if

(PHP 4, PHP 5, PHP 7, PHP 8)

`elseif`, isminden de anlaşılacağı gibi, `if` ve `else` deyimlerinin biraraya gelmesiyle oluşur. `else` gibi, orijinal `if` ifadesinin `false` döndürdüğü durumda farklı bir deyimin çalıştırılması için kullanılır. Ancak, `else`'ten farklı olarak, ilgili deyimi sadece kendisine ait koşullu ifade `true` değerini döndürdüğü takdirde çalıştıracaktır. Örneğin, aşağıdaki kod a büyüktür b, a eşittir b ya da a küçüktür b iletisini görüntüleyecektir:

    <?php
    if ($a > $b) {
        echo "a büyüktür b";
    } elseif ($a == $b) {
        echo "a eşittir b";
    } else {
        echo "a küçüktür b";
    }
    ?>

Aynı `if` deyimine ait birden çok `elseif` bulunabilir. İlk önce hangi `elseif` deyimi `true` değerini döndürürse (eğer döndüren varsa) o deyim çalıştırılır. Bu deyim 'elseif' biçiminde tek sözcük olarak kullanılabileceği gibi, 'else if' biçiminde iki sözcük olarak da kullanılabilir, sonuç aynı olacaktır. Sözdiziminin anlamlandırılması açısından küçük bir farklılık olsa da (C dilinde de böyledir) sonuç olarak her ikisi de aynı sonucu üretecektir.

`elseif` ifadesi yalnızca kendisinden önceki `if` ifadesi ve bu ifadeye bağlı kendisinden önce gelen diğer tüm `elseif` ifadeleri `false` ile sonuçlandığında çalıştırılır ve `true` olarak değerlendirilir.

> Bilginize: `elseif` (tek sözcük) ve `else if` (iki sözcük), yukarıdaki örnekten anlaşılacağı üzere sadece kaşlı ayraçlar kullanıldığı zaman tamamen aynı şekilde ele alınır. `if` ve `elseif` için iki noktalı sözdizimi kullanıldığında `elseif` iki sözcüğe ayrılmamalıdır, yoksa PHP bir çözümleme hatası vererek başarısız olur.

    <?php

    /* Yanlış Yöntem: */
    if ($a > $b):
        echo $a." büyüktür ".$b;
    else if ($a == $b): // Bu derlenmez.
        echo "Üstteki satır bir çözümleme hatasına yol açar.";
    endif;

    /* Doğru Yöntem: */
    if ($a > $b):
        echo $a." büyüktür ".$b;
    elseif ($a == $b): // Sözcüklerin birleşik oluşuna dikkat!
        echo $a." eşittir ".$b;
    else:
        echo $a." ne büyük ne de eşittir ".$b;
    endif;

    ?>

## Denetim yapıları için diğer sözdizimi

(PHP 4, PHP 5, PHP 7, PHP 8)

PHP bazı denetim yapıları için farklı bir sözdizimi sağlar. Bu yapılar `if`, `while`, `for`, `foreach` ve `switch` yapılarıdır. Her durumda, bu farklı sözdiziminin basit şekli açılışta kullanılan kaşlı ayracın yerine iki nokta imi (:) ve kapanışta kullanılan kaşlı ayraç yerine de sırasıyla `endif;`, `endwhile;`, `endfor;`, `endforeach;` ya da `endswitch;` deyimlerinden birini kullanmaktır.

    <?php if ($a == 5): ?>
    A eşittir 5
    <?php endif; ?>

Yukarıdaki örnekte, içeriği "A eşittir 5" olan HTML bloğu iki noktalı sözdimi kullanılarak yazılmış bir `if` deyiminin içine gömülmüştür. HTML bloğu yalnızca $a değişkeni 5'e eşit olduğunda gösterilecektir.

İki noktalı sözdimi, `else` ve `elseif` için de kullanılabilir. Birazdan vereceğimiz örnek, iki noktalı sözdizimi ile yazılmış `elseif` ve `else` içeren bir `if` yapısıdır:

    <?php
    if ($a == 5):
        echo "a eşittir 5";
        echo "...";
    elseif ($a == 6):
        echo "a eşittir 6";
        echo "!!!";
    else:
        echo "a ne 5 ne de 6'dır";
    endif;
    ?>

> Bilginize:

> Aynı denetim kümesi içinde karışık sözdizimi desteklenmemektedir.

Uyarı

`switch` deyimi ile ilk `case` deyimi arasındaki herhangi bir çıktı (boşluklar dahil) sözdizimi hatasına yol açar. Örneğin, aşağıdaki kod geçersizdir:

    <?php switch ($foo): ?>
        <?php case 1: ?>
        ...
    <?php endswitch; ?>

Fakat bu örnek geçerlidir. `switch` deyiminden sonraki satırsonu karakteri `?>` kapama etiketinin parçası olarak ele alınıp `switch` ile `case` arasında hiçbir şey çıktılanmaz:

    <?php switch ($foo): ?>

    <?php case 1: ?>
        ...
    <?php endswitch; ?>

Daha fazla örnek için while, for ve if cümleciklerine bakabilirsiniz.

## while

(PHP 4, PHP 5, PHP 7, PHP 8)

`while` döngüsü PHP'de yer alan en basit döngü türüdür. C'deki karşılığı ile aynı şekilde çalışır. Bir `while` deyiminin basit kullanımı:

    while (ifade)
        deyim

`While` deyiminin anlamı basittir. `while` deyimindeki ifade `true` olduğu müddetçe etki alanındaki deyimleri PHP tekrar tekrar çalıştırır. İfadenin değeri döngünün her yinelenişinde yeniden değerlendirilir, deyimlerin çalıştırılması sırasında bu ifadenin değeri `false` olsa bile, etki alanındaki deyimlerin tamamı çalıştırılıncaya kadar işlem devam eder. (PHP döngü içindeki deyimleri her yinelemede bir kere çalıştırır.) `while` ifadesi daha başlangıçta `false` değerini verirse `while` etki alanındaki deyimler tek bir defa bile çalıştırılmaz.

`if` deyiminde olduğu gibi, birden çok deyimi aynı `while` döngüsü içinde kaşlı ayraçlar arasında veya iki noktalı sözdizimini kullanarak gruplayabilirsiniz:

    while (ifade):
        deyimler
        ...
    endwhile;

Aşağıdaki örnekler birbirleri ile aynıdırlar, her ikisi de sayıları 1'den 10'a kadar yazacaktır:

    <?php
    /* örnek 1 */

    $i = 1;
    while ($i <= 10) {
        echo $i++;  /* yazdırılan değer $i
                        değerinin artıştan önceki
                        değeridir (sonda-arttırım) */
    }

    /* örnek 2 */

    $i = 1;
    while ($i <= 10):
        echo $i;
        $i++;
    endwhile;
    ?>

## do-while

(PHP 4, PHP 5, PHP 7, PHP 8)

`do-while` döngüsü, `while` döngüsüne çok benzer; farkı, doğrulama ifadesinin her yinelemenin başında değil sonunda değerlendiriliyor olmasıdır. `while` döngüsü ile temek farklılık, `do-while` kullanıldığında ilk yinelemenin daima yapılıyor olmasıdır (ifadenin doğruluğuna yalnızca yinelemenin sonunda bakılır); halbuki `while` döngüsünde, ifadenin doğruluğuna her yinelemenin öncesinde bakılmakta ve ifadenin sonucu doğru değilse yineleme hiç başlatılmadan döngü sonlandırılmaktadır.

`do-while` döngüsü için yalnızca tek bir sözdizimi mevcuttur:

    <?php
    $i = 0;
    do {
        echo $i;
    } while ($i > 0);
    ?>

Yukarıdaki döngü tam olarak bir defa çalışacaktır, ilk tekrardan sonra ifadenin doğruluğuna bakıldığında `false` değerini verecek ($i sıfırdan büyük değildir) ve döngünün çalışması sonlanacaktır.

    <?php
    do {
        if ($i < 5) {
            echo "i yeterince büyük değil";
            break;
        }
        $i *= $çarpan;
        if ($i < $alt_sınır) {
            break;
        }
       echo "i uygun";

        /* i değerini işle */

    } while (0);
    ?>

Bu özelliğin yerine `goto` kullanılabilir.

## for

(PHP 4, PHP 5, PHP 7, PHP 8)

`for` döngüsü, PHP'deki en karmaşık döngü yapısıdır. C'deki karşılığıyla aynı biçimde çalışır. `for` döngüsünün sözdimi:

    for (ifade1; ifade2; ifade3)
        deyim

İlk ifade (ifade1) döngünün en başında bir kereliğine koşulsuz olarak çalıştırılır.

Her yinelemenin başında ifade2 yeniden değerlendirilir. Bu ifadeden `true` sonucu elde edilirse, döngüye devam edilir ve döngünün etki alanındaki deyimler çalıştırılır. Bu ifadeden `false` sonucu elde edildiğinde etki alanındaki deyimler çalıştırılmaksızın döngü sonlandırılır.

ifade3 ise her yinelemenin sonunda çalıştırılır.

Bu ifadelerin herbirini boş bırakmak da mümkündür. ifade2nin boş olması, döngünün sonsuza kadar çalıştırılacağı anlamına gelir (PHP, C'deki gibi bu durumu `true` olarak değerlendirir). Döngülerden genellikle bir şarta bağlı olarak `break` deyimi ile çıkmak isteyeceğiniz düşünüldüğünde, bu durum düşündüğünüz kadar kullanışsız değildir.

Aşağıdaki örnekleri ele alalım. Hepsi de 1'den 10'a kadar sayıları görüntülemektedir:

    <?php
    /* örnek 1 */

    for ($i = 1; $i <= 10; $i++) {
        echo $i;
    }

    /* örnek 2 */

    for ($i = 1; ; $i++) {
        if ($i > 10) {
            break;
        }
        echo $i;
    }

    /* örnek 3 */

    $i = 1;
    for (; ; ) {
        if ($i > 10) {
            break;
        }
        echo $i;
        $i++;
    }

    /* örnek 4 */

    for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
    ?>

Elbette, kullandığımız ilk örnek en güzel örnek olarak gözükmektedir (ya da belki dördüncü örnek), ancak birçok durumda `for` döngüsü içerisinde boş ifadeler kullanmayı oldukça kullanışlı bulabilirsiniz.

PHP, iki noktalı sözdizimini `for` döngüleri için de desteklemektedir.

    for (ifade1; ifade2; ifade3):
        deyimler
        ...
    endfor;

Çoğu kullanıcının yaptığı gibi diziler üzerindeki yinelemeleri şöyle yapabilirsiniz:

    <?php
    /*
     * Diziye baştan bir kaç veri atıp daha sonra
     * döngü içinde verilerde değişiklik yapacağız.
     */
    $bizimkiler = Array(
        Array('isim' => 'Ali', 'tuz' => 856412),
        Array('isim' => 'Veli', 'tuz' => 215863)
    );

    for($i = 0; $i < count($bizimkiler); ++$i)
    {
        $bizimkiler[$i]['tuz'] = mt_rand(000000, 999999);
    }
    ?>

Her yinelemede dizinin boyutları yeniden hesaplandığından kod yavaş çalışabilir. Örnekte boyut değişmediğinden count() işlevini defalarca çağırmak yerine dizi boyutunu bir değişkene atıp ifadede bu değişken kullanılarak kod en iyilenebilir:

    <?php
    $bizimkiler = Array(
        Array('isim' => 'Ali', 'tuz' => 856412),
        Array('isim' => 'Veli', 'tuz' => 215863)
    );

    for($i = 0, $size = count($bizimkiler); $i < $size; ++$i)
    {
        $bizimkiler[$i]['salt'] = mt_rand(000000, 999999);
    }
    ?>

## foreach

(PHP 4, PHP 5, PHP 7, PHP 8)

`foreach` yapısı diziler üzerinde yineleme yapmayı kolaylaştırmaktadır. `foreach` yalnızca diziler ve nesneler için kullanılabilir; farklı veri türünde veya ilklendirilmemiş bir değişken ile kullanmak istediğinizde hata verir. İki sözdizimi mevcuttur:

    foreach (yinelenebilir_ifade as $değer)
        deyim
    foreach (yinelenebilir_ifade as $isim => $değer)
        deyim

İlk sözdizimi `yinelenebilir_ifade` ile belirtilen yinelenebilirin etrafında döner. Her yinelemede, sırası gelen elemanın değeri `$değer` değişkenine atanır.

İkinci yöntem de aynı şeyi yapar, ek olarak her yinelemede sırası gelen elemanın anahtarı `$isim` değişkenine atanır.

`foreach` işlevinin, current() ve key() gibi işlevler tarafından kullanılan dahili dizi göstericisini değiştirmediği unutulmamalıdır.

PHP 5'den itibaren, nesneleri yinelemek mümkün olmuştur.

`$değer` değişkeninin önüne & koyarak dizi elemanları üzerinde kolayca değişiklik yapılabilir. Böylece değer gönderimli hale gelir.

    <?php
    $dizi = array(1, 2, 3, 4);
    foreach ($dizi as &$değer) {
        $değer = $değer * 2;
    }
    // $dizi artık array(2, 4, 6, 8) olmuştur
    unset($değer); // son eleman da işlendiğine göre gönderimi kaldıralım
    ?>

Uyarı

`$değer` gönderim için kullanıldığından `foreach` döngüsünün sonunda son dizi elemanına gönderimli olarak kalır, bu bakımdan döngünün sonunda bu gönderimin unset() işlevi kullanılarak kaldırılması önerilir. Yoksa aşağıdaki davranışla karşılaşırsınız:

    <?php
    $dizi = array(1, 2, 3, 4);
    foreach ($dizi as &$değer) {
        $değer = $değer * 2;
    }
    // $dizi şimdi array(2, 4, 6, 8)

    // unset($değer) olmaksızın, $değer hala son öğeye gösterimli olur: $dizi[3]

    foreach ($dizi as $key => $değer) {
        // $dizi[3] artık $dizi içindeki her değerle güncellenecek
        echo "{$key} => {$değer} ";
        print_r($dizi);
     }
    // ...ikinciden son değere kadar son değere kopyalanacak.

    // çıktı:
    // 0 => 2 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 2 )
    // 1 => 4 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 4 )
    // 2 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
    // 3 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
    ?>

Bir sabit dizinin değerini gönderim olarak yinelemek mümkündür:

    <?php
    foreach (array(1, 2, 3, 4) as &$değer) {
        $değer = $değer * 2;
    }
    ?>

> Bilginize:

> `foreach` `@` kullanarak hata iletilerini göstermeme yeteneğini desteklemez.

Değişik kullanımlara örnekler:

    <?php
    /* foreach örneği 1: yalnızca değer */

    $a = array(1, 2, 3, 17);

    foreach ($a as $v) {
       echo "\$a değişkeninin şu anki değeri: $v.\n";
    }

    /* foreach örneği 2: değer (örnek olması için anahtar
     *  ile birlikte yazdırılmıştır) */

    $a = array(1, 2, 3, 17);

    $i = 0; /* yalnızca örnekleme için */

    foreach ($a as $v) {
        echo "\$a[$i] => $v.\n";
        $i++;
    }

    /* foreach örneği 3: anahtar ve değer */

    $a = array(
        "bir" => 1,
        "iki" => 2,
        "üç"  => 3,
        "on yedi" => 17
    );

    foreach ($a as $k => $v) {
        echo "\$a[$k] => $v.\n";
    }

    /* foreach örneği 4: çok boyutlu diziler */
    $a = array();
    $a[0][0] = "a";
    $a[0][1] = "b";
    $a[1][0] = "y";
    $a[1][1] = "z";

    foreach ($a as $v1) {
        foreach ($v1 as $v2) {
            echo "$v2\n";
        }
    }

    /* foreach örneği 5: dinamik diziler */

    foreach (array(1, 2, 3, 4, 5) as $v) {
        echo "$v\n";
    }
    ?>

### İç içe dizilerin list() ile ayrıştırılması

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Dizi dizileri üzerinde döngü oluşturmak ve list() işlevini değer olarak kullanmak suretiyle içteki diziyi döngü değişkenlerine atayarak onu da açmak artık mümkündür.

Örneğin:

    <?php
    $dizi = [
        [1, 2],
        [3, 4],
    ];

    foreach ($dizi as list($a, $b)) {
        // $a içteki dizinin ilk elemanını,
        // $b ikinci elemanını içerecektir.
        echo "A: $a; B: $b\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    A: 1; B: 2
    A: 3; B: 4

İçteki dizinin gerekmeyen elemanlarını list() içinde içermeyebilirsiniz:

    <?php
    $dizi = [
        [1, 2],
        [3, 4],
    ];

    foreach ($dizi as list($a)) {
        // Burada artık $b yok.
        echo "$a\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1
    3

list() için yeterli sayıda dizi elemanı yoksa bir uyarı üretilir.:

    <?php
    $dizi = [
        [1, 2],
        [3, 4],
    ];

    foreach ($dizi as list($a, $b, $c)) {
        echo "A: $a; B: $b; C: $c\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Notice: Undefined offset: 2 in example.php on line 7
    A: 1; B: 2; C:

    Notice: Undefined offset: 2 in example.php on line 7
    A: 3; B: 4; C:

## break

(PHP 4, PHP 5, PHP 7, PHP 8)

`break` deyimi, `for`, `foreach`, `while`, `do-while` ve `switch` yapılarının çalışmasını sonlandırmak için kullanılır.

`break` deyiminde istenirse bir sayısal ifade belirtilebilir. Bu sayı iç içe yapılardan içten dışa kaç yapının aynı anda durdurulacağını belirler. Öntanımlı değer `1` olup sadece ilk yapının çalışması sonlandırılır.

    <?php
    $arr = array('sıfır', 'bir', 'iki', 'üç', 'dur', 'dört', 'beş');
    foreach ($arr as $val) {
        if ($val == 'dur') {
            break;    /* Burada 'break 1;' de yazabilirsiniz. */
        }
        echo "$val<br />\n";
    }

    /* Sayısal değer kullanımı. */

    $i = 0;
    while (++$i) {
        switch ($i) {
        case 5:
            echo "5'de<br />\n";
            break 1;  /* Yalnızca switch'ten çıkar. */
        case 10:
            echo "10'da; çıkılıyor<br />\n";
            break 2;  /* switch ve while'dan aynı anda çıkılır. */
        default:
            break;
        }
    }
    ?>

## continue

(PHP 4, PHP 5, PHP 7, PHP 8)

`continue` deyimi döngü yapılarının içinde kullanılır. Bu deyim kullanıldığında, döngünün kalan kısmı atlanır ve sonraki yineleme başlatılır.

> Bilginize: PHP'de switch deyimi `continue` deyiminin kullanılabileceği döngülerden biri olarak kabul edilmektedir. `continue` deyimi sayısal değer içermeyen `break` gibi davranır, ancak bu muhtemelen bir hata olduğundan bir uyarıya sebep olacaktır. Eğer `switch` bir döngü içindeyse `continue 2` dıştaki döngünün sonraki yinelemesinden devam eder.

`continue` deyimi ile seçime bağlı sayısal bir değer kullanılarak, kaç seviye döngünün sonuna atlanacağı belirtilebilir. Öntanımlı değer `1` olup geçerli döngünün sonuna atlanır.

    <?php
    $arr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six'];
    foreach ($arr as $key => $value) {
        if (0 === ($key % 2)) { // tek anahtarlı üyeleri atla
            continue;
        }
         echo $value . "\n";
    }
    ?>

Yukarıdaki örneklerin çıktısı:

    one
    three
    five

    <?php

    $i = 0;
    while ($i++ < 5) {
        echo "Dış\n";
        while (1) {
            echo "Orta\n";
            while (1) {
                echo "İç\n";
                continue 3;
            }
            echo "Bu hiçbir zaman çıktı vermez.\n";
        }
        echo "Bundan da çıktı alamazsınız.\n";
    }
    ?>

Yukarıdaki örneklerin çıktısı:

    Dış
    Orta
    İç
    Dış
    Orta
    İç
    Dış
    Orta
    İç
    Dış
    Orta
    İç
    Dış
    Orta
    İç

`continue` deyiminden sonra noktalı virgül konmazsa bu durum karışıklığa yol açabilir. Yapmamanız gereken ile ilgili bir örnek:

    <?php
    for ($i = 0; $i < 5; ++$i) {
        if ($i == 2)
            continue
        print "$i\n";
    }
    ?>

Şu biçimde bir çıktı almayı bekleyebilirsiniz:

    0
    1
    3
    4

`continue` ile ilgili değişiklikler
Sürüm: | Açıklama
--- | ---
7.3.0 | `switch` içinde bir `break` deyimi gibi davranmaya çalışan bir `continue` bir `E_WARNING` tetikleyecektir.

## switch

(PHP 4, PHP 5, PHP 7, PHP 8)

`switch` deyimi, aynı ifade içersinde yer alan bir dizi IF deyimine benzer. Birçok durumda, aynı değişkeni (ya da ifadeyi) birden çok değerle karşılaştırmak ve her karşılaştırmanın sonucunu ayrı bir kod parçası çalıştırarak değerlendirmek istersiniz. İşte bu, `switch` deyiminin varlık sebebidir.

> Bilginize: Başka bazı dillerden farklı olarak, continue deyimi `switch` ile uygulanabilir ve `break` ile benzerlik gösterir. Bir döngü içerisinde `switch` kullandıysanız ve kodun yürütülmesine dıştaki döngünün sonraki yinelemeden devam etmesini istiyorsanız, `continue 2` kullanabilirsiniz.

> Bilginize:

> `switch` ve `case` gevşek karşılaştırma yapar.

Aşağıdaki iki örnek aynı şeyi yazmanın iki farklı yolunu göstermektedir. Birincisi bir dizi `if` ve `elseif` deyiminin kullanımını, ikincisi ise `switch` deyiminin kullanımını örneklemektedir:

Örnek 1 - `switch` yapısı

    <?php
    // Bu switch deyimi:

    switch ($i) {
    case 0:
        echo "i eşittir 0";
        break;
    case 1:
        echo "i eşittir 1";
        break;
    case 2:
        echo "i eşittir 2";
        break;
    }

    // bunlara eşdeğerdir:

    if ($i == 0) {
        echo "i eşittir 0";
    } elseif ($i == 1) {
        echo "i eşittir 1";
    } elseif ($i == 2) {
        echo "i eşittir 2";
    }

    ?>

Hatalardan kaçınmak için `switch` deyiminin nasıl çalıştığını anlamak önemlidir. `switch` deyimi satır satır ele alınır (aslında deyim deyim). Başlangıçta, hiçbir kod çalıştırılmaz. Yalnızca `switch` ifadesiyle birlikte verilen değer ile uyuşan `case` deyimi bulunduğunda PHP ilgili deyimleri çalıştırmaya başlar. PHP `switch` bloğu sonlanana kadar ya da ilk `break` deyimi ile karşılaşıncaya kadar çalışmasına devam eder. Bir case bloğunun sonuna `break` koymazsanız, PHP sonraki `case` deyiminden kodları çalıştırmaya devam eder. Örnek:

    <?php
    switch ($i) {
    case 0:
        echo "i eşittir 0";
    case 1:
        echo "i eşittir 1";
    case 2:
        echo "i eşittir 2";
    }
    ?>

Burada, $i 0'a eşit ise, PHP tüm `echo` deyimlerini çalıştıracaktır! $i 1'e eşit ise, PHP son iki `echo` deyimini çalıştıracaktır! Beklediğiniz sonucu ('i eşittir 2' metninin görüntülenmesi) yalnızca $i 2'ye eşitse almanız mümkün olacaktır. Bu durumun oluşmaması için, `break` deyimini kullanmayı unutmamanız önemlidir (yine de, bazı durumlarda `break` deyimini kullanmak istemeyebilirsiniz).

Bir `switch` deyiminde, koşul yalnızca bir defa sorgulanır ve sonuç her bir `case` deyimi ile karşılaştırılır. Bir `elseif` deyiminde ise, koşul tekrar sorgulanır. Kullanmak istediğiniz koşul basit bir karşılaştırma işleminden daha karmaşıksa ve/veya bir döngü içerisindeyse, `switch` kullanmak daha hızlı olabilir.

`case` bloğu kod içermeyebilir ve amacı yalnızca denetimi bir sonraki `case` bloğuna geçirmek olabilir.

    <?php
    switch ($i) {
        case 0:
        case 1:
        case 2:
            echo "i 3'ten küçüktür ama negatif değildir";
            break;
        case 3:
            echo "i eşittir 3";
    }
    ?>

`default` durumu özel bir durumdur. Bu durum diğer hiçbir `case` ile uyuşmayan değerler için kullanılır ve en sonda yer almalıdır. Örneğin:

    <?php
    switch ($i) {
    case 0:
        echo "i eşittir 0";
        break;
    case 1:
        echo "i eşittir 1";
        break;
    case 2:
        echo "i eşittir 2";
        break;
    default:
        echo "i ne 0, ne 1 ne de 2'ye eşittir";
    }
    ?>

> Bilginize: Çok sayıda `default` kullanımı `E_COMPILE_ERROR` hatasını tetikler.

> Bilginize: Teknik olarak `default` en sonda olmak zorunda değildir, herhangi bir yerde olabilir. Yanızca başka bir eşleşme olmazsa kullanılır. Ancak, geleneksel olarak, son dal olarak en sona yerleştirmek en iyisidir.

Hiçbir `case` eşleşmezse ve `default` dalı da yoksa tıpkı doğrulanmayan `if` deyiminde olduğu gibi hiçbir kod çalıştırılmaz.

`case` değeri bir ifade olarak belirtilebilir. Ancak, bu ifade kendi başına değerlendirilecek ve daha sonra `switch` değeri ile gevşek bir şekilde karşılaştırılacaktır. Yani, `switch` değeri karmaşık değerlendirmeler için kullanılamaz. Örnek:

    <?php
    $hedef = 1;
    $ilk = 3;

    switch ($hedef) {
        case $ilk - 1:
            print "A";
            break;
        case $ilk - 2:
            print "B";
            break;
        case $ilk - 3:
            print "C";
            break;
        case $ilk - 4:
            print "D";
            break;
    }

    // "B" basar.
    ?>

Daha karmaşık karşılaştırmalarda `true` değeri `switch` değeri olarak kullanılabilir. Veya, `switch` yerine `if`-`else` deyimleri kullanılabilir.

    <?php
    $konum = 1;
    $ilk = 3;

    switch (true) {
        case $ilk - $konum === 1:
            print "A";
            break;
        case $ilk - $konum === 2:
            print "B";
            break;
        case $ilk - $konum === 3:
            print "C";
            break;
        case $ilk - $konum === 4:
            print "D";
            break;
    }

    // "B" basar.
    ?>

İki noktalı sözdizimi `switch` deyimi için de desteklenmektedir. Daha fazla bilgi için, Denetim yapıları için diğer sözdizimi bölümünü inceleyebilirsiniz.

    <?php
    switch ($i):
        case 0:
            echo "i eşittir 0";
            break;
        case 1:
            echo "i eşittir 1";
            break;
        case 2:
            echo "i eşittir 2";
            break;
        default:
            echo "i ne 0, ne 1 ne de 2'ye eşittir;
    endswitch;
    ?>

`case`’ten sonraki iki nokta yerine aşağıdaki gibi deyim sonunda noktalı virgül kullanmak da mümkündür:

    <?php
    switch($içecek)
    {
        case 'su';
        case 'süt';
        case 'ayran';
            echo 'İyi seçim';
            break;
        default;
            echo 'Lütfen yeniden seçiniz...';
            break;
    }
    ?>

### Ayrıca Bakınız

- match

## match

(PHP 8)

`match` (eşleşme) ifadesi, bir değerin özdeşlik denetimine dayalı olarak değerlendirmesini dallara ayırır. Switch deyimine benzer şekilde, bir `match` ifadesinin birden çok alternatifle karşılaştırılan bir özne ifadesi vardır. `switch`'in aksine, üçlü ifadeler gibi bir değere indirgeyecektir. `switch` aksine, karşılaştırma zayıf bir eşitlik denetiminden (==) ziyade bir özdeşlik denetimidir (===). Eşleşme ifadeleri PHP 8.0.0'dan itibaren mevcuttur.

Örnek 1 `match` ifadesinin yapısı

    <?php
    $dönüş değeri = match (özne_ifade) {
        tekil_koşullu_ifade => dönüş_ifadesi,
        koşullu_ifade1, koşullu_ifade2 => dönüş_ifadesi,
    };
    ?>

Örnek 2 `match` temel kullanım örneği

    <?php
    $yiyecek = 'börek';

    $dönen_değer = match ($yiyecek) {
        'meyva' => 'Bu bir meyva',
        'çorba' => 'Bu bir çorba',
        'börek' => 'Bu bir börek',
    };

    var_dump($dönen_değer);
    ?>

Yukarıdaki örneğin çıktısı:

    string(13) "Bu bir börek"

Örnek 3 Karşılaştırma işleçleriyle `match` kullanımı

    <?php
    $age = 18;

    $output = match (true) {
        $age < 2 => "Bebek",
        $age < 13 => "Çocuk",
        $age <= 19 => "Genç",
        $age > 19 => "Yetişkin",
        $age >= 65 => "Yaşlı"
    };

    var_dump($output);
    ?>

Yukarıdaki örneğin çıktısı:

    string(8) "Genç"

> Bilginize: `match` ifadesinin sonucunun kullanılmasına gerek yoktur.

> Bilginize: `match` ifadesi mutlaka bir noktalı virgül `;` ile sonlandırılmalıdır.

`match` ifadesi `switch` deyimine benzemekle birlikte bazı önemli farklar vardır:

- Bir `match` kolu, değeri birebir (`===`) değerlendirir, `switch` deyimin yaptığı gibi gevşekçe değil.
- `match` ifadesi bir değer döndürür.
- `match` kolları `switch` deyimlerini yaptığı gibi sonraki durumlarda başarısız olmaz.
- `match` ifadesi kapsamlı olmalıdır.

`switch` deyimleri gibi, `match` ifadeleri de eşleşmeleri sırayla değerlendirir. Başlangıçta hiçbir kod çalıştırılmaz. Koşullu ifadeler yalnızca, tüm önceki koşullu ifadeler özne ifadeyle eşleşmede başarısız olmuşlarsa değerlendirilir. Yalnızca eşleşen koşullu ifadeye karşılık gelen dönüş ifadesi değerlendirilir. Örneğin:

    <?php
    $sonuç = match ($x) {
        foo() => ...,
        $this->bar() => ..., //  foo() === $x ise $this->bar çağrılmaz
        $this->baz => beep(), // $x === $this->baz olmadıkça beep() çağrılmaz
        // vb.
    };
    ?>

`match` ifadesinin kolları virgüllerle ayrılmış çok sayıda ifade içerebilir. Bu bir mantıksal VEYA olup, aynı sağ taraflı çok sayıda eşleşme kolu için bir kısa yoldur.

    <?php
    $sonuç = match ($x) {
        // Bu eşleşme kolu:
        $a, $b, $c => 5,
        // Aşağıdaki üç eşleşme koluna eşdeğerdir:
        $a => 5,
        $b => 5,
        $c => 5,
    };
    ?>

Özel bir durum `default` kalıbıdır. Bu kalıp evvelce eşleşmemiş herşeyle eşleşir. Örnek:

    <?php
    $ifadeSonucu = match ($koşul) {
        1, 2 => foo(),
        3, 4 => bar(),
        default => baz(),
    };
    ?>

> Bilginize: Çok sayıda `default` kalıbı bir `E_FATAL_ERROR` hatasına (ölümcül hataya) yol açar.

`match` ifadesi kapsamlı olmalıdır. Konu ifadesi herhangi bir eşleşme kolu tarafından işlenmezse, bir UnhandledMatchError (başarısız eşleşme hatası) yavrulanır.

Örnek 4 - Başarısız eşleşme hatası örneği

    <?php
    $özne = 5;

    try {
        match ($özne) {
            1, 2 => foo(),
            3, 4 => bar(),
        };
    } catch (\UnhandledMatchError $e) {
        var_dump($e);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    object(UnhandledMatchError)#1 (7) {
      ["message":protected]=>
      string(33) "Unhandled match value of type int"
      ["string":"Error":private]=>
      string(0) ""
      ["code":protected]=>
      int(0)
      ["file":protected]=>
      string(9) "/in/ICgGK"
      ["line":protected]=>
      int(6)
      ["trace":"Error":private]=>
      array(0) {
      }
      ["previous":"Error":private]=>
      NULL
    }

### - Başarısız eşleşmeleri işlemek için `match` ifadelerin kullanımı

Özne ifadesi olarak true kullanarak özdeş olmayan koşullu durumları ele almak için bir `match` ifadesi kullanmak mümkündür.

Örnek 5 - Tamsayı aralıklarında dallanmak için genelleştirilmiş eşleşme ifadelerinin kullanılması

    <?php

    $yaş = 23;

    $result = match (true) {
        $yaş >= 65 => 'yaşlı',
        $yaş >= 25 => 'yetişkin',
        $yaş >= 18 => 'genç',
        default => 'çocuk',
    };

    var_dump($result);
    ?>

Yukarıdaki örneğin çıktısı:

    string(11) "genç"

Örnek 6 - Dize içeriklerde dallanmak için genelleştirilmiş eşleşme ifadelerinin kullanılması

    <?php

    $text = 'Bienvenue chez nous';

    $result = match (true) {
        str_contains($text, 'Welcome') || str_contains($text, 'Hello') => 'en',
        str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr',
        // ...
    };

    var_dump($result);
    ?>

Yukarıdaki örneğin çıktısı:

    string(2) "fr"

## declare

(PHP 4, PHP 5, PHP 7, PHP 8)

`declare` yapısı bir kod bloğunun çalıştırılması esnasında uygulanacak yönergeleri belirlemek için kullanılır. `declare` yapısının sözdizimi diğer akış denetim yapılarının söz dizimi ile benzerdir:

    declare (yönerge)
        deyim

yönerge bölümü, `declare` bloğunun davranışını belirlemek için kullanılır. Şimdilik yalnızca üç yönerge kullanılabilmektedir:

- `ticks`
- `encoding`
- `strict_types`

Yönergeler dosya derlendikçe ele alındığından, sadece birebir değerler yönergelere değer olarak verilebilir. Değişkenler ve sabitler kullanılamaz. Örnek:

    <?php
    // Bu geçerlidir:
    declare(ticks=1);

    // Bu geçersizdir:
    const TICK_VALUE = 1;
    declare(ticks=TICK_VALUE);
    ?>

`declare` bloğunun deyim bölümünün nasıl çalıştırılacağı ve çalışma esnasındaki yan etkilerinin ne olacağı yönerge bölümünde belirtilen yönergeye bağlı olabilir.

`declare` bloğu kendinden sonra gelen tüm kodu etkilemesi için genel betik kapsamında da kullanılabilir. Bununla birlikte, `declare` bloğu dahil edilen bir dosyanın içindeyse ebeveyn dosya bundan etkilenmez.

    <?php
    // aşağıdaki iki örnek aynıdır:

    // bunu kullanabilirsiniz:
    declare(ticks=1) {
        // betiğin tamamı burada
    }

    // ya da bunu kullanabilirsiniz:
    declare(ticks=1);
        // betiğin tamamı burada
    ?>

### `Tikler`

Bir "tik", `declare` bloğu içersinde çözümleyici tarafından çalıştırılan her N tiklenebilir deyimde bir ortaya çıkan bir olaydır. N değeri, `declare` bloğunun yönerge bölümünde `ticks=N` kullanılarak belirtilir.

Her deyim tik sayımına dahil edilebilir değildir. Koşullu ifadeler ve bağımsız değişken ifadeleri bu tür deyimlerdendir.

Her tik ile oluşturulacak eylem register_tick_function() işlevi ile belirtilir. Daha ayrıntılı bilgi için aşağıdaki örneğe bakınız. Her tik için birden fazla olayın oluşabileceğini gözardı etmeyiniz.

Örnek 1 - Tik kullanım örneği

    <?php

    declare(ticks=1);

    // Her tik deyimde bir çalıştırılacak işlev
    function tik_eylemci()
    {
        echo "tik_eylemci() çağrıldı\n" ;
    }

    // Tik eylemcisini belirtelim
    register_tick_function("tik_eylemci"); //tik olayına sebep olur

    $a = 1; //tik olayına sebep olur

    if ($a > 0) {
            $a += 2; //tik olayına sebep olur
            print $a; //tik olayına sebep olur
    }
    ?>

Ayrıca, register_tick_function() ve unregister_tick_function() işlevlerini de inceleyin.

### `encoding`

Her betiğin karakter kodlaması betiğin başında `encoding` yönergesi ile belirtilebilir.

Örnek 2 - Betik için kodlama belirtmek

    <?php
    declare(encoding='ISO-8859-1');
    // kodlar burada
    ?>

Dikkat

İsim alanları ile birlikte kullanıldığında, tek geçerli sözdizimi `declare(encoding='...');` olup, buradaki `...` kodlama değeridir. `declare(encoding='...') {}` sözdizimi isim alanları ile birlikte kullanıldığında bir çözümleme hatası ile sonuçlanacaktır.

Ayrıca bak: zend.script_encoding.

## return

(PHP 4, PHP 5, PHP 7, PHP 8)

`return` uygulamanın denetimini çağrıldığı modüle döndürür ve uygulama kendinden sonra gelen ifadeden itibaren çalışmayı sürdürür

Bir işlevin içinde kullanıldığında, `return` deyimi çalışmakta olan işlevi hemen sonlandırıp bağımlı değişkeninin değerini işlevin değeri olarak döndürür. `return` ayrıca, bir betiğin veya bir eval() deyiminin çalışmasını sonlandırmak için de kullanılabilir.

Betik genelinde çağrıldığında, betik dosyasının çalışmasını sonlandırılır. Eğer dosya include ya da require ile betik dosyasına dahil edilmiş bir dosya ise, `return` deyimi akış denetiminin ana dosyaya aktarılmasını sağlar. Dahası, `return` deyiminin çağrıldığı dosya include ile dahil edilmişse `return` değeri include çağrısının değeri olarak dönecektir. `return` ana betik dosyasının içinden çağrıldığı takdirde, betiğin çalışması sonlandırılacaktır. Eğer `return` deyiminin çağrıldığı dosya, ismi php.ini içindeki auto_prepend_file veya auto_append_file yapılandırma seçenekleri ile atanan bir dosya ise bu betik dosyasının da çalışmasını sonlandıracaktır.

Daha fazla bilgi için, Dönüş değerleri bölümüne bakınız.

> Bilginize: `return` bir işlev değil bir dil oluşumu olduğundan, bağımlı değişkenini içeren yaylı ayraç yalnızca değişken bir ifade içeriyorsa zorunludur. Bir bağımlı değişken döndürülürken genellikle yaylı ayraç kullanılmaz ve kullanılmaması önerilir.

> Bilginize: Değişkensiz kullanılacaksa yaylı ayraç konulmamalıdır bu durumda dönen değer `null` olur. Bağımlı değişkeni içermeyen yaylı ayraç kullanımı bir çözümleme hatası ile sonuçlanır.

PHP 7.1.0'dan itibaren, bir dönüş türü bildiren işlevlerde bağımlı değişkenli dönüş ifadelerinin `E_COMPILE_ERROR`'u tetiklediği durumda, dönüş türü void olmadığı sürece bağımlı değişkensiz `return` deyimleri de `E_COMPILE_ERROR`'u tetikler.

## require

(PHP 4, PHP 5, PHP 7, PHP 8)

`require` deyimi bir başarısızlıkta `E_COMPILE_ERROR` seviyesinden ölümcül bir hata vermesi dışında include deyimi ile aynıdır. Başka bir deyişle, include deyiminin sadece bir uyarı (`E_WARNING`) vererek çalışmayı sürdürdüğü durumda `require` deyimi betiğin hata vererek durmasına sebep olur.

Deyimin nasıl çalıştığını öğrenmek için include belgesine bakınız.

## include

(PHP 4, PHP 5, PHP 7, PHP 8)

`include` ifadesi belirtilen dosyayı betiğe ekler ve içeriğini değerlendirir.

Betiğe dahil edilecek dosyalar önce belirtilen dizinde aranır, eğer bir dizin belirtilmemişse include_path yönergesinde belirtilen yollarda aranır. Dosya include_path içinde yoksa `include` son çare olarak çağrıcı betiğin kendi dizinine ve o anki çalışma dizinine bakar, bulamazsa bir `E_WARNING` çıktılar; require için bu davranış bir `E_ERROR` olarak kendini gösterir.

Son `E_WARNING` veya `E_ERROR` çıktılanmadan önce, dosyaya erişilemiyorsa, `include` ve `require`, her ikisi de sırayla ek `E_WARNING`'leri çıktılar.

Bir dizin belirtilmişse - mutlak (Windows'ta bir sürücü harfi veya `\` ile başlıyorsa veya Unix sistemlerinde `/` ile başlıyorsa) veya geçerli dizine göreli (`.` veya `..` ile başlıyorsa)- include_path yönergesine bakılmaz. Örneğin bir dosya `../` ili başlıyorsa PHP çözümleyicisi dosyayı betiğin bulunduğu dizinin üst dizininde arayacaktır.

PHP'nin dahil edilen dosyaları nasıl ele aldığı include_path yönergesinin açıklamasında ayrıntılı olarak anlatılmıştır.

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 değişken uzayını 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.

Örnek 1 - Basit bir `include` örneği

    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

    ?>

`include` 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 sihirli sabitlerdir.

Örnek 2 - İşlev içi `include` kullanımı

    <?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

    ?>

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 PHP başlangıç ve bitiş etiketleri arasına alınmalıdır.

"URL include sarmalayıcıları" PHP'de etkinleştirilmiş ise (öntanımlı yapılandırmada etkindirler), `include` deyiminde yerel dosya yolu belirtmek yerine (HTTP ya da desteklenen başka bir sarmalayıcı üzerinden - Desteklenen Protokoller ve Sarmalayıcılar 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.

Örnek 3 - HTTP üzerinden `include`

    <?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';
    ?>

Uyarı

# Güvenlik uyarısı

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 readfile() 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.

Ayrıca, bu konuyla ilgili olarak Uzaktaki dosyaların kullanımı belgesiyle fopen() ve file() işlevlerine de bakınız.

`return` kullanımı: `include` başarısız olursa `FALSE` döndürür ve bir uyarı verir. Başarılı olursa, içerildikleri dosya tarafından aksi belirtilmedikçe `1` 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 return kullanılabilir. Ayrıca, dahil edilen dosyalardan değer döndürmek de mümkündür. Normal bir işlevde olduğu gibi, `include` ç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ı geçerli PHP başlangıç ve bitiş etiketlerine 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.

`include` ö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.

Örnek 4 - `include` dönüş değerinin karşılaştırılması

    <?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';
    }
    ?>

Örnek 5 - `include` ve `return` deyimleri

    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

    ?>

`include` işlemi başarılı olduğundan `$bar`, `1` değerine sahiptir. Yukarıdaki örnekler arasındaki farklara dikkat edin. Birincisi return deyimini dahil edilen dosyada kullanırken ikincisi kullanmıyor. Dosya dahil edilemediği durumda, `false` döndürülüyor ve bir `E_WARNING` üretiliyor.

Dahil edilen dosyanın içinde tanımlanmış işlevler varsa, return 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ı return çalıştırmak yerine, include_once kullanmanız önerilir.

Bir PHP dosyasını bir değişkene "dahil" etmenin diğer bir yolu, çıktıyı Çıktı Denetim İşlevlerini `include` ile birlikte kullanarak yakalamaktır. Örnek:

Örnek 6 - Bir PHP dosyasını bir dizgeye dahil etmek için tampon kullanımı

    <?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;
    }

    ?>

Betiğinize dosyaları otomatik olarak dahil etmek için, php.ini içersindeki auto_prepend_file ve auto_append_file yapılandırma seçeneklerini inceleyebilirsiniz.

> Bilginize: Bu bir işlev değil, dil oluşumu olduğundan değişken işlevler veya isimli bağımsız değişkenler kullanılarak çağrılamaz.

Ayrıca, require, require_once, include_once, readfile(), virtual() ve include_path'a da bakınız.

## require_once

(PHP 4, PHP 5, PHP 7, PHP 8)

`require_once` ifadesi, dosyayı evvelce dahil edilmişse tekrar dahil etmemesi dışında require deyimiyle aynıdır.

`_once` eki olup olmamasının ne gibi farklara yol açtığı ve varlığının davranışı nasıl değiştirdiğini öğrenmek için include_once belgesine bakınız.

## include_once

(PHP 4, PHP 5, PHP 7, PHP 8)

`include_once` deyimi belirtilen dosyayı betiğin çalışması esnasında okur ve çalıştırır. Bu deyimin çalışma biçimi include deyimi ile benzerdir, tek farkı kendisiyle dahil edilmiş bir dosya, betiğin başka bir yerinde tekrar dahil edilmek istenirse buna izin vermemesidir. include_once `true` döndürür.

`include_once` deyimi, bir betiğin çalışması esnasında aynı dosyanın bir kereden fazla dahil edilme ihtimaline karşı, bu dosyanın yalnızca bir kere dahil edileceğinden emin olunmak istenirse kullanılmalıdır. Bu sayede işlev bildirimlerinin yinelenmesi, değişkenlere tekrar değer atanması gibi sorunlar ortaya çıkmaz.

Bu işlevin nasıl çalıştığı hakkında ayrıntılı bilgi edinmek için include belgesine bakınız.

## goto

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Karikatür, » xkcd'nin izniyle.

Goto kullanırsan daha kötü olan şey nedir?

Çevirisi:
Program akışını yapılandırabilir ya da yerine küçük bir goto kullanırım.
Boşver iyi kodu, ne olabilir ki?
goto ...

`goto` işleci betik içinde başka bir komuta atlamak için kullanılabilir. Hedefin yeri, harf büyüklüğüne duyarlı bir yafta ve iki nokta imi ile belirtilebilir. `goto` bu yaftaya göre hedefi bulur. Bu, `goto` deyiminin tamamen sınırsız olduğu anlamına gelmez. Hedef yaftasının aynı dosya ve aynı bağlam içinde kalması gerekir, yani bir işlev veya yöntemin dışına atlayamayacağınız gibi bir başka işlev veya yöntemin içine de atlayamazsınız. Ayrıca bir switch veya döngünün içine de atlayamazsınız, fakat bunların dışına atlayabilirsiniz, yani çok seviyeli bir `break` yerine bir `goto` kullanabilirsiniz.

Örnek 1 - `goto` örneği

    <?php
    goto a;
    echo 'Foo';

    a:
    echo 'Bar';
    ?>

Yukarıdaki örneğin çıktısı:

    Bar

Örnek 2 - Döngüden `goto` ile çıkma örneği

    <?php
    for($i = 0, $j = 50; $i < 100; $i++) {
        while($j--) {
            if($j==17) goto end;
        }
    }
    echo "i = $i";
    end:
    echo 'j hit 17';
    ?>

Yukarıdaki örneğin çıktısı:

    j hit 17

Örnek 3 - Bu çalışmaz

    <?php
    goto loop;
    for($i = 0, $j = 50; $i < 100; $i++) {
        while($j--) {
          loop:
        }
    }
    echo "$i = $i";
    ?>

Yukarıdaki örneğin çıktısı:

    Fatal error: 'goto' into loop or switch statement is disallowed in
    script on line 2

# İşlevler

## İçindekiler

- Kullanıcı tanımlı işlevler
- İşlev bağımsız değişkenleri
- Dönen değerler
- Değişken işlevler
- Yerleşik işlevler
- Anonim işlevler
- Ok İşlevleri
- Birinci sınıf çağrılabilir sözdizimi

## Kullanıcı tanımlı işlevler

Bir işlev, şöyle bir söz dizimi kullanılarak tanımlanabilir:

Örnek 1 - İşlev kullanımını gösteren sözde kod

    <?php
    function foo($arg_1, $arg_2, /* ..., */ $arg_n)
    {
        echo "Örnek işlev.\n";
        return $retval;
    }
    ?>

Bir işlevin içerisinde geçerli her tür PHP kodu kullanılabilir, buna başka işlevler ve sınıf tanımları da dahildir.

İşlev isimleri, PHP'deki diğer isimlerle aynı kurallara tabidir. Geçerli bir işlev ismi bir harf ya da alt çizgi ile başlar, herhangi bir sayıda geçerli harf, sayı ya da alt çizgi ile devam eder. Düzenli ifade olarak, şu şekilde ifade edebiliriz: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`.

İşlevlerin çağrılmadan önce tanımlanmaları, aşağıdaki iki örnekte görüldüğü gibi koşullu olarak tanımlandıkları durumlar haricinde gerekmez.

Bir işlev aşağıdaki iki örnekte gösterildiği gibi koşullu olarak tanımlandıysa, bu işlev tanımının işlev çağrılmadan önce yapılması gerekmektedir.

Örnek 2 - Koşula bağlı işlevler

    <?php

    $makefoo = true;

    /* Henüz varolmadığı için foo() buradan çağrılamaz,
       ancak bar() çağrılabilir */

    bar();

    if ($makefoo) {
      function foo()
      {
        echo "Uygulamanın çalışması bana erişene kadar ben yokum.\n";
      }
    }

    /* $makefoo doğru olduğundan
       artık foo() çağrılabilir */

    if ($makefoo) foo();

    function bar()
    {
      echo "Program başlatıldığı anda ben de varolurum.\n";
    }

    ?>

Örnek 3 - İşlev içinde işlev

    <?php
    function foo()
    {
      function bar()
      {
        echo "foo() çağrılana kadar yokum.\n";
      }
    }

    /* Henüz varolmadığı için
       bar() çağrılamaz. */

    foo();

    /* Artık bar() çağrılabilir,
       foo() çağrıldığında bar()
       erişilebilir hale gelir */

    bar();

    ?>

PHP'de tüm işlevler ve sınıflar betik genelinde geçerlidir - bir işlevin içinden tanımlanmış olsalar bile işlevin dışından çağrılabilirler.

PHP işlevlerin farklı bağımsız değişkenli yeni tanımlarının yapılmasını desteklemediği gibi, işlevler yeniden tanımlanamaz veya tanımsız kılınamaz.

> Bilginize: İşlev isimleri `A`'dan `Z`'ye kadar ASCII karakterler için büyük-küçük harf duyarsızdır, ancak işlev isimlerini tanımlandıkları halleriyle kullanmak daha iyidir.

Bağımsız değişken sayısı değişken işlevler desteklendiği gibi işlevlerde öntanımlı bağımsız değişken kullanımı da desteklenmektedir. Daha ayrıntılı bilgi edinmek için func_num_args(), func_get_arg() ve func_get_args() işlevlerine de bakınız.

PHP'de işlevlerin kendilerini çağırması da mümkündür.

Örnek 4 - Kendini çağıran işlev

    <?php
    function recursion($a)
    {
        if ($a < 20) {
            echo "$a\n";
            recursion($a + 1);
        }
    }
    ?>

> Bilginize: Kendini çağıran işlev ve yöntemler bunu 100-200 kere yaparsa yığıt taşabilir ve çalışan betiğin durdurulmasına sebep olabilir. Özellikle, kendini çağırma sayısı sonsuza giderse bu bir programlama hatası sayılır.

## İşlev bağımsız değişkenleri

Bir işleve veri, virgül ayraçlı ifadelerden oluşan bir bağımsız değişken listesi ile aktarılır. İşlev çalıştırılmadan önce bağımsız değişkenler soldan sağa doğru değerlendirilir (hevesli değerlendirme).

PHP, bağımsız değişkenlerin değerleriyle aktarılmalarını (öntanımlı), gönderimli aktarımı ve öntanımlı bağımsız değişken kullanımını destekler. Bağımsız değişken sayısı değişken işlevler ve İsimli bağımsız değişkenler de desteklenmektedir.

Örnek 1 - İşlevlere dizi aktarımı

    <?php
    function dizi_kabul_eder($girdi)
    {
        echo "$girdi[0] + $girdi[1] = ", $girdi[0]+$girdi[1];
    }
    ?>

PHP 8.0.0'dan itibaren, işlev bağımsız değişkenlerinin sonunda göz ardı edilecek bir virgül bulunabilir. Bu, özellikle bağımsız değişken listesinin uzun olduğu veya uzun isimler içerdiği durumlarda, bağımsız değişkenleri alt alta sıralamayı kolaylaştırır.

Örnek 2 - Virgül ile sonlanan işlev bağımsız değişkenleri örneği

    <?php
    function takes_many_args(
        $first_arg,
        $second_arg,
        $a_very_long_argument_name,
        $arg_with_default = 5,
        $again = 'a default string', // 8.0.0 öncesinde bu virgüle izin verilmezdi.
    )
    {
        // ...
    }
    ?>

### Gönderimli bağımsız değişken kullanımı

Öntanımlı olarak, işlev bağımsız değişkenleri değerleriyle aktarılırlar (bu durumda bir bağımsız değişkenin değeri işlev içinde değiştirildiğinde işlevin çağrıldığı yerdeki değeri bundan etkilenmez. İşlevin çağrıldığı yerdeki değerinin de değişmesini istiyorsanız gönderimli bağımsız değişken kullanmalısınız.

Bir işleve bir bağımsız değişkenin daima gönderimli olarak aktarılmasını istiyorsanız, işlev bildiriminde o bağımsız değişkenin başına & karakterini koyarak bunu sağlayabilirsiniz:

Örnek 3 - Gönderimli işlev bağımsız değişkenlerinin aktarımı

    <?php
    function şunu_da_ekle(&$dizge)
    {
        $dizge .= 've bir kaç karakter eklenmiştir.';
    }
    $dzg = 'Bu bir dizgedir ';
    şunu_da_ekle($dzg);
    echo $dzg;    // 'Bu bir dizgedir ve bir kaç karakter eklenmiştir.'
                  //  çıktısını verir.
    ?>

Gönderimli aktarılması beklenen bir değeri değişkeniyle değil değeriyle aktarmak bir hatadır.

### Öntanımlı bağımsız değişken değerleri

Bir işlevde, bağımsız değişkenler için öntanımlı değerler, değişken ataması biçiminde tanımlanabilir. Öntanımlı değer sadece işlev çağrısı sırasında bağımsız değişken belirtilmemişse kullanılır. Şuna özellikle dikkat edilmelidir: `null` değer öntanımlı değer olarak tanımlanamaz.

Örnek 4 - İşlev içinde öntanımlı bağımsız değişken kullanımı

    <?php
    function kahveyap($hangisi = "orta şekerli")
    {
        return "Bir fincan $hangisi kahve yapalım.\n";
    }
    echo kahveyap();
    echo makecoffee(null);
    echo kahveyap("az şekerli");
    ?>

Yukarıdaki örneğin çıktısı:

    Bir fincan orta şekerli kahve yapalım.
    Bir fincan kahve yapalım.
    Bir fincan az şekerli kahve yapalım.

Öntanımlı değer olarak, diziler, özel `null` türü ve PHP 8.1.0 itibariyle new SınıfAdı() sözdizimi ile nesneler kullanılabilir.

Örnek 5 - Sayıl olmayan türlerin öntanımlı değer olarak kullanımı

    <?php
    function kahveyap($hangi = array("orta şekerli"), $neyde = NULL)
    {
        $neyde = is_null($neyde) ? "ocakta" : $neyde;
        return "Bir fincan ".join(" bir fincan ", $hangi)." kahve $neyde yapıldı.\n";
    }
    echo kahveyap();
    echo kahveyap(array("çok şekerli", "az şekerli"), "mangalda");
    ?>

Yukarıdaki örneğin çıktısı:

    Bir fincan orta şekerli kahve ocakta yapıldı.
    Bir fincan çok şekerli bir fincan az şekerli kahve mangalda yapıldı.

Örnek 6 - Öntanımlı değer olarak nesne kullanımı (PHP 8.1.0 ve sonrası)

    <?php
    class ÖntanımlıDemleyici {
        public function demle() {
            return 'Çay demleniyor.\n';
        }
    }
    class PorselenDemleyici {
        public function demle() {
            return 'Özel çayınız demleniyor.\n';
        }
    }
    function çayyap($demleyici = new ÖntanımlıDemleyici)
    {
        return $demleyici->demle();
    }
    echo çayyap();
    echo çayyap(new PorselenDemleyici);
    ?>

Yukarıdaki örneğin çıktısı:

    Çay demleniyor.
    Özel çayınız demleniyor.

Öntanımlı değer bir değişken, bir sınıf üyesi ya da bir işlev çağrısı değil, bir sabit ifadesi olmalıdır.

Öntanımlı bağımsız değişkenleri kullanırken, öntanımlama yapılmış tüm bağımsız değişkenlerin öntanımlama yapılmamış tüm bağımsız değişkenlerden sonra yer alması gerektiğine dikkat edin. Aksi takdirde çağrı sırasında bunlar atlanamaz. Aşağıdaki örneği inceleyin:

Örnek 7 - Öntanımlı bağımsız değişkenlerin hatalı kullanımı

    <?php
    function yoğurtyap($miktar = "az", $katkı)
    {
        return "Bir kase $miktar $katkı içeren yoğurt yapılıyor.\n";
    }

    echo yoğurtyap("çilek");   // "çilek" $miktar olarak işleme alınır ve
                               // tek bağımsız değişken aktarımı hataya yol açar.
    ?>

Yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught ArgumentCountError: Too few arguments to function yoğurtyap(), 1 passed in dnm.php on line 7 and exactly 2 expected in dnm.php:2
    Stack trace:
    #0 dnm.php(7): yoğurtyap('\xC3\xA7ilekli')
    #1 {main}
      thrown in dnm.php on line 2

Şimdi, yukarıdakini bununla karşılaştıralım:

Örnek 8 - Öntanımlı bağımsız değişkenlerin doğru kullanımı

    <?php
    function yoğurtyap($katkı, $miktar = "az")
    {
        return "Bir kase $miktar $katkı içeren yoğurt yapılıyor.\n";
    }

    echo yoğurtyap("çilek");   // "çilek" $katkı olarak işleme alınır
    ?>

Yukarıdaki örneğin çıktısı:

    Bir kase az çilek içeren yoğurt yapılıyor.

PHP 8.0.0 ve sonrasında, çok sayıda seçimlik bağımsız değişkeni atlamak için isimli bağımsız değişkenler kullanılabilir.

Örnek 9 - Öntanımlı işlev bağımsız değişkenlerinin doğru kullanımı

    <?php
    function yoğurtyap($katkı = "şeker", $miktar = "az", $tarz = "doğal")
    {
        return "Bir kase $miktar $katkı içeren $tarz yoğurt yapılıyor.\n";
    }
    echo makeyogurt($tarz: "süzme");
    ?>

Yukarıdaki örneğin çıktısı:

    Bir kase az çilek içeren süzme yoğurt yapılıyor.

PHP 8.0.0 ve sonrasında, işlev çağrısında zorunlu bağımsız değişkenlerin seçimliklerden sonra tanımlanması kullanımdan kaldırılmıştır. Bu genellikle, kullanılmayacak olan öntanımlı değer atlanarak çözümlenir. Bunun tek istisnası, türü örtük olarak `null` yapan `Tür $param = null` biçimindeki bağımsız değişkenlerdir. Bunun kullanımına hala izin verilmekteyse de bunun yerine, `null` olabilen tür kullanımı önerilmektedir.

Örnek 10 - Seçimliklerin zorunlu bağımsız değişkenlerden sonra bildirimi

    <?php
     function foo($a = [], $b) {} // Öntanımlı bağımsız değişken böyle kullanılamaz;
                                  // PHP 8.0.0 ve sonrasında kullanımda değil

     function foo($a, $b) {}      // İşlevsel olarak aynı, bir uyarı verilmez
     function bar(A $a = null, $b) {} // Hala izin veriliyor; $a null olabiliyor
     function bar(?A $a, $b) {}       // Önerilen kullanım
     ?>

> Bilginize: PHP 7.1.0 ve sonrasında, öntanımlı değer belirtilmemiş bir bağımsız değişkenin atlanması ArgumentCountError yavrulanmasına yol açmaktadır; önceki sürümlerde sadece bir uyarı çıktılanırdı.

> Bilginize: Gönderimli aktarılabilen bağımsız değişkenler öntanımlı değer içerebilir.

### Değişken uzunlukta bağımsız değişken listesi

PHP, kullanıcı tanımlı işlevlerde bağımsız değişken listesinin sonuna `...` konarak listenin uzatılmasını destekler.

Bağımsız değişken listeleri, işlevin değişken sayıda bağımsız değişken kabul ettiğini belirtmek için `...` simgesini içerebilir. Bu durumda bağımsız değişkenler değişkene bir dizi olarak aktarılır:

Örnek 11 - Değişken uzunlukta bağımsız değişkenler için `...` kullanımı

    <?php
    <?php
    function sum(...$numbers) {
        $acc = 0;
        foreach ($numbers as $n) {
            $acc += $n;
        }
        return $acc;
    }

    echo sum(1, 2, 3, 4);
    ?>

Yukarıdaki örneğin çıktısı:

    10

Bir diziyi, bir Traversable değişkeni veya bir sabiti bağımsız değişken listesi haline getirmek için işlev çağrılırken de `...` kullanılabilir. Örnek:

Örnek 12 -Bağımsız değişkenlere erişmek için `...` kullanımı

    <?php
    function add($a, $b) {
        return $a + $b;
    }

    echo add(...[1, 2])."\n";

    $a = [1, 2];
    echo add(...$a);
    ?>

Yukarıdaki örneğin çıktısı:

    3
    3

`...` dizgeciğinden önce normal konumsal bağımsız değişkenler belirtilebilir. Bu durumda `...` ile üretilen diziye sadece konumsal bağımsız değişkenlerle eşleşen sonuncu bağımsız değişkeni izleyen eşleşmeyen bağımsız değişkenler eklenir.

`...` dizgeciğinin önüne tür bildirimi de eklenebilir. Bu durumda `...` kapsamındaki tüm bağımsız değişkenlerin bu tür bildirimi ile eşleşmesi gerekir.

Örnek 13 Değişken bağımsız değişkenlerde tür bildirimi

    <?php
    function total_intervals($unit, DateInterval ...$intervals) {
        $time = 0;
        foreach ($intervals as $interval) {
            $time += $interval->$unit;
        }
        return $time;
    }

    $a = new DateInterval('P1D');
    $b = new DateInterval('P2D');
    echo total_intervals('d', $a, $b).' gün';

    // Bir DateInterval nesnesi olmadığından bu başarısız olur.
    echo total_intervals('d', null);
    ?>

Yukarıdaki örneğin çıktısı:

    3 gün
    Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

Son olarak, `...` dizgeciğinin önüne bir `&` ekleyerek değişken bağımsız değişkenleri gönderimli olarak da aktarabilirsiniz.

### İsimli bağımsız değişkenler

PHP 8.0.0, var olan konumsal bağımsız değişkenlerin bir uzantısı olarak isimli bağımsız değişkenleri tanıttı. İsimli bağımsız değişkenler, bağımsız değişkenlerin konuma göre değil bağımsız değişken adına göre işleve iletilmesine izin verir. Bu, bağımsız değişkeni kendini belgelendiren bağımsız değişken haline, bağımsız değişkenleri de sıralamadan bağımsız hale getirir ve öntanımlı değerlerin keyfi olarak atlanmasına izin verir.

İsimli bağımsız değişkenler, değerin önüne iki nokta üst üste ile bağımsız değişken adı eklenerek iletilir. Ayrılmış anahtar sözcüklerin bağımsız değişken adları olarak kullanılmasına izin verilir. Bağımsız değişken adı bir tanımlayıcı olmalıdır, bir değişkenle belirtilmesine izin verilmez.

Örnek 14 - İsimli bağımsız değişken sözdizimi

    <?php
    işlevim(değişkenAdı: $değer);
    array_foobar(array: $değer);

    // desteklenmiyor
    işlev_adı($değişkeneSaklanmışBağımsızDeğişkenAdı: $$değer);
    ?>

Örnek 15 - Konumsal ve isimli bağımsız değişkenler

    <?php
    // Konumsal bağımsız değişkenler:
    array_fill(0, 100, 50);

    // İsimli bağımsız değişkenler:
    array_fill(start_index: 0, count: 100, value: 50);
    ?>

İsimli bağımsız değişkenlerin aktarılma sırasının bir önemi yoktur.

Örnek 16 - Farklı bağımsız değişken sırasıyla yukarıdaki örnek

    <?php
    array_fill(value: 50, count: 100, start_index: 0);
    ?>

İsimli bağımsız değişkenler konumsal bağımsız değişkenlerle birleştirilebilir. Bu durumda, isimli bağımsız değişkenler konumsal bağımsız değişkenlerden sonra gelmelidir. Sıralarına bakılmaksızın, bir işlevin isteğe bağlı bağımsız değişkenlerinden yalnızca bazılarını belirtmek de mümkündür.

Örnek 17 - İsimli bağımsız değişkenlerle konumsal bağımsız değişkenleri birleştirmek

    <?php
    htmlspecialchars($string, double_encode: false);
    // Same as
    htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, 'UTF-8', false);
    ?>

Aynı bağımsız değişkeni birden fazla kullanmak bir Error istisnasına yol açar.

Örnek 18 - Aynı bağımsız değişkenin birden fazla kullanımında Error yavrulanması

    <?php
    function foo($param) { ... }
    foo(param: 1, param: 2);
    // Hata: $param isimli bağımsız değişkeni önceki bağımsız değişkeni geçersiz kılıyor
    foo(1, param: 2);
    // Hata: $param isimli bağımsız değişkeni önceki bağımsız değişkeni geçersiz kılıyor
    ?>

PHP 8.1.0 itibariyle, bağımsız değişken genişletmesinden sonra isimli bağımsız değişken kullanımına izin verilmektedir ancak, isimli bağımsız değişkenin genişletmedeki bağımsız değişkeni geçersiz kılmaması gerekir.

Örnek 19 - Genişletme sonrası isimli bağımsız değişken kullanımı

    <?php
    function foo($a, $b, $c = 3, $d = 4) {
      return $a + $b + $c + $d;
    }
    var_dump(foo(...[1, 2], d: 40)); // 46
    var_dump(foo(...['b' => 2, 'a' => 1], d: 40)); // 46
    var_dump(foo(...[1, 2], b: 20)); // Ölümcül hata. İsimli bağımsız değişken $b, genişletmedekini geçersiz kılıyor
    ?>

## Dönen değerler

Değerler, isteğe bağlı return deyimi kullanılarak döndürülür. Diziler ve nesneler dahil herhangi bir tür döndürülebilir. Bu, işlevin çalıştırmayı hemen bitirmesine ve denetimi çağrıldığı satıra geri aktarmasına neden olur. Daha fazla bilgi için return işlevine bakın.

> Bilginize:

> return kullanılmazsa `null` değeri döndürülür.

Örnek 1 - return kullanımı

    <?php
    function square($num)
    {
        return $num * $num;
    }
    echo square(4);   // çıktısı: '16'.
    ?>

Bir işlev çok sayıda değer döndürebildiği gibi bir dizi döndürerek de aynı sonuç sağlanabilir.

Örnek 2 - Çok sayıda değeri bir diziyle döndürmek

    <?php
    function small_numbers()
    {
        return (0, 1, 2);
    }

    // Burada dizi üyeleri tek tek toplanmaktadır
    [$zero, $one, $two] = small_numbers();

    // 7.1.0 öncesinde, bu sadece list() oluşumu ile sağlanabilirdi
    list($zero, $one, $two) = small_numbers();

    ?>

Bir işlevden gönderim döndürmek için hem işlev bildiriminde hem de dönen değer bir değişkene atandığında gönderim işleci & kullanılır:

Örnek 3 - Bir işlevden gönderim döndürmek

    <?php
    function &returns_reference()
    {
        return $someref;
    }
    ?>

    $newref =& returns_reference();

Gönderimler hakkında daha fazla bilgi için Gönderimlerle İlgili Herşey bölümüne bakınız.

## Değişken işlevler

PHP değişken işlev kavramını desteklemektedir. Yani, bir değişken isminin sonuna parantez eklenmişse, PHP aynı isimde bir işlev olup olmadığına bakar ve bulduğu takdirde bu işlevi çalıştırmaya çalışır. Başka olası işlemlerin yanında, bu özellik geri çağırımların, işlev tablolarının ve benzerlerinin gerçeklenmesinde kullanılabilir.

Değişken işlevler, echo, print, unset(), isset(), empty(), include, require ve benzeri dil yapılarında çalışmayacaktır. Bu yapıları değişken işlev olarak kullanmak istediğiniz takdirde, gerekli sarmalayıcı işlevleri kendiniz yazmalısınız.

Örnek 1 - Değişken işlev örneği

    <?php
    function foo() {
        echo "In foo()<br />\n";
    }

    function bar($arg = '')
    {
        echo "In bar(); argument was '$arg'.<br />\n";
    }

    // Bu echo için sarmalayıcı işlevdir
    function echoit($string)
    {
        echo $string;
    }

    $func = 'foo';
    $func();        // foo() çağrılır

    $func = 'bar';
    $func('test');  // bar() çağrılır

    $func = 'echoit';
    $func('test');  // echoit() çağrılır
    ?>

Değişken işlev özelliğini kullanarak bir nesnenin bir yöntemini de çağırabilmeniz mümkündür.

Örnek 2 - Değişken yöntem örneği

    <?php
    class Foo
    {
        function Variable()
        {
            $name = 'Bar';
            $this->$name(); // Bu Bar() yöntemini çağıracaktır
        }

        function Bar()
        {
            echo "Bu bir Bar";
        }
    }

    $foo = new Foo();
    $funcname = "Variable";
    $foo->$funcname();  // Bu $foo->Variable() işlevini çağıracaktır

    ?>

Static türünden yöntemleri çağırırken işlev çağrısı 'static property' işlecinden daha güçlüdür:

Örnek 3 Statik özellikli yöntem çağrısı örneği

    <?php
    class Foo
    {
        static $variable = 'static property';
        static function Variable()
        {
            echo 'Method Variable called';
        }
    }

    echo Foo::$variable; // Bu 'static property' basar. Bu bağlamda $variable gerekmez.
    $variable = "Variable";
    Foo::$variable();  // Bu bağlamda $variable değişkenini okuyan $foo->Variable() çağrılır.

    ?>

Örnek 4 Karmaşık çağrılar

    <?php
    class Foo
    {
        static function bar()
        {
            echo "bar\n";
        }
        function baz()
        {
            echo "baz\n";
        }
    }

    $func = array("Foo", "bar");
    $func(); // prints "bar"
    $func = array(new Foo, "baz");
    $func(); // prints "baz"
    $func = "Foo::bar";;
    $func(); // "bar" basar
    ?>

### Ayrıca Bakınız

- is_callable()
- call_user_func()
- function_exists()
- değişken değişkenler

## Yerleşik işlevler

PHP standart olarak birçok işlev ve oluşum ile birlikte gelmektedir. Bunun yanında, özel PHP eklentilerinin derlenmesini gerektiren, aksi takdirde "tanımsız işlev" hatası üreten işlevler de mevcuttur. Örneğin, imagecreatetruecolor() gibi görüntü işlevlerini kullanabilmek için, PHP'yi GD desteğiyle derlemiş olmanız gerekir. Ya da, mysqli_connect() işlevini kullanabilmek için, PHP'nin MySQLi desteği ile derlenmiş olması gerekmektedir. Bunların yanında, bütün PHP sürümlerine eklenen dizge ve değişken işlevleri gibi birçok çekirdek işlev de mevcuttur. phpinfo() ya da get_loaded_extensions() işlevlerine yapılacak bir çağrı ile PHP'ye hangi eklentilerin yüklenmiş olduğunu görebilirsiniz. Birçok uzantı öntanımlı olarak etkinleştirilmiş olup PHP Kılavuzunda bu eklentilerle ilgili geniş bilgi verilmiştir. PHP'yi nasıl yapılandırmanız gerektiğiyle ilgili bilgiyi yapılandırma ve kurulum bölümleri ile eklerdeki özel bölümlerde bulabilirsiniz.

Kılavuzun işlev tanımı nasıl okunur bölümünde bir işlev tanımının nasıl okunup anlaşılabileceği ile ilgili bilgiler bulunmaktadır. Bir işlevin bir değer mi döndürdüğü yoksa aktarılan değerlerle sadece işlem mi yaptığını anlamak önemlidir. Örneğin, str_replace() değiştirilmiş dizgeyle dönerken, usort() sadece kendisine aktarılan değer üzerinde çalışır. Ayrıca, her kılavuz sayfasında her işlevin bağımsız değişkenleri, davranış değişiklikleri, başarı ya da başarısızlık durumunda döndürülen değerler ve kullanılabilirlik bilgileri bulunmaktadır. Bu önemli (ve sıklıkla algılanması güç) farklılıkların bilinmesi, doğru PHP kodunun yazılabilmesi için büyük önem taşımaktadır.

> Bilginize: Bir işleve, işlevin kabul etmeyeceği bir bağımsız değişken (örneğin, bir dizge gerekirken bir dizi) belirtilmesi durumunda işlevin döndüreceği değer tanımsızdır (beklenen değer olmayabilir). Böyle bir durumda çoğunlukla `null` döner, fakat bu böyle düzenlenmiş demek değildir ve buna güvenilmemelidir. PHP 8.0.0 itibariyle, böyle bir durumda bir TypeError istisnası yavrulanması gerekir.

> Bilginize:

> Sayıl türler, zorlanmış kipteyken yerleşik işlevlerde öntanımlı olarak `null` olabilmektedir. PHP 8.1.0'dan itibaren nullable türünde bildirilmeyen bir dahili işlev bağımsız değişkenine `null` aktarılması önerilmemekte ve sayıl türlerin açıkça nullable olarak bildirilmesini gerektiren kullanıcı tanımlı işlevlerin davranışıyla uyum sağlamak için zorlanmış kipte kullanımdan kaldırma uyarısı çıktılanmaktadır.

> Örneğin, strlen() işlevinin `$dizge` bağımsız değişkeninde string türünde bir değer alabileceği belirtilmiş, `null` olabileceği belirtilmemiştir. Geriye uyumluluk adına PHP zorlayıcı kipte bu bağımsız değişkene değer olarak `null` aktarılmasına izin vermekte olup bağımsız değişken örtük olarak string türüne dönüştürülmekte ve sonuçta değer `""` olmaktadır. Katı kipte ise bunun aksine, TypeError çıktılanmaktadır.

>     <?php
>     var_dump(strlen(null));
>     // "Önerilmiyor: string türündeki 1. bağımsız değişkene ($dizge) null aktarımı PHP 8.1.0 itibariyle önerilmiyor.
>     // int(0)

>     var_dump(str_contains("foobar", null));
>     // "Önerilmiyor: string türündeki 2. bağımsız değişkene ($iğne) null aktarımı PHP 8.1.0 itibariyle önerilmiyor.
>     // bool(true)
>     ?>

### Ayrıca Bakınız

- function_exists()
- İşlev Başvuru Kılavuzu
- get_extension_funcs()
- dl()

## Anonim işlevler

Anonim işlevler isim belirtmeksizin oluşturulabilen işlevlerdir. Çoğunlukla callable türünde bağımsız değişkenler olarak işlev bağımsız değişkenlerinde kullanılırsa da kullanımı bununla sınırlı değildir.

Anonim işlevler Closure sınıfı kullanılarak gerçeklenir.

Örnek 1 - Anonim işlev örneği

    <?php
    echo preg_replace_callback('~-([a-z])~',
          function ($match) {
           return strtoupper($match[1]);
          },
          'hello-world');
    // Çıktısı: helloWorld
    ?>

Anonim işlevler birer değişken değeri olarak da bildirilebilir. Bu durumda PHP, işlevi otomatik olarak sınıfının nesnel bir örneği haline getirir. Bir anonim işlev, bir değişkene sıradan bir deyim gibi, bir noktalı virgül ile biten bir işlev olarak atanabilir:

Örnek 2 - Değişkene anonim işlev atama örneği

    <?php
    $greet = function($isim) {
        printf("Merhaba %s\r\n", $isim);
    };

    $greet('Dünya');
    $greet('PHP');
    ?>

Anonim işlevler değişkenleri üst etki alanından miras alabilirler. Böyle değişkenler `use` dil oluşumuna aktarılmalıdır. PHP 7.1 itibariyle, bu değişkenler süper küreseller, $this veya bir bağımsız değişken ile aynı isimdeki değişkenleri içeremez. İşlevin dönüş türü bildirimi `use` sözcüğünden sonra gelmelidir.

Örnek 3 Değikenleri üst etki alanından miras almak

    <?php
    $message = 'hello';

    // "use" olmaksızın
    $example = function () {
        var_dump($message);
    };
    $example();

    // $message miras alınır
    $example = function () use ($message) {
        var_dump($message);
    };
    $example();

    // Miras alınan değişkenin değeri işlevin tanımından gelir, çağrısından değil.
    $message = 'world';
    $example();

    // message sıfırlanır
    $message = 'hello';

    // Gönderimle miras alma
    $example = function () use (&$message) {
        var_dump($message);
    };
    $example();

    // Üst etki alanında değişen değer
    // işlev çağrısı içinde yansıtılır.
    $message = 'world';
    $example();

    // Anonim işlevler sıradan bağımsız değişkenleri de kabul edebilir
    $example = function ($arg) use ($message) {
        var_dump($arg . ' ' . $message);
    };
    $example("hello");

    // Dönüş türü bildirimi use sözcüğündan sonra gelir
    $example = function () use ($message): string {
        return "hello $message";
    };
    var_dump($example());
    >

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Notice: Undefined variable: message in /example.php on line 6
    NULL
    string(5) "hello"
    string(5) "hello"
    string(5) "hello"
    string(5) "world"
    string(11) "hello world"
    string(11) "hello world"

Etki alanından miras alınan değişkenler listesinin sonunda bir virgül varsa PHP 8.0.0 itibariyle bu virgül yoksayılmaktadır.

Üst etki alanından miras alınan değişkenler küresel değişkenler gibi ele alınmazlar. Küresel değişkenler, işlevin çalıştığı etki alanında tanımlı değişkenlerdir. Anonim işlevin üst etki alanı ise içinde bildirildiği işlevin etki alanıdır (Anonim işlevin bildirildiği etki alanı ile çağrıldığı etki alanı aynı olmak zorunda değildir). Aşağıdaki örneğe bakalım:

Örnek 4 - Anonim işlevler ve etki alanı

    <?php
    // Ürünleri eklemek üzere bir Sepet oluşturalım.
    // Eklenen ürünlerin toplam fiyatını döndürmek
    // üzere bir geriçağırım işlevi kullanalım.
    class Sepet
    {
      const PRICE_BUTTER = 1.00;
      const PRICE_MILK = 3.00;
      const PRICE_EGGS = 6.95;

      protected $ürünler = Array();

      public static function ekle($ürün, $miktar)
      {
        $this->ürünler[$ürün] = $miktar;
      }

     public static function miktarıGetir($ürün)
     {
        return isset($this->ürünler[$ürün]) ? $this->ürünler[$ürün] : FALSE;

      }

      public function Toplam($kdv)
      {
          $toplam = 0.00;

          $işlev =
              function ($miktar, $ürün) use ($kdv, &$toplam)
              {
                  $birimFiyat = constant(__CLASS__ . "::FiYAT_" .
                      strtoupper($ürün));
                  $toplam += ($birimFiyat * $miktar) * ($kdv + 1.0);
              };

          array_walk($this->ürünler, $işlev);
          return round($toplam, 2);
      }
    }

    $sepetim = new Sepet;

    // Sepete birşeyler ekleyelim
    $sepetim->ekle('Peynir', 1);
    $sepetim->ekle('Süt', 3);
    $sepetim->ekle('Yumurta', 6);

    // %5 KDV ile toplamı döndürelim
    print $sepetim->Toplam(0.05) . "\n";
    // sonuç: is 54.29
    ?>

Örnek 5 `$this`'in otomatik bağlanması

    <?php

    class Test
    {
        public function testing()
        {
            return function() {
                var_dump($this);
            };
        }
    }

    $object = new Test;
    $function = $object->testing();
    $function();

    ?>

Yukarıdaki örneğin çıktısı:

    object(Test)#1 (0) {
    }

Bir sınıf başka bir sınıfın içinde bildirildiğinde `$this`'i işlevin etki alanı içinde kullanılabilir kılarak otomatik olarak ona bağlanır. Bu otomatik bağlantı istenmiyorsa bunun yerine statik anonim işlevler kullanılabilir.

### Statik anonim işlevler

Anonim işlevler statik olarak bildirilebilmektedir. Böylece, geçerli sınıfın otomatik olarak bunlara bağlanamaması sağlanabilir. Çalışma anında nesneler de otomatik olarak bunlara bağlanamayacaktır.

Örnek 6 - Statik anonim bir işlevin içinde `$this` kullanmaya çalışmak

    <?php

    class Foo
    {
        function __construct()
        {
            $func = static function() {
                var_dump($this);
            };
            $func();
        }
    };
    new Foo();

    ?>

Yukarıdaki örneğin çıktısı:

    Notice: Undefined variable: this in %s on line %d
    NULL

Örnek 7 - Statik anonim bir işleve bir nesne bağlamaya çalışmak

    <?php

    $func = static function() {
        // işlev gövdesi
    };

    $func = $func->bindTo(new stdClass);
    $func();

    ?>

Yukarıdaki örneğin çıktısı:

    Warning: Cannot bind an instance to a static closure in %s on line %d

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | Anonim işlev değişkenleri süper küreseller, $this veya bir bağımsız değişken ile aynı isimdeki değişkenleri içeremez.

### Notlar

> Bilginize: func_num_args(), func_get_args() ve func_get_args() işlevini bir anonim işlev içinde kullanmak mümkündür.

## Ok İşlevleri

Ok işlevleri PHP 7.4'te anonim işlevler için daha kısa bir sözdizimi olarak tanıtılmıştır.

Anonim işlevler ve ok işlevlerinin ikisi de Closure sınıfı kullanılarak gerçeklenmiştir.

Ok işlevlerinin temel biçimi: `fn (bağımsız değişkenler) => ifade`

Ok işlevleri, üst etki alanındaki değişkenleri daima otomatik kullanması dışında anonim işlevlerin desteklediği özelliklerin tümünü destekler.

İfadede kullanılan bir değişken üst etki alanında tanımlandığında, örtük olarak değeriyle aktarılır. Aşağıdaki örnekte $fn1 ve $fn2 işlevleri aynı şekilde davranır.

Örnek 1 - Ok işlevleri otomatik olarak değişkenleri üst etki alanından daima değerleriyle alır

    <?php

    $y = 1;

    $fn1 = fn($x) => $x + $y;
    // $y bağımsız değişkenini değeriyle kullanmaya eşdeğerdir:
    $fn2 = function ($x) use ($y) {
        return $x + $y;
    };

    var_export($fn1(3));
    ?>

Yukarıdaki örneğin çıktısı:

    4

Aşağıdaki örnek, ok işlevleri iç içe kullanılsa da çalışır:

Örnek 2 - Ok işlevleri otomatik olarak değişkenleri iç içe olsalar bile üst etki alanından daima değerleriyle alır

    <?php

    $z = 1;
    $fn = fn($x) => fn($y) => $x * $y + $z;
    // 51 çıktılanır
    var_export($fn(5)(10));
    ?>

Anonim işlevlere benzer olarak, ok işlevleri sözdizimi de, bağımsız değişken ve dönüş türleri dahil, öntanımlı değerler, değişken sayıda bağımsız değişkenler, gönderimli aktarım ve dönüşler gibi rasgele işlev imzalarına da izin verir. Aşağıdaki ok işlevlerinin tamamı geçerli örneklerdir:

Örnek 3 - Ok işlevi örnekleri

    <?php

    fn(array $x) => $x;
    static fn($x): int => $x;
    fn($x = 42) => $x;
    fn(&$x) => $x;
    fn&($x) => $x;
    fn($x, ...$rest) => $rest;

    ?>

Ok işlevleri değişken bağlamını değeriyle kullanır. Bu kabaca, ok işlevi içinde kullanılan her $x değişkeni için bir `use($x)` çalıştırmaya eşdeğerdir. Değişken bağlamını değeriyle kullanmaktan kasıt, dış etki alanındaki herhangi bir değerin değiştirilmesinin mümkün olmayacağıdır. Değişken bağlamını gönderimiyle kullanmak için anonim işlevler kullanılabilir.

Örnek 4 - Dış etki alanındaki değerler ok işlevleri kullanılarak değiştirilemez

    <?php

    $x = 1;
    $fn = fn() => $x++; // Etkisiz
    $fn();
    var_export($x);  // 1 çıktılanır

    ?>

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Ok işlevleri kullanılabilir oldu.

### Notlar

> Bilginize: Bir ok işlevi içinden func_num_args(), func_get_arg() ve func_get_args() kullanmak mümkündür.

## Birinci sınıf çağrılabilir sözdizimi

PHP 8.1.0 itibariyle kullanılabilen birinci sınıf çağrılabilir sözdizimi çağrılabilir anonim işlevler oluşturmanın bir yoludur. Dizgeleri ve dizileri kullanan mevcut çağrılabilir sözdiziminin yerini alır. Bu sözdiziminin getirisi statik analiz için erişilebilir olması ve çağrılabilirin elde edildiği etki alanın kullanılabilmesidir.

Çağrılabilirden Closure nesne oluşturmakta `CallableExpr(...)` sözdizimi kullanılır. `CallableExpr` PHP dil yapısı içinde doğrudan çözümlenebilen her ifadeyi kabul eder:

Örnek 1 - Basit birinci sınıf çağrılabilir sözdizimi

    <?php

    class Foo {
       public function yöntem() {}
       public static function statikyöntem() {}
       public function __invoke() {}
    }

    $obj = new Foo();
    $sınıfDizgesi = 'Foo';
    $yöntemDizgesi = 'method';
    $statikYöntemDizgesi = 'staticmethod';

    $f1 = strlen(...);
    $f2 = $obj(...);  // çağrılabilir nesne
    $f3 = $obj->yöntem(...);
    $f4 = $obj->$yöntemDizgesi(...);
    $f5 = Foo::statikyöntem(...);
    $f6 = $sınıfDizgesi::$statikYöntemDizgesi(...);

    // dizi, dizge kullanan geleneksel çağrılabilir
    $f7 = 'strlen'(...);
    $f8 = [$obj, 'method'](...);
    $f9 = [Foo::class, 'staticmethod'](...);
    ?>

> Bilginize:

> `...` sözdiziminin bir parçası olup ihmal edilmemelidir.

`CallableExpr(...)` sözdizimi Closure::fromCallable() ile aynı yapıdadır. Yani, dizi ve dizge kullanan çağrılabilirlerin tersine `CallableExpr(...)` oluşturulduğu etki alanına bağlıdır:

Örnek 2 - Geleneksel çağrılabilir ile `CallableExpr(...)` karşılaştırması

    <?php

    class Foo {
        public function getPrivateMethod() {
            return [$this, 'privateMethod'];
        }

        private function privateMethod() {
            echo __METHOD__, "\n";
        }
    }

    $foo = new Foo;
    $privateMethod = $foo->getPrivateMethod();
    $privateMethod();
    // Ölümcül hata: private yöntem Foo::privateMethod() küresel etki alanında çağrılıyor.
    // Bunun nedeni, çağrının Foo dışında yapılması ve
    // görünürlüğün bu noktadan denetlenmesidir.

    class Foo1 {
        public function getPrivateMethod() {
            // Çağrılabilirin oluşturulduğu etki alanı kullanılıyor.
            return $this->privateMethod(...); // Closure::fromCallable([$this, 'privateMethod']); ile eşdeğer
        }

        private function privateMethod() {
            echo __METHOD__, "\n";
        }
    }

    $foo1 = new Foo1;
    $privateMethod = $foo1->getPrivateMethod();
    $privateMethod();  // Foo1::privateMethod
    ?>

> Bilginize:

> Bu sözdizimini kullanarak nesne oluşturmak (`new Foo(...)` gibi) desteklenmemektedir. Bunun sebebi `new Foo()` sözdiziminin bir işlev/yöntem çağrısı olarak ele alınmamasıdır.

> Bilginize:

> Basit birinci sınıf çağrılabilir sözdizimi ile güvenli null işleci ?-> birlikte kullanılmamalıdır. Aşağıdakilerin her biri bir derleme hatasıyla sonuçlanır:

>     <?php
>     $obj?->method(...);
>     $obj?->prop->method(...);
>     ?>

# Sınıflar ve Nesneler

## İçindekiler

- Giriş
- Temel Kavramlar
- Özellikler
- Property Hooks
- Sınıf Sabitleri
- Otomatik Yüklenen Sınıflar
- Kurucular ve Yıkıcılar
- Görünürlük
- Nesnelerin Kalıtımı
- Etki Alanı Çözünürlük İşleci (::)
- static Anahtar Sözcüğü
- Sınıf Soyutlama
- Nesne Arayüzleri
- Nitelikler
- Anonim Sınıflar
- Aşırı Yükleme
- Nesne Yineleme
- Sihirli Yöntemler
- final Anahtar Sözcüğü
- Nesne Kopyalama
- Nesnelerin Karşılaştırılması
- Statik İçselleştirim
- Nesneler ve Gönderimler
- Nesne Dizgeleştirme
- Çok Özgüllük ve Az Özgüllük
- Lazy Objects
- NYP Değişiklik Güncesi

## Giriş

PHP tam bir nesne modeline sahiptir. Özelliklerinden bazıları şunlardır: Görünürlük, Sınıf Soyutlama, final sınıflar ve yöntemlerine ek olarak, Sihirli Yöntemler, Nesne Arayüzleri ve Nesne Kopyalama.

PHP'deki her nesne değişkeni nesnenin tamamının bir kopyasını değil, nesne başvurusunu içerir. Ayrıntılar için Nesneler ve Gönderimler bölümüne bakınız.

İpucu

Ayrıca Kullanıcı Alanı İsimlendirme Kılavuzu belgesine de bakılabilir.

## Temel Kavramlar

### `class` Anahtar Sözcüğü

Temel sınıf tanımı `class` anahtar sözcüğü ile başlar sınıf isminin ardından gelen bir çift kaşlı ayracın arasında sınıfa ait özelliklerin ve yöntemlerin tanımları bulunur.

Sınıf ismi olarak herhangi bir geçerli yafta kullanılabilir ancak bu PHP için ayrılmış sözcüklerden biri olmamalıdır. Geçerli bir sınıf ısmı bir harf veya alt çizgi ile başlar, sayılar, harfler veya alt çizgiler içerebilir. Bir düzenli ifade olarak şöyle bir şablonla eşleşmelidir: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`.

Bir sınıfın kendi sabitleri, değişkenleri (bunlara "özellik" de denir) ve işlevleri (bunlara "yöntem" de denir) olabilir.

Örnek 1 - Basit bir sınıf tanımı

    <?php
    class BasitSınıf
    {
        // özellik bildirimi
        public $öntanımlı = 'öntanımlı bir değer';

        // yöntem tanımı
        public function ÖntanımlıyıGöster() {
            echo $this->öntanımlı;
        }
    }
    ?>

Bir nesne bağlamı içinden bir yöntem çağırmak için $this diye bir sözde değişken kullanılır. $this çağrılan nesnenin değeridir.

Uyarı

Statik olmayan yöntemin statik olarak çağrılması Error yavrulanmasına sebep olur. PHP 8.0.0 öncesinde bunun kullanımdışı olduğuna dair bir uyarı verilir ve tanımlanmamış olarak $this ile sonuçlanırdı.

Örnek 2 - $this sözde değişkeninin kullanımı

    <?php
    class A
    {
        function foo()
        {
            if (isset($this)) {
                echo '$this tanımlı (';
                echo get_class($this);
                echo ")\n";
            } else {
                echo "\$this tanımsız.\n";
            }
        }
    }

    class B
    {
        function bar()
        {
            A::foo();
        }
    }

    $a = new A();
    $a->foo();

    A::foo();

    $b = new B();
    $b->bar();

    B::bar();
    ?>

Yukarıdaki örneğin PHP 7 çıktısı:

    $this is defined (A)

    Deprecated: Non-static method A::foo() should not be called statically in %s  on line 27
    $this is not defined.

    Deprecated: Non-static method A::foo() should not be called statically in %s  on line 20
    $this is not defined.

    Deprecated: Non-static method B::bar() should not be called statically in %s  on line 32

    Deprecated: Non-static method A::foo() should not be called statically in %s  on line 20
    $this is not defined.

Yukarıdaki örneğin PHP 8 çıktısı:

    $this is defined (A)

    Fatal error: Uncaught Error: Non-static method A::foo() cannot be called statically in %s :27
    Stack trace:
    #0 {main}
      thrown in %s  on line 27

#### Salt okunur sınıflar

PHP 8.2.0 ve sonrasında, bir sınıf readonly değiştiricisi ile imlenebilmektedir. Bir sınıfın readonly imlenmesi bildirilen her özelliğe readonly değiştiricisi eklenmesine ve dinamik özelliklerin oluşturulmasının engellenmesine neden olur. Dahası, AllowDynamicProperties özniteliği kullanılarak bu engelleme kaldırılamamakta, böyle bir çaba bir derleme anı hatasını tetiklemektedir.

    <?php
    #[\AllowDynamicProperties]
    readonly class Foo {
    }

    // Ölümcül hata: #[AllowDynamicProperties] readonly class Foo'ya uygulanamaz
    ?>

Türsüz ve statik özellikler `readonly` değiştiricisi ile imlenemez ve salt okunur sınıflarda bildirilemez:

    <?php
    readonly class Foo
    {
        public $bar;
    }

    // Ölümcül hata: Salt okunur Foo::$bar özelliğinin bir türü olmalı
    ?>

    <?php
    readonly class Foo
    {
        public static int $bar;
    }

    // Ölümcül hata: Salt okunur class Foo statik özellikler bildiremez
    ?>

Salt okunur (readonly bildirimli) bir sınıfın genişletilebilmesi için gerek ve yeter koşul çocuk sınıfının da salt okunur sınıf olmasıdır.

### `new` Anahtar Sözcüğü

Bir sınıfın örneğini oluşturmak için `new` anahtar sözcüğü kullanılmalıdır. Nesnenin hata durumunda daima yeni bir değişkene atanarak oluşturulması için kurucusunun bir istisna oluşturmaması gerekir. Sınıflar, örnekleme öncesi tanımlanmış olmalıdır (ve bu, bazı durumlarda bir gereksinimdir).

string türünde b,r değişken `new` ile kullanılmış bir sınıf ismi içeriyorsa bu sınıfın yeni bir örneği oluşturulur. Eğer sınıf bir isim alanı içersindeyse bu yapılırken sınıfın tam nitelenmiş ismi kullanılmalıdır.

> Bilginize:

> Sınıfın yapıcısına iletilecek hiçbir bağımsız değişken yoksa, sınıf adından sonra parantez kullanmak gerekmez.

Örnek 3 - Bir sınıf örneğinin oluşturulması

    <?php
    $örnek = new BasitSınıf();

    // Bu bir değişkenle de yapılabilir:
    $sınıf = 'BasitSınıf';
    $örnek = new $sınıf(); // new BasitSınıf()
    ?>

PHP 8.0.0 ve sonrasında, keyfi ifadelerde `new` kullanımı desteklenmektedir. İfade bir dizge üretiyorsa daha karmaşık örneklemeler mümkündür. İfadelerin parantez içine alınması gerekir.

Örnek 4 - Keyfi ifadelerle örnekleme

Örnekte sınıf ismini üretmekte kullanılan çeşitli ifadeler gösterilmiştir. Bir işlev çağrısı, dizge birleştirme ve `::class` sabiti.

    <?php

    class ClassA extends \stdClass {}
    class ClassB extends \stdClass {}
    class ClassC extends ClassB {}
    class ClassD extends ClassA {}

    function getSomeClass(): string
    {
        return 'ClassA';
    }

    var_dump(new (getSomeClass()));
    var_dump(new ('Class' . 'B'));
    var_dump(new ('Class' . 'C'));
    var_dump(new (ClassD::class));
    ?>

Yukarıdaki örneğin PHP 8 çıktısı:

    object(ClassA)#1 (0) {
    }
    object(ClassB)#1 (0) {
    }
    object(ClassC)#1 (0) {
    }
    object(ClassD)#1 (0) {
    }

Sınıf bağlamında yeni bir nesneyi `new self` veya `new parent` kullanarak oluşturmak mümkündür.

Oluşturulmuş bir sınıf örneğinin yeni bir değişkene atanması sırasında, yeni değişken, atanan nesneyle aynı örneğe erişecektir. Bu davranışın örneklerin bir işleve aktarılmasından bir farkı yoktur. Kopyalamak suretiyle oluşturulmuş bir nesnenin daima bir kopyası yapılabilir.

Örnek 5 - Nesne Atama

    <?php
    $örnek = new BasitSınıf();

    $atama     =  $örnek;
    $gönderim  =& $örnek;

    $örnek->var = '$atama bu değere sahip olacak';

    $örnek = null; // $örnek ve $gönderim null olur

    var_dump($örnek);
    var_dump($gönderim);
    var_dump($atama);
    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    NULL
    object(BasitSınıf)#1 (1) {
      ["var"]=>
      string(30) "$atama bu değere sahip olacak"
    }

Bir nesnenin örneğini oluşturmak için yeni yollar kullanılabilmektedir:

Örnek 6 - Yeni nesneler oluşturmak

    <?php
    class Test
    {
        public static function getNew()
        {
            return new static();
        }
    }

    class Child extends Test {}

    $obj1 = new Test(); // sınıf adına göre
    $obj2 = new $obj1;  // bir nesne içeren değişken üzerinden
    var_dump($obj1 !== $obj2);

    $obj3 = Test::getNew(); // sınıf yöntemine göre
    var_dump($obj3 instanceof Test);

    $obj4 = Child::getNew(); // çocuk sınıf yöntemi üzerinden
    var_dump($obj4 instanceof Child);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)

Yeni oluşturulmuş bir nesnenin üyesine tek bir ifadede erişmek mümkündür:

Örnek 7 - Yeni oluşturulmuş bir nesnenin üyesine erişim

    <?php
    echo (new DateTime())->format('Y');
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2016

> Bilginize: PHP 7.1'den önce, bir yapıcı işlev tanımlanmamışsa bağımsız değişkenler değerlendirilmez.

### Özellikler ve Yöntemler

Sınıf özellikleri ve yöntemleri ayrı isim alanlarında ("namespace") yer alır, dolayısıyla bunlar aynı isimde olabilir. Sadece bağlama bağlı kalarak, bir özelliğin mi yoksa bir yöntemin mi çağrıldığına (yani, bir değişkene erişim veya işlev çağrısı) bakmadan her ikisi de aynı gösterimle kullanılabilir.

Örnek 8 - Özelliğe erişim ya da yöntem çağrısı

    <?php
    class Foo
    {
        public $bar = 'özellik';

        public function bar() {
            return 'yöntem';
        }
    }

    $obj = new Foo();
    echo $obj->bar, PHP_EOL, $obj->bar(), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    özellik
    yöntem

Bunun anlamı: Bir özelliğe atanmış bir anonim işlevi doğrudan çağırmak mümkün değildir. Bunun yerine, özellik önce örneğin bir değişkene atanmalıdır. Böyle bir özelliği parantez içine alarak doğrudan çağırmak mümkündür.

Örnek 9 - Bir özelliğe atanmış bir anonim işlevi çağırmak

    <?php
    class Foo
    {
        public $bar;

        public function __construct() {
            $this->bar = function() {
                return 42;
            };
        }
    }

    $obj = new Foo();

    echo ($obj->bar)(), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    42

### `extends` Anahtar Sözcüğü

Bir sınıfın bildiriminde `extends` anahtar sözcüğü kullanılarak başka bir sınıfın sabit, yöntem ve özellikleri miras alınabilir. Çok sayıda sınıfı miras alarak genişlemek mümkün değildir, bir sınıf sadece bir ana sınıfı miras alabilir.

Miras alınan sabit, yöntem ve özellikler, ebeveyn sınıfta tanımlı isimleriyle yeniden bildirilerek geçersiz kılınabilir; bu sadece ebeveyn sınıfın final tanımlı yöntemleri ve sabitleri için yapılamaz. Geçersiz kılınmış yöntemlere ve statik özelliklere parent:: öneki ile atıfta bulunarak erişilebilir.

> Bilginize: PHP 8.1.0 itibariyle, sabitler final olarak bildirilebilmektedir.

Örnek 10 - Basit bir sınıfın miras alınması

    <?php
    class EkSınıf extends BasitSınıf
    {
        // ebeveyn yöntemi yeniden bildirelim
        function değerGöster()
        {
            echo "Sınıf genişletiliyor\n";
            parent::değerGöster();
        }
    }

    $ek = new EkSınıf();
    $ek->değerGöster();
    ?>

Yukarıdaki örneğin çıktısı:

    Sınıf genişletiliyor
    bir öntanımlı değer

#### Bağımsız değişken sırası uyumluluk kuralları

Bir yöntem geçersiz kılınırken bağımsız değişkenlerin yerleri ebeveyn yöntem ile uyumlu olmalıdır. Aksi takdirde, ölümcül bir hata üretilir. PHP 8.0.0 öncesinde `E_WARNING` seviyesinde bir hata üretilirdi. Bağımsız değişkenlerin yerleri, özgüllük kurallarına uyuyorsa, zorunlu bir bağımsız değişkeni isteğe bağlı duruma getiriyorsa ve yalnızca isteğe bağlı yeni bağımsız değişkenler ekliyor ve görünürlüğü kısıtlamıyor, yalnızca rahatlatıyorsa uyumludur. Bu, Liskov İkame İlkesi olarak bilinir. Kurucu ve özel yöntemler bu uyumluluk kurallarından muaf olduğundan bir uyuşmazlık durumunda ölümcül bir hata oluşmaz.

Örnek 11 - Uyumlu çocuk yöntemler

    <?php

    class Base
    {
        public function foo(int $a) {
            echo "Geçerli\n";
        }
    }

    class Extend1 extends Base
    {
        function foo(int $a = 5)
        {
            parent::foo($a);
        }
    }

    class Extend2 extends Base
    {
        function foo(int $a, $b = 5)
        {
            parent::foo($a);
        }
    }

    $extended1 = new Extend1();
    $extended1->foo();
    $extended2 = new Extend2();
    $extended2->foo(1);

Yukarıdaki örneğin çıktısı:

    Geçerli
    Geçerli

Aşağıdaki örnekler, bir bağımsız değişkeni kaldıran veya isteğe bağlı bir bağımsız değişkeni zorunlu kılan bir çocuk yöntemin ebeveyn yöntemle uyumlu olmadığını gösterir.

Örnek 12 - Bir çocuk yöntem bir bağımsız değişkeni kaldırdığında ölümcül hata oluşur

    <?php

    class Base
    {
        public function foo(int $a = 5) {
            echo "Geçerli\n";
        }
    }

    class Extend extends Base
    {
        function foo()
        {
            parent::foo(1);
        }
    }

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

    Fatal error: Declaration of Extend::foo() must be compatible with Base::foo(int $a = 5) in /in/evtlq on line 13

Örnek 13 - Bir çocuk yöntem isteğe bağlı bir bağımsız değişkeni zorunlu kıldığında ölümcül hata oluşur

    <?php

    class Base
    {
        public function foo(int $a = 5) {
            echo "Geçerli\n";
        }
    }

    class Extend extends Base
    {
        function foo(int $a)
        {
            parent::foo($a);
        }
    }

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

    Fatal error: Declaration of Extend::foo(int $a) must be compatible with Base::foo(int $a = 5) in /in/qJXVC on line 13

Uyarı

Bir çocuk sınıfta bir yöntemin bağımsız değişkenini yeniden adlandırmak bağımsız değişken sırası uyumsuzluğu değildir. Ancak, isimli bağımsız değişkenler kullanılırsa çalışma zamanı hatasına (Error) neden olacağından bu önerilmez.

Örnek 14 - Bir çocuk sınıfta isimli bağımsız değişkenler yeniden adlandırıldığında hata oluşur

    <?php

    class A {
        public function test($foo, $bar) {}
    }

    class B extends A {
        public function test($a, $b) {}
    }

    $obj = new B;

    // Pass parameters according to A::test() contract
    $obj->test(foo: "foo", bar: "bar"); // HATA!

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Fatal error: Uncaught Error: Unknown named parameter $foo in /in/XaaeN:14
    Stack trace:
    #0 {main}
      thrown in /in/XaaeN on line 14

### ::class

`class` anahtar sözcüğü, ayrıca sınıf isim çözünürlüğü için de kullanılabilmektedir. `SınıfAdı` sınıfının tam nitelenmiş ismini `SınıfAdı::class` biçeminde kullanarak bir dizge elde edilebilir. Bu, özellikle isim alanlı sınıflarda çok kullanışlıdır.

Örnek 15 - Sınıf adı çözünürlüğü

    <?php
    namespace NS {
        class SınıfAdı {
        }

        echo SınıfAdı::class;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    NS\SınıfAdı

> Bilginize:

> `::class` kullanarak sınıf ismi çözünürlüğü bir derleme zamanı dönüşümüdür. Yani, sınıf ismi dizgesi oluşturulduğu sırada otomatik bir yükleme henüz oluşmamıştır. Sonuç olarak, sınıf henüz mevcut değilken bile sınıf isimleri genişletilir. Bu durumda hiçbir hata oluşmaz.

> Örnek 16 - Eksik sınıf adı çözümlemesi

>     <?php
>     print Does\Not\Exist::class;
>     ?>

> Yukarıdaki örneğin çıktısı:

>     Does\Not\Exist

PHP 8.0.0'dan itibaren, `::class` nesnelerde de kullanılabilir. Bu çözümleme derleme zamanında değil çalışma zamanında gerçekleşir. Etkisi, nesne üzerinde get_class() işlevini çağırmakla aynıdır.

Örnek 17 - Nesne adı çözümlemesi

    <?php
    namespace NS {
        class ClassName {
        }
    }
    $c = new ClassName();
    print $c::class;
    ?>

Yukarıdaki örneğin çıktısı:

    NS\ClassName

### Güvenli Null yöntemler ve özellikler

PHP 8.0.0'dan itibaren, özelliklere ve yöntemlere, "güvenli null" işleci ile de erişilebilir: `?->`. Güvenli null işleci, yukarıdaki özellik veya yöntem erişimiyle aynı şekilde çalışır, tek fark, başvurulan nesne `null` ise bir istisna yerine `null` döner. Başvurulan nesne bir zincirin parçasıysa, zincirin geri kalanı atlanır.

Etkisi, her bir erişimi önce is_null() denetiminden geçirmeye benzer, ancak daha karmaşıktır.

Örnek 18 - Güvenli Null İşleci

    <?php

    // PHP 8.0.0 ve sonrasında, bu satır:
    $result = $repository?->getUser(5)?->name;

    // aşağıdaki kod kümesi ile aynıdır:
    if (is_null($repository)) {
        $result = null;
    } else {
        $user = $repository->getUser(5);
        if (is_null($user)) {
            $result = null;
        } else {
            $result = $user->name;
        }
    }
    ?>

> Bilginize:

> Güvenli Null işleci işleci, en iyi, null değerinin bir özellik veya yöntem dönüşü için geçerli ve beklenen olası bir değer olarak kabul edilmesi durumunda kullanılır. Bir hatayı belirtmek için, bir istisna oluşturmak tercih edilebilir.

## Özellikler

Sınıf üyesi değişkenlere özellik denir. Bunlara bazan öznitelik veya alan dendiği de olur, fakat bu kılavuzun amaçları doğrultusunda biz özellik terimini kullanacağız. PHP 7.4 itibariyle, özellikler normal değişken bildiriminin önüne isteğe bağlı (Görünürlük sözcüklerinden biri, #language.oop5.static veya PHP 8.1.0 itibariyle readonly gibi) bir değiştirici ve ardından isteğe bağlı bir tür belirtimi getirilerek bildirilir. Bu bildirim, bir ilklendirme olarak da yapılabilir; bu durumda sabit bir değerle ilklendirme yapılmalıdır.

> Bilginize:

> Sınıf özelliklerini bildirmenin artık kullanılmayan bir yolu da, bu değiştiriciler yerine `var` sözcüğünü kullanmaktır.

> Bilginize: Görünürlük sözcüklerinden biri kullanılmadan bildirilen bir özellik `public` olarak bildirilmiş olur.

Statik olmayan özelliklere, yöntemleri içinden `->` (Nesne İşleci): $this->özellik (burada `özellik` özelliğin ismidir) kullanarak erişilir. Statik özelliklere ise `::` (Çift İki nokta imi): self::özellik kullanarak erişilir. Statik ve statik olmayan özellikler arasıdaki fark hakkında daha ayrıntılı bilgi için static Anahtar Sözcüğü bölümüne bakınız.

Yöntem bir nesne bağlamından çağrılıyorsa $this sözde değişkeni sınıf yöntemleri içinde de kullanılabilir. $this, yöntemi çağıran nesnenin değeridir.

Örnek 1 - Özellik bildirimi

    <?php
    class SimpleClass
    {
       public $var1 = 'hello ' . 'world';

       public $var2 = <<<EOD
    hello world
    EOD;
       public $var3 = 1+2;

       // geçersiz özellik bildirimleri:
       public $var4 = self::myStaticMethod();
       public $var5 = $myVar;

       // geçerli özellik bildirimleri:
       public $var6 = myConstant;
       public $var7 = [true, false];

       public $var8 = <<<'EOD'
    hello world
    EOD;

       // Örtük public bildirim:
       static $var9;
       readonly int $var10;
       var $var11;
    }
    ?>

> Bilginize:

> Sınıflar ve nesnelerle çalışan bazı işlevler vardır. Bunlar için Sınıf ve Nesne İşlevleri bölümüne bakınız.

### Tür Bildirimleri

PHP 7.4.0 ve sonrasında özellik tanımı callable istisnası ile tür bildirimi içerebilmektedir.

Örnek 2 - Tür ile özellik bildirimi

    <?php

    class User
    {
        public int $id;
        public ?string $name;

        public function __construct(int $id, ?string $name)
        {
            $this->id = $id;
            $this->name = $name;
        }
    }

    $user = new User(1234, null);

    var_dump($user->id);
    var_dump($user->name);

    ?>

Yukarıdaki örneğin çıktısı:

    int(1234)
    NULL

Tür bildirimli özellikler erişilmeden önce ilklendirilmelidir, aksi takdirde bir Error yavrulanır.

Örnek 3 - Özelliklere erişim

    <?php

    class Shape
    {
        public int $numberOfSides;
        public string $name;

        public function setNumberOfSides(int $numberOfSides): void
        {
            $this->numberOfSides = $numberOfSides;
        }

        public function setName(string $name): void
        {
            $this->name = $name;
        }

        public function getNumberOfSides(): int
        {
            return $this->numberOfSides;
        }

        public function getName(): string
        {
            return $this->name;
        }
    }

    $triangle = new Shape();
    $triangle->setName("triangle");
    $triangle->setNumberofSides(3);
    var_dump($triangle->getName());
    var_dump($triangle->getNumberOfSides());

    $circle = new Shape();
    $circle->setName("circle");
    var_dump($circle->getName());
    var_dump($circle->getNumberOfSides());
    ?>

Yukarıdaki örneğin çıktısı:

    string(8) "triangle"
    int(3)
    string(6) "circle"

    Fatal error: Uncaught Error: Typed property Shape::$numberOfSides must not be accessed before initialization

### Salt-okunur Özellikler

PHP 8.1.0 itibariyle, bir özellik `readonly` ile bildirilebilmekte ve böylece ilklendirmeden sonra özellik üzerinde değişiklik yapılması engellenebilmektedir. PHP 8.4.0'dan önce `readonly` özelliği örtük olarak private-set'tir ve yalnızca aynı sınıftan yazılabilir. PHP 8.4.0 ve sonrasında, `readonly` özellikleri örtük olarak `protected(set)`'tir, bu nedenle alt sınıflardan yazılabilir. İstenirse açıkça geçersiz kılınabilir.

Örnek 4 - Salt-okunur özellik örneği

    <?php

    class Test {
       public readonly string $prop;

       public function __construct(string $prop) {
           // Geçerli ilklendirme
           $this->prop = $prop;
       }
    }
    // dolaylı ilklendirme
    $test = new Test("foobar");
    // Geçerli değerin okunması
    var_dump($test->prop); // string(6) "foobar"

    // Geçersiz atama. Aynı değer yeniden atanıyor olsa bile geçerli değil.
    $test->prop = "foobar";
    // Hata: Salt-okunur özellik Test::$prop üzerinde değişiklik yapılamaz
    ?>

> Bilginize:

> `readonly` betimleyicisi sadece özelliklere veri türü bildirimi yapılırken uygulanabilir. Bir salt-okunur özelliği veri türü kısıtlaması olmaksızın bildirmek için mixed türü kullanılabilir.

> Bilginize:

> Salt-okunur statik özellikler desteklenmemektedir.

Bir salt-okunur özellik yalnızca bir kere, sadece bildirildiği bağlamda ilklendirilebilir ve bunun dışındaki her türlü ilklendirme ya da değişiklik hata ile sonuçlanır (Error istisnası yavrulanır).

Örnek 5 - Salt-okunur özelliklerde hatalı ilklendirme örneği

    <?php
    class Test1 {
        public readonly string $prop;
    }

    $test1 = new Test1;
    // Özel bağlamı dışında (küresel bağlamda) ilklendirme hatası
    $test1->prop = "foobar";
    // Error: Cannot initialize readonly property Test1::$prop from global scope
    ?>

> Bilginize:

> Salt-okunur özelliklerde öntanımlı değerin açıkça belirtilmesine izin verilmez. Çünkü, salt-okunur bir özelliği bir değerle bildirmek, özünde bir sabitten farksız olduğundan bu yararsızdır.

>     <?php

>     class Test {
>         // Ölümcül hata: Salt-okunur özellik Test::$prop öntanımlı değere sahip olamaz
>         public readonly int $prop = 42;
>     }
>     ?>

> Bilginize:

> Salt-okunur özellikler ilklendirildikten sonra unset() gibi bir işlevle yok edilemez. Bu ancak, özelliğin bildirildiği bağlamda, ilklendirilmeden önce mümkündür.

Aşağıdaki gibi düz atamalarla yapılmayan değişiklikler de Error istisnasına yol açar:

    <?php

    class Test {
        public function __construct(
            public readonly int $i = 0,
            public readonly array $ary = [],
        ) {}
    }

    $test = new Test;
    $test->i += 1;
    $test->i++;
    ++$test->i;
    $test->ary[] = 1;
    $test->ary[0][] = 1;
    $ref =& $test->i;
    $test->i =& $ref;
    byRef($test->i);
    foreach ($test as &$prop);
    ?>

Bununla birlikte salt-okunur özellikler, içerik değişikliğini engellemez. Nesneler (veya özkaynaklar) salt-okunur özelliklerde saklansa bile içerikleri değiştirilebilir:

    <?php

    class Test {
        public function __construct(public readonly object $obj) {}
    }

    $test = new Test(new stdClass);
    // Geçerli içerik değişikliği.
    $test->obj->foo = 1;
    // Geçersiz atama
    $test->obj = new stdClass;
    ?>

### Dinamik özellikler

Bir nesnede mevcut olmayan bir özelliğe atama yapılmaya çalışılırsa PHP olmayan özelliği otomatik olarak oluşturmaya çalışır. Böyle dinamik olarak oluşturulan bir özellik sınıfın yalnızca bu nesnesinde kullanılabilir.

Uyarı

PHP 8.2.0 ve sonrasında dinamik özelliklerin kullanımı önerilmemektedir. Özelliğe atama yapmadan önce bildirilmesi önerilir. Keyfi özellik isimlerini işleme sokabilmek için sınıfın sihirli __get() ve __set() yöntemlerini gerçeklemesi gerekir. Son çare olarak, sınıf `#[\AllowDynamicProperties]` özelliği ile imlenebilir.

## Property Hooks

Property hooks, also known as "property accessors" in some other languages, are a way to intercept and override the read and write behavior of a property. This functionality serves two purposes:

1. It allows for properties to be used directly, without get- and set- methods, while leaving the option open to add additional behavior in the future. That renders most boilerplate get/set methods unnecessary, even without using hooks.
2. It allows for properties that describe an object without needing to store a value directly.

There are two hooks available on non-static properties: `get` and `set`. They allow overriding the read and write behavior of a property, respectively. Hooks are available for both typed and untyped properties.

A property may be "backed" or "virtual". A backed property is one that actually stores a value. Any property that has no hooks is backed. A virtual property is one that has hooks and those hooks do not interact with the property itself. In this case, the hooks are effectively the same as methods, and the object does not use any space to store a value for that property.

Property hooks are incompatible with `readonly` properties. If there is a need to restrict access to a `get` or `set` operation in addition to altering its behavior, use asymmetric property visibility.

> Bilginize: Version Information
> Property hooks were introduced in PHP 8.4.

### Basic Hook Syntax

The general syntax for declaring a hook is as follows.

Örnek 1 Property hooks (full version)

    <?php
    class Example
    {
        private bool $modified = false;

        public string $foo = 'default value' {
            get {
                if ($this->modified) {
                    return $this->foo . ' (modified)';
                }
                return $this->foo;
            }
            set(string $value) {
                $this->foo = strtolower($value);
                $this->modified = true;
            }
        }
    }

    $example = new Example();
    $example->foo = 'changed';
    print $example->foo;
    ?>

The $foo property ends in `{}`, rather than a semicolon. That indicates the presence of hooks. Both a `get` and `set` hook are defined, although it is allowed to define only one or the other. Both hooks have a body, denoted by `{}`, that may contain arbitrary code.

The `set` hook additionally allows specifying the type and name of an incoming value, using the same syntax as a method. The type must be either the same as the type of the property, or contravariant (wider) to it. For instance, a property of type string could have a `set` hook that accepts string|Stringable, but not one that only accepts array.

At least one of the hooks references `$this->foo`, the property itself. That means the property will be "backed". When calling `$example->foo = 'changed'`, the provided string will be first cast to lowercase, then saved to the backing value. When reading from the property, the previously saved value may conditionally be appended with additional text.

There are a number of shorthand syntax variants as well to handle common cases.

If the `get` hook is a single expression, then the `{}` may be omitted and replaced with an arrow expression.

Örnek 2 Property get expression

This example is equivalent to the previous.

    <?php
    class Example
    {
        private bool $modified = false;

        public string $foo = 'default value' {
            get => $this->foo . ($this->modified ? ' (modified)' : '');

            set(string $value) {
                $this->foo = strtolower($value);
                $this->modified = true;
            }
        }
    }
    ?>

If the `set` hook's parameter type is the same as the property type (which is typical), it may be omitted. In that case, the value to set is automatically given the name $value.

Örnek 3 Property set defaults

This example is equivalent to the previous.

    <?php
    class Example
    {
        private bool $modified = false;

        public string $foo = 'default value' {
            get => $this->foo . ($this->modified ? ' (modified)' : '');

            set {
                $this->foo = strtolower($value);
                $this->modified = true;
            }
        }
    }
    ?>

If the `set` hook is only setting a modified version of the passed in value, then it may also be simplified to an arrow expression. The value the expression evaluates to will be set on the backing value.

Örnek 4 Property set expression

    <?php
    class Example
    {
        private bool $modified = false;

        public string $foo = 'default value' {
            get => $this->foo . ($this->modified ? ' (modified)' : '');
            set => strtolower($value);
        }
    }
    ?>

This example is not quite equivalent to the previous, as it does not also modify `$this->modified`. If multiple statements are needed in the set hook body, use the braces version.

A property may implement zero, one, or both hooks as the situation requires. All shorthand versions are mutually-independent. That is, using a short-get with a long-set, or a short-set with an explicit type, or so on is all valid.

On a backed property, omitting a `get` or `set` hook means the default read or write behavior will be used.

> Bilginize: Hooks can be defined when using constructor property promotion. However, when doing so, values provided to the constructor must match the type associated with the property, regardless of what the `set` hook might allow. Consider the following:

>     <?php
>     class Example
>     {
>         public function __construct(
>             public private(set) DateTimeInterface $created {
>                 set (string|DateTimeInterface $value) {
>                     if (is_string($value)) {
>                         $value = new DateTimeImmutable($value);
>                     }
>                     $this->created = $value;
>                 }
>             },
>         ) {
>         }
>     }

> Internally, the engine decomposes this to the following:

>     <?php
>     class Example
>     {
>         public private(set) DateTimeInterface $created {
>             set (string|DateTimeInterface $value) {
>                 if (is_string($value)) {
>                     $value = new DateTimeImmutable($value);
>                 }
>                 $this->created = $value;
>             }
>         }

>         public function __construct(
>             DateTimeInterface $created,
>         ) {
>             $this->created = $created;
>         }
>     }

> Any attempts to set the property outside the constructor will allow either string or DateTimeInterface values, but the constructor will only allow DateTimeInterface. This is because the defined type for the property (DateTimeInterface) is used as the parameter type within the constructor signature, regardless of what the `set` hook allows. If this kind of behavior is needed from the constructor, constructor property promotion cannot be used.

### Virtual properties

Virtual properties are properties that have no backing value. A property is virtual if neither its `get` nor `set` hook references the property itself using exact syntax. That is, a property named `$foo` whose hook contains `$this->foo` will be backed. But the following is not a backed property, and will error:

Örnek 5 Invalid virtual property

    <?php
    class Example
    {
        public string $foo {
            get {
                $temp = __PROPERTY__;
                return $this->$temp; // Doesn't refer to $this->foo, so it doesn't count.
            }
        }
    }
    ?>

For virtual properties, if a hook is omitted then that operation does not exist and trying to use it will produce an error. Virtual properties take up no memory space in an object. Virtual properties are suited for "derived" properties, such as those that are the combination of two other properties.

Örnek 6 Virtual property

    <?php
    class Rectangle
    {
        // A virtual property.
        public int $area {
            get => $this->h * $this->w;
        }

        public function __construct(public int $h, public int $w) {}
    }

    $s = new Rectangle(4, 5);
    print $s->area; // prints 20
    $s->area = 30; // Error, as there is no set operation defined.
    ?>

Defining both a `get` and `set` hook on a virtual property is also allowed.

### Scoping

All hooks operate in the scope of the object being modified. That means they have access to all public, private, or protected methods of the object, as well as any public, private, or protected properties, including properties that may have their own property hooks. Accessing another property from within a hook does not bypass the hooks defined on that property.

The most notable implication of this is that non-trivial hooks may sub-call to an arbitrarily complex method if they wish.

Örnek 7 Calling a method from a hook

    <?php
    class Person {
        public string $phone {
            set => $this->sanitizePhone($value);
        }

        private function sanitizePhone(string $value): string {
            $value = ltrim($value, '+');
            $value = ltrim($value, '1');

            if (!preg_match('/\d\d\d\-\d\d\d\-\d\d\d\d/', $value)) {
                throw new \InvalidArgumentException();
            }
            return $value;
        }
    }
    ?>

### References

Because the presence of hooks intercept the read and write process for properties, they cause issues when acquiring a reference to a property or with indirect modification, such as `$this->arrayProp['key'] = 'value';`. That is because any attempted modification of the value by reference would bypass a set hook, if one is defined.

In the rare case that getting a reference to a property that has hooks defined is necessary, the `get` hook may be prefixed with `&` to cause it to return by reference. Defining both `get` and `&get` on the same property is a syntax error.

Defining both `&get` and `set` hooks on a backed property is not allowed. As noted above, writing to the value returned by reference would bypass the `set` hook. On virtual properties, there is no necessary common value shared between the two hooks, so defining both is allowed.

Writing to an index of an array property also involves an implicit reference. For that reason, writing to a backed array property with hooks defined is allowed if and only if it defines only a `&get` hook. On a virtual property, writing to the array returned from either `get` or `&get` is legal, but whether that has any impact on the object depends on the hook implementation.

Overwriting the entire array property is fine, and behaves the same as any other property. Only working with elements of the array require special care.

### Inheritance

#### Final hooks

Hooks may also be declared final, in which case they may not be overridden.

Örnek 8 Final hooks

    <?php
    class User
    {
        public string $username {
            final set => strtolower($value);
        }
    }

    class Manager extends User
    {
        public string $username {
            // This is allowed
            get => strtoupper($this->username);

            // But this is NOT allowed, because set is final in the parent.
            set => strtoupper($value);
        }
    }
    ?>

A property may also be declared final. A final property may not be redeclared by a child class in any way, which precludes altering hooks or widening its access.

Declaring hooks final on a property that is declared final is redundant, and will be silently ignored. This is the same behavior as final methods.

A child class may define or redefine individual hooks on a property by redefining the property and just the hooks it wishes to override. A child class may also add hooks to a property that had none. This is essentially the same as if the hooks were methods.

Örnek 9 Hook inheritance

    <?php
    class Point
    {
        public int $x;
        public int $y;
    }

    class PositivePoint extends Point
    {
        public int $x {
            set {
                if ($value < 0) {
                    throw new \InvalidArgumentException('Too small');
                }
                $this->x = $value;
            }
        }
    }
    ?>

Each hook overrides parent implementations independently of each other. If a child class adds hooks, any default value set on the property is removed, and must be redeclared. That is consistent with how inheritance works on hook-less properties.

#### Accessing parent hooks

A hook in a child class may access the parent class's property using the `parent::$prop` keyword, followed by the desired hook. For example, `parent::$propName::get()`. It may be read as "access the prop defined on the parent class, and then run its get operation" (or set operation, as appropriate).

If not accessed this way, the parent class's hook is ignored. This behavior is consistent with how all methods work. This also offers a way to access the parent class's storage, if any. If there is no hook on the parent property, its default get/set behavior will be used. Hooks may not access any other hook except their own parent on their own property.

The example above could be rewritten as follows, which would allow for the `Point` class to add its own `set` hook in the future without issues (in the previous example, a hook added to the parent class would be ignored in the child).

Örnek 10 Parent hook access (set)

    <?php
    class Point
    {
        public int $x;
        public int $y;
    }

    class PositivePoint extends Point
    {
        public int $x {
            set {
                if ($value < 0) {
                    throw new \InvalidArgumentException('Too small');
                }
                parent::$x::set($value);
            }
        }
    }
    ?>

An example of overriding only a get hook could be:

Örnek 11 Parent hook access (get)

    <?php
    class Strings
    {
        public string $val;
    }

    class CaseFoldingStrings extends Strings
    {
        public bool $uppercase = true;

        public string $val {
            get => $this->uppercase
                ? strtoupper(parent::$val::get())
                : strtolower(parent::$val::get());
        }
    }
    ?>

### Serialization

PHP has a number of different ways in which an object may be serialized, either for public consumption or for debugging purposes. The behavior of hooks varies depending on the use case. In some cases, the raw backing value of a property will be used, bypassing any hooks. In others, the property will be read or written "through" the hook, just like any other normal read/write action.

- var_dump(): Use raw value
- serialize(): Use raw value
- unserialize(): Use raw value
- __serialize()/__unserialize(): Custom logic, uses get/set hook
- Array casting: Use raw value
- var_export(): Use get hook
- json_encode(): Use get hook
- JsonSerializable: Custom logic, uses get hook
- get_object_vars(): Use get hook
- get_mangled_object_vars(): Use raw value

## Sınıf Sabitleri

Sabit değerlerinin her sınıf için ayrı ayrı tanımlanabilmesi mümkündür. Sabit sınıflarının öntanımlı görünülüğü `public`'tir.

> Bilginize:

> Sınıf sabitlerini bir çocuk sınıf yeniden tanımlayabilir. PHP 8.1.0 itibariyle, final olarak tanımlanmış sınıf sabitlerini çocuk sınıflar yeniden tanımlayamaz.

Ayrıca, nesne arayüzlerinin de kendi sabitlerinin olması mümkündür. Örnekler için Nesne Arayüzleri belgesine bakınız.

Bir sınıfa bir değişken kullanarak atıfta bulunmak mümkündür. Değişkenin değeri, `self`, `parent`, `static` gibi bir anahtar sözcük olamaz.

Sınıf sabitlerinin her sınıf örneği için değil her sınıf için bir kere ayrıldığını unutmayın.

Örnek 1 - Bir sabitin tanımlanması ve kullanımı

    <?php
    class MyClass
    {
        const CONSTANT = 'sabit değer';

        function showConstant() {
            echo  self::CONSTANT . "\n";
        }
    }

    echo MyClass::constant . "\n";

    $classname = "MyClass";
    echo $classname::CONSTANT . "\n";

    $class = new MyClass();
    $class->showConstant();

    echo $class::CONSTANT."\n";
    ?>

Özel `::class` sabiti ile derleme sırasında tamamen nitelenmiş sınıf ismi çözünürlüğü mümkün olup isim alanlı sınıflar için kulllanışlıdır:

Örnek 2 - İsim alanlı ::class örneği

    <?php
    namespace foo {
        class bar {
        }

        echo bar::class; // foo\bar
    }
    ?>

Örnek 3 - Sınıf sabitinde ifade kullanımı

    <?php
    const BİR = 1;

    class foo {
        const İKİ = BİR * 2;
        const ÜÇ = BİR + self::İKİ;
        const CÜMLE = 'ÜÇ için değer: '.self::THREE;
    }
    ?>

Örnek 4 - Sınıf sabiti görünürlük değiştiricileri (PHP 7.1.0 ve sonrası)

    <?php
    class Foo {
        public const BAR = 'bar';
        private const BAZ = 'baz';
    }
    echo Foo::BAR, PHP_EOL;
    echo Foo::BAZ, PHP_EOL;
    ?>

Yukarıdaki örneğin PHP 7.1 çıktısı:

    bar

    Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in …

> Bilginize:

> Sınıf sabitlerinde görünürlük değiştiricileri desteği PHP 7.1.0'da eklendi.

## Otomatik Yüklenen Sınıflar

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).

spl_autoload_register() 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.

Dikkat

PHP 8.0.0 öncesinde sınıf ve arayüzleri otomatik yüklemek için __autoload() işlevini kullanmak mümkündü. Bununla birlikte, __autoload() işlevi spl_autoload_register() işlevinin daha az esnek benzeridir ve __autoload() işlevinin kullanılması PHP 7.2.0 itibariyle önerilmemekte olup PHP 8.0.0 itibariyle kullanımdan kaldırılmıştır.

Kurucu benzeri her sınıf aynı yolla otomatik yüklenebilir. Buna sınıflar, arayüzler, nitelikler ve sayılamalar dahildir.

> Bilginize:

> spl_autoload_register(), 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.

Örnek 1 - Otomatik yükleme örneği

Bu örnek `MyClass1` ve `MyClass2` sınıflarını yüklemeye çalışmaktadır. Sınıflar aynı isimli MyClass1.php ve MyClass2.php dosyalarının içinde yer almaktadırlar.

    <?php
    spl_autoload_register(function ($class_name) {
        include $class_name . '.php';
    });

    $obj  = new MyClass1();
    $obj2 = new MyClass2();
    ?>

Örnek 2 - Başka bir otomatik yükleme örneği

Bu örnek `DenemeA` arayüzünü yüklemeye çalışır.

    <?php

    spl_autoload_register(function ($name) {
        var_dump($isim);
    });

    class Fan implements DenemeA {
    }

    /*
    string(5) "DenemeA"

    Fatal error: Interface 'DenemeA' not found in ...
    */
    ?>

### Ayrıca Bakınız

- unserialize()
- unserialize_callback_func
- unserialize_max_depth
- spl_autoload_register()
- spl_autoload()
- __autoload()

## Kurucular ve Yıkıcılar

### Kurucular

function __construct(mixed `...$değerler` = ""): void

PHP geliştiricilerin sınıflar için kurucu yöntemler bildirmesine imkan verir. Bir kurucu yöntemi olan sınıflar her yeni nesne oluşturuluşunda bu yöntemi çağırırlar, bu bakımdan nesne kullanılmadan önce yapılması gereken ilklendirmeler için kurucular çok uygundur.

> Bilginize: Çocuk sınıflardan kurucusu olanlar için örtük olarak ebeveyn sınıfın kurucusu çağrılmaz. Ebeveyn sınıfın kurucusunu çocuk sınıftan çağırmak için, çocuk sınıf içinden parent::__construct() çağrısı yapılması gerekir. Çocuğun bir kurucu tanımlamaması halinde, normal sınıf yöntemi gibi (eğer private olarak tanımlanmadıysa) ana sınıftan miras alınabilir.

Örnek 1 - Miras almada kurucuların kullanımı

    <?php
    class AnaSınıf {
       function __construct() {
          print "AnaSınıf kurucusundayız\n";
       }
    }

    class AltSınıf extends AnaSınıf {
       function __construct() {
          parent::__construct();
          print "AltSınıf kurucusundayız\n";
       }
    }

    class DiğerAltSınıf extends AnaSınıf {
        // AnaSınıf'ın kurucusunu miras alır
    }

    // AnaSınıf kurucusunda
    $obj = new AnaSınıf();

    // AnaSınıf kurucusunda
    // AltSınıf kurucusunda
    $obj = new AltSınıf();

    // AnaSınıf kurucusunda
    $obj = new DiğerAltSınıf();
    ?>

Diğer yöntemlerin tersine, __construct() genişletilirken olağan bağımsız değişken sırası uyumluluk kurallarından muaftır.

Kurucular, karşılık gelen nesnelerinin somutlaştırılması sırasında çağrılan sıradan yöntemlerdir. Bu nedenle, gerekli olabilen, bir türe ve öntanımlı bir değere sahip olabilen rastgele sayıda bağımsız değişken tanımlayabilirler. Kurucu bağımsız değişkenleri, sınıf adından sonra gelen parantezlerin içine yerleştirilerek çağrılır.

Örnek 2 - Kurucu bağımsız değişkenlerinin kullanımı

    <?php
    class Point {
        protected int $x;
        protected int $y;

        public function __construct(int $x, int $y = 0) {
            $this->x = $x;
            $this->y = $y;
        }
    }
    // Bağımsız değişkenlerin ikisini de aktaralım
    $p1 = new Point(4, 5);
    // Yalnız gerekli bağımsız değişkeni aktaralım.
    // $y öntanımlı olan 0 değerini alır.
    $p2 = new Point(4);
    // isimli bağımsız değişken kullanımı (PHP 8.0 ve sonrası):
    $p3 = new Point(y: 5, x: 4);
    ?>

Bir sınıf kurucuya sahip değilse veya kurucu bağımsız değişkensizse yaylı ayraçlar konmayabilir.

#### Eski tarz kurucular

PHP 8.0.0'dan önce, genel isim alanındaki sınıflar, eski tarz kurucu ile aynı adı taşıyan bir yöntemi yorumlar. Bu sözdizimi kaldırılmış olup bir `E_DEPRECATED` hatasıyla sonuçlanırsa da yöntem yine de bir kurucu olarak çağrılır. Hem __construct() hem de aynı adı taşıyan yöntem tanımlanmışsa __construct() çağrılır.

İsim alanlı sınıflarda veya PHP 8.0.0 öncesinde herhangi bir sınıfta, sınıfla aynı ismi taşıyan bir yöntemin özel bir anlamı yoktur.

Yeni kodlarda daima __construct() kullanın.

#### Kurucu Tanıtımı

PHP 8.0.0'dan itibaren, kurucu bağımsız değişkenleri de bir nesne özelliğine karşılık gelecek şekilde tanıtılabilir. Kurucu bağımsız değişkenlerinin kurucudaki bir özelliğe atanması, ancak başka şekilde çalıştırılmaması çok yaygındır. Kurucu tanıtımı, bu kullanım durumu için kestirme bir yol sağlar. Yukarıdaki örnek aşağıdaki gibi yeniden yazılabilir.

Örnek 3 - Kurucu özelliği tanıtımının kullanımı

    <?php
    class Point {
        public function __construct(protected int $x, protected int $y = 0) {
        }
    }

Bir kurucu bağımsız değişkeni değiştirici içerdiğinde, PHP bunu hem nesne özelliği hem de kurucu bağımsız değişkeni olarak yorumlar ve özelliğe bağımsız değişkenin değerini atar. Kurucu gövdesi boş olabilir veya başka ifadeler içerebilir. Bu ifadeler, bağımsız değişken değerleri karşılık gelen özelliklere atandıktan sonra yorumlanır.

Tüm bağımsız değişkenlerin tanıtımı gerekmez. Tanıtılan ve tanıtılmayan bağımsız değişkenleri herhangi bir sırayla karıştırmak ve eşleştirmek mümkündür. Tanıtılan bağımsız değişkenlerin kurucuyu çağıran kod üzerinde hiçbir etkisi yoktur.

> Bilginize:

> Görünürlük değiştirici (`public`, `protected` veya `private`) kullanımı, özellik tanıtımı yapmanın en olası yoludur, ancak diğer herhangi bir tek değiştirici de (`salt okunur` gibi) aynı etkiye sahip olacaktır.

> Bilginize:

> Nesne özellikleri, ortaya çıkabilecek motor belirsizliği nedeniyle callable türde olamaz. Tanıtılan bağımsız değişkenler de bu nedenle callable türde olamaz. Bununla birlikte, başka herhangi bir tür bildirimine izin verilir.

> Bilginize:

> Tanıtılan özellikler, hem özellik hem de işlev bağımsız değişkenlerinin yeniden yorumlanmasını sağladığından, hem özellikler hem de bağımsız değişkenler için tüm adlandırma kısıtlamaları geçerlidir.

> Bilginize:

> Tanıtılan kurucu bağımsız değişkenlerine yerleştirilen öznitelikler, hem özelliğe hem de bağımsız değişkene atanır. Tanıtılan kurucu bağımsız değişkenindeki öntanımlı değerler, özelliğe değil, yalnızca bağımsız değişkene atanır.

#### İlkendiricilerde new kullanımı

PHP 8.1.0 ve sonrasında, nesneler öznitelik bağımsız değişkenlerinin yanısıra öntanımlı bağımsız değişkenler, statik bağımsız değişkenler ve küresel sabitler olarak kullanılabilmektedir. Buna ek olarak, nesneler define()'a da aktarılabilmektedir.

> Bilginize:

> Dinamik veya dizge olmayan bir sınıf adının veya anonim bir sınıfın kullanımına izin verilmez. Bağımsız değişken genişletmeye izin verilmez. Desteklenmeyen ifadelerin bağımsız değişken olarak kullanımına izin verilmez.

Örnek 4 Using new in initializers

    <?php

    // All allowed:
    static $x = new Foo;

    const C = new Foo;

    function test($param = new Foo) {}

    #[AnAttribute(new Foo)]
    class Test {
        public function __construct(
            public $prop = new Foo,
        ) {}
    }

    // Hiçbirine izin verilmez (derleme-anı hatası):
    function test(
        $a = new (CLASS_NAME_CONSTANT)(), // dinamik sınıf adı
        $b = new class {}, // anonim sınıf
        $c = new A(...[]), // bağımsız değişken genişletme
        $d = new B($abc), // desteklenmeyen sabit ifadesi
    ) {}
    ?>

#### Statik kurucu yöntemleri

PHP, sınıf başına yalnızca tek bir kurucuyu destekler. Bununla birlikte, bazı durumlarda, bir nesnenin farklı girdilere sahip farklı yollarla oluşturulabilmesi istenebilir. Bunu yapmanın önerilen yolu, kurucu sarmalayıcıları olarak statik yöntemler kullanmaktır.

Örnek 5 - Statik kurucu yöntemlerinin kullanımı

    <?php
    class Product {

        private ?int $id;
        private ?string $name;

        private function __construct(?int $id = null, ?string $name = null) {
            $this->id = $id;
            $this->name = $name;
        }

        public static function fromBasicData(int $id, string $name): static {
            $new = new static($id, $name);
            return $new;
        }

        public static function fromJson(string $json): static {
            $data = json_decode($json, true);
            return new static($data['id'], $data['name']);
        }

        public static function fromXml(string $xml): static {
            // Özelleştirmeler buraya.
            $data = convert_xml_to_array($xml);
            $new = new static();
            $new->id = $data['id'];
            $new->name = $data['name'];
            return $new;
        }
    }

    $p1 = Product::fromBasicData(5, 'Widget');
    $p2 = Product::fromJson($some_json_string);
    $p3 = Product::fromXml($some_xml_string);

Kurucu, haricen çağrılmasını önlemek için özel veya korumalı yapılabilir. Bu durumda, sınıfı yalnızca statik bir yöntem örnekleyebilir. Aynı sınıf tanımında olduklarından, aynı nesne örneğinde olmasa bile özel yöntemlere erişebilirler. Özel kurucu isteğe bağlıdır ve kullanım durumuna bağlı olarak anlamlı olabilir veya olmayabilir.

Nesneyi örneklemenin farklı yollarını göstermek için üç tür public static yöntem vardır.

- `fromBasicData()` gerekli bağımsız değişkenleri alıp kurucuyu çalıştırarak nesney oluşturur vesonucu döndürür.
- `fromJson()` bir JSON dizesi alıp bazı önişlemlerden geçirip kurucuya gereken biçime dönüştürür ve yeni nesneyi döndürür.
- `fromXml()` bir XML dizesi alıp önişemden geçirerek çıplak bir nesne oluşurur. Kurucu hala çağrılabilirse de bağımsız değişkenlerin tamamı seçimlik olduğundan yöntem bunları yoksayar. Sonucu döndürmeden önce değerleri doğrudan nesne özelliklerine atar.

Üç durumda da, `static` anahtar sözcüğü, kodun bulunduğu sınıfın adına çevrilir. Bu durumda, `Product`.

### Yıkıcılar

function __destruct(): void

PHP C++ gibi nesne yönelimli dillerdekine benzer bir yıkıcı tasarımına sahiptir. Yıkıcı yöntem, belli bir nesneye başka bir gönderim yoksa veya nesne kapanma sırasında açıkça yok edildiği anda çalıştırılacaktır.

Örnek 6 - Yıkıcı Örneği

    <?php
    class YıkıcıSınıf
    {
       function __construct()
       {
           print "Kurucu çalıştı\n";
       }

       function __destruct()
       {
           print "" . __CLASS__ . " yok ediliyor\n";
       }
    }

    $obj = new YıkıcıSınıf();
    ?>

Kurucularda olduğu gibi ebeveyn yıkıcılar çocuk sınıflar için dolaylı olarak çağrılmayacaktır. Ebeveyn sınıfın yıkıcısının çalışması için çocuk sınıfın yıkıcısından parent::__destruct() çağrısının yapılması gerekir. Ayrıca, kuruculardaki gibi, bir çocuk sınıf kendisininkini gerçeklemediyse ebeveyninin yıkıcısını miras alabilir.

Betiğin icrası exit() kullanılarak durdurulsa bile yıkıcı çağrılacaktır. exit() işlevinin bir yıkıcı içersinde çağrılması kalan kapanma yordamlarının icrasını engelleyecektir.

> Bilginize:

> Yıkıcılar, HTTP başlıklarının gönderilmiş olmasını sağlamak için betik sonlanırken çağrılırlar. Betiğin kapanma aşamasındaki çalışma dizini bazı SAPI’lerde (Apache gibi) farklı olabilir.

> Bilginize:

> Bir yıkıcı içinden bir istisna oluşturmaya çalışmak (betiğin sonlandırılması sırasında) ölümcül hata ile sonuçlanır.

## Görünürlük

Bir özelliğin ya da bir yöntemin (PHP 7.1.0 ve sonrası) görünürlüğü, bildirim sırasında önüne şu anahtar sözcüklerden biri getirilerek belirlenebilir: `public`, `protected` ya da `private`. public olarak bildirilmiş özelliklere ve yöntemlere her yerden erişilebilir. protected bildirimli özelliklere ve yöntemlere sadece tanımlandığı sınıfdan, ebeveyn sınıflardan ve miras alınarak private bildirimli özelliklere ve yöntemlere ise sadece özelliğin tanımlandığı sınıfın içinden erişilebilir.

### Özelliklerin Görünürlüğü

Sınıf özellikleri `public`, `protected` ya da `private` olarak tanımlanabilir. Görünürlük belirtilmeden bildirilen özelliklerin görünürlüğünün `public` olduğu varsayılır.

Örnek 1 - Özellik bildirimi

    <?php
    /**
     * Sınıfım tanımı
     */
    class Sınıfım
    {
        public $genel = 'Genel';
        protected $korumalı = 'Korumalı';
        private $özel = 'Özel';

        function selamVer()
        {
            echo $this->genel;
            echo $this->korumalı;
            echo $this->özel;
        }
    }

    $nesne = new Sınıfım();
    echo $nesne->genel;    // Çalışır
    echo $nesne->korumalı; // Ölümcül Hata
    echo $nesne->özel;     // Ölümcül Hata
    $nesne->selamVer();    // Genel, Korumalı ve Özel görüntüler

    /**
     * ÖbürSınıfım tanımı
     */
    class ÖbürSınıfım extends Sınıfım
    {
        // public ve protected özellikleri yeniden tanımlayabiliriz,
        // ancak private olanlar tanımlanamaz
        public $genel = 'Genel2';
        protected $korumalı = 'Öbür korumalı';

        function selamVer()
        {
            echo $this->genel;
            echo $this->korumalı;
            echo $this->özel;
        }
    }

    $nesne2 = new ÖbürSınıfım();
    echo $nesne2->genel;    // Çalışır
    echo $nesne2->korumalı; // Ölümcül Hata
    echo $nesne2->özel;     // Tanımsız

    $nesne2->selamVer();    // Genel2, Öbür korumalı ve Undefined görüntülenir

    ?>

#### Bakışımsız Özellik Görünürlüğü

PHP 8.4'ten itibaren, özelliklerin görünürlükleri bakışımsız olarak ayarlanabilir, okuma (`get`) ve yazma (`set`) için farklı kapsamlar olabilir. Özellikle, `set` görünürlüğü, öntanımlı görünürlükten daha izin verici olmadığı sürece ayrı olarak belirtilebilir.

Örnek 2 - Bakışımsız Özellik Görünürlüğü

    <?php
    class Book
    {
        public function __construct(
            public private(set) string $title,
            public protected(set) string $author,
            protected private(set) int $pubYear,
        ) {}
    }

    class SpecialBook extends Book
    {
        public function update(string $author, int $year): void
        {
            $this->author = $author; // OK
            $this->pubYear = $year; // Onulmaz Hata
        }
    }

    $b = new Book('How to PHP', 'Peter H. Peterson', 2024);

    echo $b->title; // Çalışır
    echo $b->author; // Çalışır
    echo $b->pubYear; // Onulmaz Hata

    $b->title = 'How not to PHP'; // Onulmaz Hata
    $b->author = 'Pedro H. Peterson'; // Onulmaz Hata
    $b->pubYear = 2023; // Onulmaz Hata
    ?>

Bakışımsız görünürlükle ilgili birkaç uyarı var:

- Yalnızca yazılan özelliklerin ayrı bir `set` görünürlüğü olabilir.
- `set` görünürlüğü `get` ile aynı veya daha kısıtlayıcı olmalıdır. Yani, `public protected(set)` ve `protected protected(set)` kullanımına izin verilir, ancak `protected public(set)` bir sözdizimi hatasına neden olur.
- Bir özellik `public` ise, ana görünürlük atlanabilir. Yani, `public private(set)` ve `private(set)` aynı sonucu verecektir.
- `private(set)` görünürlüğüne sahip bir özellik otomatik olarak `final` olur ve bir alt sınıfta yeniden bildirilemez.
- Bir özelliğe başvurulmasını sağlamak `set` görünürlüğünü takip eder, `get`'i değil.
- Benzer şekilde, bir dizi özelliğine yazmaya çalışmak hem dahili olarak `get` hem de `set` işlemini içerir ve bu nedenle her zaman daha kısıtlayıcı olan `set` görünürlüğünü takip eder.

Bir sınıf başka bir sınıfı genişlettiğinde, alt sınıf `final` olmayan herhangi bir özelliği yeniden tanımlayabilir. Bunu yaparken, yeni görünürlük ana sınıfla aynı veya ondan daha geniş olduğu sürece, ana görünürlüğü veya `set` görünürlüğünü genişletebilir. Ancak, bir `private` özelliği geçersiz kılınırsa, aslında ana sınıfın özelliğinin değiştirilmediği, ancak farklı bir dahili isme sahip yeni bir özellik oluşturduğu unutulmamalıdır.

Örnek 3 - Bakışımsız Özellik Kalıtımı

    <?php
    class Book
    {
        protected string $title;
        public protected(set) string $author;
        protected private(set) int $pubYear;
    }

    class SpecialBook extends Book
    {
        public protected(set) $title; // OK, çünkü okumak daha geniş, yazmak ise aynı.
        public string $author; // OK, çünkü okumak aynı, yazmak ise daha geniş.
        public protected(set) int $pubYear; // Onulmaz hata. private(set) özellikler finaldir.
    }
    ?>

### Yöntem Görünürlüğü

Sınıf yöntemleri `public`, `protected` ya da `private` olarak tanımlanmalıdır. Bunlardan herhangi biri kullanılmadan yapılmış yöntem tanımlarının `public` kullanılarak yapıldığı varsayılır.

Örnek 4 - Yöntem bildirimi

    <?php
    /**
     * Sınıfım tanımı
     */
    class Sınıfım
    {
        // public kurucu bildirimi
        public function __construct() { }

        // public yöntem bildirimi
        public function Genel() { }

        // protected yöntem bildirimi
        protected function Korumalı() { }

        // private yöntem bildirimi
        private function Özel() { }

        // Bu da public bir yöntem
        function Falanca()
        {
            $this->Genel();
            $this->Korumalı();
            $this->Özel();
        }
    }

    $sınıfım = new Sınıfım;
    $sınıfım->Genel();    // Çalışır
    $sınıfım->Korumalı(); // Ölümcül Hata
    $sınıfım->Özel();     // Ölümcül Hata
    $sınıfım->Falanca();  // Public, Protected ve Private çalışır

    /**
     * ÖbürSınıfım tanımı
     */
    class ÖbürSınıfım extends Sınıfım
    {
        // Bu public bir yöntemdir
        function Filanca()
        {
            $this->Genel();
            $this->Korumalı();
            $this->Özel();  // Ölümcül Hata
        }
    }

    $öbürSınıfım = new Sınıfım;
    $öbürSınıfım->Genel();   // Çalışır
    $öbürSınıfım->Filanca(); // Genel ve Korumalı çalışır, Özel çalışmaz

    class Bar
    {
        public function dnm() {
            $this->dnmÖzel();
            $this->dnmGenel();
        }

        public function dnmGenel() {
            echo "Bar::dnmGenel\n";
        }

        private function dnmÖzel() {
            echo "Bar::dnmÖzel\n";
        }
    }

    class Foo extends Bar
    {
        public function dnmGenel() {
            echo "Foo::dnmGenel\n";
        }

        private function dnmÖzel() {
            echo "Foo::dnmÖzel\n";
        }
    }

    $fo = new Foo();
    $fo->dnm();  // Bar::dnmÖzel
                 // Foo::dnmGenel

    ?>

### Sabit Görünürlüğü

PHP 7.1.0 ve sonrasında, sınıf sabitleri public, private veya protected olarak tanımlanabilir. Bu sözcükler olmaksızın tanımlanmış sabitlerin public olarak tanımlandıkları varsayılır.

Örnek 5 - PHP 7.1.0 ve sonrasında sabit bildirimleri

    <?php
    /**
     * Tanımla: MyClass
     */
    class MyClass
    {
        // public sabit bildirimi
        public const MY_PUBLIC = 'genel';

        // protected  sabit bildirimi
        protected const MY_PROTECTED = 'korumalı';

        // private  sabit bildirimi
        private const MY_PRIVATE = 'özel';

        public function foo()
        {
            echo self::MY_PUBLIC;
            echo self::MY_PROTECTED;
            echo self::MY_PRIVATE;
        }
    }

    $myclass = new MyClass();
    MyClass::MY_PUBLIC; // Çalışır
    MyClass::MY_PROTECTED; // Ölümcül hata
    MyClass::MY_PRIVATE; // Ölümcül hata
    $myclass->foo(); // genel, korumalı ve özel çalışır

    /**
     * Tanımla: MyClass2
     */
    class MyClass2 extends MyClass
    {
        // public
        function foo2()
        {
            echo self::MY_PUBLIC;
            echo self::MY_PROTECTED;
            echo self::MY_PRIVATE; // Ölümcül hata
        }
    }

    $myclass2 = new MyClass2;
    echo MyClass2::MY_PUBLIC; // Çalışır
    $myclass2->foo2(); // genel ve korumalı çalışır, özel çalışmaz
    ?>

### Diğer nesnelerden görünürlük

Aynı türdeki nesneler, aynı örnekler olmasalar bile, diğerlerinin özel ve korunan üyelerine erişime sahip olacaktır. Bunun sebebi, gerçeklenime özgü ayrıntıların bu nesnelerin içindeyken zaten biliniyor olmasıdır.

Örnek 6 - Aynı nesne türündeki özel üyelere erişim

    <?php
    class Test
    {
        private $foo;

        public function __construct($foo)
        {
            $this->foo = $foo;
        }

        private function bar()
        {
            echo 'Private yönteme erişildi.';
        }

        public function baz(Test $other)
        {
            // private özelliği değiştirilebilir:
            $other->foo = 'hello';
            var_dump($other->foo);

            // private yöntemi de çağırılabilir:
            $other->bar();
        }
    }

    $test = new Test('test');

    $test->baz(new Test('other'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(5) "hello"
    Private yönteme erişildi.

## Nesnelerin Kalıtımı

Kalıtım iyi kurgulanmış bir programlama prensibidir ve PHP bu prensibi kendi nesne modelinde kullanır. Bu prensip çoğu sınıf ve nesnenin bir diğeri ile ilişkisini düzenler.

Örneğin, bir sınıf (`extend` ile) genişletildiğinde alt sınıf üst sınıftaki genel ve korunmuş yöntemlerin tümünü miras alır. Bir sınıf bu yöntemleri aynı isimdeki yöntemlerle geçersizleştirmedikçe bunlar özgün işlevselliklerini korur.

Bu, işlevselliği tanımlamak ve soyutlamak için ve paylaşılan işlevselliğin tamamını yeni baştan gerçeklemeksizin benzer nesnelerde ek işlevsellikleri gerçeklemek için kullanışlıdır.

Bir ebeveyn sınıfın private yöntemlerine bir çocuk sınıftan erişilemez. Sonuç olarak, normal miras alma kurallarına aldırmadan çocuk sınıfların bu private yöntemleri yeniden gerçeklemesi gerekebilir. PHP 8.0.0 öncesinde, private yöntemlere bunun yanında `final` ve `static` sınırlamaları da uygulanırdı. PHP 8.0.0 ve sonrasında zorunlu olan tek private yöntem kısıtlaması, `private final` kuruculardır, çünkü bu, yerleşik statik yöntemleri kullanırken kurucuyu "devre dışı" bırakmanın yaygın bir yoludur.

Yöntemlerin, özelliklerin ve sabitlerin görünürlüğü gevşetilebilir, örn. `protected` bir yöntem `public` olarak imlenebilir; ancak sınırlandırılamaz, örneğin bir `public` özellik, `private` olarak imlenebilir. Görünürlüğü kısıtlanabilen kurucular istisnadır, örn. bir `public` kurucu, bir çocuk sınıfta `private` olarak imlenebilir.

> Bilginize:

> Otomatik yükleme kullanılmadıkça, sınıflar kullanılmadan önce tanımlanmalıdır. Eğer bir sınıf diğerini genişletiyorsa ebeveyn sınıf çocuk sınıfın yapısı kurulmadan önce bildirilmiş olmalıdır. Bu kural diğer sınıfları ve arayüzleri miras alan tüm sınıflara uygulanır.

> Bilginize:

> Okunup yazılabilir bir özellik salt-okunur özellik vb. ile geçersiz kılınamaz.

>     <?php

>     class A {
>         public int $prop;
>     }
>     class B extends A {
>         // Geçersiz: oku-yaz özellik salt-okunur yapılamaz
>         public readonly int $prop;
>     }
>     ?>

Örnek 1 Inheritance Example

    <?php

    class Foo
    {
        public function printItem($string)
        {
            echo 'Foo: ' . $string . PHP_EOL;
        }

        public function printPHP()
        {
            echo 'PHP is great.' . PHP_EOL;
        }
    }

    class Bar extends Foo
    {
        public function printItem($string)
        {
            echo 'Bar: ' . $string . PHP_EOL;
        }
    }

    $foo = new Foo();
    $bar = new Bar();
    $foo->printItem('baz'); // Çıktısı: 'Foo: baz'
    $foo->printPHP();       // Çıktısı: 'PHP is great'
    $bar->printItem('baz'); // Çıktısı: 'Bar: baz'
    $bar->printPHP();       // Çıktısı: 'PHP is great'

    ?>

### Dahili Sınıflar ve Dönüş Türü Uyumluluğu

PHP 8.1 öncesinde, dahili sınıfların vaya yöntemlerin çoğunda dönüş türü bildirimi yoktu ve bunları genişletirken dönüş türüne izin veriliyordu.

PHP 8.1.0 ve sonrasında, çoğu dahili yöntem dönüş türlerini "geçici olarak" bildirmeye başladı, bu durumda yöntemin dönüş türü, genişletilen ebeveyn ile uyumlu olmalıdır; aksi takdirde, bir kullanımdan kaldırma bildirimi çıktılanır. Açık bir dönüş türü bildiriminin olmayışı, ayrıca yapısal bir uyuşmazlık olarak kabul edilmekte ve dolayısıyla kullanımdan kaldırma bildirimiyle sonuçlanmaktadır.

PHP'nin sürümler arası uyumluluk endişeleri nedeniyle geçersiz kılma yöntemi için dönüş türü bildirilemezse, kullanımdan kaldırma bildirimini sessizleştirmek için ReturnTypeWillChange özniteliği eklenebilir.

Örnek 2 - Dönüş türünü bildirmeyen geçersiz kılma yöntemi

    <?php
    class MyDateTime extends DateTime
    {
        public function modify(string $modifier) { return false; }
    }

    // "Deprecated: Return type of MyDateTime::modify(string $modifier) should either be compatible with DateTime::modify(string $modifier): DateTime|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice" as of PHP 8.1.0
    // Kullanımı önerilmiyor: MyDateTime::modify(string $modifier) için dönüş türü ya  DateTime::modify(string $modifier): DateTime|false ile uymlu olmalı ya da PHP 8.1.0 ve sonrasında uyarıyı susturmak için #[\ReturnTypeWillChange] özniteliği kullanılmış olmalıdır.
    ?>

Örnek 3 - Yanlış dönüş türü bildiren geçersiz kılma yöntemi

    <?php
    class MyDateTime extends DateTime
    {
        public function modify(string $modifier): ?DateTime { return null; }
    }

    // "Deprecated: Return type of MyDateTime::modify(string $modifier): ?DateTime should either be compatible with DateTime::modify(string $modifier): DateTime|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice" as of PHP 8.1.0
    // Kullanımı önerilmiyor: MyDateTime::modify(string $modifier): ?DateTime için dönüş türü ya DateTime::modify(string $modifier): DateTime|false ile uymlu olmalı ya da PHP 8.1.0 ve sonrasında uyarıyı susturmak için #[\ReturnTypeWillChange] özniteliği kullanılmış olmalıdır.
    ?>

Örnek 4 - Yanlış dönüş türü bildiren ama kullanımı önerilmiyor uyarısı vermeyen geçersiz kılma yöntemi

    <?php
    class MyDateTime extends DateTime
    {
        /**
         * @return DateTime|false
         */
        #[\ReturnTypeWillChange]
        public function modify(string $modifier) { return false; }
    }

    // Bir uyarı tetiklenmez
    ?>

## Etki Alanı Çözünürlük İşleci (::)

Etki Alanı Çözünürlük İşleci (Paamayim Nekudotayim de denirmiş), basitçe bir çift iki nokta iminden ibaret olup (buna "iki nokta çifti" de denebilir), bir sınıfın veya ebeveyninin statik, sabit özellik veya static yöntemine erişilebilmesini sağlayan bir simgedir. Ayrıca, statik özellik ve yöntemler statik içselleştirim aracılığıyla geçersiz kılınabilir.

Bu öğelere sınıf tanımının dışından erişirken bu işlecin solunda sınıfın ismini kullanın.

Bu işlecin solunda sınıf ismi yerine bir değişken kullanmak da mümkündür. Değişken ismi, (`self`, `parent`, `static` gibi) bir anahtar sözcük olmamalıdır.

Paamayim Nekudotayim ilk bakışta iki nokta üst üste için garip bir adlandırma gibi gözükebilir. Ancak, Zend Engine 0.5 (php 3'ün kalbidir) yazıldığı esnada Zend ekibinin kullanmak istediği terim bu oldu. Esasında bu iki sözcük de iki nokta çifti anlamına gelmektedir - İbranice'de!

Örnek 1 - Sınıf tanımı dışında ::

    <?php
    class Sınıfım {
        const SABİT_DEĞER = 'Bir sabit değer';
    }

    echo Sınıfım::SABİT_DEĞER;
    ?>

Bir sınıfın özellik ve yöntemlerine bu işleç sayesinde sınıfın içinden erişilmek istendiğinde işlecin solunda self, parent veya static anahtar sözcüğü kullanılır.

Örnek 2 - Sınıf tanımı içinde ::

    <?php
    class BaşkaSınıf extends Sınıfım
    {
        public static $statik = 'Bir statik değişken';

        public static function ikiNoktaÇifti() {
            echo parent::SABİT_DEĞER . "\n";
            echo self::$statik . "\n";
        }
    }

    $sınıfadı = 'BaşkaSınıf';
    $sınıfadı::ikiNoktaÇifti();

    BaşkaSınıf::ikiNoktaÇifti();
    ?>

Çocuk sınıf ebeveyninin yöntem tanımlarından bazılarını geçersiz kılarsa PHP bu yöntemlerin ebeveyn tanımlarına çağrı yapmaz. Ebeveynin yönteminin çağrılıp çağrılmayacağı çocuk sınıfın inisiyatifindedir. Bu durum aynı zamanda Kurucular ve Yıkıcılar, Aşırı Yükleme ve Sihirli yöntem tanımları için de geçerlidir.

Örnek 3 - Ebeveynin yöntemini çağırmak

    <?php
    class Sınıfım
    {
        protected function işlevim() {
            echo "Sınıfım::işlevim()\n";
        }
    }

    class BaşkaSınıf extends Sınıfım
    {
        // Ebeveynin tanımını geçersiz kılalım
        public function işlevim()
        {
            // Ama hala ebeveynin işlevini çağırabiliriz
            parent::işlevim();
            echo "BaşkaSınıf::işlevim()\n";
        }
    }

    $class = new BaşkaSınıf();
    $class->işlevim();
    ?>

Ayrıca, statik çağrı hilesi örneklerine de bakınız.

## `static` Anahtar Sözcüğü

İpucu

Bu sayfada statik yöntem ve özellikleri tanımlamak için `static` anahtar sözcüğünün kullanımı açıklanmıştır. `static` ayrıca, statik değişkenler ile statik isimsiz işlevlerin tanımlanması ve statik içselleştirim için de kullanılır. `static` anahtar sözcüğünün anlamları hakkında bilgi edinmek için bu sayfalara bakılabilir.

Sınıf özelliklerinin ya da yöntemlerinin `static` olarak tanımlanması, o özelliklerin ve yöntemlerin sınıf örneğinin oluşturulmasına gerek kalmadan erişilebilir olmalarını sağlar.

### Statik Yöntemler

Statik yöntemlerin, nesnenin bir örneği oluşturulmadan erişilebilir olmalarından dolayı, $this sözde değişkeni, `static` olarak bildirilmiş yöntemlerin içinde kullanılamaz.

Uyarı

Statik olmayan yöntemlerin statik olarak çağrılması bir Error yavrulanmasına sebep olur.

PHP 8.0.0 öncesinde ise, statik olmayan yöntemlerin statik olarak çağrılması önerilmemekte ve bir `E_DEPRECATED` uyarısı üretmekteydi.

Örnek 1 - Statik yöntem örneği

    <?php
    class Foo {
        public static function statikYöntem() {
            // ...
        }
    }

    Foo::statikYöntem();
    $classname = 'Foo';
    $classname::statikYöntem();
    ?>

### Statik Özellikler

Statik özelliklere, nesne üzerinden ok işleci (->) kullanılarak değil, Etki Alanı Çözünürlük İşleci (::) (`::`) kullanılarak erişilebilir.

Diğer statik değişkenlerde olduğu gibi statik özellikler `const` ifadeleri için geçerli kurallarla ilklendirilebilir: Bazı sınırlı ifadeler mümkündür, bunlar derleme sırasında değerlendirilir.

Bir sınıfa bir değişken kullanarak gönderim yapılabilir. Böyle bir değişkenin değeri `self`, `parent` veya `static` gibi bir anahtar sözcük olamaz.

Örnek 2 - Statik özellik örneği

    <?php
    class Falanca
    {
        public static $statik = 'falanca';

        public function statikDeğer() {
            return self::$statik;
        }
    }

    class Feşmekan extends Falanca
    {
        public function falancaStatik() {
            return parent::$statik;
        }
    }

    print Falanca::$statik . "\n";

    $falanca = new Falanca();
    print $falanca->statikDeğer() . "\n";
    print $falanca->statik . "\n";      // Tanımsız "Özellik" statik

    print $falanca::$statik . "\n";
    $sınıfadı = 'Falanca';
    print $sınıfadı::$statik . "\n";

    print Feşmekan::$statik . "\n";
    $feşmekan = new Feşmekan();
    print $feşmekan->falancaStatik() . "\n";
    ?>

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

    falanca
    falanca

    Notice: Accessing static property Falanca::$statik as non static in /in/V0Rvv on line 23

    Warning: Undefined property: Falanca::$statik in /in/V0Rvv on line 23

    falanca
    falanca
    falanca
    falanca

## Sınıf Soyutlama

PHP soyut sınıf ve yöntemlerin kullanımını mümkün kılmıştır. Soyut olarak tanımlanmış bir sınıf örneklenemez ve en az bir soyut yöntem içeren bir sınıf da soyut olmalıdır. Soyut olarak tanımlanmış yöntemler o yöntemlerin imzasıdırlar, gerçeklemenin bütününü temsil edemezler.

Soyut bir sınıftan kalıtsal özellikler devralınırken, ebeveyn sınıf bildiriminde soyut olarak bildirilmiş tüm yöntemlerin çocuk sınıf tarafından da tanımlanmasına ek olarak, kalıtım ve bağımsız değişken yerlerinin uyumluluğu kurallarına da uyması gerekir.

Örnek 1 - Soyut sınıf örneği

    <?php
    abstract class SoyutSınıf
    {
        // Genişletilen sınıfı bu yöntemi tanımlamaya zorla
        abstract protected function değeriAl();
        abstract protected function önekDeğeri($önek);

        // Ortak yöntem
        public function yazdır() {
            print $this->değeriAl() . "\n";
        }
    }

    class SomutSınıf1 extends SoyutSınıf
    {
        protected function değeriAl() {
            return "SomutSınıf1";
        }

        public function önekDeğeri($önek) {
            return "{$önek}SomutSınıf1";
        }
    }

    class SomutSınıf2 extends SoyutSınıf
    {
        public function değeriAl() {
            return "SomutSınıf2";
        }

        public function önekDeğeri($önek) {
            return "{$önek}SomutSınıf2";
        }
    }

    $class1 = new SomutSınıf1;
    $class1->yazdır();
    echo $class1->önekDeğeri('FOO_') ."\n";

    $class2 = new SomutSınıf2;
    $class2->yazdır();
    echo $class2->önekDeğeri('FOO_') ."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    SomutSınıf1
    FOO_SomutSınıf1
    SomutSınıf2
    FOO_SomutSınıf2

Örnek 2 -Soyut sınıf örneği

    <?php
    abstract class AbstractClass
    {
        // Soyut sınıfımız sadece gerekli bağımsız değişkenleri tanımlamalı
        abstract protected function prefixName($name);

    }

    class ConcreteClass extends AbstractClass
    {

        // Çocuk sınıfımız seçimlik bağımsız değişkenleri tanımlamalı
        // ebeveynin imzasındakileri değil
        public function prefixName($name, $separator = ".") {
            if ($name == "Pacman") {
                $prefix = "Mr";
            } elseif ($name == "Pacwoman") {
                $prefix = "Mrs";
            } else {
                $prefix = "";
            }
            return "{$prefix}{$separator} {$name}";
        }
    }

    $class = new ConcreteClass;
    echo $class->prefixName("Pacman"), "\n";
    echo $class->prefixName("Pacwoman"), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Mr. Pacman
    Mrs. Pacwoman

## Nesne Arayüzleri

Nesne arayüzleri, bir sınıfın gerçeklemesi gereken yöntemlerin belirtildiği kodu, bu yöntemlerin nasıl gerçekleneceğini tanımlamaksızın oluşturmanıza imkan sağlar. Arayüzler, sınıflar ve niteliklerle aynı isim alanını paylaşır, bu nedenle aynı adı kullanmayabilirler.

Arayüzler, sınıflardan farklı olarak `class` yerine `interface` anahtar sözcüğü kullanılarak ve içeriğinde hiçbir tanımlı yöntem olmaksızın tanımlanırlar.

Bir arayüzdeki tüm yöntemler, arayüzün doğası gereği `public` olarak bildirilmelidir.

Uygulamada, arayüzler birbirlerini tamamlayan iki amaca hizmet eder::

- Geliştiricilerin, aynı arayüzü veya arayüzleri gerçekledikleri için birbirlerinin yerine kullanılabilecek farklı sınıflardan nesneler oluşturabilmelerini sağlamak. Böylece, kullanıldıkları kodda herhangi bir değişiklik yapılmasına gerek kalmadan bu farklı gerçeklenimler arasında geçiş yapılabilir. Yaygın bir örnek, çoklu veritabanı erişim hizmetleri, çoklu ödeme ağ geçitleri veya farklı önbelleğe alma stratejileridir.
- Nesnenin başka ne yapabileceğini veya nasıl uygulandığını umursamadan, bir işlev veya yöntemin arayüze uyan bir bağımsız değişkeni kabul etmesini ve üzerinde çalışmasını sağlamak. Bu arayüzler, davranışın önemini açıklamak için genellikle `Iterable` (Yinelenebilir), `Cacheable` (Önbelleğe Alınabilir), `Renderable` (Yorumlanabilir) vb. şeklinde adlandırılır.

Arayüzler, bu yöntemleri gerçeklemek için sınıfların gerçeklenmesini gerektiren sihirli yöntemler tanımlayabilir.

> Bilginize:

> Destekleniyor olsa bile, arayüzlere kurucuların dahil edilmesi kesinlikle önerilmez. Bunu yapmak, arayüzü gerçekleyen nesnenin esnekliğini önemli ölçüde azaltır. Ek olarak, kurucular, tutarsız ve beklenmeyen davranışlara neden olabilecek miras alma kuralları tarafından zorlanmaz.

### `implements` işleci

Bir arayüzü gerçeklemek için, `implements` işleci kullanılır. Arayüzdeki tüm yöntemler bir sınıf içersinde gerçeklenmelidir; aksi takdirde bir ölümcül hata alırsınız. Bir sınıfın, aralarına virgül koyarak birden fazla arayüzü gerçeklemesi sağlanabilir.

Uyarı

Bir arayüzü gerçekleyen bir sınıf, bağımsız değişkenleri için arayüzdekinden farklı bir ad kullanabilir. Bununla birlikte, PHP 8.0'dan itibaren dil, isimli bağımsız değişkenleri desteklemektedir, bu da çağrıcıların arayüzdeki bağımsız değişken adına güvenebileceği anlamına gelir. Bu nedenle, geliştiricilerin gerçeklenen arayüzle aynı bağımsız değişken adlarını kullanmaları şiddetle tavsiye edilir.

> Bilginize:

> Arayüzler, sınıflar gibi extends işleciyle genişletilebilir.

> Bilginize:

> Bir sınıf bir arayüzü gerçeklerken, bunu bağımsız değişken adı ve sırası arayüzle uyumlu yöntemler kullanarak yapmalıdır. Bir sınıf, aynı adlı yöntem bildiren birden çok arayüz gerçekleyebilir. Bu durumda gerçeklenim, tüm arayüzler için bağımsız değişken adı ve sırası uyumluk kurallarına uygun olmalıdır. Böylece, özgüllük uygulanabilir olur.

### Sabitler

Arayüzlerin sabitlerinin olması mümkündür. Arayüz sabitleri, tıpkı sınıf sabitleri gibi çalışır. PHP 8.1.0 öncesinde, kendilerini miras alan sınıflar veya arayüzler tarafından geçersiz kılınamazlardı.

### Örnekler

Örnek 1 - Arayüz örneği

    <?php
    // 'Template' arayüzünü tanımlayalım
    interface Template
    {
        public function setVariable($name, $var);
        public function getHtml($template);
    }

    // Arayüzü gerçekleyelim
    // Bu çalışacaktır
    class WorkingTemplate implements Template
    {
        private $vars = [];

        public function setVariable($name, $var)
        {
            $this->vars[$name] = $var;
        }

        public function getHtml($template)
        {
            foreach($this->vars as $name => $value) {
                $template = str_replace('{' . $name . '}', $value, $template);
            }

            return $template;
        }
    }

    // Bu çalışmayacaktır
    // Ölümcül hata: BadTemplate sınıfı 1 soyut yöntem içermektedir
    // dolayısıyla soyut olarak tanımlanması gerekir (Template::getHtml)
    class BadTemplate implements Template
    {
        private $vars = [];

        public function setVariable($name, $var)
        {
            $this->vars[$name] = $var;
        }
    }

    ?>

Örnek 2 - Genişletilebilir Arayüzler

    <?php
    interface A
    {
        public function foo();
    }

    interface B extends A
    {
        public function baz(Baz $baz);
    }

    // Bu çalışır
    class C implements B
    {
        public function foo()
        {
        }

        public function baz(Baz $baz)
        {
        }
    }

    // Bu çalışmaz, ölümcül hatayla sonuçlanır
    class D implements B
    {
        public function foo()
        {
        }

        public function baz(Foo $foo)
        {
        }
    }
    ?>

Örnek 3 - Çoklu arayüzlerle özgüllük uyumluluğu

    <?php
    class Foo {}
    class Bar extends Foo {}

    interface A {
        public function myfunc(Foo $arg): Foo;
    }

    interface B {
        public function myfunc(Bar $arg): Bar;
    }

    class MyClass implements A, B
    {
        public function myfunc(Foo $arg): Bar
        {
            return new Bar();
        }
    }
    ?>

Örnek 4 - Çok sayıda arayüz oluşturma

    <?php
    interface A
    {
        public function foo();
    }

    interface B
    {
        public function bar();
    }

    interface C extends A, B
    {
        public function baz();
    }

    class D implements C
    {
        public function foo()
        {
        }

        public function bar()
        {
        }

        public function baz()
        {
        }
    }
    ?>

Örnek 5 - Arayüzler ve sabitleri

    <?php
    interface A
    {
        const B = 'Arayüz sabiti';
    }

    // Şunu basar: Arayüz sabiti
    echo A::B;

    class B implements A
    {
        const B = 'Sınıf sabiti';
    }

    // Şunu basar: Sınıf sabiti
    // PHP 8.1.0 öncesinde, sabitler geçersiz kılınamadığından bu çalışmazdı.
    echo B::B;
    ?>

Örnek 6 - Soyut sınıflı arayüzler

    <?php
    interface A
    {
        public function foo(string $s): string;

        public function bar(int $i): int;
    }

    // Bir soyut sınıf bir arayüzün sadece bir bölümünü gerçekleyebilir.
    // Kalanını soyut sınıfı genişleten sınıflar gerçeklemelidir.
    abstract class B implements A
    {
        public function foo(string $s): string
        {
            return $s . PHP_EOL;
        }
    }

    class C extends B
    {
        public function bar(int $i): int
        {
            return $i * 2;
        }
    }
    ?>

Örnek 7 - Aynı anda genişletme ve gerçekleme

    <?php

    class One
    {
        /* ... */
    }

    interface Usable
    {
        /* ... */
    }

    interface Updatable
    {
        /* ... */
    }

    // Burada sözcük sırası önemli: 'extends' önce gelmeli.
    class Two extends One implements Usable, Updatable
    {
        /* ... */
    }
    ?>

Bir arayüz tür bildirimiyle belli bir nesnenin belli yöntemleri içermesini sağlayabilir. Ayrıca bakınız: instanceof işleci ve Tür Bildirimleri.

## Nitelikler

PHP tekrar tekrar kullanılabilen bir yöntem kodu olarak `trait` ismini kullanarak nitelikleri tanımlamıştır.

Nitelikler, PHP gibi tek kalıtımlı dillerde kodun yeniden kullanımını sağlayan bir mekanizmadır. Yöntem kümelerini farklı sınıf hiyerarşilerinde yaşayan birçok bağımsız sınıfın içinde özgürce yeniden kullanımını mümkün kılarak tek kalıtımlı dillerdeki bazı sınırlamaları azaltmak için tasarlanmıştır. Sınıfların ve niteliklerin birleşiminden doğan anlamlılık, karmaşıklığı azaltan ve çoklu kalıtım ve iç içeliklerle ilgili bilinen sorunlardan kaçınan bir yol izlenerek tanımlanmıştır.

Nitelikler sınıflara benzemekle birlikte işlevselliği gruplamak için daha bir ince elenip sık dokunarak tasarlanmıştır. Bir niteliği kendi içinde örneklemek mümkün değildir. Geleneksel kalıtıma bir ekleme olup yatay davranış düzenini, yani kalıtım gerekmeksizin sınıf üyesi olmayı mümkün kılar.

Örnek 1 - Nitelik örneği

    <?php
    trait ezcReflectionReturnInfo {
        function getReturnType() { /*1*/ }
        function getReturnDescription() { /*2*/ }
    }

    class ezcReflectionMethod extends ReflectionMethod {
        use ezcReflectionReturnInfo;
        /* ... */
    }

    class ezcReflectionFunction extends ReflectionFunction {
        use ezcReflectionReturnInfo;
        /* ... */
    }
    ?>

### Öncelik sırası

Bir nitelikle gelen bir üye, bir temel sınıftan miras alınan bir üyenin yerine geçerse onu geçersiz kılar; sınıfın kendi üyeleri de niteliğin yerine geçerse onu geçersiz kılar.

Örnek 2 - Öncelik sırası örneği

Temel sınıftan miras alınan yöntem, DünyaDe niteliğinden MerhabaDünyam içine yerleştirilen üye tarafından geçersizleştirilmektedir. MerhabaDünyam sınıfı içinde tanımlı yöntemler için de davranış aynıdır. Öncelik sırası şöyledir: Temel sınıftan alınan yöntemleri geçersizleştiren nitelikleri geçerli sınıfın yöntemleri geçersizleştirir.

    <?php
    class Temel {
        public function merhabaDe() {
            echo 'Merhaba ';
        }
    }

    trait DünyaDe {
        public function merhabaDe() {
            parent::merhabaDe();
            echo 'Dünya!';
        }
    }

    class MerhabaDünyam extends Temel {
        use DünyaDe;
    }

    $o = new MerhabaDünyam();
    $o->merhabaDe();
    ?>

Yukarıdaki örneğin çıktısı:

    Merhaba Dünya!

Örnek 3 - Bir diğer öncelik sırası örneği

    <?php
    trait MerhabaDünya {
        public function merhabaDe() {
            echo 'Merhaba Dünya!';
        }
    }

    class DünyaYetmez {
        use MerhabaDünya;
        public function merhabaDe() {
            echo 'Merhaba Evren!';
        }
    }

    $o = new DünyaYetmez();
    $o->merhabaDe();
    ?>

Yukarıdaki örneğin çıktısı:

    Merhaba Evren!

### Çoklu Nitelikler

Çok sayıda nitelik bir sınıfın içine `use` deyiminde virgüllerle ayrılarak yerleştirilebilir.

Örnek 4 - Çok sayıda niteliğin kullanımı

    <?php
    trait Merhaba {
        public function merhabaDe() {
            echo 'Merhaba ';
        }
    }

    trait Dünya {
        public function dünyaDe() {
            echo 'Dünya';
        }
    }

    class MerhabaDünyam {
        use Merhaba, Dünya;
        public function Bağır() {
            echo '!';
        }
    }

    $o = new MerhabaDünyam();
    $o->merhabaDe();
    $o->dünyaDe();
    $o->Bağır();
    ?>

Yukarıdaki örneğin çıktısı:

    Merhaba Dünya!

### Çelişki Çözümleme

Bir yönteme aynı isme sahip iki nitelik yerleştirilirse çelişki açıkça çözümlenmediği takdirde ölümcül bir hataya sebep olur.

Aynı sınıfta kullanılan nitelikler arasındaki adlandırma çakışmasını çözümlemek için `insteadof` işleci birini seçmek amacıyla kullanılabilir.

Bu işlem yöntemi dışlamayı sağladığından `as` işleci yönteme takma ad eklemek için kullanılabilir. `as` işlecinin yöntemin ismini değiştirmediğini ve diğer yöntemleri etkilemediğini unutmayın.

Örnek 5 - Çelişki çözümleme örneği

Bu örnekte, Talker A ve B niteliklerini kullanıyor. A ve B çakışan yöntemlere sahip olduğundan B niteliğinden smallTalk ve A niteliğinden bigTalk kullanılmaktadır.

Aliased_Talker ise B'nin bigTalk gerçeklenimini `talk` diye bir takma ad altında kullanmak için `as` işlecinden yararlanmaktadır.

    <?php
    trait A {
        public function smallTalk() {
            echo 'a';
        }
        public function bigTalk() {
            echo 'A';
        }
    }

    trait B {
        public function smallTalk() {
            echo 'b';
        }
        public function bigTalk() {
            echo 'B';
        }
    }

    class Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
        }
    }

    class Aliased_Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
            B::bigTalk as talk;
        }
    }
    ?>

### Yöntem Görünürlüğünü Değiştirme

Sergileyen sınıf içinde yöntemin görünürlüğünü ayarlamak için `as` sözdizimi kullanılabilir.

Örnek 6 - Yöntem görünürlüğünü değiştirme örneği

    <?php
    trait MerhabaDünya {
        public function merhabaDe() {
            echo 'Merhaba Dünya!';
        }
    }

    // merhabaDe görünürlüğünü değiştir
    class Sınıfım1 {
        use MerhabaDünya { merhabaDe as protected; }
    }

    // Görünürlüğü ve ismi değişmiş yöntem
    // merhabaDe görünürlüğü değişmedi
    class Sınıfım2 {
        use MerhabaDünya { merhabaDe as private özelMerhabam; }
    }
    ?>

### Niteliklerden oluşturulmuş Nitelikler

Sınıflarda olduğu gibi nitelikler de bir diğerinin içinde kullanılabilir. Birden fazla nitelik kısmen veya tamamen bir diğer niteliğin içinde kullanılabilir.

Örnek 7 - Niteliklerden nitelik oluşturma örneği

    <?php
    trait Merhaba {
        public function merhabaDe() {
            echo 'Merhaba ';
        }
    }

    trait Dünya {
        public function dünyaDe() {
            echo 'Dünya!';
        }
    }

    trait MerhabaDünya {
        use Merhaba, Dünya;
    }

    class MerhabaDünyam {
        use MerhabaDünya;
    }

    $o = new MerhabaDünyam();
    $o->merhabaDe();
    $o->dünyaDe();
    ?>

Yukarıdaki örneğin çıktısı:

    Merhaba Dünya!

### Soyut Nitelik Yöntemleri

Nitelikler, kullanılacakları sınıfa yüklenmelerini sağlamak amacıyla soyut yöntemlerin kullanımını destekler. Public, protected ve private yöntemler desteklenir. PHP 8.0.0 öncesinde, sadece public ve protected soyut yöntemler destekleniyordu.

Dikkat

PHP 8.0.0 ve sonrasında, somut sınıfın imza uyumluluk kurallarına uygun olması gerekir. Evvelce imzası farklı olabiliyordu.

Örnek 8 - Gereksinimlerin soyut yöntemlerle ifadesi

    <?php
    trait Merhaba {
        public function merhabaDünyaDe() {
            echo 'Merhaba'.$this->dünyaGetir();
        }
        abstract public function dünyaGetir();
    }

    class MerhabaDünyam {
        private $dünya;
        use Merhaba;
        public function dünyaGetir() {
            return $this->dünya;
        }
        public function dünyaAta($val) {
            $this->dünya = $val;
        }
    }
    ?>

### Statik Nitelik Yöntemleri

Nitelikler statik değişkenleri, statik yöntemleri ve statik özellikleri tanımlayabilir.

> Bilginize:

> PHP 8.1.0 itibariyle, bir nitelik üzerinde doğrudan statik bir özelliğe erişim veya statik yöntem çağrısı önerilmemektedir. Statik yöntem ve özelliklere sadece niteliği kullanan sınıftan erişilmelidir.

Örnek 9 - Statik Değişkenler

    <?php
    trait Sayaç {
        public function arttır() {
            static $c = 0;
            $c = $c + 1;
            echo "$c\n";
        }
    }

    class C1 {
        use Sayaç;
    }

    class C2 {
        use Sayaç;
    }

    $o = new C1(); $o->arttır(); // 1 basar
    $p = new C2(); $p->arttır(); // 1 basar
    ?>

Örnek 10 - Statik Yöntemler

    <?php
    trait StatikÖrnek {
        public static function bişeyYap() {
            return 'Bir şey yapıyorum';
        }
    }

    class Örnek {
        use StatikÖrnek;
    }

    Örnek::bişeyYap();
    ?>

Örnek 11 - Statik Özellikler

    <?php
    trait StatikÖrnek {
        public static $statik = 'foo';
    }

    class Örnek {
        use StatikÖrnek;
    }

    echo Örnek::$statik;
    ?>

### Özellikler

Nitelikler özellik tanımlayabilir.

Örnek 12 - Özellik tanımlama örneği

    <?php
    trait NitelikliÖzellik {
        public $x = 1;
    }

    class ÖzellikÖrneği {
        use NitelikliÖzellik;
    }

    $örnek = new ÖzellikÖrneği;
    örnek->x;
    ?>

Bir nitelik bir özellik tanımlarsa sınıf aynı isimde bir özelliği uyumlu (aynı görünürlük ve tür, salt okunur değiştirici ve ilk değer) olmadıkça tanımlayamaz, aksi takdirde ölümcül hata oluşur.

Örnek 13 - Çelişki yaratma örneği

    <?php
    trait ÖzellikliNitelik {
        public $aynı = true;
        public $farklı1 = false;
        public bool $farklı2;
        public bool $farklı3;
    }

    class ÖzellikliÖrnek {
        use ÖzellikliNitelik;
        public $aynı = true;
        public $farklı1 = true; // ölümcül hata
        public string $farklı2; // ölümcül hata
        readonly protected bool $farklı3; // ölümcül hata
    }
    ?>

### Sabitler

PHP 8.2.0 itibariyle nitelikler sabitleri de tanımlayabilmektedir.

Örnek 14 - Sabitlerin Tanımlanması

    <?php
    trait SabitliNitelik {
        public const FLAG_MUTABLE = 1;
        final public const FLAG_IMMUTABLE = 5;
    }

    class SabitliÖrnek {
        use SabitliNitelik;
    }

    $örnek = new SabitliÖrnek;
    echo $örnek::FLAG_MUTABLE; // 1
    ?>

Bir niteliğin tanımladığı sabiti bir sınıf uyumluluk kurallarına (aynı görünürlük, aynı ilk değer ve aynı sonuç) uymadan aynı isimle tekrar tanımlayamaz, aksi takdirde ölümcül hata oluşur.

Örnek 15 - Çelişki Çözümleme

    <?php
    trait SabitliNitelik {
        public const FLAG_MUTABLE = 1;
        final public const FLAG_IMMUTABLE = 5;
    }

    class SabitliÖrnek {
        use SabitliNitelik;
        public const FLAG_IMMUTABLE = 5; // Ölümcül hata
    }
    ?>

## Anonim Sınıflar

Anonim sınıflar basit, tek seferlik nesnelerin oluşturulması gerektiğinde kullanışlıdır.

    <?php

    // Örtük sınıf kullanarak
    class Logger
    {
        public function log($msg)
        {
            echo $msg;
        }
    }

    $util->setLogger(new Logger());

    // Anonim sınıf kullanarak
    $util->setLogger(new class {
        public function log($msg)
        {
            echo $msg;
        }
    });

Bağımsız değişkenlerini kurucularına iletebilir, diğer sınıfları genişletebilir, arayüzleri gerçekleyebilir ve normal bir sınıf gibi nitelikleri kullanabilirler:

    <?php

    class SomeClass {}
    interface SomeInterface {}
    trait SomeTrait {}

    var_dump(new class(10) extends SomeClass implements SomeInterface {
        private $num;

        public function __construct($num)
        {
            $this->num = $num;
        }

        use SomeTrait;
    });

Yukarıdaki örneğin çıktısı:

    object(class@anonymous)#1 (1) {
      ["Command line code0x104c5b612":"class@anonymous":private]=>
      int(10)
    }

Anonim bir sınıfı başka bir sınıfta yerleştirmek, herhangi bir özel veya korunan yönteme veya bu dış sınıfın özelliklerine erişim sağlamaz. Dış sınıfın korumalı özelliklerini veya yöntemlerini kullanabilmek için, anonim sınıf dış sınıfı genişletebilir. Dış sınıfın anonim sınıftaki özel özelliklerini kullanmak için kurucusundan geçirilmesi gerekir:

    <?php

    class Outer
    {
        private $prop = 1;
        protected $prop2 = 2;

        protected function func1()
        {
            return 3;
        }

        public function func2()
        {
            return new class($this->prop) extends Outer {
                private $prop3;

                public function __construct($prop)
                {
                    $this->prop3 = $prop;
                }

                public function func3()
                {
                    return $this->prop2 + $this->prop3 + $this->func1();
                }
            };
        }
    }

    echo (new Outer)->func2()->func3();

Yukarıdaki örneğin çıktısı:

    6

Aynı anonim sınıf bildirimiyle oluşturulan tüm nesneler, bu sınıfın örnekleridir.

    <?php
    function anonymous_class()
    {
        return new class {};
    }

    if (get_class(anonymous_class()) === get_class(anonymous_class())) {
        echo 'aynı sınıf';
    } else {
        echo 'farklı sınıf';
    }

Yukarıdaki örneğin çıktısı:

    aynı sınıf

> Bilginize:

> Aşağıdaki örnekte gösterildiği gibi, anonim sınıflara motor tarafından bir ad verildiğini unutmayın. Bu isim, güvenilmemesi gereken bir gerçekleme ayrıntısı olarak görülmelidir.

>     <?php
>     echo get_class(new class {});

> Yukarıdaki örnek şuna benzer bir çıktı üretir:

>     class@anonymous/in/oNi1A0x7f8636ad2021

## Aşırı Yükleme

PHP'deki aşırı yükleme, bir sınıfın özelliklerini ve yöntemlerini dinamik olarak oluşturmak anlamına gelmektedir. Bu dinamik öğeler, çeşitli eylem türleri için sınıf içinde oluşturulabilen sihirli yöntemler üzerinden işleme sokulurlar.

Aşırı yükleme yöntemleri, henüz bildirilmemiş veya geçerli etki alanında görünür olmayan özellik ve yöntemlerle etkileşilmek istendiğinde çağrılırlar. Bu bölümün kalanında bu bildirim ve görünürlükle ilgili durumdan bahsederken erişilemeyen özellikler ve erişilemeyen yöntemler terimlerini kullanacağız.

Tüm aşırı yükleme yöntemlerinin `public` olarak tanımlanması gerekir.

Bu sihirli yöntemlerin bağımsız değişkenlerinin hiçbiri gönderimli olarak aktarılamaz.

> Bilginize:

> PHP'nin aşırı yükleme konusundaki yorumu çoğu nesne yönelimli dilden farklıdır. Aşırı yükleme geleneksel olarak, dile, farklı miktar ve türde bağımsız değişkene sahip aynı isimde çok sayıda yönteme sahip olabilme yeteneği sağlar.

### Özelliklerde aşırı yükleme

public function __set(string `$isim`, mixed `$değer`): void
public function __get(string `$isim`): mixed
public function __isset(string `$isim`): bool
public function __unset(string `$isim`): void

__set() erişilemeyen (protected veya private) veya varolmayan özelliklere veri yazarken çalıştırılır.

__get() erişilemeyen (protected veya private) veya varolmayan özelliklerden veri okurken devreye sokulur.

__isset() erişilemeyen (protected veya private) veya varolmayan özellikler için isset() veya empty() çağrıldığında tetiklenir.

__unset() erişilemeyen (protected veya private) veya varolmayan özellikler için unset() kullanıldığında çağrılır.

$isim bağımsız değişkeni etkileşime girilecek özelliğin ismidir. __set() yönteminin $değer bağımsız değişkeni, $isim adlı özelliğe atanacak değeri belirler.

Özellikler üzerindeki aşırı yükleme sadece nesne bağlamında çalışır. Bu sihirli yöntemler statik bağlamda tetiklenmeyecektir. Bu bakımdan, bu yöntemler static bildirilmemelidir. Sihirli aşırı yükleme yöntemleri static bildirilirse bir uyarı çıktılar.

> Bilginize:

> PHP'nin atama işlecini ele alış yönteminden dolayı __set() yönteminin dönüş değeri yoksayılır. Benzer şekilde, ``

>      $a = $obj->b = 8;

> örneğindeki gibi zincirleme atamalarda __get() asla çağrılmaz.

> Bilginize:

> PHP aşırı yüklü bir yöntemi aynı aşırı yüklü yöntemin içinden çağırmaz. Yani, __get() içinde `return $this->foo` yazılırsa `null` dönecek ve __get() işlevini ikinci kez çağırmak yerine `foo` diye bir özellik tanımlı olmadığından bir `E_WARNING` tetiklenecektir. Ancak, aşırı yüklü yöntemler örtük olarak başka aşırı yüklü yöntemleri çağırabilir (__set()'i tetikleyen __get() gibi).

Örnek 1 - __get(), __set(), __isset() ve __unset() ile aşırı yükleme örneği

    <?php
    class ÖzellikSınama
    {
        /*  Aşırı yüklemeye konu veriler burada.  */
        private $veri = array();

        /*  Bildirilmiş özellikler için aşırı yükleme kullanılmaz.  */
        public $bildirilmiş = 1;

        /*  Aşırı yükleme sadece sınıf dışından erişilemeyen özellikler içindir.
         */
        private $gizli = 2;

        public function __set($isim, $değer)
        {
            echo "'$isim' adlı özelliğe '$değer' atanıyor.\n";
            $this->veri[$isim] = $değer;
        }

        public function __get($isim)
        {
            echo "'$isim' adlı özelliğin değeri isteniyor\n";
            if (array_key_exists($isim, $this->veri)) {
                return $this->veri[$isim];
            }

            $trace = debug_backtrace();
            trigger_error(
                $trace[0]['file'] . ' dosyasının ' .
                $trace[0]['line'] . '. satırında ' .
                '__get() ile tanımsız özellik istendi: ' . $isim,
                E_USER_NOTICE);
            return null;
        }

        /**  PHP 5.1.0'dan itibaren  */
        public function __isset($isim)
        {
            echo "'$isim' atanmış mı?\n";
            return isset($this->veri[$isim]);
        }

        /**  PHP 5.1.0'dan itibaren  */
        public function __unset($isim)
        {
            echo "'$name' siliniyor\n";
            unset($this->veri[$isim]);
        }

        /**  Sihirli bir yöntem değil; sadece örnek olsun diye.  */
        public function gizliyiOku()
        {
            return $this->gizli;
        }
    }

    echo "<pre>\n";

    $obj = new ÖzellikSınama;

    $obj->a = 1;
    echo $obj->a . "\n\n";

    var_dump(isset($obj->a));
    unset($obj->a);
    var_dump(isset($obj->a));
    echo "\n";

    echo $obj->bildirilmiş . "\n\n";

    echo "'gizli' isimli 'private' özellik ile bir deneme yapalım:\n";
    echo "'private' özellikler sadece sınıf içinde görünürdürler,\n";
    echo "bu yüzden __get() kullanılmaz...\n";
    echo $obj->gizliyiOku() . "\n";
    echo "'private' özellikler sınıf dışında görünür değildirler,\n";
    echo "dolayısıyla __get() kullanılır...\n";
    echo $obj->gizli . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    'a' adlı özelliğe '1' atanıyor.
    'a' adlı özelliğin değeri isteniyor
    1

    'a' atanmış mı?
    bool(true)
    '' siliniyor
    'a' atanmış mı?
    bool(false)

    1

    'gizli' isimli 'private' özellik ile bir deneme yapalım:
    'private' özellikler sadece sınıf içinde görünürdürler,
    bu yüzden __get() kullanılmaz...
    2
    'private' özellikler sınıf dışında görünür değildirler,
    dolayısıyla __get() kullanılır...
    'gizli' adlı özelliğin değeri isteniyor

    Notice: <dosya> dosyasının 71. satırında __get() ile tanımsız özellik istendi: gizli

### Yöntemlerde aşırı yükleme

public function __call(string `$isim`, array `$bağımsız_değişkenler`): mixed
public static function __callStatic(string `$isim`, array `$bağımsız_değişkenler`): mixed

__call(), erişilemeyen yöntemler bir nesne bağlamından çağrıldığında tetiklenir.

__callStatic(), erişilemeyen yöntemler statik bir bağlamdan çağrıldığında tetiklenir.

$isim bağımsız değişkeni çağrılan yöntemin ismidir. $bağımsız_değişkenler bağımsız değişkeni ise $isim adlı yönteme aktarılan bağımsız değişkenleri içeren numararalı bir dizidir.

Örnek 2 - __call() ve __callStatic() ile aşırı yüklü örneklenmiş yöntemler

    <?php
    class YöntemSınama
    {
        public function __call($isim, $bağımsız_değişkenler)
        {
            // Bilgi: $isim değeri büyük-küçük harfe duyarlıdır.
            echo "Nesnenin '$isim' yöntemi çağrılıyor: "
                 . implode(', ', $bağımsız_değişkenler). "\n";
        }

        public static function __callStatic($isim, $bağımsız_değişkenler)
        {
            // Bilgi: $isim değeri büyük-küçük harfe duyarlıdır.
            echo "Statik yöntem '$isim' çağrılıyor: "
                 . implode(', ', $bağımsız_değişkenler). "\n";
        }
    }

    $obj = new YöntemSınama;
    $obj->deneBakalım('nesne bağlamında');

    YöntemSınama::deneBakalım('statik bağlamda');
    ?>

Yukarıdaki örneğin çıktısı:

    Nesnenin 'deneBakalım' yöntemi çağrılıyor: nesne bağlamında
    Statik yöntem 'deneBakalım' çağrılıyor: statik bağlamda

## Nesne Yineleme

Tanımlanan nesneler, foreach gibi bir deyim kullanılarak bir öğe listesi üzerinden yinelenebilirler. Öntanımlı olarak, tüm görünür özellikler yineleme için kullanılacaktır.

Örnek 1 - Basit Nesne Yineleme

    <?php
    class MyClass
    {
        public $var1 = 'değer 1';
        public $var2 = 'değer 2';
        public $var3 = 'değer 3';

        protected $protected = 'protected var';
        private   $private   = 'private var';

        function iterateVisible() {
           echo "MyClass::iterateVisible:\n";
           foreach ($this as $key => $value) {
               print "$key => $value\n";
           }
        }
    }

    $class = new MyClass();

    foreach($class as $key => $value) {
        print "$key => $value\n";
    }
    echo "\n";

    $class->iterateVisible();

    ?>

Yukarıdaki örneğin çıktısı:

    var1 => değer 1
    var2 => değer 2
    var3 => değer 3

    MyClass::iterateVisible:
    var1 => değer 1
    var2 => değer 2
    var3 => değer 3
    protected => protected var
    private => private var

Çıktıdan görüleceği gibi, foreach erişilebilir olan tüm görünür özellikleri yineledi.

### Ayrıca Bakınız

- Üreteçler
- Iterator
- IteratorAggregate
- SPL Yineleyicileri

## Sihirli Yöntemler

Sihirli yöntemler, bir nesne üzerinde belirli eylemler gerçekleştirildiğinde PHP'nin öntanımlı eylemini geçersiz kılan özel yöntemlerdir.

Dikkat

`__` ile başlayan tüm yöntem isimleri PHP tarafından ayrılmıştır. Bu nedenle, PHP'nin davranışını geçersiz kılmadıkça bu tür yöntem adlarının kullanılması önerilmez.

Aşağıdakiler sihirli yöntem olarak ele alınır: __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __serialize(), __unserialize(), __toString(), __invoke(), __set_state(), __clone(), __debugInfo(), __clone() ve __debugInfo().

Uyarı

__construct(), __destruct() ve __clone() hariç tüm sihirli yöntemler mutlaka `public` olarak bildirilmelidir, aksi takdirde bir `E_WARNING` çıktılanır. PHP 8.0.0 öcesinde, __sleep(), __wakeup(), __serialize(), __unserialize() ve __set_state() sihirli yöntemleri için böyle bir uyarı yapılmazdı.

Uyarı

Bir sihirli yöntemin tanımında yapılan tür bildirimleri bu belgede açıklandığı gibi yapılmalıdır. Aksi takdirde, ölümcül hata çıktılanır. PHP 8.0.0 öncesinde hiçbir uyarı yapılmazdı. Bundan başka, __construct() ve __destruct() yöntemleri de bir dönüş türü bildirmemelidir, yoksa ölümcül hata oluşur.

### __sleep() ve __wakeup()

public function __sleep(): array
public function __wakeup(): void

serialize() işlevi, sınıfın __sleep() adında sihirli bir işleve sahip olup olmadığına bakar. Böyle bir işlev varsa herhangi bir dizileştirme işleminden önce bu işlev çalıştırılır. Bu işlev ile nesne üzerinde temizlik yapılabilir ve dizileştirilmesi gereken nesnenin tüm değişken isimlerinin bir dizi halinde döndürülmesi sağlanabilir. Eğer işlev hiçbir şey döndürmemişse `null` dizileştirilir ve bir `E_NOTICE` çıktılanır.

> Bilginize:

> Ebeveyn sınıflardaki private özelliklerin isimlerini döndürmek __sleep() için imkansızdır. Bu yapılırsa `E_NOTICE` seviyesinde bir hata iletisi çıktılanır. Bunun yerine Serializable arayüzünü kullanılabilir.

> Bilginize:

> PHP 8.0.0 ve sonrasında, __sleep() işlevinden dizi olmayan bir değerin döndürülmesi uyarı üretimine sebep olur. Evvelce, bildirim üretimine sebep oluyordu.

__sleep() işlevinin asıl kullanım amacı askıdaki veriyi göndermek gibi temizliğe benzer işlemler yapmaktır. Ayrıca, tümüyle kaydedilmesi gerekmeyen büyük bir nesne sözkonusu olduğunda da bu işlevden yararlanılabilir.

unserialize() işlevi tersine bir işlem yaparak __wakeup() adında bir sihirli işlevin varlığını araştırır. Böyle bir işlev varsa, bu işlev nesnenin sahip olduğu tüm özkaynakları yeniden oluşturabilir.

__wakeup() işlevinin asıl kullanım amacı, dizileştirme sırasında kaybedilebilen veritabanı bağlantılarını yeniden oluşturmak ve diğer ilklendirme işlemlerini yeniden yapmaktır.

Örnek 1 - Uyutma ve uyandırma

    <?php
    class Bağlantı
    {
        protected $hat;
        private $dsn, $kullanıcı, $parola, $db;

        public function __construct($dsn, $kullanıcı, $parola, $db)
        {
            $this->dsn = $dsn;
            $this->kullanıcı = $kullanıcı;
            $this->parola = $parola;
            $this->db = $db;
            $this->bağlan();
        }

        private function bağlan()
        {
            $this->hat = new PDO($this->dsn, $this->kullanıcı, $this->parola);
        }

        public function __sleep()
        {
           return array('dsn', 'kullanıcı', 'parola');
        }

        public function __wakeup()
        {
            $this->bağlan();
        }
    }?>

### __serialize() ve __unserialize()

public function __serialize(): array
public function __unserialize(array `$data`): void

serialize() işlevi, sınıfın __serialize() sihirli adına sahip bir işlevinin olup olmadığına bakar. Varsa, bu işlev herhangi bir dizileştirmeden önce çalıştırılır. Nesnenin dizileştirilmiş biçimini temsil eden ilişkisel bir anahtar/değer çiftleri dizisi oluşturmalı ve döndürmelidir. Hiçbir dizi döndürülmezse, bir TypeError yavrulanır.

> Bilginize:

> Aynı nesnede hem __serialize() hem de __sleep() tanımlanmışsa, sadece __serialize() çağrılır. __sleep() ise yok sayılır. Nesne Serializable arayüzünü gerçekliyorsa, arayüzün `serialize()` yöntemi yok sayılır ve yerine __serialize() kullanılır.

__serialize() yönteminin amaçlanan kullanımı, nesnenin dizileştirmeye uygun keyfi bir gösterimini tanımlamaktır. Dizinin öğeleri, nesnenin özelliklerine karşılık gelebilir, ancak bu gerekli değildir.

unserialize() işlevi ise tersine sınıfın __unserialize() sihirli adına sahip bir işlevinin olup olmadığına bakar. Varsa, bu işlev __serialize() işlevinden döndürülen geri yüklenmiş diziye aktarılır. Daha sonra nesnenin özelliklerini uygun şekilde bu diziden geri yükleyebilir.

> Bilginize:

> Aynı nesnede hem __unserialize() hem de __wakeup() tanımlanmışsa, yalnızca __unserialize() çağrılır. __wakeup() ise yok sayılır.

> Bilginize:

> Özellik PHP 7.4.0'dan beri kullanılabilmektedir.

Örnek 2 - Dizileştirme ve Nesneleştirme

    <?php
    class Connection
    {
        protected $link;
        private $dsn, $username, $password;

        public function __construct($dsn, $username, $password)
        {
            $this->dsn = $dsn;
            $this->username = $username;
            $this->password = $password;
            $this->connect();
        }

        private function connect()
        {
            $this->link = new PDO($this->dsn, $this->username, $this->password);
        }

        public function __serialize(): array
        {
            return [
              'dsn' => $this->dsn,
              'user' => $this->username,
              'pass' => $this->password,
            ];
        }

        public function __unserialize(array $data): void
        {
            $this->dsn = $data['dsn'];
            $this->username = $data['user'];
            $this->password = $data['pass'];

            $this->connect();
        }
    }?>

### __toString()

public function __toString(): string

__toString() yöntemi, sınıf bir dizgeye dönüştürüldüğünde sınıfın nasıl tepki vereceğine karar vermeyi sağlar. Örneğin, `echo $obj;` ile ne basılacağı gibi.

Uyarı

PHP 8.0.0'dan itibaren, dönüş değerine standart PHP tür anlamlandırması uygulanmaktadır, yani katı kodlama devre dışı bırakılırsa, mümkün olduğu takdirde değer string türe zorlanır.

strict typing etkinken Stringable nesnesi string tür bildirimi tarafından kabul edilmez. Bunun olması isteniyorsa Stringable ve string türleri birleşim türü bildirimi içinde birleştirilmelidir.

PHP 8.0.0'dan itibaren, __toString() yöntemi içeren her sınıf örtük olarak Stringable arayüzünü de gerçekler ve dolayısıyla bu arayüz için tür sınamaları yapılmaz. Bu durumda, arayüzün doğrudan gerçeklenmesi tercih edilmelidir.

PHP 7.4'te, döndürülen değer mutlaka string türünde olmalıdır, aksi takdirde bir Error yavrulanır.

PHP 7.4.0 öncesinde, döndürülen değer mutlaka string türünde olmalıydı, aksi takdirde ölümcül bir `E_RECOVERABLE_ERROR` çıktılanırdı.

Uyarı

__toString() yönteminin içinden bir istisna yavrulatılamaz. PHP 7.4.0 öncesinde, bunun yapılması ölümcül hata ile sonuçlanırdı.

Örnek 3 - Basit bir örnek

    <?php
    // Basit bir sınıf tanımlayalım
    class TestClass
    {
        public $foo;

        public function __construct($foo)
        {
            $this->foo = $foo;
        }

        public function __toString()
        {
            return $this->foo;
        }
    }

    $class = new TestClass('Merhaba');
    echo $class;
    ?>

Yukarıdaki örneğin çıktısı:

    Merhaba

### __invoke()

function __invoke( `...$values`): mixed

__invoke() yöntemi, bir betik bir nesneyi bir işlev olarak çağırmaya çalışırsa çağrılır.

Örnek 4 - __invoke() kullanımı

    <?php
    class CallableClass
    {
      public function __invoke($x)
      {
        var_dump($x);
      }
    }
    $obj = new CallableClass;
    $obj(5);
    var_dump(is_callable($obj));
    ?>

Yukarıdaki örneğin çıktısı:

    int(5)
    bool(true)

Örnek 5 - __invoke() kullanımı

    <?php
    class Sort
    {
        private $key;

        public function __construct(string $key)
        {
            $this->key = $key;
        }

        public function __invoke(array $a, array $b): int
        {
            return $a[$this->key] <=> $b[$this->key];
        }
    }

    $müşteriler = [
        ['no' => 1, 'isim' => 'John', 'soyisim' => 'Do'],
        ['no' => 3, 'isim' => 'Alice', 'soyisim' => 'Gustav'],
        ['no' => 2, 'isim' => 'Bob', 'soyisim' => 'Filipe']
    ];

    // $müşterileri isme göre sırala
    usort($müşteriler, new Sort('isim'));
    print_r($müşteriler);

    // $müşterileri soyisme göre sırala
    usort($müşteriler, new Sort('soyisim'));
    print_r($müşteriler);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => Array
            (
                [no] => 3
                [isim] => Alice
                [soyisim] => Gustav
            )

        [1] => Array
            (
                [no] => 2
                [isim] => Bob
                [soyisim] => Filipe
            )

        [2] => Array
            (
                [no] => 1
                [isim] => John
                [soyisim] => Do
            )

    )
    Array
    (
        [0] => Array
            (
                [no] => 1
                [isim] => John
                [soyisim] => Do
            )

        [1] => Array
            (
                [no] => 2
                [isim] => Bob
                [soyisim] => Filipe
            )

        [2] => Array
            (
                [no] => 3
                [isim] => Alice
                [soyisim] => Gustav
            )

    )

### __set_state()

static function __set_state(array `$özellikler`): object

Bu statik yöntem, var_export() tarafından ihraç edilen sınıflar için çağrılır.

Bu yöntemin tek bağımsız değişkeni `['`özellik`' =>` değer`, ...]` biçeminde ihraç edilen özellikleri içeren bir dizidir.

Örnek 6 - __set_state() kullanımı

    <?php

    class A
    {
        public $var1;
        public $var2;

        public static function __set_state($bir_dizi)
        {
            $obj = new A;
            $obj->var1 = $bir_dizi['var1'];
            $obj->var2 = $bir_dizi['var2'];
            return $obj;
        }
    }

    $a = new A;
    $a->var1 = 5;
    $a->var2 = 'foo';

    $b = var_export($a, true);
    var_dump($b);

    eval('$c = ' . $b . ';');
    var_dump($c);
    ?>

Yukarıdaki örneğin çıktısı:

    string(60) "A::__set_state(array(
       'var1' => 5,
       'var2' => 'foo',
    ))"
    object(A)#2 (2) {
      ["var1"]=>
      int(5)
      ["var2"]=>
      string(3) "foo"
    }

> Bilginize: Bir nesne ihraç edilirken, var_export() işlevi __set_state() nesnenin sınıfı tarafından gerçeklenmiş mi diye bakmaz, dolayısıyla böyle nesnelerin yeniden ithali __set_state() hiç gerçeklenmemiş gibi bir Error istisnası yavrulanmasına sebep olur. Bu kısmen bazı dahili sınıfları da etkiler. Sadece, __set_state() gerçekleyen sınıfın nesnelerinin yeniden ithal edilmesini sağlamak yazılımcının sorumluluğundadır.

### __debugInfo()

function __debugInfo(): array

Gösterilmesi gereken özelliklerini döndürmek için bir nesne dökümleneceği zaman bu yöntem var_dump() tarafından çağrılır.

Örnek 7 - __debugInfo() kullanımı

    <?php
    class C {
        private $prop;

        public function __construct($val) {
            $this->prop = $val;
        }

        public function __debugInfo() {
            return [
                'propSquared' => $this->prop ** 2,
            ];
        }
    }

    var_dump(new C(42));
    ?>

Yukarıdaki örneğin çıktısı:

    object(C)#1 (1) {
      ["propSquared"]=>
      int(1764)
    }

## `final` Anahtar Sözcüğü

Tanımı `final` anahtar sözcüğü ile başlayan yöntem, özellik veya sabiti çocuk sınıflar geçersiz kılamaz. Tanımı `final` sözcüğüyle ile başlayan bir sınıf ise genişletilemez.

Örnek 1 - `final` yöntem örneği

    <?php
    class AnaSınıf {
       public function deneme() {
           echo "AnaSınıf::deneme() çağrıldı\n";
       }

       final public function başkaDeneme() {
           echo "AnaSınıf::başkaDeneme() çağrıldı\n";
       }
    }

    class ÇocukSınıf extends AnaSınıf {
       public function başkaDeneme() {
           echo "ÇocukSınıf::başkaDeneme() çağrıldı\n";
       }
    }
    // Ölümcül hata ile sonuçlanır: AnaSınıf:başkaDeneme() final yöntemi
    // ÇocukSınıf::başkaDeneme() yöntemiyle geçersiz kılınamaz
    ?>

Örnek 2 - `final` sınıf örneği

    <?php
    final class AnaSınıf {
       public function deneme() {
           echo "AnaSınıf::deneme() çağrıldı\n";
       }

       // Sınıf zaten final olduğundan buradaki final gereksizdir
       final public function başkaDeneme() {
           echo "AnaSınıf::başkaDeneme() çağrıldı\n";
       }
    }

    class ÇocukSınıf extends AnaSınıf {
    }
    // Ölümcül hata ile sonuçlanır: ÇocukSınıf final bir sınıf
    // olan AnaSınıf'ın çocuğu olarak oluşturulamaz
    ?>

Örnek 3 - PHP 8.4.0 ve sonrasında Final özellik örneği

    <?php
    class BaseClass {
       final protected string $test;
    }

    class ChildClass extends BaseClass {
        public string $test;
    }
    // Onulmaz hata ile sonuçlanır: Cannot override final property BaseClass::$test
    ?>

Örnek 4 - PHP 8.1.0 ve sonrasında Final sabit örneği

    <?php
    class Foo
    {
        final public const X = "foo";
    }

    class Bar extends Foo
    {
        public const X = "bar";
    }

    // Ölümcül hata: Bar::X, final constant Foo::X ile geçersiz kılınamaz
    ?>

> Bilginize: PHP 8.0.0 itibariyle, private yöntemler, kurucular hariç final olarak bildirilememektedir.

> Bilginize: `private(set)` olarak bildirilen bir özellik örtük olarak `final`'dir.

## Nesne Kopyalama

Bir nesnenin tüm özelliklerinin aynen kopyalanarak çoğaltılması her zaman istenilen durum değildir. Kurucuların kopyalanması iyi bir örnektir, bir GTK penceresini temsil eden bir nesneniz varsa ve bu nesne GTK penceresine ait özkaynağı tutuyorsa, bu nesnenin kopyasını oluşturduğunuzda, yeni nesnenin önceki pencere ile aynı özelliklere sahip yeni bir pencereye sahip olmasını ve önceki nesne ile aynı şekilde pencereye ait özkaynağı tutuyor olmasını isteyebilirsiniz. Bir diğer örnek, nesneniz kullandığı başka bir nesneye ait bir gönderim tutuyorsa, ebeveyn nesne kopyalandığında diğer nesnenin de yeni bir örneğinin oluşturulmasını isteyebilirsiniz, yani ebeveynin kopyasının kendine ait ayrı bir kopyası olur.

Bir nesnenin kopyası (mümkünse nesnenin __clone() yöntemini çağıran) `clone` anahtar sözcüğü kullanılarak oluşturulur.

    $nesnenin_kopyası = clone $object;

Bir nesne kopyalandığında, PHP nesnenin tüm özelliklerinin yüzeysel bir kopyasını çıkartacaktır. Diğer değişkenlere birer gönderim olan tüm özellikler gönderim olarak kalacaktır.

function __clone(): void

Kopyalama tamamlanır tamamlanmaz, bir __clone() yöntemi tanımlanmışsa, değişmesi gereken lüzumlu tüm özelliklere izin vermek için yeni oluşturulan nesnenin __clone() yöntemi çağrılacaktır.

Örnek 1 - Bir nesnenin kopyalanması

    <?php
    class AltNesne
    {
        static $örnek_sayısı = 0;
        public $örnek;

        public function __construct()
        {
            $this->örnek = ++self::$örnek_sayısı;
        }

        public function __clone()
        {
            $this->örnek = ++self::$örnek_sayısı;
        }
    }

    class KopyalanabilirNesnem
    {
        public $nesne1;
        public $nesne2;

        function __clone()
        {
            // this->nesne1'in bir kopyasını oluşturmak için
            // zorlayalım, yoksa aynı nesneyi gösterecek.
            $this->nesne1 = clone $this->nesne1;
        }
    }

    $nes = new KopyalanabilirNesnem();

    $nes->nesne1 = new AltNesne();
    $nes->nesne2 = new AltNesne();

    $nes2 = clone $nes;

    print "Özgün Nesne:\n";
    print_r($nes);

    print "Kopya Nesne:\n";
    print_r($nes2);
    ?>

Yukarıdaki örneğin çıktısı:

    Özgün Nesne:
    KopyalanabilirNesnem Object
    (
        [nesne1] => AltNesne Object
            (
                [örnek] => 1
            )

        [nesne2] => AltNesne Object
            (
                [örnek] => 2
            )

    )
    Kopya Nesne:
    KopyalanabilirNesnem Object
    (
        [nesne1] => AltNesne Object
            (
                [örnek] => 3
            )

        [nesne2] => AltNesne Object
            (
                [örnek] => 2
            )

    )

Yeni kopyalanmış bir nesnenin üyesine tek bir ifadede erişmek mümkündür:

Örnek 2 - Yeni kopyalanmış nesnenin üyesine erişim

    <?php
    $dateTime = new DateTime();
    echo (clone $dateTime)->format('Y');
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2016

## Nesnelerin Karşılaştırılması

Eşitlik işleci (`==`) kullanıldığında, nesne değişkenleri basit bir mantıkla karşılaştırılır: İki nesne örneği aynı özniteliklere ve aynı (`==` ile karşılaştırılan) değerlere sahipse ve ikisi de aynı sınıf tarafından oluşturulmuşsa bu iki nesne örneği birbirine eşittir.

Aynılık işleci (`===`) kullanıldığında, iki nesne değişkeni yalnız ve yalnız aynı sınıfın aynı örneği iseler birbirlerinin aynısıdırlar.

Bu kuralları bir örnek ile pekiştirelim.

Örnek 1 - Nesne karşılaştırma örneği

    <?php
    function bool2str($bool)
    {
        if ($bool === false) {
            return 'YANLIŞ';
        } else {
            return 'DOĞRU';
        }
    }

    function compareObjects(&$o1, &$o2)
    {
        echo 'o1 == o2 : ' . bool2str($o1 == $o2) . "\n";
        echo 'o1 != o2 : ' . bool2str($o1 != $o2) . "\n";
        echo 'o1 === o2 : ' . bool2str($o1 === $o2) . "\n";
        echo 'o1 !== o2 : ' . bool2str($o1 !== $o2) . "\n";
    }

    class Flag
    {
        public $flag;

        function __construct($flag = true) {
            $this->flag = $flag;
        }
    }

    class OtherFlag
    {
        public $flag;

        function OtherFlag($flag = true) {
            $this->__construct = $flag;
        }
    }

    $o = new Flag();
    $p = new Flag();
    $q = $o;
    $r = new OtherFlag();

    echo "Aynı sınıfın iki örneği\n";
    compareObjects($o, $p);

    echo "\nAynı örneğe iki gönderim\n";
    compareObjects($o, $q);

    echo "\nİki farklı sınıfın örnekleri\n";
    compareObjects($o, $r);
    ?>

Yukarıdaki örneğin çıktısı:

    Aynı sınıfın iki örneği
    o1 == o2 : DOĞRU
    o1 != o2 : YANLIŞ
    o1 === o2 : FALSE
    o1 !== o2 : DOĞRU

    Aynı örneğe iki gönderim
    o1 == o2 : DOĞRU
    o1 != o2 : YANLIŞ
    o1 === o2 : DOĞRU
    o1 !== o2 : YANLIŞ

    İki farklı sınıfın örnekleri
    o1 == o2 : YANLIŞ
    o1 != o2 : DOĞRU
    o1 === o2 : YANLIŞ
    o1 !== o2 : DOĞRU

> Bilginize:

> Eklentiler, kendi nesne karşılaştırmaları (`==`) için kendi kurallarını tanımlayabilir.

## Statik İçselleştirim

Statik içselleştirim (İng.: `late static bindings`) ile miras alınan statik bağlam, tanımlandığı nesnenin bağlamında değil, çağrıldığı nesnenin bağlamında değerlendirilir.

Daha kesin olarak, statik içselleştirim son "ötelenmeyen çağrıda" bahsi geçen sınıfın saklanmasıyla çalışır. Statik yöntem çağrısı durumunda sınıfın adı açıkça (genellikle `::` işlecinin sol tarafında) belirtilmiştir. Statik olmayan yöntem çağrısı durumunda söz konusu sınıf, nesnenin sınıfıdır. Bir "ötelenen çağrı", bir `self::`, `parent::`, `static::` yöntemi veya sınıf hiyerarşisi üzerinden gidiliyorsa forward_static_call() çağrısıdır. get_called_class() işlevi, çağrılan sınıfın ismini bir dize olarak almakta kullanılabilir ve bağlamını `static::` belirler.

"`Statik içselleştirme`", `static::` yöntemin çalışma anında, tanımlandığı nesnenin bağlamında değil, çağrıldığı nesnenin bağlamında değerlendirilmesi olgusunu betimler.

### `self::` ile ilgili sınırlamalar

`self::` veya `__CLASS__` gibi bulunduğu sınıfa statik gönderim yapan öğeler, örnekten de görüleceği üzere, yöntemi miras alan sınıf bağlamında değil, yöntemin ait olduğu sınıf bağlamında değerlendirilirler:

Örnek 1 - `self::` kullanımı

    <?php
    class A {
        public static function kimsin() {
            echo __CLASS__;
        }
        public static function dene() {
            self::kimsin();
        }
    }

    class B extends A {
        public static function kimsin() {
            echo __CLASS__;
        }
    }

    B::dene();
    ?>

Yukarıdaki örneğin çıktısı:

    A

### Statik İçselleştirimin uygulanması

Statik içselleştirimde çözümlemenin, gönderimin çalışma anında ilk çağrıldığı sınıfla sınırlandırılması, gönderim için özel bir anahtar sözcük kullanılarak sağlanır. Temel olarak, böyle bir anahtar sözcük, yukarıdaki örnekteki `dene()` yönteminin aşağıdaki gibi `B` döndürmesini sağlar. Bunun için yeni bir anahtar sözcük atamaktansa, zaten bir anahtar sözcük olan `static` sözcüğü kullanılmıştır.

Örnek 2 - `static::` kullanımı

    <?php
    class A {
        public static function kimsin() {
            echo __CLASS__;
        }
        public static function dene() {
            static::kimsin(); // Burada statik içselleştirim yapılıyor
        }
    }

    class B extends A {
        public static function kimsin() {
             echo __CLASS__;
        }
    }

    B::dene();
    ?>

Yukarıdaki örneğin çıktısı:

    B

> Bilginize:

> Statik olmayan bağlamlarda, çağrılan sınıf, nesne örneğinin sınıfı olacaktır. `$this->` aynı bağlamdaki private yöntemleri çağırmayı denerken, `static::` kullanımı farklı sonuçlar verebilir. `static::` ile ilgili diğer bir fark, sadece statik özellikler için kullanılabilmesidir.

Örnek 3 - Statik olmayan bağlamda `static::` kullanımı

    <?php
    class A {
        private function foo() {
            echo "success!\n";
        }

        public function dene() {
            $this->foo();
            static::foo();
        }
    }

    class B extends A {
       /* foo() B'ye kopyalanacak, dolayısıyls bağlamı hala A olacak ve
        * çağrı başarılı olacaktır. */
    }

    class C extends A {
        private function foo() {
            /* özgün yöntem değişti; yenisinin bağlamı C'dir */
        }
    }

    $b = new B();
    $b->test();
    $c = new C();
    $c->test();   //hata verir
    ?>

Yukarıdaki örneğin çıktısı:

    success!
    success!
    success!

    Fatal error:  Call to private method C::foo() from context 'A' in /tmp/test.php on line 9

> Bilginize:

> Statik içselleştirimin çözümlemesi statik çağrının tamamen çözümlendiği noktada durdurulur, daha öteye gidilmez. Diğer taraftan, `parent::` veya `self::` gibi anahtar sözcükler kullanılarak yapılan statik çağrılar çağrı bilgisini öteler.

> Örnek 4 - Ötelenen ve ötelenmeyen çağrılar

>     <?php
>     class A {
>         public static function nesin() {
>             static::kimsin();
>         }

>         public static function kimsin() {
>             echo __CLASS__."\n";
>         }
>     }

>     class B extends A {
>         public static function dene() {
>             A::nesin();
>             parent::nesin();
>             self::nesin();
>         }

>         public static function kimsin() {
>             echo __CLASS__."\n";
>         }
>     }
>     class C extends B {
>         public static function kimsin() {
>             echo __CLASS__."\n";
>         }
>     }

>     C::dene();
>     ?>

> Yukarıdaki örneğin çıktısı:

>     A
>     C
>     C

## Nesneler ve Gönderimler

Nesne yönelimli programlama ile ilgili olarak "öntanımlı olarak nesneler gönderimli aktarılır" diye bir kanı oluşmuştur, fakat bu tamamen doğru değildir. Bu bölümde bir örnek üzerinden bu genel kanı düzeltilmeye çalışılmıştır.

Bir PHP gönderimi, aynı değeri iki farklı değişkene yazmayı mümkün kılan bir takma addır. Bir nesne değişkeni değer olarak nesnenin kendisini içeremez. Bunun yerine, nesne erişimcilerin asıl nesneyi bulmasını sağlayacak bir nesne tanıtıcısı içerebilir. Bir nesne bağımsız değişkeni ile aktarılırken, döndürülürken veya başka bir değişkene atanırken bunlar takma ad değil, farklı değişkenlerdir: Aynı nesneyi gösteren tanıtıcının birer kopyasını içerirler.

Örnek 1 - Gönderimler ve Nesneler

    <?php
    class A {
        public $foo = 1;
    }

    $a = new A;
    $b = $a;     // $a ve $b aynı nesne tanıtıcısının kopyalarını içerir
                 // ($a) = ($b) = <tanıtıcı>
    $b->foo = 2;
    echo $a->foo."\n";

    $c = new A;
    $d = &$c;    // $c ve $d gönderimdir
                 // ($c,$d) = <tanıtıcı>

    $d->foo = 2;
    echo $c->foo."\n";

    $e = new A;

    function foo($obj) {
        // ($obj) = ($e) = <tanıtıcı>
        $obj->foo = 2;
    }

    foo($e);
    echo $e->foo."\n";

    ?>

Yukarıdaki örneğin çıktısı:

    2
    2
    2

## Oturumlardaki nesnelerin dizgeleştirilmesi

serialize() 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 unserialize() 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.

Bir nesne için unserialize() 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 unserialize() 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 spl_autoload_register() işlevi kullanılarak yapılabilir.

    <?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();
    ?>

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 __PHP_Incomplete_Class_Name sınıfına sokmasına neden olur ve sonuçta nesne işe yaramaz hale gelir.

Yani, yukarıdaki örnekte, eğer $_SESSION süper küresel dizisine yeni bir anahtar ekleyerek $a bir oturumun parçası haline gelirse, `A.php` dosyası yalnız page1.php ve page2.php dosyalarına değil tüm sayfa dosyalarına dahil edilmelidir.

Yukarıdaki tavsiyenin ötesinde, __sleep() ve __wakeup() yöntemlerini kullanarak da bir nesne üzerinde dizgeleştirme ve yeniden nesneleştirme yapabilir. __sleep() kullanımı ayrıca, nesne özelliklerinin tamamının değil sadece bir kısmının dizgeleştirilmesini de sağlar.

## Çok Özgüllük ve Az Özgüllük

PHP 7.2.0'da, bir çocuk yöntem bağımsız değişkenlerindeki tür sınırlamaları kaldırılarak az özgüllüklere kısmen girildi. PHP 7.4.0'dan itibaren, az ve çok özgüllüklere tam destek eklendi.

Çok özgüllük, bir çocuk yöntemin ebeveyn yönteminden daha özellikli bir tür döndürmesine izin verir. Buna karşın, az özgüllük, bir bağımsız değişkenin bir çocuk yöntemin içinde ebeveyndekinden daha az özellikli olmasına izin verir.

Aşağıdaki durumda tür belirtiminin daha belirgin olduğu varsayılır:

- Birleşim türlerinden bir türü çıkarmak.
- Kesişim türlerine bir türü eklemek.
- Bir sınıf türü yerine çocuk sınıf türü belirtmek.
- iterable yerine array veya Traversable belirtmek.

Tersi doğruysa, o tür sınıfının daha az belirgin olduğu varsayılır.

### Çok Özgüllük

Çok özgüllüğün nasıl çalıştığını göstermek için, basit bir soyut ebeveyn sınıf olarak Hayvan sınıfı oluşturulup Kedi ve Köpek çocuk sınıflarına genişletildi.

    <?php

    abstract class Hayvan
    {
        protected string $isim;

        public function __construct(string $isim)
        {
            $this->name = $isim;
        }

        abstract public function konuş();
    }

    class Köpek extends Hayvan
    {
        public function konuş()
        {
            echo $this->name . " havlar";
        }
    }

    class Kedi extends Hayvan
    {
        public function konuş()
        {
            echo $this->name . " miyavlar";
        }
    }

Bu örnekte yöntemlerin hiçbiri değer döndürmemektedir. Hayvan, Kedi ve Köpek sınıfı türünde yeni bir nesne döndüren birkaç arayüz eklenecektir.

    <?php

    interface HayvanYuvası
    {
        public function sahiplen(string $isim): Hayvan;
    }

    class KediYuvası implements HayvanYuvası
    {
        public function sahiplen(string $isim): Kedi // Hayvan türünde bir sınıf yerine Kedi türünde bir sınıf döner
        {
            return new Kedi($isim);
        }
    }

    class KöpekYuvası implements HayvanYuvası
    {
        public function sahiplen(string $isim): Köpek // Hayvan türünde bir sınıf yerine Köpek türünde bir sınıf döner
        {
            return new Köpek($isim);
        }
    }

    $mırnav = (new KediYuvası)->sahiplen("Tekir");
    $mırnav->konuş();
    echo "\n";

    $kuçu = (new KöpekYuvası)->sahiplen("Çomar");
    $kuçu->konuş();

Yukarıdaki örneğin çıktısı:

    Tekir miyavlar
    Çomar havlar

### Az Özgüllük

Hayvan, Kedi ve Köpek sınıflarıyla önceki örneğe devam ederek, bunlara Yem ve HayvanYemi sınıflarını dahil edip Hayvan soyut sınıfına ye(HayvanYemi $yem) yöntemini ekleyelim.

    <?php

    class Yem {}

    class HayvanYemi extends Yem {}

    abstract class Hayvan
    {
        protected string $isim;

        public function __construct(string $isim)
        {
            $this->name = $isim;
        }

        public function ye(HayvanYemi $yem)
        {
            echo $this->name . " " . get_class($yem) . "yer";
        }
    }

Az özgüllüğün davranışını görmek için, herhangi bir Yem türü nesneye izin vermek için Köpek sınıfında ye yöntemi geçersiz kılınır. Kedi sınıfı değişmeden kalır.

    <?php

    class Köpek extends Hayvan
    {
        public function ye(Yem $yem) {
            echo $this->name . " " . get_class($yem) . "yer";
        }
    }

Aşağıdaki örnek az özgüllüğün davranışını gösterir:

    <?php

    $mırnav = (new KediYuvası)->sahiplen("Tekir");
    $kediYemi = new HayvanYemi();
    $mırnav->ye($kediYemi);
    echo "\n";

    $kuçu = (new KöpekYuvası)->sahiplen("Çomar");
    $kemik = new Yem();
    $kuçu->ye($kemik);

Yukarıdaki örneğin çıktısı:

    Tekir HayvanYemi yer
    Çomar Yem yer

Peki $mırnav $kemik ye()meye çalışırsa ne olur?

    $mırnav->ye($kemik);

Yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught TypeError: Argument 1 passed to Hayvan::ye() must be an instance of HayvanYemi, instance of Yem given
    Türkçesi: Ölümcül hata: ... : Hayvan::ye() yöntemine aktarılan 1. bağımsız değişken
    bir HayvanYemi örneği olmalı, Yem örneği verildi

## Lazy Objects

A lazy object is an object whose initialization is deferred until its state is observed or modified. Some use-case examples include dependency injection components that provide lazy services fully initialized only if needed, ORMs providing lazy entities that hydrate themselves from the database only when accessed, or a JSON parser that delays parsing until elements are accessed.

Two lazy object strategies are supported: Ghost Objects and Virtual Proxies, hereafter referred to as "lazy ghosts" and "lazy proxies". In both strategies, the lazy object is attached to an initializer or factory that is called automatically when its state is observed or modified for the first time. From an abstraction point of view, lazy ghost objects are indistinguishable from non-lazy ones: they can be used without knowing they are lazy, allowing them to be passed to and used by code that is unaware of laziness. Lazy proxies are similarly transparent, but care must be taken when their identity is used, as the proxy and its real instance have different identities.

> Bilginize: Version Information
> Lazy objects were introduced in PHP 8.4.

### Creating Lazy Objects

It is possible to create a lazy instance of any user defined class or the stdClass class (other internal classes are not supported), or to reset an instance of these classes to make it lazy. The entry points for creating a lazy object are the ReflectionClass::newLazyGhost() and ReflectionClass::newLazyProxy() methods.

Both methods accept a function that is called when the object requires initialization. The function's expected behavior varies depending on the strategy in use, as described in the reference documentation for each method.

Örnek 1 Creating a Lazy Ghost

    <?php
    class Example
    {
        public function __construct(public int $prop)
        {
            echo __METHOD__, "\n";
        }
    }

    $reflector = new ReflectionClass(Example::class);
    $lazyObject = $reflector->newLazyGhost(function (Example $object) {
        // Initialize object in-place
        $object->__construct(1);
    });

    var_dump($lazyObject);
    var_dump(get_class($lazyObject));

    // Triggers initialization
    var_dump($lazyObject->prop);
    ?>

Yukarıdaki örneğin çıktısı:

    lazy ghost object(Example)#3 (0) {
    ["prop"]=>
    uninitialized(int)
    }
    string(7) "Example"
    Example::__construct
    int(1)

Örnek 2 Creating a Lazy Proxy

    <?php
    class Example
    {
        public function __construct(public int $prop)
        {
            echo __METHOD__, "\n";
        }
    }

    $reflector = new ReflectionClass(Example::class);
    $lazyObject = $reflector->newLazyProxy(function (Example $object) {
        // Create and return the real instance
        return new Example(1);
    });

    var_dump($lazyObject);
    var_dump(get_class($lazyObject));

    // Triggers initialization
    var_dump($lazyObject->prop);
    ?>

Yukarıdaki örneğin çıktısı:

    lazy proxy object(Example)#3 (0) {
      ["prop"]=>
      uninitialized(int)
    }
    string(7) "Example"
    Example::__construct
    int(1)

Any access to properties of a lazy object triggers its initialization (including via ReflectionProperty). However, certain properties might be known in advance and should not trigger initialization when accessed:

Örnek 3 Initializing Properties Eagerly

    <?php
    class BlogPost
    {
        public function __construct(
            public int $id,
            public string $title,
            public string $content,
        ) { }
    }

    $reflector = new ReflectionClass(BlogPost::class);

    $post = $reflector->newLazyGhost(function ($post) {
        $data = fetch_from_store($post->id);
        $post->__construct($data['id'], $data['title'], $data['content']);
    });

    // Without this line, the following call to ReflectionProperty::setValue() would
    // trigger initialization.
    $reflector->getProperty('id')->skipLazyInitialization($post);
    $reflector->getProperty('id')->setValue($post, 123);

    // Alternatively, one can use this directly:
    $reflector->getProperty('id')->setRawValueWithoutLazyInitialization($post, 123);

    // The id property can be accessed without triggering initialization
    var_dump($post->id);
    ?>

The ReflectionProperty::skipLazyInitialization() and ReflectionProperty::setRawValueWithoutLazyInitialization() methods offer ways to bypass lazy-initialization when accessing a property.

### About Lazy Object Strategies

Lazy ghosts are objects that initialize in-place and, once initialized, are indistinguishable from an object that was never lazy. This strategy is suitable when we control both the instantiation and initialization of the object, making it unsuitable if either of these is managed by another party.

Lazy proxies, once initialized, act as proxies to a real instance: any operation on an initialized lazy proxy is forwarded to the real instance. The creation of the real instance can be delegated to another party, making this strategy useful in cases where lazy ghosts are unsuitable. Although lazy proxies are nearly as transparent as lazy ghosts, caution is needed when their identity is used, as the proxy and its real instance have distinct identities.

### Lifecycle of Lazy Objects

Objects can be made lazy at instantiation time using ReflectionClass::newLazyGhost() or ReflectionClass::newLazyProxy(), or after instantiation by using ReflectionClass::resetAsLazyGhost() or ReflectionClass::resetAsLazyProxy(). Following this, a lazy object can become initialized through one of the following operations:

- Interacting with the object in a way that triggers automatic initialization. See Initialization triggers.
- Marking all its properties as non-lazy using ReflectionProperty::skipLazyInitialization() or ReflectionProperty::setRawValueWithoutLazyInitialization().
- Calling explicitly ReflectionClass::initializeLazyObject() or ReflectionClass::markLazyObjectAsInitialized().

As lazy objects become initialized when all their properties are marked non-lazy, the above methods will not mark an object as lazy if no properties could be marked as lazy.

### Initialization Triggers

Lazy objects are designed to be fully transparent to their consumers, so normal operations that observe or modify the object's state will automatically trigger initialization before the operation is performed. This includes, but is not limited to, the following operations:

- Reading or writing a property.
- Testing if a property is set or unsetting it.
- Accessing or modifying a property via ReflectionProperty::getValue(), ReflectionProperty::getRawValue(), ReflectionProperty::setValue(), or ReflectionProperty::setRawValue().
- Listing properties with ReflectionObject::getProperties(), ReflectionObject::getProperty(), get_object_vars().
- Iterating over properties of an object that does not implement Iterator or IteratorAggregate using foreach.
- Serializing the object with serialize(), json_encode(), etc.
- Cloning the object.

Method calls that do not access the object state will not trigger initialization. Similarly, interactions with the object that invoke magic methods or hook functions will not trigger initialization if these methods or functions do not access the object's state.

#### Non-Triggering Operations

The following specific methods or low-level operations allow access or modification of lazy objects without triggering initialization:

- Marking properties as non-lazy with ReflectionProperty::skipLazyInitialization() or ReflectionProperty::setRawValueWithoutLazyInitialization().
- Retrieving the internal representation of properties using get_mangled_object_vars() or by casting the object to an array.
- Using serialize() when `ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE` is set, unless __serialize() or __sleep() trigger initialization.
- Calling ReflectionObject::__toString().
- Using var_dump() or debug_zval_dump(), unless __debugInfo() triggers initialization.

### Initialization Sequence

This section outlines the sequence of operations performed when initialization is triggered, based on the strategy in use.

#### Ghost Objects

- The object is marked as non-lazy.
- Properties not initialized with ReflectionProperty::skipLazyInitialization() or ReflectionProperty::setRawValueWithoutLazyInitialization() are set to their default values, if any. At this stage, the object resembles one created with ReflectionClass::newInstanceWithoutConstructor(), except for already initialized properties.
- The initializer function is then called with the object as its first parameter. The function is expected, but not required, to initialize the object state, and must return `null` or no value. The object is no longer lazy at this point, so the function can access its properties directly.

After initialization, the object is indistinguishable from an object that was never lazy.

#### Proxy Objects

- The object is marked as non-lazy.
- Unlike ghost objects, the properties of the object are not modified at this stage.
- The factory function is called with the object as its first parameter and must return a non-lazy instance of a compatible class (see ReflectionClass::newLazyProxy()).
- The returned instance is referred to as the real instance and is attached to the proxy.
- The proxy's property values are discarded as though unset() was called.

After initialization, accessing any property on the proxy will yield the same result as accessing the corresponding property on the real instance; all property accesses on the proxy are forwarded to the real instance, including declared, dynamic, non-existing, or properties marked with ReflectionProperty::skipLazyInitialization() or ReflectionProperty::setRawValueWithoutLazyInitialization().

The proxy object itself is not replaced or substituted for the real instance.

While the factory receives the proxy as its first parameter, it is not expected to modify it (modifications are allowed but will be lost during the final initialization step). However, the proxy can be used for decisions based on the values of initialized properties, the class, the object itself, or its identity. For instance, the initializer might use an initialized property's value when creating the real instance.

#### Common Behavior

The scope and $this context of the initializer or factory function remains unchanged, and usual visibility constraints apply.

After successful initialization, the initializer or factory function is no longer referenced by the object and may be released if it has no other references.

If the initializer throws an exception, the object state is reverted to its pre-initialization state and the object is marked as lazy again. In other words, all effects on the object itself are reverted. Other side effects, such as effects on other objects, are not reverted. This prevents exposing a partially initialized instance in case of failure.

### Cloning

Cloning a lazy object triggers its initialization before the clone is created, resulting in an initialized object.

For proxy objects, both the proxy and its real instance are cloned, and the clone of the proxy is returned. The `__clone` method is called on the real instance, not on the proxy. The cloned proxy and real instance are linked as they are during initialization, so accesses to the proxy clone are forwarded to the real instance clone.

This behavior ensures that the clone and the original object maintain separate states. Changes to the original object or its initializer's state after cloning do not affect the clone. Cloning both the proxy and its real instance, rather than returning a clone of the real instance alone, ensures that the clone operation consistently returns an object of the same class.

### Destructors

For lazy ghosts, the destructor is only called if the object has been initialized. For proxies, the destructor is only called on the real instance, if one exists.

The ReflectionClass::resetAsLazyGhost() and ReflectionClass::resetAsLazyProxy() methods may invoke the destructor of the object being reset.

## NYP Değişiklik Güncesi

PHP NYP modelinde yaplan değişiklikler burada sıralanmıştır. Bunlarla ilgili açıklamalar ve diğer bilgiler NYP belgeleri içindedir.

Sürüm: | Açıklama
--- | ---
8.4.0 | Eklendi: Özellik Kancaları için destek.
8.4.0 | Eklendi: Tembel Nesneler için destek.
8.1.0 | Eklendi: Sınıf sabitlerinin final olarak tanımlanması artık destekleniyor. Ayrıca, arayüz sabitleri artık öntanımlı olarak geçersiz kılınabiliyor.
8.0.0 | Eklendi: `null` olabilen nesne yöntem ve özelliklerine erişim için Güvenli Null İşleci ?-> desteği.
7.4.0 | Değişti: __toString() içinde bir istisna yavrulamak artık mümkün.
7.4.0 | Eklendi: Sınırlı dönüş türü farklılığı ve bağımsız değişken türü farklılığı desteği. Tam farklılık desteği yalnızca otomatik yükleme kullanılıyorsa kullanılabilir. Tek bir dosyanın içinde yalnızca dönüşümlü olmayan tür gönderimleri mümkündür.
7.4.0 | Eklendi: Artık sınıf özelliklerini yazmak mümkün.
7.3.0 | Uyumsuzluk: Traversable bağımsız değişkenlerine int olmayan anahtarlarla ulaşılması artık desteklenmiyor. Böyle bir davranış amaçlanmadığından kaldırıldı.
7.3.0 | Uyumsuzluk: Önceki sürümlerde statik özellikleri bir gönderim atayarak ayırmak mümkündü. Bu kaldırıldı.
7.3.0 | Değişti: instanceof işleci, sonucun daima `false` olduğu durumlarda, artık, ilk terim olarak değişmezlere izin veriyor.
7.2.0 | Kullanımdan kalktı: spl_autoload_register() yararına __autoload() yöntemi kullanımdan kaldırıldı.
7.2.0 | Değişti: `object` bir isim olarak sınıf, arayüz ve niteliklerin isimlendirilmesinde artık kullanılamıyor.
7.2.0 | Değişti: İsim alanları için grup kullanım sözdiziminde arda bir virgül eklenebiliyor.
7.2.0 | Değişti: Bağımsız değişken türü genişletmesi. Geçersiz kılınmış yöntemlerdeki ve arayüz gerçekleştirimlerindeki bağımsız değişken türleri artık çıkarıldı.
7.2.0 | Değişti: Soyut bir sınıf başka bir soyut sınıfa genişletildiğinde soyut yöntemler artık geçersiz kılınabiliyor.
7.1.0 | Değişti: `void` ve `iterable` bir isim olarak sınıf, arayüz ve niteliklerin isimlendirilmesinde artık kullanılamıyor.
7.1.0 | Eklendi: Sınıf sabitlerinin görünürlüğünü belirtmek artık mümkün.
7.0.0 | Kullanımdan kalktı: Statik yöntem çağrıları artık statik bildirilemiyor.
7.0.0 | Kullanımdan kalktı: PHP 4 tarzı kurucu. Yani, tanımlandıkları sınıfın ismini alan yöntemler.
7.0.0 | Eklendi: Gruplu use bildirimi: Aynı isim alanından ithal edilmiş sınıf, işlev ve sabitler tek bir use deyimi içinde birlikte gruplanabiliyor.
7.0.0 | Eklendi: `new class` üzerinden anonim sınıf desteği eklendi.
7.0.0 | Uyumsuzluk: Traversable olmayan nesneler üzerinden yineleme, artık, dizileri gönderimleri üzerinden yinelemeyle aynı davranış kalıbına sahip.
7.0.0 | Değişti: Kullanılan iki niteliğin (uyumlu) özelliklerini tanımlamak artık bir hatayı tetiklemiyor.
5.6.0 | Eklendi: __debugInfo() yöntemi.
5.5.0 | Eklendi: ::class sihirli sabiti.
5.5.0 | Eklendi: İstisnaları işlemek için finally bloğu.
5.4.0 | Eklendi: Nitelikler.
5.4.0 | Değişti: Eğer bir abstract sınıfı kurucu için bir imza tanımlıyorsa, o imza artık yürürlüğe konuyor.
5.3.3 | Değişti: Bir isim alanlı sınıf adının son elemanı ile aynı isimdeki yöntemler artık kurucu olarak ele alınmıyor. Bu değişiklik isim alanlı olmayan sınıfları etkilemez.
5.3.0 | Değişti: Prototipte öntanımlı değerlere sahip olan arayüzleri yöntemlerle gerçekleyen sınıfların artık arayüzün öntanımlı değeriyle eşleşmesi gerekmiyor.
5.3.0 | Değişti: Sınıflara bir değişken kullanarak başvurmak artık mümkün (örn., `echo $classname::constant;`). Değişkenin değeri bir anahtar sözcük olmamalıdır (örn., `self`, `parent` veya `static`).
5.3.0 | Değişti: Sihirli aşırı yükleme yöntemleri static bildirilirse `E_WARNING` seviyesinde bir hata oluşur.
5.3.0 | Değişti: 5.3.0 öncesinde, __autoload() işlevinde yavrulanan istisnalar catch bloğunda yakalanamaz ve ölümcül hata oluşur. `__autoload` işlevinde yavrulanmayan istisnalar catch bloğunda tek bir önlemle yakalanabilir. Özel bir istisna yavrulanıyorsa bu özel istisna sınıfı mevcut olmalıdır. `__autoload` işlevi özel istisna sınıfını otomatik yüklemek için ardışık olarak kullanılabilir.
5.3.0 | Eklendi: __callStatic yöntemi.
5.3.0 | Eklendi: Sınıf const ve özellik tanımları için yorumlu ve yorumsuz metin desteği. Yorumlu değerlerin çift tırnaklı dizgelerin uyduğu kurallara uyması gerektiğini unutmayın (örn, değişken olmayanların içinde).
5.3.0 | Eklendi: Statik İçselleştirim.
5.3.0 | Eklendi: __invoke() yöntemi.
5.2.0 | Değişti: __toString() yöntemi sadece echo veya print ile doğrudan birleştirilip çağrılabilirdi. Artık, herhangi bir string bağlamında (örn, `%s` seçenekli printf() içinde) çağrılabilir fakat diğer türlerin bağlamlarında (örn, `%d` seçeneği ile) çağrılamaz. PHP 5.2.0 itibariyle, nesnelerin `__toString` yöntemi olmaksızın dizgeye dönüştürülmesi `E_RECOVERABLE_ERROR` seviyesinde bir hataya sebep olur. PHP 5.2.0'dan itibaren, object türünü __toString yöntemi olmaksızın string türüne dönüştürmek `E_RECOVERABLE_ERROR` seviyesinde bir hatayı tetiklemektedir.
5.1.3 | Değişti: PHP 5 öcesinde, `var` kullanımı önerilmezdi ve `E_STRICT` seviyesinde bir hataya sebep olurdu. Artık, önerilmeme durumu ortadan kalktığından bir hataya sebep olmuyor.
5.1.0 | Değişti: __set_state() statik yöntemi artık var_export() ile ihracedilen sınıflar için çağrılabiliyor.
5.1.0 | Eklendi: __isset() ve __unset() yöntemi.

# İsim Alanları

## İçindekiler

- Giriş
- İsim Alanları
- Alt İsim Alanları
- Birden fazla isim alanının aynı dosyada tanımlanması
- Temeller
- İsim alanları ve dinamik dil özellikleri
- namespace sözcüğü ve __NAMESPACE__
- Takma ad ve İthal
- Küresel alan
- Küresel alana son çare
- İsim çözünürlük kuralları
- SSS

## İsim Alanlarına Giriş

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

İsim alanı nedir? En dar tanımıyla, öğeleri sarmalamanın bir yoludur. Çoğu bakımdan bu soyut bir kavram gibi görünebilir. Örneğin, bir işletim sisteminin dizinleri bir birleriyle ilgili dosyaları gruplamaya yarar ve içerdiği dosyalar için bir isim alanı görevi yapar. Daha belirgin bir örnek olarak, `/home/ali` ve `/home/veli` dizinlerinde `mesela.txt` adında birer dosya bulunduğunu varsayalım. `/home/ali` dizinindeki dosyaya dizin dışından erişmek istersek dosyanın önüne dizin ayracı ile dizin adını yerleştiririz. Programcılık dünyasındaki isim alanlarına da aynı kurallar uygulanır.

PHP dünyasında isim alanları, kütüphane ve uygulama yazarlarının aşağıdaki gibi sınıflar ve işlevler gibi yeniden kullanılabilir elemanları oluşturken karşılaştıkları iki soruna çözüm getirmek amacıyla tasarlanmıştır:

1. Yazdığınız kod ile yerleşik PHP sınıfları/işlevleri/sabitleri veya üçüncü şahısların sınıfları/işlevleri/sabitleri arasındaki isim çakışmaları.
2. İlk sorunu hafifletmek ve kaynak kodun okunabilirliğini arttırmak için epeyce_uzun_isimlere takma ad tanımlama (veya kısaltma) yeteneği.

PHP isim alanları birbirleriyle ilişkili sınıflar, arayüzler, sabitler ve işlevleri gruplamak için bir yol sunar. PHP'deki isim alanı söz dizimi için bir örnek:

Örnek 1 - İsim alanı söz dizimi örneği

    <?php
    namespace isim\alanım; // "İsim Alanlarının Tanımlanması" bölümüne bakınız

    class Sınıfım {}
    function işlevim() {}
    const SABİTİM = 1;

    $a = new Sınıfım;
    $c = new \isim\alanım\Sınıfım; // "Küresel Etki Alanı" bölümüne bakınız

    $a = strlen('selam'); // "İsim alanlarının kullanımı: Son çare olarak
                          // küresel işlev ve sabitler" bölümüne bakınız

    $d = \isim\alanım\SABİTİM;        // isim alanı işleci ve __NAMESPACE__
    $d = __NAMESPACE__ . '\SABİTİM';  // sabiti" bölümüne bakınız
    echo constant($d); // "İsim alanları ve dinamik dil özellikleri"
                       // bölümüne bakınız
    ?>

> Bilginize: İsim alanı isimleri harf büyüklüğüne duyarlıdır.

> Bilginize:

> İsim alanı ismi olarak `PHP` ve `PHP\Classes` gibi bu isimle başlayan bileşik isimler dahili dil kullanımına ayrılmış olup kullanıcı yazılımlarında kullanılmamalıdır.

## İsim Alanlarının Tanımlanması

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

İsim alanları içinde her çeşit PHP kodu bulunabilirse de sadece şu tür kod isim alanlarından etkilenir: Sınıflar (nitelikler ve soyutlama dahil), arayüzler, işlevler ve sabitler.

İsim alanları, `namespace` anahtar sözcüğü ile bildirilirler. Bir isim alanını içeren bir dosyada isim alanı bütün diğer kodlardan önce (ama bir declare satırından önce değil) dosyanın başlarında bildirilmelidir.

Örnek 1 - Tek bir isim alanı bildirimi

    <?php
    namespace Projem;

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */ }

    ?>

> Bilginize: Tamamen nitelenmiş isimlere (yani, bir ters bölü ile başlayan isimlere) isim alanı bildirimlerinde izin verilmez, çünkü böyle oluşumlar göreli isim alanı ifadeleri olarak yorumlanır.

Bir isim alanı bildiriminden önce bulunmasına izin verilen tek oluşum, kaynak dosyanın kodlamasının tanımlandığı `declare` deyimidir. Bunun dışında, baştaki fazladan boşluklar da dahil hiçbir PHP-dışı kod, bir isim alanı bildiriminden önce yer alamaz. Örnek:

Örnek 2 - Tek bir isim alanı bildirimi

    <html>
    <?php
    namespace Sınıfım; // ölümcül hata - namespace, betikteki ilk deyim olmalıdır
    ?>

Diğer tüm PHP oluşumlarının tersine, isim alanının dosya sistemi içinde parçalara bölünebilmesi için aynı isim alanı birden fazla dosyada tanımlanabilir.

## Alt İsim Alanlarının Bildirilmesi

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Dizinler ve dosyalardaki gibi PHP isim alanı isimleri arasında da bir hiyeraraşi belirtmek mümkündür. Bu bakımdan, bir isim alanı başka isim alanlarının altında tanımlanabilir:

Örnek 1 - Tek bir isim alanının hiyerarşik bildirimi

    <?php
    namespace Projem\Alt\Seviye;

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }

    ?>

Yukarıdaki örnekte, `Projem\Alt\Seviye\BAĞLANTI_TAMAM` sabiti, `Projem\Alt\Seviye\Bağlantı` sınıfı ve `Projem\Alt\Seviye\bağlan` işlevi oluşturulmaktadır.

## Birden Fazla İsim Alanının Aynı Dosyada Tanımlanması

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Birden fazla isim alanı aynı dosya içinde bildirilebilir. İki çeşit söz dizimine izin verilir.

Örnek 1 - Birden fazla isim alanın ayrımsız ardarda bildirilmesi

    <?php
    namespace Projem;

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }

    namespace DiğerProjem;

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }
    ?>

Bu söz dizimi aynı dosya içinde birden fazla isim alanı bildirimi için önerilmez. Bunun yerine ayraçlı söz dizimi önerilir.

Örnek 2 - Birden fazla isim alanın ayraçlı olarak bildirilmesi

    <?php
    namespace Projem {

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }
    }

    namespace DiğerProjem {

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }
    }
    ?>

Aynı dosya içinde birden fazla isim alanını birleştirmek iyi bir kodlama uygulaması olarak teşvik edilmektedir. Çoğunlukla çok sayıda PHP betiğini aynı dosyada birleştirmek amacıyla kullanılır.

İsim alansız küresel kodu isim alanlı kodla bir arada kullanmanın tek yolu ayraçlı söz dizimini kullanmaktır (diğerine izin verilmemektedir). Küresel kod isimsiz bir isim alanı bildirimi ile aynı dosyada şöyle bildirilebilir:

Örnek 3 - Birden fazla isim alanın isim alansız kodla birlikte bildirilmesi

    <?php
    namespace Projem {

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }
    }

    namespace { // küresel kod
    session_start();
    $a = Projem\bağlan();
    echo Projem\Bağlantı::başlat();
    }
    ?>

İsim alanı ayraçlarının dışında, kodlama belirten `declare` deyimi dışında hiçbir PHP kodu bulunamaz.

Örnek 4 - Birden fazla isim alanın isim alansız kodla birlikte bildirilmesi

    <?php
    declare(encoding='UTF-8');
    namespace Projem {

    const BAĞLANTI_TAMAM = 1;
    class Bağlantı { /* ... */ }
    function bağlan() { /* ... */  }
    }

    namespace { // küresel kod
    session_start();
    $a = Projem\bağlan();
    echo Projem\Bağlantı::başlat();
    ?>

## İsim alanlarının kullanımı: Temeller

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

İsim alanlarının kullanımından önce PHP'nin kodunuzdaki hangi isim alanlı kodu isteğinizi nasıl anlayabildiğinden bahsetmek gerekir. Bunu daha kolay anlayabilmek için PHP isim alanları ile dosya sistemleri arasındaki benzerlikten yola çıkılabilir. Bir dosya sistemindeki bir dosyaya üç yolla erişilebilir:

1. `fan.txt` şeklinde göreli dosya ismiyle. Bu isim dosya sisteminde içinde bulunulan dizin `geçerlidizin/` olmak üzere `geçerlidizin/fan.txt` olarak çözümlenir. Dolayısıyla geçerli dizin `/home/veli` ise dosya ismi `/home/veli/fan.txt` olarak çözümlenecektir.
2. `altdizin/fan.txt` şeklinde göreli dosya yolu. Bu isim dosya sisteminde içinde bulunulan dizin `geçerlidizin/` olmak üzere `geçerlidizin/altdizin/fan.txt` olarak çözümlenir.
3. `/home/veli/fan.txt` şeklinde mutlak dosya yolu. Bu, `/home/veli/fan.txt` olarak çözümlenir.

Aynı kurallar PHP'deki isim alanlı elemanlara da uygulanabilir. Örneğin bir sınıf ismine üç şekilde başvurulabilir:

1. `$a = new fan();` veya `fan::statikyöntem();` gibi bir nitelenmemiş isim veya öneksiz bir sınıf ismi. Eğer geçerli isim alanı ismi `geçerlisimalanı` ise bu isim, `geçerlisimalanı\fan` olarak çözümlenir. Eğer kod küresel ve isim alansız ise, isim `fan` olarak çözümlenecektir. Bir ayrıntı: Eğer isim alanlı işlev ve sabitler tanımlı ise nitelenmemiş isimli işlevler ve sabitler küresel işlevler ve sabitler olarak çözümlenir. Ayrıntılar için İsim alanlarının kullanımı: Son çare olarak küresel işlev ve sabitler bölümüne bakınız.
2. `$a = new altisimalanı\fan();` veya `altisimalanı\fan::statikyöntem();` gibi bir nitelenmemiş isim veya öneksiz bir sınıf ismi. Eğer geçerli isim alanı ismi `geçerlisimalanı` ise bu isim, `geçerlisimalanı\altisimalanı\fan` olarak çözümlenir. Eğer kod küresel ve isim alansız ise, isim `altisimalanı\fan` olarak çözümlenecektir.
3. `$a = new \geçerlisimalanı\fan();` veya `\geçerlisimalanı\fan::statikyöntem();` gibi tamamen nitelenmiş isim veya küresel önekli bir isim. Bu isim daima kodda belirtildiği gibi `geçerlisimalanı\fan` olarak çözümlenir.

Üç söz dizimi aşağıda örneklenmiştir:

dosya1.php

    <?php
    namespace Fan\Fin\altisimalanı;

    const FAN = 1;
    function fan() {}
    class fan
    {
        static function statikyöntem() {}
    }
    ?>

dosya2.php

    <?php
    namespace Fan\Fin;
    include 'dosya1.php';

    const FAN = 2;
    function fan() {}
    class fan
    {
        static function statikyöntem() {}
    }

    /* Nitelenmemiş isim */
    fan();              // Fan\Fin\fan işlevine çözümlenir
    fan::statikyöntem(); // Fan\Fin\fan sınıfının statikyöntem yöntemine çözümlenir
    echo FAN;           // Fan\Fin\FAN sabitine çözümlenir

    /* Nitelenmiş isim */
    altisimalanı\fan(); // Fan\Fin\altisimalanı\fan işlevine çözümlenir
    altisimalanı\fan::statikyöntem(); // Fan\Fin\altisimalanı\fan sınıfının
                                     // statikyöntem yöntemine çözümlenir
    echo altisimalanı\FAN; // Fan\Fin\altisimalanı\FAN sabitine çözümlenir

    /* Tamamen nitelenmiş isim */
    \Fan\Fin\fan();              // Fan\Fin\fan işlevine,
    \Fan\Fin\fan::statikyöntem(); // Fan\Fin\fan sınıfının statikyöntem yöntemine,
    echo \Fan\Fin\FAN;           // Fan\Fin\FAN sabitine çözümlenir
    ?>

Herhangi bir küresel sınıf, işlev veya sabite \strlen(), \Exception veya \`INI_ALL` gibi tamamen nitelenmiş isimleriyle erişilebileceğine dikkat ediniz.

Örnek 1 - Küresel sınıf, işlev ve sabitlere bir isim alanı içinden erişim

    <?php
    namespace Fan;

    function strlen() {}
    const INI_ALL = 3;
    class Exception {}

    $a = \strlen('merhaba');      // strlen küresel işlevini çağırır
    $b = \INI_ALL;                // INI_ALL küresel sabitini çağırır
    $c = new \Exception('error'); // Exception küresel sınıfını örnekler
    ?>

## İsim alanları ve dinamik dil özellikleri

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

PHP'nin isim alanları gerçeklenimi bir programlama dili olarak PHP'nin kendi dinamik doğasından etkilenir. Örnek olarak aşağıdaki kodu isim alanlı koda dönüştürmek istersek:

Örnek 1 - Dinamik olarak erişilen elemanlar

örnek1.php:

    <?php
    class sınıfadı
    {
        function __construct()
        {
            echo __METHOD__,"\n";
        }
    }
    function işlevadı()
    {
        echo __FUNCTION__,"\n";
    }
    const sabitadı = "küresel";

    $a = 'sınıfadı';
    $obj = new $a;                   // sınıfadı::__construct basar
    $b = 'işlevadı';
    $b();                            // işlevadı basar
    echo constant('sabitadı'), "\n"; // küresel basar
    ?>

Tamamen nitelenmiş isim kullanmak gerekir (isim alanı önekli sınıf adı). Bir dinamik sınıf, işlev veya sabit ismi içinde bir nitelenmiş isim ile tamamen nitelenmiş isim arasında bir fark olmadığından baştaki ters bölünün gereksiz oluşuna dikkat edin.

Örnek 2 - Dinamik olarak erişilen isim alanlı elemanlar

    <?php
    namespace isimalanıadı;
    class sınıfadı
    {
        function __construct()
        {
            echo __METHOD__,"\n";
        }
    }
    function işlevadı()
    {
        echo __FUNCTION__,"\n";
    }
    const sabitadı = "isimalanlı";

    /* çift tırnakları kullanacaksanız, "\\isimalanıadı\\sınıfadı"
       biçiminde olmalıdır */
    $a = '\isimalanıadı\sınıfadı';
    $obj = new $a; // isimalanıadı\sınıfadı::__construct basar
    $a = 'isimalanıadı\sınıfadı';
    $obj = new $a; // bu da isimalanıadı\sınıfadı::__construct basar
    $b = 'isimalanıadı\işlevadı';
    $b(); // isimalanıadı\işlevadı basar
    $b = '\isimalanıadı\işlevadı';
    $b(); //bu da isimalanıadı\işlevadı basan
    echo constant('\isimalanıadı\sabitadı'), "\n"; // isimalanlı basar
    echo constant('isimalanıadı\sabitadı'), "\n"; // bu da isimalanlı basar
    ?>

SSS arasındaki Dizgelerdeki isim alanı adlarının öncelenmesi konusuna da bakmayı unutmayın.

## `namespace` sözcüğü ve `__NAMESPACE__` sihirli sabiti

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

PHP, geçerli isim alanı içindeki elemanlara mutlak olarak iki yolla erişimi destekler: sihirli `__NAMESPACE__` sabiti ve `namespace` anahtar sözcüğü.

`__NAMESPACE__` sabitinin değeri içinde bulunulan isim alanının adını içeren bir dizgedir. Küresel alandaki isim alansız kod için sabitin değeri boş dizgedir.

Örnek 1 - İsim alanlı kod, __NAMESPACE__ örneği

    <?php
    namespace Projem;

    echo '"', __NAMESPACE__, '"'; // "Projem" basar
    ?>

Örnek 2 - Küresel kod, __NAMESPACE__ örneği

    <?php

    echo '"', __NAMESPACE__, '"'; // "" basar
    ?>

`__NAMESPACE__` sabiti dinamik olarak oluşturulan isimler için kullanışlıdır.

Örnek 3 - Dinamik isim oluşturmak için __NAMESPACE__ kullanımı

    <?php
    namespace Projem;

    function get($sınıfadı)
    {
        $a = __NAMESPACE__ . '\\' . $sınıfadı;
        return new $a;
    }
    ?>

`namespace` sözcüğü, geçerli isim alanından veya bir alt isim alanından doğrudan doğruya bir eleman isteği yaparken kullanılabilir. Sınıflardaki `self` işlecinin isim alanlarındaki karşılığıdır.

Örnek 4 - Bir isim alanı içinde `namespace` işleci

    <?php
    namespace Projem;

    use fan\fin as fon;  // bak: "İsim alanlarının kullanımı: İthal/Rumuz"

    fin\fon();           // Projem\fin\fon() işlevini çağırır
    namespace\fin\fon(); // Projem\fin\fon() işlevini çağırır

    namespace\işlev();   // Projem\işlev() işlevini çağırır
    namespace\alt\işlev();    // Projem\alt\işlev() işlevini çağırır
    namespace\isim::yöntem(); // Projem\isim sınıfının statik "yöntem"
                              // yöntemini çağırır
    $a = new namespace\alt\isim(); // Projem\alt\isim sınıfını örnekler
    $b = namespace\SABİT;     // Projem\SABİT sabitinin değerini $b'ye atar
    ?>

Örnek 5 - Küresel kod içinde `namespace` işleci

    <?php

    namespace\işlev();        // işlev() işlevini çağırır
    namespace\alt\işlev();    // alt\işlev() işlevini çağırır
    namespace\isim::yöntem(); // isim sınıfının statik "yöntem" yöntemini çağırır
    $a = new namespace\alt\isim(); // alt\isim sınıfını örnekler
    $b = namespace\SABİT;     // SABİT sabitinin değerini $b'ye atar
    ?>

## İsim alanlarının kullanımı: İthal ve Takma ad

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Dış kaynaklı tamamen nitelenmiş bir isme bir takma adla veya ithal ederek başvurma yeteneği isim alanlarının önemli bir özelliğidir. Bu özellik, Unix dosya sistemlerinin bir dizin veya dosyaya bir sembolik bağ oluşturma yeteneğine benzer.

PHP sabitler, işlevler, sınıflar, arayüzler, nitelikler, sayılamalar ve isim alanlarına takma ad verilmesini ve ithalini destekler.

Takma ad kullanımı `use` işleci üzerinden sağlanır. Aşağıda 5 çeşidin de ithal örneğine yer verilmiştir:

Örnek 1 - `use` işleci ile ithal/takma ad kullanımı

    <?php
    namespace fan;
    use Bir\Tam\Sınıfadı as BirBaşkası;

    // use Bir\Tam\iAadı as iAadı ile aynıdır
    use Bir\Tam\iAadı;

    // küresel bir sınıfın ithali
    use DiziNesnesi;

    // bir işlevin ithali
    use function Bir\Tam\işlevAdı;

    // bir işleve takma ad
    use function Bir\Tam\işlevAdı as func;

    // bir sabitin ithali
    use const Bir\Tam\SABİT;

    $nesne = new namespace\BirBaşkası; // fan\BirBaşkası sınıfını örnekler
    $nesne = new BirBaşkası; // Bir\Tam\Sınıfadı  sınıfını örnekler
    iAadı\altia\işlev(); // Bir\Tam\iAadı\altia\işlev işlevini çağırır
    $a = new DiziNesnesi(array(1)); // DiziNesnesi sınıfını örnekler
    // "use DiziNesnesi" olmasaydı fan\DiziNesnesi sınıfını örneklerdik
    func(); // Bir\Tam\işlevAdı işlevini çağırır
    echo SABİT; // Bir\Tam\SABİT değerini basar
    ?>

İsim alanlı adlar için baştaki terbölü gereksiz olup önerilmediği gibi bunlar geçerli isim alanına göre işlenmezler. İthal edilen isimler ise tamamen nitelenmiş olmalıdır. (Tamamen nitelenmiş isimler `Fan\Fin` şeklinde isim alanı ayracı içermelerine karşın küresel isimler `FanFin` şeklinde isim alanı ayracı içermezler.)

PHP bunlara ek olarak çok sayıda `use` deyiminin aynı satırda kullanılmasına imkan veren bir kısayola da sahiptir.

Örnek 2 - `use` işleci ile rumuz/ithal, çoklu `use` kullanımı

    <?php
    use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

    $nesne = new BirBaşkası; // Bir\Tam\Sınıfadı sınıfını örnekler
    iAadı\altia\işlev();     // Bir\Tam\iAadı\altia\işlev işlevini çağırır
    ?>

İthal işlemi derleme sırasında yerine getirilir ve dolayısıyla dinamik sınıf, işlev ve sabit isimlerini etkilemez.

Örnek 3 - İthal işlemi ve dinamik isimler

    <?php
    use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

    $nesne = new BirBaşkası; // Bir\Tam\Sınıfadı sınıfını örnekler
    $a = 'BirBaşkası';
    $nesne = new $a;         // BirBaşkası sınıfını örnekler
    ?>

Bunlara ek olarak, ithal işlemi sadece nitelenmemiş ve nitelenmiş isimleri etkiler. Tamamen nitelenmiş isimler mutlak olup ithal işleminden etkilenmez.

Örnek 4 - İthal işlemi ve tamamen nitelenmiş isimler

    <?php
    use Bir\Tam\Sınıfadı as BirBaşkası, Bir\Tam\iAadı;

    $nesne = new BirBaşkası;       // Bir\Tam\Sınıfadı sınıfını örnekler
    $nesne = new \BirBaşkası;        // BirBaşkası sınıfını örnekler
    $nesne = new BirBaşkası\birşey;  // Bir\Tam\Sınıfadı\birşey sınıfını örnekler
    $nesne = new \BirBaşkası\birşey; // BirBaşkası\birşey sınıfını örnekler
    ?>

### İthal etki alanı kuralları

`use` anahtar sözcüğü bir dosyanın en dış etki alanında veya isim alanı bildirimleri içinde kullanılmalıdır. Bunun sebebi ithal işleminin çalışma zamanında değil derleme sırasında yapılmasıdır, dolayısıyla bir bloğun etki alanında olamaz. Aşağıdaki örnekte uygun olmayan `use` kullanımı gösterilmiştir:

Örnek 5 - Usülsüz ithal kuralı

    <?php
    namespace Languages;

    function toGreenlandic()
    {
        use Languages\Danish;

        // ...
    }
    ?>

> Bilginize:

> İthal kuralları dosyaya özeldir, yani içerilen dosyalar içeren dosyanın ithal kurallarını miras alMAyacaktır.

### Gruplu `use` bildirimleri

Aynı isim alanından ithal edilen sınıflar, işlevler ve sabitler tek bir `use` deyiminde gruplanabilir.

    <?php

    use some\namespace\ClassA;
    use some\namespace\ClassB;
    use some\namespace\ClassC as C;

    use function some\namespace\fn_a;
    use function some\namespace\fn_b;
    use function some\namespace\fn_c;

    use const some\namespace\ConstA;
    use const some\namespace\ConstB;
    use const some\namespace\ConstC;

    // aşağıdaki gruplandırılmış use bildirimine eşdeğerdir
    use some\namespace\{ClassA, ClassB, ClassC as C};
    use function some\namespace\{fn_a, fn_b, fn_c};
    use const some\namespace\{ConstA, ConstB, ConstC};

## Küresel Alan

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Herhangi bir isim alanı tanımı olmaksızın, tüm sınıf ve işlev tanımları PHP'de isim alanlarının desteklenmediği zamanlardaki gibi küresel alana yerleştirilir. Bir ismin önüne doğrudan doğruya `\` konulması, bu ismin bir isim alanı bağlamında bile küresel alandan bir isim olarak işlem görmesini sağlar.

Örnek 1 - Küresel alan belirtiminin kullanımı

    <?php
    namespace A\B\C;

    /* A\B\C\fopen işlevidir */
    function fopen() {
         /* ... */
         $f = \fopen(...); // küresel fopen çağrılır
         return $f;
    }
    ?>

## İsim alanlarının kullanımı: Küresel alana son çare olarak küresel işlev ve sabitler

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Bir isim alanı içinde PHP, bir sınıf ismi, işlev veya sabitin bağlamında nitelenmemiş isimlere rastlarsa bunları farklı önceliklerle ele alır. Sınıf isimleri daima geçerli isim alanı ismine çözümlenir. Dolayısıyla yerleşik veya isim alansız kullanıcı sınıflarına erişmek için, bunların aşağıdaki gibi tamamen nitelenmiş isimlerinin kullanılması gerekir:

Örnek 1 - Küresel sınıflara bir isim alanı içinde erişim

    <?php
    namespace A\B\C;
    class Exception extends \Exception {}

    $a = new Exception('hi'); // $a, A\B\C\Exception sınıfının bir nesnesidir
    $b = new \Exception('hi'); // $b, Exception sınıfının bir nesnesidir

    $c = new ArrayObject; // ölümcül hata, A\B\C\ArrayObject yoktur
    ?>

İşlevler ve sabitler açısından PHP, bir isim alanlı işlev veya sabit mevcut değilse son çare olarak küresel işlevlere ve sabitlere başvurur.

Örnek 2 - Bir isim alanı içinde son çare olarak küresel işlev ve sabitlerin kullanımı

    <?php
    namespace A\B\C;

    const E_ERROR = 45;
    function strlen($str)
    {
        return \strlen($str) - 1;
    }

    echo E_ERROR, "\n"; // "45" basar
    echo INI_ALL, "\n"; // "7" basar - son çare olarak küresel INI_ALL

    echo strlen('hi'), "\n"; // "1" basar
    if (is_array('hi')) { // "dizi değil" basar
        echo "dizi\n";
    } else {
        echo "dizi değil\n";
    }
    ?>

## İsim çözünürlük kuralları

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

İsim çözünürlük kurallarının amaçları gereği bazı önemli tanımlar:

İsim alanı adı tanımları
Nitelenmemiş isim

  `Fan` gibi bir isim alanı ayracı içermeyen bir betimleyici.

Nitelenmiş isim

  `Fan\Fin` gibi bir isim alanı ayracı içeren bir betimleyici.

Tamamen nitelenmiş isim

  `\Fan\Fin` gibi bir isim alanı ayracı ile başlayan isim alanı ayraçlı bir betimleyici. `\Fan` isim alanı da tamamen nitelenmiş bir isimdir.

Göreli isim

  `namespace\Fan\Fin` gibi `namespace` ile başlayan bit tanımlayıcıdır.

İsimler şu kurallara göre çözümlenir:

1. Tamamen nitelenmiş isimler daima önünde ters bölü imi olmayan isimlere çözümlenir. Örneğin, `new \A\B` deyimi `A\B` sınıfı olarak çözümlenir.
2. Göreli isimler ise daima `namespace\` öneki geçerli isim alanı ile değiştirilerek çözümlenir. Eğer isim küresel isim alanındaysa `namespace\` öneki konmaz. Örneğin, `X\Y` isim alanındaki `namespace\A`, `X\Y\A` olarak çözümlenirken aynı isim küresel isim alanı içindeyse `A` olarak çözümlenir.
3. Nitelenmiş isimlerde ismin ilk bölümü geçerli sınıf/isimalanı ithal tablosuna göre dönüştürülür. Örneğin, `A\B\C` isim alanı `C` olarak ithal edilmişse `C\D\E` ismi `A\B\C\D\E` ismine dönüştürülür.
4. Nitelenmiş isimlerde ithal kurallarına göre dönüştürülmeyen tüm isimlerin önüne geçerli isim alanı ismi getirilir. Örneğin, `A\B` isim alanınındaki bir `C\D\E` ismi `A\B\C\D\E` ismine dönüştürülecektir.
5. Nitelenmemiş isimler derleme sırasında ilgili türün geçerli ithal kurallarına göre dönüştürülür. Yani, sınıf benzeri isimler sınıf/isimalanı ithal tablosuna göre, işlevler işlev ithal tablosuna göre, sabitler sabit ithal tablosuna göre dönüştürülür. Örneğin, `use A\B\C;` sonrasında `new C()` gibi bir kullanım `A\B\C()` olarak çözümlenir. benzer şekilde, `use function A\B\fan;` sonrasında `fan()` gibi bir kullanım `A\B\fan` ismine dönüştürülür.
6. İthal kuralları uygulanamayan nitelenmemiş sınıf benzeri isimler geçerli isim alanı ile öncelenerek dönüştürülür. Örneğin, `A\B` isim alanındaki `new C()` bildirimi `A\B\C` ismine çözümlenir.
7. İthal kuralları uygulanamayan nitelenmemiş işlev veya sabit benzeri isimler ve küresel isim alanı dışındaki kod isimleri çalışma sırasında çözümlenir. Kodun `A\B` isim alanında olduğunu varsayalım, `fan()` işlev çağrısı şöyle gerçekleşir:
   1. Geçerli isim alanında `A\B\fan()` işlevi aranır.
   2. Küresel `fan()` işlevi bulunmaya ve çağrılmaya çalışılır.

Örnek 1 - Örneklerle İsim Çözünürlüğü

    <?php
    namespace A;
    use B\D, C\E as F;

    // işlev çağrıları

    fan();      // Varsa "A" isim alanında tanımlı "fan", yoksa küresel "fan"

    \fan();     // Küresel alanda tanımlı "fan" çağrılır

    my\fan();   // "A\my" isim alanında tanımlı "fan" çağrılır

    F();        // Varsa "A" isim alanında tanımlı "F", yoksa küresel "F"

    //sınıf adı çağrıları

    new B();    // Varsa "A" isim alanında tanımlı "B" örneklenir
                // Yoksa "A\B" sınıfı otomatik olarak yüklenmeye çalışılır

    new D();    // ithal kuralları ile, "B" isim alanında tanımlı "D" örneklenir
                // yoksa "B\D" sınıfı otomatik olarak yüklenmeye çalışılır

    new F();    // ithal kuralları ile, "C" isim alanında tanımlı "E" örneklenir
                // yoksa "C\E" sınıfı otomatik olarak yüklenmeye çalışılır

    new \B();   // Varsa küresel alanda tanımlı "B" örneklenir
                // yoksa "B" sınıfı otomatik olarak yüklenmeye çalışılır

    new \D();   // Varsa küresel alanda tanımlı "D" örneklenir
                // yoksa "D" sınıfı otomatik olarak yüklenmeye çalışılır

    new \F();   // Varsa küresel alanda tanımlı "F" örneklenir
                // yoksa "F" sınıfı otomatik olarak yüklenmeye çalışılır

    // başka bir isim alanından statik yöntem/isim alanı işlevleri

    B\fan();    // "A\B" isim alanında tanımlı "fan" çağrılır

    B::fan();   // "A" isim alanında tanımlı "B" sınıfının "fan" yöntemi çağrılır
                // "A\B" sınıfı yoksa, "A\B" otomatik yüklenmeye çalışılır

    D::fan();   // ithal kuralları ile, "B" isim alanında tanımlı "D" sınıfının
                // "fan" yöntemi çağrılır; "B\D"  sınıfı yoksa, "B\D"
                // otomatik yüklenmeye çalışılır

    \B\fan();   // "B" isim alanında tanımlı "fan" çağrılır

    \B::fan();  // Küresel alandaki "B" sınıfının "fan" yöntemi çağrılır
                // "B" sınıfı yoksa, "B" otomatik yüklenmeye çalışılır

    // geçerli isim alanının statik yöntemleri ve isim alanı işlevleri

    A\B::fan();   // "A\A" isim alanında tanımlı "B" sınıfının "fan" yöntemi
                  // çağrılır; "A\A\B" sınıfı yoksa, "A\A\B" otomatik
                  // yüklenmeye çalışılır

    \A\B::fan();  // "A" isim alanında tanımlı "B" sınıfının "fan" yöntemi
                  // çağrılır; "A\B" sınıfı yoksa, "A\B" otomatik yüklenmeye
                  // çalışılır
    ?>

## SSS: İsim alanları hakkında bilinmesi gerekenler

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Bu SSS iki bölüme ayrılır: genel sorular ve isim alanlarını tamamen anlamaya yardımcı olacak gerçeklenime özgü ayrıntılar.

Önce genel sorularla başlıyoruz.

1. İsim alanlarını kullanmayacak olsam bile bu konuyla yine de ilgilenmeli miyim?
2. Yerleşik ve küresel sınıfları bir isim alanı içinde nasıl kullanabilirim?
3. İsim alanlarının sınıflarını, işlevlerini ve sabitlerini kendi isim alanlarında nasıl kullanabilirim?
4. `\bir\isim` veya `\isim` gibi bir isim nasıl çözümlenir?
5. `bir\isim` gibi bir isim nasıl çözümlenir?
6. `isim` gibi bir nitelenmemiş sınıf ismi nasıl çözümlenir?
7. `isim` gibi bir nitelenmemiş işlev veya sabit ismi nasıl çözümlenir?

İsim alanları gerçeklenimini tamamen anlamaya yardımcı olacak gerçeklenime özgü bir kaç ayrıntı vardır.

1. İthal edilen isimler aynı dosyada tanımlı sınıflarla çelişmemelidir.
2. İç içe isim alanlarına izin verilmez.
3. Dinamik isim alanları isimlerinin (tırnak içine alınmış betimleyiciler) içindeki tersbölülerin öncelenmesi gerekir.
4. Tersbölü kullanılarak atıf yapılan tanımsız sabitler ölümcül hataya sebep olur.
5. Özel `null`, `true` veya `false` sabitleri geçersiz kılınamaz.

### İsim alanlarını kullanmayacak olsam bile bu konuyla yine de ilgilenmeli miyim?

Hayır. Ne isim alanları mevcut koddan etkilenir ne de isim alanlarını içermeyen kodlar isim alanlarından etkilenir. İsterseniz kodu böyle yazabilirsiniz:

Örnek 1 - Küresel sınıflara bir isim alanı dışından erişim

    <?php
    $a = new \stdClass;
    ?>

Bu kod şuna eşdeğerdir:

Örnek 2 - Küresel sınıflara bir isim alanı dışından erişim

    <?php
    $a = new stdClass;
    ?>

### Yerleşik ve küresel sınıfları bir isim alanı içinde nasıl kullanabilirim?

Örnek 3 - İsim alanı içinden yerleşik sınıflara erişim

    <?php
    namespace fan;
    $a = new \stdClass;

    function test(\ArrayObject $bağımsız_değişken_türü_örneği = null) {}

    $a = \DirectoryIterator::CURRENT_AS_FILEINFO;

    // Bir yerleşik veya küresel sınıfın genişletilmesi
    class MyException extends \Exception {}
    ?>

### İsim alanlarının sınıflarını, işlevlerini ve sabitlerini kendi isim alanlarında nasıl kullanabilirim?

Örnek 4 - İsim alanındaki dahili sınıf, işlev ve sabitlere erişim

    <?php
    namespace fan;

    class Sınıfım {}

    // bağımsız değişken türü olarak geçerli isim alanındaki bir sınıfın kullanımı
    function dnm(Sınıfım $bağımsız_değişken_türü_örneği = null) {}
    // bağımsız değişken türü olarak geçerli isim alanındaki bir sınıfın başka
    // bir yolla kullanımı
    function dnm(\fan\Sınıfım $bağımsız_değişken_türü_örneği = null) {}

    // geçerli isim alanındaki bir sınıfın genişletilmesi
    class AltSınıfım extends Sınıfım {}

    // bir küresel işleve erişim
    $a = \küreselişlev();

    // bir küresel sabite erişim
    $b = \INI_ALL;
    ?>

### `\bir\isim` veya `\isim` gibi bir isim nasıl çözümlenir?

`\` ile başlayan isimler daima yazıldıkları gibi çözümlenirler, bu bakımdan `\bir\isim` aslında `bir\isim`'dir; `\Exception` da aslında `Exception`'dır.

Örnek 5 - Tamamen nitelenmiş isimler

    <?php
    namespace fan;
    $a = new \bir\isim(); // "bir\isim" sınıfını örnekler
    echo \strlen('hi');   // "strlen" işlevini çağırır
    $a = \INI_ALL;        // $a değişkenine "INI_ALL" sabitinin değeri atanır
    ?>

### `bir\isim` gibi bir isim nasıl çözümlenir?

Bir tersbölü içeren, ancak tersbölü ile başlamayan `bir\isim` gibi isimler iki farklı yolla çözümlenebilir.

`bir` ismini başka bir isimle ithal eden bir deyim varsa bu takma isim `bir\isim` içindeki `bir`'e uygulanır.

Aksi takdirde, `bir\isim` isminin önüne geçerli isim alanı adı getirilir.

Örnek 6 - Nitelenmiş isimler

    <?php
    namespace fon;
    use fan\fin as fon;

    $a = new bir\isim(); // "fon\bir\isim" sınıfını örnekler
    fon\bar::isim(); // "fan\fin\bar" sınıfının "isim" statik yöntemi çağrılır
    bir\bar();        // "fon\bir\bar" işlevi çağrılır
    $a = bir\BAR;    // $a değişkenine "fon\bir\BAR" sabitinin değeri atanır
    ?>

### `isim` gibi bir nitelenmemiş sınıf ismi nasıl çözümlenir?

`isim` gibi tersbölü içermeyen sınıf isimleri 2 farklı yolla çözümlenebilir.

`isim` ismini başka bir isimle ithal eden bir deyim varsa bu takma isim `isim`'e uygulanır.

Aksi takdirde, `isim` ismininin önüne geçerli isim alanı getirilir.

Örnek 7 - Nitelenmemiş sınıf isimleri

    <?php
    namespace fon;
    use fan\fin as fon;

    $a = new isim(); // "fon\isim" sınıfı örneklenir
    fon::isim();     // "fan\fin" sınıfının "isim" statik yöntemi çağrılır
    ?>

### `isim` gibi bir nitelenmemiş işlev veya sabit ismi nasıl çözümlenir?

`isim` gibi tersbölü içermeyen işlev ve sabit isimleri 2 farklı yolla çözümlenebilir.

Önce `isim` isminin önüne geçerli isim alanı ismi getirilir.

Son olarak, eğer isim alanında `isim` diye bir işlev veya sabit yoksa ve `isim` diye bir küresel işlev veya sabit varsa küresel alandaki kullanılır.

Örnek 8 - Nitelenmemiş işlev veya sabit isimleri

    <?php
    namespace fon;
    use fan\fin as fon;

    const FON = 1;

    function bir() {}
    function fon() {}
    function sort(&$a)
    {
        \sort($a); küresel "sort" işlevi çağrılıyor
        $a = array_flip($a);
        return $a;
    }

    bir(); // "fon\bir" çarılır
    $a = strlen('hi');  // "fon\strlen" mevcut olmadığından küresel
                        // "strlen" işlevi çağrılır
    $arr = array(1,3,2);
    $b = sort($arr);    // "fon\sort" işlevi çağrılır
    $c = fon(); // "fon\fon" işlevi çağrılır - ithal işlemi uygulanmaz

    $a = FON;     // $a değişkenine "fon\FON" sabitinin değeri
                  // atanır - ithal işlemi uygulanmaz
    $b = INI_ALL; // $b değişkenine "INI_ALL" küresel sabitinin değeri atanır
    ?>

### İthal edilen isimler aynı dosyada tanımlı sınıflarla çelişmemelidir.

Aşağıdaki iki betik birlikte kurallara uygundur:

dosya1.php

    <?php
    namespace bir\isim;
    class Sınıfım {}
    ?>

dosya2.php

    <?php
    namespace diğer;
    class BirŞey {}
    ?>

dosya.php

    <?php
    namespace bir\isim;
    include 'dosya1.php';
    include 'dosya2.php';

    use diğer\BirŞey as Sınıfım;
    $a = new Sınıfım; // "diğer" isim alanındaki "BirŞey" sınıfını örnekler
    ?>

`Sınıfım` sınıfı `bir\isim` isim alanında mevcut olduğu halde `Sınıfım` ayrı bir dosyada tanımlandığından herhangi bir isim çakışması olmaz. Ancak, sonraki örnekte, `Sınıfım` sınıfı `use` deyimi ile aynı dosyada tanımlandığından isim çakışmasından dolayı ölümcül hata oluşur.

    <?php
    namespace bir\isim;
    use diğer\BirŞey as Sınıfım;
    class Sınıfım {} // ölümcül hata: Sınıfım ithal edilen sınıfla çakışır
    $a = new Sınıfım;
    ?>

### İç içe isim alanlarına izin verilmez.

PHP isim alanlarının böyle iç içe tanımlanmasına izin vermez:

    <?php
    namespace bir\isim {
        namespace içiçe {
            class fan {}
        }
    }
    ?>

Bununla birlikte, isim alanlarını birbirinin içinde şöyle tanımlamak mümkündür:

    <?php
    namespace bir\isim\içiçe {
        class fan {}
    }
    ?>

### Dinamik isim alanları isimlerinin (tırnak içine alınmış betimleyiciler) içindeki tersbölülerin öncelenmesi gerekir.

Tersbölü imi dizgelerin içinde bir önceleme karakteri olarak kullanıldığından çift tırnaklar arasına alınmış bir dizge içindeki bir tersbölü karakterinin tersbölü ile öncelenmesi gerekir. Aksi takdirde, istenmeyen durumlar ortaya çıkabilir:

Örnek 9 - İsim alanlı isimleri çift tırnaklar arasında kullanmak tehlikelidir

    <?php
    $a = "tehlikeli\nesne"; // \n, çift tırnaklı dizge içinde
                                // satırsonu karakteridir!
    $obj = new $a;

    $a = 'bu\tamamen\tehlikesiz\nesne'; // burada sorun yok.
    $obj = new $a;
    ?>

Tersbölüleri tek tırnakları arasına alınmış bir dizge içinde kullanmak daha güvenli olsa da her iki dizge türünde de tersbölüleri öncelemek en güvenlisidir.

### Tersbölü kullanılarak atıf yapılan tanımsız sabitler ölümcül hataya sebep olur.

`FAN` gibi nitelenmemiş olarak tanımsız sabitlere rastlandığında PHP, bunun `FAN` değerli bir sabit varsayıldığını belirten bir uyarı üretecektir. İster nitelenmiş olsun ister tamamen nitelenmiş olsun tanımsız bir sabit daima ölümcül hataya sebep olur.

Örnek 10 - Tanımsız sabitler

    <?php
    namespace bar;
    $a = FAN;  // uyarı üretir - "FAN" sabit olarak tanımsız olduğundan
               // bir sabit ismi değil, bir sabit değer olarak ele alınır.
    $a = \FAN;     // ölümcül hata, isim alanlı tanımsız sabit: FAN
    $a = Fin\FAN;  // ölümcül hata, isim alanlı tanımsız sabit: bar\Fin\FAN
    $a = \Fin\FAN; // ölümcül hata, isim alanlı tanımsız sabit: Fin\FAN
    ?>

### Özel `null`, `true` veya `false` sabitleri geçersiz kılınamaz.

Bir özel, yerleşik sabiti bir isim alanlı sabit olarak tanımlamaya kalkışmak ölümcül hatayla sonuçlanır.

Örnek 11 - Tanımsız sabitler

    <?php
    namespace bar;
    const NULL = 0;       // ölümcül hata;
    const true = 'ahmak'; // bu da ölümcül hata;
    // etc.
    ?>

# Sayılamalar

## İçindekiler

- Sayılamalara giriş
- Temel Sayılamalar
- Destekli Sayılamalar
- Sayılama Yöntemleri
- Statik Sayılama Yöntemleri
- Sayılama Sabitleri
- Nitelikler
- Sabit ifadelerinde sayılama değerleri
- Nesnelerden farkları
- Değer Listeleme
- Dizgeleştirme
- - Sayılamalar neden genişletilemez?
- Örnekler

## Sayılamalara giriş

(PHP 8 >= 8.1.0)

Sayılamalar (veya tür adı olarak "enum") tanımlamalarda, olası değer kümelerinden biriyle sınırlanabilen özel bir veri türünü kullanabilmeyi sağlar. Bu, "geçersiz durumların devre dışı bırakılmasını" sağladığından, bir etki alanı modeli tanımlarken özellikle yararlı olabilir.

Sayılamalar çoğu yazılım dilinde çok çeşitli farklı özelliklerle yer almaktadır. PHP'de ise, `enum` özel bir nesne çeşididir. Kendisi bir sınıf olup içeriği kılıflar (case) bu sınıfın tekil olarak örneklenmiş nesneleridir. Yani, bir sayılama kılıfı (enum case) geçerli bir nesne olup, tür sınamaları dahil, bir nesnenin kullanılabildiği her yerde kullanılabilir.

Sayılamaların en bilinen örneği, `true` ve `false` değerlerini (ikil) sayılı tür olarak içeren yerleşik mantıksal türdür. Sayılamalar geliştiricinin kendi keyfi sayılamalarını tanımlayabilmesini sağlar.

## Temel Sayılamalar

Sayılamalar sınıflara benzer ve sınıflar, arayüzler ve niteliklerle aynı isim alanını paylaşır. Ayrıca, aynı yolla otomatik yüklenebilir. Her sayılama, sınırlı ve sabit sayıda olası değer içeren yeni bir tür tanımlar.

    <?php
    enum Deste
    {
        case Kupalar;
        case Karolar;
        case Sinekler;
        case Maçalar;
    }
    ?>

Bu bildirim `Deste` adında yalnız ve yalnız dört meşru değer içeren yeni bir sayılama türü oluşturur: `Deste::Kupalar`, `Deste::Karolar`, `Deste::Sinekler` ve `Deste::Maçalar`. Değişkenlere bu dört değerden biri atanabilir. Yalnızca sayılama türünde değerlerin aktarılabileceği bir işlevin türü sadece o sayılama türüne karşı tür denetimine tabi tutulabilir.

    <?php
    function kart_seç(Deste $deste)
    {
        /* ... */
    }

    $val = Deste::Karolar;

    // OK
    kart_seç($val);

    // OK
    kart_seç(Deste::Sinekler);

    // Tür hatası: kart_seç(): Bağımsız değişken #1 ($deste) Deste türünde olmalıyken string türünde
    kart_seç('Sinekler');
    ?>

Bir sayılama sıfır veya daha fazla sayıda `case` tanımı içerebilir ve azami bir sınır yoktur. `case` içermeyen sayılamalar sözdizimsel olarak geçerli olsa da yararsızdır.

Sayılama kılıflarında PHP'nın yaftalara uyguladığı sözdizimi kuralları uygulanır, daha fazla bilgi Sabitler bölümünde bulunabilir.

Öntanımlı olarak, bir `case` özünde bir sayıl değerle desteklenmez. Yani, `Deste::Kupalar` sayıl olarak `"0"` değerine eşit değildir. Bunun yerine, her `case` taşıdığı isimde tekil bir nesneyle desteklenir. Şöyle ki:

    <?php
    $a = Deste::Sinekler;
    $b = Deste::Sinekler;
    $a === $b; // true
    $a instanceof Deste;  // true
    ?>

Bu ayrıca, sayılama değerlerin birbirlerinden büyük veya küçük olamayacağı anlamına da gelir (zaten nesneler arasında böyle bir karşılaştıma anlamsızdır). Sayılama değerleri ile çalışırken bu karşılaştırmalar daima `false` döndürür.

Bir değer içermeyen `case` türüne "Desteksiz Kılıf" denir. Sadece desteksiz kılıflar içeren sayılamalara "Desteksiz Sayılama" denir.

Tüm desteksiz kılıflar içerildikleri sayılamayı gerçekleyen örneklerdir. `enum` türü dahili olarak bir sınıfla ifade edilir.

Tüm kılıflar birer salt-okunur özellik olup `name` harf büyüklüğüne duyarsız olarak kılıfın kendi ismidir.

    <?php
    print Deste::Sinekler->name;
    // çıktısı: "Sinekler"
    ?>

`name` dinamik olarak elde edilmişse, bir enum durumunun varlığına bakmak veya okumak için defined() ve constant() işlevlerini kullanmak da mümkündür. Bununla birlikte, Destekli sayılamaların kullanımı çoğu kullanım durumunda çalışması gerektiğinden bu önerilmez.

## Destekli Sayılamalar

Öntanımlı olarak sayıl kılıfların sayıl bir karşılığı yoktur. Basitçe tekil nesnelerdir. Bununla birlikte, bir sayılama kılıfının bir veritabanına veya benzer bir veri deposuna giriş-çıkış yapabilmesini gerektiren çok sayıda durum vardır, dolayısıyla, dahili olarak tanımlanmış yerleşik bir sayıl (ve dolayısıyla dizgeleştirilebilir) eşdeğerin varlığı yararlıdır.

Bir sayılamaya sayıl bir eşdeğer tanımlama sözdizimi:

    <?php
    enum Deste: string
    {
        case Kupalar = 'Ku';
        case Karolar = 'Ka';
        case Sinekler = 'S';
        case Maçalar = 'M';
    }
    ?>

Basitçe bir değerle "desteklenmiş" olduğundan sayıl eşdeğeri olan kılıflara "Destekli Kılıf" denir. Yalnızca destekli kılıflar içeren sayılamalara "Destekli Sayılama" denir. Destekli bir sayılama sadece destekli kılıfları içerir, desteksiz kılıf içermez. Desteksiz bir sayılama ise sadece desteksiz kılıfları içerir, destekli kılıf içermez.

Destekli bir sayılama, `int` veya `string` türünde bir değerle ama daima tek bir türdeki değerlerle desteklenebilir (yani ya hepsi `int` ya da hepsi `string` türünde olabilir). Bir sayılama sayıl bir eşdeğere sahip olarak imlenmişse, tüm kılıflarına açıkça eşsiz birer değer tanımlanmış olmalıdır. Sayıl eşdeğerler otomatik olarak üretilmeyecektir (örneğin, sıralı tamsayılar). Destekli kılıflar diğer kılıflar arasında eşsiz olmalı, aynı sayıl eşdeğere sahip birden fazla kılıf olmamalıdır. Ancak, bir takma ad oluşturmak amacıyla bir sabite atanabilir. Bkz: Sayılama Sabitleri.

Sayıl eşdeğerler sayılların kendileri olabileceği gibi sayıl ifadeleri de olabilir. Sabitler ve sabit ifadeleri desteklenmez. Yani, `1 + 1` geçerli, fakat `1 + SOME_CONST` geçersizdir.

Destekli Kılıflar ayrıca salt-okunur özellikler olup, `value` tanımda belirtilen değerdir.

    <?php

    print Deste::Sinekler->value;
    // Çıktısı: "S"
    ?>

`value` özelliğin salt-okunurluğunu zorlamak amacıyla bir değişkene gönderimli atanamaz. Yani, aşağıdaki örnek bir hata üretir:

    <?php

    $deste = Deste::Sinekler;
    $ref = &$deste->value;
    // hata: Deste::$value özelliğine gönderim sağlanamıyor
    ?>

Destekli sayılamalar dahili olarak iki ek yöntem sağlayan BackedEnum arayüzü ile gerçeklenir:

- `from(int|string): self` yöntemi bir sayıl değer alır ve karşılığı olan sayılama kılıfını döndürür. Böyle bir kılıf yoksa ValueError istisnası oluşur. Girdi olarak sayıl değere güvenildiği ancak karşılığında bir sayılama değerinin olmadığı durumda uygulamayı durduracak bir hata gerekiyorsa yararlı olabilir.
- `tryFrom(int|string): ?self` yöntemi bir sayıl değer alır ve karşılığı olan sayılama kılıfını döndürür. Böyle bir kılıf yoksa, yönrem `null` döndürür. Girdi olarak sayıl değere güvenilmediği durumda geliştirici hatayı kendi ele almak isterse veya bir öntanımlama yapmak isterse yararlı olabilir.

`from()` ve `tryFrom()` yöntemleri standart gevşek/katı kodlama kurallarını izler. Gevşek kodlama kipinde, bir tamsayı veya dizge aktarımı kabul edilebilir ve sistem değeri buna göre zorlar. Bir gerçel sayı da çalışır ve bu da zorlanır. Katı kodlama kipinde, bir dizge kılıf değeri durumunda `from()` yöntemine bir tamsayı (veya gerçel sayı) aktarımı (veya tersi) TypeError istisnasına yol açar. Her iki kipte, tüm diğer bağımsız değişken türleri TypeError istisnasına yol açar.

    <?php

    $record = get_stuff_from_database($id);
    print $record['deste'];
    $deste =  Deste::from($record['deste']);
    // Geçersiz veri ValueError yavrulatır: "X" değeri enum "Deste" için geçerli bir sayıl değer değildir
    print $deste->value;
    $deste = Deste::tryFrom('A') ?? Deste::Sinekler;
    // Geçersiz veri null döndürür, yerine Deste::Sinekler kullanılır.
    print $deste->value;
    ?>

`from()` veya `tryFrom()` yöntemini destekli bir sayılama üzerinde geliştirici kendi tanımlarsa sonuç ölümcül hata olur.

## Sayılama Yöntemleri

Sayılamalar (destekli ve desteksiz, her ikiside) yöntemler içerebilir ve arayüzleri gerçekleyebilir. Bir sayılama, bir arayüzü gerçekliyorsa bu arayüz için her tür sınaması bu sayılamanın tüm sınıflarını kabul edecektir.

    <?php

    interface Renkli
    {
        public function renk(): string;
    }
    enum Deste implements Renkli
    {
        case Kupalar;
        case Karolar;
        case Sinekler;
        case Maçalar;
        // Arayüzle anlaşmayı sağlar.
        public function renk(): string
        {
            return match($this) {
                Deste::Kupalar, Deste::Karolar => 'Kırmızı',
                Deste::Sinekler, Deste::Maçalar => 'Siyah',
            };
        }
        // bir arayüzün parçası değil; ama geçerli.
        public function kesim(): string
        {
            return "Dörtgen";
        }
    }
    function boya(Renkli $c)
    {
       /* ... */
    }

    boya(Deste::Sinekler);  // çalışır
    print Deste::Karolar->kesim(); //  "Dörtgen"
    ?>

Bu örnekte, dört `Deste` örneğinin hepsi iki yönteme sahiptir: `renk()` ve `kesim()`. Kod çağrılır çağrılmaz tür sınamaları yapılır. Bu, diğer nesne örneklerine uygulanandan farklı değildir.

Destekli sayılamada arayüz bildirimi, desteki tür bildiriminden sonra ele alınır.

    <?php

    interface Renkli
    {
        public function renk(): string;
    }
    enum Deste: string implements Renkli
    {
        case Kupalar = 'Ku';
        case Karolar = 'Ka';
        case Sinekler = 'S';
        case Maçalar = 'M';
        // arayüzle anlaşmayı sağlar
        public function renk(): string
        {
            return match($this) {
                Deste::Kupalar, Deste::Karolar => 'Kırmızı',
                Deste::Sinekler, Deste::Maçalar => 'Siyah',
            };
        }
    }
    ?>

Yöntemin içindeki `$this` değişkeni değer olarak kılıf örneği alır.

Yöntemler keyfi olarak karmaşık olabilir, ancak uygulamada, farklı durumlara farklı sonuçlar sağlamak için genellikle statik bir değer döner veya `$this` ile match ifadesine eşlenir.

Bu durumda, Kırmızı ve Siyah değerleriyle bir RenkliDeste Enum türü tanımlamak ve bunun yerine onu döndürmek daha iyi bir veri modelleme uygulaması olacaktır. Ancak bu, örneği daha da karmaşıklaştıracaktır.

Yukarıdaki hiyerarşi mantıksal olarak aşağıdaki sınıf yapısına benzer (bu, çalışan asıl kod olmasa da):

    <?php

    interface Renkli
    {
        public function renk(): string;
    }
    final class Deste implements UnitEnum, Renkli
    {
        public const Kupalar = new self('Kupalar');
        public const Karolar = new self('Karolar');
        public const Sinekler = new self('Sinekler');
        public const Maçalar = new self('Maçalar');
        private function __construct(public readonly string $name) {}
        public function renk(): string
        {
            return match($this) {
                Deste::Kupalar, Deste::Karolar => 'Kırmızı',
                Deste::Sinekler, Deste::Maçalar => 'Siyah',
            };
        }
        public function kesim(): string
        {
            return "Dörtgen";
        }
        public static function cases(): array
        {
            // Geçersiz yöntem
            // Bir Enum üzerinde cases() yöntemini geliştirici tanımlayamaz.
            // "Değer listeleme" bölümüne bakınız.
        }
    }
    ?>

Yöntemler public, private veya protected olabilir, ancak uygulamada private ve protected kalıtıma izin verilmediğinden eşdeğerdir.

## Statik Sayılama Yöntemleri

Sayılamaların statik yöntemleri de olabilir. Statik yöntemlerin sayılamalar üzerinde kullanımının birincil amacı kurucu oluşturmaktır. Örnek:

    <?php

    enum Boyut
    {
        case Küçük;
        case Normal;
        case Büyük;
        public static function uzunluğaGöre(int $cm): static
        {
            return match(true) {
                $cm < 50 => static::Küçük,
                $cm < 100 => static::Normal,
                default => static::Büyük,
            };
        }
    }
    ?>

Statik yöntemler public, private veya protected olabilirse de kalıtıma izin verilmediğinden uygulamada private ve protected eşdeğerdir.

## Sayılama Sabitleri

Sayılamalar public, private veya protected olabilen sabitler içerebilir.

Bir enum sabiti, bir kılıfa atıfta bulunabilir:

    <?php

    enum Boyut
    {
        case Küçük;
        case Normal;
        case Büyük;
        public const Kocaman = self::Büyük;
    }
    ?>

## Nitelikler

Sayılamalar, sınıflardaki gibi davranan niteliklerden yararlanabilir. Ancak, bir sayılama içinde kullanılan niteliklerin özelliklerinin olmamasına dikkat edilmelidir; sadece yöntemler ve statik yöntemler içerebilir. Özellikleri olan bir nitelik ölümcül hata ile sonuçlanır.

    <?php

    interface Renkli
    {
        public function renk(): string;
    }
    trait Dörtgen
    {
        public function kesim(): string {
            return "Dörtgen";
        }
    }
    enum Deste implements Renkli
    {
        use Dörtgen;
        case Kupalar;
        case Karolar;
        case Sinekler;
        case Maçalar;
        public function renk(): string
        {
            return match($this) {
                Deste::Kupalar, Deste::Karolar => 'Kırmızı',
                Deste::Sinekler, Deste::Maçalar => 'Siyah',
            };
        }
    }
    ?>

## Sabit ifadelerinde sayılama değerleri

Kılıflar enum üzerinde sabitler olarak temsil edildiğinden, çoğu sabit ifadesinde statik değerler olarak kullanılabilir: özellik öntanımlıları, statik değişken öntanımlıları, bağımsız değişken öntanımlıları, küresel ve sınıf sabitlerinin değerleri. Ancak diğer kılıf değerlerinde kullanılamaz, sadece enum sabitleri bir kılıfa atıfta bulunabilir.

Ancak, sonuç değerinin belirleyici olduğunu veya yöntem çağrılarının yan etkilerden arınmış olduğunu kesinlikle garanti edemediğimiz için, sayılamalarda ArrayAccess gibi örtük sihirli yöntem çağrılarına statik veya sabit tanımlar içinde izin verilmez. İşlev çağrıları, yöntem çağrıları ve özellik erişimi, sabit ifadeler içinde geçersiz işlemler olarak kalmaya devam eder.

    <?php

    // Bu tamamen geçerli bir sayılama tanımıdır.
    enum Direction implements ArrayAccess
    {
        case Up;
        case Down;

        public function offsetExists($offset): bool
        {
            return false;
        }

        public function offsetGet($offset): mixed
        {
            return null;
        }

        public function offsetSet($offset, $value): void
        {
            throw new Exception();
        }

        public function offsetUnset($offset): void
        {
            throw new Exception();
        }
    }
    class Foo
    {
        // Buna izin verilir.
        const DOWN = Direction::Down;
        // Buna izin verilmez, belirleyici olmayabilir.
        const UP = Direction::Up['short'];
        // Ölümcül Hata: enum üzerinde sabit ifadesi içinde [] kullanılamaz
    }
    // Bu, bir sabit ifadesi olmadığından tamamen geçerlidir.
    $x = Direction::Up['short'];
    var_dump("\$x: " . var_export($x, true));

    $foo = new Foo();
    ?>

## Nesnelerden farkları

Sayılamalar, sınıflar ve nesnelerde yerleşik bulunabilirse de, nesnelerle ilgili işlevselliğin tamamını kullanamaz. Özellikle, sayılamalar durumlu olamaz.

- Kurucular ve yıkıcılar kullanılamaz.
- Kalıtım desteklenmez. Sayılamalar ne genişletebilir ne de genişletilebilir.
- Statik ve nesne özelliklere izin verilmez.
- Bir sayılamanın kopyalanması, kılıfların tekil örnekler olması gerektiğinden desteklenmez.
- Aşağıda sıralananlar dışında kalan Sihirli yöntemlere izin verilmez.
- Sayılamalar kullanılmadan önce bildirilmelidir.

Aşağıdaki nesne işlevselliği kullanılabilir ve diğer nesnelerdeki davranış elde edilir:

- Public, private ve protected yöntemler.
- Public, private ve protected static yöntemler.
- Public, private ve protected sabitler.
- Sayılamalar çok sayıda arayüz gerçekleyebilir.
- Sayılamalar ve kılıfların kendilerine ekli öznitelikleri olabilir. `TARGET_CLASS` hedef süzgeci sayılamaların kendilerini içerir. `TARGET_CLASS_CONST` hedef süzgeci ise sayılama kılıflarını içerir.
- __call, __callStatic, ve __invoke sihirli yöntemleri
- `__CLASS__` ve `__FUNCTION__` sabitleri normal olarak davranır.

Bir sayılama türündeki `::class` sihirli sabiti, tamamen bir nesnedeki gibi isim alanlı tür adı olarak değerlendirilir. Bir kılıf örneğindeki `::class` sihirli sabiti ise, o türün tekil örneği olduğu için sayılama olarak değerlendirilir.

Ayrıca, sayılama kılıfları doğrudan `new` ile örneklenemediği gibi yansıtma içinde ReflectionClass::newInstanceWithoutConstructor() ile de örneklenemez.

    <?php

    $trefl = new Deste();
    // Hata: enum Deste örneklenemez
    $kör = (new ReflectionClass(Deste::class))->KurucusuzYeniÖrnek()
    // Hata: enum Deste örneklenemez
    ?>

## Değer Listeleme

Destekli ya da desteksiz, sayılamaların her ikisi de UnitEnum adlı dahili bir arayüzü gerçekler. `UnitEnum` arayüzü `cases()` statik yöntemini içerir. `cases()` yöntemi, bildirim sırasında tanımlanmış tüm kılıfları içeren bir dizi döndürür.

    <?php

    Deste::cases();
    // Şunları üretir: [Deste::Kupalar, Deste::Karolar, Deste::Sinekler, Deste::Maçalar]
    ?>

Bir sayılamada `cases()` yöntemini kendiniz tanımlarsanız ölümcül bir hata alırsınız.

## Dizgeleştirme

Sayılamaların dizgeleştirmesi nesnelerden farklıdır. Özellikle, kendilerine özgü bir dizgeleştirme kodu olarak sayılama kılıfı ismini belirten `"E"` koduna sahiptir. Nesneleştirme sırasında kod bunu mevcut tekil değeri bir değişkene atamakta kullanır. Sonuçta aşağıdaki gibi bir durumun gerçeklenmesi sağlanır:

    <?php

    Deste::Kupalar === unserialize(serialize(Deste::Kupalar));
    print serialize(Deste::Kupalar);
    // E:14:"Deste::Kupalar";
    ?>

Nesneleştirme sırasında bir sayılama ve kılıfın eşleşeceği dizgeleştirilmiş bir değer yoksa bir uyarı çıktılayıp `false` döndürülür.

Desteksiz bir sayılamayı JSON'a dizgeleştirme bir hataya yol açar. Destekli bir sayılamayı JSON'a dizgeleştirme ise uygun türdeki sayıl değeri ile gösterilir. Her iki davranış JsonSerializable gerçeklenerek geçersiz kılınabilir.

print_r() için, sayılama kılıfı çıktısı, karışıklığı azaltmak için nesnelerdekinden oldukça farklıdır.

    <?php

    enum Foo {
        case Bar;
    }
    enum Baz: int {
        case Beep = 5;
    }
    print_r(Foo::Bar);
    print_r(Baz::Beep);
    /* Çıktısı:
    Foo Enum (
        [name] => Bar
    )
    Baz Enum:int {
        [name] => Beep
        [value] => 5
    }
    */
    ?>

## - Sayılamalar neden genişletilemez?

Sınıfların yöntemleri üzerinde sözleşmeleri vardır:

    <?php

    class A {}
    class B extends A {}

    function foo(A $a) {}

    function bar(B $b) {
        foo($b);
    }
    ?>

Bu kod tür açısından güvenlidir, çünkü B, A'nın sözleşmesini takip eder ve az/çok-özgüllüğün büyüsü aracılığıyla, istisnalar dışında, yöntemlerden beklentiler korunur.

Sayılamalar yöntemlerle değil kılıflarla yönetilir:

    <?php

    enum ErrorCode {
        case SOMETHING_BROKE;
    }

    function quux(ErrorCode $errorCode)
    {
        // Bu kod tüm kılıfları kapsıyor gibi görünüyor
        match ($errorCode) {
            ErrorCode::SOMETHING_BROKE => true,
        }
    }

    ?>

`quux` işlevindeki match deyimi, `ErrorCode` sayılamasındaki tüm kılıfları kapsayacak şekilde statik olarak incelenebilir.

Ancak, sayılamaların genişletilmesine izin verildiği varsayılırsa:

    <?php

    // Sayılamaların değişmez olmadığı deneysel kod.
    // Dikkat, bu kod aslında PHP'de çalışmaz.
    enum MoreErrorCode extends ErrorCode {
        case PEBKAC;
    }

    function fot(MoreErrorCode $errorCode) {
        quux($errorCode);
    }

    fot(MoreErrorCode::PEBKAC);

    ?>

Normal kalıtım kurallarına göre, diğerini genişleten bir sınıf tür denetimini geçecektir.

`quux()` içindeki match deyiminin artık tüm kılıfları kapsamaması sorun olur. `MoreErrorCode::PEBKAC` hakkında bilgisi olmadığı için match deyimi bir istisna oluşturur.

Bu nedenle sayılamalar değişmezdir ve genişletilemez.

## Örnekler

Örnek 1 - Basit sınırlı değerler

    <?php

    enum Sırala
    {
        case Art;
        case Azal;
    }
    function sorgu($alanlar, $süzgeç, Sırala $sırala = Sırala::Art)
    {
         /* ... */
    }
    ?>

`sorgu()` işlevi, $sırala'nın Sırala::Art veya Sırala::Azal olduğunun garanti edildiği bilgisiyle artık güvenli bir şekilde ilerleyebilir. Başka herhangi bir değer TypeError ile sonuçlanırdı, bu nedenle daha fazla hata denetimi veya sınaması yapmak gerekmez.

Örnek 2 - Daha ileri özel değerler

    <?php

    enum UserStatus: string
    {
        case Pending = 'B';
        case Active = 'E';
        case Suspended = 'A';
        case CanceledByUser = 'V';
        public function yafta(): string
        {
            return match($this) {
                static::Pending => 'Beklemede',
                static::Active => 'Etkin',
                static::Suspended => 'Askıda',
                static::CanceledByUser => 'Kullanıcı Vazgeçti',
            };
        }
    }
    ?>

Bu örnekte kullanıcının durumu, özellikle şu durumlardan biri olabilir: `UserStatus::Pending`, `UserStatus::Active`, `UserStatus::Suspended` veya `UserStatus::CanceledByUser`. `UserStatus` türünde bağımsız değişken içeren bir işlev sadece bu dört değerden birini kabul edebilir.

Dört değer için, insan okuyabilir dizge döndüren `yafta()` yöntemi kullanılmıştır. Bu dizge, bir veritabanı alanında veya HTML seçim kutusunda kullanılabilen "makine adı" sayıl eşdeğeri olan dizgeden farklı ve bağımsızdır.

    <?php

    foreach (UserStatus::cases() as $case) {
        printf('<option value="%s">%s</option>\n', $case->value, $case->yafta());
    }
    ?>

# Hatalar

## İçindekiler

- Temeller
- PHP 7'de hatalar

## Giriş

Ne yazık ki, kodumuzu yazarken ne kadar dikkatli olursak olalım, hatalar hayatın bir gerçeğidir. PHP birçok ortak kodlama ve çalışma zamanı sorunu için hatalar, uyarılar ve bildirimler çıktılar. Bu hataların nasıl algılandığını ve işlendiğini bilmek hata ayıklama işlemini daha kolay hale getirir.

## Temeller

PHP, hataları bir takım iç hata koşuluna karşılık olarak raporlar. Bu hatalar, farklı koşullarda bir işaretçi olarak kullanılabilir ve ihtiyaca göre gösterilip / günlüklenebilir.

PHP tarafından oluşturulan her hata bir türe sahiptir. Bu hata türlerinin bir listesi, hangi durumlarda karşılaşılacağı ve davranışın kısa bir açıklaması ile birlikte mevcuttur.

### PHP ile hata işlemek

Eğer hiçbir hata işleyici belirlenmemişse, PHP hataları yapılandırmasına bağlı olarak işleyecektir. Hangi hataların raporlandığı ve hangilerinin gözardı edildiği `error_reporting` adlı php.ini yönergesi ile kontrol edilir ya da işleyiş sürecinde error_reporting() işlevi çağırılır. Bununla birlikte, bazı hatalar betiğiniz çalıştırılmaya başlanmadan meydana gelebildiğinden, yapılandırma yönergelerinin ayarlanması şiddetle tavsiye edilir.

Bir geliştirme ortamında, PHP tarafından üretilen sorunları fark etmeniz ve çözmeniz gerektiğinden, `error_reporting` yönergesini daima `E_ALL` olarak yapılandırmalısınız. Üretimde ise hata seviyelerini, `E_ALL & ~E_NOTICE & ~E_DEPRECATED` gibi daha ayrıntılı ayarlamak isteyebilirsiniz. Ancak bir çok durumda olası sorunlar hakkında erken uyarı sağlayabileceği için `E_ALL` daha uygundur.

PHP'nin bu hatalarla ne yapacağı az sonra değineceğimiz iki php.ini yönergesine bağlıdır. `display_errors` hatanın betik çıktısının bir parçası olarak gösterilip gösterilmeyeceğini denetler. Hata veritabanı parolaları gibi hassas bilgiler içerebileceğinden, üretim ortamında bu ayar her zaman etkisiz kılınmış olmalıdır. Ancak geliştirme ortamında, hataların anında raporlandığından emin olabilmek için etkin hale getirmek çoğu zaman kullanışlı olacaktır.

Hataların gösterilmesine ek olarak, PHP `log_errors` yönergesi etkinleştirildiğinde hataları günlükleyebilir. Bu tüm hataları `error_log` ile belirlenen bir dosyaya ya da sistem raporlama aracına günlükleyecektir. Hataları günlükleyebildiğiniz ve daha sonra bu hataları temel alarak raporlama yapabileceğiniz için bu yönerge üretim ortamlarında ziyadesiyle kullanışlı olabilir.

### Kullanıcı hata işleyiciler

Eğer PHP'nin öntanımlı hata işleyicileri yetersizse, bir çok hata türünü kendi hata işleyicilerinizle set_error_handler() yönergesini kurarak işleyebilirsiniz. Bazı hata türleri bu şekilde işlenemese de, işlenebilen hatalar betiğinizin uygun gördüğü şekilde işlenebilecektir. Örneğin, bu özelleştirilmiş bir hata sayfasının kullanıcıya gösterilmesi ve daha sonra ayrıntılı bilginin e-posta aracılığı ile günlüklenmesi olabilir.

## PHP 7'de hatalar

PHP 7'de hataların PHP tarafından bildirilişi değişmiştir. PHP5'te kullanılan geleneksel hata bildirme mekanizması üzerinden bildirmek yerine hataların çoğu Error istisnası yavrulanarak bildirilir.

Normal istisnalardaki gibi bu Error istisnaları da `catch` bloğuyla ilk eşleşmeye kadar kaynamaya devam eder. Eşleşecek blok yoksa, set_exception_handler() ile kurulmuş öntanımlı işleyicilerden herhangi biri çağrılır, öntanımlı bir istisna işleyicisi yoksa istisna ölümcül hataya dönüştürülüp geleneksel bir hata gibi işlem görür.

Error hiyerarşisi Exception sınıfından miras almadığından, PHP 5'te yakalanmayan istisnaları işleyecek `catch (Exception $e) { ... }` bloklarını kullanan kod, bu hataların (Error) bu bloklarca yakalanmadığını bulacaktır. Ya bir `catch (Error $e) { ... }` bloğu ya da bir set_exception_handler() işleyicisi gerekir.

### Error hiyerarşisi

- Throwable
  - Error
    - ArithmeticError
      - DivisionByZeroError
    - AssertionError
    - CompileError
      - ParseError
    - TypeError
      - ArgumentCountError
    - ValueError
    - UnhandledMatchError
    - FiberError
  - Exception
    - ...

# İstisnalar

## İçindekiler

- İstisnaları Genişletmek

PHP diğer programlama dillerindekine benzer bir istisna modeline sahiptir. Bir istisna oluşturulabilir (`throw`) ve yakalanabilir (`catch`). Olası istisnaların yakalanabilmesi için, kod bir `try` bloğu içine alınabilir. Her `try` bloğuna karşılık en az bir tane `catch` veya `finally` bloğu olması gerekir.

Bir istisna oluşturulursa ve geçerli işlev bağlamında `catch` bloğu yoksa, istisna, eşleşen bir `catch` bloğu bulana kadar çağrı yığıtını çağıran işleve "kabarcıklandırır". Yol boyunca karşılaşılan tüm `finally` blokları çalıştırılır. Eğer çağrı yığıtı, eşleşen bir `catch` bloğu bulamadan küresel bağlama kadar boşalırsa ve bir küresel istisna işleyici de atanmamışsa, ölümcül hata vererek sonlanır.

Oluşturulan nesne ya bir Throwable örneği olmalıdır. Bunu sağlamayan bir nesne oluşturmaya çalışmak (`throw`) ölümcül bir PHP hatasına yol açmaz.

PHP 8.0.0 ve sonrasında, `throw` sözcüğü bir ifade olup herhangi bir ifadenin içinde kullanılabilir. Önceki sürümlerde bir deyimdi ve kendi satırına sahip olması gerekiyordu.

## `catch`

Bir `catch` bloğu oluşturulan bir istisnaya nasıl yanıt verileceğini tanımlar. Bir `catch` bloğu işleyebileceği bir veya daha fazla istisna veya hata türünü ve isteğe bağlı olarak istisnanın atanacağı değişkeni tanımlar. (PHP 8.0.0 öncesinde değişken gerekliydi.) İlk `catch` bloğu, nesneyi işleyecek `throw` nesnesinin türüyle eşleşen bir hata veya istisnayla karşılaştığında bunları engelleyecektir.

Farklı sınıflara ait istisnaları yakalamak için birden fazla `catch` bloğu kullanılabilir. Normal çalışma sıradaki son `catch` bloğundan sonra devam eder. Buradaki normal çalışma (`try` bloğu içinde hiçbir istisna oluşmadığında) sıradaki tanımlanmış son `catch` bloğundan sora devam eder. İstisnalar bir `catch` bloğu içerisinde oluşmuş olabileceği gibi yeniden de oluşabilir (`throw`). Aksi takdirde, çalışma, tetiklenen `catch` bloğundan sonra devam eder.

Bir istisna oluştuğunda, istisnanın oluştuğu yerden sonraki kodlar çalıştırılmaz ve PHP oluşan istisna ile uyuşan ilk `catch` bloğunu bulmaya çalışır. Bir istisnanın yakalanmaması durumunda, set_exception_handler() işlevi ile evvelce bir istisna eylemcisi tanımlanmamışsa, PHP bir ölümcül hata durumu oluşturur ve bir "`Uncaught Exception ...`" ("Yakalanmamış istisna ...") iletisi çıktılar.

PHP 7.1.0 ve sonrasında, boru (`|`) karakteri kullanarak bir `catch` bloğunda çok sayıda istisna belirtilebilir. Farklı sınıf hiyerarşilerindeki farklı istisnalar aynı şekilde elde edildiğinde kullanışlıdır.

PHP 8.0.0 ve sonrasında, değişken ismi yakalama istisnası için isteğe bağlıdır. Belirtilmezse, `catch` bloğu çalışmaya yine de devam eder fakat istisnayı oluşturacak nesneye erişemez.

## `finally`

`catch` bloklarının yerine veya sonrasında bir `finally` bloğu da belirtilebilir. Bir istisnanın oluşmamışsa bile ve normal çalışmaya dönülmeden önce `finally` bloğu içindeki kodlar daima `try` ve `catch` bloklarından sonra çalıştırılır.

Dikkate değer tek etkileşim, `finally` bloğu ile `return` deyimi arasında olur. `try` veya `catch` bloklarının içinde bir `return` deyimine rastlansa bile `finally` bloğu çalışmasına devam edeceği gibi, `return` deyimi de çalıştırılır fakat `finally` bloğu işini bitirdikten sonra sonuç döndürülür. Ek olarak, `finally` bloğu da bir `return` içeriyorsa `finally` bloğundaki değer döndürülür.

## Küresel istisna işleyici

Eğer bir istisnanın küresel bağlama kadar kabarcıklanmasına izin verilirse, atandığı takdirde bir küresel istisna işleyici tarafından yakalanabilir. Başka bir blok çalıştırılmazsa bir `catch` bloğu yerine çağrılmak üzere bir işlev set_exception_handler() işlevi ile atanabilir. Etkisi esasen, tüm programın, `catch` olarak bu işleve sahip bir `try`- `catch` bloğu ile sarmalanmasıyla aynıdır.

## Notlar

> Bilginize:

> Yerleşik PHP işlevleri aslında hata raporlama yapmakta, istisnaları sadece nesne yönelimli güncel eklentiler kullanmaktadır. Bununla birlikte hatalar ErrorException ile kolayca istisnalara dönüştürülebilir. Bununla birlikte, bu teknik sadece ölümcül hatalarda çalışır.

> Örnek 1 - Hata raporlamayı istisnalara dönüştürme örneği

>     <?php
>     function exceptions_error_handler($severity, $message, $filename, $lineno) {
>         throw new ErrorException($message, 0, $severity, $filename, $lineno);
>     }

>     set_error_handler('exceptions_error_handler');
>     ?>

İpucu

Standard PHP Kütüphanesi (SPL) bol bol yerleşik istisna içerir.

## Örnekler

Örnek 2 - Bir İstisna Oluşturmak

    <?php
    function inverse($x) {
        if (!$x) {
            throw new Exception('Sıfıra bölme.');
        }
        else return 1/$x;
    }

    try {
        echo inverse(5) . "\n";
        echo inverse(0) . "\n";
    } catch (Exception $e) {
        echo 'Yakalanan olağandışılık: ',  $e->getMessage(), "\n";
    }

    // Çalışma sürer
    echo 'Merhaba Dünya';
    ?>

Yukarıdaki örneğin çıktısı:

    0.2
    Yakalanan olağandışılık: Sıfıra bölme.
    Merhaba Dünya

Örnek 3 - Bir `finally` bloğu ile istisnanın işleme sokulması

    <?php
    function inverse($x) {
        if (!$x) {
            throw new Exception('Sıfıra bölme.');
        }
        return 1/$x;
    }

    try {
        echo inverse(5) . "\n";
    } catch (Exception $e) {
        echo 'İstisna yakalandı: ',  $e->getMessage(), "\n";
    } finally {
        echo "İlk finally bloğu.\n";
    }

    try {
        echo inverse(0) . "\n";
    } catch (Exception $e) {
        echo 'İstisna yakalandı: ',  $e->getMessage(), "\n";
    } finally {
        echo "İkinci finally bloğu.\n";
    }

    // İcra sürer
    echo "Merhaba Dünya\n";
    ?>

Yukarıdaki örneğin çıktısı:

    0.2
    İlk finally bloğu.
    İstisna yakalandı: Sıfıra bölme..
    İkinci finally bloğu.
    Merhaba Dünya

Örnek 4 - `finally` bloğu ile `return` arasındaki etkileşim örneği

    <?php

    function test() {
        try {
            throw new Exception('foo');
        } catch (Exception $e) {
            return 'catch';
        } finally {
            return 'finally';
        }
    }

    echo test();
    ?>

Yukarıdaki örneğin çıktısı:

    finally

Örnek 5 - İç içe istisnalar

    <?php

    class MyException extends Exception { }

    class Test {
        public function testing() {
            try {
                try {
                    throw new MyException('foo!');
                } catch (MyException $e) {
                    /* yeniden yakala */
                    throw $e;
                }
            } catch (Exception $e) {
                var_dump($e->getMessage());
            }
        }
    }

    $foo = new Test;
    $foo->testing();

    ?>

Yukarıdaki örneğin çıktısı:

    string(4) "foo!"

Örnek 6 Çoklu catch istisna eldesi

    <?php

    class MyException extends Exception { }

    class MyOtherException extends Exception { }

    class Test {
        public function testing() {
            try {
                throw new MyException();
            } catch (MyException | MyOtherException $e) {
                var_dump(get_class($e));
            }
        }
    }

    $foo = new Test;
    $foo->testing();

    ?>

Yukarıdaki örneğin çıktısı:

    string(11) "MyException"

Örnek 7 - Yakalama değişkeninin olmayışı

Sadece PHP 8.0.0 ve sonrası için geçerlidir.

    <?php

    class Özelİstisna extends Exception {}

    function test() {
        throw new Özelİstisna('Oopsie');
    }

    try {
        test();
    } catch (Özelİstisna) {
        print "Bir Özelİstisna oluştu, fakat ayrıntılar önemsiz.";
    }
    ?>

Örnek 8 - Bir ifade olarak throw

Sadece PHP 8.0.0 ve sonrası için geçerlidir.

    <?php

    function test() {
        do_something_risky() or throw new Exception('Çalışmadı...');
    }

    try {
        test();
    } catch (Exception $e) {
        print $e->getMessage();
    }
    ?>

## İstisnaları Genişletmek

Yerleşik Exception sınıfını genişleten kullanıcı tanımlı bir istisna sınıfı tanımlanabilir. Aşağıdaki üyeler ve özellikler, yerleşik Exception sınıfından türetilen alt sınıf içerisinde nelerin erişilebilir olduğunu göstermektedir.

Örnek 1 - Yerleşik Exception sınıfı

    <?php
    class Exception implements Throwable
    {
        protected $message = 'Bilinmeyen istisna';  // istisna iletisi
        private   $string;                // __toString önbelleği
        protected $code = 0;              // kullanıcı tanımlı istisna kodu
        protected $file;                  // istisnanın kaynak dosyası
        protected $line;                  // istisnanın kaynak dosyasındaki satırı
        private   $trace;                 // geriye doğru hata izleme
        private   $previous;              // istisnalar iç içe ise önceki istisna

        public function __construct($message = '', $code = 0,
                                      Throwable $previous = null);

        final private function __clone();           // İstisna kopyalamayı engeller
        final public function getMessage();         // istisna iletisi
        final public function getCode();            // istisnanın kodu
        final public function getFile();            // kaynak dosya
        final public function getLine();            // kaynak dosya satırı
        final public function getTrace();           // backtrace() dizisi
        final public function getTraceAsString();   // biçemli hata izleme dizgesi
        final public  function getPrevious();       // önceki istisna

        // Geçersiz kılınabilir //
        public function __toString();  // görüntüleme için biçemlenmiş dizge
    }
    ?>

Bir sınıf yerleşik Exception sınıfını genişletiyor ve nesne kurucuyu yeniden tanımlıyorsa, mevcut tüm verinin düzgün biçimde atandığından emin olmak için parent::__construct() işlevinin de çağrılması hararetle önerilir. Nesne bir karakter dizisi olarak sunulduğunda özelleştirilmiş bir çıktı sağlayabilmek için __toString() yöntemi geçersiz kılınabilir.

> Bilginize:

> İstisnaların kopyaları yapılamaz. Bir istisnanın kopyasını yapmaya çalışmak ölümcül hatayla (`E_FATAL` seviyesinden bir hata) ile sonuçlanır.

Örnek 2 - Exception sınıfının genişletilmesi

    <?php
    /**
    * Özelleştirilmiş bir istisna sınıfı tanımlayalım
    */
    class MyException extends Exception
    {
        // İstisnayı yeniden tanımlayalım, böylece ileti seçimlik olmaktan çıkar
        public function __construct($message, $code = 0,
                                    Throwable $previous = null) {
            // biraz kod

            // her şeyin düzgün atandığından emin olalım
            parent::__construct($message, $code, $previous);
        }

        // nesnenin özelleştirilmiş karakter dizisi gösterimi
        public function __toString() {
            return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
        }

        public function customFunction() {
            echo "Bu türdeki istisnalar için özelleştirilmiş işlev\n";
        }
    }

    /**
    * İstisnayı denemek için bir sınıf oluşturalım
    */
    class TestException
    {
        public $var;

        const THROW_NONE    = 0;
        const THROW_CUSTOM  = 1;
        const THROW_DEFAULT = 2;

        function __construct($avalue = self::THROW_NONE) {

            switch ($avalue) {
                case self::THROW_CUSTOM:
                    // özelleştirilmiş istisna oluştur
                    throw new MyException('1 geçersiz bir bağımsız değişkendir', 5);
                    break;

                case self::THROW_DEFAULT:
                    // öntanımlı olarak bir oluşturulur.
                    throw new Exception('2 geçerli bir bağımsız değişken değildir', 6);
                    break;

                default:
                    // İstisna yok; nesne oluşturulacak.
                    $this->var = $avalue;
                    break;
            }
        }
    }

    // Örnek 1
    try {
        $o = new TestException(TestException::THROW_CUSTOM);
    } catch (MyException $e) {      // Yakalanacaktır
        echo "Benim istisnam yakalandı\n", $e;
        $e->customFunction();
    } catch (Exception $e) {        // Bu atlanır
        echo "Öntanımlı istisna yakalandı\n", $e;
    }

    // Çalışmaya devam et
    var_dump($o);  // Null
    echo "\n\n";

    // Örnek 2
    try {
        $o = new TestException(TestException::THROW_DEFAULT);
    } catch (MyException $e) {      // Bu tür ile uyuşmuyor
        echo "Benim istisnam yakalandı\n", $e;
        $e->customFunction();
    } catch (Exception $e) {        // Bu yakalanacaktır
        echo "Öntanımlı istisna yakalandı\n", $e;
    }

    // Çalışmaya devam et
    var_dump($o);  // Null
    echo "\n\n";

    // Örnek 3
    try {
        $o = new TestException(TestException::THROW_CUSTOM);
    } catch (Exception $e) {        // Yakalanacaktır
        echo "Öntanımlı İstisna yakalandı\n", $e;
    }

    // Çalışmaya devam et
    var_dump($o);  // Null
    echo "\n\n";

    // Örnek 4
    try {
        $o = new TestException();
    } catch (Exception $e) {        // Bu atlandır; istisna yok
        echo "Öntanımlı İstisna yakalandı\n", $e;
    }

    // Çalışmaya devam et
    var_dump($o); // TestException
    echo "\n\n";
    ?>

# Fiberler

### Fiberlere giriş

(PHP 8 >= 8.1.0)

Fiberler, tamamen yığıtlanabilen ve yürütmeyi kesintiye uğratılabilen işlevlerdir. Fiberin çağrı yığıtının herhangi bir yerinde askıya alınmasıyla yürütmenin bekletilmesi ve daha sonra fiberin yürütmeyi kaldığı yerden devam ettirmesi sağlanabilir.

Fiberler icra yığıtınını tamamını bekletebilir, böylece işlevin davranışını değiştirmek için işlevin doğrudan çağrılması gerekmez.

Fiber::suspend() çağrısı ile çağrı yığıtının herhangi bir yerinde yürütme kesintiye uğratılabilir (yani, Fiber::suspend() oldukça iç içe çağrıların derinlerinde yer alabileceği gibi hiçbir yerde de var olmayabilir).

Yığıtsız üreteçlerin (Generator) tersine, her Fiber sınıfının kendi çağrı yığıtı vardır. Böylece, oldukça iç içe işlev çağrılarında bile bekletme sağlanabilmektedir. Bir kesinti noktası belirten bir işlev (yani, Fiber::suspend() çağrısı), Fiber::suspend() dönüş türünün değiştirilmemesini gerektirir (bir Generator örneğinden dönen yield deyimini kullanan bir işlevin tersine).

Fiberler PHP VM içinden çağrılanlar dahil, array_map() işlevine sağlanan işlevler veya Iterator nesnesi üzerinde foreach ile çağrılan yöntemler gibi, herhangi bir işlev çağrısını askıya alabilir.

Bir kere askıya alınınca, Fiber::resume() işlevi herhangi bir değerle çağrılarak veya Fiber::throw() kullanarak fiber içinde bir istisna yavrulatarak, fiber yürütmesi kaldığı yerden devam ettirilebilir. Değer, Fiber::suspend() yönteminden veya yavrulanan istisnadan döndürülür.

> Bilginize: Geçerli sınırlamalar nedeniyle, bir nesnenin yıkıcısında fiberler arasında seçim yapmak mümkün değildir.

Örnek 1 - Temel kullanım örneği

    <?php
    $fiber = new Fiber(function (): void {
       $value = Fiber::suspend('fiber');
       echo "Fiberi devam ettirmekte kullanılan değer: ", $value, PHP_EOL;
    });
    $value = $fiber->start();
    echo "Fiber askıya alındığındaki değer: ", $value, PHP_EOL;
    $fiber->resume('test');
    ?>

Yukarıdaki örneğin çıktısı:

    Fiber askıya alınırken kullanılan değer: fiber
    Fiberi devam ettirmekte kullanılan değer: test

# Üreteçler

## İçindekiler

- Üreteçlere giriş
- Generator sözdizimi
- Üreteçlerin Iterator nesneleriyle karşılaştırılması

## Üreteçlere giriş

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Üreteçler, Iterator arayüzünü gerçekleyen bir sınıfı gerçeklemenin karmaşıklığı ve giderleri olmaksızın basit yineleyicileri gerçeklemek için kolay bir yol sağlar.

Bir üreteç, önemli miktarda işlem süresi gerektirmeden ve bellek sınırını aşabilecek bir dizi oluşturmaya gerek kalmadan bir dizi veriyi yinelemek için foreach kullanan bir kod yazmanızı sağlar. Bunun için bir üreteç işlevini normal bir işlev yazar gibi yazabilirsiniz, siz bir kez değer döndürmeyi, beklerken bir üreteç üzerinde yinelenecek değerleri sağlamak için gerektiği kadar çok kez değer döndürebilir.

Buna basit bir örnek range() işlevini bir üreteç olarak tekrar gerçeklemektir. Standard range() işlevi her değeri ve onun dönen değerini içeren devasa boyutlara ulaşabilen bir dizi üretmek zorundadır. Örneğin, range(0, 1000000) çağrısı 100MB üzerinde bellek kullanımıyla sonuçlanabilir.

Bir seçenek olarak, bir `xrange()` üreteci gerçekleyebiliriz, tek ihtiyacımız bir Iterator nesnesi oluşturmaya yetecek bellek ayırmak ve 1 kilobayttan azıyla dönmesi için üretecin dahili durumunu izlemektir.

Örnek 1 - range() işlevini bir üreteç olarak gerçeklemek

    <?php
    function xrange($start, $limit, $step = 1) {
        if if ($start <= $limit) {
            if ($step <= 0) {
                throw new LogicException('Step must be positive');
            }

            for ($i = $start; $i <= $limit; $i += $step) {
                yield $i;
            }
        } else {
            if ($step >= 0) {
                throw new LogicException('Step must be negative');
            }

            for ($i = $start; $i >= $limit; $i += $step) {
                yield $i;
            }
        }
    }

    /*
     * range() ve xrange() işlevlerinin ikisi de aşağıda
     * benzer çıktıyı verecektir.
     */

    echo 'range() içindeki bir haneli tek sayılar:  ';
    foreach (range(1, 9, 2) as $number) {
        echo "$number ";
    }
    echo "\n";

    echo 'xrange() içindeki bir haneli tek sayılar: ';
    foreach (xrange(1, 9, 2) as $number) {
        echo "$number ";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    range() içindeki bir haneli tek sayılar: 1 3 5 7 9
    xrange() içindeki bir haneli tek sayılar: 1 3 5 7 9

### Generator nesneleri

Bir üreteç işlevi çağrıldığında dahili Generator sınıfının yeni bir nesnesi döner. Bu nesne Iterator arayüzünü gerçekler. Bu, sadece ileri doğru yineleme yapan bir yineleme nesnesinin yaptığını yapacak ve değer gönderme ve döndürme dahil, üretecin durumunu da değiştirmeye yarayacak çağırılabilir yöntemler sağlayacaktır.

## Generator sözdizimi

Bir üreteç işlevi, normal bir işlev gibi görünür fakat bir üreteç tek bir değer döndürmek yerine ihtiyaç duyulduğu kadar çok değer üretir (yield). yield içeren her işlev bir üreteç işlevidir.

Bir üreteç işlevi çağrıldığında üzerinde yineleme yapılabilecek bir nesne döndürür. Bu nesne üzerinde yineleme yaptığınızda (örneğin foreach ile), PHP bir değere her ihtiyaç duyuşunda nesnenin yineleme yöntemlerini çağırır ve üreteç bir değer ürettiğinde üretecin durumunu kaydeder, böylece yeni bir değere her ihtiyaç duyuluşunda üreteç kaldığı yerden devam edebilir.

Üretilecek değer kalmadığında, üreteç basitçe geri döner ve adeta bir dizi değerlerini tüketmiş gibi kod çağrılmaya devam eder.

> Bilginize:

> Bir üreteç değer döndürebilir ve Generator::getReturn() kullanılarak alınabilir.

### yield sözcüğü

Üreteç işlevinin kalbi yield sözcüğüdür. En basit halinde, bir yield deyimi çoğunlukla bir return deyimi gibi görünür. İşlevin çalışmasını durdurmak ve değer döndürmek yerine, yield, üreteç üzerindeki kod döngüsüne bir değer verir ve üreteç işlevini bekletir.

Örnek 1 - Basit bir yield örneği

    <?php
    function gen_one_to_three() {
        for ($i = 1; $i <= 3; $i++) {
            // yield'ler arasında $i korunur.
            yield $i;
        }
    }

    $generator = gen_one_to_three();
    foreach ($generator as $value) {
        echo "$value\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1
    2
    3

> Bilginize:

> Dahili olarak, ilişkisel olmayan dizilerdeki gibi sıralı tamsayı anahtarlar üretilen (yield) değerlerle çiftler oluşturur.

#### Değerleri anahtarlarla üretmek

PHP ilişkisel dizileri de destekler ve üreteçlerin bir farkı yoktur. Basit değerlerin üretilmesinin yanında, yukarıda gösterildiği gibi, aynı anda bir anahtar da üretebilirsiniz.

Bir anahtar/değer çifti üretmenin (yielding) sözdizimi, aşağıda gösterildiği gibi, bir ilişkisel dizi tanımlamada kullanılan sözdizimine çok benzer.

Örnek 2 - Bir anahtar/değer çifti üretimi

    <?php
    /*
     * girdi noktalı virgülle ayrılmış alanlardır,
     * ilk alan anahtar olarak kullanılacak ID'dir
     */

    $input = <<<'EOF'
    1;PHP;Dolar imlerini sever
    2;Python;Boşlukları sever
    3;Ruby;Blokları sever
    EOF;

    function input_parser($input) {
        foreach (explode("\n", $input) as $line) {
            $fields = explode(';', $line);
            $id = array_shift($fields);

            yield $id => $fields;
        }
    }

    foreach (input_parser($input) as $id => $fields) {
        echo "$id:\n";
        echo "    $fields[0]\n";
        echo "    $fields[1]\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1:
        PHP
        Dolar imlerini sever
    2:
        Python
        Boşlukları sever
    3:
        Ruby
        Blokları sever

#### null değerlerin üretini

Yield deyimini bağımsız değişkensiz kullanmak `null` değerinin otomatik bir anahtarla birlikte üretilmesini sağlar.

Örnek 3 - `null` üretmek

    <?php
    function gen_three_nulls() {
        foreach (range(1, 3) as $i) {
            yield;
        }
    }

    var_dump(iterator_to_array(gen_three_nulls()));
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      NULL
      [1]=>
      NULL
      [2]=>
      NULL
    }

#### Başvuruya göre üretim

Üreteç işlevleri üretimi, değerlerle yapabildiği gibi başvurularla da yapabilir. Bu, işlev isminin önüne bir '&' imi yerleştirip işlevlerden başvurları döndürerek yapılabilir:

Örnek 4 - Değerleri başvuruya göre üretmek

    <?php
    function &gen_reference() {
        $value = 3;

        while ($value > 0) {
            yield $value;
        }
    }

    /*
     * $number döngü içinde değiştirilebilir,
     * üreteç başvuruları ürettiğinden,
     * gen_reference() içindeki $value değişir.
     */
    foreach (gen_reference() as &$number) {
        echo (--$number).'... ';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    2... 1... 0...

#### yield from üzerinden üreteç ihalesi

Üreteç ihalesi, değerlerin başka bir üreteçte, Traversable nesnesinden veya yield from anahtar sözcüğü kullanılarak bir diziden üretilmesini sağlar. Dış üreteç tüm değerleri iç üreteç, nesne veya diziden geçerliliğini yitirene kadar ürettikten sonra üretime dış üreteçte devam edecektir.

Bir üreteç yield from ile kullanılırsa, yield from ifadesi ayrıca, iç üreteçten döndürülen değerleri de döndürecektir.

Dikkat

# Bir dizide saklama (örn, iterator_to_array() ile)

yield from anahtarları sıfırlamaz, Traversable nesnesinden veya diziden döndürülen anahtarları korur. Böylece, bazı değerler başka bir yield veya yield from ile ortaklaşılan bir anahtarla paylaşılır (bir diziye değer girilmesiyle, anahtar ilk değerlerin üzerine yazılmasına sebep olur).

Bu konuda alışılmış durum, iterator_to_array() işlevinin öntanımlı olarak bir anahtarlı dizi döndürmesidir (muhtemelen beklenmedik sonuçlara yol açarak). iterator_to_array() ikinci bir bağımsız değişkene sahiptir: Generator tarafından döndürülen anahtarları yoksayarken tüm değerleri toplamak için `false` atanabilen `preserve_keys` bağımsız değişkeni.

Örnek 5 - iterator_to_array() ile yield from

    <?php
    function inner() {
        yield 1; // key 0
        yield 2; // key 1
        yield 3; // key 2
    }
    function gen() {
        yield 0; // key 0
        yield from inner(); // keys 0-2
        yield 4; // key 1
    }
    // [0, 1, 2, 3, 4] dizisini almak için ikinci bağımsız değişkene false aktaralım
    var_dump(iterator_to_array(gen()));
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      int(1)
      [1]=>
      int(4)
      [2]=>
      int(3)
    }

Örnek 6 - yield from için temel kullanım

    <?php
    function count_to_ten() {
        yield 1;
        yield 2;
        yield from [3, 4];
        yield from new ArrayIterator([5, 6]);
        yield from seven_eight();
        yield 9;
        yield 10;
    }

    function seven_eight() {
        yield 7;
        yield from eight();
    }

    function eight() {
        yield 8;
    }

    foreach (count_to_ten() as $num) {
        echo "$num ";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1 2 3 4 5 6 7 8 9 10

Örnek 7 - yield from ve dönen değerler

    <?php
    function count_to_ten() {
        yield 1;
        yield 2;
        yield from [3, 4];
        yield from new ArrayIterator([5, 6]);
        yield from seven_eight();
        return yield from nine_ten();
    }

    function seven_eight() {
        yield 7;
        yield from eight();
    }

    function eight() {
        yield 8;
    }

    function nine_ten() {
        yield 9;
        return 10;
    }

    $gen = count_to_ten();
    foreach ($gen as $num) {
        echo "$num ";
    }
    echo $gen->getReturn();
    ?>

Yukarıdaki örneğin çıktısı:

    1 2 3 4 5 6 7 8 9 10

## Üreteçlerin Iterator nesneleriyle karşılaştırılması

Üreteçlerin başlıca getirisi basitlikleridir. Iterator sınıfının gerçeklenmesine kıyasla çok daha az kod yazılır ve kod genelde çok daha okunabilirdir. Örneğin aşağıdaki işlev ve sınıf eşdeğerdir:

    <?php
    function getLinesFromFile($fileName) {
        if (!$fileHandle = fopen($fileName, 'r')) {
            return;
        }

        while (false !== $line = fgets($fileHandle)) {
            yield $line;
        }

        fclose($fileHandle);
    }

    // versus...

    class LineIterator implements Iterator {
        protected $fileHandle;

        protected $line;
        protected $i;

        public function __construct($fileName) {
            if (!$this->fileHandle = fopen($fileName, 'r')) {
                throw new RuntimeException('Couldn\'t open file "' . $fileName . '"');
            }
        }

        public function rewind() {
            fseek($this->fileHandle, 0);
            $this->line = fgets($this->fileHandle);
            $this->i = 0;
        }

        public function valid() {
            return false !== $this->line;
        }

        public function current() {
            return $this->line;
        }

        public function key() {
            return $this->i;
        }

        public function next() {
            if (false !== $this->line) {
                $this->line = fgets($this->fileHandle);
                $this->i++;
            }
        }

        public function __destruct() {
            fclose($this->fileHandle);
        }
    }
    ?>

Bu esnekliğin bir bedeli vardır, üreteçler sadece ileri sayan yineleyiciler olduklarından yineleme bir kere başladı mı bir daha başa sarılamazlar. Bunun bir diğer anlamı, aynı üretecin tekrar tekrar kullanılamamasıdır; üreteç işlevi tekrar çağrılarak üretecin yeniden oluşturulması gerekir.

### Ayrıca Bakınız

- Nesne Yineleme

# Öznitelikler

## İçindekiler

- Özniteliklere giriş
- Öznitelik Sözdizimi
- Özniteliklerin Yansıtma Arayüzü ile Okunması
- Öznitelik Sınıflarının Bildirimi

## Özniteliklere giriş

(PHP 8)

Öznitelikler, koddaki bildirimlerin üzerine yapılandırılmış, makine tarafından okunabilir meta veri bilgilerinin eklenmesini sağlar: Sınıflar, yöntemler, işlevler, bağımsız değişkenler, özellikler ve sınıf sabitleri bir özniteliğin hedefi olabilir. Özniteliklerle tanımlanan meta veriler daha sonra Yansıtma Arayüzleri kullanılarak çalışma anında incelenebilir. Bu nedenle öznitelikler, doğrudan koda gömülmüş bir yapılandırma dili olarak düşünülebilir.

Özniteliklerle, bir özelliğin kapsamlı gerçeklenimi ile bir uygulamadaki somut kullanımı ayrıştırılabilir. Bir bakıma arayüzler, gerçeklenimleri ile karşılaştırılabilir. Ancak arayüzlerin ve gerçeklenimlerin kodla ilgili olduğu yerlerde öznitelikler, ek bilgi ve yapılandırmaya küçük açıklamalar eklemekle ilgilidir. Arayüzler sınıflarla gerçeklenebilir, ancak öznitelikler ek olarak yöntemler, işlevler, bağımsız değişkenler, özellikler ve sınıf sabitleri üzerinde de bildirilebilir. Bu nedenle arayüzlerden daha esnektir.

Öznitelik kullanımına basit bir örnek, öznitelikleri kullanmak için isteğe bağlı yöntemlere sahip bir arayüzü dönüştürmektir. `ActionHandler` arayüzünün bir uygulamadaki bir işlemi yerine getirdiğini ve bu arayüzün bazı gerçeklenimlerinin ilklendirilmesi gerekirken diğerlerine bunun gerekmediğini varsayalım. `ActionHandler` arayüzünü gerçekleyen tüm sınıfların `setUp()` yöntemini gerçeklemesi gerekirken, bunu yapmak yerine, onun yerini alabilecek bir öznitelik kullanılabilir. Bu yaklaşımın tek yararı, öznitelliğin birkaç kez kullanabilmesidir.

Örnek 1 - Bir arayüzün isteğe bağlı yöntemlerini özniteliklerle gerçeklemek

    <?php
    interface ActionHandler
    {
        public function execute();
    }

    #[Attribute]
    class SetUp {}

    class CopyFile implements ActionHandler
    {
        public string $fileName;
        public string $targetDirectory;

        #[SetUp]
        public function fileExists()
        {
            if (!file_exists($this->fileName)) {
                throw new RuntimeException("Dosya yok");
            }
        }

        #[SetUp]
        public function targetDirectoryExists()
        {
            if (!file_exists($this->targetDirectory)) {
                mkdir($this->targetDirectory);
            } elseif (!is_dir($this->targetDirectory)) {
                throw new RuntimeException("Hedef dizin $this->targetDirectory bir dizin değil");
            }
        }

        public function execute()
        {
            copy($this->fileName, $this->targetDirectory . '/' . basename($this->fileName));
        }
    }

    function executeAction(ActionHandler $actionHandler)
    {
        $reflection = new ReflectionObject($actionHandler);

        foreach ($reflection->getMethods() as $method) {
            $attributes = $method->getAttributes(SetUp::class);

            if (count($attributes) > 0) {
                $methodName = $method->getName();

                $actionHandler->$methodName();
            }
        }

        $actionHandler->execute();
    }

    $copyAction = new CopyFile();
    $copyAction->fileName = "/tmp/foo.jpg";
    $copyAction->targetDirectory = "/home/user";

    executeAction($copyAction);

## Öznitelik Sözdizimi

Öznitelik sözdizimi çeşitli parçalardan oluşur. İlk olarak, öznitelik bildirimi her zaman bir #[ ile başlar ve bir ] biter. İçeride, virgüllerle ayrılmış bir veya daha fazla öznitelik bulunur. Öznitelik adı, İsim alanlarının kullanımı: Temeller bölümünde açıklandığı gibi nitelenmemiş, nitelenmiş veya tam nitelenmiş olabilir. Özniteliğin bağımsız değişkenleri isteğe bağlıdır, ancak normalde parantez () içine alınır. Özniteliklerin bağımsız değişkenleri yalnızca değişmez değerler veya sabit ifadeleri olabilir. Hem konumsal hem de isimli bağımsız değişken sözdizimi kullanılabilir.

Öznitelik adları ve bağımsız değişkenleri bir sınıfa çözümlenir, eğer özniteliğin bir örneği yansıtma arayüzü aracılığıyla istenirse bağımsız değişkenler kurucuya iletilir. Her öznitelik için böyle bir sınıf kullanılmalıdır.

Örnek 1 - Öznitelik Sözdizimi

    <?php
    // a.php
    namespace MyExample;

    use Attribute;

    #[Attribute]
    class MyAttribute
    {
        const VALUE = 'value';

        private $value;

        public function __construct($value = null)
        {
            $this->value = $value;
        }
    }

    // b.php

    namespace Another;

    use MyExample\MyAttribute;

    #[MyAttribute]
    #[\MyExample\MyAttribute]
    #[MyAttribute(1234)]
    #[MyAttribute(value: 1234)]
    #[MyAttribute(MyAttribute::VALUE)]
    #[MyAttribute(array("key" => "value"))]
    #[MyAttribute(100 + 200)]
    class Thing
    {
    }

    #[MyAttribute(1234), MyAttribute(5678)]
    class AnotherThing
    {
    }

## Özniteliklerin Yansıtma Arayüzü ile Okunması

Sınıflar, yöntemler, işlevler, bağımsız değişkenler, özellikler ve sınıf sabitlerinden özniteliklere erişmek için kullanılan yansıtma arayüzü, ilgili Reflection nesnelerinin her birine getAttributes() yöntemini sağlar. Bu yöntem, öznitelik adı, bağımsız değişkenler ve temsil edilen özniteliğin bir örneğini örneklendirmek için sorgulanabilen ReflectionAttribute örneklerini içeren bir dizi döndürür.

Yansıtılan öznitelik temsilinin gerçek örnekten bu şekilde ayrılması, programcının eksik öznitelik sınıfları, yanlış yazılmış veya eksik bağımsız değişkenlerle ilgili hataları elde etme konusundaki denetimini artırır. Öznitelik sınıfının nesneleri, yalnızca ReflectionAttribute::newInstance() çağrıldıktan sonra başlatılırsa bağımsız değişkenlerin doğru eşleşmesi sağlanır, daha önce değil.

Örnek 1 - Özniteliklerin Yansıtma Arayüzü kullanılarak Okunması

    <?php

    #[Attribute]
    class MyAttribute
    {
        public $value;

        public function __construct($value)
        {
            $this->value = $value;
        }
    }

    #[MyAttribute(value: 1234)]
    class Thing
    {
    }

    function dumpAttributeData($reflection) {
        $attributes = $reflection->getAttributes();

        foreach ($attributes as $attribute) {
           var_dump($attribute->getName());
           var_dump($attribute->getArguments());
           var_dump($attribute->newInstance());
        }
    }

    dumpAttributeData(new ReflectionClass(Thing::class));
    /*
    string(11) "MyAttribute"
    array(1) {
      ["value"]=>
      int(1234)
    }
    object(MyAttribute)#3 (1) {
      ["value"]=>
      int(1234)
    }
    */

Yansıtma örneğindeki tüm öznitelikleri yinelemek yerine, yalnızca belirli bir öznitelik sınıfı, sınıfın ismi bağımsız değişken olarak aktarılarak okunabilir.

Örnek 2 - Yansıtma Arayüzünü kullanarak istenen özniteliklerin okunması

    <?php

    function dumpMyAttributeData($reflection) {
        $attributes = $reflection->getAttributes(MyAttribute::class);

        foreach ($attributes as $attribute) {
           var_dump($attribute->getName());
           var_dump($attribute->getArguments());
           var_dump($attribute->newInstance());
        }
    }

    dumpMyAttributeData(new ReflectionClass(Thing::class));

## Öznitelik Sınıflarının Bildirimi

Zorunlu olmamakla birlikte, her öznitelik için gerçek bir sınıfın oluşturulması önerilir. En basit durumda, bir use ifadesiyle küresel isim alanından içe aktarılabilen #[Attribute] özniteliğinin bildirimi için yalnızca boş bir sınıfa ihtiyaç vardır.

Örnek 1 - Basit Öznitelik sınıfı

    <?php

    namespace Example;

    use Attribute;

    #[Attribute]
    class MyAttribute
    {
    }

Bir özniteliğin atanabileceği bildirim türünü kısıtlamak için, #[Attribute] bildirimine ilk bağımsız değişken olarak bir bit maskesi aktarılabilir.

Örnek 2 - Özniteliklerin kullanılabileceği yerleri kısıtlamak için hedef belirtiminin kullanımı

    <?php

    namespace Example;

    use Attribute;

    #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
    class MyAttribute
    {
    }

MyAttribute sınıfının başka bir türde bildirilmesi, ReflectionAttribute::newInstance() çağrısı sırasında bir istisna oluşmasına sebep olur.

Şu hedefler belirtilebilir:

- `Attribute::TARGET_CLASS`
- `Attribute::TARGET_FUNCTION`
- `Attribute::TARGET_METHOD`
- `Attribute::TARGET_PROPERTY`
- `Attribute::TARGET_CLASS_CONSTANT`
- `Attribute::TARGET_PARAMETER`
- `Attribute::TARGET_ALL`

Öntanımlı olarak, bir öznitelik her bildirimde yalnızca bir kere kullanılabilir. Özniteliğin bildirimlerde yinelenebilir olması isteniyorsa, `#[Attribute]` bildiriminde bit maskesinin bir parçası olarak belirtilmelidir.

Örnek 3 - Özniteliğin bir bildirimle defalarca kullanılabilmesi için IS_REPEATABLE kullanımı

    <?php

    namespace Example;

    use Attribute;

    #[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION | Attribute::IS_REPEATABLE)]
    class MyAttribute
    {
    }

# Gönderimlerle İlgili Herşey

## İçindekiler

- Gönderim Nedir?
- Gönderim Ne Yapar?
- Gönderimler Ne Değildir?
- Gönderimle Aktarım
- Gönderimle Döndürme
- Gönderimi Tanımsız Yapmak
- Gönderimleri kullanan diğer oluşumlar

## Gönderim Nedir?

PHP'de gönderimler aynı değişken içeriğine farklı isimlerle erişmek demektir. C'deki göstericilere benzemezler; örneğin, üzerlerinde gösterici aritmetiği kullanamazsınız, çünkü gerçekte bellek adresleri değillerdir. Ayrıntılar için Gönderimler Ne Değildir? bölümüne bakınız. Daha çok simge tablosu takma adlarıdır. PHP'de şuna dikkat edin: Değişken içeriği ve değişken ismi farklı şeylerdir. Bu bakımdan, aynı içeriğin farklı isimleri olabilir. En yakın benzerlik, Unix dosya isimleri ve dosyaları ile kurulabilir; değişken isimleri dizinlerse, değişken içeriği de dizinin içindeki dosyadır. Gönderimler ise Unix dosya sistemindeki sabit bağlar olarak düşünülebilir.

## Gönderim Ne Yapar?

Gönderimleri kullanıldığı üç temel işlem vardır: gönderimli atama, gönderimli aktarma, ve gönderimli döndürme. Bu bölümde bu işlemlerle ilgili bağlantılar verilerek bir başlangıç yapılmıştır.

### Gönderimli atama

Bu ilk temel işlemde, iki değişkenin aynı içeriğe atıf yapmasına izin verilir. Örnek:

    <?php
    $a =& $b;
    ?>

Bunun anlamı, $a ve $b değişkenlerinin aynı içeriği gösterdiğidir.

> Bilginize:

> Burada $a ve $b tamamen eşittir; ne $a, $b'yi göstermekte ne de $b, $a'yı göstermektedir; $a ve $b aynı yeri göstermektedir.

> Bilginize:

> Eğer tanımlanmamış bir değişken gönderimle atanır, aktarılır veya döndürülürse oluşturulmuş olur.

> Örnek 1 - Gönderimlerin tanımlanmamış değişkenlerle kullanımı

>     <?php
>     function foo(&$var) { }

>     foo($a); // $a "oluşturulur" ve değer olarak null atanır

>     $b = array();
>     foo($b['b']);
>     var_dump(array_key_exists('b', $b)); // bool(true)

>     $c = new stdClass;
>     foo($c->d);
>     var_dump(property_exists($c, 'd')); // bool(true)
>     ?>

Aynı sözdizimi, gönderim döndüren işlevler ile kullanılabilir:

    <?php
    $foo =& dğşkn_bul($bar);
    ?>

Aynı sözdizimini gönderimle dönmeyen bir işlevle kullanmak, işlevin new işlecinin sonucuyla kullanımına benzer bir hata verecektir. Nesneler göstericilerle aktarılsa da bunlar, Nesneler ve Gönderimler. altında açıklanan gönderimlerle aynı değildir.

Uyarı

Bir işlevin içinde `global` olarak bildirilmiş bir değişkeni gönderimli olarak atarsanız gönderim sadece işlevin içinde görünür olur. $GLOBALS dizisini kullanarak bundan kaçınabilirsiniz.

Örnek 2 - İşlev içinde küresel değişkenlere gönderim

    <?php
    $var1 = "Örnek değişken";
    $var2 = "";

    function küresel_gönderimler($küreselleri_kullan)
    {
        global $var1, $var2;
        if (!$küreselleri_kullan) {
            $var2 =& $var1; // sadece işlev içinde görünürdür
        } else {
            $GLOBALS["var2"] =& $var1; // küresel alanda da görünürdür
        }
    }

    küresel_gönderimler(false);
    echo "var2'ye '$var2' atanır\n"; // var2'ye '' atanır
    küresel_gönderimler(true);
    echo "var2'ye '$var2' atanır\n"; // var2'ye 'Örnek değişken' atanır
    ?>

`global $var;` deyimi `$var =& $GLOBALS['var'];` deyimine bir kısayol olarak düşünülür. Bu bakımdan `$var`'a başka bir gönderim atamak sadece yerel değişkenin gönderimini değiştirir.

> Bilginize:

> Eğer bir değişkene foreach döngüsü içinde gönderimle bir değer atarsanız gönderimde de değişiklik yapılmış olur.

> Örnek 3 - foreach döngüsü içinde gönderim

>     <?php
>     $ref = 0;
>     $row =& $ref;
>     foreach (array(1, 2, 3) as $row) {
>         // işlemler
>     }
>     echo $ref; // 3 - yinelenen dizinin son elemanı
>     ?>

Tam olarak gönderime göre atama olmamakla birlikte, `array()` dil oluşumu ile oluşturulan ifadeler, eklenecek dizi öğesi `&` ile öncelenerek öyleymiş gibi davranabilir. Örnek:

    <?php
    $a = 1;
    $b = array(2, 3);
    $arr = array(&$a, &$b[0], &$b[1]);
    $arr[0]++;
    $arr[1]++;
    $arr[2]++;
    /* $a == 2, $b == array(3, 4); */
    ?>

Bununla birlikte, dizilerdeki gönderimlerin potansiyel olarak tehlikeli olduğunu unutmayın. Bir ifadenin sağ tarafında yapılan bir gönderimli (gönderime göre değil) atama yapılması sol tarafı bir gönderim haline getirmez, fakat dizilerin içinde bu normal atamalar korunur. Bu ayrıca, dizilerin değerleriyle aktarıldığı işlev çağrılarında da uygulanır. Örnek:

    <?php
    /* Sayısal değikenlerin atanması */
    $a = 1;
    $b =& $a;
    $c = $b;
    $c = 7; // $c bir gönderim değildir; $a veya $b değişmez

    /* Dizi değişkenlerinin atanması */
    $arr = array(1);
    $a =& $arr[0]; // $a ve $arr[0] aynı gönderim kümesindedir
    $arr2 = $arr; // gönderime göre atama değildir!
    $arr2[0]++;
    /* $a == 2, $arr == array(2) */
    /* Bir gönderim olmasa bile, $arr'ın içeriği değişti!! */
    ?>

Başka bir deyişle, dizilerin gönderim davranışı her eleman için ayrı tanımlanır; elemanların tek tek gönderim davranışı dizi taşıyıcısının gönderim durumundan bağımsızdır.

### Gönderimli aktarım

Gönderimlerle yapılan ikinci şey değişkenleri gönderimle aktarmaktır. Bir işlev içinde bir yerel değişken oluşturup çağrı etki alanında bir değişkenle aynı içeriğe gönderim yaparak bu gerçeklenebilir. Örnek:

    <?php
    function foo(&$var)
    {
        $var++;
    }

    $a=5;
    foo($a);
    echo $a; // 6 çıktılar
    ?>

$a'nın 6 olmasının sebebi foo işlevinde $var değişkeninin $a'nın içeriğine gönderimli olmasıdır. Daha ayrıntılı açıklamayı gönderimle aktarım bölümünde bulabilirsiniz.

### Gönderimli değer döndürme

Gönderimlerle yapılan üçüncü şey gönderimli değer döndürmedir.

## Gönderimler Ne Değildir?

Evvelce de değinildiği gibi bir gönderim bir gösterici değildir. Yani, aşağıdaki oluşum bekleneni yapmayacaktır:

    <?php
    function foo(&$var)
    {
        $var =& $GLOBALS["baz"];
    }
    foo($bar);
    ?>

Burada foo işlevindeki $var değişkeni çağrı yapılan yerde $bar değişkenine bağlanmakla kalmayıp bir de işlevin içinde $GLOBALS["baz"] değişkenine bağlanmaktadır. $bar'ın işlev etki alanı içinde gönderim mekanizması ile başka bir değişkene bağlanması mümkün değildir, çünkü $bar değişkeni foo işlevinin etki alanında mevcut değildir (işlev etki alanında $var tarafından temsil edilmekteyse de $var sadece değişkenin içeriğine sahiptir ve çağrı simgeleri tablosunda ismi değere bağlayan şey değildir). İşlev tarafından seçilen değişkenlere gönderim yapabilmek için değeri gönderimle döndürmek gerekir.

## Gönderimle Aktarım

Bir değişkeni bir işleve gönderimle aktarabilirsiniz, böylece işlevin bağımsız değişkenlerini değiştirebilirsiniz. Sözdizimi şöyledir:

    <?php
    function işlev(&$değişken)
    {
        $değişken++;
    }

    $a=5;
    foo($a);
    // Burada $a artık 6'dır
    ?>

> Bilginize: İşlevin çağrıldığı yerde gönderim yapıldığına dair bir belirtinin olmadığına dikkat ediniz; gönderim sadece işlevin üzerindedir. İşlev tanımı bağımsız değişkeni gönderimle gerektiği gibi aktarmak için tek başına yeterlidir.

Aşağıdakiler bir işleve gönderimle aktarılabilir:

- `işlev($a)` şeklinde bir değişken.

- Bir işlevden döndürerek bir gönderim. Örnek:

      <?php
      function foo(&$var)
      {
          $var++;
      }
      function &bar()
      {
          $a = 5;
          return $a;
      }
      foo(bar());
      ?>

  Ayrıca, gönderimle değer döndürme konusuna da bakınız.

Sonuç tanımsız olacağından, başka hiçbir ifade gönderimle aktarılamaz. Örneğin, aşağıdaki gönderimle aktarım örneği geçersizdir:

    <?php
    function foo(&$var)
    {
        $var++;
    }
    function bar() // Dikkat, & yok
    {
        $a = 5;
        return $a;
    }
    foo(bar()); // Bir uyarı üretir

    foo($a = 5); // Bir ifade, değişken değil
    foo(5);      // Ölümcül hata üretir

    class Foobar {}

    foo(new Foobar()) // PHP 7.0.7'dan beri bir uyarı üretmekte
                      // Uyarı: Sadece değişkenler gönderime göre aktarılmalıdır.
    ?>

## Gönderimle Döndürme

Gönderimle döndürme, gönderimin bağlayacağı değişkeni hedefleyen bir işlev kullanmak istediğiniz takdirde yararlıdır. Gönderimle döndürmeyi başarımı arttırmak amacıyla kullanmayın. Motor, bunu kendine göre en iyileyecek yeteneğe sahiptir. Sadece geçerli bir teknik sebebiniz olduğunda gönderimle döndürme yapın! Gönderimle döndürmek için şu söz dizimi kullanılır:

    <?php
    class sınıf
    {
        public $değer = 42;

        public function &değeriBağla()
        {
            return $this->değer;
        }
    }

    $obj = new sınıf;
    $değerim = &$obj->değeriBağla(); // $değerim, $obj->değer için bir gönderimdir
    echo $değerim;                   // 42 basar
    $obj->değer = 2;
    echo $değerim;                   // 2 basar
    ?>

Bu örnekte, değeriBağla işlevi ile döndürülen nesne özelliği değişkene atanmaktadır, eğer gönderim söz dizimi kullanılmamış olsaydı özelliğin kendisi değil bir kopyası atanmış olacaktı.

> Bilginize: Bağımsız değişken aktarmanın tersine, burada her iki taraftada (çağıran ve çağrılan) `&` kullanımı zorunludur. Çağıran tarafta `$değerim` değişkenine yapılanın bir atama değil gönderim bağlantısı olduğunu, çağrılan tarafta ise yapılanın sıradan bir değer kopyalama değil bir gönderimle döndürme olduğunu belirtmektedir.

> Bilginize: `return ($this->değer);` söz dizimi ile bir işlevden bir gönderim döndürmek isterseniz bir değişkeni değil de bir ifadenin sonucunu döndürmeye çalışmış olacağınızdan bu istediğinizi yapmayacaktır. Bir işlevden gönderimle sadece değişkenleri döndürebilirsiniz, başka bir şey döndüremezsiniz.

Dönen gönderim kullanmak için, gönderim ataması yapmanız gerekir:

    <?php
    function &collector()
    {
      static $collection = array();
      return $collection;
    }
    $collection = &collector();
    $collection[] = 'foo';
    ?>

Dönen gönderimi bir gönderim umarak başka bir işleve aktarmak için bu sözdizimini kullanabilirsiniz:

    <?php
    function &collector()
    {
      static $collection = array();
      return $collection;
    }
    array_push(collector(), 'foo');
    ?>

> Bilginize: `array_push(&collector(), 'foo');` ifadesinin çalışMAyacağına, ölümcül hatayla sonuçlanacağına dikkat edin.

## Gönderimi Tanımsız Yapmak

Bir gönderimi unset() ile tanımsız yapmakla aslında değişken ismiyle değeri arasındaki bağlantıyı bozmuş olursunuz, değişkeni içeriksiz bırakmış olmazsınız (aynı değeri gösteren iki değişkenden sadece birini ortadan kaldırmış olursunuz). Örnek:

    <?php
    $a = 1;
    $b =& $a;
    unset($a);
    ?>

Burada $b değil $a tanımsız olur.

Bu işlem, Unix unlink komutunun yaptığı işlemden pek de farklı değildir.

## Gönderimleri kullanan diğer oluşumlar

PHP'deki çoğu söz dizimi oluşumu, gönderim mekanizması üzerinden gerçeklenir, bu bakımdan yukarıda gönderimle ilgili bahsedilenlerin tümü bu oluşumlara da uygulanır. Gönderimle aktarma veya döndürme gibi bazı oluşumlardan yukarıda söz edilmiştir. Gönderimleri kullanan diğer oluşumlar şunlardır:

### Küresel Gönderimler

Bir değişkeni global $değişken deyimi ile bildirdiğiniz zaman aslında küresel bir değişkene bir gönderim oluşturmuş olursunuz. Aşağıdaki örnekte de aynı işlem yapılmaktadır:

    <?php
    $değişken =& $GLOBALS["değişken"];
    ?>

Yani, küresel olarak bildirildikten sonra `unset($değişken)` ile küresel değişkeni tanımsız yapamazsınız, sadece yerel değişken tanımsız olur.

# Öntanımlı Değişkenler

PHP, harici değişkenleri, yerleşik ortam değişkenlerini ve CLI ortamında betiğe aktarılan girdilerin sayısı ve değerleri gibi yürütme ortamıyla ilgili diğer bilgileri temsil eden önceden tanımlanmış değişkenler sağlar.

# Süper küreseller

Süper küreseller — Bütün etki alanlarında daima mevcut olan yerleşik değişkenler

### Açıklama

PHP'de öntanımlı değişkenlerin çoğu "süper küresel"dir. Bu, betik boyunca bütün etki alanlarında kullanılabilir oldukları anlamına gelir. İşlevler veya yöntemler içinde bu değişkenlere erişmek için global $değişken; yapmak gerekmez.

Süper küresel değişkenler şunlardır:

- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV

### Notlar

> Bilginize: Değişken kullanılabilirliği

> Öntanımlı olarak, bütün süper küreseller mevcuttur, fakat bunların kullanılabilirliğini etkileyen yönergeler vardır. Daha fazla bilgi için variables_order yönergesine bakınız.

> Bilginize: Değişken değişkenler

> Süper küreseller, işlevler veya sınıf yöntemleri içinde değişken değişkenleri olarak kullanılamazlar.

### Ayrıca Bakınız

- değişken etki alanı
- variables_order yönergesi
- Süzme eklentisi

# $GLOBALS

(PHP 4, PHP 5, PHP 7, PHP 8)

$GLOBALS — Küresel alanda bulunan bütün değişkenleri içerir

### Açıklama

Geçerli betiğin küresel alanında tanımlı bütün değişkenleri içeren bütünleşik bir dizidir. Değişken isimleri dizinin anahtarlarıdır.

### Örnekler

Örnek 1 - $GLOBALS örneği

    <?php
    function test() {
        $foo = "yerel değişken";

        echo '$foo küresel alanda: ' . $GLOBALS["foo"] . "\n";
        echo '$foo yerel alanda: ' . $foo . "\n";
    }

    $foo = "Örnek içerik";
    test();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $foo küresel alanda: Örnek içerik
    $foo yerel alanda: yerel değişken

Uyarı

PHP 8.1.0 itibariyle, $GLOBALS dizisinin tamamına yazma erişimi artık desteklenmemektedir:

Örnek 2 - $GLOBALS dizisini yeniden yazmak hataya yol açar.

    <?php
    // Derleme sırasında hata verir:
    $GLOBALS = [];
    $GLOBALS += [];
    $GLOBALS =& $x;
    $x =& $GLOBALS;
    unset($GLOBALS);
    array_pop($GLOBALS);
    // ... ve $GLOBALS üzerinde her türlü yaz/oku-yaz işlemi
    ?>

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

> Bilginize: Değişken kullanılabilirliği

> Diğer süper küresellerden farklı olarak, $GLOBALS PHP'de her zaman var olmuştur.

> Bilginize:

> PHP 8.1.0 itibariyle, $GLOBALS artık küresel simge tablosunun salt-okunur bir kopyasıdır. Yani, küresel değişkenlerde kopyası üzerinden değişiklik yapılamaz. Evvelce, $GLOBALS dizisine, PHP dizilerinin değerlerle tanımlanması davranışı uygulanmaz ve küresel değişkenlerde kopyaları üzerinden değişiklik yapılabilirdi.

>     <?php
>     // PHP 8.1.0 öncesinde
>     $a = 1;
>     $globals = $GLOBALS; // Görünüşte değere göre kopya
>     $globals['a'] = 2;
>     var_dump($a); // int(2)

>     // PHP 8.1.0 ve sonrasında
>     // $a artık $GLOBALS kopyasından değiştirilemez.
>     // Önceki davranış dizilerde değerle tanımlanma davranışı ile çelişiyordu.
>     $globals = $GLOBALS;
>     $globals['a'] = 1;

>     // Önceki davranışa dönmek istenirse, kopya üzerinde yineleme ile
>     // her özellik $GLOBALS dizisine yeniden atanmalıdır.
>     foreach ($globals as $key => $value) {
>         $GLOBALS[$key] = $value;
>     }
>     ?>

# $_SERVER

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SERVER — Sunucu ve işletme ortamı bilgisi

### Açıklama

$_SERVER başlıklar, yollar ve betiklerin yerleri gibi bilgileri içeren bir dizidir. Bu dizideki girdiler HTTP sunucusu tarafından oluşturulur. Her HTTP sunucusu bunları sunacak diye bir garanti yoktur; sunucular bazıları ile işlem yapmayabilir veya burada listelenmeyen başkalarını sağlayabilirler. Bu değişkenlerden çoğu » CGI/1.1 Belirtimi içinde ele alınır.

> Bilginize: PHP komut satırından çalıştırıldığında bu girdilerin çoğu ya kullanılamaz ya da anlamsız olur.

Aşağıda listelenen dizi elemenlarına ek olarak, PHP istek başlıklarındaki değerlerle ek elemanlar oluşturur. Bu girdilerin isimleri `HTTP_` öneki ile başlar, küçük harfler büyük harfe dönüştürülür ve tirelerin yerini alt çizgiler alır. Örneğin, `Accept-Language` başlığının dizideki elemanına `$_SERVER['HTTP_ACCEPT_LANGUAGE']` ile erişilebilir.

### İndisler

'PHP_SELF'
  Çalıştırılmakta olan betiğin, belge kök dizinine göreli dosya adıdır. Örneğin, http://example.com/foo/bar.php adresindeki bir betik için $_SERVER['PHP_SELF'] değeri /foo/bar.php olacaktır. __FILE__ sabiti geçerli dosyanın tam yolunu ve dosya adını içerir. PHP komut satırı işlemcisi olarak çalışıyorsa bu değişken betik adını içerir.
'argv'
  Betiğe aktarılan bağımsız değişken dizisidir. Betik komut satırında çalıştığında, komut satırı bağımsız değişkenlerine C gibi erişim imkanı verir. Betik GET yöntemi üzerinden çağrıldığında, bu değişken sorgu dizgesini içerir.
'argc'
  Betiğe aktarılan komut satırı bağımsız değişkenlerinin sayısını içerir (betik eğer komut satırından çalıştırılıyorsa).
'GATEWAY_INTERFACE'
  Sunucunun desteklediği CGI belirtiminin sürümünü içerir; `'CGI/1.1'` gibi.
'SERVER_ADDR'
  Geçerli betiğin altında çalıştığı sunucunun IP adresidir.
'SERVER_NAME'
  Geçerli betiğin altında çalıştığı sunucunun adıdır. Eğer betik bir sanal konak üzerinde çalışıyorsa, o sanal konağın adını içerir.

  > Bilginize: Apache 2 altında, `UseCanonicalName = On` ve `ServerName` atamaları yapılmalıdır. Aksi takdirde, bu değer istemci tarafından belirtilmiş muhtemelen sahte bir konak ismi içerebilir. Güvenliliğin önemli olduğu içeriklerde bu değere güvenmek doğru değildir.

'SERVER_SOFTWARE'
  Sunucu kimlik dizgesi, isteklere verilen cevap başlıklarının içinde verilir.
'SERVER_PROTOCOL'
  Sayfa isteğinin yapıldığı protokolün ismi ve sürümüdür; `'HTTP/1.1'` gibi;
'REQUEST_METHOD'
  Sayfaya erişim için kullanılan istek yöntemi; `'GET'`, `'HEAD'`, `'POST'`, `'PUT'` gibi.

  > Bilginize:

  > Eğer istek yöntemi `HEAD` ise PHP betiği başlıklar gönderildikten sonra (çıktının çıktı tamponu olmadan üretilmesinden sonra anlamında) sonlandırılır.

'REQUEST_TIME'
  İsteğin başlangıç zamanı etiketidir.
'REQUEST_TIME_FLOAT'
  Mikrosaniye cinsinden isteğin başlangıç zamanı damgası.
'QUERY_STRING'
  Sorgu dizgesi, sayfaya erişirken kullanılabilir.
'DOCUMENT_ROOT'
  Sunucunun ayar dosyasında da tanımlandığı gibi, geçerli betiğin altında çalıştığı belge kök dizinidir.
'HTTPS'
  Eğer betik HTTPS protokolü ile sorgulanmışsa boş olmayan bir değer atanır.
'REMOTE_ADDR'
  Geçerli sayfayı görüntüleyen kullanıcının IP adresidir.
'REMOTE_HOST'
  Geçerli sayfayı görüntüleyen kullanıcının sunucu adıdır. Kullanıcının REMOTE_ADDR değerinden ters dns sorgusuyla elde edilir.

  > Bilginize: HTTP sunucusu bu değişkeni oluşturmak için yapılandırılmalıdır. Bunun için, örneğin Apache'de httpd.conf içinde `HostnameLookups On` olmalıdır. Ayrıca gethostbyaddr() işlevine de bakılabilir.

'REMOTE_PORT'
  Kullanıcının makinesinin HTTP sunucusu ile haberleşmek için kullandığı porttur.
'REMOTE_USER'
  Kimliği kanıtlanmış kullanıcı.
'REDIRECT_REMOTE_USER'
  İstek dahilen yönlendirilmişse kimliğİ kanıtlanmış kullanıcı.
'SCRIPT_FILENAME'

  Geçerli betiğin mutlak yoludur.

  > Bilginize:

  > Eğer betik file.php veya ../file.php gibi göreli bir yolla komut satırından çalıştırılırsa, $_SERVER['SCRIPT_FILENAME'] kullanıcı tarafından belirtilen göreli yolu içerir.

'SERVER_ADMIN'
  HTTP sunucusu ayar dosyasındaki SERVER_ADMIN (Apache için) yönergesine verilen değerdir. Eğer betik bir sanal konak üzerinde çalışıyorsa, o sanal konak için için tanımlanmış değer olur.
'SERVER_PORT'
  Haberleşme için HTTP sunucusu tarafından kullanılan porttur. Öntanımlı kurulumlar için değeri `'80'`dir; örneğin SSL kullanımında bunu güvenli HTTP portu olarak ne tanımladıysanız ona değiştirebilirsiniz.

  > Bilginize: Apache 2 altında, fiziksel (gerçek) portu almak için `UseCanonicalName = On`'dan başka `UseCanonicalPhysicalPort = On` da tanımlanmalıdır, aksi takdirde, bu değer sahte olabilir ve fiziksel port değerini döndürüp döndürmeyeceği belli olmaz. Güvenliğin önemli olduğu içeriklerde bu değere güvenmek doğru değildir.

'SERVER_SIGNATURE'
  Eğer etkinse, sunucu tarafından üretilen sayfalara eklenen, sunucu sürümünü ve sanal konak adını içeren dizgidir.
'PATH_TRANSLATED'
  Sunucu gerekli sanaldan gerçeğe dönüşümleri yaptıktan sonra geçerli betiğin dosya sistemini (belge kökü değil) temel alan yoludur.

  > Bilginize: Apache 2 kullanıcıları PATH_INFO tanımlatmak için httpd.conf içinde `AcceptPathInfo = On` yapılandırmasını kullanabilirler.

'SCRIPT_NAME'
  Geçerli betiğin yolunu içerir. Kendi kendilerini göstermesi gereken sayfalar için kullanışlıdırlar. __FILE__ sabiti geçerli (örn. içerilen) dosyanın tam yolunu vedosya adını içerir.
'REQUEST_URI'
  Sayfaya erişim için belirtilen URI; örneğin, '`/index.html`'.
'PHP_AUTH_DIGEST'
  Özetli HTTP kimlik doğrulaması yapılırken bu değişken istemci tarafından gönderilen 'Authorization' başlığında belirtilir (böylece siz de uygun geçerlilik denetimini yapmak için bunu kullanabilirsiniz).
'PHP_AUTH_USER'
  HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan kullanıcı adı atanır.
'PHP_AUTH_PW'
  HTTP kimlik doğrulaması yapılırken bu değişkene kullanıcı tarafından sağlanan parola atanır.
'AUTH_TYPE'
  Apache altında modül olarak HTTP kimlik doğrulaması yapılırken bu değişkene kullanılan kimlik doğrulama türü atanır.
'PATH_INFO'
  İstemci tarafından sağlanan dosya yolunu içerir; dosya isminin ardında bir sorgu dizgesi olsa bile bu gösterilmez. Örneğin, betiğe şöyle erişiliyor olsun: http://www.example.com/php/path_info.php/some/stuff?foo=bar. Bu durumda $_SERVER['PATH_INFO'], `/some/stuff` değerini içerecektir.
'ORIG_PATH_INFO'
  PHP tarafından işlenmeden önceki özgün 'PATH_INFO'.

### Örnekler

Örnek 1 - $_SERVER örneği

    <?php
    echo $_SERVER['SERVER_NAME'];
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    www.example.com

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- Süzme eklentisi

# $_GET

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_GET — HTTP GET değişkenleri

### Açıklama

URL bağımsız değişkenleri (başka bir deyişle, sorgu dizesi) üzerinden geçerli betiğe aktarılan değişkenlerden oluşan bir ilişkisel dizi. Dizinin yalnızca GET isteklerinden değil, bir sorgu dizesindeki tüm isteklerden oluşturulduğunu unutmayın.

### Örnekler

Örnek 1 - $_GET örneği

    <?php
    echo 'Merhaba ' . htmlspecialchars($_GET["isim"]) . '!';
    ?>

Kullanıcının http://example.com/?isim=Elif adresini çağırdığı varsayılarak

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Merhaba Elif!

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

> Bilginize:

> GET değişkenleri urldecode() üzerinden aktarılır.

### Ayrıca Bakınız

- Dış kaynaklı değişkenlerin ele alınması
- Süzme eklentisi

# $_POST

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_POST — HTTP POST değişkenleri

### Açıklama

İstekte HTTP Content-Type olarak `multipart/form-data` veya `application/x-www-form-urlencoded` kullanıldığında HTTP POST yöntemi kullanılarak geçerli betiğe aktarılan ilşkisel değişken dizisi.

### Örnekler

Örnek 1 - $_POST örneği

    <?php
    echo 'Merhaba ' . htmlspecialchars($_POST["isim"]) . '!';
    ?>

Kullanıcının POST ile isim=Gizem gönderdiği varsayılarak

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Merhaba Gizem!

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- Dış kaynaklı değişkenlerin ele alınması
- Süzme eklentisi

# $_FILES

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_FILES — HTTP Dosya Yükleme değişkenleri

### Açıklama

HTTP POST yöntemi kullanılarak geçerli betiğe yüklenen ilişkisel öğe dizisi. Bu dizinin yapısı POST yöntemi ile karşıya dosya yükleme bölümünde özetlenmiştir.

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- move_uploaded_file() - Karşıya yüklenen bir dosyayı yeni bir yere taşır
- Dosya Yüklemelerini İşlemek

# $_REQUEST

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_REQUEST — HTTP İstek değişkenleri

### Açıklama

Öntanımlı olarak $_GET, $_POST ve $_COOKIE değişkenlerini içeren ilişkisel bir dizidir.

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

> Bilginize:

> Komut satırından çalışmada, bu dizi argv ve argc girdilerinde içerilmez; bunlar $_SERVER dizisinde bulunur.

> Bilginize:

> $_REQUEST içindeki değişkenler betiğe GET, POST, ve COOKIE girdi mekanizmaları ile sağlanır ve bu nedenle uzak kullanıcı tarafından değiştirilebilir ve bunlara güvenilemez. Bu dizide listelenen değişkenlerin varlıkları ve sıraları PHP request_order ve variables_order yapılandırma yönergelerine göre tanımlanır.

### Ayrıca Bakınız

- import_request_variables()
- Dış kaynaklı değişkenlerle çalışmak
- Süzme eklentisi

# $_SESSION

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_SESSION — Oturum değişkenleri

### Açıklama

Geçerli betikte kullanılabilecek oturum değişkenlerini içeren bir ilişkisel dizidir. Nasıl kullanıldığıyla ilgili daha fazla bilgi için Oturum İşlevleri belgesine bakınız.

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- session_start() - Yeni bir oturum başlatır veya eskisini yeniden devreye sokar

# $_ENV

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_ENV — Ortam değişkenleri

### Açıklama

Ortam yönetimi kullanılarak geçerli betiğe aktarılan bütünleşik ortam değişkenleri dizisi.

Bu değişkenler PHP yazım denetleyicisinin çalıştığı ortamdan PHP'nin küresel isim alanına ithal edilir. Çoğu PHP'nin altında çalıştığı kabuk (shell) tarafından sağlanır. Farklı sistemler farklı türde kabuklar çalıştırırlar, bu bakımdan tam bir tanımlı ortam değişkenleri listesi verilemez. Lütfen tanımlı ortam değişkenleri listesi için kullandığınız kabuğun belgelerine bakınız.

Diğer ortam değişkenleri, CGI değişkenlerini içerir ve PHP'nin bir sunucu hizmeti olarak mı yoksa CGI işlemcisi olarak mı çalıştığına bakmaksızın yerleştirilirler.

### Örnekler

Örnek 1 - $_ENV örneği

    <?php
    echo 'Benim adım ' .$_ENV["USER"] . '!';
    ?>

Bu betiği "yasar" isimli kullanıcının çalıştırdığı varsayılarak

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Benim adım yasar!

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- getenv() - Ortam değişkenlerinden birinin veya tümünün değerini döndürür
- Süzme eklentisi

# $_COOKIE

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_COOKIE — HTTP Çerezleri

### Açıklama

Geçerli betiğe HTTP Çerezleri üzerinden aktarılan bütünleşik bir değişken dizisi

### Örnekler

Örnek 1 $_COOKIE örneği

    <?php
    echo 'Merhaba ' . htmlspecialchars($_COOKIE["isim"]) . '!';
    ?>

"isim" çerezinin önceden atandığı varsayılmıştır.

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Merhaba Yaşar!

### Notlar

> Bilginize:

> Bu bir süper küreseldir. Yani bir betiğin her yerinde geçerlidir. Değişkene işlevler ve yöntemlerin içinden erişmek için global $değişken; deyimine gerek yoktur.

### Ayrıca Bakınız

- setcookie() - Bir çerez gönderir
- Dış kaynaklı değişkenlerin ele alınması
- Süzme eklentisi

# $php_errormsg

(PHP 4, PHP 5, PHP 7)

$php_errormsg — Önceki hata iletisi

Uyarı

Bu özelliğin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

Bunun yerine error_get_last() işlevini kullanın.

### Açıklama

$php_errormsg PHP tarafından üretilen son hata iletisinin metnini içeren bir değişkendir. Bu değişken sadece hatanın oluştuğu alan içinde ve sadece track_errors ayar seçeneği açıldıysa (öntanımlı değeri kapalıdır) geçerlidir.

Uyarı

Eğer kullanıcı tanımlı bir hata işleyici (set_error_handler()) atanmışsa $php_errormsg değişkenine sadece hata işleyici `false` döndürürse bir değer atanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | $php_errormsg'nin kullanımına sebep olan track_errors kaldırıldı.
7.2.0 | $php_errormsg'nin kullanımına sebep olan track_errors kullanımdan kaldırıldı.

### Örnekler

Örnek 1 - $php_errormsg örneği

    <?php
    @strpos();
    echo $php_errormsg;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Wrong parameter count for strpos()

### Ayrıca Bakınız

- error_get_last() - Son oluşan hata hakkında bilgi verir

# $http_response_header

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

$http_response_header — HTTP yanıt başlıkları

### Açıklama

$http_response_header dizisi get_headers() işlevi gibidir. HTTP sarmalayıcı kullanılırken, $http_response_header HTTP yanıt başlıklarından oluşturulur. $http_response_header yerel etki alanında oluşturulur.

### Örnekler

Örnek 1 - $http_response_header örneği

    <?php
    function get_contents() {
      file_get_contents("http://example.com");
      var_dump($http_response_header); // değişken yerel etki alanında değerlendirilir
    }
    // get_contents() çağrısı değişkeni işlev etki alanının dışında değerlendirmez
    get_contents();
    var_dump($http_response_header);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(9) {
      [0]=>
      string(15) "HTTP/1.1 200 OK"
      [1]=>
      string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
      [2]=>
      string(29) "Server: Apache/2.2.3 (CentOS)"
      [3]=>
      string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
      [4]=>
      string(27) "ETag: "280100-1b6-80bfd280""
      [5]=>
      string(20) "Accept-Ranges: bytes"
      [6]=>
      string(19) "Content-Length: 438"
      [7]=>
      string(17) "Connection: close"
      [8]=>
      string(38) "Content-Type: text/html; charset=UTF-8"
    }

    Warning: Undefined variable $http_response_header
    NULL

# $argc

(PHP 4, PHP 5, PHP 7, PHP 8)

$argc — Betiğe geçirilen ifade sayısı

### Açıklama

Komut satırından çalıştığında geçerli betiğe aktarılan ifade sayısını içerir.

> Bilginize: Betiğin dosya adı her zaman ilk ifade olarak betiğe geçirilir, bu nedenle $argc'nin asgari değeri `1`'dir.

> Bilginize: Bu değişken register_argc_argv etkin değilse kullanılamaz.

### Örnekler

Örnek 1 - $argc örneği

    <?php
    var_dump($argc);
    ?>

Örneği şu şekilde çalıştırınca: php betik.php arg1 arg2 arg3

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(4)

### Notlar

> Bilginize:

> $_SERVER['argc'] olarak da kullanılabilir.

### Ayrıca Bakınız

- getopt() - Komut satırı bağımsız değişkenleri listesinden seçenekleri döndürür
- $argv

# $argv

(PHP 4, PHP 5, PHP 7, PHP 8)

$argv — Betiğe geçirilen ifade dizisi

### Açıklama

komut satırından çalıştığında betiğe aktarılan ifade dizi'sini içerir.

> Bilginize: İlk bağımsız değişken $argv[0] daima geçerli betiğin adıdır.

> Bilginize: Bu değişken register_argc_argv etkin değilse kullanılamaz.

### Örnekler

Örnek 1 - $argv örneği

    <?php
    var_dump($argv);
    ?>

Örneği şu şekilde çalıştırınca: php betik.php arg1 arg2 arg3

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      [0]=>
      string(10) "betik.php"
      [1]=>
      string(4) "arg1"
      [2]=>
      string(4) "arg2"
      [3]=>
      string(4) "arg3"
    }

### Notlar

> Bilginize:

> $_SERVER['argv'] olarak da kullanılabilir.

### Ayrıca Bakınız

- getopt() - Komut satırı bağımsız değişkenleri listesinden seçenekleri döndürür
- $argc

## İçindekiler

- Süper küreseller — Bütün etki alanlarında daima mevcut olan yerleşik değişkenler
- $GLOBALS — Küresel alanda bulunan bütün değişkenleri içerir
- $_SERVER — Sunucu ve işletme ortamı bilgisi
- $_GET — HTTP GET değişkenleri
- $_POST — HTTP POST değişkenleri
- $_FILES — HTTP Dosya Yükleme değişkenleri
- $_REQUEST — HTTP İstek değişkenleri
- $_SESSION — Oturum değişkenleri
- $_ENV — Ortam değişkenleri
- $_COOKIE — HTTP Çerezleri
- $php_errormsg — Önceki hata iletisi
- $http_response_header — HTTP yanıt başlıkları
- $argc — Betiğe geçirilen ifade sayısı
- $argv — Betiğe geçirilen ifade dizisi

# Öntanımlı İstisnalar

## İçindekiler

- Exception
- ErrorException
- ClosedGeneratorException
- Error
- ArgumentCountError
- ArithmeticError
- AssertionError
- DivisionByZeroError
- CompileError
- ParseError
- TypeError
- ValueError
- UnhandledMatchError
- FiberError

Ayrıca bakınız: SPL İstisnaları

# Exception Sınıfı

(PHP 5, PHP 7, PHP 8)

## Giriş

Exception tüm kullanıcı istisnaları için temel sınıftır.

## Sınıf Sözdizimi

class Exception implements Throwable {
/* Özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
public function __construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function getMessage(): string
final public function getPrevious(): ?Throwable
final public function getCode(): int
final public function getFile(): string
final public function getLine(): int
final public function getTrace(): array
final public function getTraceAsString(): string
public function __toString(): string
private function __clone(): void
}

## Özellikler

message

  İstisna iletisi.

code

  İstisna kodu.

file

  İstisnanın oluştuğu dosyanın ismi.

line

  İstisnanın oluştuğu satırın numarası.

previous

  Yavrulanan önceki istisna.

string

  Yığıt izinin dizgesel gösterimi.

trace

  Dizi olarak yığıt izi.

# Exception::__construct

(PHP 5, PHP 7, PHP 8)

Exception::__construct — İstisna oluşturur

### Açıklama

public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)

İstisna oluşturur.

### Bağımsız Değişkenler

`message`

  Oluşturulan istisna iletisi.

`code`

  İstisna kodu.

`previous`

  İstisna zincirindeki önceki istisna.

> Bilginize: $code ve $message özellikleri zaten atanmışsa, istisna kurucusunu bir alt sınıftan çağırmak öntanımlı bağımsız değişkenleri yok sayar.

### Notlar

> Bilginize:

> `message` bağımsız değişkeni ikil olarak güvenilir değildir.

# Exception::getMessage

(PHP 5, PHP 7, PHP 8)

Exception::getMessage — İstisna iletisi ile döner

### Açıklama

final public function Exception::getMessage(): string

İstisna iletisi ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisna iletisi bir dizge olarak döner.

### Örnekler

Örnek 1 - Exception::getMessage() örneği

    <?php
    try {
        throw new Exception("Bir hata iletisi");
    } catch(Exception $e) {
        echo $e->getMessage();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Bir hata iletisi

### Ayrıca Bakınız

- Throwable::getMessage() - İleti döndürür

# Exception::getPrevious

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Exception::getPrevious — Önceki Throwable nesnesini döndürür

### Açıklama

final public function Exception::getPrevious(): ?Throwable

Exception::__construct() kurucusunun üçüncü bağımsız değişkenine aktarılmış olan Throwable nesnesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Mümkünse önceki Throwable nesnesi, yoksa `null` döner.

### Örnekler

Örnek 1 - Exception::getPrevious() örneği

Döngüsel olarak ve çıktılıyarak istisna izleme.

    <?php
    class MyCustomException extends Exception {}

    function doStuff() {
        try {
            throw new InvalidArgumentException("Yanlış yapıyorsunuz!", 112);
        } catch(Exception $e) {
            throw new MyCustomException("Bir şeyler oldu", 911, $e);
        }
    }

    try {
        doStuff();
    } catch(Exception $e) {
        do {
            printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(),
                    $e->getMessage(), $e->getCode(), get_class($e));
        } while($e = $e->getPrevious());
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/bjori/ex.php:8 Bir şeyler oldu (911) [MyCustomException]
    /home/bjori/ex.php:6 Yanlış yapıyorsunuz! (112) [InvalidArgumentException]

### Ayrıca Bakınız

- Throwable::getPrevious() - Önceki Throwable sınıfıyla döner

# Exception::getCode

(PHP 5, PHP 7, PHP 8)

Exception::getCode — İstisnanın numarası ile döner

### Açıklama

final public function Exception::getCode(): int

Exception'dan istisna numarasını int olarak döndürür fakat Exception çocuklarından başka türde bir değer de dönebilir (örneğin PDOException'dan string).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisna numarası bir int olarak döner.

### Örnekler

Örnek 1 - Exception::getCode() örneği

    <?php
    try {
        throw new Exception("Bir hata iletisi", 30);
    } catch(Exception $e) {
        echo "İstisna numarası: " . $e->getCode();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    İstisna numarası: 30

### Ayrıca Bakınız

- Throwable::getCode() - İstisna numarasını döndürür

# Exception::getFile

(PHP 5, PHP 7, PHP 8)

Exception::getFile — İstisnanın oluştuğu dosyanın adı ile döner

### Açıklama

final public function Exception::getFile(): string

İstisnanın oluştuğu dosyanın adı ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisnanın oluştuğu dosyanın adı ile döner.

### Örnekler

Örnek 1 - Exception::getFile() örneği

    <?php
    try {
        throw new Exception;
    } catch(Exception $e) {
        echo $e->getFile();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/bjori/tmp/ex.php

### Ayrıca Bakınız

- Throwable::getFile() - Nesnenin oluşturulduğu dosyanın ismini döndürür

# Exception::getLine

(PHP 5, PHP 7, PHP 8)

Exception::getLine — İstisnanın oluştuğu satırın numarası ile döner

### Açıklama

final public function Exception::getLine(): int

İstisnanın oluştuğu satırın numarası ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisnanın oluştuğu satırın numarası ile döner.

### Örnekler

Örnek 1 - Exception::getLine() örneği

    <?php
    try {
        throw new Exception("Bir hata iletisi");
    } catch(Exception $e) {
        echo "İstisnanın oluştuğu satırın numarası: " . $e->getLine();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    İstisnanın oluştuğu satırın numarası: 3

### Ayrıca Bakınız

- Throwable::getLine() - Nesnenin örneklendiği satır numarasını döndürür

# Exception::getTrace

(PHP 5, PHP 7, PHP 8)

Exception::getTrace — Yığıt iziyle döner

### Açıklama

final public function Exception::getTrace(): array

İstisna yığıtının iziyle döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisna yığıtının izini bir dizi olarak döndürür.

### Örnekler

Örnek 1 - Exception::getTrace() örneği

    <?php
    function test() {
     throw new Exception;
    }

    try {
     test();
    } catch(Exception $e) {
     var_dump($e->getTrace());
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["file"]=>
        string(22) "/home/bjori/tmp/ex.php"
        ["line"]=>
        int(7)
        ["function"]=>
        string(4) "test"
        ["args"]=>
        array(0) {
        }
      }
    }

### Ayrıca Bakınız

- Throwable::getTrace() - Yığıt izini döndürür

# Exception::getTraceAsString

(PHP 5, PHP 7, PHP 8)

Exception::getTraceAsString — Yığıt izini bir dizge olarak döndürür

### Açıklama

final public function Exception::getTraceAsString(): string

İstisna yığıtının izini bir dizge olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisna yığıtının izini bir dizge olarak döndürür.

### Örnekler

Örnek 1 - Exception::getTraceAsString() örneği

    <?php
    function test() {
        throw new Exception;
    }

    try {
        test();
    } catch(Exception $e) {
        echo $e->getTraceAsString();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    #0 /home/bjori/tmp/ex.php(7): test()
    #1 {main}

### Ayrıca Bakınız

- Throwable::getTraceAsString() - Yığıt izini bir dize olarak döndürür

# Exception::__toString

(PHP 5, PHP 7, PHP 8)

Exception::__toString — İstisnanın dizgesel gösterimiyle döner

### Açıklama

public function Exception::__toString(): string

İstisnanın string türündeki gösterimiyle döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisnanın string türündeki gösterimiyle döner.

### Örnekler

Örnek 1 - Exception::__toString() örneği

    <?php
    try {
        throw new Exception("Bir hata iletisi");
    } catch(Exception $e) {
        echo $e;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    exception 'Exception' with message 'Bir hata iletisi' in /home/nilgun/tmp/ex.php:3
    Stack trace:
    #0 {main}

### Ayrıca Bakınız

- Throwable::__toString() - Yavrulanan nesnenin dize gösterimini döndürür

# Exception::__clone

(PHP 5, PHP 7, PHP 8)

Exception::__clone — İstisna kopyası

### Açıklama

private function Exception::__clone(): void

Exception nesneleri kopyalanamaz ve kopyalanmaya çalışılırsa Error nesnesi oluşur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

İstisnalar kopyalanabilir değildir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Exception::__clone() artık final değil.

## İçindekiler

- Exception::__construct — İstisna oluşturur
- Exception::getMessage — İstisna iletisi ile döner
- Exception::getPrevious — Önceki Throwable nesnesini döndürür
- Exception::getCode — İstisnanın numarası ile döner
- Exception::getFile — İstisnanın oluştuğu dosyanın adı ile döner
- Exception::getLine — İstisnanın oluştuğu satırın numarası ile döner
- Exception::getTrace — Yığıt iziyle döner
- Exception::getTraceAsString — Yığıt izini bir dizge olarak döndürür
- Exception::__toString — İstisnanın dizgesel gösterimiyle döner
- Exception::__clone — İstisna kopyası

# ErrorException Sınıfı

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Giriş

Bir hata istisnası.

## Sınıf Sözdizimi

class ErrorException extends Exception {
/* Özellikler */
protected int $severity = E_ERROR;
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
public function __construct(
string `$message` = "",
int `$code` = 0,
int `$severity` = `E_ERROR`,
?string `$filename` = `null`,
?int `$line` = `null`,
?Throwable `$previous` = `null`
)
final public function getSeverity(): int
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

severity

  İstisnanın önem derecesi

## Örnekler

Örnek 1 - Hata iletilerinin set_error_handler() ile ErrorException içinde döndürülmesi

    <?php
    set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline) {
        if (!(error_reporting() & $errno)) {
            // Bu hata kodu hata bildiriminde bulunmaz
            return;
        }
        if ($errno === E_DEPRECATED || $errno === E_USER_DEPRECATED) {
            // Yeni veya beklenmeyen kullanımdan kaldırmalar uygulamayı
            // bozacağından kullanımdan kaldırma uyarıları için istisna
            // oluşturmayın.
            return;
        }
        throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    // Bozuk verilerin dizgeleştirilmesi, hata işleyicisi tarafından
    // ErrorException'a dönüştürülecek bir uyarıyı tetikler.
    unserialize('bozuk veri');
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Fatal error: Uncaught exception 'ErrorException' with message 'strpos() expects at least 2 parameters, 0 given' in /home/bjori/tmp/ex.php:12
    Stack trace:
    #0 [internal function]: exception_error_handler(2, 'strpos() expect...', '/home/bjori/php...', 12, Array)
    #1 /home/bjori/php/cleandocs/test.php(12): strpos()
    #2 {main}
      thrown in /home/bjori/tmp/ex.php on line 12

# ErrorException::__construct

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

ErrorException::__construct — İstisna oluşturur

### Açıklama

public function ErrorException::__construct(
string `$message` = "",
int `$code` = 0,
int `$severity` = `E_ERROR`,
?string `$filename` = `null`,
?int `$line` = `null`,
?Throwable `$previous` = `null`
)

İstisna oluşturur.

### Bağımsız Değişkenler

`message`

  Oluşturulan istisna iletisi.

`code`

  İstisnanın numarası.

`severity`

  İstisnanın önem derecesi.

  > Bilginize:

  > Önem derecesi bir herhangi bir int değer olabilirse de, burada hata sabitlerinin kullanılması amaçlanmıştır.

`filename`

  İstisnanın oluştuğu dosyanın adı.

`line`

  İstisnanın oluştuğu satırın numarası.

`previous`

  İstisna zincirleme için kullanılan önceki istisna.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `filename` and `line` artık `null` olabiliyor. Evvelce, öntanımlı değerleri sırasıyla `__FILE__` ve `__LINE__` idi.

# ErrorException::getSeverity

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

ErrorException::getSeverity — İstisnanın önem derecesi ile döner

### Açıklama

final public function ErrorException::getSeverity(): int

İstisnanın önem derecesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İstisnanın önem derecesini döndürür.

### Örnekler

Örnek 1 - ErrorException::getSeverity() örneği

    <?php
    try {
        throw new ErrorException("İstisna iletisi", 0, E_USER_ERROR);
    } catch(ErrorException $e) {
        echo "Bu istisnanın önem derecesi: " . $e->getSeverity();
        var_dump($e->getSeverity() === E_USER_ERROR);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Bu istisnanın önem derecesi: 256
    bool(true)

## İçindekiler

- ErrorException::__construct — İstisna oluşturur
- ErrorException::getSeverity — İstisnanın önem derecesi ile döner

# The ClosedGeneratorException class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

A ClosedGeneratorException is thrown when trying to retrieve a value from a closed Generator.

## Sınıf Sözdizimi

class ClosedGeneratorException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# Error

(PHP 7, PHP 8)

## Giriş

Error tüm dahili PHP hataları için temel sınıftır.

## Sınıf Sözdizimi

class Error implements Throwable {
/* Özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
public function __construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function getMessage(): string
final public function getPrevious(): ?Throwable
final public function getCode(): int
final public function getFile(): string
final public function getLine(): int
final public function getTrace(): array
final public function getTraceAsString(): string
public function __toString(): string
private function __clone(): void
}

## Özellikler

message

  Hata iletisi

code

  Hata kodu

file

  Hatanın oluştuğu dosyanın adı

line

  Hatanın oluştuğu satır

previous

  Yavrulanan önceki istisna.

string

  Yığıt izinin dizgesel gösterimi.

trace

  Dizi olarak yığıt izi.

# Error::__construct

(PHP 7, PHP 8)

Error::__construct — Bir hata nesnesi oluşturur

### Açıklama

public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)

Error nesnesi oluşturur.

### Bağımsız Değişkenler

`message`

  Hata iletisi.

`code`

  Hatanın kodu.

`previous`

  Zincirdeki önceki nesne.

### Notlar

> Bilginize:

> `message` bağımsız değişkeni ikil olarak güvenli değildir.

# Error::getMessage

(PHP 7, PHP 8)

Error::getMessage — Hata iletisini döndürür

### Açıklama

final public function Error::getMessage(): string

Hata iletisini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata iletisini bir dize olarak döndürür.

### Örnekler

Örnek 1 - Error::getMessage() örneği

    <?php
    try {
        throw new Error("Bu bir hata iletisidir");
    } catch(Error $e) {
        echo $e->getMessage();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Bu bir hata iletisidir

### Ayrıca Bakınız

- Throwable::getMessage() - İleti döndürür

# Error::getPrevious

(PHP 7, PHP 8)

Error::getPrevious — Önceki hata nesnesini döndürür

### Açıklama

final public function Error::getPrevious(): ?Throwable

Önceki Throwable nesnesini (Error::__construct() yöntemini üçüncü bağımsız değişkeni) döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Mevcutsa önceki Throwable nesnesi, değilse `null` döner.

### Örnekler

Örnek 1 - Error::getPrevious() örneği

Hata izleme, döngü, yazdırma.

    <?php
    class MyCustomError extends Error {}

    function doStuff() {
        try {
            throw new InvalidArgumentError("Yanlış yapıyorsunuz!", 112);
        } catch(Error $e) {
            throw new MyCustomError("Bir şeyler oldu", 911, $e);
        }
    }

    try {
        doStuff();
    } catch(Error $e) {
        do {
            printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e));
        } while($e = $e->getPrevious());
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/bjori/ex.php:8 Bir şeyler oldu (911) [MyCustomError]
    /home/bjori/ex.php:6 Yanlış yapıyorsunuz! (112) [InvalidArgumentError]

### Ayrıca Bakınız

- Throwable::getPrevious() - Önceki Throwable sınıfıyla döner

# Error::getCode

(PHP 7, PHP 8)

Error::getCode — Hata koduyla döner

### Açıklama

final public function Error::getCode(): int

Hatanın kodunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata kodu bir int olarak döner.

### Örnekler

Örnek 1 - Error::getCode() örneği

    <?php
    try {
        throw new Error("Bu bir hata iletisidir", 30);
    } catch(Error $e) {
        echo "Hatanın kodu: " . $e->getCode();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Hatanın kodu: 30

### Ayrıca Bakınız

- Throwable::getCode() - İstisna numarasını döndürür

# Error::getFile

(PHP 7, PHP 8)

Error::getFile — Hatanın oluştuğu dosyanın ismini döndürür

### Açıklama

final public function Error::getFile(): string

Hatanın oluştuğu dosyanın ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hatanın oluştuğu dosyanın ismini döndürür.

### Örnekler

Örnek 1 - Error::getFile() örneği

    <?php
    try {
        throw new Error;
    } catch(Error $e) {
        echo $e->getFile();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/bjori/tmp/ex.php

### Ayrıca Bakınız

- Throwable::getFile() - Nesnenin oluşturulduğu dosyanın ismini döndürür

# Error::getLine

(PHP 7, PHP 8)

Error::getLine — Hatanı oluştuğu satırın numarasını döndürür

### Açıklama

final public function Error::getLine(): int

Hatanı oluştuğu satırın numarasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hatanı oluştuğu satırın numarasını döndürür.

### Örnekler

Örnek 1 - Error::getLine() örneği

    <?php
    try {
        throw new Error("Bu bir hata iletisidir");
    } catch(Error $e) {
        echo "Hatanın oluştuğu satır: " . $e->getLine();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Hatanın oluştuğu satır: 3

### Ayrıca Bakınız

- Throwable::getLine() - Nesnenin örneklendiği satır numarasını döndürür

# Error::getTrace

(PHP 7, PHP 8)

Error::getTrace — Yığıt dökümünü dizi olarak döndürür

### Açıklama

final public function Error::getTrace(): array

Yığıt dökümünü dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıt dökümünü array türünde döndürür.

### Örnekler

Örnek 1 - Error::getTrace() örneği

    <?php
    function test() {
     throw new Error;
    }

    try {
     test();
    } catch(Error $e) {
     var_dump($e->getTrace());
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["file"]=>
        string(22) "/home/bjori/tmp/ex.php"
        ["line"]=>
        int(7)
        ["function"]=>
        string(4) "test"
        ["args"]=>
        array(0) {
        }
      }
    }

### Ayrıca Bakınız

- Throwable::getTrace() - Yığıt izini döndürür

# Error::getTraceAsString

(PHP 7, PHP 8)

Error::getTraceAsString — Yığıt dökümünü dize olarak döndürür

### Açıklama

final public function Error::getTraceAsString(): string

Yığıt dökümünü dize olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıt dökümünü dize olarak döndürür.

### Örnekler

Örnek 1 - Error::getTraceAsString() örneği

    <?php
    function test() {
        throw new Error;
    }

    try {
        test();
    } catch(Error $e) {
        echo $e->getTraceAsString();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    #0 /home/bjori/tmp/ex.php(7): test()
    #1 {main}

### Ayrıca Bakınız

- Throwable::getTraceAsString() - Yığıt izini bir dize olarak döndürür

# Error::__toString

(PHP 7, PHP 8)

Error::__toString — Hatanın dizesel görünümü

### Açıklama

public function Error::__toString(): string

Hatanın dizesel görünümünü döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hatanın dizesel görünümünü döndürür.

### Örnekler

Örnek 1 - Error::__toString() örneği

    <?php
    try {
        throw new Error("Bir hata iletisi");
    } catch(Error $e) {
        echo $e;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Error: Bir hata iletisi in /home/bjori/tmp/ex.php:3
    Stack trace:
    #0 {main}

### Ayrıca Bakınız

- Throwable::__toString() - Yavrulanan nesnenin dize gösterimini döndürür

# Error::__clone

(PHP 7, PHP 8)

Error::__clone — Hatayı kopyalayamaz

### Açıklama

private function Error::__clone(): void

Hata kopyalanamaz, dolayısıyla bu yöntem ölümcül hataya sebep olur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Hatalar kopyalanabilir değildir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Error::__clone() artık final değil.

## İçindekiler

- Error::__construct — Bir hata nesnesi oluşturur
- Error::getMessage — Hata iletisini döndürür
- Error::getPrevious — Önceki hata nesnesini döndürür
- Error::getCode — Hata koduyla döner
- Error::getFile — Hatanın oluştuğu dosyanın ismini döndürür
- Error::getLine — Hatanı oluştuğu satırın numarasını döndürür
- Error::getTrace — Yığıt dökümünü dizi olarak döndürür
- Error::getTraceAsString — Yığıt dökümünü dize olarak döndürür
- Error::__toString — Hatanın dizesel görünümü
- Error::__clone — Hatayı kopyalayamaz

# ArgumentCountError

(PHP 7 >= PHP 7.1.0, PHP 8)

## Giriş

Kullanıcı tanımlı bir işlev veya yönteme gerekenden az bağımsız değişken aktarıldığında ArgumentCountError yavrulanır.

Bu hata ayrıca bağımsız değişken sayısı değişken olmayan yerleşik bir işleve çok fazla bağımsız değişken aktarıldığında da oluşur.

## Sınıf Sözdizimi

class ArgumentCountError extends TypeError {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# ArithmeticError istisnası

(PHP 7, PHP 8)

## Giriş

Matematiksel işlemler yapılırken bir hata oluştuğunda ArithmeticError yavrulanır. Bu hatalara, negatif miktarda bit kaydırma yapmaya çalışırken veya bir int türünün olası sınırlarının dışına çıkan bir değerle sonuçlanan intdiv() çağrıları dahildir.

## Sınıf Sözdizimi

class ArithmeticError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# AssertionError

(PHP 7, PHP 8)

## Giriş

assert() işlevi başarısız olduğunda AssertionError yavrulanır.

## Sınıf Sözdizimi

class AssertionError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# DivisionByZeroError

(PHP 7, PHP 8)

## Giriş

DivisionByZeroError bir sayıyı sıfıra bölmeye çalışınca yavrulanır.

## Sınıf Sözdizimi

class DivisionByZeroError extends ArithmeticError {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# CompileError

(PHP 7 > 7.3.0, PHP 8)

## Giriş

CompileError bazı derleme hatalarında yavrulanır, evvelve ölümcül hatalarda yavrulanırdı.

## Sınıf Sözdizimi

class CompileError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# ParseError

(PHP 7, PHP 8)

## Giriş

ParseError sınıfı eval() çağrıldığında olduğu gibi PHP kodu çözümlenirken bir hata oluştuğunda yavrulanır.

> Bilginize: ParseError PHP 7.3.0 ve sonrasında CompileError sınıfından genişletilir. Evvelce Errorsınıfından genişletilirdi.

## Sınıf Sözdizimi

class ParseError extends CompileError {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# TypeError

(PHP 7, PHP 8)

## Giriş

TypeError sınıfının yavrulanabildiği durumlar:

- Bir sınıf özelliğine atanan değerin türü ile özelliğin bildirilen türünün uyuşmaması.
- Bir işleve aktarılan bağımsız değişken türünün bildirilen bağımsız değişken türü ile uyuşmaması.
- Bir işlevden dönen bir değerin işlevin bildirilen dönüş türü ile uyuşmaması.

## Sınıf Sözdizimi

class TypeError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | Katı kodlama kipinde yerleşik bir PHP işlevine geçersiz sayıda bağımsız değişken aktarımında artık TypeError yerine ArgumentCountError yavrulanıyor.

# ValueError istisnası

(PHP 8)

## Giriş

Bir bağımsız değişkenin türü doğru, ancak değeri yanlış olduğunda bir ValueError yavrulanır. Örneğin, bir işlev pozitif bir tamsayı beklerken negatif bir tamsayı aktarmak veya bir işlev boş olmayan bir dize/dizi beklerken boş olanı aktarmak gibi.

## Sınıf Sözdizimi

class ValueError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# UnhandledMatchError istisnası

(PHP 8)

## Giriş

Bir match ifadesine aktarılan özne, match ifadesinin herhangi bir kolu tarafından işlenmediğinde, bir UnhandledMatchError yavrulanır.

## Sınıf Sözdizimi

class UnhandledMatchError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# FiberError istisnası

(PHP 8 >= 8.1.0)

## Giriş

Bir Fiber üzerinde geçersiz bir işlem yürütüldüğünde bu istisna yavrulanır.

## Sınıf Sözdizimi

final class FiberError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
public function __construct()
/* Miras alınan yöntemler */
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# FiberError::__construct

(PHP 8 >= 8.1.0)

FiberError::__construct — Doğrudan örneklemeye izin vermemek için kurucu

### Açıklama

public function FiberError::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

Çağrıldığında Error istisnası oluşur.

## İçindekiler

- FiberError::__construct — Doğrudan örneklemeye izin vermemek için kurucu

# Öntanımlı Arayüzler ve Sınıflar

## İçindekiler

- Traversable
- Iterator
- IteratorAggregate
- InternalIterator
- Throwable
- Countable
- ArrayAccess
- Serializable
- Closure
- stdClass
- Generator
- Fiber
- WeakReference
- WeakMap
- Stringable
- UnitEnum
- BackedEnum
- SensitiveParameterValue
- __PHP_Incomplete_Class

Ayrıca bakınız: SPL Arayüzleri ve ayrılmış sınıflar.

# Traversable arayüzü

(PHP 5, PHP 7, PHP 8)

## Giriş

Bir sınıf foreach kullanarak çaprazlanabiliyorsa bunu saptayan arayüz.

Tek başına gerçeklenemeyen bir soyut temel arayüz olup ya IteratorAggregate ya da Iterator olarak gerçeklenmelidir.

## Arayüz Sözdizimi

interface Traversable {
}

Bu arayüzün yöntemleri yoktur. Tek amacı çaprazlanabilir tüm sınıflar için temel arayüz olmaktır.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Traversable arayüzü artık soyut sınıflar tarafından gerçeklenebiliyor. Genişleyen sınıflar Iterator veya IteratorAggregate gerçeklemelidir.

## Notlar

> Bilginize:

> Bu arayüzü gerçekleyen dahili (yerleşik) sınıflar bir foreach oluşumunda kullanılabilir ve IteratorAggregate veya Iterator gerçeklemesi gerekmez.

> Bilginize:

> PHP 7.4.0 öncesinde, bu dahili motor arayüz PHP betiklerinde gerçeklenemezdi. Yerine ya IteratorAggregate ya da Iterator kullanılması gerekirdi.

# Iterator Arayüzü

(PHP 5, PHP 7, PHP 8)

## Giriş

Kendilerini dahili olarak yineleyebilen nesneler ve harici yineleyiciler için arayüz.

## Arayüz Sözdizimi

interface Iterator extends Traversable {
/* Yöntemler */
public function current(): mixed
public function key(): mixed
public function next(): void
public function rewind(): void
public function valid(): bool
}

## Öntanımlı Yineleyiciler

PHP birçok günlük görev için bir miktar yineleyici zaten sağlamaktadır. Listesi için bkz: SPL yineleyicileri

## Örnekler

Örnek 1 Temel Kullanımı

Bu örnekte, bir yineleyici üzerinde foreach yaparken hangi yöntemlerin çağrıldığı gösterilmiştir.

    <?php
    class Yineleyicim implements Iterator {
        private $position = 0;
        private $array = array(
            "ilkeleman",
            "ikincieleman",
            "soneleman",
        );

        public function __construct() {
            $this->position = 0;
        }

        public function rewind(): void {
            var_dump(__METHOD__);
            $this->position = 0;
        }

        #[\ReturnTypeWillChange]
        public function current() {
            var_dump(__METHOD__);
            return $this->array[$this->position];
        }

        #[\ReturnTypeWillChange]
        public function key() {
            var_dump(__METHOD__);
            return $this->position;
        }

        public function next(): void {
            var_dump(__METHOD__);
            ++$this->position;
        }

        public function valid(): bool {
            var_dump(__METHOD__);
            return isset($this->array[$this->position]);
        }
    }

    $it = new Yineleyicim;

    foreach($it as $key => $value) {
        var_dump($key, $value);
        echo "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(19) "Yineleyicim::rewind"
    string(18) "Yineleyicim::valid"
    string(20) "Yineleyicim::current"
    string(16) "Yineleyicim::key"
    int(0)
    string(9) "ilkeleman"

    string(17) "Yineleyicim::next"
    string(18) "Yineleyicim::valid"
    string(20) "Yineleyicim::current"
    string(16) "Yineleyicim::key"
    int(1)
    string(12) "ikincieleman"

    string(17) "Yineleyicim::next"
    string(18) "Yineleyicim::valid"
    string(20) "Yineleyicim::current"
    string(16) "Yineleyicim::key"
    int(2)
    string(9) "soneleman"

    string(17) "Yineleyicim::next"
    string(18) "Yineleyicim::valid"

## Ayrıca Bakınız

Ayrıca bkz: Nesne Yineleme

# Iterator::current

(PHP 5, PHP 7, PHP 8)

Iterator::current — O anki elemanı döndürür

### Açıklama

public function Iterator::current(): mixed

O anki elemanı döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Her türde değer dönebilir.

# Iterator::key

(PHP 5, PHP 7, PHP 8)

Iterator::key — O anki elemanın anahtarını döndürür

### Açıklama

public function Iterator::key(): mixed

O anki elemanın anahtarını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda scalar türünde bir değer, aksi takdirde `null` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_NOTICE` çıktılanır.

# Iterator::next

(PHP 5, PHP 7, PHP 8)

Iterator::next — Konumu sonraki elemana ilerletir

### Açıklama

public function Iterator::next(): void

O anki konumu sonraki elemana ilerletir.

> Bilginize:

> Bu işlev her foreach döngüsünün ardından çağrılır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Dönen değer olursa yok sayılır.

# Iterator::rewind

(PHP 5, PHP 7, PHP 8)

Iterator::rewind — Yineleyiciyi ilk elemana konumlandırır

### Açıklama

public function Iterator::rewind(): void

Yineleyiciyi başa ilk elemana döndürür.

> Bilginize:

> Bir foreach döngüsü başlatılırkan çağrılan ilk yöntemdir. foreach döngüsünden sonra çalıştırılmaz.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Dönen değer olursa yok sayılır.

# Iterator::valid

(PHP 5, PHP 7, PHP 8)

Iterator::valid — O anki konum geçerli mi diye bakar

### Açıklama

public function Iterator::valid(): bool

Bu yöntem o anki konumun geçerli olup olmadığını sınamak için Iterator::rewind() ve Iterator::next() yöntemlerinden sonra çağrılır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Dönüş değeri bool türüne dönüştürüldükten sonra döndürülür. Başarı durumunda `true`, başarısızlık durumunda `false` döner.

## İçindekiler

- Iterator::current — O anki elemanı döndürür
- Iterator::key — O anki elemanın anahtarını döndürür
- Iterator::next — Konumu sonraki elemana ilerletir
- Iterator::rewind — Yineleyiciyi ilk elemana konumlandırır
- Iterator::valid — O anki konum geçerli mi diye bakar

# IteratorAggregate Arayüzü

(PHP 5, PHP 7, PHP 8)

## Giriş

Harici bir yineleyici oluşturmak için arayüz.

## Arayüz Sözdizimi

interface IteratorAggregate extends Traversable {
/* Yöntemler */
public function getIterator(): Traversable
}

## Örnekler

Örnek 1 - Temel kullanımı

    <?php

    class Verilerim implements IteratorAggregate
    {
        public $özellik1 = "Birinci genel özellik";
        public $özellik2 = "İkinci genel özellik";
        public $özellik3 = "Üçüncü genel özellik";
        public $özellik4 = "";

        public function __construct()
        {
            $this->özellik4 = "son özellik";
        }

    /* PHP, tr_TR yerelinde bu yöntemi de arıyor, yoksa
     * "Fatal error: Couldn't find implementation for method
     * Verilerim::getiterator in Unknown on line 0"
     * hatasını veriyor.
     */
        public function getiterator()
        {
            return new ArrayIterator($this);
        }

        public public function getIterator(): Traversable
        {
            return new ArrayIterator($this);
        }
    }

    $obj = new Verilerim();

    foreach ($obj as $key => $value) {
        var_dump($key, $value);
        echo "\n";
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(9) "özellik1"
    string(22) "Birinci genel özellik"

    string(9) "özellik2"
    string(22) "İkinci genel özellik"

    string(9) "özellik3"
    string(25) "Üçüncü genel özellik"

    string(9) "özellik4"
    string(12) "son özellik"

# IteratorAggregate::getIterator

(PHP 5, PHP 7, PHP 8)

IteratorAggregate::getIterator — Harici bir yineleyici ile döner

### Açıklama

public function IteratorAggregate::getIterator(): Traversable

Harici bir yineleyici ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Traversable veya Iterator arayüzünü gerçekleyen nesnenin bir örneğiyle döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir istisna (Exception) oluşur.

## İçindekiler

- IteratorAggregate::getIterator — Harici bir yineleyici ile döner

# InternalIterator sınıfı

(PHP 8)

## Giriş

Dahili sınıflar için IteratorAggregate gerçeklemeyi kolaylaştıran sınıf.

## Sınıf Sözdizimi

final class InternalIterator implements Iterator {
/* Yöntemler */
private function __construct()
public function current(): mixed
public function key(): mixed
public function next(): void
public function rewind(): void
public function valid(): bool
}

# InternalIterator::__construct

(PHP 8)

InternalIterator::__construct — Doğrudan örneklemeye izin vermemek için özel kurucu

### Açıklama

private function InternalIterator::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# InternalIterator::current

(PHP 8)

InternalIterator::current — Geçerli öğeyi döndürür

### Açıklama

public function InternalIterator::current(): mixed

Geçerli öğeyi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçerli öğeyi döndürür.

# InternalIterator::key

(PHP 8)

InternalIterator::key — Geçerli öğenin anahtarını döndürür

### Açıklama

public function InternalIterator::key(): mixed

Geçerli öğenin anahtarını döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçerli öğenin anahtarını döndürür

# InternalIterator::next

(PHP 8)

InternalIterator::next — Sonraki öğeye ilerler

### Açıklama

public function InternalIterator::next(): void

Sonraki öğenin geçerli konumuna ilerler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# InternalIterator::rewind

(PHP 8)

InternalIterator::rewind — Yineleyicinin ilk öğesine geri gider

### Açıklama

public function InternalIterator::rewind(): void

Yineleyicinin ilk öğesine geri gider.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# InternalIterator::valid

(PHP 8)

InternalIterator::valid — Konumu doğrular

### Açıklama

public function InternalIterator::valid(): bool

Konum için doğrulama yapar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Konum geçerliyse `true`, değilse `false` döner.

## İçindekiler

- InternalIterator::__construct — Doğrudan örneklemeye izin vermemek için özel kurucu
- InternalIterator::current — Geçerli öğeyi döndürür
- InternalIterator::key — Geçerli öğenin anahtarını döndürür
- InternalIterator::next — Sonraki öğeye ilerler
- InternalIterator::rewind — Yineleyicinin ilk öğesine geri gider
- InternalIterator::valid — Konumu doğrular

# Throwable Arayüzü

(PHP 7, PHP 8)

## Giriş

Throwable bir `throw` deyimi üzerinden yavrulanabilen Error ve Exception gibi nesneler için temel arayüzdür.

> Bilginize:

> PHP sınıfları doğrudan Throwable arayüzünden gerçeklenemez, bunun yerine Exception sınıfı genişletilerek gerçeklenir.

## Arayüz Sözdizimi

interface Throwable extends Stringable {
/* Yöntemler */
public function getMessage(): string
public function getCode(): int
public function getFile(): string
public function getLine(): int
public function getTrace(): array
public function getTraceAsString(): string
public function getPrevious(): ?Throwable
public function __toString(): string
/* Miras alınan yöntemler */
public function Stringable::__toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Throwable artık Stringable arayüzünü gerçekliyor.

# Throwable::getMessage

(PHP 7, PHP 8)

Throwable::getMessage — İleti döndürür

### Açıklama

public function Throwable::getMessage(): string

Yavrulanan nesne ile ilgili bir ileti döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yavrulanan nesne ile ilgili bir ileti döndürür.

### Ayrıca Bakınız

- Exception::getMessage() - İstisna iletisi ile döner

# Throwable::getCode

(PHP 7, PHP 8)

Throwable::getCode — İstisna numarasını döndürür

### Açıklama

public function Throwable::getCode(): int

Yavrulanan nesne ile ilgili hata numarasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Exception'dan istisna numarasını int olarak döndürür fakat Exception çocuklarından başka türde bir değer de dönebilir (örneğin PDOException'dan string).

### Ayrıca Bakınız

- Exception::getCode() - İstisnanın numarası ile döner

# Throwable::getFile

(PHP 7, PHP 8)

Throwable::getFile — Nesnenin oluşturulduğu dosyanın ismini döndürür

### Açıklama

public function Throwable::getFile(): string

Nesnenin oluşturulduğu dosyanın ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Nesnenin oluşturulduğu dosyanın ismini döndürür.

### Ayrıca Bakınız

- Exception::getFile() - İstisnanın oluştuğu dosyanın adı ile döner

# Throwable::getLine

(PHP 7, PHP 8)

Throwable::getLine — Nesnenin örneklendiği satır numarasını döndürür

### Açıklama

public function Throwable::getLine(): int

Yavrulanan nesnenin örneklendiği satır numarasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yavrulanan nesnenin örneklendiği satır numarasını döndürür

### Ayrıca Bakınız

- Exception::getLine() - İstisnanın oluştuğu satırın numarası ile döner

# Throwable::getTrace

(PHP 7, PHP 8)

Throwable::getTrace — Yığıt izini döndürür

### Açıklama

public function Throwable::getTrace(): array

Yığıt izini array türünde döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıt izini array türünde debug_backtrace() işlevinin döndürdüğü biçimde döndürür.

### Ayrıca Bakınız

- Exception::getTrace() - Yığıt iziyle döner

# Throwable::getTraceAsString

(PHP 7, PHP 8)

Throwable::getTraceAsString — Yığıt izini bir dize olarak döndürür

### Açıklama

public function Throwable::getTraceAsString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıt izini bir dize olarak döndürür

### Ayrıca Bakınız

- Exception::getTraceAsString() - Yığıt izini bir dizge olarak döndürür

# Throwable::getPrevious

(PHP 7, PHP 8)

Throwable::getPrevious — Önceki Throwable sınıfıyla döner

### Açıklama

public function Throwable::getPrevious(): ?Throwable

Önceki herhangi bir Throwable'ı döndürür (örneğin, Exception::__construct()'a üçüncü bağımsız değişken olarak sağlanan).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Varsa önceki Throwable'ı yoksa `null` döndürür.

### Ayrıca Bakınız

- Exception::getPrevious() - Önceki Throwable nesnesini döndürür

# Throwable::__toString

(PHP 7, PHP 8)

Throwable::__toString — Yavrulanan nesnenin dize gösterimini döndürür

### Açıklama

public function Throwable::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yavrulanan nesnenin dize gösterimini döndürür,

### Ayrıca Bakınız

- Exception::__toString() - İstisnanın dizgesel gösterimiyle döner

## İçindekiler

- Throwable::getMessage — İleti döndürür
- Throwable::getCode — İstisna numarasını döndürür
- Throwable::getFile — Nesnenin oluşturulduğu dosyanın ismini döndürür
- Throwable::getLine — Nesnenin örneklendiği satır numarasını döndürür
- Throwable::getTrace — Yığıt izini döndürür
- Throwable::getTraceAsString — Yığıt izini bir dize olarak döndürür
- Throwable::getPrevious — Önceki Throwable sınıfıyla döner
- Throwable::__toString — Yavrulanan nesnenin dize gösterimini döndürür

# The Countable interface

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Giriş

Classes implementing Countable can be used with the count() function.

## Arayüz Sözdizimi

interface Countable {
/* Yöntemler */
public function count(): int
}

# Countable::count

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Countable::count — Count elements of an object

### Açıklama

public function Countable::count(): int

This method is executed when the `value` for count() is an object implementing Countable.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The custom count as an int.

### Örnekler

Örnek 1 Countable::count() example

    <?php

    class Counter implements Countable
    {
        private $count = 0;

        public function count(): int
        {
            return ++$this->count;
        }
    }

    $counter = new Counter;

    for ($i = 0; $i < 10; ++$i) {
        echo "I have been count()ed " . count($counter) . " times\n";
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    I have been count()ed 1 times
    I have been count()ed 2 times
    I have been count()ed 3 times
    I have been count()ed 4 times
    I have been count()ed 5 times
    I have been count()ed 6 times
    I have been count()ed 7 times
    I have been count()ed 8 times
    I have been count()ed 9 times
    I have been count()ed 10 times

## İçindekiler

- Countable::count — Count elements of an object

# `ArrayAccess` arayüzü

(PHP 5, PHP 7, PHP 8)

## Giriş

Nesnelere birer dizi olarak erişmeyi sağlayan arayüz.

## Arayüz Sözdizimi

interface ArrayAccess {
/* Yöntemler */
public function offsetExists(mixed `$offset`): bool
public function offsetGet(mixed `$offset`): mixed
public function offsetSet(mixed `$offset`, mixed `$value`): void
public function offsetUnset(mixed `$offset`): void
}

## Örnekler

Örnek 1 Temel kullanım

    <?php
    class Obj implements ArrayAccess {
        public $container = [
            "bir" => 1,
            "iki" => 2,
            "üç"  => 3,
        ];

        public function offsetSet($offset, $value): void {
            if (is_null($offset)) {
                $this->container[] = $value;
            } else {
                $this->container[$offset] = $value;
            }
        }

         public function offsetExists($offset): bool {
            return isset($this->container[$offset]);
        }

        ublic function offsetUnset($offset): void {
            unset($this->container[$offset]);
        }

        public function offsetGet($offset): mixed {
            return isset($this->container[$offset]) ? $this->container[$offset] : null;
        }
    }

    $obj = new Obj;

    var_dump(isset($obj["iki"]));
    var_dump($obj["iki"]);
    unset($obj["iki"]);
    var_dump(isset($obj["iki"]));
    $obj["iki"] = "Bir değer";
    var_dump($obj["iki"]);

    $obj[] = 'Ek 1';
    $obj[] = 'Ek 2';
    $obj[] = 'Ek 3';
    print_r($obj);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    int(2)
    bool(false)
    string(7) "Bir değer"
    obj Object
    (
        [container:obj:private] => Array
            (
                [bir] => 1
                [üç] => 3
                [iki] => Bir değer
                [0] => Ek 1
                [1] => Ek 2
                [2] => Ek 3
            )

    )

# ArrayAccess::offsetExists

(PHP 5, PHP 7, PHP 8)

ArrayAccess::offsetExists — Bir konumun mevcut olup olmadığına bakar

### Açıklama

public function ArrayAccess::offsetExists(mixed `$offset`): bool

Bir konumun mevcut olup olmadığına bakar.

ArrayAccess arayüzünü gerçekleyen nesneler üzerinde isset() veya empty() kullanıldığında bu yöntem çalıştırılır.

> Bilginize:

> empty() işlevi kullanıldığında ArrayAccess::offsetGet() çağrılır ve sadece dönen değer `true` olduğu takdirde konumun boş olup olmadığına bakılır.

### Bağımsız Değişkenler

`offset`

  Varlığı sınanacak konum.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

> Bilginize:

> Dönüş değeri bool türünde değilse tür dönüşümü yapıldıktan sonra döndürülür.

### Örnekler

Örnek 1 - ArrayAccess::offsetExists() örneği

    <?php
    class Sınıf implements ArrayAccess {
        public function offsetSet($konum, $değer): void {
            var_dump(__METHOD__);
        }
        public function offsetExists($var): bool {
            var_dump(__METHOD__);
            if ($var == "filanca") {
                return true;
            }
            return false;
        }
        public function offsetUnset($var): void {
            var_dump(__METHOD__);
        }
        #[\ReturnTypeWillChange]
        public function offsetGet($var) {
            var_dump(__METHOD__);
            return "değer";
        }
    }

    $nesne = new Sınıf;

    echo "Sınıf::offsetExists() çalışır\n";
    var_dump(isset($nesne["filanca"]));

    echo "\nSınıf::offsetExists() ve Sınıf::offsetGet() çalışır\n";
    var_dump(empty($nesne["filanca"]));

    echo "\nSınıf::offsetExists() çalışır, alınacak bir şey olmadığından Sınıf::offsetGet() çalışmaz\n";
    var_dump(empty($nesne["falanca"]));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Sınıf::offsetExists() çalışır
    string(21) "Sınıf::offsetExists"
    bool(true)

    Sınıf::offsetExists() ve Sınıf::offsetGet() çalışır
    string(21) "Sınıf::offsetExists"
    string(18) "Sınıf::offsetGet"
    bool(false)

    Sınıf::offsetExists() çalışır, alınacak bir şey olmadığından Sınıf::offsetGet() çalışmaz
    string(21) "Sınıf::offsetExists"
    bool(true)

# ArrayAccess::offsetGet

(PHP 5, PHP 7, PHP 8)

ArrayAccess::offsetGet — Konumdaki değeri döndürür

### Açıklama

public function ArrayAccess::offsetGet(mixed `$offset`): mixed

Belirtilen konumdaki değeri döndürür.

Bu yöntem, empty() işlevi ile konumun boş olup olmadığına bakılırken çalıştırılır.

### Bağımsız Değişkenler

`offset`

  Değerin döndürüleceği konum.

### Dönen Değerler

Her türde değer dönebilir.

### Notlar

> Bilginize:

> Bu yöntemin gerçeklemeleri gönderimli değer döndürebilir. Bu, olası ArrayAccess nesnelerinin aşırı yüklenmiş dizi boyutlarında dolaylı değişiklikleri mümkün kılar.

> Doğrudan değişiklikte, `$obj[6] = 7` örneğindeki gibi dizi boyutu değeri tamamen değişir. Dolaylı değişiklikte ise, ya boyutun bir kısmı değişir ya da boyut gönderimli olarak başka bir değişkene atanmaya çalışılır (`$obj[6][7] = 7` veya `$var =& $obj[6]` gibi). `++` ile arttırım ve `--` ile eksiltim dolaylı değişiklikteki gibi gerçeklenir.

> Doğrudan değişiklik ArrayAccess::offsetSet() çağrısını tetiklerken, dolaylı değişiklik ArrayAccess::offsetGet() çağrısını tetikler. Bu durumda, ArrayAccess::offsetGet() gerçeklenimi gönderimli değer dönürebilmelidir, aksi takdirde bir `E_NOTICE` iletisi çıktılanır.

### Ayrıca Bakınız

- ArrayAccess::offsetExists() - Bir konumun mevcut olup olmadığına bakar

# ArrayAccess::offsetSet

(PHP 5, PHP 7, PHP 8)

ArrayAccess::offsetSet — Belirtilen konuma bir değer atar

### Açıklama

public function ArrayAccess::offsetSet(mixed `$offset`, mixed `$value`): void

Belirtilen konuma belirtilen değer atanır.

### Bağımsız Değişkenler

`offset`

  Değerin atanacağı konum.

`value`

  Atanacak değer.

### Dönen Değerler

Hiçbir değer dönmez.

### Notlar

> Bilginize:

> Aşağıdaki örnekte olduğu gibi, başka bir değer mümkün değilse `offset` bağımsız değişkenine `null` atanır.

>     <?php
>     $arrayaccess[] = "ilk değer";
>     $arrayaccess[] = "ikinci değer";
>     print_r($arrayaccess);
>     ?>

> Yukarıdaki örneğin çıktısı:

>     Array
>     (
>         [0] => ilk değer
>         [1] => ikinci değer
>     )

> Bilginize:

> Bu işlev gönderimli atamalarda çağrılmaz, aksi takdirde ArrayAccess ile dizi boyutlarında yapılan dolaylı değişiklikler aşırı yüklemeye yol açar. Dolaylı değişiklik, boyutu doğrudan değiştirerek değil, bir alt boyutu veya alt özelliği değiştirerek ya da dizi boyutunu gönderimli olarak başka bir değişkene atayarak yapılır. Bunun için ArrayAccess::offsetGet() çağrılır. İşlem sadece yöntem gönderimli değer döndürürse başarılı olur.

# ArrayAccess::offsetUnset

(PHP 5, PHP 7, PHP 8)

ArrayAccess::offsetUnset — Belirtilen konum boşaltılır

### Açıklama

public function ArrayAccess::offsetUnset(mixed `$offset`): void

Bir konumu boşaltır.

> Bilginize:

> (unset) tür çarpıtması yapıldığında bu yöntem çağrılmaz.

### Bağımsız Değişkenler

`offset`

  Boşaltılacak konum.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- ArrayAccess::offsetExists — Bir konumun mevcut olup olmadığına bakar
- ArrayAccess::offsetGet — Konumdaki değeri döndürür
- ArrayAccess::offsetSet — Belirtilen konuma bir değer atar
- ArrayAccess::offsetUnset — Belirtilen konum boşaltılır

# `Serializable` arayüzü

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Giriş

Dizgeleştirmeyi özelleştirme arayüzü.

Bu arayüzü gerçekleyen sınıflar __sleep() ve __wakeup() işlevlerini desteklemezler. Bir örneğin dizgeleştirilmesi gerektiğinde `serialize` yöntemi çağrılır. Bunun `__destruct()` çağırmak veya yöntem içinde tanımlanmamış bir işlemi yapmak gibi bir yan etkisi yoktur. Dizgeleştirilmiş nesne yeniden oluşturulmak istendiğinde sınıf bilinmekte olur ve kurucu olarak `__construct()` yerine ilgili `unserialize()` yöntemi çağrılır. Eğer standart kurucuyu çalıştırmak isterseniz bunu yöntemin içinde yapmanız gerekir.

Uyarı

PHP 8.1.0 itibariyle, __serialize() ve __unserialize()'yi de gerçeklemeden sadece Serializable arayüzünü gerçekleyen bir sınıf bunun önerilmediğini belirten bir uyarı üretir.

## Arayüz Sözdizimi

interface Serializable {
/* Yöntemler */
public function serialize(): ?string
public function unserialize(string `$data`): void
}

## Örnekler

Örnek 1 - Temel kullanım

    <?php
    class obj implements Serializable {
        private $data;
        public function __construct() {
            $this->data = "My private data";
        }
        public function serialize() {
            return serialize($this->data);
        }
        public function unserialize($data) {
            $this->data = unserialize($data);
        }
        public function getData() {
            return $this->data;
        }
    }

    $obj = new obj;
    $ser = serialize($obj);

    var_dump($ser);

    $newobj = unserialize($ser);

    var_dump($newobj->getData());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(38) "C:3:"obj":23:{s:15:"My private data";}"
    string(15) "My private data"

# Serializable::serialize

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Serializable::serialize — Nesnenin dizgesel gösterimiyle döner

### Açıklama

public function Serializable::serialize(): ?string

Nesnenin dizgesel gösterimi ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Bir hata oluşmamışsa nesnenin dizgesel gösterimi ile, aksi takdirde `null` ile döner.

### Hatalar/İstisnalar

Dönüş türü string veya `null` değilse bir istisna (Exception) oluşur.

### Ayrıca Bakınız

- __sleep()
- __serialize()

# Serializable::unserialize

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Serializable::unserialize — Dizgeleştirilmiş nesneyi yeniden oluşturur

### Açıklama

public function Serializable::unserialize(string `$data`): void

Dizgeleştirilmiş nesne yeniden oluşturulmak istendiğinde çağrılır.

> Bilginize:

> Bu yöntem nesnenin kurucusu olarak işlem görür. Bu yöntemin ardından __construct() yöntemi çağrılmaz.

### Bağımsız Değişkenler

`data`

  Nesnenin dizgesel gösterimi.

### Dönen Değerler

Bu yöntemden dönen değer yoksayılır.

### Ayrıca Bakınız

- __wakeup()
- __unserialize()

## İçindekiler

- Serializable::serialize — Nesnenin dizgesel gösterimiyle döner
- Serializable::unserialize — Dizgeleştirilmiş nesneyi yeniden oluşturur

# Closure sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

Sınıf anonim işlevleri denetler.

Anonim işlevler bu tür nesneler üretir. Bu sınıf oluşturulduktan sonra, anonim işlevlerin daha iyi denetlenmesini sağlayan yöntemlere sahiptir.

Burada listelenen yöntemlerden başka `__invoke` yöntemine de sahiptir. Bu sınıf, sihirli çağrıları gerçekleyen sınıflarla tutarlılık için vardır ve bu yöntem işlev çağrısı için kullanılmaz.

## Sınıf Sözdizimi

final class Closure {
/* Yöntemler */
private function __construct()
public static function bind(Closure `$closure`, ?object `$newThis`, object|string|null `$newScope` = "static"): ?Closure
public function bindTo(?object `$newThis`, object|string|null `$newScope` = "static"): ?Closure
public function call(object `$newThis`, mixed `...$args`): mixed
public static function fromCallable(callable `$callback`): Closure
}

# Closure::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Closure::__construct — Örneklemeye izin vermeyen kurucu

### Açıklama

private function Closure::__construct()

Bu yöntem, Closure sınıfının örneklenmesini engellemek için mevcuttur. Bu sınıfın nesneleri anonim işlevler sayfasında açıklanan şekilde oluşturulur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- Anonim işlevler

# Closure::bind

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

Closure::bind — Belli bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar.

### Açıklama

public static function Closure::bind(Closure `$closure`, ?object `$newThis`, object|string|null `$newScope` = "static"): ?Closure

Bu yöntem Closure::bindTo() yönteminin statik sürümüdür. Daha fazla bilgi için bu yöntemin belgesine bakınız.

### Bağımsız Değişkenler

`closure`

  Bağlanacak anonim işlevin adı.

`newThis`

  Anonim işleve bağlaması için verilen nesne ya da bağın kaldırılması için `null`.

`newScope`

  İlişkili closure'un ilişkilendirileceği sınıf bağlamı ya da ilişkili olanı tutmak için 'static'. Bir nesne belirtilirse bu nesnenin sınıfı geçerli olur. Bu, bağlı nesnenin protected ve private yöntemlerinin görünürlüğünü saptamaya yarar. Bu bağımsız değişkende dahili bir sınıfı (nesnesini) aktarmaya izin verilmez.

### Dönen Değerler

Yeni Closure nesnesi ile döner, başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 - Closure::bind() örneği

    <?php
    class A {
        private static $sfoo = 1;
        private $ifoo = 2;
    }
    $cl1 = static function() {
        return A::$sfoo;
    };
    $cl2 = function() {
        return $this->ifoo;
    };

    $bcl1 = Closure::bind($cl1, null, 'A');
    $bcl2 = Closure::bind($cl2, new A(), 'A');
    echo $bcl1(), "\n";
    echo $bcl2(), "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1
    2

### Ayrıca Bakınız

- Anonim işlevler
- Closure::bindTo() - Yeni bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar

# Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

Closure::bindTo — Yeni bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar

### Açıklama

public function Closure::bindTo(?object `$newThis`, object|string|null `$newScope` = "static"): ?Closure

Yeni bir anonim işlevi mevcutla aynı gövde ve bağlı değişkenlerde, farklı bir "bağlı nesne" ve yeni bir "sınıf bağlamı"yla oluşturup döndürür.

"Bağlı nesne", işlev gövdesinde bulunacak `$this` değerini, "sınıf bağlamı" ise, anonim işlevin erişebileceği private ve protected üyeleri belirleyen bir sınıfı temsil eder. Yani, görünür olacak üyeler, anonim işlevin `newScope` bağımsız değişkeninde değer olarak belirtilen sınıfın yöntemleri olan anonim işlevlerle aynıdır.

Statik closure'lar herhangi bir bağlı nesneye sahip olamadıkları gibi (`newThis` değeri `null` olmalıdır) bu yöntem de onların sınıf bağlamını değiştirmekte kullanılamaz.

Bu yöntem, statik-olmayan bir closure için, sahip olunan bağlı bir örneğin bağlamda olup olmadığını görmek içindir.

> Bilginize:

> Anonim işlevleri sadece yinelemek istiyorsanız basitçe kopyalama yapabilirsiniz.

### Bağımsız Değişkenler

`newThis`

  Anonim işleve bağlaması için verilen nesne ya da bağın kaldırılması için `null`.

`newScope`

  İlişkili closure'un ilişkilendirileceği sınıf bağlamı ya da ilişkili olanı tutmak için 'static'. Bir nesne belirtilirse bu nesnenin sınıfı geçerli olur. Bu, bağlı nesnenin protected ve private yöntemlerinin görünürlüğünü saptamaya yarar. Bu bağımsız değişkende dahili bir sınıfı (nesnesini) aktarmaya izin verilmez.

### Dönen Değerler

Yeni oluşturulan Closure nesnesiyle döner. Başarısız olursa `null` döner.

### Örnekler

Örnek 1 - Closure::bindTo() örneği

    <?php

    class A
    {
        private $val;
        function __construct($val)
        {
            $this->val = $val;
        }

        function getClosure()
        {
            // Bu nesne ve bağlama bağlı closure ile döner
            return function() {
                return $this->val;
            };
        }
    }

    $ob1 = new A(1);
    $ob2 = new A(2);

    $cl = $ob1->getClosure();
    echo $cl(), "\n";

    $cl = $cl->bindTo($ob2);
    echo $cl(), "\n";

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1
    2

### Ayrıca Bakınız

- Anonim işlevler
- Closure::bind() - Belli bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar.

# Closure::call

(PHP 7, PHP 8)

Closure::call — Bir closure nesnesini bağlar ve çağırır

### Açıklama

public function Closure::call(object `$newThis`, mixed `...$args`): mixed

Closure geçici olarak `newThis`e bağlanır ve belirtilen bağımsız değişkenlerle çağrılır.

### Bağımsız Değişkenler

`newThis`

  Çağrı süresince closure'u bağlayacak nesne.

`args`

  Closure nesnesine aktarılacak bağımsız değişkenler; bağımsız değişken belirtme zorunluluğu yoktur.

### Dönen Değerler

Closure çağrısından dönen değer.

### Örnekler

Örnek 1 - Closure::call() örneği

    <?php
    class Value {
        protected $value;

        public function __construct($value) {
            $this->value = $value;
        }

        public function getValue() {
            return $this->value;
        }
    }

    $three = new Value(3);
    $four = new Value(4);

    $closure = function ($delta) { var_dump($this->getValue() + $delta); };
    $closure->call($three, 4);
    $closure->call($four, 4);
    ?>

Yukarıdaki örneğin çıktısı:

    int(7)
    int(8)

# Closure::fromCallable

(PHP 7 >= 7.1.0)

Closure::fromCallable — Bir işlevi bir closure yöntemine dönüştürür

### Açıklama

public static function Closure::fromCallable(callable `$callback`): Closure

Geçerli bağlamı kullanarak `callback` bağımsız değişkeninde belirtilen işlevden yeni bir anonim işlev oluşturur ve döner. Bu yöntem `callback` işlevinin geçerli bağlamda çağrılabilirliğini sınar ve çağrılabilir değilse bir TypeError yavrular.

> Bilginize:

> PHP 8.1.0 itibariyle, Birinci sınıf çağrılabilir sözdizimine bu yöntemle aynı sözdizimsel kurallar uygulanmaktadır.

### Bağımsız Değişkenler

`callback`

  Dönüştürülecek işlev.

### Dönen Değerler

`callback` işlevi geçerli bağlamda çağrılabiliyorsa yeni oluşturulan Closure ile, çağrılamıyorsa bir TypeError ile döner.

### Ayrıca Bakınız

- Anonim işlevler
- Birinci sınıf çağrılabilir sözdizimi

## İçindekiler

- Closure::__construct — Örneklemeye izin vermeyen kurucu
- Closure::bind — Belli bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar.
- Closure::bindTo — Yeni bir bağlı nesne ve sınıf bağlamıyla bir closure nesnesini kopyalar
- Closure::call — Bir closure nesnesini bağlar ve çağırır
- Closure::fromCallable — Bir işlevi bir closure yöntemine dönüştürür

# stdClass sınıfı

(PHP 4, PHP 5, PHP 7, PHP 8)

## Giriş

Dinamik özellikleri olabilen boş genel sınıf.

Bu sınıfın nesneleri new işleci ile örneklenerek veya nesneye dönüşümle oluşturulabilir. Ayrıca, json_decode(), mysqli_fetch_object(), PDOStatement::fetchObject() gibi çeşitli PHP işlevleri de bu sınıfın örneklerini oluşturabilir.

__get()/__set() sihirli yöntemlerini uygulamamasına rağmen, bu sınıf dinamik özelliklere izin verir ve `#[\AllowDynamicProperties]` özniteliğini gerektirmez.

PHP'nin evrensel temel sınıf kavramı olmadığı için bu temel bir sınıf değildir. Ancak, stdClass'tan genişleyen ve sonuç olarak dinamik özelliklerin işlevselliğini devralan özel bir sınıf oluşturmak mümkündür.

## Sınıf Sözdizimi

class stdClass {
}

Bu sınıfın yöntemleri ve öntanımlı özellikleri yoktur.

## Örnekler

Örnek 1 - Tür dönüşümüyle nesneye dönüştürerek örnekleme

    <?php
    $obj = (object) array('foo' => 'bar');
    var_dump($obj);

Yukarıdaki örneğin çıktısı:

    object(stdClass)#1 (1) {
      ["foo"]=>
      string(3) "bar"
    }

Örnek 2 - json_decode() ile örnekleme

    <?php
    $json = '{"foo":"bar"}';
    var_dump(json_decode($json));

Yukarıdaki örneğin çıktısı:

    object(stdClass)#1 (1) {
      ["foo"]=>
      string(3) "bar"
    }

Örnek 3 - Dinamik özelliklerin bildirilmesi

    <?php
    $obj = new stdClass();
    $obj->foo = 42;
    $obj->{1} = 42;
    var_dump($obj);

Yukarıdaki örneğin çıktısı:

    object(stdClass)#1 (2) {
      ["foo"]=>
      int(42)
      ["1"]=>
      int(42)
    }

# Generator sınıfı

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

Generator nesneleri üreteçlerden döndürülür.

Dikkat

Generator nesneleri new üzerinden örneklenemez.

## Sınıf Sözdizimi

final class Generator implements Iterator {
/* Yöntemler */
public function current(): mixed
public function getReturn(): mixed
public function key(): mixed
public function next(): void
public function rewind(): void
public function send(mixed `$value`): mixed
public function throw(Throwable `$exception`): mixed
public function valid(): bool
public function __wakeup(): void
}

## Ayrıca Bakınız

Ayrıca bkz: Nesne Yineleme

# Generator::current

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::current — Getirilen değeri döndürür

### Açıklama

public function Generator::current(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Getirilen değeri döndürür.

# Generator::getReturn

(PHP 7, PHP 8)

Generator::getReturn — Üretecin dönüş değerini döndürür

### Açıklama

public function Generator::getReturn(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çalışmasını bitirdiğinde üretecin dönüş değerini döndürür.

### Örnekler

Örnek 1 - Generator::getReturn() örneği

    <?php

    $gen = (function() {
        yield 1;
        yield 2;

        return 3;
    })();

    foreach ($gen as $val) {
        echo $val, PHP_EOL;
    }

    echo $gen->getReturn(), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    1
    2
    3

# Generator::key

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::key — Getirilen anahtarı döndürür

### Açıklama

public function Generator::key(): mixed

Getirilen değerin anahtarını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Getirilen anahtarı döndürür.

### Örnekler

Örnek 1 - Generator::key() örneği

    <?php

    function Gen()
    {
        yield 'key' => 'value';
    }

    $gen = Gen();

    echo "{$gen->key()} => {$gen->current()}";

Yukarıdaki örneğin çıktısı:

    key => value

# Generator::next

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::next — Üretecin çalışmasını kaldığı yerden sürdürür

### Açıklama

public function Generator::next(): void

Generator::next() çağrısı `null` bağımsız değişkenli Generator::send() çağrısıyla aynı etkiye sahiptir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# Generator::rewind

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::rewind — Yineleyiciyi başa sarar

### Açıklama

public function Generator::rewind(): void

Yineleyici zaten başlamışsa bu bir istisna oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# Generator::send

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::send — Üretece bir değer gönderir

### Açıklama

public function Generator::send(mixed `$value`): mixed

Geçerli yield ifadesinin sonucu olarak belirtilen değeri gönderir ve üretecin kaldığı yerden devam etmesini sağlar.

Bu yöntem çağrıldığında üreteç bir yield ifadesinde değilse, değeri göndermeden önce üreteci ilk yield ifadesine ilerletir. Yani, PHP üretecini bir Generator::next() çağrısıyla "iteklemek" gerekmez(Python'da yapıldığı gibi).

### Bağımsız Değişkenler

`value`

  Üretece gönderilecek değer. Bu değer üretecin geçerli yield ifadesinin dönüş değeri olacaktır.

### Dönen Değerler

yield ifadesinin sonucu ile döner.

### Örnekler

Örnek 1 - Değer yerleştirmek içinGenerator::send() kullanımı

    <?php
    function printer() {
        echo "Ben yazıcıyım!".PHP_EOL;
        while (true) {
            $string = yield;
            echo $string.PHP_EOL;
        }
    }

    $printer = printer();
    $printer->send('Merhaba Dünya!');
    $printer->send('Elveda Dünya!');
    ?>

Yukarıdaki örneğin çıktısı:

    Ben yazıcıyım!
    Merhaba Dünya!
    Elveda Dünya!

# Generator::throw

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::throw — Üreteç için bir istisna oluşturur

### Açıklama

public function Generator::throw(Throwable `$exception`): mixed

Üreteç için bir istisna oluşturur ve üretecin kaldığı yerden devam etmesini sağlar. Geçerli yield ifadesine `throw $exception` deyimini yerleştirmek gibidir.

Bu yöntem çağrıldığında üreteç kapalıysa istisna çağrıcının bağlamında oluşur.

### Bağımsız Değişkenler

`exception`

  Üreteç içinde oluşturulacak istisna.

### Dönen Değerler

Verilen değeri döndürür.

### Örnekler

Örnek 1 - Bir üreteçte istisna yavrulama

    <?php
    function gen() {
        echo "Foo\n";
        try {
            yield;
        } catch (Exception $e) {
            echo "Exception: {$e->getMessage()}\n";
        }
        echo "Bar\n";
    }

    $gen = gen();
    $gen->rewind();
    $gen->throw(new Exception('Test'));
    ?>

Yukarıdaki örneğin çıktısı:

    Foo
    Exception: Test
    Bar

# Generator::valid

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::valid — Yineleyici kapanmış mı diye bakar

### Açıklama

public function Generator::valid(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yineleyici kapanmışsa `false` değilse `true` döner.

# Generator::__wakeup

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::__wakeup — Dizeleştirememe istisnası

### Açıklama

public function Generator::__wakeup(): void

Üreteçler dizeleştirilemediğinden bir istisna oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- Generator::current — Getirilen değeri döndürür
- Generator::getReturn — Üretecin dönüş değerini döndürür
- Generator::key — Getirilen anahtarı döndürür
- Generator::next — Üretecin çalışmasını kaldığı yerden sürdürür
- Generator::rewind — Yineleyiciyi başa sarar
- Generator::send — Üretece bir değer gönderir
- Generator::throw — Üreteç için bir istisna oluşturur
- Generator::valid — Yineleyici kapanmış mı diye bakar
- Generator::__wakeup — Dizeleştirememe istisnası

# Fiber sınıfı

(PHP 8 >= 8.1.0)

## Giriş

Fiberler, tamamen yığıtlanabilen ve yürütmeyi kesintiye uğratılabilen işlevlerdir. Fiberin çağrı yığıtının herhangi bir yerinde askıya alınmasıyla yürütmenin bekletilmesi ve daha sonra fiberin yürütmeyi kaldığı yerden devam ettirmesi sağlanabilir.

## Sınıf Sözdizimi

final class Fiber {
/* Yöntemler */
public function __construct(callable `$callback`)
public function start(mixed `...$değerler`): mixed
public function resume(mixed `$değer` = `null`): mixed
public function throw(Throwable `$istisna`): mixed
public function getReturn(): mixed
public function isStarted(): bool
public function isSuspended(): bool
public function isRunning(): bool
public function isTerminated(): bool
public static function suspend(mixed `$değer` = `null`): mixed
public static function getCurrent(): ?Fiber
}

## Ayrıca Bakınız

Fiberlere giriş

# Fiber::__construct

(PHP 8 >= 8.1.0)

Fiber::__construct — Yeni bir Fiber örneği oluşturur

### Açıklama

public function Fiber::__construct(callable `$callback`)

### Bağımsız Değişkenler

`callback`

  Fiber başlatılırken kullanılacak geri çağırım işlevi. İşleve aktarılan bağımsız değişkenler Fiber::start() yöntemine aktarılan bağımsız değişkenlerdir.

# Fiber::start

(PHP 8 >= 8.1.0)

Fiber::start — Fiberin çalışmasını başlatır

### Açıklama

public function Fiber::start(mixed `...$değerler`): mixed

Fiberin başlatılırken çağrılacak geri çağırım işlevine sağlanacak bağımsız değişken sayısı değişiklik gösterebilir.

Fiber zaten bu yöntem çağrılarak başlatılmışsa FiberError istisnası oluşur.

### Bağımsız Değişkenler

`değerler`

  Fiber kurucusunun çağıracağı geri çağırım işlevine aktarılacak değerler.

### Dönen Değerler

İlk Fiber::suspend() çağrısına aktarılan değer veya fiber zaten dönmüşse `null` döner. Fiber askıya alınmadan önce bir istisna oluşmuşsa, o istisna bu yöntemin çağrısında yavrulanır.

# Fiber::resume

(PHP 8 >= 8.1.0)

Fiber::resume — Fiberin bir değerle çalışmasını sürdürmesini sağlar

### Açıklama

public function Fiber::resume(mixed `$değer` = `null`): mixed

Fiber::suspend() çağrısının sonucu olarak belirtilen değeri kullanarak fiberin çalışmasını devam ettirir.

Bu yöntem çağrıldığında fiber askıda değilse FiberError istisnası oluşur.

### Bağımsız Değişkenler

`değer`

  Fiberin çalışmasını devam ettirecek değer. Bu değer, geçerli Fiber::suspend() çağrısının dönüş değeri olacaktır.

### Dönen Değerler

Sonraki Fiber::suspend() çağrısına sağlanan değer veya fiber dönmüşse `null` döner. Fiber askıya alınmadan önce bir istisna oluşmuşsa, o istisna bu çağrıdan yavrulanır.

# Fiber::throw

(PHP 8 >= 8.1.0)

Fiber::throw — Fiberin çalışmasını bir istisna ile devam ettirir

### Açıklama

public function Fiber::throw(Throwable `$istisna`): mixed

Geçerli Fiber::suspend() çağrısında belirtilen istisnanın oluşması fiberin çalışmasını sağlar.

Bu yöntem çağrıldığında fiber askıda değilse FiberError istisnası oluşur.

### Bağımsız Değişkenler

`istisna`

  Geçerli Fiber::suspend() çağrısındaki fiberin içinde oluşturulacak istisna.

### Dönen Değerler

Sonraki Fiber::suspend() çağrısına sağlanan değer veya fiber zaten dönmüşse `null` döner. Fiber askıya alınmadan önce bir istisna oluşmuşsa, oluşan istisna bu yöntem çağrısında yavrulanır.

# Fiber::getReturn

(PHP 8 >= 8.1.0)

Fiber::getReturn — Fiber tarafından döndürülen değeri döndürür

### Açıklama

public function Fiber::getReturn(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Fiber::__construct() yönteminde belirtilen geri çağırım işlevi tarafından döndürülen değeri döndürür. Fiber bir değer döndürmemişse ya henüz başlatılmamış veya sonlanmış ya da bir istisna yavrulanmış olabilir ve böyle bir durumda FiberError yavrulanır.

# Fiber::isStarted

(PHP 8 >= 8.1.0)

Fiber::isStarted — Fiber başlatılmış mı diye bakar

### Açıklama

public function Fiber::isStarted(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Fiber başlatılmışsa `true` yoksa `false` döner.

# Fiber::isSuspended

(PHP 8 >= 8.1.0)

Fiber::isSuspended — Fiber askıda mı diye bakar

### Açıklama

public function Fiber::isSuspended(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Fiber askıya alınmışsa `true`, yoksa `false` döner.

# Fiber::isRunning

(PHP 8 >= 8.1.0)

Fiber::isRunning — Fiber çalışıyor mu diye bakar

### Açıklama

public function Fiber::isRunning(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Fiber çalışmaktaysa `true` döner. Fiber::start(), Fiber::resume() veya Fiber::throw() yöntemlerinden birine bir çağrı henüz dönmemişse fiber çalışıyor demektir. Fiber çalışmıyorsa `false` döner.

# Fiber::isTerminated

(PHP 8 >= 8.1.0)

Fiber::isTerminated — Fiber sonlanmış mı diye bakar

### Açıklama

public function Fiber::isTerminated(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Fiber değer döndürerek ya da istisna yavrulayarak sonlanmışsa `true`, yoksa `false` döner.

# Fiber::suspend

(PHP 8 >= 8.1.0)

Fiber::suspend — Çalışmakta olan fiberi askıya alır

### Açıklama

public static function Fiber::suspend(mixed `$değer` = `null`): mixed

Çalışmakta olan fiberi askıya alır. Bu yönteme aktarılacak değer, yürütmeyi fibere aktaran Fiber::start(), Fiber::resume() veya Fiber::throw() çağrısından sağlanır.

Fiberin çalışmayı sürdürmesi sağlandığında bu yöntem Fiber::resume() yöntemine aktarılan değeri döndürür. Fiberin çalışmayı sürdürmesi Fiber::throw() ile sağlanmışsa, oluşan istisna bu yöntemden yavrulanır.

Yöntem fiber dışından çağrılmışsa FiberError istisnası oluşur.

### Bağımsız Değişkenler

`değer`

  Yürütmeyi geçerli fibere aktaran Fiber::start(), Fiber::resume() veya Fiber::throw() çağrısından dönecek değer.

### Dönen Değerler

Fiber::resume() çağrısına sağlanan değer.

# Fiber::getCurrent

(PHP 8 >= 8.1.0)

Fiber::getCurrent — Çalışmakta olan Fiber örneğini döndürür

### Açıklama

public static function Fiber::getCurrent(): ?Fiber

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çalışmakta olan Fiber örneğini veya bu işlev fiber dışından çağrılmışsa `null` döndürür.

## İçindekiler

- Fiber::__construct — Yeni bir Fiber örneği oluşturur
- Fiber::start — Fiberin çalışmasını başlatır
- Fiber::resume — Fiberin bir değerle çalışmasını sürdürmesini sağlar
- Fiber::throw — Fiberin çalışmasını bir istisna ile devam ettirir
- Fiber::getReturn — Fiber tarafından döndürülen değeri döndürür
- Fiber::isStarted — Fiber başlatılmış mı diye bakar
- Fiber::isSuspended — Fiber askıda mı diye bakar
- Fiber::isRunning — Fiber çalışıyor mu diye bakar
- Fiber::isTerminated — Fiber sonlanmış mı diye bakar
- Fiber::suspend — Çalışmakta olan fiberi askıya alır
- Fiber::getCurrent — Çalışmakta olan Fiber örneğini döndürür

# WeakReference sınıfı

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

Zayıf gönderimler, programcının, nesnenin yok edilmesini engellemeyen bir nesneye gönderim tutmasına izin verir. Önbellek benzeri yapıları gerçeklemek için kullanışlıdır.

WeakReference örnekleri dizileştirilemez.

## Sınıf Sözdizimi

final class WeakReference {
/* Yöntemler */
public function __construct()
public static function create(object `$object`): WeakReference
public function get(): ?object
}

## - WeakReference Örnekleri

Örnek 1 - Temel WeakReference Kullanımı

    <?php
    $obj = new stdClass;
    $weakref = WeakReference::create($obj);
    var_dump($weakref->get());
    unset($obj);
    var_dump($weakref->get());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#1 (0) {
    }
    NULL

# WeakReference::__construct

(PHP 7 >= 7.4.0, PHP 8)

WeakReference::__construct — Örneklemeye izin vermeyen kurucu

### Açıklama

public function WeakReference::__construct()

Bu yöntem yalnızca WeakReference sınıfının örneklenmesine izin vermemek için vardır. Zayıf gönderimler WeakReference::create() yöntemi ile gerçeklenir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- WeakReference::create() - Yeni bir zayıf gönderim oluşturur

# WeakReference::create

(PHP 7 >= 7.4.0, PHP 8)

WeakReference::create — Yeni bir zayıf gönderim oluşturur

### Açıklama

public static function WeakReference::create(object `$object`): WeakReference

Yeni bir WeakReference sınıfı örnekler.

### Bağımsız Değişkenler

`object`

  Zayıfça başvurulacak nesne.

### Dönen Değerler

Taze bir WeakReference nesnesi veya zaten bir tane varsa o WeakReference nesnesini döndürür.

# WeakReference::get

(PHP 7 >= 7.4.0, PHP 8)

WeakReference::get — Zayıf gönderimli bir nesne döndürür

### Açıklama

public function WeakReference::get(): ?object

Zayıf gönderimli bir nesne döndürür Nesne yok edilmişse, `null` döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Zayıfça gönderimli bir nesne döndürür. Nesne zaten yok edilmişse, `null` döndürülür.

## İçindekiler

- WeakReference::__construct — Örneklemeye izin vermeyen kurucu
- WeakReference::create — Yeni bir zayıf gönderim oluşturur
- WeakReference::get — Zayıf gönderimli bir nesne döndürür

# WeakMap sınıfı

(PHP 8)

## Giriş

WeakMap nesneleri anahtar olarak kabul eden bir haritadır (veya sözlüktür). Ancak, SplObjectStorage'dan farklı olarak, WeakMap anahtarındaki nesne, nesnenin gönderim sayısına katkıda bulunmaz. Yani, herhangi bir noktada bir nesneye kalan tek gönderim bir WeakMap anahtarı ise, nesne çöp olarak toplanacak ve WeakMap'ten kaldırılacaktır. Birincil kullanım durumu, nesneden daha uzun yaşaması gerekmeyen bir nesneden türetilen verilerin arabelleklerini oluşturmak içindir.

WeakMap sınıfı ArrayAccess, Traversable (IteratorAggregate üzerinden) ve Countable arayüzlerini gerçekler, bu yüzden çoğu durumda ilişkili bir dizi gibi kullanılabilir.

## Sınıf Sözdizimi

final class WeakMap implements ArrayAccess, Countable, IteratorAggregate {
/* Yöntemler */
public function count(): int
public function getIterator(): Iterator
public function offsetExists(object `$nesne`): bool
public function offsetGet(object `$nesne`): mixed
public function offsetSet(object `$nesne`, mixed `$değer`): void
public function offsetUnset(object `$girdi`): void
}

## Örnekler

Örnek 1 - Weakmap kullanım örneği

    <?php
    $wm = new WeakMap();

    $o = new stdClass;

    class A {
        public function __destruct() {
            echo "Öldü!\n";
        }
    }

    $wm[$o] = new A;

    var_dump(count($wm));
    echo "Yok ediliyor...\n";
    unset($o);
    echo "İşi bitti\n";
    var_dump(count($wm));

Yukarıdaki örneğin çıktısı:

    int(1)
    Yok ediliyor...
    Öldü!
    İşi bitti
    int(0)

# WeakMap::count

(PHP 8)

WeakMap::count — Haritadaki canlı girdileri sayar

### Açıklama

public function WeakMap::count(): int

Haritadaki canlı girdileri sayar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Haritadaki canlı girdilerin sayısını döndürür.

# WeakMap::getIterator

(PHP 8)

WeakMap::getIterator — Harici bir yineleyici ile döner

### Açıklama

public function WeakMap::getIterator(): Iterator

Harici bir yineleyici ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Iterator veya Traversable gerçekleyen bir nesne örneği.

### Hatalar/İstisnalar

Başarısızlık durumunda bir Exception yavrular.

# WeakMap::offsetExists

(PHP 8)

WeakMap::offsetExists — Haritada belli bir nesnenin varlığına bakar

### Açıklama

public function WeakMap::offsetExists(object `$nesne`): bool

Belirtilen nesneye haritada gönderim varsa `true`döner.

### Bağımsız Değişkenler

`nesne`

  Varlığına bakılacak nesne.

### Dönen Değerler

Belirtilen nesne haritada varsa `true` yoksa `false` döner.

# WeakMap::offsetGet

(PHP 8)

WeakMap::offsetGet — Belirli bir nesnenin işaret ettiği değeri verir

### Açıklama

public function WeakMap::offsetGet(object `$nesne`): mixed

Belirtilen nesnenin işaret ettiği değeri döndürür.

### Bağımsız Değişkenler

`nesne`

  Haritada bir anahtar olarak içerilen nesne.

### Dönen Değerler

Başarı durumunda belirtilen nesne ile ilişkili değeri döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda Error ortaya çıkar.

# WeakMap::offsetSet

(PHP 8)

WeakMap::offsetSet — Yeni bir anahtar-değer çiftiyle haritayı günceller

### Açıklama

public function WeakMap::offsetSet(object `$nesne`, mixed `$değer`): void

Haritayı yeni anahtar-değer çiftiyle günceller. Belirtilen anahtar haritada mevcutsa yeni değer eskisinin üzerine yazılır.

### Bağımsız Değişkenler

`nesne`

  Anahtar-değer çiftinde anahtar olan nesne.

`değer`

  Anahtar-değer çiftinde değer olan keyfi veri.

### Dönen Değerler

Hiçbir değer dönmez.

# WeakMap::offsetUnset

(PHP 8)

WeakMap::offsetUnset — Haritadan bir girdiyi siler

### Açıklama

public function WeakMap::offsetUnset(object `$girdi`): void

Haritadan belirtilen girdiyi siler.

### Bağımsız Değişkenler

`girdi`

  Haritadan silinecek nesne.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- WeakMap::count — Haritadaki canlı girdileri sayar
- WeakMap::getIterator — Harici bir yineleyici ile döner
- WeakMap::offsetExists — Haritada belli bir nesnenin varlığına bakar
- WeakMap::offsetGet — Belirli bir nesnenin işaret ettiği değeri verir
- WeakMap::offsetSet — Yeni bir anahtar-değer çiftiyle haritayı günceller
- WeakMap::offsetUnset — Haritadan bir girdiyi siler

# Stringable arayüzü

(PHP 8)

## Giriş

Stringable arayüzü sahip olduğu __toString() yöntemiyle dolaylı olarak gerçeklenir. Çoğu arayüzün tersine Stringable açıkça bildirilmiş olsun ya da olmasın, sahip olduğu sihirli __toString() yöntemini tanımlayan her sınıfı dolaylı olarak tanımlar.

Birincil kullanımı, bir dizge veya dizgeye dönüştürülebilir bir nesne kabul edecek bir işlevin bağımsız değişkenine tür olarak `string|Stringable` birleşimini belirterek tür sınaması yapmasını sağlamaktır.

## Sınıf Sözdizimi

interface Stringable {
/* Yöntemler */
public function __toString(): string
}

## Stringable örnekleri

Örnek 1 - Stringable Temel Kullanımı

Burada kurucu özelliği tanıtımı kullanılıyor.

    <?php
    class IPv4Address implements Stringable {
        public function __construct(
            private string $oct1,
            private string $oct2,
            private string $oct3,
            private string $oct4,
        ) {}

        public function __toString(): string {
            return "$this->oct1.$this->oct2.$this->oct3.$this->oct4";
        }
    }

    function showStuff(string|Stringable $değer) {
        // Stringable için, __toString'e örtük çağrıdır.
        print $değer;
    }

    $ip = new IPv4Address('123', '234', '42', '9');

    showStuff($ip);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    123.234.42.9

# Stringable::__toString

(PHP 8)

Stringable::__toString — Nesnenin dizgesel gösterimini döndürür

### Açıklama

public function Stringable::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Nesnenin dizgesel gösterimi olan dizge döner.

### Ayrıca Bakınız

- __toString()

## İçindekiler

- Stringable::__toString — Nesnenin dizgesel gösterimini döndürür

# UnitEnum arayüzü

(PHP 8 >= 8.1.0)

## Giriş

UnitEnum arayüzü tüm sayılamalara motor tarafından özdevinimsel uygulanır. Kullanıcı tanımlı sınıflarla gerçeklenemez. Öntanımlı olarak motor tarafından sağlanan yöntemlerini sayılamalar geçersiz kılamaz. Yalnızca tür sınamaları için kullanılabilir.

## Arayüz Sözdizimi

interface UnitEnum {
/* Yöntemler */
public static function cases(): array
}

# UnitEnum::cases

(PHP 8 >= 8.1.0)

UnitEnum::cases — Bir sayılamadan kılıf listesi oluşturur

### Açıklama

public static function UnitEnum::cases(): array

Bu yöntem, bir sayılamadaki tüm kılıfları bildirildikleri sıraya göre içeren bir dizi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sayılamadaki tüm kılıfları bildirildikleri sıraya göre içeren bir dizi döner.

### Örnekler

Örnek 1 - Temel kullanım örneği

Bu örnekte sayılama kılıflarının nasıl döndürüleceği gösterilmiştir.

    <?php
    enum Deste
    {
        case Kupalar;
        case Karolar;
        case Sinekler;
        case Maçalar;
    }
    var_dump(Deste::cases());
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
        [0]=>
        enum(Deste::Kupalar)
        [1]=>
        enum(Deste::Karolar)
        [2]=>
        enum(Deste::Sinekler)
        [3]=>
        enum(Deste::Maçalar)
    }

## İçindekiler

- UnitEnum::cases — Bir sayılamadan kılıf listesi oluşturur

# BackedEnum arayüzü

(PHP 8 >= 8.1.0)

## Giriş

BackedEnum arayüzü destekli sayılamalara motor tarafından özdevinimsel uygulanır. Kullanıcı tanımlı sınıflarla gerçeklenemez. Öntanımlı olarak motor tarafından sağlanan yöntemlerini sayılamalar geçersiz kılamaz. Yalnızca tür sınamaları için kullanılabilir.

## Arayüz Sözdizimi

interface BackedEnum extends UnitEnum {
/* Yöntemler */
public static function from(int|string `$değer`): static
public static function tryFrom(int|string `$değer`): ?static
/* Miras alınan yöntemler */
public static function UnitEnum::cases(): array
}

# BackedEnum::from

(PHP 8 >= 8.1.0)

BackedEnum::from — Belirtilen değeri sayılama nesnesine eşler

### Açıklama

public static function BackedEnum::from(int|string `$değer`): static

from() yöntemi, string veya int türünde bir değeri, varsa ilgili sayılama kılıfına eşler. Eşleşeceği kılıf tanımlı değilse ValueError istisnası yavrulanır.

### Bağımsız Değişkenler

`değer`

  Sayılama kılıfına eşlenecek sayıl değer.

### Dönen Değerler

Varsa sayılama kılıfı örneği döner.

### Örnekler

Örnek 1 - Temel kullanım örneği

Bu örnekte sayılama kılıflarının nasıl döndürüleceği gösterilmiştir.

    <?php
    enum Deste: string
    {
        case Kupalar = 'Ku';
        case Karolar = 'Ka';
        case Sinekler = 'S';
        case Maçalar = 'M';
    }
    $h = Deste::from('M');
    var_dump($h);
    $b = Deste::from('B');
    ?>

Yukarıdaki örneğin çıktısı:

    enum(Deste::Maçalar)
    Fatal error: Uncaught ValueError: "B" is not a valid backing value for enum "Deste" in /file.php:15

### Ayrıca Bakınız

- UnitEnum::cases() - Bir sayılamadan kılıf listesi oluşturur
- BackedEnum::tryFrom() - Belirtilen değeri sayılama nesnesine eşler, yoksa null döner

# BackedEnum::tryFrom

(PHP 8 >= 8.1.0)

BackedEnum::tryFrom — Belirtilen değeri sayılama nesnesine eşler, yoksa null döner

### Açıklama

public static function BackedEnum::tryFrom(int|string `$değer`): ?static

tryFrom() yöntemi string veya int türündeki bir değeri ilgili sayılama kılıfına eşler. Eşlenecek kılıf tanımlı değilse `null` döner.

### Bağımsız Değişkenler

`değer`

  Sayılama kılıfına eşlenecek sayıl değer.

### Dönen Değerler

Varsa sayılama kılıfı örneği, yoksa `null` döner.

### Örnekler

Örnek 1 - Temel kullanım örneği

Bu örnekte sayılama kılıflarının nasıl döndürüleceği gösterilmiştir.

    <?php
    enum Deste: string
    {
        case Kupalar = 'Ku';
        case Karolar = 'Ka';
        case Sinekler = 'S';
        case Maçalar = 'M';
    }
    $h = Deste::from('Ku');
    var_dump($h);
    $b = Deste::tryFrom('T') ?? Deste::Sinekler;
    var_dump($b);
    ?>

Yukarıdaki örneğin çıktısı:

    enum(Deste::Kupalar)
    enum(Deste::Sinekler)

### Ayrıca Bakınız

- UnitEnum::cases() - Bir sayılamadan kılıf listesi oluşturur
- BackedEnum::from() - Belirtilen değeri sayılama nesnesine eşler

## İçindekiler

- BackedEnum::from — Belirtilen değeri sayılama nesnesine eşler
- BackedEnum::tryFrom — Belirtilen değeri sayılama nesnesine eşler, yoksa null döner

# SensitiveParameterValue sınıfı

(PHP 8 >= 8.2.0)

## Giriş

SensitiveParameterValue sınıfı hassas değerlerin yanlışlıkla açığa çıkmasını engellemek için sarmalanmasını sağlar.

SensitiveParameter özniteliğine sahip bağımsız değişken değerleri yığıt izlerinde bir SensitiveParameterValue nesnesi içinde otomatik olarak sarmalanır.

## Sınıf Sözdizimi

final class SensitiveParameterValue {
/* Özellikler */
private readonly mixed $value;
/* Yöntemler */
public function __construct(mixed `$value`)
public function __debugInfo(): array
public function getValue(): mixed
}

## Özellikler

value

  Yanlışlıkla açığa çıkmaya karşı korunacak hassas değer.

# SensitiveParameterValue::__construct

(PHP 8 >= 8.2.0)

SensitiveParameterValue::__construct — Yeni bir SensitiveParameterValue nesnesi oluşturur

### Açıklama

public function SensitiveParameterValue::__construct(mixed `$value`)

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`value`

  SensitiveParameterValue nesnesi içinde saklanması gereken herhangi bir değer.

# SensitiveParameterValue::__debugInfo

(PHP 8 >= 8.2.0)

SensitiveParameterValue::__debugInfo — Hassas değeri yanlışlıkla açığa çıkmaya karşı korur

### Açıklama

public function SensitiveParameterValue::__debugInfo(): array

var_dump() kullanıldığında yanlışlıkla açığa çıkmaması için korunacak boş bir dizi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Boş dizi.

### Örnekler

Örnek 1 - var_dump() işlevine SensitiveParameterValue nesnesinin aktarılması

    <?php
    $s = new \SensitiveParameterValue('sır');
    var_dump($s);
    ?>

Yukarıdaki örneğin çıktısı:

    object(SensitiveParameterValue)#1 (0) {
    }

# SensitiveParameterValue::getValue

(PHP 8 >= 8.2.0)

SensitiveParameterValue::getValue — Hassas değeri döndürür

### Açıklama

public function SensitiveParameterValue::getValue(): mixed

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hassas değer.

### Örnekler

Örnek 1 - SensitiveParameterValue::getValue() örneği

    <?php
    $s = new \SensitiveParameterValue('sır');
    echo "Meraklı gözlerden korunan değer: ", $s->getValue(), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Meraklı gözlerden korunan değer: sır

## İçindekiler

- SensitiveParameterValue::__construct — Yeni bir SensitiveParameterValue nesnesi oluşturur
- SensitiveParameterValue::__debugInfo — Hassas değeri yanlışlıkla açığa çıkmaya karşı korur
- SensitiveParameterValue::getValue — Hassas değeri döndürür

# The __PHP_Incomplete_Class class

(PHP 4 >=4.0.1, PHP 5, PHP 7, PHP 8)

## Giriş

Created by unserialize() when trying to unserialize an undefined class or a class that is not listed in the `allowed_classes` of unserialize()'s `options` array.

Prior to PHP 7.2.0, using is_object() on the __PHP_Incomplete_Class class would return `false`. As of PHP 7.2.0, `true` will be returned.

## Sınıf Sözdizimi

#[\AllowDynamicProperties]
final class __PHP_Incomplete_Class {
}

This class has no default properties or methods. When created by unserialize(), in addition to all unserialized properties and values the object will have a `__PHP_Incomplete_Class_Name` property which will contain the name of the unserialized class.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This class is now `final`.

## Örnekler

Örnek 1 Created by unserialize()

    <?php

    class MyClass
    {
        public string $property = "myValue";
    }

    $myObject = new MyClass;

    $foo = serialize($myObject);

    // unserializes all objects into __PHP_Incomplete_Class objects
    $disallowed = unserialize($foo, ["allowed_classes" => false]);

    var_dump($disallowed);

    // unserializes all objects into __PHP_Incomplete_Class objects except those of MyClass2 and MyClass3
    $disallowed2 = unserialize($foo, ["allowed_classes" => ["MyClass2", "MyClass3"]]);

    var_dump($disallowed2);

    // unserializes undefined class into __PHP_Incomplete_Class object
    $undefinedClass = unserialize('O:16:"MyUndefinedClass":0:{}');

    var_dump($undefinedClass);

Yukarıdaki örneğin çıktısı:

    object(__PHP_Incomplete_Class)#2 (2) {
      ["__PHP_Incomplete_Class_Name"]=>
      string(7) "MyClass"
      ["property"]=>
      string(7) "myValue"
    }
    object(__PHP_Incomplete_Class)#3 (2) {
      ["__PHP_Incomplete_Class_Name"]=>
      string(7) "MyClass"
      ["property"]=>
      string(7) "myValue"
    }
    object(__PHP_Incomplete_Class)#4 (1) {
      ["__PHP_Incomplete_Class_Name"]=>
      string(16) "MyUndefinedClass"
    }

# Ön tanımlı Öznitelikler

## İçindekiler

- Attribute
- AllowDynamicProperties
- Deprecated
- Override
- ReturnTypeWillChange
- SensitiveParameter

PHP, ön tanımlı bazı öznitelikler sağlar.

# Attribute sınıfı

(PHP 8)

## Giriş

Öznitelikler, yapılandırılmış, makine tarafından okunabilen meta verilerin koddaki bildirimlerle eklenebilmesini sağlar: Sınıflar, yöntemler, işlevler, bağımsız değişkenler, özellikler ve sınıf sabitleri bir özniteliğin hedefi olabilir. Öznitelikler tarafından tanımlanan meta veriler, daha sonra Reflection arayüzleri kullanılarak çalışma anında incelenebilir. Bu nedenle öznitelikler, doğrudan koda gömülü bir yapılandırma dili olarak düşünülebilir.

## Sınıf Sözdizimi

final class Attribute {
/* Sabitler */
const int TARGET_CLASS;
const int TARGET_FUNCTION;
const int TARGET_METHOD;
const int TARGET_PROPERTY;
const int TARGET_CLASS_CONSTANT;
const int TARGET_PARAMETER;
const int TARGET_ALL;
const int IS_REPEATABLE;
/* Özellikler */
public int $flags;
/* Yöntemler */
public function __construct(int `$flags` = Attribute::TARGET_ALL)
}

## Öntanımlı Sabitler

`Attribute::TARGET_CLASS`

`Attribute::TARGET_FUNCTION`

`Attribute::TARGET_METHOD`

`Attribute::TARGET_PROPERTY`

`Attribute::TARGET_CLASS_CONSTANT`

`Attribute::TARGET_PARAMETER`

`Attribute::TARGET_ALL`

`Attribute::IS_REPEATABLE`

## Özellikler

flags

## Ayrıca Bakınız

Genelde Öznitelikler

# Attribute::__construct

(PHP 8)

Attribute::__construct — Yeni bir öznitelik (Attribute nesnesi) örnekler

### Açıklama

public function Attribute::__construct(int `$flags` = Attribute::TARGET_ALL)

Yeni bir Attribute nesnesi oluşturur.

### Bağımsız Değişkenler

`flags`

## İçindekiler

- Attribute::__construct — Yeni bir öznitelik (Attribute nesnesi) örnekler

# AllowDynamicProperties sınıfı

(PHP 8 >= 8.2.0)

## Giriş

Bu öznitelik dinamik özelliklere izin veren sınıfları imlemekte kullanılır.

## Sınıf Sözdizimi

final class AllowDynamicProperties {
/* Yöntemler */
public function __construct()
}

## Örnekler

PHP 8.2.0 ve sonrasında dinamik özelliklerin kullanımı önerilmemektedir. Bu öznitelik ile imlenmeden kullanılan sınıflar bunu vurgulayan bir uyarı çıktılar.

    <?php
    class DefaultBehaviour { }
    #[\AllowDynamicProperties]
    class ClassAllowsDynamicProperties { }
    $o1 = new DefaultBehaviour();
    $o2 = new ClassAllowsDynamicProperties();
    $o1->nonExistingProp = true;
    $o2->nonExistingProp = true;
    ?>

Yukarıdaki örneğin PHP 8.2 çıktısı:

    Deprecated: Creation of dynamic property DefaultBehaviour::$nonExistingProp is deprecated in file on line 10

## Ayrıca Bakınız

Öznitelikler

# AllowDynamicProperties::__construct

(PHP 8 >= 8.2.0)

AllowDynamicProperties::__construct — AllowDynamicProperties özniteliğinin yeni bir örneğini oluşturur

### Açıklama

public function AllowDynamicProperties::__construct()

Yeni bir AllowDynamicProperties nesnesi oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

## İçindekiler

- AllowDynamicProperties::__construct — AllowDynamicProperties özniteliğinin yeni bir örneğini oluşturur

# The Deprecated attribute

(PHP 8 >= 8.4.0)

## Giriş

This attribute is used to mark functionality as deprecated. Using deprecated functionality will cause an `E_USER_DEPRECATED` error to be emitted.

## Sınıf Sözdizimi

#[\Attribute]
final class Deprecated {
/* Özellikler */
public readonly ?string $message;
public readonly ?string $since;
/* Yöntemler */
public function __construct(?string `$message` = null, ?string `$since` = null)
}

## Özellikler

message

  An optional message explaining the reason for the deprecation and possible replacement functionality. Will be included in the emitted deprecation message.

since

  An optional string indicating since when the functionality is deprecated. The contents are not validated by PHP and may contain a version number, a date or any other value that is considered appropriate. Will be included in the emitted deprecation message.

  Functionality that is part of PHP will use Major.Minor as the since value, for example `'8.4'`.

## Örnekler

    <?php

    #[\Deprecated(message: "use safe_replacement() instead", since: "1.5")]
    function unsafe_function()
    {
       echo "This is unsafe", PHP_EOL;
    }

    unsafe_function();

    ?>

Yukarıdaki örneğin PHP 8.4 çıktısı şuna benzer:

    Deprecated: Function unsafe_function() is deprecated since 1.5, use safe_replacement() instead in example.php on line 9
    This is unsafe

## Ayrıca Bakınız

- Attributes overview
- ReflectionFunctionAbstract::isDeprecated()
- ReflectionClassConstant::isDeprecated()
- `E_USER_DEPRECATED`

# Deprecated::__construct

(PHP 8 >= 8.4.0)

Deprecated::__construct — Construct a new Deprecated attribute instance

### Açıklama

public function Deprecated::__construct(?string `$message` = `null`, ?string `$since` = `null`)

Constructs a new Deprecated instance.

### Bağımsız Değişkenler

`message`

  The value of the message property.

`since`

  The value of the since property.

## İçindekiler

- Deprecated::__construct — Construct a new Deprecated attribute instance

# The Override attribute

(PHP 8 >= 8.3.0)

## Giriş

This attribute is used to indicate that a method or a property is intended to override a method or a property of a parent class or that it implements a method or a property defined in an interface.

If no method or property with the same name exists in a parent class or in an implemented interface a compile-time error will be emitted.

The attribute cannot be used on the __construct() method, which is exempt from signature checks.

## Sınıf Sözdizimi

#[\Attribute]
final class Override {
/* Yöntemler */
public function __construct()
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | Override can be applied to properties.

## Örnekler

Örnek 1 Usage with methods

    <?php

    class Base {
        protected function foo(): void {}
    }

    final class Extended extends Base {
        #[\Override]
        protected function boo(): void {}
    }

    ?>

Yukarıdaki örneğin PHP 8.3 çıktısı şuna benzer:

    Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists

Örnek 2 Usage with properties

    <?php

    class Base {
        protected string $foo;
    }

    final class Extended extends Base {
        #[\Override]
        protected string $boo;
    }

    ?>

Output of the above example in PHP 8.5 is similar to:

    Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists

## Ayrıca Bakınız

- Attributes overview

# Override::__construct

(PHP 8 >= 8.3.0)

Override::__construct — Construct a new Override attribute instance

### Açıklama

public function Override::__construct()

Constructs a new Override instance.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

## İçindekiler

- Override::__construct — Construct a new Override attribute instance

# ReturnTypeWillChange sınıfı

(PHP 8 >= 8.1.0)

## Giriş

Final olarak nitelenmemiş dahili yöntemlerin çoğu artık uyumlu bir dönüş türü bildirmek için geçersiz kılma yöntemleri gerektiriyor, aksi takdirde kalıtım doğrulaması sırasında kullanımın önerilmediğini belirten bir uyarı çıktılanıyor. PHP sürümler arası uyumluluk endişeleri nedeniyle geçersiz kılma yöntemi için dönüş türünün bildirilmemesi durumunda, bu uyarıyı susturmak için bir `#[\ReturnTypeWillChange]` özniteliği eklenebilir.

## Sınıf Sözdizimi

final class ReturnTypeWillChange {
/* Yöntemler */
public function __construct()
}

## Ayrıca Bakınız

Öznitelikler

# ReturnTypeWillChange::__construct

(PHP 8 >= 8.1.0)

ReturnTypeWillChange::__construct — Yeni bir ReturnTypeWillChange özniteliği örneği oluşturur

### Açıklama

public function ReturnTypeWillChange::__construct()

Yeni bir ReturnTypeWillChange nesnesi oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

## İçindekiler

- ReturnTypeWillChange::__construct — Yeni bir ReturnTypeWillChange özniteliği örneği oluşturur

# SensitiveParameter sınıfı

(PHP 8 >= 8.2.0)

## Giriş

Bu öznitelik, hassas olan ve bir yığın izlemede, varsa değerinin gizlenmesini gerektiren bir bağımsız değişkeni imlemek için kullanılır.

## Sınıf Sözdizimi

final class SensitiveParameter {
/* Yöntemler */
public function __construct()
}

## Örnekler

    <?php
    function defaultBehavior(
        string $secret,
        string $normal
    ) {
        throw new Exception('Error!');
    }
    function sensitiveParametersWithAttribute(
        #[\SensitiveParameter]
        string $secret,
        string $normal
    ) {
        throw new Exception('Error!');
    }
    try {
        defaultBehavior('password', 'normal');
    } catch (Exception $e) {
        echo $e, PHP_EOL, PHP_EOL;
    }
    try {
        sensitiveParametersWithAttribute('password', 'normal');
    } catch (Exception $e) {
        echo $e, PHP_EOL, PHP_EOL;
    }
    ?>

Yukarıdaki örneğin PHP 8.2 çıktısı şuna benzer:

    Exception: Error! in example.php:7
    Stack trace:
    #0 example.php(19): defaultBehavior('password', 'normal')
    #1 {main}
    Exception: Error! in example.php:15
    Stack trace:
    #0 example.php(25): sensitiveParametersWithAttribute(Object(SensitiveParameterValue), 'normal')
    #1 {main}

## Ayrıca Bakınız

- Öznitelikler
- SensitiveParameterValue

# SensitiveParameter::__construct

(PHP 8 >= 8.2.0)

SensitiveParameter::__construct — Yeni bir SensitiveParameter özniteliği örneği oluşturur

### Açıklama

public function SensitiveParameter::__construct()

Yeni bir SensitiveParameter nesnesi oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

## İçindekiler

- SensitiveParameter::__construct — Yeni bir SensitiveParameter özniteliği örneği oluşturur

# Bağlam seçenekleri ve bağımsız değişkenleri

PHP, tüm dosya sistemi ve akım sarmalayıcılarla kullanılabilen çeşitli bağlam seçenekleri ve bağımsız değişkenlerine sahiptir. Bağlam stream_context_create() ile oluşturulur. Seçenekler stream_context_set_option() ile bağımsız değişkenleri ise stream_context_set_params() ile atanır.

# Soket bağlamı seçenekleri

Soket bağlamı seçenekleri — Soket bağlamı seçeneklerinin listesi

### Açıklama

Soket bağlamı seçenekleri, `tcp`, `http` ve `ftp` gibi soketler üzerinde çalışan tüm sarmalayıcılar için kullanılabilir.

### Seçenekler

`bindto`

  PHP'nin ağa erişmek için kullanacağı IP adresini (IPv4 veya IPv6) ve port numarasını belirtmek için kullanılır. Söz dizimi: IPV4 adreslsr için `ip:port` ve IPV6 adreslsr için `[ip]:port`. IP veya porta `0` belirtilirse IP veya portu sistem seçer.

  > Bilginize:

  > FTP'de normal işlem sırasında iki soket bağlantısı oluşturulur, port numarası bu seçenek kullanılarak belirtilemez.

`backlog`

  Soketin dinleme kuyruğundaki çıkan bağlantıların sayısını kısıtlamakta kullanılır.

  > Bilginize:

  > Sadece stream_socket_server() işlevi için uygulanabilir.

`ipv6_v6only`

  IPv4'ün IPv6'ya eşleştirilmesiyle ilgili işletim sistemi öntanımlısını geçersiz kılar.

  > Bilginize:

  > Bu, özellikle `[::]` üzerinde bir bağ mevcutken IPv4 adreslerini ayrı ayrı dinlemeye çalışırken önemlidir.

  > Sadece stream_socket_server() işlevine uygulanabilir.

`so_reuseport`

  Ayrı süreçlerden bile olsa aynı ip:port çiftine çok sayıda bağlanma sağlar.

  > Bilginize:

  > Sadece stream_socket_server() işlevine uygulanabilir.

`so_broadcast`

  Yayın adresleri/ne/nden veri gönderip alır.

  > Bilginize:

  > Sadece stream_socket_server() işlevine uygulanabilir.

`tcp_nodelay`

  Bu seçeneğe `true` atanması TCP Nagle algoritmasını iptal edeceğinden `SOL_TCP,NO_DELAY=1` atamasına sebep olacaktır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `tcp_nodelay` eklendi.
7.0.1 | `ipv6_v6only` eklendi.

### Örnekler

Örnek 1 - Temel `bindto` kullanım örneği

    <?php
    // internete '192.168.0.100' IP'yi kullanarak bağlanalım
    $seçenekler = array(
        'socket' => array(
            'bindto' => '192.168.0.100:0',
        ),
    );

    // internete '192.168.0.100' IP ve port '7000' üzerinden bağlanalım
    $seçenekler = array(
        'socket' => array(
            'bindto' => '192.168.0.100:7000',
        ),
    );

    // internete '2001:db8::1' IPv6 adresini kullanarak bağlanalım
    // and port '7000'
    $opts = array(
        'socket' => array(
            'bindto' => '[2001:db8::1]:7000',
        ),
    );

    // internete port '7000' üzerinden bağlanalım
    $seçenekler = array(
        'socket' => array(
            'bindto' => '0:7000',
        ),
    );

    // bağlamı oluşturalım...
    $bağlam = stream_context_create($seçenekler);

    // ...ve veri çekmek için kullanalım
    echo file_get_contents('http://misal.dom', false, $bağlam);

    ?>

# HTTP bağlamı seçenekleri

HTTP bağlamı seçenekleri — HTTP bağlamı seçeneklerinin listesi

### Açıklama

`http://` ve `https://` aktarımları için bağlam seçenekleri.

### Seçenekler

`method` string

  Uzak sunucu tarafından desteklenen `GET`, `POST` veya başka bir HTTP yöntemi.

  `GET` öntanımlıdır.

`header` array veya string

  İstek sırasında gönderilecek ek başlıklar. Bu seçenekte belirtilen değerler, ardından gelen `Location:` yönlendirmelerinde bile, diğer değerleri geçersiz kılar (`User-agent:`, `Host:`, `Authentication:` gibi). Bu bakımdan, `follow_location` etkinken `Host:` başlığının atanması önerilmez.

`user_agent` string

  `User-Agent:` başlığı ile gönderilecek değer. Bu değer sadece, tarayıcı `header` seçeneği ile belirtilmemişse kullanılır.

  Öntanımlı olarak, php.ini dosyasındaki user_agent değeri kullanılır.

`content` string

  Başlıklardan sonra gönderilecek ek veri. Normalde POST veya PUT istekleriyle kullanılır.

`proxy` string

  Vekil sunucunun adresini belirten URI (`tcp://vekil.example.com:5100` gibi).

`request_fulluri` bool

  `true` atanırsa, istek oluşturulurken URI'nin tamamı kullanılır (`GET http://example.com/dizin/yolu/dosya.html HTTP/1.0` gibi). Bu standart dışı bir istek biçimi olsa da bazı vekil sunucular bunun böyle olmasını gerektirirler.

  `false` öntanımlıdır.

`follow_location` int

  `Location` başlık yönlendirmelerini izler. İptal etmek için `0` atayın.

  `1` öntanımlıdır.

`max_redirects` int

  İzlenecek yönlendirmelerin azami sayısı. `1` veya daha az bir değer belirtilmesi hiçbir yönlendirmenin izlenmeyeceği anlamına gelir.

  `20` öntanımlıdır.

`protocol_version` float

  HTTP protokolünün sürümü.

  PHP 8.0.0 itibariyle `1.1` öntanımlıdır, evvelce `1.0` sürümü öntanımlıydı.

`timeout` float

  Bir float değer olarak saniye cinsinden okuma zaman aşımı. (`10.5` gibi).

  Öntanımlı olarak, php.ini dosyasındaki default_socket_timeout yönergesinin değeri kullanılır.

`ignore_errors` bool

  Başarısızlık durumu kodlarında bile içerik alınır.

  `false` öntanımlıdır.

### Örnekler

Örnek 1 - Bir sayfayı çekip veriyi POST ile göndermek

    <?php

    $postverisi = http_build_query(
        array(
            'var1' => 'biraz içerik',
            'var2' => 'eh işte'
        )
    );

    $seçenekler = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $postverisi
        )
    );

    $bağlam = stream_context_create($seçenekler);

    $sonuç = file_get_contents('http://example.com/submit.php', false, $bağlam);

    ?>

Örnek 2 - Başlıklar ve içerik alınırken yönlendirmeleri yoksaymak

    <?php

    $url = "http://www.example.org/header.php";

    $opts = array('http' =>
        array(
            'method' => 'GET',
            'max_redirects' => '0',
            'ignore_errors' => '1'
        )
    );

    $context = stream_context_create($opts);
    $stream = fopen($url, 'r', false, $context);

    // meta veri ve başlıklar
    var_dump(stream_get_meta_data($stream));

    // esas veri
    var_dump(stream_get_contents($stream));
    fclose($stream);
    ?>

### Notlar

> Bilginize: Temel soket akımı bağlamı seçenekleri
> Ek bağlamsal seçenekler temel aktarım tarafından desteklenebilir. `http://` akımları için `tcp://` aktarımının bağlamsal seçeneklerine atıf yapılır. `https://` akımları için ise `ssl://` aktarımının bağlamsal seçeneklerine atıf yapılır.

> Bilginize: HTTP durum satırı
> Bu akım sarmalayıcı bir yönlendirmeyi izlerken stream_get_meta_data() tarafından döndürülen `wrapper_data`, gerçekte `0` indisinde içerik verisine uygulanan HTTP durum satırını içermeyebilir.

>     array (
>       'wrapper_data' =>
>       array (
>         0 => 'HTTP/1.0 301 Moved Permantenly',
>         1 => 'Cache-Control: no-cache',
>         2 => 'Connection: close',
>         3 => 'Location: http://example.com/foo.jpg',
>         4 => 'HTTP/1.1 200 OK',
>         ...

> İlk istek `301` (kalıcı yönlendirme) ile döndü, dolayısıyla akım sarmalayıcı otomatik olarak yönlendirmeyi izleyip bir `200` yanıtı aldı (indis = `4`).

### Ayrıca Bakınız

- http://
- Soket bağlamı seçenekleri
- SSL bağlamı seçenekleri

# FTP bağlamı seçenekleri

FTP bağlamı seçenekleri — FTP bağlamı seçeneklerinin listesi

### Açıklama

`ftp://` ve `ftps://` aktarımları için bağlamsal seçenekler.

### Seçenekler

`overwrite` bool

  Uzak sunucuda mevcut dosyaların üzerine yazılmasına izin verir. Sadece yazma kipine (dosya gönderme) uygulanır.

  `false` öntanımlıdır.

`resume_pos` int

  Aktarımın başlatılacağı dosya konumu. Sadece okuma kipine (indirme) uygulanır.

  `0` (dosyanın başlangıcı) öntanımlıdır.

`proxy` string

  HTTP vekil sunucu üzerinden vekil FTP isteği. Sadece dosya okuma işlemlerine uygulanır. Örnek: `tcp://vekil.mesela.dom:8000`.

### Notlar

> Bilginize: Temel soket akımı bağlamı seçenekleri
> Ek bağlamsal seçenekler temel aktarım tarafından desteklenebilir. `ftp://`akımları için `tcp://` aktarımının bağlamsal seçeneklerine atıf yapılır. `ftps://` akımları için ise `ssl://` aktarımının bağlamsal seçeneklerine atıf yapılır.

### Ayrıca Bakınız

- ftp://
- Soket bağlamı seçenekleri
- SSL bağlamı seçenekleri

# SSL bağlamı seçenekleri

SSL bağlamı seçenekleri — SSL bağlamı seçeneklerinin listesi

### Açıklama

`ssl://` ve `tls://` aktarımları için bağlamsal seçenekler.

### Seçenekler

`peer_name` string

  Kullanılan görevdeşin ismi.Bu değer yoksa akım açılırken kullanılan konağın ismine dayalı olarak tahmin edilir.

`verify_peer` bool

  SSL sertifikası kullanımının doğrulanmasını gerektirir.

  `true` öntanımlıdır.

`verify_peer_name` bool

  Görevdeş isminin doğrulanması gerekir.

  `true` öntanımlıdır.

`allow_self_signed` bool

  Öz imzalı sertifikalara izin verilir. `verify_peer` gerekir.

  `false` öntanımlıdır.

`cafile` string

  Uzak görevdeşin kimliğini doğrulamak için `verify_peer` bağlam seçeneği ile kullanmak üzere yerel dosya sistemindeki Sertifika Yetkilisi dosyasının yeri.

`capath` string

  `cafile` belirtilmemişse veya sertifika yerinde yoksa uygun sertifikayı bulmak için `capath` tarafından işaret edilen dizin araştırılır. `capath` doğru olarak betimlenmiş sertifika dizini olmalıdır.

`local_cert` string

  Yerel sertifikanın dosya sistemindeki yeri. Sertifikanızı ve özel anahtarınızı içeren PEM kodlamalı bir dosya olmalıdır. Seçimlik olarak sertifika sağlayıcıların sertifika zincirini içerebilir. Ayrıca, özel anahtar `local_pk` ile belirtilen bir dosyayı da içerebilir.

`local_pk` string

  Dosya sisteminde sertifika (`local_cert`) ve özel anahtar için ayrı dosyalar olması durumunda yerel özel anahtar dosyasının yolu.

`passphrase` string

  `local_cert` dosyanızı kodlayan anahtar parolası.

`verify_depth` int

  Sertifika zinciri çok derinse çıkılır.

  Doğrulama yapılmaması öntanımlıdır.

`ciphers` string

  Kullanılabilir şifrelerin listesi belirtilir. Dizge biçemi » ciphers(1) kılavuz sayfasında açıklanmıştır.

  `DEFAULT` öntanımlıdır.

`capture_peer_cert` bool

  `true` belirtilirse `peer_certificate` bağlam seçeneği görevdeşin sertifikasını içererek oluşturulur.

`capture_peer_cert_chain` bool

  `true` belirtilirse `peer_certificate_chain` bağlam seçeneği sertifika zincirini içererek oluşturulur.

`SNI_enabled` bool

  `true` atanırsa sunucu ismi belirteci (SNI) etkin olur. Böylece aynı IP adresinde çok sayıda sertifika mümkün olur.

`disable_compression` bool

  `true` atanırsa TLS sıkıştırması yapılmaz. Bu, CRIME (SUÇ) saldırı vektörünü azaltmaya yardımcı olabililir.

`peer_fingerprint` string | array

  Uzak sertifika özeti belirtilenle eşleşmezse çıkar.

  Değer string türünde belirtilmişse, uzunluk aşlama algoritmasından belirlenir ("md5" için 32, "sha1" için 40 gibi).

  Değer array türünde belirtilmişse, anahtarlar aşlama algoritmasının ismini, değerler umulan aşı içerir.

`security_level` int

  Güvenlik seviyesini belirler. Belirtilmezse kütüphane öntanımlı güvenlik seviyesi kullanılır. Güvenlik seviyeleri için bkz: » SSL_CTX_get_security_level(3).

  PHP 7.2.0 ve OpenSSL 1.1.0 itibariyle kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | `security_level` bağımsız değişkeni eklendi. OpenSSL >= 1.1.0. gerekir.

### Notlar

> Bilginize: `https://` ve `ftps://` sarmalayıcıları için `ssl://` temel aktarım olduğundan, `ssl://`'e uygulanan bağlamsal seçenekler ayrıca `https://` ve `ftps://`'e de uygulanır.

> Bilginize: SNI'nin (Server Name Indication - Sunucu ismi belirteci) kullanılabilmesi için PHP'nin OpenSSL 0.9.8j veya daha üst sürümü ile derlenmesi gerekir. SNI desteği olup olmadığını anlamak için `OPENSSL_TLSEXT_SERVER_NAME` kullanılır.

### Ayrıca Bakınız

- Soket bağlamı seçenekleri

# Phar bağlam seçenekleri

Phar bağlam seçenekleri — Phar bağlamı seçeneklerinin listesi

### Açıklama

`phar://` sarmalayıcısı için bağlam seçenekleri.

### Seçenekler

`compress` int

  Phar sıkıştırma sabitlerinden biri.

`metadata` mixed

  Phar meta verisi. Bakınız: Phar::setMetadata().

### Ayrıca Bakınız

- phar://
- Phar akım sarmalayıcısı

# Bağlam bağımsız değişkenleri

Bağlam bağımsız değişkenleri — Bağlam bağımsız değişkeni listeleme

### Açıklama

Bu `bağımsız değişkenler` bir `bağlama` stream_context_set_params() işlevi kullanılarak atanabilir.

### Bağımsız Değişkenler

`notification` callable

  Bir akımda bir olayın sonucunda tetiklenecek geri çağırım işlevi.

  Daha fazla bilgi için stream_notification_callback() işlevine bakınız.

# Zip bağlamı seçenekleri

Zip bağlamı seçenekleri — Zip bağlamı seçeneklerinin listesi

### Açıklama

Zip bağlamı seçenekleri `zip` sarmalayıcılar için kullanılabilir.

### Seçenekler

`password`

  Şifreli arşiv için kullanılacak parolayı belirtmek için kullanılır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0, PECL zip 1.14.0 | `password` eklendi.

### Örnekler

Örnek 1 - Basit `password` kullanım örneği

    <?php
    // Şifreli arşivi oku
    $opts = array(
        'zip' => array(
            'password' => 'secret',
        ),
    );
    // bağlamı oluştur...
    $context = stream_context_create($opts);

    // ...ve veriyi çekip almak için onu kullan
    echo file_get_contents('zip://test.zip#test.txt', false, $context);

    ?>

# Zlib bağlam seçenekleri

Zlib bağlam seçenekleri — Zlib bağlam seçeneklerinin listesi

### Açıklama

Zlib bağlam seçenekleri `zlib`sarmalayıcılar için kullanılabilir.

### Seçenekler

`level`

  Sıkıştırma düzeyini (`0` - `9`) belirtmekte kullanılır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.3.0 | `level` eklendi.

## İçindekiler

- Soket bağlamı seçenekleri — Soket bağlamı seçeneklerinin listesi
- HTTP bağlamı seçenekleri — HTTP bağlamı seçeneklerinin listesi
- FTP bağlamı seçenekleri — FTP bağlamı seçeneklerinin listesi
- SSL bağlamı seçenekleri — SSL bağlamı seçeneklerinin listesi
- Phar bağlam seçenekleri — Phar bağlamı seçeneklerinin listesi
- Bağlam bağımsız değişkenleri — Bağlam bağımsız değişkeni listeleme
- Zip bağlamı seçenekleri — Zip bağlamı seçeneklerinin listesi
- Zlib bağlam seçenekleri — Zlib bağlam seçeneklerinin listesi

# Desteklenen Protokoller ve Sarmalayıcılar

PHP fopen(), copy(), file_exists() ve filesize() gibi dosya sistemi işlevleriyle kullanmak için URL tarzı protokollere atanmış çeşitli sarmalayıcılarla birlikte gelir. Bu sarmalayıcılara ek olarak, stream_wrapper_register() işlevini kullanarak özel sarmalayıcılar kaydetmek de mümkündür.

> Bilginize: Bir sarmalayıcıyı açıklamakta kullanılan URL sözdizimi sadece `düzen://...` sözdizimini destekler. `düzen:/` ve `düzen:` sözdizimleri desteklenmez.

# file://

file:// — Yerel dosya sistemine erişim

### Açıklama

file:// sarmalayıcısı PHP ile kullanılan öntanımlı sarmalayıcı olup yerel dosya sistemini temsil eder. Göreli (`/`, `\`, `\\` veya bir Windows sürücü harfi ile başlamayan) bir dosya yolu belirtilirse, bu çalışma dizininize göre uygulanır. Çoğu durumda bu, değiştirilmediği sürece betiğin bulunduğu dizindir. CLI SAPI kullanıldığında, komut dosyasının çağrıldığı dizin, öntanımlı dizin olur.

fopen() ve file_get_contents() gibi bazı işlevlerle, `include_path` isteğe bağlı olarak göreli yollar için de aranabilir.

### Kullanımı

- /dosyaya/yol/dosya.ext
- göreli/dosyaya/yol/dosya.ext
- fileInCwd.ext
- C:/dosyaya/yol/winfile.ext
- C:\dosyaya\yol\winfile.ext
- \\smbserver\share\dosyaya\yol\dosya\winfile.ext
- file:///dosyaya/yol/dosya/dosya.ext

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
Okuma izni | Evet
Yazma izni | Evet
Ekleme izni | Evet
Aynı anda okuma ve yazma izni | Evet
stat() desteği | Evet
unlink() desteği | Evet
rename() desteği | Evet
mkdir() desteği | Evet
rmdir() desteği | Evet

# http://

# https://

http:// -- https:// — HTTP'lere erişim

### Açıklama

Sarmalayıcı, HTTP GET yöntemini kullanarak HTTP üzerinden dosyalara/kaynaklara salt okunur erişim sağlar. Öntanımlı olarak HTTP 1.0 GET kullanılır. İsme dayalı sanal konakları işleme isteği ile birlikte bir `Host:` başlığı gönderilir. php.ini dosyası veya akım bağlamı kullanılarak bir user_agent dizesi yapılandırılırsa, o da isteğe dahil edilir.

Akım, kaynağın gövdesine (body) erişime izin verir; başlıklar $http_response_header değişkeninde saklanır.

Belgeninin geldiği kaynağın URL'sini bilmek önemliyse (tüm yönlendirmeler işlendikten sonra), akım tarafından döndürülen yanıt başlıklarının işlenmesi gerekir.

from yönergesi, eğer ayarlanmışsa ve Bağlam seçenekleri ve bağımsız değişkenleri tarafından geçersiz kılınmamışsa `From:` başlığı için kullanılacaktır.

### Kullanımı

- http://example.com
- http://example.com/dosya.php?var1=val1&var2=val2
- http://kullanıcı:parola@example.com
- https://example.com
- https://example.com/dosya.php?var1=val1&var2=val2
- https://kullanıcı:parola@example.com

### Seçenekler

Sarmalayıcı Seçenekleri
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Evet
Okuma izni | Evet
Yazma izni | Hayır
Ekleme izni | Hayır
Aynı anda okuma ve yazma izni | Kullanılamaz
stat() desteği | Hayır
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

### Örnekler

Örnek 1 - Yönlendirmelerin ardından nereye geldiğimizi saptamak

    <?php
    $url = 'http://www.example.com/redirecting_page.php';

    $fp = fopen($url, 'r');

    $meta_data = stream_get_meta_data($fp);
    foreach ($meta_data['wrapper_data'] as $response) {

        /* Yönlendirildik mi? */
        if (strtolower(substr($response, 0, 10)) == 'location: ') {

            /* $url'yi yönlendirildiğimiz yere güncelle' */
            $url = substr($response, 10);
        }

    }

    ?>

### Notlar

> Bilginize: HTTPS sadece openssl eklentisi etkin olduğunda desteklenir.

HTTP bağlantıları salt-okunurdur; bir HTTP kaynağına dosya kopyalamak veya veri yazmak desteklenmez.

Örneğin, POST ve PUT isteklerinin gönderilmesi HTTP Bağlamlarının yardımıyla yapılabilir.

### Ayrıca Bakınız

- HTTP bağlamı seçenekleri
- $http_response_header
- stream_get_meta_data() - Akımdan başlıkları/meta verileri döndürür

# ftp://

# ftps://

ftp:// -- ftps:// — FTP'lere Erişim

### Açıklama

FTP üzerinden mevcut dosyaların okunmasına, yeni dosyaların oluşturulmasına erişim sağlar. Sunucu edilgen kip FTP'yi desteklemiyorsa bağlantı başarısız olur.

Dosyaları okumak veya yazmak için açabilirsiniz ama ikisini aynı anda yapamazsınız. Uzak dosya, ftp sunucusunda zaten mevcutsa ve üzerine yazmak için açmaya çalışırsanız ancak bağlama `overwrite` seçeneğini belirtmezseniz, bağlantı başarısız olur. FTP üzerinden mevcut dosyaların üzerine yazmanız gerekiyorsa, bağlamda `overwrite` seçeneğini belirtin ve dosyayı yazmak için açın. Diğer bir yöntem, FTP eklentisini kullanmaktır.

php.ini'de from yönergesine atadığınız bir parola varsa anonim FTP parolası olarak gönderilecektir.

### Kullanımı

- ftp://example.com/pub/dosya.txt
- ftp://kullanıcı:parola@example.com/pub/dosya.txt
- ftps://example.com/pub/dosya.txt
- ftps://kullanıcı:parola@example.com/pub/dosya.txt

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Evet
Okuma izni | Evet
Yazma izni | Evet(yeni dosyalar; mevcut dosyalar için `overwrite` ile)
Ekleme izni | Evet
Aynı anda okuma ve yazma izni | Hayır
stat() desteği | Sadece filesize(), filemtime(), filetype(), file_exists(), is_file() ve is_dir() için.
unlink() desteği | Evet
rename() desteği | Evet
mkdir() desteği | Evet
rmdir() desteği | Evet

### Notlar

> Bilginize:

> FTPS sadece openssl eklentisi etkinse desteklenir.

> Sunucuda SSL desteği yoksa, bağlantı sıradan şifresiz ftp'ye dönüşür.

> Bilginize: Ekleme
> Dosyalara `ftp://` URL sarmalayıcısı üzerinden ekleme yapılabilir.

### Ayrıca Bakınız

- FTP bağlamı seçenekleri

# php://

php:// — Çeşitli G/Ç akımlarına erişim

### Açıklama

PHP, PHP'nin kendi girdi ve çıktı akımlarına, standart girdi, çıktı ve hata dosya tanıtıcılarına, bellek içi ve disk destekli geçici dosya akımlarına ve diğer dosya kaynaklarını okundukları ve yazıldıkları gibi işleyebilen süzgeçlere erişime izin veren bir dizi G/Ç akımı sağlar.

#### php://stdin, php://stdout ve php://stderr

php://stdin, php://stdout ve php://stderr, PHP sürecinin karşılık gelen girdi veya çıktı akımına doğrudan erişime izin verir. Akım, bir kopya dosya tanıtıcısına başvurur, bu nedenle php://stdin'i açar ve daha sonra kapatırsanız, yalnızca tanıtıcı kopyanızı kapatırsınız; STDIN içindeki gerçek akım etkilenmez. Bu sarmalayıcıları kullanarak akımları elle açmak yerine basitçe `STDIN`, `STDOUT` ve `STDERR` sabitlerini kullanmanız önerilir.

php://stdin salt-okunur, php://stdout ve php://stderr ise salt-yazılırdır.

#### php://input

php://input, istek gövdesinden ham verileri okumanıza izin veren salt okunur bir akımdır. enable_post_data_reading seçeneği etkinse php://input akımı, `enctype="multipart/form-data"` ile kullanılamaz.

#### php://output

php://output, çıktı tamponuna print ve echo gibi yazmanıza izin veren salt-yazılır bir akımdır.

#### php://fd

php://fd, verilen dosya tanıtıcısına doğrudan erişime izin verir. Örneğin php://fd/3, dosya tanıtıcı 3'ü ifade eder.

#### php://memory ve php://temp

php://memory ve php://temp, geçici verilerin dosya benzeri bir sarmalayıcıda depolanmasına izin veren okuma-yazma akımlarıdır. İkisi arasındaki tek fark, php://memory akımının verilerini her zaman bellekte depolamasıdır, oysa php://temp, bellekte depolanan veri miktarı önceden tanımlanmış bir sınıra ulaştığında (öntanımlı değer 2 MB'dir) geçici bir dosya kullanır. Bu geçici dosyanın konumu, sys_get_temp_dir() işlevindeki gibi belirlenir.

php://temp bellek sınırı, `/maxmemory:NN` eklenerek denetlenebilir, burada NN, bayt cinsinden, geçici bir dosya kullanmadan önce bellekte saklanacak azami veri miktarıdır.

Dikkat

Bazı PHP eklentileri standart G/Ç akımı gerektirebilir ve belirli bir akımı standart G/Ç akımına dönüştürmeye çalışabilir. Bu dönüşüm C fopencookie() işlevini gerektirdiğinden bellek akımlarında başarısız olabilir. Bu C işlevi Windows'ta mevcut değildir.

#### php://filter

php://filter, açılış anında süzgeçlerin bir akıma uygulanmasını sağlamak için tasarlanmış bir meta sarmalayıcı çeşididir. Bu, içerikler okunmadan önce akışa başka türlü süzgeç uygulama imkanının olmadığı yerlerde, readfile(), file() ve file_get_contents() gibi hepsi bir arada dosya işlevlerinde kullanışlıdır.

php://filter hedefi, yolunun bir parçası olarak aşağıdaki seçenekleri alır. Tek bir yolda birden çok süzgeç zinciri belirtilebilir. Lütfen bu seeneklerin kullanımıyla ilgili ayrıntılar için örneklere bakın.

php://filter seçenekleri
Seçenek | Açıklama
--- | ---
`resource=<süzülecek akım>` | Bu seçenek gereklidir. Süzülecek akımı belirtir.
`read=<okuma zincirine uygulanacak süzgeç listesi>` | Bu seçenek isteğe bağlıdır. Burada, süzgeçler arasına boru (`|`) karakteri konarak bir veya daha fazla süzgeç belirtilebilir.
`write=<yazma zincirine uygulanacak süzgeç listesi>` | Bu seçenek isteğe bağlıdır. Burada, süzgeçler arasına boru (`|`) karakteri konarak bir veya daha fazla süzgeç belirtilebilir.
`<her iki zincire uygulanacak süzgeç listesi>` | `read=` veya `write=` ile öncelenmemiş süzgeç listeleri uygun olduğu takdirde okuma ve yazma zincirlerinin ikisine de uygulanır.

### Seçenekler

Sarmalayıcı Özeti (`php://filter` için, süzülen sarmalayıcı özetine bakın)
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
allow_url_include ile sınırlı | Sadece `php://input`, `php://stdin`, `php://memory` ve `php://temp` için.
Okuma izni | Sadece `php://stdin`, `php://input`, `php://fd`, `php://memory` ve `php://temp` için.
Yazma izni | Sadece `php://stdout`, `php://stderr`, `php://output`, `php://fd`, `php://memory` ve `php://temp` için.
Ekleme izni | Sadece `php://stdout`, `php://stderr`, `php://output`, `php://fd`, `php://memory` ve `php://temp` için. (Yazmaya eşdeğer)
Aynı anda okuma ve yazma izni | Sadece `php://fd`, `php://memory` ve `php://temp` için.
stat() desteği | Hayır. Ancak, `php://memory` ve `php://temp` akımları fstat() işlevini destekler.
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır
stream_select() desteği | Sadece `php://stdin`, `php://stdout`, `php://stderr`, `php://fd` ve `php://temp` için.

### Örnekler

Örnek 1 - php://temp/maxmemory

Bu isteğe bağlı seçenek, php://temp geçici bir dosya kullanmaya başlamadan önce bellek sınırının ayarlanmasına izin verir.

    <?php
    // Sınırı 5 MB yapalım.
    $fiveMBs = 5 * 1024 * 1024;
    $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');

    fputs($fp, "hello\n");

    // Yazdığımızı oku.
    rewind($fp);
    echo stream_get_contents($fp);
    ?>

Örnek 2 - php://filter/resource=<süzülecek akım>

Bu seçenek php://filter belirtiminizin sonunda bulunmalı ve süzülmesini istediğiniz akımı göstermelidir.T

    <?php
    /* Aslında hiçbir süzgeç belirtilmediğinden
      readfile("http://www.example.com");
      ile eşdeğerdir */

    readfile("php://filter/resource=http://www.example.com");
    ?>

Örnek 3 - php://filter/read=<okuma zincirine uygulanacak süzgeç listesi>

Bu seçenek, boru karakteri | ile ayrılmış bir veya daha fazla dosya adı alır.

    <?php
    /* www.example.com içeriğini tamamen büyük harflerle çıktılar. */
    readfile("php://filter/read=string.toupper/resource=http://www.example.com");

    /* Ayrıca ROT13 kodlaması dışında yukarıdaki ile aynı*/
    readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
    ?>

Örnek 4 - php://filter/write=<yazma zincirine uygulanacak süzgeç listesi>

Bu seçenek, boru karakteri | ile ayrılmış bir veya daha fazla dosya adı alır.

    <?php
    /* rot13 süzgeci üzerinden "Hello World" dizesini süzer ve
         çıktıyı geçerli dizindeki example.txt dosyasına yazar */
    file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
    ?>

Örnek 5 - php://memory ve php://temp yeniden kullanılamaz

php://memory ve php://temp yeniden kullanılamaz, yani akımlar kapatıldıktan sonra bunlara tekrar başvurmanın bir yolu yoktur.

    <?php
    file_put_contents('php://memory', 'PHP');
    echo file_get_contents('php://memory'); // hiçbir şey basmaz

# zlib://

# bzip2://

# zip://

zlib:// -- bzip2:// -- zip:// — Sıkıştırma Akımları

### Açıklama

compress.zlib:// ve compress.bzip2://

zlib: akımın fread() ve diğer dosya sistemi işlevleriyle birlikte kullanılabilmesi dışında gzopen() gibi çalışır. Bu, ':' karakterleri içeren dosya adlarındankaynaklanan belirsizlikler nedeniyle kullanımdan kaldırılmıştır; yerine compress.zlib:// kullanın.

compress.zlib:// ve compress.bzip2:// sırasıyla gzopen() ve bzopen() ile eşdeğer olup fopencookie'yi desteklemeyen sistemlerde bile çalışır.

ZIP eklentisi zip: sarmalayıcı kaydeder. PHP 7.2.0 ve libzip 1.2.0+ sürümlerinden itibaren, şifrelenmiş arşivler için parola desteği eklendi ve parolaların akım bağlamları tarafından sağlanmasına izin verildi. Parolalar, `'password'` akım bağlamı seçeneği kullanılarak atanabilir.

### Kullanımı

- compress.zlib://dosya.gz
- compress.bzip2://dosya.bz2
- zip://archive.zip#dizin/dosya.txt

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
Okuma izni | Evet
Yazma izni | Evet (`zip://` hariç)
Ekleme izni | Evet (`zip://` hariç)
Aynı anda okumaya ve yazmaya izin | Hayır
stat() desteği | Hayır, sıkıştırlmış dosyaların durum bilgilerini almak için normal `file://` sarmalayıcısını kullanın.
unlink() desteği | Hayır, sıkıştırlmış dosyaları silmek için normal `file://` sarmalayıcısını kullanın.
rename() desteği | Hayır
mkdir() desteği | Hayır
Supports rmdir() | Hayır

### Ayrıca Bakınız

- Zlib bağlam seçenekleri

# data://

data:// — Data (RFC 2397)

### Açıklama

data: (» RFC 2397) akım sarmalayıcı.

### Kullanımı

- data://text/plain;base64,

### Seçenekler

Sarmalayıcı Seçenekleri
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Evet
allow_url_include ile sınırlı | Evet
Okuma izni | Evet
Yazma izni | Hayır
Ekleme izni | Hayır
Aynı anda okuma ve yazma izni | Hayır
stat() desteği | Hayır
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

### Örnekler

Örnek 1 - data:// içeriğini basmak

    <?php
    // "I love PHP" basar
    echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo=');
    ?>

Örnek 2 - Ortam türünü alıp getirmek

    <?php
    $fp   = fopen('data://text/plain;base64,', 'r');
    $meta = stream_get_meta_data($fp);

    // prints "text/plain"
    echo $meta['mediatype'];
    ?>

# glob://

glob:// — Kalıpla eşleşen dosya yollarını bulur

### Açıklama

glob: akım sarmalayıcısı.

### Kullanımı

- glob://

### Seçenekler

Sarmalayıcı Seçenekleri
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
allow_url_include ile sınırlı | Hayır
Okuma izni | Hayır
Yazma izni | Hayır
Ekleme izni | Hayır
Aynı anda okuma ve yazma izni | Hayır
stat() desteği | Hayır
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

### Örnekler

Örnek 1 - Temel kullanım

    <?php
    // ext/spl/examples/ dizinideki tüm *.php dosyalarını al
    // hepsinin dosya ismini ve boyutunu bas

    $it = new DirectoryIterator("glob://ext/spl/examples/*.php");
    foreach($it as $f) {
        printf("%s: %.1FK\n", $f->getFilename(), $f->getSize()/1024);
    }
    ?>

    tree.php: 1.0K
    findregex.php: 0.6K
    findfile.php: 0.7K
    dba_dump.php: 0.9K
    nocvsdir.php: 1.1K
    phar_from_dir.php: 1.0K
    ini_groups.php: 0.9K
    directorytree.php: 0.9K
    dba_array.php: 1.1K
    class_tree.php: 1.8K

# phar://

phar:// — PHP Arşivi

### Açıklama

phar:// akım sarmalayıcısı. Ayrıntılı bilgi için Phar akım sarmalayıcısı bölümüne bakınız.

### Kullanımı

- phar://

### Seçenekler

Wrapper Summary
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
allow_url_include ile sınırlı | Hayır
Okuma izni | Evet
Yazma izni | Evet
Ekleme izni | Hayır
Aynı anda okuma ve yazma izni | Evet
stat() desteği | Evet
unlink() desteği | Evet
rename() desteği | Evet
mkdir() desteği | Evet
rmdir() desteği | Evet

### Ayrıca Bakınız

- Phar bağlam seçenekleri

# ssh2://

ssh2:// — Güvenli Kabuk 2

### Açıklama

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)

> Bilginize: Bu sarmalayıcı öntanımlı olarak etkin değildir
> ssh2.*:// sarmalayıcısını kullanmak için, » PECL'de bulunan » SSH2 eklentisinin kurulması gerekir.

Geleneksel URI oturum açma ayrıntılarını kabul etmenin yanı sıra, ssh2 sarmalayıcıları, URL'nin konak bölümündeki bağlantı kaynağını aktararak açık bağlantıları yeniden kullanır.

### Kullanımı

- ssh2.shell://user:pass@example.com:22/xterm
- ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd
- ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14
- ssh2.sftp://user:pass@example.com:22/path/to/filename

### Seçenekler

Sarmalayıcı Özeti
Özellik | ssh2.shell | ssh2.exec | ssh2.tunnel | ssh2.sftp | ssh2.scp
--- | --- | --- | --- | --- | ---
allow_url_fopen ile sınırlı | Evet | Evet | Evet | Evet | Evet
Okuma izni | Evet | Evet | Evet | Evet | Evet
Yazma izni | Evet | Evet | Evet | Evet | Hayır
Ekleme izni | Hayır | Hayır | Hayır | Yes (Sunucu desteklerse) | Hayır
Aynı anda okuma ve yazma | Evet | Evet | Evet | Evet | Hayır
stat() desteği | Hayır | Hayır | Hayır | Evet | Hayır
unlink() desteği | Hayır | Hayır | Hayır | Evet | Hayır
rename() desteği | Hayır | Hayır | Hayır | Evet | Hayır
mkdir() desteği | Hayır | Hayır | Hayır | Evet | Hayır
rmdir() desteği | Hayır | Hayır | Hayır | Evet | Hayır

Bağlam Seçenekleri
İsim | Kullanım | Öntanımlı
--- | --- | ---
`session` | Yeniden kullanılacak önceden bağlanmış ssh2 kaynağı |
`sftp` | Yeniden kullanılacak önceden tahsis edilmiş sftp kaynağı |
`methods` | Anahtar değişimi, ana anahtar, şifre, sıkıştırma ve kullanılacak MAC yöntemleri |
`callbacks` |  |
`username` | Bağlantı için kullanıcı adı |
`password` | Kimlik kanıtlama için parola |
`pubkey_file` | Kimlik kanıtlamada kullanılacak genel anahtar dosyasının ismi |
`privkey_file` | Kimlik kanıtlamada kullanılacak özel anahtar dosyasının ismi |
`env` | Atanacak ortam değişkenlerinin ilişkisel dizisi |
`term` | Bir pty tahsis ederken talep edilecek terminal türü |
`term_width` | Bir pty tahsis ederken talep edilecek terminal genişliği |
`term_height` | Bir pty tahsis ederken talep edilecek terminal yüksekliği |
`term_units` | term_width ve term_height ile kullanılacak birimler | `SSH2_TERM_UNIT_CHARS`

### Örnekler

Örnek 1 - Etkin bir bağlantıda bir akım açmak

    <?php
    $session = ssh2_connect('example.com', 22);
    ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                                '/home/username/.ssh/id_rsa', 'secret');
    $stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
    ?>

Örnek 2 - Bu $session değişkeni hazır tutulmalıdır!

ssh2.*://$session sarmalayıcılarını kullanmak için $session özkaynak değişkeni korunmalıdır. Aşağıdaki kod istenen etkiyi sağlamayacaktır:

    <?php
    $session = ssh2_connect('example.com', 22);
    ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                                '/home/username/.ssh/id_rsa', 'secret');
    $connection_string = "ssh2.sftp://$session/";
    unset($session);
    $stream = fopen($connection_string . "path/to/file", 'r');
    ?>

unset() oturumu kapatır, çünkü $connection_string $session değişkenine bir gönderim tutmaz, sadece ondan türetilmiş bir dizge ataması içerir. unset() örtük olduğunda da etki alanından çıktığından dolayı (bir işlevdeki gibi) bu olur.

# rar://

rar:// — RAR

### Açıklama

Sarmalayıcı, arşivde depolandığı şekliyle, RAR arşivi için URL kodlu yol (göreli veya mutlak), isteğe bağlı bir yıldız işareti (`*`), isteğe bağlı bir diyez işareti (`#`) ve isteğe bağlı bir url kodlu girdi adı alır. Bir girdi adı belirtmek, numara işaretini gerektirir; girdi adında önde bir eğik çizgi isteğe bağlıdır.

Bu sarmalayıcı hem dosyaları hem de dizinleri açabilir. Dizinleri açarken, yıldız işareti dizin girdilerinin adlarını kodlanmamış olarak döndürülmeye zorlar. Belirtilmezse, URL olarak kodlanmış biçimde döndürülür - bunun nedeni, URL kodlu veriler gibi görünen dosya adlarının varlığında sarmalayıcının RecursiveDirectoryIterator gibi yerleşik işlevsellik ile doğru şekilde kullanılmasını sağlamaktır.

Diyez işareti ve girdi adı kısmı dahil edilmemişse, arşivin kökü gösterilir. Bu, kök dizin arşivdeki tek bir girdide depolanmadığından normal dizinlerden farklıdır, çünkü ortaya çıkan akım değişiklik zamanı gibi bilgileri içermez. RecursiveDirectoryIterator ile sarmalayıcının kullanımı, alt öğelerin URL'lerinin doğru bir şekilde yapılandırılabilmesi için, köke erişirken diyez işaretinin URL'ye dahil edilmesini gerektirir.

> Bilginize: Bu sarmalayıcı öntanımlı olarak etkin değildir
> rar:// sarmalayıcısını kullanmak için, » PECL'de bulunan » rar eklentisinin kurulması gerekir.

rar:// PECL rar 3.0.0'dan beri kullanılabilmektedir.

### Kullanımı

- rar://<url kodlu arşiv ismi>[*][#[<url kodlu girdi ismi>]]

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
allow_url_include ile sınırlı | Hayır
Okuma izni | Evet
Yazma izni | Hayır
Ekleme izni | Hayır
Aynı anda okuma ve yazma izni | Hayır
stat() desteği | Evet
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

Bağlam Seçenekleri
İsim | Kullanım | Öntanımlı
--- | --- | ---
`open_password` | Varsa, arşivin başlıklarını şifrelemek için kullanılan parola. WinRAR, daha sonra mevcut olduğunda başlık parolası ile aynı parolaya sahip tüm dosyaları şifreleyecektir, bu nedenle şifrelenmiş başlıklara sahip arşivler için `file_password` göz ardı edilecektir. |
`file_password` | Varsa, bir dosyayı şifrelemek için kullanılan parola. Başlıklar da şifrelenmişse, bu seçenek `open_password` lehine göz ardı edilecektir. İki seçeneğin olmasının nedeni, arşivlerin ortaya çıkması durumunda farklı başlık ve dosya şifrelerine sahip arşivleri destekleme olasılığını elde tutmaktır. Arşivin başlıkları şifrelenmemişse, `open_password`'un yok sayılacağını ve onun yerine bu seçeneğin kullanılmasının gerektiği unutulmamalıdır. |
`volume_callback` | Eksik bölümlerin yolunu belirlemek için bir geriçağırım. Daha fazla bilgi için bkz. RarArchive::open(). |

### Örnekler

Örnek 1 - Bir RAR arşinde gezinmek

    <?php

    class MyRecDirIt extends RecursiveDirectoryIterator {
        function current() {
            return rawurldecode($this->getSubPathName()) .
                (is_dir(parent::current())?" [DIR]":"");
        }
    }

    $f = "rar://" . rawurlencode(dirname(__FILE__)) .
        DIRECTORY_SEPARATOR . 'dirs_and_extra_headers.rar#';

    $it = new RecursiveTreeIterator(new MyRecDirIt($f));

    foreach ($it as $s) {
        echo $s, "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    |-allow_everyone_ni [DIR]
    |-file1.txt
    |-file2_אּ.txt
    |-with_streams.txt
    \-אּ [DIR]
      |-אּ\%2Fempty%2E [DIR]
      | \-אּ\%2Fempty%2E\file7.txt
      |-אּ\empty [DIR]
      |-אּ\file3.txt
      |-אּ\file4_אּ.txt
      \-אּ\אּ_2 [DIR]
        |-אּ\אּ_2\file5.txt
        \-אּ\אּ_2\file6_אּ.txt

Örnek 2 - Şifreli bir dosyanın açılması (başlık şifreleme)

    <?php
    $stream = fopen("rar://" .
        rawurlencode(dirname(__FILE__)) . DIRECTORY_SEPARATOR .
        'encrypted_headers.rar' . '#encfile1.txt', "r", false,
        stream_context_create(
            array(
                'rar' =>
                    array(
                        'open_password' => 'samplepassword'
                    )
                )
            )
        );
    var_dump(stream_get_contents($stream));
    /* çoğu dosyanın sahip olmadığı oluşturma ve
     * son erişim tarihi WinRAR'a dahil edilmiştir
     */
    var_dump(fstat($stream));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(26) "Encrypted file 1 contents."
    Array
    (
        [0] => 0
        [1] => 0
        [2] => 33206
        [3] => 1
        [4] => 0
        [5] => 0
        [6] => 0
        [7] => 26
        [8] => 0
        [9] => 1259550052
        [10] => 0
        [11] => -1
        [12] => -1
        [dev] => 0
        [ino] => 0
        [mode] => 33206
        [nlink] => 1
        [uid] => 0
        [gid] => 0
        [rdev] => 0
        [size] => 26
        [atime] => 0
        [mtime] => 1259550052
        [ctime] => 0
        [blksize] => -1
        [blocks] => -1
    )

# ogg://

ogg:// — Ses akımları

### Açıklama

ogg:// sarmalayıcısı aracılığıyla okumak için açılan dosyalar, `OGG/Vorbis` çözücü bileşeni kullanılarak kodlanmış sıkıştırılmış ses olarak değerlendirilir. Benzer şekilde, ogg:// sarmalayıcı aracılığıyla yazmak veya eklemek için açılan dosyalar sıkıştırılmış ses verileri olarak yazılır. stream_get_meta_data() işlevi, okuma için açılmış bir `OGG/Vorbis` dosyasında kullanıldığında, satıcı etiketi, dahil edilen yorumlar, kanal sayısı, örnekleme hızı ve `bitrate_lower`, `bitrate_upper`, `bitrate_nominal` ve `bitrate_window` tarafından açıklanan kodlama oranı aralığı dahil olmak üzere akış hakkında çeşitli ayrıntıları döndürür.

ogg:// (PECL)

> Bilginize: Bu sarmalayıcı öntanımlı olarak etkin değildir
> ogg:// sarmalayıcısını kullanmak için, » PECL'de bulunan » OGG/Vorbis uzantısının kurulması gerekir.

### Kullanımı

- ogg://soundfile.ogg
- ogg:///dosyaya/yol/soundfile.ogg
- ogg://http://www.example.com/path/to/soundstream.ogg

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
Okumaya izin | Evet
Yazmaya izin | Evet
Eklemeye izin | Evet
Aynı anda okumaya ve yazmaya izin | Hayır
stat() desteği | Hayır
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

Bağlam seçenekleri
İsim | Kullanım | Öntanımlı | Kip
--- | --- | --- | ---
`pcm_mode` | Okurken uygulanacak PCM kodlaması: `OGGVORBIS_PCM_U8`, `OGGVORBIS_PCM_S8`, `OGGVORBIS_PCM_U16_BE`, `OGGVORBIS_PCM_S16_BE`, `OGGVORBIS_PCM_U16_LE`, veya `OGGVORBIS_PCM_S16_LE`. (8'e karşı 16 bit, işaretli veya işaretsiz, büyük veya küçük dip) | OGGVORBIS_PCM_S16_LE | Okuma
`rate` | Girdi verisinin Hz cinsinden örnekleme hızı | 44100 | Yazma/Ekleme
`bitrate` | Tamsayı olarak verildiğinde, kodlanacak sabit bit hızı (16000'den 131072'ye kadar). Gerçek sayı olarak verildiğinde, kullanılacak değişken bit hızı (-1.0'dan 1.0'a kadar) | 128000 | Yazma/Ekleme
`channels` | Kodlanacak ses kanalı sayısı, genelde 1 (Mono) veya 2 (Stereo). 16'ya kadar çıkabilir. | 2 | Yazma/Ekleme
`comments` | Parça başlığına kodlanacak dize değerleri dizisi. |  | Yazma/Ekleme

# expect://

expect:// — Süreçlerle Etkileşim Akımları

### Açıklama

expect:// sarmalayıcısı ile açılan akımlar sürecin standart girdi, standart çıktı ve standart hatasına PTY üzerinden erişim sağlar.

> Bilginize: Bu sarmalayıcı öntanımlı olarak etkin değildir
> expect:// sarmalayıcısını kullanmak için, » PECL'de bulunan » Expect eklentisinin kurulması gerekir.

expect:// (PECL)

### Kullanımı

- expect://command

### Seçenekler

Sarmalayıcı Özeti
Özellik | Destek
--- | ---
allow_url_fopen ile sınırlı | Hayır
Okuma izni | Evet
Yazma izni | Evet
Ekleme izni | Evet
Aynı anda okuma ve yazma izni | Hayır
stat() desteği | Hayır
unlink() desteği | Hayır
rename() desteği | Hayır
mkdir() desteği | Hayır
rmdir() desteği | Hayır

## İçindekiler

- file:// — Yerel dosya sistemine erişim
- http:// — HTTP'lere erişim
- ftp:// — FTP'lere Erişim
- php:// — Çeşitli G/Ç akımlarına erişim
- zlib:// — Sıkıştırma Akımları
- data:// — Data (RFC 2397)
- glob:// — Kalıpla eşleşen dosya yollarını bulur
- phar:// — PHP Arşivi
- ssh2:// — Güvenli Kabuk 2
- rar:// — RAR
- ogg:// — Ses akımları
- expect:// — Süreçlerle Etkileşim Akımları

- Temel Sözdizimi
  - PHP etiketleri
  - HTML'den Kaçmak
  - Deyim Ayırma
  - Açıklamalar
- Türler
  - Giriş
  - Tür Sistemi
  - null
  - bool
  - int
  - float
  - string
  - Sayısal Dizeler
  - array
  - object
  - Sayılamalar
  - resource
  - Geriçağırımlar / Çağrılılabilirler
  - mixed
  - void
  - never
  - parent, self, static
  - Singleton types
  - iterable
  - Tür bildirimleri
  - Tür Dönüşümü
- Değişkenler
  - Temeller
  - Öntanımlı Değişkenler
  - Değişken etki alanı
  - Değişken değişkenler
  - Dış Kaynaklı Değişkenler
- Sabitler
  - Söz dizimi
  - Öntanımlı Sabitler
  - Sihirli Sabitler
- İfadeler
- İşleçler
  - İşleç Önceliği
  - Aritmetik — Aritmetik İşleçler
  - Artırım ve Eksiltim — Artırım ve Eksiltim İşleçleri
  - Atama — Atama İşleçleri
  - Bitsel — Bitsel İşleçler
  - Karşılaştırma — Karşılaştırma İşleçleri
  - Hata Denetim — Hata Denetim İşleçleri
  - Çalıştırma — Çalıştırma İşleci
  - Mantıksal — Mantıksal İşleçler
  - Dizge — Dizge İşleçleri
  - Dizi — Dizi İşleçleri
  - Tür — Tür İşleçleri
  - İşlevsel Öğeler — Çağrılabilir Öğe İşleçleri
- Denetim Yapıları
  - Giriş
  - if
  - else
  - elseif/else if
  - Denetim yapıları için diğer sözdizimi
  - while
  - do-while
  - for
  - foreach
  - break
  - continue
  - switch
  - match
  - declare
  - return
  - require
  - include
  - require_once
  - include_once
  - goto
- İşlevler
  - Kullanıcı tanımlı işlevler
  - İşlev bağımsız değişkenleri
  - Dönen değerler
  - Değişken işlevler
  - Yerleşik işlevler
  - Anonim işlevler
  - Ok İşlevleri
  - Birinci sınıf çağrılabilir sözdizimi
- Sınıflar ve Nesneler
  - Giriş
  - Temel Kavramlar
  - Özellikler
  - Property Hooks
  - Sınıf Sabitleri
  - Otomatik Yüklenen Sınıflar
  - Kurucular ve Yıkıcılar
  - Görünürlük
  - Nesnelerin Kalıtımı
  - Etki Alanı Çözünürlük İşleci (::)
  - static Anahtar Sözcüğü
  - Sınıf Soyutlama
  - Nesne Arayüzleri
  - Nitelikler
  - Anonim Sınıflar
  - Aşırı Yükleme
  - Nesne Yineleme
  - Sihirli Yöntemler
  - final Anahtar Sözcüğü
  - Nesne Kopyalama
  - Nesnelerin Karşılaştırılması
  - Statik İçselleştirim
  - Nesneler ve Gönderimler
  - Nesne Dizgeleştirme — Oturumlardaki nesnelerin dizgeleştirilmesi
  - Çok Özgüllük ve Az Özgüllük
  - Lazy Objects
  - NYP Değişiklik Güncesi
- İsim Alanları
  - Giriş — İsim Alanlarına Giriş
  - İsim Alanları — İsim Alanlarının Tanımlanması
  - Alt İsim Alanları — Alt İsim Alanlarının Bildirilmesi
  - Birden fazla isim alanının aynı dosyada tanımlanması — Birden Fazla İsim Alanının Aynı Dosyada Tanımlanması
  - Temeller — İsim alanlarının kullanımı: Temeller
  - İsim alanları ve dinamik dil özellikleri
  - namespace sözcüğü ve __NAMESPACE__ — namespace sözcüğü ve __NAMESPACE__ sihirli sabiti
  - Takma ad ve İthal — İsim alanlarının kullanımı: İthal ve Takma ad
  - Küresel alan — Küresel Alan
  - Küresel alana son çare — İsim alanlarının kullanımı: Küresel alana son çare olarak küresel işlev ve sabitler
  - İsim çözünürlük kuralları
  - SSS — SSS: İsim alanları hakkında bilinmesi gerekenler
- Sayılamalar
  - Sayılamalara giriş
  - Temel Sayılamalar
  - Destekli Sayılamalar
  - Sayılama Yöntemleri
  - Statik Sayılama Yöntemleri
  - Sayılama Sabitleri
  - Nitelikler
  - Sabit ifadelerinde sayılama değerleri
  - Nesnelerden farkları
  - Değer Listeleme
  - Dizgeleştirme
  - - Sayılamalar neden genişletilemez?
  - Örnekler
- Hatalar
  - Temeller
  - PHP 7'de hatalar
- İstisnalar
  - İstisnaları Genişletmek
- Fiberler
- Üreteçler
  - Üreteçlere giriş
  - Generator sözdizimi
  - Üreteçlerin Iterator nesneleriyle karşılaştırılması
- Öznitelikler
  - Özniteliklere giriş
  - Öznitelik Sözdizimi
  - Özniteliklerin Yansıtma Arayüzü ile Okunması
  - Öznitelik Sınıflarının Bildirimi
- Gönderimlerle İlgili Herşey
  - Gönderim Nedir?
  - Gönderim Ne Yapar?
  - Gönderimler Ne Değildir?
  - Gönderimle Aktarım
  - Gönderimle Döndürme
  - Gönderimi Tanımsız Yapmak
  - Gönderimleri kullanan diğer oluşumlar
- Öntanımlı Değişkenler
  - Süper küreseller — Bütün etki alanlarında daima mevcut olan yerleşik değişkenler
  - $GLOBALS — Küresel alanda bulunan bütün değişkenleri içerir
  - $_SERVER — Sunucu ve işletme ortamı bilgisi
  - $_GET — HTTP GET değişkenleri
  - $_POST — HTTP POST değişkenleri
  - $_FILES — HTTP Dosya Yükleme değişkenleri
  - $_REQUEST — HTTP İstek değişkenleri
  - $_SESSION — Oturum değişkenleri
  - $_ENV — Ortam değişkenleri
  - $_COOKIE — HTTP Çerezleri
  - $php_errormsg — Önceki hata iletisi
  - $http_response_header — HTTP yanıt başlıkları
  - $argc — Betiğe geçirilen ifade sayısı
  - $argv — Betiğe geçirilen ifade dizisi
- Öntanımlı İstisnalar
  - Exception — Exception Sınıfı
  - ErrorException — ErrorException Sınıfı
  - ClosedGeneratorException — The ClosedGeneratorException class
  - Error
  - ArgumentCountError
  - ArithmeticError — ArithmeticError istisnası
  - AssertionError
  - DivisionByZeroError
  - CompileError
  - ParseError
  - TypeError
  - ValueError — ValueError istisnası
  - UnhandledMatchError — UnhandledMatchError istisnası
  - FiberError — FiberError istisnası
- Öntanımlı Arayüzler ve Sınıflar
  - Traversable — Traversable arayüzü
  - Iterator — Iterator Arayüzü
  - IteratorAggregate — IteratorAggregate Arayüzü
  - InternalIterator — InternalIterator sınıfı
  - Throwable — Throwable Arayüzü
  - Countable — The Countable interface
  - ArrayAccess — ArrayAccess arayüzü
  - Serializable — Serializable arayüzü
  - Closure — Closure sınıfı
  - stdClass — stdClass sınıfı
  - Generator — Generator sınıfı
  - Fiber — Fiber sınıfı
  - WeakReference — WeakReference sınıfı
  - WeakMap — WeakMap sınıfı
  - Stringable — Stringable arayüzü
  - UnitEnum — UnitEnum arayüzü
  - BackedEnum — BackedEnum arayüzü
  - SensitiveParameterValue — SensitiveParameterValue sınıfı
  - __PHP_Incomplete_Class — The __PHP_Incomplete_Class class
- Ön tanımlı Öznitelikler
  - Attribute — Attribute sınıfı
  - AllowDynamicProperties — AllowDynamicProperties sınıfı
  - Deprecated — The Deprecated attribute
  - Override — The Override attribute
  - ReturnTypeWillChange — ReturnTypeWillChange sınıfı
  - SensitiveParameter — SensitiveParameter sınıfı
- Bağlam seçenekleri ve bağımsız değişkenleri
  - Soket bağlamı seçenekleri — Soket bağlamı seçeneklerinin listesi
  - HTTP bağlamı seçenekleri — HTTP bağlamı seçeneklerinin listesi
  - FTP bağlamı seçenekleri — FTP bağlamı seçeneklerinin listesi
  - SSL bağlamı seçenekleri — SSL bağlamı seçeneklerinin listesi
  - Phar bağlam seçenekleri — Phar bağlamı seçeneklerinin listesi
  - Bağlam bağımsız değişkenleri — Bağlam bağımsız değişkeni listeleme
  - Zip bağlamı seçenekleri — Zip bağlamı seçeneklerinin listesi
  - Zlib bağlam seçenekleri — Zlib bağlam seçeneklerinin listesi
- Desteklenen Protokoller ve Sarmalayıcılar
  - file:// — Yerel dosya sistemine erişim
  - http:// — HTTP'lere erişim
  - ftp:// — FTP'lere Erişim
  - php:// — Çeşitli G/Ç akımlarına erişim
  - zlib:// — Sıkıştırma Akımları
  - data:// — Data (RFC 2397)
  - glob:// — Kalıpla eşleşen dosya yollarını bulur
  - phar:// — PHP Arşivi
  - ssh2:// — Güvenli Kabuk 2
  - rar:// — RAR
  - ogg:// — Ses akımları
  - expect:// — Süreçlerle Etkileşim Akımları

# Güvenlik

# Giriş

PHP güçlü bir dil ve yorumlayıcıdır. İster bir HTTP sunucusunun modülü olarak ister ayrı bir CGI çalıştırılabiliri olarak çalışıyor olsun, sunucu üzerinde ağ bağlantıları açabilir, dosyalara erişebilir ve onları çalıştırabilir. Herşeyi çalıştırılabilir yapan bu özellikler öntanımlı haliyle bir HTTP sunucusunu güvensiz duruma getirir. PHP, CGI programları yazmak için özellikle Perl ve C'den daha güvenli bir dil olması için tasarlanmıştır. Doğru derleme seçenekleri ile derlenir, doğru çalışma anı seçenekleriyle yapılandırılır ve uygun bir kodlama deneyimiyle kullanılırsa arzuladığınız güvenlik ve özgürlüğü size sunar.

PHP ile birçok şey yapmak mümkün olduğu gibi, ayarları da oldukça fazladır. Bu ayarların çokluğu size istediğiniz şekilde bir sunucu ortamını kurmanızı sağlarsa da bu seçeneklerle sunucunun yapılandırması bir araya geldiğinde güvensiz bir ortam oluşma riski anlamına da gelebilir.

PHP yapılandırmasındaki bu esneklik, kod esnekliğiyle rekabet halinde gelişir. PHP ile bir kabuk kullanıcısının tüm gücüne sahip eksiksiz sunucu uygulamaları geliştirlebileceği gibi sıkı bir şekilde denetlenen bir ortamda küçük bir güvenlik riskiyle sunucu taraflı sayfalar oluşturmakta da kullanılabilir. Bu ortamın nasıl kurulacağı ve güvenliğinin nasıl sağlanacağı büyük oranda PHP geliştiricisine bırakılmıştır.

Bu kısıma genel güvenlik tavsiyeleri vererek başlayacağız. Ardından değişik ayarların nasıl yapıldığına dair bilgiler verecek ve hangi güvenlik seviyesinde hangi güvenlik ayarlarının kullanılması gerektiğinden bahsedeceğiz.

# Genel değerlendirmeler

Tamamen güvenli ve korunaklı bir sistem oluşturduk diyebilmek neredeyse imkansızdır. Bu sebepten dolayı en uygun davranış riskleri ve kullanılabilirliği uygun şekilde dengelemek olmalıdır. Eğer kullanıcıların bilgi göndermeden önce parmak izi ve gözbebeği taraması gibi ileri güvenlikli bir sistemden geçmesi gerekirse, çok güvenli bir sistem oluşturulduğundan söz edebiliriz. Ancak bu şekilde kullanımı çok zor bir sistem halini alacaktır. Aynı şekilde basit bir amaç için hazırlanmış bir formu doldurmak çok zorsa ve vakit alıyorsa, bunu dolduran kullanıcı güvenliği atlatıp bazı kestirme yolları deneyerek formu göndermek isteyebilir.

En iyi güvenlik sisteminin yolu istenen güvenlik denetimlerinin kullanıcı çok uğraştırılıp bıktırılmadan, yapmak istediği şeye engel olunmadan kurulan bir sistemden geçer. Güvenliği etkileyen bazı saldırıların asıl amacı bazen güvenlik amaçlı kurulan bazı sistemlerin kullanıcıları bıktırması ve bunların kullanıcıyı farklı birşeyler yapmaya itmesidir.

Unutmayın ki, bir zincir ancak en zayıf halkası kadar güçlü olabilir. Tüm hareketleri, zaman, mekan, hareket türü gibi en ince ayrıntısına kadar günlüklere kaydetseniz bile kullanıcı sadece basit bir çerez ile doğrulanıyorsa, kullanıcılarla hareket günlükleri arasındaki ilişki zayıf olacaktır.

Yaptıklarınızı denerken, en basit sayfada bile tüm olasılıkları denemenin imkansız olduğunu unutmayınız. Uygulamanıza ulaşan bilgi şirketinizde çalışan bir tanıdıktan gelebileceği gibi, klavyenin üzerinde dolaşan bir kediden veya dünyanın öteki ucundan sistemlerde açıklar arayan sistem kırıcı birinden de gelebilir. Bu yüzden beklenmeyen bir bilgi geldiğinde nasıl davranılacağını önceden tespit edip, bu durumda kullanıcının uygulamayı kullanarak sisteme erişmesini engellemelisiniz.

Günümüz Genel Ağ'ı, kodunuzu kırarak, sitenizi çökerterek, uygunsuz içerik göndererek veya gününüzü bir şekilde ziyan ederek kendilerine isim yapmaya çalışan kişilerle doludur. Sitenizin küçük ya da büyük olmasının bir önemi yoktur, siz basitçe hatta kalmayı, bağlanacağınız bir sunucu olmasını hedeflersiniz fakat, çoğu kırıcı program için büyüklüğün önemi yoktur, basitçe devasa IP bloklarını tarayarak kendilerine kurban ararlar. Onların kurbanlarından biri olmamaya çalışın.

# Installed as CGI binary

## İçindekiler

- Possible attacks
- Case 1: only public files served
- Case 2: using cgi.force_redirect
- Case 3: setting doc_root or user_dir
- Case 4: PHP parser outside of web tree

## Possible attacks

Using PHP as a CGI binary is an option for setups that for some reason do not wish to integrate PHP as a module into server software (like Apache), or will use PHP with different kinds of CGI wrappers to create safe chroot and setuid environments for scripts. This setup usually involves installing executable php binary to the web server cgi-bin directory. CERT advisory » CA-96.11 recommends against placing any interpreters into cgi-bin. Even if the php binary can be used as a standalone interpreter, PHP is designed to prevent the attacks this setup makes possible:

- Accessing system files: http://my.host/cgi-bin/php?/etc/passwd The query information in a URL after the question mark (`?`) is passed as command line arguments to the interpreter by the CGI interface. Usually interpreters open and execute the file specified as the first argument on the command line. When invoked as a CGI binary, php refuses to interpret the command line arguments.
- Accessing any web document on server: http://my.host/cgi-bin/php/secret/doc.html The path information part of the URL after the PHP binary name, /secret/doc.html is conventionally used to specify the name of the file to be opened and interpreted by the CGI program. Usually some web server configuration directives (Apache: `Action`) are used to redirect requests to documents like http://my.host/secret/script.php to the PHP interpreter. With this setup, the web server first checks the access permissions to the directory /secret, and after that creates the redirected request http://my.host/cgi-bin/php/secret/script.php. Unfortunately, if the request is originally given in this form, no access checks are made by web server for file /secret/script.php, but only for the /cgi-bin/php file. This way any user able to access /cgi-bin/php is able to access any protected document on the web server. In PHP, runtime configuration directives cgi.force_redirect, doc_root and user_dir can be used to prevent this attack, if the server document tree has any directories with access restrictions. See below for the full explanation of the different combinations.

## Case 1: only public files served

If your server does not have any content that is not restricted by password or IP based access control, there is no need for these configuration options. If your web server does not allow you to do redirects, or the server does not have a way to communicate to the PHP binary that the request is a safely redirected request, you can enable the cgi.force_redirect ini directive. You still have to make sure your PHP scripts do not rely on one or another way of calling the script, neither by directly http://my.host/cgi-bin/php/dir/script.php nor by redirection http://my.host/dir/script.php.

Redirection can be configured in Apache by using `AddHandler` and `Action` directives (see below).

## Case 2: using `cgi.force_redirect`

The configuration directive cgi.force_redirect prevents anyone from calling php directly with a URL like http://my.host/cgi-bin/php/secretdir/script.php. Instead, PHP will only parse in this mode if it has gone through a web server redirect rule.

Usually the redirection in the Apache configuration is done with the following directives:

    Action php-script /cgi-bin/php
    AddHandler php-script .php

This option has only been tested with the Apache web server, and relies on Apache to set the non-standard CGI environment variable REDIRECT_STATUS on redirected requests. If your web server does not support any way of telling if the request is direct or redirected, you cannot use this option and you must use one of the other ways of running the CGI version documented here.

## Case 3: setting doc_root or user_dir

To include active content, like scripts and executables, in the web server document directories is sometimes considered an insecure practice. If, because of some configuration mistake, the scripts are not executed but displayed as regular HTML documents, this may result in leakage of intellectual property or security information like passwords. Therefore many sysadmins will prefer setting up another directory structure for scripts that are accessible only through the PHP CGI, and therefore always interpreted and not displayed as such.

Also if the method for making sure the requests are not redirected, as described in the previous section, is not available, it is necessary to set up a script doc_root that is different from web document root.

You can set the PHP script document root by the configuration directive doc_root in the configuration file, or you can set the environment variable PHP_DOCUMENT_ROOT. If it is set, the CGI version of PHP will always construct the file name to open with this `doc_root` and the path information in the request, so you can be sure no script is executed outside this directory (except for `user_dir` below).

Another option usable here is user_dir. When `user_dir` is unset, only thing controlling the opened file name is `doc_root`. Opening a URL like http://my.host/~user/doc.php does not result in opening a file under users home directory, but a file called ~user/doc.php under `doc_root` (yes, a directory name starting with a tilde [`~`]).

If `user_dir` is set to for example public_php, a request like http://my.host/~user/doc.php will open a file called doc.php under the directory named public_php under the home directory of the user. If the home of the user is /home/user, the file executed is /home/user/public_php/doc.php.

`user_dir` expansion happens regardless of the `doc_root` setting, so you can control the document root and user directory access separately.

## Case 4: PHP parser outside of web tree

A very secure option is to put the PHP parser binary somewhere outside of the web tree of files. In /usr/local/bin, for example. The only real downside to this option is that you will now have to put a line similar to:

    #!/usr/local/bin/php

as the first line of any file containing PHP tags. You will also need to make the file executable. That is, treat it exactly as you would treat any other CGI script written in Perl or sh or any other common scripting language which uses the `#!` shell-escape mechanism for launching itself.

To get PHP to handle PATH_INFO and PATH_TRANSLATED information correctly with this setup, the cgi.discard_path ini directive has to be enabled.

# Apache'ye modül olarak kurulum

PHP bir Apache modülü olarak kullanıldığında Apache kullanıcısının (Apache yapılandırma dosyasında user yönergesine bakın) yetkilerini miras alır. Bu kullanıcı genellikle 'nobody' kullanıcısı olur fakat bunun güvenlikle ve kimlik doğrulama ile ilgili olumsuz etkileri olabilir. Örneğin PHP'yi bir veritabanına erişmek için kullanıyorsanız ve bu veritabanına yerleşik olarak erişim izniniz yoksa "nobody" kullanıcısına bu veritabanına erişim izni vermek zorunda kalırsınız. Bu, kötücül bir betiğin bir kullanıcı ismi ve parola belirtmeksizin veritabanına erişebilmesi ve değişiklik yapabilmesi anlamına gelir. Bir ağ örümceğinin veritabanı yönetici sayfasına rast gelmesi ve tüm veritabanınızı yok etmesi çok mümkündür. Bu gibi durumlardan Apache kimlik doğrulaması ile korunabileceğiniz gibi LDAP, .htaccess dosyaları, vs. kullanarak kendi erişim modelinizi tasarlayabilir ve bu kodu PHP betiklerinize dahil edebilirsiniz.

Güvenliğin sağlanması, PHP'nin tamamen etkisiz hale getirilmesi, dosya yazma, veritabanı erişiminin kısıtlanması demek değildir. Bunlar sağlanırsa güvenli bir işlem ortamı oluşmuş olabilir ancak PHP özellikleri kaybolmuş olur.

Sık yapılan bir güvenlik hatası Apache'yi root kullanıcısının aidiyetinde çalıştırmak veya Apache'nin yeteneklerini başka yollarla arttırmaktır.

Apache kullanıcısının yetkilerini root seviyesine yükseltmek, oldukça tehlikeli olup sistemin tamamını tehlikeye atmak demektir. Dolayısıyla, güvenlik profesyoneli olmayanların sudo veya chroot yapmayı ya da Apache'yi root olarak başka bir şekilde çalıştırmayı düşünmemesi gerekir.

PHP bazı basit çözümler içermektedir. Örneğin, open_basedir kullanarak PHP tarafından kullanımına izin verilen dizinlere erişimi denetleyebilir ve kısıtlayabilirsiniz. Ayrıca, sadece Apache'nin erişimine açık bölgeler tanımlayabilir, kullanıcılara ve sisteme ait dosyalara erişimi kısıtlayabilirsiniz.

# Oturum Güvenliği

HTTP oturum yönetiminin güvenliğini sağlamak önemlidir. Oturum ile ilgili güvenlik Oturum bölümünde Oturum Güvenliği başlığı altında açıklanmıştır.

# Dosya Sistemi Güvenliği

## İçindekiler

- Boş baytlı girdiler

PHP, çoğu sunucu sisteminde bulunan dizin ve dosya erişim izinleri ile ilgili yerleşik güvenlik önlemlerinden etkilenir. Bu izinlerle dosya sisteminden kimin hangi dosyaları okuyabileceğini denetleyebilirsiniz. Dosya sistemine erişimi olan tüm kullanıcıların sadece herkesçe okunabilen dosyaları okuyabilmesini sağlamalısınız.

PHP, dosya sistemine kullanıcı seviyesinde düşük seviyeli erişime izin verecek şekilde tasarlandığından, /etc/passwd gibi sistem dosyalarını okumak, eternet bağlantılarını değiştirmek, yazıcılara iş göndermek ve benzerleri tamamen mümkündür. Bu durum sizin bazı önlemler almanızı gerektirir; dosyaları kimlerin okuyabileceğine ve kimlerin yazabileceğine karar vermeniz gerekir.

Örneğin, aşağıdaki betiği ele alalım. Kullanıcı, ev dizinindeki bazı dosyaları silmek istiyor olsun. Bir sayfanın, kullanıcının ev dizinindeki bazı dosyaları Apache kullanıcısına sildirmek için bir arayüz olarak kullanıldığını varsayalım.

Örnek 1 - Değişkenler başınıza iş açabilir...

    <?php

    // Kullanıcının ev dizininden bir dosya silelim
    $kullanıcı = $_POST['kullanıcının_belirttiği_isim'];
    $kullanıcı_dosyası = $_POST['kullanıcının_belirttiği_dosyaismi'];
    $evdizini  = "/home/$kullanıcı";

    unlink("$evdizini/$kullanıcı_dosyası");

    echo "Dosya silindi!";

    ?>

Birine ait bir kullanıcı ve dosya ismi bir formdan gönderilebileceğinden bunu yapmaya izni olmayan biri bile bu betikle dosya silebilir. Bu durumda kimlik doğrulaması yapabilen bir betik kullanmak daha iyi olabilir. Birinin formu kullanarak `"../etc/"` ve `"passwd"` girdiğini varsayalım ve betikte neler oluyor bakalım:

Örnek 2 ... Bir dosya sistemi saldırısı

    <?php

    // PHP kullanıcısının erişebildiği bir yerden bir dosyayı silelim.
    // PHP root yetkilerine sahip olsun.
    $kullanıcı = $_POST['kullanıcının_belirttiği_isim']; // "../etc"
    $kullanıcı_dosyası = $_POST['kullanıcının_belirttiği_dosyaismi']; // "passwd"
    $evdizini  = "/home/$kullanıcı"; // "/home/../etc"

    unlink("$evdizini/$kullanıcı_dosyası"); // "/home/../etc/passwd"

    echo "Dosya silindi!";

    ?>

Bu saldırıyı önlemek için dikkate alacağınız iki ölçüt vardır.

- PHP çalıştırılabilirini çalıştıran kullanıcının izinlerini sınırlamak.
- Form ile gönderilen tüm değişkenleri denetlemek.

Düzeltilmiş betik:

Örnek 3 - Daha güvenilir bir dosya silme betiği

    <?php

    // PHP kullanıcısının erişebildiği bir dosyayı silelim.
    $kullanıcı = $_SERVER['REMOTE_USER']; // kimlik doğrulaması yapıyoruz
    $dosya = basename($_POST['kullanıcının_belirttiği_dosyaismi']);
    $evdizini  = "/home/$kullanıcı";

    $dosyayolu = "$evdizini/$dosya";

    if (file_exists($dosyayolu) && unlink($dosyayolu)) {
        $günce = "$dosyayolu silindi\n";
    } else {
        $günce = "$dosyayolu silinemedi\n";
    }
    $dt = fopen("/home/logging/filedelete.log", "a");
    fwrite($dt, $günce);
    fclose($dt);

    echo htmlentities($logstring, ENT_QUOTES);

    ?>

Ancak, bu bile kusurları örtmeye yetmez. Eğer kimlik doğrulama sisteminiz kullanıcıya kendi ev dizinini belirtmesine izin veriyorsa ve kullanıcı `"../etc/"` dizinine oturum açmayı istiyorsa sistem hala tehdit altında demektir. Bu nedenle, sınanacak noktaları genişletmelisiniz:

Örnek 4 - Daha da güvenilir bir dosya silme betiği

    <?php

    $kullanıcı = $_SERVER['REMOTE_USER']; // kimlik doğrulaması yapıyoruz
    $dosya = $_POST['kullanıcının_belirttiği_dosyaismi'];
    $evdizini  = "/home/$kullanıcı";

    $dosyayolu = "$evdizini/$dosya";

    if (!ctype_alnum($kullanıcı) ||
        !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $dosyayolu)) {
            die("Kullanıcı veya dosya ismi hatalı");
    }

    // vs...

    ?>

Kullandığınız işletim sistemine bağlı olarak, dikkate alacağınız geniş bir dosya isimleri yelpazesi vardır: aygıt dosyaları (/dev/ veya COM1 gibi), yapılandırma dosyaları (/etc/ ve `.ini` dosyaları), bildik saklama alanları (/home/, My Documents), vb. Bu nedenle, açıkça izin verilenler dışında kalan herşeyi yasaklamak en kolayıdır.

## Boş baytlı girdiler

PHP, dosya sistemi ile ilgili işlemler için kod seviyesinde C işlevlerini kullandığından boş baytlı (\0) dizgeler beklenmedik davranışlara yol açabilir. Boş bayt, C'de dizgeleri sonlandırmak için kullanıldığından boş bayt içeren dizgelerin tamamı değil, boş bayta kadar olan bölüm işleme sokulur. Aşağıdaki örnekte bunun sebep olduğu bir sorun ele alınmıştır:

Örnek 1 - Boş baytlardan olumsuz etkilenen bir betik

    <?php

    $dosya = $_GET['dosya']; // "../../etc/passwd\0"
    if (file_exists('/home/siteler/'. $dosya . '.php')) {
        /* /home/siteler/../../etc/passwd mevcut olduğundan
           file_exists işlevi TRUE döndürür */
        include '/home/siteler/'. $dosya . '.php';
        // /etc/passwd dosyası betiğe dahil edildi
    }

    ?>

Bu bakımdan, bir dosya sistemi işleminde kullanılan her dizge daima denetlenmelidir. Aşağıda, önceki örneğin iyileştirilmişi verilmiştir:

Örnek 2 - Girdiyi doğru şekilde ele almak

    <?php

    $dosya = $_GET['dosya'];

    // Kabul edilebilir değerlerin listesi
    switch ($file) {
        case 'main':
        case 'foo':
        case 'bar':
            include '/home/siteler/include/'. $dosya .'.php';
            break;
        default:
            include '/home/siteler/include/main.php';
    }

    ?>

# Database Security

## İçindekiler

- Designing Databases
- Connecting to Database
- Encrypted Storage Model
- SQL Injection

Nowadays, databases are cardinal components of any web based application by enabling websites to provide varying dynamic content. Since very sensitive or secret information can be stored in a database, you should strongly consider protecting your databases.

To retrieve or to store any information you need to connect to the database, send a legitimate query, fetch the result, and close the connection. Nowadays, the commonly used query language in this interaction is the Structured Query Language (SQL). See how an attacker can tamper with an SQL query.

As you can surmise, PHP cannot protect your database by itself. The following sections aim to be an introduction into the very basics of how to access and manipulate databases within PHP scripts.

Keep in mind this simple rule: defense in depth. The more places you take action to increase the protection of your database, the less probability of an attacker succeeding in exposing or abusing any stored information. Good design of the database schema and the application deals with your greatest fears.

## Designing Databases

The first step is always to create the database, unless you want to use one from a third party. When a database is created, it is assigned to an owner, who executed the creation statement. Usually, only the owner (or a superuser) can do anything with the objects in that database, and in order to allow other users to use it, privileges must be granted.

Applications should never connect to the database as its owner or a superuser, because these users can execute any query at will, for example, modifying the schema (e.g. dropping tables) or deleting its entire content.

You may create different database users for every aspect of your application with very limited rights to database objects. The most required privileges should be granted only, and avoid that the same user can interact with the database in different use cases. This means that if intruders gain access to your database using your applications credentials, they can only effect as many changes as your application can.

## Connecting to Database

You may want to establish the connections over SSL to encrypt client/server communications for increased security, or you can use ssh to encrypt the network connection between clients and the database server. If either of these is used, then monitoring your traffic and gaining information about your database will be difficult for a would-be attacker.

## Encrypted Storage Model

SSL/SSH protects data travelling from the client to the server: SSL/SSH does not protect persistent data stored in a database. SSL is an on-the-wire protocol.

Once an attacker gains access to your database directly (bypassing the webserver), stored sensitive data may be exposed or misused, unless the information is protected by the database itself. Encrypting the data is a good way to mitigate this threat, but very few databases offer this type of data encryption.

The easiest way to work around this problem is to first create your own encryption package, and then use it from within your PHP scripts. PHP can assist you in this with several extensions, such as OpenSSL and Sodium, covering a wide variety of encryption algorithms. The script encrypts the data before inserting it into the database, and decrypts it when retrieving. See the references for further examples of how encryption works.

### Hashing

In the case of truly hidden data, if its raw representation is not needed (i.e. will not be displayed), hashing should be taken into consideration. The well-known example for hashing is storing the cryptographic hash of a password in a database, instead of the password itself.

The password functions provide a convenient way to hash sensitive data and work with these hashes.

password_hash() is used to hash a given string using the strongest algorithm currently available and password_verify() checks whether the given password matches the hash stored in database.

Örnek 1 Hashing password field

    <?php

    // storing password hash
    $query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
                pg_escape_string($username),
                password_hash($password, PASSWORD_DEFAULT));
    $result = pg_query($connection, $query);

    // querying if user submitted the right password
    $query = sprintf("SELECT pwd FROM users WHERE name='%s';",
                pg_escape_string($username));
    $row = pg_fetch_assoc(pg_query($connection, $query));

    if ($row && password_verify($password, $row['pwd'])) {
        echo 'Welcome, ' . htmlspecialchars($username) . '!';
    } else {
        echo 'Authentication failed for ' . htmlspecialchars($username) . '.';
    }

    ?>

## SQL Injection

SQL injection is a technique where an attacker exploits flaws in application code responsible for building dynamic SQL queries. The attacker can gain access to privileged sections of the application, retrieve all information from the database, tamper with existing data, or even execute dangerous system-level commands on the database host. The vulnerability occurs when developers concatenate or interpolate arbitrary input in their SQL statements.

Örnek 1 Splitting the result set into pages ... and making superusers (PostgreSQL)

In the following example, user input is directly interpolated into the SQL query allowing the attacker to gain a superuser account in the database.

    <?php

    $offset = $_GET['offset']; // beware, no input validation!
    $query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
    $result = pg_query($conn, $query);

    ?>

Normal users click on the 'next', 'prev' links where the $offset is encoded into the URL. The script expects that the incoming $offset is a number. However, what if someone tries to break in by appending the following to the URL

    0;
    insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
        select 'crack', usesysid, 't','t','crack'
        from pg_shadow where usename='postgres';
    --

If it happened, the script would present a superuser access to the attacker. Note that `0;` is to supply a valid offset to the original query and to terminate it.

> Bilginize:

> It is a common technique to force the SQL parser to ignore the rest of the query written by the developer with `--` which is the comment sign in SQL.

A feasible way to gain passwords is to circumvent your search result pages. The only thing the attacker needs to do is to see if there are any submitted variables used in SQL statements which are not handled properly. These filters can be set commonly in a preceding form to customize `WHERE, ORDER BY, LIMIT` and `OFFSET` clauses in `SELECT` statements. If your database supports the `UNION` construct, the attacker may try to append an entire query to the original one to list passwords from an arbitrary table. It is strongly recommended to store only secure hashes of passwords instead of the passwords themselves.

Örnek 2 Listing out articles ... and some passwords (any database server)

    <?php

    $query  = "SELECT id, name, inserted, size FROM products
               WHERE size = '$size'";
    $result = odbc_exec($conn, $query);

    ?>

The static part of the query can be combined with another `SELECT` statement which reveals all passwords:

    '
    union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
    --

`UPDATE` and `INSERT` statements are also susceptible to such attacks.

Örnek 3 From resetting a password ... to gaining more privileges (any database server)

    <?php
    $query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
    ?>

If a malicious user submits the value `' or uid like'%admin%` to $uid to change the admin's password, or simply sets $pwd to `hehehe', trusted=100, admin='yes` to gain more privileges, then the query will be twisted:

    <?php

    // $uid: ' or uid like '%admin%
    $query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%';";

    // $pwd: hehehe', trusted=100, admin='yes
    $query = "UPDATE usertable SET pwd='hehehe', trusted=100, admin='yes' WHERE
    ...;";

    ?>

While it remains obvious that an attacker must possess at least some knowledge of the database architecture to conduct a successful attack, obtaining this information is often very simple. For example, the code may be part of an open-source software and be publicly available. This information may also be divulged by closed-source code - even if it's encoded, obfuscated, or compiled - and even by your own code through the display of error messages. Other methods include the use of typical table and column names. For example, a login form that uses a 'users' table with column names 'id', 'username', and 'password'.

Örnek 4 Attacking the database host operating system (MSSQL Server)

A frightening example of how operating system-level commands can be accessed on some database hosts.

    <?php

    $query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
    $result = mssql_query($query);

    ?>

If attacker submits the value `a%' exec master..xp_cmdshell 'net user test testpass /ADD' --` to $prod, then the $query will be:

    <?php

    $query  = "SELECT * FROM products
               WHERE id LIKE '%a%'
               exec master..xp_cmdshell 'net user test testpass /ADD' --%'";
    $result = mssql_query($query);

    ?>

MSSQL Server executes the SQL statements in the batch including a command to add a new user to the local accounts database. If this application were running as `sa` and the MSSQLSERVER service was running with sufficient privileges, the attacker would now have an account with which to access this machine.

> Bilginize:

> Some examples above are tied to a specific database server, but it does not mean that a similar attack is impossible against other products. Your database server may be similarly vulnerable in another manner.

Image courtesy of » xkcd

### Avoidance Techniques

The recommended way to avoid SQL injection is by binding all data via prepared statements. Using parameterized queries isn't enough to entirely avoid SQL injection, but it is the easiest and safest way to provide input to SQL statements. All dynamic data literals in `WHERE`, `SET`, and `VALUES` clauses must be replaced with placeholders. The actual data will be bound during the execution and sent separately from the SQL command.

Parameter binding can only be used for data. Other dynamic parts of the SQL query must be filtered against a known list of allowed values.

Örnek 5 Avoiding SQL injection by using PDO prepared statements

    <?php

    // The dynamic SQL part is validated against expected values
    $sortingOrder = $_GET['sortingOrder'] === 'DESC' ? 'DESC' : 'ASC';
    $productId = $_GET['productId'];
    // The SQL is prepared with a placeholder
    $stmt = $pdo->prepare("SELECT * FROM products WHERE id LIKE ? ORDER BY price {$sortingOrder}");
    // The value is provided with LIKE wildcards
    $stmt->execute(["%{$productId}%"]);

    ?>

Prepared statements are provided by PDO, by MySQLi, and by other database libraries.

SQL injection attacks are mainly based on exploiting the code not being written with security in mind. Never trust any input, especially from the client side, even though it comes from a select box, a hidden input field, or a cookie. The first example shows that such a simple query can cause disasters.

A defense-in-depth strategy involves several good coding practices:

- Never connect to the database as a superuser or as the database owner. Use always customized users with minimal privileges.
- Check if the given input has the expected data type. PHP has a wide range of input validating functions, from the simplest ones found in Variable Functions and in Character Type Functions (e.g. is_numeric(), ctype_digit() respectively) and onwards to the Perl Compatible Regular Expressions support.
- If the application expects numerical input, consider verifying data with ctype_digit(), silently change its type using settype(), or use its numeric representation by sprintf().
- If the database layer doesn't support binding variables then quote each non-numeric user-supplied value that is passed to the database with the database-specific string escape function (e.g. mysql_real_escape_string(), sqlite_escape_string(), etc.). Generic functions like addslashes() are useful only in a very specific environment (e.g. MySQL in a single-byte character set with disabled NO_BACKSLASH_ESCAPES), so it is better to avoid them.
- Do not print out any database-specific information, especially about the schema, by fair means or foul. See also Error Reporting and Error Handling and Logging Functions.

Besides these, you benefit from logging queries either within your script or by the database itself, if it supports logging. Obviously, the logging is unable to prevent any harmful attempt, but it can be helpful to trace back which application has been circumvented. The log is not useful by itself but through the information it contains. More detail is generally better than less.

# Error Reporting

With PHP security, there are two sides to error reporting. One is beneficial to increasing security, the other is detrimental.

A standard attack tactic involves profiling a system by feeding it improper data, and checking for the kinds, and contexts, of the errors which are returned. This allows the system cracker to probe for information about the server, to determine possible weaknesses. For example, if an attacker had gleaned information about a page based on a prior form submission, they may attempt to override variables, or modify them:

Örnek 1 Attacking Variables with a custom HTML page

    <form method="post" action="attacktarget?username=badfoo&amp;password=badfoo">
    <input type="hidden" name="username" value="badfoo" />
    <input type="hidden" name="password" value="badfoo" />
    </form>

The PHP errors which are normally returned can be quite helpful to a developer who is trying to debug a script, indicating such things as the function or file that failed, the PHP file it failed in, and the line number which the failure occurred in. This is all information that can be exploited. It is not uncommon for a php developer to use show_source(), highlight_string(), or highlight_file() as a debugging measure, but in a live site, this can expose hidden variables, unchecked syntax, and other dangerous information. Especially dangerous is running code from known sources with built-in debugging handlers, or using common debugging techniques. If the attacker can determine what general technique you are using, they may try to brute-force a page, by sending various common debugging strings:

Örnek 2 Exploiting common debugging variables

    <form method="post" action="attacktarget?errors=Y&amp;showerrors=1&amp;debug=1">
    <input type="hidden" name="errors" value="Y" />
    <input type="hidden" name="showerrors" value="1" />
    <input type="hidden" name="debug" value="1" />
    </form>

Regardless of the method of error handling, the ability to probe a system for errors leads to providing an attacker with more information.

For example, the very style of a generic PHP error indicates a system is running PHP. If the attacker was looking at an `.html` page, and wanted to probe for the back-end (to look for known weaknesses in the system), by feeding it the wrong data they may be able to determine that a system was built with PHP.

A function error can indicate whether a system may be running a specific database engine, or give clues as to how a web page or programmed or designed. This allows for deeper investigation into open database ports, or to look for specific bugs or weaknesses in a web page. By feeding different pieces of bad data, for example, an attacker can determine the order of authentication in a script, (from the line number errors) as well as probe for exploits that may be exploited in different locations in the script.

A filesystem or general PHP error can indicate what permissions the web server has, as well as the structure and organization of files on the web server. Developer written error code can aggravate this problem, leading to easy exploitation of formerly "hidden" information.

There are three major solutions to this issue. The first is to scrutinize all functions, and attempt to compensate for the bulk of the errors. The second is to disable error reporting entirely on the running code. The third is to use PHP's custom error handling functions to create your own error handler. Depending on your security policy, you may find all three to be applicable to your situation.

One way of catching this issue ahead of time is to make use of PHP's own error_reporting(), to help you secure your code and find variable usage that may be dangerous. By testing your code, prior to deployment, with `E_ALL`, you can quickly find areas where your variables may be open to poisoning or modification in other ways. Once you are ready for deployment, you should either disable error reporting completely by setting error_reporting() to 0, or turn off the error display using the php.ini option `display_errors`, to insulate your code from probing. If you choose to do the latter, you should also define the path to your log file using the `error_log` ini directive, and turn `log_errors` on.

Örnek 3 Finding dangerous variables with E_ALL

    <?php
    if ($username) {  // Not initialized or checked before usage
        $good_login = 1;
    }
    if ($good_login == 1) { // If above test fails, not initialized or checked before usage
        readfile ("/highly/sensitive/data/index.html");
    }
    ?>

# Kullanıcıdan Gelen Bilgi

PHP de yazılmış bir uygulamanın en zayıf noktası, dilin kendisinde olan bir sorun değil, yazılan uygulamanın bazı varsayımlara dayanarak güvenliği göz önünde bulundurmamasıdır. Bundan dolayı bir uygulama yazarken güvenliğe önem vermeli ve kullanıcıdan gelen bilginin varsayıma dayanmadan denetlenmesini sağlamasınız.

Örnek 1 - Tehlikeli Değişken Kullanımı

    <?php
    // kullanıcının ev dizininden bir dosyayı silelim...
    // acaba başka birininkini mi silecek?
    unlink ($fena_veri);

    // Girişle ilgili kayıt tutalım...
    // acaba /etc/passwd dosyasına mı yazacak?
    fwrite ($fp, $fena_veri);

    // Denemek için birşeyler çalıştıralım...
    // acaba tüm dosyaları silecek bir 'rm -rf' komutu mu?
    exec ($fena_veri);

    ?>

Kod yazarken her zaman yazdıklarınızı dikkatlice inceleyip, kullanıcıdan gelen bilgilerin doğru ve tam şekilde denetlenip onaylandığına emin olmanız gerekir. Kullanıcıdan gelen bilgiyi alıp işleme koyduğunuz her durumda kendinize şu soruları sorabilirsiniz:

- Bu betik benim istemediğim dosyalara erişim, değişiklik veya silme imkanı veriyor mu?
- Beklenmeyen bir bilgi geldiğinde de istenilen işlem yapılacak mı?
- Bu betik başka bir amaç için kullanılabilir mi?
- Bu betik sistemde varolan başka betiklerle birlikte kötü amaçlı kullanılabilir mi?
- Yapılan işlemler daha sonra inceleme amacıyla kayda alınacak mı?

Yaptığınız projenin uygunluğuna göre kod yazmadan önce ve yazarken bu soruları sık sık kendinize sormanız, proje bittiğinde değerlendirme yapıp değişiklikler yapmanızdan çok daha faydalı olacaktır. Bu sayede proje tasarımını güvenlik düşünülerek yapmış olacak ve daha sonra güvenlik dolayısıyla ciddi değişiklikler yapma zorunluluğunuz ortadan kalkacaktır. Güvenliğe vereceğiniz öncelikli önem, daha sonra yapacağınız ve güvenliği riske atacak değişikliklerden çok daha faydalıdır.

Belirtilen bir değişkenin değerini, kaynağı veya geçerliliği bozacağını düşündüğünüz register_globals, magic_quotes ve benzeri ayarlarları kapatmanız iyi olabilir. Hata bildirim kipi 'error_reporting(E_ALL)' kullanımı, aynı zamanda uyarıları da göstereceği için kodunuzda sorun olup olmadığı hakkında daha iyi bilgi verebilir.

# PHP'yi gizlemek

Bazı şeyleri gizleyerek güvenlik sağlama girişimleri en alt düzeydeki çabalardır. Ancak bazı durumlarda en küçük güvenlik arttırıcı önlem bile yararlı olabilir.

Bir kaç basit teknikle PHP'yi gizleyebilir, sisteminizin zayıflıklarını keşfetmeye çalışan bir saldırganı belki de yavaşlatabilirsiniz. php.ini dosyanızda `expose_php = off` yaparak bir saldırganın erişebileceği bilgiyi en aza indirebilirsiniz.

Başka bir yol da HTTP sunucusuna PHP kodu olarak başka dosya uzantıları belirtmektir. Bu işlem Apache yapılandırma dosyasında veya .htaccess dosyalarında yapılabilir. Yanıltıcı dosya uzantılarını şöyle kullanabilirsiniz:

Örnek 1 - PHP'yi başka bir dil olarak göstermek

    # PHP kodlarını başka bir dilin kodları gibi gösterelim
    AddType application/x-httpd-php .asp .py .pl

Veya tamamen gizleyelim:

Örnek 2 - PHP uzantısı olarak bilinmeyen bir uzantı kullanmak

    # PHP kodunu türü bilinmeyen bir dosya gibi gösterelim
    AddType application/x-httpd-php .hop .yep

Ya da HTML kodu gibi gösterek gizleyelim. Ancak tüm HTML dosyalarını PHP işleyeceği için bu bir miktar başarım kaybına sebep olur:

Örnek 3 - PHP uzantısı olarak HTML uzantılarını kullanmak

    # Tüm PHP kodu HTML kodu gibi görünsün
    AddType application/x-httpd-php .htm .html

Bunun verimli çalışması için tüm PHP dosyalarınızın uzantılarını yukardaki uzantılarla değiştirmeniz gerekir. Dosya adı değiştirme zorunluluğu için bu alt düzey güvenlik önleminin size çıkardığı bir zorluktur diyebiliriz.

# Güncel Tutmak

PHP, diğer büyük sistemler gibi devamlı ilerlemeler ve yenilikler içermektedir. Her yeni sürümde sistemin güvenliğini ve kararlılığını etkileyen yapılandırma kazalarını ve diğer açıkları kapatmak veya güvenliği arttırmak amacıyla mutlaka büyük ya da küçük değişiklikler ortaya çıkmaktadır.

Yapılması gereken en akılcı yaklaşım, benzeri diğer sistem secviyesinde betik dilleri ve programlarında olduğu gibi, sık sık güncellemeleri takip etmek ve kullanılan sürüme göre daha yeni bir sürüme geçiş yapmak olmalıdır.

- Giriş
- Genel değerlendirmeler
- Installed as CGI binary
  - Possible attacks
  - Case 1: only public files served
  - Case 2: using cgi.force_redirect
  - Case 3: setting doc_root or user_dir
  - Case 4: PHP parser outside of web tree
- Apache'ye modül olarak kurulum
- Oturum Güvenliği
- Dosya Sistemi Güvenliği
  - Boş baytlı girdiler
- Database Security
  - Designing Databases
  - Connecting to Database
  - Encrypted Storage Model
  - SQL Injection
- Error Reporting
- Kullanıcıdan Gelen Bilgi
- PHP'yi gizlemek
- Güncel Tutmak

# Özellikler

# PHP ile HTTP Kimlik Doğrulaması

header() işlevi kullanılarak istemci tarayıcısına "Kimlik Doğrulaması Gerekli" (`"Authentication Required"`) iletisini göndererilir ve bunun sonucunda Kullanıcı Adı/Parola giriş penceresi açılır. Kullanıcı kullanıcı adı ve parolasını girdiğinde, PHP betiğini içeren URL, kullanıcı adı, parola ve kimlik doğrulama türünü atayan PHP_AUTH_USER, PHP_AUTH_PW ve AUTH_TYPE öntanımlı değişkenleri ile tekrar çağrılır. Bu öntanımlı değişkenler $_SERVER dizileri içinde bulunur. Sadece "Temel" (`Basic`) ve kimlik doğrulama yöntemi desteklenir. Daha fazla bilgi için header() işlevine bakınız.

İstemci sayfasını kimlik doğrulamaya zorlayacak örnek betik aşağıdaki gibidir:

Örnek 1 - Temel HTTP Kimlik Doğrulaması örneği

    <?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('WWW-Authenticate: Basic realm="Benim bölgem"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Kullanıcı İptal düğmesine basınca çıkacak metin';
        exit;
    } else {
        echo "<p>Merhaba {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>Parola olarak {$_SERVER['PHP_AUTH_PW']} verdiniz.</p>";
    }
    ?>

> Bilginize: Uyumluluk Bilgisi

> Lütfen HTTP başlık satırlarını kodlarken dikkatli olun. Bütün istemcilerle uyumluluğu garantilemek için, "Basic" anahtar sözcüğünün "B" harfi büyük yazılmalı, realm metni çift tırnak (tek tırnak değil) ile yazılmalı, ve HTTP/1.0 401 başlık satırındaki 401 kodundan önce tam olarak bir adet boşluk olmalıdır. Kimlik doğrulama bağımsız değişkenleri virgülle ayrılmış olmalıdır.

Yukarıdaki örnekte yapıldığı gibi sadece PHP_AUTH_USER ve PHP_AUTH_PW yazdırmak yerine, kullanıcı adı ve parolasının doğruluğunu denetlemek isteyebilirsiniz. Bunun için belki bir veritabanı sorgusu gönderebilir veya kullanıcıyı bir dbm dosyası içinde arayabilirsiniz.

Burada hatalı Internet Explorer tarayıcılarına dikkat ediniz. Başlıkların sırası konusunda çok seçici görünürler. WWW-Authenticate başlığını `HTTP/1.0 401` başlığından önce göndermek hileye neden olabilir.

> Bilginize: Yapılandırma Bilgisi

> PHP harici kimlik doğrulamasının etkin olup olmadığnı tespit etmek için `AuthType` yönergesininin varlığını bakar.

Yukarıdaki örnek, aynı sunucudaki kimlik doğrulamalı URL'lerden girilen parolaları çalmak için kimlik doğrulamasız bir URL'yi kullanmak isteyenleri önlemez.

Hem Netscape Navigator hem de Internet Explorer, 401 sunucu yanıtını almak için yerel tarayıcı penceresinin kimlik doğrulama önbelleğini temizler. Bu işlem, kullanıcıları tekrar kullanıcı adı ve parolasını girmeye zorlayacak şekilde "oturumu kapatır". Bazıları bunu "zaman aşımlı" kullanıcı girişi için kullanırlar veya bir "Çıkış" düğmesi sunarlar.

Örnek 2 - Yeni kullanıcı adı va parolası girmeye zorlayan bir HTTP kimlik doğrulama örneği

    <?php
    function authenticate() {
        header('WWW-Authenticate: Basic realm="Kimlik Doğrulaması Deneme Sistemi"');
        header('HTTP/1.0 401 Unauthorized');
        echo "Bu kaynağa erişmek için geçerli bir kullanıcı adı ve " .
             "parolası girmelisiniz.\n";
        exit;
    }

    if (!isset($_SERVER['PHP_AUTH_USER']) ||
        ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
        authenticate();
    } else {
        echo "<p>Merhaba: " . htmlspecialchars($_SERVER['PHP_AUTH_USER']) . "<br />";
        echo "Eski: " . htmlspecialchars($_REQUEST['OldAuth']);
        echo "<form action='' method='post'>\n";
        echo "<input type='hidden' name='SeenBefore' value='1' />\n";
        echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
        echo "<input type='submit' value='Kimliği Yeniden Doğrula />\n";
        echo "</form></p>\n";
    }
    ?>

Bu davranış şekli HTTP Temel kimlik doğrulama standardı için gerekli değildir, bu nedenle buna güvenmemelisiniz. `Lynx` ile denendiğinde `Lynx`'in kimlik doğrulama kartlarını 401 sunucu yanıtı ile temizlemediğini göstermiştir, bu nedenle kimlik bilgisi değişmediği sürece geri ve ileri düğmesine basmak aynı kaynağı açacaktır. Kullanıcı `'_'` tuşu ile kimlik doğrulama bilgisini temizleyebilir.

HTTP kimlik doğrulamasının çalışması için IIS yapılandırmasındaki "Dizin Güvenliği"ni değiştirmelisiniz. "Düzenle"ye basınız ve sadece "Anonim Erişim"leri seçiniz, diğer bütün sahalar seçimsiz olmalıdır.

> Bilginize: IIS Bilgisi:
> HTTP kimlik doğrulamasının IIS ile çalışması için, PHP yönergesi cgi.rfc2616_headers değeri `0` olmaldır (öntanımlı değer).

# Çerezler

PHP HTTP çerezlerini şeffaf olarak destekler. Çerezler, uzak tarayıcıda veri saklamayı ve böylece geri dönen kullanıcılar hakkında veri takibi yapmayı sağlar. Çerezleri, setcookie() ya da setrawcookie() işlevleri ile atayabilirsiniz. Çerezler, HTTP başlığının birer parçasıdır, bu yüzden tarayıcıya bir veri göndermeden önce setcookie() işlevini çağırmalısınız. Aynı kısıtlama header() işlevi için de vardır. çıktı tamponlama işlevlerini kullanarak betik çıktısını, herhangi bir başlık ya da çerez atayıp atamayacağınıza karar verene kadar geciktirebilirsiniz.

İstemci tarafından sunucuya gönderilen herhangi bir çerez, variables_order yönergesi "C" değerini içeriyorsa $_COOKIE süper küresel dizisine atanır. Eğer tek bir çereze, birden fazla değer atamak isterseniz, çerez ismine `[]` eklemeniz yeterli olacaktır.

Tarayıcı hataları dahil, daha fazla bilgi edinmek için setcookie() ve setrawcookie() işlevlerine bakınız.

# Oturumlar

PHP'de oturum desteği belirli bir veriyi birbirini izleyen erişimler arasında korumak üzere bulunur. Bu size daha özelleştirilmiş uygulamalar yapma ve sitenizin cazibesini artırma imkanı verir. Bu konuyla ilgili bütün bilgi Oturum kılavuzu bölümündedir.

# Karşıya dosya yükleme

## İçindekiler

- POST yöntemi ile karşıya dosya yükleme
- Hata İletilerinin Açıklamaları
- Bilinen zorluklar
- Çoklu dosya yükleme
- PUT yöntemi desteği
- Ayrıca Bakınız

## POST yöntemi ile karşıya dosya yükleme

Bu özellik metin ve ikil dosyaları yükleme imkanı verir. PHP'nin kimlik doğrulama ve dosya işletim işlevleri ile kimin karşıya dosya yükleme yetkisi olacağına ve yüklenen dosya ile ne yapılacağı hakkında tam denetime sahip olursunuz.

PHP, herhangi bir RFC 1867 uyumlu tarayıcıdan gelen dosya yüklemelerini alabilir.

> Bilginize: İlgili Yapılandırmalar

> Ayrıca php.ini içindeki file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size ve max_input_time yönergelerine bakınız.

PHP ayrıca Netscape Composer ve W3C'nin Amaya istemcileri tarafından kullanılan PUT yöntemiyle dosya yüklemeleri de destekler. Ayrıntılı bilgi için PUT Yöntemi Desteği'ne bakınız.

Örnek 1 - Karşıya Dosya Yükleme Formu

Bir dosya yükleme ekranı aşağıdaki gibi özel bir form ile oluşturulabilir:

    <!-- Veri kodlama türü, enctype, aşağıdaki gibi belirtilmek ZORUNDADIR -->
    <form enctype="multipart/form-data" action="__URL__" method="POST">
        <!-- MAX_FILE_SIZE dosya giriş alanından önce bulunmak zorundadır -->
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        <!-- input elemanının adı $_FILES dizisinin içindeki ismi belirler -->
        Bu dosyayı gönder: <input name="kullanici_dosyasi" type="file" />
        <input type="submit" value="Dosyayı Gönder" />
    </form>

Yukarıdaki örnekteki `__URL__` bir PHP dosyası ile değiştirilmelidir.

`MAX_FILE_SIZE` gizli alanı (bayt cinsinden) dosya giriş alanından önce bulunmak zorundadır ve değeri PHP tarafından kabul edilecek azami dosya boyutudur. Bu form elemanı azami-büyüklüğü aşan bir dosyanın gönderilmesini baştan engelleyeceği için büyük dosyaları boşuna beklememek açısından kullanıcılara zaman kazandırır; bu nedenle her zaman kullanılmalıdır. Ancak unutmayın: Bu ayarı tarayıcı tarafında devre dışı bırakmak oldukça kolaydır, bu nedenle daha büyük boyuttaki dosyaların bu özellik tarafından engelleneceğine güvenmeyiniz. Bunula birlikte, PHP'nin azami-büyüklük ayarı devre dışı bırakılamaz.

> Bilginize:

> Dosya yükleme formunuzun `enctype="multipart/form-data"` özniteliğine sahip olduğundan emin olun, aksi takdirde dosya yükleme çalışmaz.

Küresel $_FILES karşıdan yüklenen tüm dosyaların bilgisini içerir. Örnek formdaki $_FILES içeriği aşağıda verilmiştir. Yukarıdaki örneğe göre yüklenen dosya adı kullanici_dosyasi'dır. Bu herhangi bir isim olabilir.

$_FILES['kullanici_dosyasi']['name']

  İstemci makinasındaki asıl dosya adıdır.

$_FILES['kullanici_dosyasi']['type']

  Eğer tarayıcı bu bilgiyi sağladıysa dosyanın MIME türüdür. Örneğin, `"image/gif"`. Bu MIME türü PHP tarafında denetlenmez; bu bakımdan bu değeri dikkate almayın.

$_FILES['kullanici_dosyasi']['size']

  Yüklenen dosyanın bayt cinsinden boyutudur.

$_FILES['kullanici_dosyasi']['tmp_name']

  Yüklenen dosyanın sunucuda saklandığı sıradaki geçici dosya adıdır.

$_FILES['kullanici_dosyasi']['error']

  Bu dosya yüklemesiyle ilişkili hata kodudur.

$_FILES['kullanici_dosyasi']['full_path']

  Tam dosya yolu (full_path) tarayıcı tarafından gönderilir. Bu yol her zaman gerçek dizin yapısını içermediğinden güvenilmemelidir. PHP 8.1.0 ve sonrasında kullanılabilir.

php.ini içindeki upload_tmp_dir yönergesi ile başka bir yer belirtilmediyse, dosyalar, öntanımlı olarak sunucunun öntanımlı geçici dizininde saklanır. Sunucunun öntanımlı geçici dizini PHP'nin içinde çalıştığı ortamdaki TMPDIR ortam değişkenine başka bir değer vererek değiştirilebilir. Buna PHP betiği içinden putenv() işlevi ile değer verirseniz çalışmaz. Bu ortam değişkeni diğer işlemlerin yüklenen dosyalar üzerinde çalıştığından emin olmak için de kullanılabilir.

Örnek 2 - Dosya yüklemelerinin doğrulanması

Daha fazla bilgi için is_uploaded_file() ve move_uploaded_file() işlev girdilerine de bakınız. Aşağıdaki örnek bir formdan gelen dosya yükleme isteğini işleyecektir.

    <?php
    $dizin = '/var/siteler/uploads/';
    $yuklenecek_dosya = $dizin . basename($_FILES['kulldosyasi']['name']);

    echo '<pre>';
    if (move_uploaded_file($_FILES['kulldosyasi']['tmp_name'], $yuklenecek_dosya))
    {
        echo "Dosya geçerli ve başarıyla yüklendi.\n";
    } else {
        echo "Olası dosya yükleme saldırısı!\n";
    }

    echo 'Diğer hata ayıklama bilgileri:';
    print_r($_FILES);

    print "</pre>";

    ?>

Yüklenen dosyayı alan PHP betiği yüklenen dosya ile ne yapılacağını belirlemek için gerekli mantığı uygulamalıdır. Örneğin, $_FILES['kullanici_dosyasi']['size'] değişkenini çok küçük ve büyük dosyaları engellemek için kullanabilirsiniz. $_FILES['kullanici_dosyasi']['type'] değişkenini belirli türlere uymayan dosyaları engellemek için kullanabilirsiniz, fakat bunu sadece birincil denetimlerde kullanın, çünkü bu değer tamamen istemci kontrolündedir ve PHP tarafında denetlenmez. Ayrıca $_FILES['kullanici_dosyasi']['error'] kullanabileceği gibi mantığınızı da hata kodlarına göre planlayabilirsiniz. Her şartta dosyayı ya geçici dizinden silmeli ya da başka bir yere taşımalısınız.

Eğer formunuzda yüklemek için bir dosya seçilmediyse, PHP $_FILES['kullanici_dosyasi']['size'] değerini 0 ve $_FILES['kullanici_dosyasi']['tmp_name'] değerini boş döndürür.

İstemin sonunda dosya başka bir yere taşınmadı veya adı değiştirilmediyse geçici dizinden silinir.

Örnek 3 - Dosya dizisi yükleme

PHP HTML dizisi özelliğini dosyalar için de destekler.

    <form action="" method="post" enctype="multipart/form-data">
    <p>Resimler:
    <input type="file" name="resimler[]" />
    <input type="file" name="resimler[]" />
    <input type="file" name="resimler[]" />
    <input type="submit" value="Gönder" />
    </p>
    </form>

    <?php
    foreach ($_FILES["resimler"]["error"] as $anahtar => $hata) {
        if ($hata == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["resimler"]["tmp_name"][$anahtar];
            $name = $_FILES["resimler"]["name"][$anahtar];
            // basename() dosya sisteminin geçiş saldırılarını engelleyebilir;
            // dosya adının daha fazla doğrulanması/temizliği uygun olabilir
            $name = basename($_FILES["resimler"]["name"][$anahtar]);
            move_uploaded_file($tmp_name, "data/$name");
        }
    }
    ?>

Dosya yükleme ilerleme çubuğu Dosya Yüklemeyi İzleme seçeneği kullanılarak gerçeklenebilir.

## Hata İletilerinin Açıklamaları

PHP, dosya dizisi ile birlikte uygun bir hata kodu döndürür. Hata kodu PHP tarafından dosya yüklenirken oluşturulan dosya dizisinin `error` bölümünde bulunur. Diğer bir deyişle, hata $_FILES['kullanici_dosyasi']['error'] içinde olabilir.

Bu hata kodunun değeri `UPLOAD_ERR_*` sabitlerinden biridir.

## Bilinen zorluklar

`MAX_FILE_SIZE` dosya boyutu php.ini dosyasında upload_max_filesize yönergesinde belirtilenden büyük olamaz. Öntanımlı değeri 2 Megabayt'tır.

Eğer bir bellek sınırı etkinleştirildiyse, daha büyük bir memory_limit gerekebilir. memory_limit değerinin yeterli olduğundan emin olun.

Eğer max_execution_time çok küçük verildiyse, betiğin çalışma süresi bu süreyi aşabilir. `max_execution_time` değerinin yeterli olduğundan emin olun.

> Bilginize: max_execution_time sadece betiğin kendi çalışma süresini etkiler. Sistem çağrıları system(), sleep() işlevleri, veritabanı sorguları, dosya yükleme işlemi gibi betiğin işletimi dışında yaşanan etkinliklerde harcanan zaman betiğin azami çalışma süresinin belirlenmesinde hesaba katılmaz.

Uyarı

max_input_time betiğin girdi almak için harcayacağı azami süreyi saniye cinsinden belirler, buna dosya yüklemeleri de dahildir. Büyük veya çoklu dosyalar için veya yavaş bağlantılı kullanıcılar için `60` saniyelik öntanımlı değer aşılabilir.

Eğer post_max_size çok küçük verildiyse, büyük dosyalar yüklenemez. `post_max_size` değerinin yeterli olduğundan emin olun.

max_file_uploads yapılandırma seçeneği bir istekte yüklenebilecek azami dosya sayısını belirtmek için kullanılabilmektedir. Bu sayıdan fazla dosya yüklenmek istendiğinde $_FILES bu sayıya ulaşıldığında dosya yüklemeyi durduracaktır. Örneğin, max_file_uploads için 10 belirtilmişse $_FILES asla 10 üyeden fazlasını içermeyecektir.

Üzerinde çalıştığınız dosyanın doğrulanmaması kullanıcıların diğer dizinlerde bulunan hassas bilgilere erişebileceği anlamına gelebilir.

Bir çok dizin listeleme şeklinin olmasından dolayı özgün isimlerin (örneğin boşluk içerenler) uygun şekilde işlenebileceğinin garantisi yoktur.

Normal girdi alanlarıyla dosya yükleme alanları karıştırılıp aynı form değişkeninde (örneğin `foo[]` gibi) kullanılamaz.

## Çoklu dosya yükleme

`input`lar için farklı `name` değerleri kullanarak çoklu dosya gönderilebilir.

Ayrıca bilgilerin otomatik olarak dizilerde düzenlendiği bir eşzamanlı dosya gönderimi de mümkündür. Bunun için, HTML formunda birden fazla input için aynı dizi söz dizimini kullanmalısınız:

Örnek 1 - Çoklu dosya yükleme

    <form action="dosya-yukle.php" method="post" enctype="multipart/form-data">
      Bu dosyaları gönder:<br />
      <input name="kullanici_dosyasi[]" type="file" /><br />
      <input name="kullanici_dosyasi[]" type="file" /><br />
      <input type="submit" value="Dosyaları gönder" />
    </form>

Yukarıdaki form gönderildiğinde, $_FILES['kullanici_dosyasi'], $_FILES['kullanici_dosyasi']['name'] ve $_FILES['kullanici_dosyasi']['size'] dizileri ilklendirilir.

Örneğin, gönderilen dosya isimleri /home/test/review.html ve /home/test/xwp.out olsun. Bu durumda, $_FILES['kullanici_dosyasi']['name'][0] review.html değerini içerir ve $_FILES['kullanici_dosyasi']['name'][1] xwp.out değerini içerir. Benzer şekilde, $_FILES['kullanici_dosyasi']['size'][0] review.html'in dosya boyutunu içerir ve böyle devam eder.

$_FILES['kullanici_dosyasi']['name'][0], $_FILES['kullanici_dosyasi']['tmp_name'][0], $_FILES['kullanici_dosyasi']['size'][0] ve $_FILES['kullanici_dosyasi']['type'][0]'a da ayrıca değerleri atanır.

Uyarı

max_file_uploads yapılandırma seçeneği bir istekte yüklenebilecek azami dosya sayısını belirtmek için kullanılabilmektedir. Formunuzun bir istekte bu sayıdan fazla dosya yüklemeye çalışmamasını sağlamalısınız.

Örnek 2 - Dizinin tamamen karşıya yüklenmesi

HTML dosya karşıya yükleme alanlarında, `webkitdirectory` özniteliği ile bir dizinin tamamı karşıya yüklenebilir. Bu özellik günümüz tarayıcılarının çoğu tarafından desteklenmektedir.

`full_path` bilgisi ile göreli dosya yolunu saklamak ve sunucuda aynı dizini oluşturmak mümkündür.

    <form action="file-upload.php" method="post" enctype="multipart/form-data">
      Bu dizini gönder:<br />
      <input name="userfile[]" type="file" webkitdirectory multiple />
      <input type="submit" value="Dosyaları gönder" />
    </form>

Uyarı

`webkitdirectory` özniteliği standart değildir ve standartlaşma sürecinde değildir. İnternete açık üretim sitelerinde kullanılmamalıdır: her kullanıcı için çalışmayacaktır. Ayrıca uygulamalar arasında büyük uyumsuzluklar olabilir ve davranış gelecekte değişebilir.

PHP sadece tarayıcının gönderdiği göreli dizin yapısını çözümler ve bu bilgiyi $_FILES dizisinde aktarır. `full_path` dizisindeki değerlerin gerçek dizin yapısını içermesinin bir garantisi yoktur ve PHP uygulamalarında bu bilgiye güvenilmemelidir.

## PUT yöntemi desteği

PHP bazı istemciler tarafından sunucuda dosya saklamak için kullanılan HTTP PUT yöntemini de destekler. PUT istemleri POST istemleri ile dosya yüklemesinden daha basittir ve şu şekildedir:

    PUT /dizin_adi/dosyaismi.html HTTP/1.1

Bu normalde uzak istemci /dizin_adi/dosyaismi.html içeriğini site ağacında saklamak istiyor anlamına gelir. Bu Apache veya PHP'nin herkese site ağacındaki herhangi bir dosya üzerine yazma yetkisi verme anlamına geleceği için iyi bir fikir değildir. Bu nedenle böyle bir istem geldiğinde öncelikle HTTP sunucunuza bu istemin belirli bir PHP betiği tarafından karşılanacağını söylemelisiniz. Apache'de bunu Script yönergesi ile yapabilirsiniz. Bu Apache yapılandırma dosyasının herhangi bir yerine konulabilir. Genellikle `<Directory>` bloğu içine veya `<VirtualHost>` bloğu içine konulur. Bu, aşağıdaki gibi bir satır olabilir:

    Script PUT /put.php

Bu Apache'ye URI'ler için bütün PUT istemlerinin put.php betiğine gönderilmesini söyler. Tabii ki bu durumda .php uzantısının ve PHP'nin etkin olduğu varsayılmaktadır. Bu betiğe gelen bütün PUT istemleri için hedef kaynağı betiğin kendisi olmalıdır.

PHP ile put.php içinde şunu yapabilirsiniz. Bu yüklenen dosyanın içeriğini sunucudaki myputfile.ext dosyasına kopyalar. Bu dosya kopyalamayı gerçekleştirmeden önce bazı denetimlerin yanında kimlik doğrulaması da yapmak isteyebilirsiniz.

Örnek 1 - HTTP PUT dosyalarının kaydedilmesi

    <?php
    /* PUT verisi stdin akımına gelir */
    $putdata = fopen("php://input", "r");

    /* Yazmak için bir dosya aç */
    $fp = fopen("put_dosyam.ekl", "w");

    /* Bir kerede 1 KB veri oku ve dosyaya yaz  */
    while ($veri = fread($putdata, 1024))
      fwrite($fp, $veri);

    /* Akımları kapat */
    fclose($fp);
    fclose($putdata);
    ?>

## Ayrıca Bakınız

- Dosya Sistemi Güvenliği

# Uzak dosyaların kullanımı

php.ini içinde allow_url_fopen seçeneği etkin olduğu sürece, dosya adını bağımsız değişken olarak alan birçok işlevde HTTP ve FTP URL'lerini kullanabilirsiniz. Ek olarak, URL'ler include, include_once, require ve require_once deyimleri ile kullanılabilir (Bunun için allow_url_include seçeneğini etkinleştirmek gerekmektedir). PHP tarafından desteklenen protokoller hakkında daha fazla bilgi için bakınız: Desteklenen Protokoller ve Sarmalayıcılar

Örneğin, bunu uzak web sunucusunda bir dosya açmak, istediğiniz veri için çıktıyı çözümlemek ve bu veriyi bir veritabanı sorgusunda kullanmak veya sadece çıktılamak için kullanabilirsiniz.

Örnek 1 - Uzak sayfanın başlığını elde etmek

    <?php
    $dosya = fopen ("http://www.ornek_bir_site.com/", "r");
    if (!$dosya) {
        echo "<p>Uzak dosya açılamıyor.\n";
        exit;
    }
    while (!feof ($dosya)) {
        $satir = fgets ($dosya, 1024);
        /* Bu sadece başlığın title etiketleri aynı satır üzerindeyse çalışır */
        if (preg_match ("@\<title\>(.*)\</title\>@i", $satir, $cikti)) {
            $baslik = $cikti[1];
            break;
        }
    }
    fclose($dosya);
    ?>

Aynı zamanda bir FTP sunucusundaki dosyalara da yazabilirsiniz (doğru erişim haklarına sahip bir kullanıcı olarak bağlandığınızda). Bu yöntemi kullanarak sadece yeni dosyalar oluşturabilirsiniz; eğer varolan bir dosyanın üzerine yazmayı denerseniz, fopen() çağrısı başarısız olur.

'`anonymous`' haricinde bir kullanıcı olarak bağlanmak için, '`ftp://kullanici:parola@ftp.ornek_bir_site.com/ornek/bir/dosya`' örneğindeki gibi kullanıcı adı (ve parola) URL içinde belirtilmelidir. (Basit kimlik doğrulaması gerektiren HTTP dosya erişimleri içinde aynı söz dizimini kullanabilirsiniz.)

Örnek 2 - Veriyi uzak sunucuda saklamak

    <?php
    $dosya = fopen ("ftp://ftp.ornek_bir_site.com/gelen/yazilan_dosya", "w");
    if (!$dosya) {
        echo "<p>Uzak dosya yazmak için açılamıyor.\n";
        exit;
    }
    /* Veriyi burada yaz. */
    fwrite ($dosya, $_SERVER['HTTP_USER_AGENT'] . "\n");
    fclose ($dosya);
    ?>

> Bilginize:

> Yukarıdaki örnek, bu tekniğin uzak günlük dosyası yazmak için kullanılabileceği fikrini vermiş olabilir. Ne yazık ki bu çalışmaz çünkü eğer uzak dosya zaten varsa fopen() çağrısı başarısız olur. Böyle bir dağıtık günlüklerle için syslog() işlevine göz atmalısınız.

# Bağlantı yönetimi

PHP içinde yerleşik olarak bağlantı durumu saklanır. Olası 4 durum vardır:

- 0 - NORMAL
- 1 - ABORTED
- 2 - TIMEOUT
- 3 - ABORTED ve TIMEOUT

PHP betiği normal olarak çalıştığında, NORMAL durumu etkindir. Eğer uzak istemci bağlantıyı keserse ABORTED durumu etkin olur. Uzak istemci bağlantı kesilmesi genellikle kullanıcının DUR düğmesine basmasından kaynaklanır. Eğer PHP tarafından bir zaman sınırı (set_time_limit() işlevine bakınız) tetiklendiyse, TIMEOUT durumu etkin olur.

Kullanıcının bağlantı kesmesiyle betiğinizin iptal edilip edilmeyeceğine karar verebilirsiniz. Bazen uzak tarayıcı çıktıyı almasa da betiğinizin işini bitirinceye kadar çalışmasını gerektiren durumlar olabilir. Öntanımlı davranış uzak istemci bağlantıyı kestiğinde betik çalışmasının iptal edilmesidir. Bu davranış şekli `ignore_user_abort` php.ini yönergesi veya ona ilişkin `php_value ignore_user_abort` Apache httpd.conf yapılandırma yönergesi veya ignore_user_abort() işlevi ile belirlenebilir. Eğer PHP'ye kullanıcı iptallerini gözardı etmesini söylemezseniz ve kullanıcı iptal ederse betiğiniz sonlanır. Tek istisnası register_shutdown_function() işleviyle kapatma işlevinin kayıtlanmasıdır. Bir kapatma işlevi ile, uzak kullanıcı DUR düğmesine bastığında, betiğinizin sonraki çıktılama denemesinde PHP bağlantının iptal edildiğini tespit eder ve kapatma işlevi çağrılır. Bu kapatma işlevi ayrıca normal olarak sonlandırmada betiğinizin sonunda çağrılacaktır, istemci tarafından bağlantı iptalinde farklı birşey yapmak için connection_aborted() işlevini kullanabilirsiniz. Eğer bağlantı iptal edilirse bu işlev `true` döndürecektir.

Betiğinizi yerleşik betik zamanlayıcı ile de sonlandırabilirsiniz. Öntanımlı zaman aşımı 30 saniyedir. Bu `max_execution_time` php.ini yönergesi veya ilişkili `php_value max_execution_time` Apache httpd.conf yapılandırma yönergesi veya set_time_limit() işlevi ile değiştirilebilir. Zaman aşımında betik iptal edilir ve yukarıdaki istemci bağlantı kesilmesindeki gibi, eğer kayıtlı bir kapatma işlevi varsa çağrılır. Bu kapatma işlevi içinde connection_status() işlevi ile kapatma işlevinin zaman aşımı nedeniyle mi çağrıldığını denetleyebilirsiniz. Kapatma işlevinin çağrılmasına zaman aşımı neden olduysa bu işlev 2 döndürür.

ABORTED ve TIMEOUT durumlarının aynı zamanda etkin olabileceğine dikkat edilmesi gerekir. Eğer PHP'ye kullanıcı iptallerini gözardı etmesini söylediyseniz bu mümkündür. PHP kullanıcının bağlantıyı koparmış olabileceğini bilir, fakat betik çalışmaya devam eder. Eğer zaman sınırına ulaşırsa çalışması iptal edilir ve kapatma işleviniz varsa çağrılır. Bu noktada connection_status() işlevinin 3 döndürdüğünü göreceksiniz.

# Kalıcı Bağlantılı Veritabanı Bağlantıları

Kalıcı bağlantılar betiğinizin çalışması bittiğinde kapanmayan bağlantılardır. Bir kalıcı bağlantı istendiğinde PHP evvelce açılmış eşdeğer bir kalıcı bağlantı var mı diye bakar ve varsa onu kullanır. Yoksa yeni bir bağlantı oluşturur. Bir 'eşdeğer' bağlantı, aynı konağa (uygulanabildiği takdirde) aynı kullanıcı adı ve parola kullanılarak açılmış bağlantıdır.

HTTP sunucuları hakkında tam bilgi sahibi olmayan kişiler ne yaptıklarını bilmeden yükü yanlış kalıcı bağlantılara dağıtabilir ve bu yanlış bağlantılarla çalışabilirler. Özellikle, size aynı bağlantı üzerinde 'kullanıcı oturumları' açma olanağını, verimli hareket işlemleri kurulmasını ve başka birçok şeyi bir bütün halinde sağlamazlar. Aslında, son derece net olarak, kalıcı bağlantılar, kalıcı olmayan bağlantılarla mümkün olmayan işlevselliği size sağlayamazlar.

Neden?

Bu HTTP sunucusunun işi nasıl yaptığı ile ilgilidir. PHP'nin HTML sayfalarını üretmek için HTTP sunucusunu üç şekilde kullanabilir.

İlk yöntem, PHP'yi bir CGI "sarmalayıcı" olarak kullanmaktır. Bu yolla, HTTP sunucusundan her PHP sayfası isteğinde PHP yorumlayıcısının yeni bir örneği oluşturulup yok edilir. Yorumlayıcı her istekten sonra yok edildiğinden kazanılan özkaynaklar da (bir SQL veritabanı bağlantısı gibi) kaybedilir. Bu durumda, kalıcı bağlantılar kullanarak hiç bir şey kazanamazsınız; çünkü özkaynaklar kalıcı olmayacaktır.

İkinci ve en çok kullanılan yöntem, PHP'yi çok süreçli bir sunucuda bir modül olarak çalıştırmaktır. Bu olanak şimdilik sadece Apache HTTP sunucusu ile mümkündür. Çok süreçli bir sunucu, işleri sayfaları sunmak olan bir çok (alt) süreci denetimi altında tutan bir ana sürece sahiptir. Bir istemciden bir istek geldiğinde, başka istemcilere hizmet sunmayan alt süreçlerden birini bu isteğe tahsis eder. Eğer aynı istemci ikinci bir istek yaparsa bu isteğe başka bir alt süreç yanıt verebilir. Kalıcı bir bağlantı açıldığında SQL hizmeti isteği yapılan her sayfa isteği SQL sunucuya tahsis edilen aynı bağlantıdan sunulur.

Son yöntem, PHP'yi çok evreli bir sunucuda bir eklenti olarak kullanmaktır. PHP şimdilik, PHP'nin bir eklenti olarak kullanımına izin veren Netscape FastTrack (iPlanet), Microsoft's Internet Information Server (IIS) ve O'Reilly's WebSite Pro gibi çok evreli HTTP sunucularında ISAPI, WSAPI ve (Windows üzerinde) NSAPI için destek vermektedir. Davranış esas olarak ikinci yöntemde açıklanan çok süreçli yöntemle aynıdır.

Kalıcı bağlantılar ek bir işlevselliğe sahip değilseler bunlar neden tercih ediliyorlar?

Yanıtı oldukça basittir: Verimlilik. SQL sunucunuza bağlantı açmak çok masraflıysa kalıcı bağlantılar kurmak daha iyidir. Bu bedel gerçekte birçok sebebe bağlı olabileceği gibi olmayabilir de. Bu, veritabanının, HTTP sunucunun bulunduğu makinede olup olmamasından SQL sunucusunun makineye ne kadar yük bindirdiğine kadar geniş bir yelpazede değerlendirilebilir. Son değerlendirmede, eğer bu bedel yüksekse kalıcı bağlantıların büyük ölçüde yardımı olacaktır. SQL sunucuya yapılan her bağlantı isteğinde alt süreç sadece o sayfayı işleyeceği yerde, kalıcı bağlantı durumunda her alt sürecin ömrü boyunca bir bağlantı kurmasına olanak tanınır. Yani, bir kalıcı bağlantı açmış her alt sürecin kendine ait bir kalıcı bağlantısı vardır. Örneğin, SQl sunucunuza kalıcı bağlantı açan betiğiniz 20 ayrı alt süreç çalıştırıyorsa alt süreç başına bir tane olmak 20 ayrı bağlantı var demektir.

Ancak şuna dikkat edin, bağlantı sayısı sınırlı bir veritabanını bu sınırın üstünde kalıcı bağlantılarla kullanıyorsanız bunun bazı götürüleri olabilir. Eğer veritabanınız aynı anda 16 bağlantılık bir sınıra sahipse ve çok meşgul bir sunucu oturumunda 17 alt evre bağlantı açmaya çalışıyorsa biri bunu başaramayacaktır. Eğer betiğinizde (sonsuz döngü gibi durumlarda) bağlantıların kapatılmasına izin vermeyen hatalar varsa, veritabanı sadece 16 bağlantı ile hızla batağa saplanacaktır. Terkedilmiş ve boştaki bağlantıların devreye sokulması hakkında bilgi edinmek için veritabanınızın belgelerine bakınız.

Uyarı

Kalıcı bağlantıları kullanırken hesaba katmanız gereken bir çok yetersizlik vardır. Bunlardan biri, bir kalıcı bağlantı üzerinden tablo kilitlemesi yapıyorsanız ve betiğiniz herhangi bir şekilde kilidi serbest bırakamazsa aynı bağlantıyı kullanan sonraki betikler sonsuza kadar engellenebilir ve bunun sonucu olarak HTTP sunucunuzu veya veritabanı sunucunuzu yeniden başlatmak zorunda kalabilirsiniz. Bir diğer durumda, hareketleri (transaction) kullanırken, bir hareket bloğu tamamlanmadan betiğiniz çalışmasını bitirirse aynı bağlantıyı kullanan sonraki betiklerin işleri başlarından aşacaktır. Her durumda, tablolarınızın kilitlerini açmak ve hareketleri başa sarmak için register_shutdown_function() işlevini kullanarak bir temizlik işlevi tanımlayabilirsiniz. Daha da iyisi, tablo kilitleri veya hareket blokları kullanan betiklerde kalıcı bağlantıları kullanmayarak bu sorunlardan tamamiyle kurtulabilirsiniz.

Özetle, kalıcı bağlantılar normal bağlantılarla bire bir eşleşecek şekilde tasarlanmışlardır. Yani, betiğinizin davranışını değiştirmeden kalıcı bağlantılar yerine her zaman kalıcı olmayan bağlantılar kullanabilirsiniz. Bu, muhtemelen betiğinizin verimliliğini etkileyecektir ama davranışında bir değişikliğe yol açmayacaktır!

Ayrıca bakınız: ibase_pconnect(), ociplogon(), odbc_pconnect(), oci_pconnect(), pfsockopen() ve pg_pconnect().

# PHP'nin komut satırından kullanımı

## İçindekiler

- Diğer SAPI'lerden dikkate değer farklılıklar
- Seçenekler
- Kullanım
- G/Ç Akımları
- Etkileşimli kabuk
- Yerleşik HTTP sunucusu
- INI Ayarları

## Giriş

CLI SAPI'nin ana odağı PHP ile kabuk (veya masaüstü) uygulamaları geliştirmektir. CLI SAPI'nin bu bölümde anlatılan diğer `SAPI`'lerden az bir farkı vardır. Söylemek gerekir ki, her ne kadar CLI ve CGI birçok aynı davranışı paylaşsa da farklı SAPI'lerdir.

CLI SAPI --enable-cli ile öntanımlı olarak etkin kılınır. Etkinliğini kaldırmak için ./configure betiğinde --disable-cli seçeneğini kullanabilirsiniz.

PHP 4.3.0'dan beri, CLI/CGI çalıştırılabilirinin adı, yeri ve mevcudiyeti PHP'nin sisteminize nasıl kurulduğuna bağlı olarak değişecektir. make çalıştırıldığında öntanımlı olarak, hem CGI hem de CLI derlenir ve PHP kaynak ağacında sapi/cgi/php-cgi ve sapi/cli/php dizinlerine ayrı yerleştirilirler. Her ikisinin de adının php olduğunu farkedeceksiniz. make install çalıştırıldığında ne yaşanacağı yapılandırma satırınıza bağlıdır. Eğer yapılandırma sırasında apxs gibi bir SAPI modülü seçildiyse, veya --disable-cgi seçeneği kullanıldıysa, make install sırasında CLI {PREFIX}/bin/php dizinine kopyalanır, aksi takdirde buraya CGI yerleştirilir. Örneğin, --with-apxs yapılandırma satırınızda ise make install sırasında CLI {PREFIX}/bin/php dizinine kopyalanır. Eğer CGI kurulumunu etkisiz kılmak isterseniz, make install'dan sonra make install-cli kullanın. Ya da yapılandırma satırınızda --disable-cgi belirtebilirsiniz.

> Bilginize:

> --enable-cli ve --enable-cgi öntanımlı olarak etkinleştirildiği için, yapılandırma satırınızda sadece --enable-cli olması CLI'nin make install sırasında {PREFIX}/bin/php dizinine kopyalanacağı anlamına gelmez.

PHP 4.2.0 ve PHP 4.2.3 arasındaki Windows paketlerinde CLI php-cli.exe olarak, CGI da aynı dizinde php.exe olarak dağıtılmıştır. PHP 4.3.0'la başlayarak Windows paketlerinde CLI, cli adlı farklı bir dizinde php.exe olarak dağıtılmıştır, böylece cli/php.exe olmuştur. PHP 5'le başlayarak, CLI ana dizinde php.exe adıyla dağıtılmıştır. CGI sürümü php-cgi.exe olarak dağıtılmaktadır.

CLI sürümü ana dizinde php.exe isminde CGI sürümü ise php-cgi.exe isminde bir dosya ile dağıtılmaktadır. Buna ek olarak, PHP'nin --enable-cli-win32 ile yapılandırılması halinde dağıtım php-win.exe dosyasını da içerir. php-win.exe CLI sürümü ile aynıdır, fakatphp-win.exe herhangi çıktı vermez, bu nedenle konsolu desteklemez (ekranda "dos penceresi" görünmez).

> Bilginize: Bende hangi SAPI var?

> Kabuktan, php -v yazımı php CGI mı CLI mi olduğunu söyler. Ayrıca php_sapi_name() işlevine ve `PHP_SAPI` sabitine bakınız.

> Bilginize:

> PHP 4.3.2'de bir Unix kılavuz (`man`) sayfası eklendi. Bunu kabuk ortamında man php yazarak görüntüleyebilirsiniz.

## Diğer `SAPI`'lerden dikkate değer farklılıklar

CLI SAPI'nin diğer `SAPI`'lerden dikkate değer farklılıkları:

- CLI SAPI'den farklı olarak, çıktıya hiçbir başlık yazılmaz.

  CGI SAPI HTTP başlıklarını önlemek için bir yol sunsa da, CLI SAPI'de onları etkinleştirecek eşdeğer bir seçenek yoktur.

  CLI öntanımlı olarak sessiz kipte başlar, -q ve --no-header seçenekleri eski CGI betiklerinin kullanımına uyumluluk için tutulmaktadır.

  Çalışma dizinini betiğinki ile aynı yapmaz. (-C ve --no-chdir seçenekleri uyumluluk için tutulmaktadır)

  Düz metin hata iletileri (HTML biçimlendirmesi yok).

- Kabuk ortamında birşey ifade etmedikleri için CLI SAPI tarafından geçersiz kılınan bazı php.ini yönergeleri vardır:

  Geçersiz kılınan php.ini yönergeleri
  Yönerge | CLI SAPI öntanımlı değeri | Yorum
  --- | --- | ---
  html_errors | `false` | Hata iletileri HTML etiketleri ile karıştırılmışken, kabukta bunları okumak oldukça zor olacağı için bu yönerge öntanımlı olarak `false` değerlidir.
  implicit_flush | `true` | Kabuk ortamında, print, echo ve arkadaşlarından gelen çıktıların önbellekte tutulmadan hemen çıktıya yazılması istenir. Eğer standart çıktıyı ertelemek veya işlemek isterseniz çıktı önbellekleme kullanabilirsiniz.
  max_execution_time | 0 (sınırsız) | HTML üretmek için yazılan uygulamalar genellikle çok çabuk işletilse de, kabuk ortamlarında PHP kullanımının sonsuz olasılığı olduğu için, kabuk uygulamaları daha fazla işletim zamanı harcama eğilimindedirler, bu nedenle azami işletim süresi sınırsız olarak belirtilmiştir.
  register_argc_argv | `true` | Bu ayarın `true` olması, CLI SAPIde çalıştırılan betiklerin argc (uygulamaya aktarılan bağımsız değişken sayısı) ve argv (gerçek bağımsız değişkenler dizisi) değerlerine her zaman erişebilmesi anlamına gelir. CLI SAPI kullanırken $argc ve $argv PHP değişkenleri uygun değerlere ayarlanır. Bu değerleri $_SERVER dizisinde de bulabilirsiniz. Örnek: $_SERVER['argv']
  output_buffering | `false` | Bu yönergenin öntanımlı değeri `false` olmasına rağmen Çıktı tamponlama işlevleri kullanılabilmektedir. functions are available.
  max_input_time | `false` | PHP CLI, GET, POST ve dosyaların karşıya yüklenmesini desteklemez.

  > Bilginize:

  > Bu yönergeler php.ini yapılandırma dosyasından veya özel bir yapılandırma dosyasından başka bir değerle ilklendirilemezler. Bu sınırlamanın sebebi bu değerlerin bütün yapılandırma dosyaları çözümlendikten sonra uygulanmasıdır. Fakat, çalışma anında bunların değerleri değişirilebilir (olsa da register_argc_argv gibi bazıları için bu bir şey değiştirmez).

  > Bilginize:

  > Komut satırı betikleri için ignore_user_abort yönergesinin `On` olması önerilir. Daha fazla bilgi için ignore_user_abort() işlevine bakınız.

- Kabuk ortamında G/Ç akımları ile kolay çalışmak için bazı sabitler tanımlanmıştır.

- CLI SAPI geçerli dizini betiğin işletildiği dizine değiştirmez.

  Örnek 1 - CLI SAPI farkını gösteren örnek:

      <?php
      // deneme.php isimli basit deneme uygulamamız
      echo getcwd(), "\n";
      ?>

  CGI sürümününü kullanınca, çıktı şöyle olur:

      $ pwd
      /tmp

      $ php -q bir_dizin/deneme.php
      /tmp/bir_dizin

  Bu açıkça gösteriyor ki PHP geçerli dizinini betiğin çalıştığı dizine değiştiriyor.

  CLI SAPI kullanımı sonucu:

      $ pwd
      /tmp

      $ php -f bir_dizin/deneme.php
      /tmp

  Bu, PHP'de kabuk araçları yazarken daha fazla esneklik imkanı verir.

  > Bilginize:

  > CGI SAPI bu CLI SAPI davranışını komut satırından çalışırken -C seçeneği ile destekler.

## Komut satırı seçenekleri

PHP çalıştırılabiliri tarafından desteklenen komut satırı seçenekleri listesi istenirse PHP -h seçeneği ile çalıştırılarak sorgulanabilir:

    Kullanım: php [seçenekler] [-f] <dosya> [--] [bağımsız değişkenler...]
      php [seçenekler] -r <kod> [--] [bağımsız değişkenler...]
      php [seçenekler] [-B <başlangıç_kodu>] -R <kod> [-E <bitiş_kodu>] [--] [bağımsız değişkenler...]
      php [seçenekler] [-B <başlangıç_kodu>] -F <dosya> [-E <bitiş_kodu>] [--] [bağımsız değişkenler...]
      php [seçenekler] -- [bağımsız değişkenler...]
      php [seçenekler] -a

      -a               Etkileşimli çalışır
      -c <yol>|<dosya> php.ini dosyası bu dizinde aranır
      -n               Hiçbir php.ini dosyası kullanılmayacak
      -d foo[=bar]     'bar' değerli bir foo INI girdisi tanımlar
      -e               Hata ayıklayıcı/profilci için genişletilmiş bilgi üretir
      -f <dosya>       <dosya>'yı çözümler ve çalıştırır
      -h               Bu yardım iletisini gösterir
      -i               PHP bilgisi
      -l               Sadece söz dizimi denetimi (lint)
      -m               Modül olarak derlenenleri gösterir
      -r <kod>         PHP <kod>unu <?..?> betik etiketleri olmadan çalıştırır
      -B <başlangıç_kodu>  PHP <başlangıç_kodu>nu girdi satırlarından önce
                       çalıştırır
      -R <kod>         PHP <kod>unu her girdi satırı için çalıştırır
      -F <dosya>       Her girdi satırı için <dosya>yı çözümler ve çalıştırır
      -E <bitiş_kodu>  PHP <bitiş_kodu>nu bütün girdi satırlarını işledikten
                       sonra çalıştırır
      -H               Harici araçlardan aktarılan bütün bağımsız değişkenleri gizler
      -S <addr>:<port> Yerleşik HTTP sunucusu ile çalıştırır
      -t <belgekök>     Yerleşik HTTP sunucusu için belge kök dizini belirtilir
      -s               Kaynağı renklendirilmiş söz dizimi ile çıktılar
      -v               Sürüm bilgilerini gösterir
      -w               Kaynağı boşluklar ve yorumlardan arındırılmış olarak
                       çıktılar
      -z <dosya>       <dosya> Zend eklentisini yükler

      bağımsız değişkenler... Betiğe aktarılan bağımsız değişkenler. Eğer betik stdin'den
                       okunuyorsa veya ilk bağımsız değişken - ile başlıyorsa
                       -- bağımsız değişkenler kullanın

      --ini            Yapılandırma dosyası isimlerini gösterir

      --rf <isim>      <isim> işlevi hakkında bilgi gösterir
      --rc <isim>      <isim> sınıfı hakkında bilgi gösterir
      --re <isim>      <isim> eklentisi hakkında bilgi gösterir
      --rz <isim>      <isim> Zend eklentisi hakkında bilgi gösterir
      --ri <isim>      <isim> eklentisi için yapılandırmayı gösterir

Komut satırı seçenekleri
Seçenek | Uzun Seçenek | Açıklama
--- | --- | ---
-a | --interactive | PHP'yi etkileşimli çalıştırır.Daha ayrıntılı bilgi için Etkileşimli kabuk konusuna bakınız.
-b | --bindpath | Harici FASTCGI Sunucusu kipi için dizin yolu (sadece CGI için).
-C | --no-chdir | Betiğin bulunduğu dizine chdir yapılmaz (sadece CGI için).
-q | --no-header | Sessiz kip. HTTP başlığının çıktılanmasını engeller (sadece CGI için).
-T | --timing | Betiğin çalışma süresini sayı kere ölçer (sadece CGI için).
-c | --php-ini | Bu seçenek php.ini dosyasının aranacağı dizini veya özel bir `INI` dosyasını (adı php.ini olmak zorunda değildir) belirtebilir. Örneğin:
    $ php -c /ozel/dizin/ ornek_betik.php

    $ php -c /ozel/dizin/ozel-dosya.ini ornek_betik.php
Eğer bu seçeneği belirtmezseniz, php.ini öntanımlı dizinlerde aranır.
-n | --no-php-ini | php.iniyi tamamen görmezden gel.
-d | --define | php.inide izin verilen yapılandırma yönergelerinden herhangi birine özel değer atamanıza imkan verir. Söz dizimi:
    -d ayar_yönergesi[=değer]
Örnek 1 INI ayarını belirlemek için `-d` kullanımı
    # Değer kısmını atlamak yapılandırma yönergesini "1" yapar
    $ php -d max_execution_time
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(1) "1"

    # Boş değer aktarınca yapılandırma yönergesinine "" atanır
    php -d max_execution_time=
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(0) ""

    # Yapılandırma yönergesine '=' karakterinden sonra aktarılan değer atanır
    $  php -d max_execution_time=20
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(2) "20"
    $  php
            -d max_execution_time=herhangi_bir_sey
            -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
    string(15) "herhangi_bir_sey"
-e | --profile-info | Hata ayıklayıcı/profilci için kullanılmak üzere genişletilmiş bilgi kipini etkinleştirir.
-f | --file | Belirtilen dosya adını çözümler ve çalıştırır. -f seçeneği isteğe bağlıdır; verilmese de olur. Sadece çalıştırılacak dosya adını belirtmek yeterlidir.
-h ve -? | --help ve --usage | Komut satırı seçenekleri tek satırlık açıklamalarıyla listelenir.
-i | --info | phpinfo() işlevini çağırır ve sonuçları yazdırır. Eğer PHP doğru çalışmıyorsa, php -i komutunu kullanmanız ve bilgi tablolarından önce herhangi bir hata iletisi yazdırılmış mı diye bakmanız tavsiye edilir. CGI kipini kullanırken çıktının HTML biçiminde olacağını ve bu nedenle çok büyük ve karmaşık olacağını dikkate alınız.
-l | --syntax-check | Bu seçenek verilen PHP kodunun sadece söz dizimini denetlemek için uygun bir yol sağlar. Başarı halinde, `No syntax errors detected in <filename>` metni standart çıktıya yazılır ve kabuk dönüş kodu `0` olur. Başarısızlık halinde, iç çözümleyici hatasına ilaveten `Errors parsing <filename>` metni standart çıktıya yazılır ve kabuk dönüş kodu `-1` olur. Bu seçenek ölümcül hataları bulamaz (tanımlanmamış işlevler gibi). Ölümcül hataları da denetlemek için -f seçeneğini kullanın. Bilginize: Bu seçenek -r seçeneği ile birlikte kullanılamaz.
-m | --modules | Örnek 2 - Yerleşik (ve yüklü) PHP ve Zend modüllerinin listelenmesi
    $ php -m
    [PHP Modules]
    xml
    tokenizer
    standard
    session
    posix
    pcre
    overload
    mysql
    mbstring
    ctype

    [Zend Modules]
> -r | --run | PHP'nin komut satırından çalıştırılmasına izin verir. PHP başlangıç ve bitiş etiketleri (`<?php` ve `?>`) gerekmez ve eğer bulunurlarsa çözümleme hatasına neden olurlar. Bilginize: PHP'nin bu şekilde kullanımı halinde kabuk tarafından yapılan komut satırı değişken değişimleri ile çakışmamak için özen göstermek gerekir. Örnek 3 - Çift tırnak kullanımında bir çözümleme hatasının gösterilmesi
>     $ php -r "$foo = get_defined_constants();"
>     Command line code(1) : Parse error - parse error, unexpected '='
> Buradaki sorun sh/bash kabuklarının çift tırnak `"` kullanıldığında bile değişken değişimi yapmalarından kaynaklanır. $foo değişkeni kabukta tanımlanmış olmayacağı için, PHP'ye çalıştırılmak üzere aktarılan kodda hiçbir şey olarak yorumlanacaktır:
>     $ php -r " = get_defined_constants();"
> Doğru yol tek tırnak `'` kullanımıdır. Tek tırnak içindeki değişkenler sh/bash tarafından dönüştürülmezler. Örnek 4 - Kabuğun değişken dönüşümü yapmasını engellemek için tek tırnakların kullanımı
>     $ php -r '$foo = get_defined_constants(); var_dump($foo);'
>     array(370) {
>       ["E_ERROR"]=>
>       int(1)
>       ["E_WARNING"]=>
>       int(2)
>       ["E_PARSE"]=>
>       int(4)
>       ["E_NOTICE"]=>
>       int(8)
>       ["E_CORE_ERROR"]=>
>       [...]
Eğer sh/bash haricinde bir kabuk kullanıyorsanız, daha farklı sorunlarla karşılaşabilirsiniz. Bu gibi durumlarda » https://github.com/php/php-src/issues adresinde hata raporu açmaktan çekinmeyiniz. Kabuk değişkenlerini kodunuza almaya çalıştığınızda veya önceleme için ters bölü kullanımında sıkıntılar yaşayabilirsiniz. Bilginize: -r seçeneği CLI SAPI'de bulunur, CGI SAPI'de bulunmaz. Bilginize: Bu seçenek çok temel kodlar için tasarlanmıştır. Bazı yapılandırma yönergeleri (örn. auto_prepend_file ve auto_append_file) bu kipte görmezden gelinir.
-B | --process-begin | Standart girdi işlenmeden çalıştırılacak PHP kodudur.
-R | --process-code | Her girdi satırı için işletilecek PHP kodudur. Bu kipte iki özel değişken bulunur: $argn ve $argi. $argn PHP'nin o anda işlediği satırı içerirken, $argi satır numarasını içerir.
-F | --process-file | Her girdi satırı için işletilecek PHP dosyasıdır.
-E | --process-end | Girdi işlendikten sonra işletilecek PHP kodudur. Örnek 5 - Bir projedeki satır sayısını saymak için -B, -R ve -E seçeneklerinin kullanımı
    $ find projem | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Toplam Satır Sayısı: $l\n";'
    Toplam Satır Sayısı: 37328
-S | --server | Yerleşik HTTP sunucusunu başlatır.
-t | --docroot | Yerleşik HTTP sunucusuna belge kökünü belirtir.
-s | --syntax-highlight ve --syntax-highlighting | Renklendirilmiş söz dizimi ile kaynak gösterimi. Bu seçenek dosyayı çözümlemek için içsel yöntemleri kullanır ve renklendirilmiş bir HTML sürümü üreterek standart çıktıya yazar. Bütün yaptığı HTML başlıkları olmadan `<code> [...] </code>` HTML etiketlerinden oluşan bir blok üretmektir. Bilginize: Bu seçenek -r seçeneği ile birlikte çalışmaz.
-v | --version | Örnek 6 - PHP ve Zend sürümleri ile SAPI ismini çıktılamak için -v kullanımı
    $ php -v
    PHP 5.3.0alpha3-dev (cli) (built: Nov 13 2008 18:20:00)
    Copyright (c) 1997-2008 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies
-w | --strip | Kaynağı boşluklar ve yorumlardan arındırılmış olarak gösterir. Bilginize: Bu seçenek -r seçeneği ile birlikte çalışmaz.
-z | --zend-extension | Zend eklentisini yükler. Eğer sadece dosya ismi verilirse, PHP bu eklentiyi sisteminizde geçerli öntanımlı kütüphane yolundan yüklemeye çalışır (Linux sistemlerde genellikle /etc/ld.so.conf dosyasında belirtilir). Dosya adı tam yol bilgisi ile aktarılırsa sistem kütüphanesi arama yolu kullanılmaz. Bir dizin bilgisiyle göreceli bir dosya ismi kullanımı PHP'ye sadece geçerli dizine göreceli eklentinin yüklenmesini söyler.
| --ini | Yapılandırma dosya isimlerini ve taranan dizinleri gösterir. Örnek 7 - `--ini` örneği
    $ php --ini
    Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
    Loaded Configuration File:         /usr/dev/php/5.2/lib/php.ini
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
--rf | --rfunction | Verilen işlev veya sınıf yöntemi hakkında bilgi gösterir (örneğin, bağımsız değişken adlarını ve sayısını). Bu seçenek sadece PHP Reflection desteği ile derlendiyse mevcuttur. Örnek 8 - Temel `--rf` kullanımı
    $ php --rf var_dump
    Function [ <internal> public function var_dump ] {

      - Parameters [2] {
        Parameter #0 [ <required> $var ]
        Parameter #1 [ <optional> $... ]
      }
    }
--rc | --rclass | Verilen sınıf hakkında bilgi gösterir (sabitler, özellikler ve yöntemler listesi). Bu seçenek sadece PHP Reflection desteği ile derlendiyse mevcuttur. Örnek 9 - `--rc` örneği
    $ php --rc Directory
    Class [ <internal:standard> class Directory ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [3] {
        Method [ <internal> public method close ] {
        }

        Method [ <internal> public method rewind ] {
        }

        Method [ <internal> public method read ] {
        }
      }
    }
--re | --rextension | Verilen eklenti hakkında bilgi gösterir (php.ini seçenekleri, tanımlı işlevler, sabitler ve sınıflar listesi). Bu seçenek sadece PHP Reflection desteği ile derlendiyse mevcuttur. Örnek 10 - `--re` örneği
    $ php --re json
    Extension [ <persistent> extension #19 json version 1.2.1 ] {

      - Functions {
        Function [ <internal> function json_encode ] {
        }
        Function [ <internal> function json_decode ] {
        }
      }
    }
--rz | --rzendextension | Belirtilen Zend eklentisi için yapılandırma bilgisini gösterir (bu bilgi phpinfo() ile de elde edilebilir).
--ri | --rextinfo | Verilen eklenti için yapılandırma bilgisini gösterir (phpinfo() ile aynı bilgiyi döndürür). Çekirdek yapılandırma bilgisi "main" eklenti adı kullanılarak bulunabilir. Örnek 11 - `--ri` örneği
    $ php --ri date

    date

    date/time support => enabled
    "Olson" Timezone Database Version => 2008.20
    Timezone Database => internal
    Default timezone => Europe/Helsinki

    Directive => Local Value => Master Value
    date.timezone => no value => no value
    date.default_latitude => 31.7667 => 31.7667
    date.default_longitude => 35.2333 => 35.2333
    date.sunset_zenith => 90.583333 => 90.583333
    date.sunrise_zenith => 90.583333 => 90.583333

> Bilginize:

> Uzun seçenekler (--no-chdir gibi) PHP 4.3.3'ten beri kullanılabilmektedir.

> Bilginize:

> `-rBRFEH`, `--ini` ve `--r[fcezi]` seçenekleri sadece CLI'de kullanılabilir.

## PHP dosyalarının çalıştırılması

CLI SAPI çalıştırmak istediğiniz PHP kodunu getirmek için üç farklı yola sahiptir:

1. PHP'ye belli bir dosyayı çalıştırmasını söyleyerek.

       php ornek_betik.php

       php -f ornek_betik.php

   Her iki yolla da (-f seçeneğini olsun olmasın) ornek_betik.php dosyası çalıştırılır. Çalıştırmak için herhangi bir dosyayı seçebilirsiniz - PHP betikleriniz `.php` uzantısı ile bitmek zorunda değildir, istediğiniz herhangi bir isim ve uzantıya sahip olabilirler.

2. Doğrudan komut satırında işletmek üzere PHP kodunu aktararak.

       php -r 'print_r(get_defined_constants());'

   Kabuk değişken değişimi ve tırnak kullanımı için özel bir çaba sarfetmek gerekir.

   > Bilginize:

   > Örneği dikkatle okuyunuz, hiçbir başlangıç veya bitiş etiketi yok! -r seçeneği bunlara ihtiyaç duymaz. Bunların kullanımı çözümleme hatasına yol açar.

3. Çalıştırılacak PHP kodunu standart girdiden (`STDIN`) yollamak suretiyle.

   Bu, PHP kodunu dinamik olarak oluşturma ve bunu çalıştırma yeteneği sağlar. Örneğin:

       $ bir_uygulama | bir_suzgec | php | sort -u > nihai_sonuc.txt

Kodu çalıştırmak için bu üç yol birlikte kullanılamaz.

Her kabuk uygulamasındaki gibi, PHP çalıştırılabiliri bir takım bağımsız değişkenler alabildiği gibi PHP betiğiniz de bağımsız değişkenler alabilir. Betiğinize aktarabileceğiniz bağımsız değişken sayısı PHP tarafından sınırlandırılmamıştır (kabukta aktarılabilecek karakter sayısı sınırlıdır; genellikle bu sınıra ulaşmazsınız). Betiğinize aktarılan bağımsız değişkenler $argv küresel dizisinde bulunur. Sıfır indisi her zaman betik adını içerir. PHP kodu standart girdiden veya -r komut satırı seçeneğiyle çalıştıysa betik adı `"Standard input code"` olur; PHP 7.2.0 öncesinde `-` idi. Eğer kod standart girdiden bir boru ile çalıştırılırsa bu yine geçerlidir.

İkinci kayıtlı küresel değişken $argc'dir ve $argv dizisindeki eleman sayısını içerir (betiğe aktarılan bağımsız değişken sayısını değil).

Betiğinize aktarmak istediğiniz bağımsız değişkenler `-` karakteriyle başlamadığı sürece, özel bir şeye dikkat etmeniz gerekmez. Betiğinize `-` ile başlayan bir bağımsız değişken aktarımı sorun yaratır çünkü PHP yorumlayıcısı bunu kendisinin işlemesi gerektiğini düşünecektir. Bunu önlemek için, bağımsız değişken listesi ayracı olan `--` kullanın, bunu izleyen her bağımsız değişken ellenmeden betiğinize aktarılır.

    # Bu verilen kodu çalıştırmaz fakat PHP kullanımını gösterir
    $ php -r 'var_dump($argv);' -h
    Usage: php [options] [-f] <file> [args...]
    [...]

    # Bu '-h' bağımsız değişkenini betiğinize aktarır ve
    # PHP'nin bağımsız değişkeni görmesini önler
    $ php -r 'var_dump($argv);' -- -h
    array(2) {
      [0]=>
      string(1) "-"
      [1]=>
      string(2) "-h"
    }

Kabuk betikleri için PHP farklı bir yoldan kullanılabilir. İlk satırı `#!/usr/bin/php` ile başlayan bir betik yazabilirsiniz. Bunu takip eden satırlara başlangıç ve bitiş etiketlerine sahip normal PHP kodunuzu yerleştirebilirsiniz. Dosyanın çalıştırma izinlerini ayarladığınızda (örn. chmod +x deneme) betiğiniz normal bir kabuk veya perl betiği gibi işletilir.

Örnek 1 - PHP betiğini kabuk betiği olarak çalıştırmak

    #!/usr/bin/php
    <?php
    var_dump($argv);
    ?>

Geçerli dizindeki bu dosyanın isminin deneme olduğunu varsayarsak, aşağıdakini yapabiliriz:

    $ chmod +x deneme
    $ ./deneme -h -- foo
    array(4) {
      [0]=>
      string(6) "./deneme"
      [1]=>
      string(2) "-h"
      [2]=>
      string(2) "--"
      [3]=>
      string(3) "foo"
    }

Gördüğünüz gibi, bu durumda betiğinize `-` ile başlayan bağımsız değişken aktarırken hiçbir şeye dikkat etmeniz gerekmez.

PHP çalıştırılabiliri HTTP sunucusundan tamamen bağımsız olarak PHP betikleri çalıştırmak için kullanılabilir. Eğer Unix sistemi üzerindeyseniz, PHP betiğinizin başına özel bir `#!` satırı eklemeli ve dosyanızı çalıştırılabilir yapmalısınız; böylece sistem betiğinizi hangi programın çalıştıracağını bilir. Windows üzerinde `.php` dosyalarına çift tıklama seçeneği ile php.exeilişkilendirebilir veya betiği PHP üzerinden çalıştıracak bir yığın dosyası yapabilirsiniz. Unix'de çalışması için betiğe eklenen ilk satır Windows'da sorun çıkarmaz, böylece platformdan bağımsız programlar yazabilirsiniz. Örnek basit bir komut satırı PHP programı aşağıdaki gibi olabilir.

Örnek 2 - Komut satırından çalıştırılması planlanan betik (betik.php)

    #!/usr/bin/php
    <?php

    if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
    ?>
    Bu tek seçenekli bir komut satırı PHP betiğidir.

      Kullanımı:
      <?php echo $argv[0]; ?> <secenek>

      <secenek> yazdırmak istediğiniz bir kelime olabilir.
      --help, -help, -h,
      veya -? seçenekleriyle, bu yardımı alabilirsiniz.

    <?php
    } else {
        echo $argv[1];
    }
    ?>

Yukarıdaki betikte, bu dosyanın PHP tarafından çalıştırılması gerektiğini belirten özel bir ilk satır kullandık. Burada CLI sürümü ile çalışıyoruz, böylece HTTP başlık çıktıları olmayacak. PHP ile komut satırı uygulamaları yazarken kullanabileceğiniz iki değişken vardır: $argc ve $argv. Birincisi bağımsız değişken sayısından bir fazlasıdır (çalışan betiğin adı). İkincisi bağımsız değişkenleri içeren bir dizidir, sıfır numarayla başlar ve ilk elemanında betik adını içerir ($argv[0]).

Yukarıdaki programda birden farklı sayıda bağımsız değişken olup olmadığı kontrol ettik. Ayrıca eğer bağımsız değişken --help, -help, -h veya -? ise yardım iletisini yazdırdık ve $argv[0] ile betik adını dinamik olarak yazdırdık. Bunlardan başka bağımsız değişkenler aldıysak bunlar yerine onları yazdırdık.

Eğer yukarıdaki betiği Unix üzerinde çalıştırmak isterseniz betiği çalıştırılabilir yapmalı ve betik.php echothis veya betik.php -h ile çağırmalısınız. Windows'da bu iş için bir yığın dosyası yapabilirsiniz:

Örnek 3 - Bir komut satırı PHP betiği çalıştırmak için yığın dosyası (betik.bat)

    @echo OFF
    "C:\php\php.exe" script.php %*

Yukarıdaki programı betik.php olarak adlandırdığınız ve C:\php\php.exe içinde CLI'nin php.exe olduğu varsayılarak bu yığın dosyası sizin eklediğiniz seçeneklerle çalışacaktır: betik.bat echothis veya betik.bat -h.

PHP'deki komut satırı uygulamalarını iyileştirmek için kullanabileceğiniz işlevlerle ilgili bilgi için Readline eklentisinin belgesine bakınız.

Windows üzerindeyseniz PHP, Microsoft Windows üzerinde PHP Komut Satırı bölümünde açıklandığı gibi `.php` uzantısına veya C:\php\php.exe çalıştırılabilirinin belirtilmesine gerek kalmadan çalıştırılmak üzere yapılandırılabilir.

> Bilginize:

> Windows'ta PHP'yi gerçek bir kullanıcı hesabı altında çalıştırmanız önerilir. Aksi takdirde, bir ağ hizmeti altında çalışırken, "Hesap adları ile güvenlik kimlikleri arasında hiçbir eşleştirme yapılmadığı" için belirli işlemler başarısız olur.

## Giriş/Çıkış Akımları

Kabuk ortamında G/Ç akımları ile kolay çalışmak için şu sabitler tanımlanmıştır:

CLI'ye özel Sabitler
Sabit | Açıklama
--- | ---
`STDIN` | `stdin`'e açılmış bir akımdır. Aşağıdaki örnek akımı açıp geleni kaydeder:
    <?php

    $stdin = fopen('php://stdin', 'r');

    ?>
Eğer `stdin`'den tek satır okumak istenirse şu kullanılabilir:
    <?php
    $line = trim(fgets(STDIN));     //  STDIN'den bir satır okur
    fscanf(STDIN, "%d\n", $number); // STDIN'den sayı okur
    ?>
`STDOUT` | `stdout`'a açılmış bir akımdır. Aşağıdaki örnek akımı açıp gideni kaydeder:
    <?php

    $stdout = fopen('php://stdout', 'w');

    ?>
`STDERR` | `stderr`'e açılmış bir akımdır. Aşağıdaki örnek akımı açıp çıktıyı kaydeder:
    <?php

    $stderr = fopen('php://stderr', 'w');

    ?>

Yukarıda verilene göre, örneğin `stderr` için bir akım açmanız gerekmez, ancak akım kaynağı yerine sabit kullanabilirsiniz:

    php -r 'fwrite(STDERR, "stderr\n");'

Betik sonlandığında PHP otomatik olarak akımları kapattığı için sizin ayrıca kapatmanız gerekmez.

> Bilginize:

> Bu sabitler, PHP betiğinin `stdin`'den okunması halinde mevcut değildir.

## Etkileşimli kabuk

PHP --with-readline seçeneği ile derlenmişse, CLI SAPI -a seçeneği kullanıldığında etkileşimli bir kabuk açar. PHP 7.1.0'dan itibaren etkileşimli kabuk, readline eklentisi etkinse, Windows altında da kullanılabilmektedir.

Etkileşimli kabuğu kullanarak PHP kodu yazabilir ve bunları doğrudan çalıştırabilirsiniz.

Örnek 1 - Etkileşimli kabuk kullanarak kod çalıştırmak

    $ php -a
    Interactive shell

    php > echo 5+8;
    13
    php > function ikiEkle($n)
    php > {
    php { return $n + 2;
    php { }
    php > var_dump(ikiEkle(2));
    int(4)
    php >

Etkileşimli kabuk ayrıca, işlevler, sabitler, sınıf isimleri, değişkenler statik yöntem çağrıları ve sınıf sabitleri için sekme ile kod tamalama özelliklerine sahiptir.

Örnek 2 - Kod tamamlama

Sekme tuşuna iki kere basarak yazdığınız harflerle başlayan anahtar sözcükleri listeleyebilirsiniz:

    php > strp[TAB][TAB]
    strpbrk   strpos    strptime
    php > strp

Olası tek seçenek olduğunda sekme tuşuna ilk basışınızda sözcük aynı satırda tamamlanır:

    php > strpt[TAB]ime(

Tamamlama, bulunduğunuz etkileşimli kabuk ortamında tanımlanmış isimler için de çalışacaktır::

    php > $fooThisIsAReallyLongVariableName = 42;
    php > $foo[TAB]ThisIsAReallyLongVariableName

Etkileşimli kabukta yukarı ve aşağı ok tuşlerını kullanarak geçmiş üzerinde dolaşabilirsiniz. Geçmiş ~/.php_history dosyasına kaydedilir.

`cli.pager` ve `cli.prompt` php.ini değişkenleri devreye girmiştir. `cli.pager` ile çıktıyı ekranda göstermek yerine çıktıyı sayfalayacak bir programda (less gibi) göstermek mümkündür. `cli.prompt` ile `php >` çıktısını değiştirebilirsiniz.

php.ini ayarlarını etkileşimli kabukta bir kısayol ile değiştirmek de mümkündür.

Örnek 3 - Etkileşimli kabukta php.ini ayarlarını değiştirmek

`cli.prompt` ile:

    php > #cli.prompt=hello world :>
    hello world :>

Ters tırnakları kullanarak komut isteminde kod çalıştırabilirsiniz:

    php > #cli.prompt=`echo date('H:i:s');` php >
    15:49:35 php > echo 'hi';
    hi
    15:49:43 php > sleep(2);
    15:49:45 php >

Sayfalayıcı olarak less belirtmek:

    php > #cli.pager=less
    php > phpinfo();
    (çıktı less içinde gösterilir)
    php >

`cli.prompt` içinde bir kaç öncelem belirtilebilir:

- `cli.prompt` öcelemleri
Öncelem | Açıklama
--- | ---
`\e` | Komut istemine renk eklemek için kullanılır. Örnek: `\e[032m\v \e[031m\b \e[34m\> \e[0m`
`\v` | PHP sürümü.
`\b` | Neyin içindekinin engelleneceğini belirtir. Örneğin, çok satırlı bir açıklama içinde olmayı belirtmek için: `/*` Dış kapsam `php` tarafından belirtilir.
`\>` | Komut istemi karakterini belirtir. By default this is `>` öntanımlı olsa da kabuk sonlandırılmamış bir dizge veya blok içindeyse bu değişir. Olası karakterler: `' " { ( >`

> Bilginize:

> auto_prepend_file ve auto_append_file ile içselleştirilen dosyalar bu kipte bazı sınırlamalarla çözümlenebilir; örneğin çağrılmadan önce işlevler bu dosyalarda tanımlanabilir.

## Etkileşimli kip

Readline eklentisi kullanılabiliyorsa PHP 8.1.0 öncesinde, -a seçeneği kullanılarak yapılan bir CLI SAPI çağrısı etkileşimli kipe girilmesini sağlardı. Bu kipte, eksiksiz bir PHP betiğinin standart girdiden verilmesi gerekir. POSIX'te `CRTL+d` veya Windows'ta `CTRL+z` ve ardından `ENTER` tuşlanmasıyla bu betik çalıştırılır. Bu temelde -a seçeneği kullanmaksızın yapılan bir CLI SAPI çağrısına eşdeğerdir.

PHP 8.1.0 itibariyle, -a seçeneği kullanılarak yapılan bir CLI SAPI çağrısı, readline eklentisi kullanılabilir değilse başarısız olur.

## Yerleşik HTTP sunucusu

Uyarı

Bu HTTP sunucusu uygulama geliştirmeye yardımcı olmak üzere tasarlanmıştır. Ayrıca, denetimli bir ortam olarak uygulamaların denenmesi amacıyla da kullanılabilir. Herşeyiyle eksiksiz bir HTTP sunucusu olarak tasarlanmamıştır. Halka açık ağlarda kullanılmamalıdır.

CLI SAPI yerleşik bir HTTP sunucusu içerir.

Bu HTTP sunucusu tek evreli bir süreç çalıştırır. Dolayısıyla, PHP uygulamaları istek engellendiği zaman yavaşlayıp duracaktır.

İstenen adres PHP'nin başlatıldığı çalışma dizinine göre sunulur. Bu kök dizin PHP çalıştırılırken -t seçeneği kullanılarak değiştirlebilir. İstek bir dosya belirtmiyorsa belirtilen dizindeki index.php veya index.html dosyası sunulur. Bu iki dosya da mevcut değilse index.php veya index.html araması üst dizinde devam eder ve bu belge kök dizinine ulaşılıncaya dek devam eder. Bulunduğu takdirde, döndürülür ve URI'nin devamına $_SERVER['PATH_INFO'] atanır. Aksi takdirde 404 yanıt kodu döndürülür.

İstenen adres bir dosya belirtmezse, belirtilen dizindeki index.php veya index.html gösterilir. Bu dosyalar da mevcut değilse, bir 404 yanıtı döndürülür.

Aşağıdaki uzantılara sahip dosyalar için standart MIME türleri döndürülür: `.3gp`, `.apk`, `.avi`, `.bmp`, `.css`, `.csv`, `.doc`, `.docx`, `.flac`, `.gif`, `.gz`, `.gzip`, `.htm`, `.html`, `.ics`, `.jpe`, `.jpeg`, `.jpg`, `.js`, `.kml`, `.kmz`, `.m4a`, `.mov`, `.mp3`, `.mp4`, `.mpeg`, `.mpg`, `.odp`, `.ods`, `.odt`, `.oga`, `.ogg`, `.ogv`, `.pdf`, `.png`, `.pps`, `.pptx`, `.qt`, `.svg`, `.swf`, `.tar`, `.text`, `.tif`, `.txt`, `.wav`, `.webm`, `.wmv`, `.xls`, `.xlsx`, `.xml`, `.xsl`, `.xsd`, `.zip`

PHP 7.4.0'dan itibaren, yerleşik HTTP sunucusu, birden fazla eşzamanlı istek gerektiren kodu sınamak için birden fazla süreci çatallamak üzere yapılandırılabilir. Sunucu başlatılmadan önce PHP_CLI_SERVER_WORKERS ortam değişkeni istenen süreç sayısına ayarlanmalıdır.

> Bilginize: Bu özellik Windows'ta desteklenmez.

Uyarı

Bu deneysel özellik üretim ortamında kullanmak için tasarlanmamıştır. Genelde yerleşik HTTP sunucuları üretim ortamında kullanmak için tasarlanmaz.

Örnek 1 - HTTP sunucusunun başlatılması

    $ cd ~/public_html
    $ php -S localhost:8000

Uçbirim çıktısı:

    PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
    Listening on localhost:8000
    Document root is /home/me/public_html
    Press Ctrl-C to quit

http://localhost:8000/ ve http://localhost:8000/myscript.html isteklerinden sonra uçbirim çıktısı şuna benzer:

    PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
    Listening on localhost:8000
    Document root is /home/me/public_html
    Press Ctrl-C to quit.
    [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
    [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
    [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
    [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
    [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read

PHP 7.4.0'dan önce, sembolik bağlantılı statik kaynaklara, yönlendirici betiği bunları işlemediği sürece Windows'ta erişilemezdi.

Örnek 2 - Belge kök dizini belirterek başlatma

    $ cd ~/public_html
    $ php -S localhost:8000 -t foo/

Uçbirim çıktısı:

    PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011
    Listening on localhost:8000
    Document root is /home/me/public_html/foo
    Press Ctrl-C to quit

Örnek 3 - Yönlendirici betik belirtmek

Görüntü isteklerinde görüntüler gösterildiği halde bir HTML dosyası istendiğinde "Welcome to PHP" göstermek:

    <?php
    // router.php
    if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
        return false;    // kaynak olduğu gibi gösterilir.
    } else {
        echo "<p>Welcome to PHP</p>";
    }
    ?>

    $ php -S localhost:8000 router.php

Örnek 4 - CLI Sunucusunda kullanmadan önce betiği sınamak

Bir yönlendirici betiği geliştirici CLI sunucusunda kullandıktan sonra asıl HTTP sunucusunda yeniden kullanmak:

    <?php
    // router.php
    if (php_sapi_name() == 'cli-server') {
        /* statik varlıkları yönlendir ve false ile dön */
    }
    /* normal index.php işlemleri ile devam et */
    ?>

    $ php -S localhost:8000 router.php

Örnek 5 - Desteklenmeyen Dosya Türlerinin İşlenmesi

MIME türleri CLI sunucusu tarafından işlenmeyen statik kaynakları sunmanız gerekirse:

    <?php
    // router.php
    $path = pathinfo($_SERVER["SCRIPT_FILENAME"]);
    if ($path["extension"] == "el") {
        header("Content-Type: text/x-script.elisp");
        readfile($_SERVER["SCRIPT_FILENAME"]);
    }
    else {
        return FALSE;
    }
    ?>

    $ php -S localhost:8000 router.php

Örnek 6 - CLI sunucusuna uzak makinelerden erişim

HTTP sunucusuna port 8000'den şöyle erişebilirsiniz:

    $ php -S 0.0.0.0:8000

Uyarı

Yerleşik HTTP sunucusu internette kullanılmamalıdır.

## INI Ayarları

CLI SAPI Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
cli_server.color | "0" | `INI_ALL` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`cli_server.color` bool

  Geliştirici HTTP sunucusunun uçbirim çıktısında ANSI renk kodlaması kullanımını etkinleştirir.

# Garbage Collection

## İçindekiler

- Reference Counting Basics
- Collecting Cycles
- Performance Considerations

This section explains the merits of the new Garbage Collection (also known as GC) mechanism that is part of PHP 5.3.

## Reference Counting Basics

A PHP variable is stored in a container called a "zval". A zval container contains, besides the variable's type and value, two additional bits of information. The first is called "is_ref" and is a boolean value indicating whether or not the variable is part of a "reference set". With this bit, PHP's engine knows how to differentiate between normal variables and references. Since PHP allows user-land references, as created by the & operator, a zval container also has an internal reference counting mechanism to optimize memory usage. This second piece of additional information, called "refcount", contains how many variable names (also called symbols) point to this one zval container. All symbols are stored in a symbol table, of which there is one per scope. There is a scope for the main script (i.e., the one requested through the browser), as well as one for every function or method.

A zval container is created when a new variable is created with a constant value, such as:

Örnek 1 Creating a new zval container

    <?php
    $a = "new string";
    ?>

In this case, the new symbol name, `a`, is created in the current scope, and a new variable container is created with the type string and the value `new string`. The "is_ref" bit is by default set to `false` because no user-land reference has been created. The "refcount" is set to `1` as there is only one symbol that makes use of this variable container. Note that references (i.e. "is_ref" is `true`) with "refcount" `1`, are treated as if they are not references (i.e. as "is_ref" was `false`). If you have » Xdebug installed, you can display this information by calling xdebug_debug_zval().

Örnek 2 Displaying zval information

    <?php
    $a = "new string";
    xdebug_debug_zval('a');
    ?>

Yukarıdaki örneğin çıktısı:

    a: (refcount=1, is_ref=0)='new string'

Assigning this variable to another variable name will increase the refcount.

Örnek 3 Increasing refcount of a zval

    <?php
    $a = "new string";
    $b = $a;
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örneğin çıktısı:

    a: (refcount=2, is_ref=0)='new string'

The refcount is `2` here, because the same variable container is linked with both a and b. PHP is smart enough not to copy the actual variable container when it is not necessary. Variable containers get destroyed when the "refcount" reaches zero. The "refcount" gets decreased by one when any symbol linked to the variable container leaves the scope (e.g. when the function ends) or when a symbol is unassigned (e.g. by calling unset()). The following example shows this:

Örnek 4 Decreasing zval refcount

    <?php
    $a = "new string";
    $c = $b = $a;
    xdebug_debug_zval( 'a' );
    $b = 42;
    xdebug_debug_zval( 'a' );
    unset( $c );
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örneğin çıktısı:

    a: (refcount=3, is_ref=0)='new string'
    a: (refcount=2, is_ref=0)='new string'
    a: (refcount=1, is_ref=0)='new string'

If we now call `unset($a);`, the variable container, including the type and value, will be removed from memory.

### Compound Types

Things get a tad more complex with compound types such as arrays and objects. As opposed to scalar values, arrays and objects store their properties in a symbol table of their own. This means that the following example creates three zval containers:

Örnek 5 Creating a array zval

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    a: (refcount=1, is_ref=0)=array (
       'meaning' => (refcount=1, is_ref=0)='life',
       'number' => (refcount=1, is_ref=0)=42
    )

Or graphically

The three zval containers are: a, meaning, and number. Similar rules apply for increasing and decreasing "refcounts". Below, we add another element to the array, and set its value to the contents of an already existing element:

Örnek 6 Adding already existing element to an array

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    $a['life'] = $a['meaning'];
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    a: (refcount=1, is_ref=0)=array (
       'meaning' => (refcount=2, is_ref=0)='life',
       'number' => (refcount=1, is_ref=0)=42,
       'life' => (refcount=2, is_ref=0)='life'
    )

Or graphically

From the above Xdebug output, we see that both the old and new array elements now point to a zval container whose "refcount" is `2`. Although Xdebug's output shows two zval containers with value `'life'`, they are the same one. The xdebug_debug_zval() function does not show this, but you could see it by also displaying the memory pointer.

Removing an element from the array is like removing a symbol from a scope. By doing so, the "refcount" of a container that an array element points to is decreased. Again, when the "refcount" reaches zero, the variable container is removed from memory. Again, an example to show this:

Örnek 7 Removing an element from an array

    <?php
    $a = array( 'meaning' => 'life', 'number' => 42 );
    $a['life'] = $a['meaning'];
    unset( $a['meaning'], $a['number'] );
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    a: (refcount=1, is_ref=0)=array (
       'life' => (refcount=1, is_ref=0)='life'
    )

Now, things get interesting if we add the array itself as an element of the array, which we do in the next example, in which we also sneak in a reference operator, since otherwise PHP would create a copy:

Örnek 8 Adding the array as an element of itself

    <?php
    $a = array( 'one' );
    $a[] =& $a;
    xdebug_debug_zval( 'a' );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    a: (refcount=2, is_ref=1)=array (
       0 => (refcount=1, is_ref=0)='one',
       1 => (refcount=2, is_ref=1)=...
    )

Or graphically

You can see that the array variable (a) as well as the second element (1) now point to a variable container that has a "refcount" of `2`. The "..." in the display above shows that there is recursion involved, which, of course, in this case means that the "..." points back to the original array.

Just like before, unsetting a variable removes the symbol, and the reference count of the variable container it points to is decreased by one. So, if we unset variable $a after running the above code, the reference count of the variable container that $a and element "1" point to gets decreased by one, from "2" to "1". This can be represented as:

Örnek 9 Unsetting $a

    (refcount=1, is_ref=1)=array (
       0 => (refcount=1, is_ref=0)='one',
       1 => (refcount=1, is_ref=1)=...
    )

Or graphically

### Cleanup Problems

Although there is no longer a symbol in any scope pointing to this structure, it cannot be cleaned up because the array element "1" still points to this same array. Because there is no external symbol pointing to it, there is no way for a user to clean up this structure; thus you get a memory leak. Fortunately, PHP will clean up this data structure at the end of the request, but before then, this is taking up valuable space in memory. This situation happens often if you're implementing parsing algorithms or other things where you have a child point back at a "parent" element. The same situation can also happen with objects of course, where it actually is more likely to occur, as objects are always implicitly used "by reference".

This might not be a problem if this only happens once or twice, but if there are thousands, or even millions, of these memory losses, this obviously starts being a problem. This is especially problematic in long running scripts, such as daemons where the request basically never ends, or in large sets of unit tests. The latter caused problems while running the unit tests for the Template component of the eZ Components library. In some cases, it would require over 2 GB of memory, which the test server didn't quite have.

## Collecting Cycles

Traditionally, reference counting memory mechanisms, such as that used previously by PHP, fail to address circular reference memory leaks; however, as of 5.3.0, PHP implements the synchronous algorithm from the » Concurrent Cycle Collection in Reference Counted Systems paper which addresses that issue.

A full explanation of how the algorithm works would be slightly beyond the scope of this section, but the basics are explained here. First of all, we have to establish a few ground rules. If a refcount is increased, it's still in use and therefore, not garbage. If the refcount is decreased and hits zero, the zval can be freed. This means that garbage cycles can only be created when a refcount argument is decreased to a non-zero value. Secondly, in a garbage cycle, it is possible to discover which parts are garbage by checking whether it is possible to decrease their refcount by one, and then checking which of the zvals have a refcount of zero.

To avoid having to call the checking of garbage cycles with every possible decrease of a refcount, the algorithm instead puts all possible roots (zvals) in the "root buffer" (marking them "purple"). It also makes sure that each possible garbage root ends up in the buffer only once. Only when the root buffer is full does the collection mechanism start for all the different zvals inside. See step A in the figure above.

In step B, the algorithm runs a depth-first search on all possible roots to decrease by one the refcounts of each zval it finds, making sure not to decrease a refcount on the same zval twice (by marking them as "grey"). In step C, the algorithm again runs a depth-first search from each root node, to check the refcount of each zval again. If it finds that the refcount is zero, the zval is marked "white" (blue in the figure). If it's larger than zero, it reverts the decreasing of the refcount by one with a depth-first search from that point on, and they are marked "black" again. In the last step (D), the algorithm walks over the root buffer removing the zval roots from there, and meanwhile, checks which zvals have been marked "white" in the previous step. Every zval marked as "white" will be freed.

Now that you have a basic understanding of how the algorithm works, we will look back at how this integrates with PHP. By default, PHP's garbage collector is turned on. There is, however, a php.ini setting that allows you to change this: zend.enable_gc.

When the garbage collector is turned on, the cycle-finding algorithm as described above is executed whenever the root buffer runs full. The root buffer has a fixed size of 10,000 possible roots (although you can alter this by changing the `GC_THRESHOLD_DEFAULT` constant in `Zend/zend_gc.c` in the PHP source code, and re-compiling PHP). When the garbage collector is turned off, the cycle-finding algorithm will never run. However, possible roots will always be recorded in the root buffer, no matter whether the garbage collection mechanism has been activated with this configuration setting.

If the root buffer becomes full with possible roots while the garbage collection mechanism is turned off, further possible roots will simply not be recorded. Those possible roots that are not recorded will never be analyzed by the algorithm. If they were part of a circular reference cycle, they would never be cleaned up and would create a memory leak.

The reason why possible roots are recorded even if the mechanism has been disabled is because it's faster to record possible roots than to have to check whether the mechanism is turned on every time a possible root could be found. The garbage collection and analysis mechanism itself, however, can take a considerable amount of time.

Besides changing the zend.enable_gc configuration setting, it is also possible to turn the garbage collecting mechanism on and off by calling gc_enable() or gc_disable() respectively. Calling those functions has the same effect as turning on or off the mechanism with the configuration setting. It is also possible to force the collection of cycles even if the possible root buffer is not full yet. For this, you can use the gc_collect_cycles() function. This function will return how many cycles were collected by the algorithm.

The rationale behind the ability to turn the mechanism on and off, and to initiate cycle collection yourself, is that some parts of your application could be highly time-sensitive. In those cases, you might not want the garbage collection mechanism to kick in. Of course, by turning off the garbage collection for certain parts of your application, you do risk creating memory leaks because some possible roots might not fit into the limited root buffer. Therefore, it is probably wise to call gc_collect_cycles() just before you call gc_disable() to free up the memory that could be lost through possible roots that are already recorded in the root buffer. This then leaves an empty buffer so that there is more space for storing possible roots while the cycle collecting mechanism is turned off.

## Performance Considerations

We have already mentioned in the previous section that simply collecting the possible roots had a very tiny performance impact, but this is when you compare PHP 5.2 against PHP 5.3. Although the recording of possible roots compared to not recording them at all, like in PHP 5.2, is slower, other changes to the PHP runtime in PHP 5.3 prevented this particular performance loss from even showing.

There are two major areas in which performance is affected. The first area is reduced memory usage, and the second area is run-time delay when the garbage collection mechanism performs its memory cleanups. We will look at both of those issues.

### Reduced Memory Usage

First of all, the whole reason for implementing the garbage collection mechanism is to reduce memory usage by cleaning up circular-referenced variables as soon as the prerequisites are fulfilled. In PHP's implementation, this happens as soon as the root-buffer is full, or when the function gc_collect_cycles() is called. In the graph below, we display the memory usage of the script below, in both PHP 5.2 and PHP 5.3, excluding the base memory that PHP itself uses when starting up.

Örnek 1 Memory usage example

    <?php
    class Foo
    {
        public $var = '3.14159265359';
        public $self;
    }

    $baseMemory = memory_get_usage();

    for ( $i = 0; $i <= 100000; $i++ )
    {
        $a = new Foo;
        $a->self = $a;
        if ( $i % 500 === 0 )
        {
            echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
        }
    }
    ?>

In this very academic example, we are creating an object in which a property is set to point back to the object itself. When the $a variable in the script is re-assigned in the next iteration of the loop, a memory leak would typically occur. In this case, two zval-containers are leaked (the object zval, and the property zval), but only one possible root is found: the variable that was unset. When the root-buffer is full after 10,000 iterations (with a total of 10,000 possible roots), the garbage collection mechanism kicks in and frees the memory associated with those possible roots. This can very clearly be seen in the jagged memory-usage graph for PHP 5.3. After each 10,000 iterations, the mechanism kicks in and frees the memory associated with the circular referenced variables. The mechanism itself does not have to do a whole lot of work in this example, because the structure that is leaked is extremely simple. From the diagram, you see that the maximum memory usage in PHP 5.3 is about 9 Mb, whereas in PHP 5.2 the memory usage keeps increasing.

### Run-Time Slowdowns

The second area where the garbage collection mechanism influences performance is the time taken when the garbage collection mechanism kicks in to free the "leaked" memory. In order to see how much this is, we slightly modify the previous script to allow for a larger number of iterations and the removal of the intermediate memory usage figures. The second script is here:

Örnek 2 GC performance influences

    <?php
    class Foo
    {
        public $var = '3.14159265359';
        public $self;
    }

    for ( $i = 0; $i <= 1000000; $i++ )
    {
        $a = new Foo;
        $a->self = $a;
    }

    echo memory_get_peak_usage(), "\n";
    ?>

We will run this script two times, once with the zend.enable_gc setting turned on, and once with it turned off:

Örnek 3 Running the above script

    time php -dzend.enable_gc=0 -dmemory_limit=-1 -n example2.php
    # and
    time php -dzend.enable_gc=1 -dmemory_limit=-1 -n example2.php

On my machine, the first command seems to take consistently about 10.7 seconds, whereas the second command takes about 11.4 seconds. This is a slowdown of about 7%. However, the maximum amount of memory used by the script is reduced by 98% from 931Mb to 10Mb. This benchmark is not very scientific, or even representative of real-life applications, but it does demonstrate the memory usage benefits that this garbage collection mechanism provides. The good thing is that the slowdown is always the same 7%, for this particular script, while the memory saving capabilities save more and more memory as more circular references are found during script execution.

### PHP's Internal GC Statistics

It is possible to coax a little bit more information about how the garbage collection mechanism is run from within PHP. But in order to do so, you will have to re-compile PHP to enable the benchmark and data-collecting code. You will have to set the `CFLAGS` environment variable to `-DGC_BENCH=1` prior to running `./configure` with your desired options. The following sequence should do the trick:

Örnek 4 Recompiling PHP to enable GC benchmarking

    export CFLAGS=-DGC_BENCH=1
    ./config.nice
    make clean
    make

When you run the above example code again with the newly built PHP binary, you will see the following being shown after PHP has finished execution:

Örnek 5 GC statistics

    GC Statistics
    -------------
    Runs:               110
    Collected:          2072204
    Root buffer length: 0
    Root buffer peak:   10000

          Possible            Remove from  Marked
            Root    Buffered     buffer     grey
          --------  --------  -----------  ------
    ZVAL   7175487   1491291    1241690   3611871
    ZOBJ  28506264   1527980     677581   1025731

The most informative statistics are displayed in the first block. You can see here that the garbage collection mechanism ran 110 times, and in total, more than 2 million memory allocations were freed during those 110 runs. As soon as the garbage collection mechanism has run at least one time, the "Root buffer peak" is always 10000.

### Conclusion

In general the garbage collector in PHP will only cause a slowdown when the cycle collecting algorithm actually runs, whereas in normal (smaller) scripts there should be no performance hit at all.

However, in the cases where the cycle collection mechanism does run for normal scripts, the memory reduction it will provide allows more of those scripts to run concurrently on your server, since not so much memory is used in total.

The benefits are most apparent for longer-running scripts, such as lengthy test suites or daemon scripts. Also, for » PHP-GTK applications that generally tend to run longer than scripts for the Web, the new mechanism should make quite a bit of a difference regarding memory leaks creeping in over time.

# DTrace Dynamic Tracing

## İçindekiler

- Introduction to PHP and DTrace
- Using PHP and DTrace
- Using SystemTap with PHP DTrace Static Probes
- Using bpftrace with PHP DTrace Static Probes

## Introduction to PHP and DTrace

DTrace is an always-available, low overhead, tracing framework available on a number of platforms including Solaris, macOS, Oracle Linux and BSD. DTrace can trace operating system behavior and user program execution. It can display argument values and be used to infer performance statistics. Probes are monitored by user created scripts written in the DTrace D scripting language. This allows efficient analysis of data points.

PHP probes that are not being actively monitored by a user's DTrace D script do not contain instrumented code so there is no performance degradation during normal application execution. Probes that are being monitored incur an overhead low enough to generally allow DTrace monitoring on live production systems.

PHP incorporates "User-level Statically Defined Tracing" (USDT) probes that are triggered at runtime. For example, when a D script is monitoring PHP's `function-entry` probe, then, every time a PHP script function is called, this probe is fired and the associated D script action code is executed. This action code could, for example, print probe arguments such as the source file location of the PHP function. Or the action could aggregate data such as the number of times each function is called.

Only the PHP USDT probes are described here. Refer to external general and operating system-specific DTrace literature to see how DTrace can be used to trace arbitrary functions, and how it can be used to trace operating system behavior. Note not all DTrace features are available in all DTrace implementations.

The static DTrace probes in PHP can alternatively be used with the SystemTap facility on some Linux distributions.

## Using PHP and DTrace

PHP can be configured with DTrace static probes on platforms that support DTrace Dynamic Tracing.

### Configuring PHP for DTrace Static Probes

Refer to external platform specific documentation for enabling operating system DTrace support. For example, on Oracle Linux boot a UEK3 kernel and do:

    # modprobe fasttrap
    # chmod 666 /dev/dtrace/helper

Instead of using `chmod`, you could instead use an ACL package rule to limit device access to a specific user.

Build PHP with the `--enable-dtrace` configuration parameter:

    # ./configure --enable-dtrace ...
    # make
    # make install

This makes the static probes available in core PHP. Any PHP extensions that provide their own probes should be built separately as shared extensions.

To enable probes, set USE_ZEND_DTRACE=1 environment variable to the target PHP processes.

### DTrace Static Probes in Core PHP

The following static probes are available in PHP
Probe Name | Probe Description | Probe Arguments
--- | --- | ---
`request-startup` | Fires when a request starts. | char *file, char *request_uri, char *request_method
`request-shutdown` | Fires when a request shutdown. | char *file, char *request_uri, char *request_method
`compile-file-entry` | Fires when the compilation of a script starts. | char *compile_file, char *compile_file_translated
`compile-file-return` | Fires when the compilation of a script finishes. | char *compile_file, char *compile_file_translated
`execute-entry` | Fires when an opcode array is to be executed. For example, it fires on function calls, includes, and generator resumes. | char *request_file, int lineno
`execute-return` | Fires after execution of an opcode array. | char *request_file, int lineno
`function-entry` | Fires when the PHP engine enters a PHP function or method call. | char *function_name, char *request_file, int lineno, char *classname, char *scope
`function-return` | Fires when the PHP engine returns from a PHP function or method call. | char *function_name, char *request_file, int lineno, char *classname, char *scope
`exception-thrown` | Fires when an exception is thrown. | char *classname
`exception-caught` | Fires when an exception is caught. | char *classname
`error` | Fires when an error occurs, regardless of the error_reporting level. | char *errormsg, char *request_file, int lineno

PHP extensions may also have additional static probes.

### Listing DTrace Static Probes in PHP

To list available probes, start a PHP process and then run:

    # dtrace -l

The output will be similar to:

       ID   PROVIDER            MODULE                          FUNCTION NAME
       [ . . . ]
        4   php15271               php               dtrace_compile_file compile-file-entry
        5   php15271               php               dtrace_compile_file compile-file-return
        6   php15271               php                        zend_error error
        7   php15271               php  ZEND_CATCH_SPEC_CONST_CV_HANDLER exception-caught
        8   php15271               php     zend_throw_exception_internal exception-thrown
        9   php15271               php                 dtrace_execute_ex execute-entry
       10   php15271               php           dtrace_execute_internal execute-entry
       11   php15271               php                 dtrace_execute_ex execute-return
       12   php15271               php           dtrace_execute_internal execute-return
       13   php15271               php                 dtrace_execute_ex function-entry
       14   php15271               php                 dtrace_execute_ex function-return
       15   php15271               php              php_request_shutdown request-shutdown
       16   php15271               php               php_request_startup request-startup

The Provider column values consist of `php` and the process id of the currently running PHP process.

If the Apache web server is running, the module name might be, for example, libphp5.so, and there would be multiple blocks of listings, one per running Apache process.

The Function column refers to PHP's internal C implementation function names where each provider is located.

If a PHP process is not running, then no PHP probes will be shown.

### DTrace with PHP Example

This example shows the basics of the DTrace D scripting language.

Örnek 1 all_probes.d for tracing all PHP Static Probes with DTrace

    #!/usr/sbin/dtrace -Zs

    #pragma D option quiet

    php*:::compile-file-entry
    {
        printf("PHP compile-file-entry\n");
        printf("  compile_file              %s\n", copyinstr(arg0));
        printf("  compile_file_translated   %s\n", copyinstr(arg1));
    }

    php*:::compile-file-return
    {
        printf("PHP compile-file-return\n");
        printf("  compile_file              %s\n", copyinstr(arg0));
        printf("  compile_file_translated   %s\n", copyinstr(arg1));
    }

    php*:::error
    {
        printf("PHP error\n");
        printf("  errormsg                  %s\n", copyinstr(arg0));
        printf("  request_file              %s\n", copyinstr(arg1));
        printf("  lineno                    %d\n", (int)arg2);
    }

    php*:::exception-caught
    {
        printf("PHP exception-caught\n");
        printf("  classname                 %s\n", copyinstr(arg0));
    }

    php*:::exception-thrown
    {
        printf("PHP exception-thrown\n");
        printf("  classname                 %s\n", copyinstr(arg0));
    }

    php*:::execute-entry
    {
        printf("PHP execute-entry\n");
        printf("  request_file              %s\n", copyinstr(arg0));
        printf("  lineno                    %d\n", (int)arg1);
    }

    php*:::execute-return
    {
        printf("PHP execute-return\n");
        printf("  request_file              %s\n", copyinstr(arg0));
        printf("  lineno                    %d\n", (int)arg1);
    }

    php*:::function-entry
    {
        printf("PHP function-entry\n");
        printf("  function_name             %s\n", copyinstr(arg0));
        printf("  request_file              %s\n", copyinstr(arg1));
        printf("  lineno                    %d\n", (int)arg2);
        printf("  classname                 %s\n", copyinstr(arg3));
        printf("  scope                     %s\n", copyinstr(arg4));
    }

    php*:::function-return
    {
        printf("PHP function-return\n");
        printf("  function_name             %s\n", copyinstr(arg0));
        printf("  request_file              %s\n", copyinstr(arg1));
        printf("  lineno                    %d\n", (int)arg2);
        printf("  classname                 %s\n", copyinstr(arg3));
        printf("  scope                     %s\n", copyinstr(arg4));
    }

    php*:::request-shutdown
    {
        printf("PHP request-shutdown\n");
        printf("  file                      %s\n", copyinstr(arg0));
        printf("  request_uri               %s\n", copyinstr(arg1));
        printf("  request_method            %s\n", copyinstr(arg2));
    }

    php*:::request-startup
    {
        printf("PHP request-startup\n");
        printf("  file                      %s\n", copyinstr(arg0));
        printf("  request_uri               %s\n", copyinstr(arg1));
        printf("  request_method            %s\n", copyinstr(arg2));
    }

This script uses the `-Z` option to dtrace, allowing it to be run when there is no PHP process executing. If this option were omitted the script would immediately terminate because it knows none of the probes to be monitored are in existence.

The script traces all core PHP static probe points throughout the duration of a running PHP script. Run the D script:

    # ./all_probes.d

Run a PHP script or application. The monitoring D script will output each probe's arguments as it fires.

When monitoring is complete, the D script can be terminated with a ``CTRL`+`C``.

On multi-CPU machines the probe ordering might not appear to be sequential. This depends on which CPU was processing the probes, and how threads migrate across CPUs. Displaying probe time stamps will help reduce confusion, for example:

    php*:::function-entry
    {
          printf("%lld: PHP function-entry ", walltimestamp);
          [ . . .]
    }

### Ayrıca Bakınız

- OCI8 and DTrace Dynamic Tracing

## Using SystemTap with PHP DTrace Static Probes

On some Linux distributions, the SystemTap tracing utility can be used to trace PHP's static DTrace probes. This is available with PHP 5.4.20 and PHP 5.5.

### Installing PHP with SystemTap

Install the SystemTap SDT development package:

    # yum install systemtap-sdt-devel

Install PHP with the DTrace probes enabled:

    # ./configure --enable-dtrace ...
    # make

### Listing Static Probes with SystemTap

The static probes in PHP can be listed using stap:

    # stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i'

This outputs:

    process("sapi/cli/php").provider("php").mark("compile__file__entry")
    process("sapi/cli/php").provider("php").mark("compile__file__return")
    process("sapi/cli/php").provider("php").mark("error")
    process("sapi/cli/php").provider("php").mark("exception__caught")
    process("sapi/cli/php").provider("php").mark("exception__thrown")
    process("sapi/cli/php").provider("php").mark("execute__entry")
    process("sapi/cli/php").provider("php").mark("execute__return")
    process("sapi/cli/php").provider("php").mark("function__entry")
    process("sapi/cli/php").provider("php").mark("function__return")
    process("sapi/cli/php").provider("php").mark("request__shutdown")
    process("sapi/cli/php").provider("php").mark("request__startup")

### SystemTap with PHP Example

Örnek 1 all_probes.stp for tracing all PHP Static Probes with SystemTap

    probe process("sapi/cli/php").provider("php").mark("compile__file__entry") {
        printf("Probe compile__file__entry\n");
        printf("  compile_file %s\n", user_string($arg1));
        printf("  compile_file_translated %s\n", user_string($arg2));
    }
    probe process("sapi/cli/php").provider("php").mark("compile__file__return") {
        printf("Probe compile__file__return\n");
        printf("  compile_file %s\n", user_string($arg1));
        printf("  compile_file_translated %s\n", user_string($arg2));
    }
    probe process("sapi/cli/php").provider("php").mark("error") {
        printf("Probe error\n");
        printf("  errormsg %s\n", user_string($arg1));
        printf("  request_file %s\n", user_string($arg2));
        printf("  lineno %d\n", $arg3);
    }
    probe process("sapi/cli/php").provider("php").mark("exception__caught") {
        printf("Probe exception__caught\n");
        printf("  classname %s\n", user_string($arg1));
    }
    probe process("sapi/cli/php").provider("php").mark("exception__thrown") {
        printf("Probe exception__thrown\n");
        printf("  classname %s\n", user_string($arg1));
    }
    probe process("sapi/cli/php").provider("php").mark("execute__entry") {
        printf("Probe execute__entry\n");
        printf("  request_file %s\n", user_string($arg1));
        printf("  lineno %d\n", $arg2);
    }
    probe process("sapi/cli/php").provider("php").mark("execute__return") {
        printf("Probe execute__return\n");
        printf("  request_file %s\n", user_string($arg1));
        printf("  lineno %d\n", $arg2);
    }
    probe process("sapi/cli/php").provider("php").mark("function__entry") {
        printf("Probe function__entry\n");
        printf("  function_name %s\n", user_string($arg1));
        printf("  request_file %s\n", user_string($arg2));
        printf("  lineno %d\n", $arg3);
        printf("  classname %s\n", user_string($arg4));
        printf("  scope %s\n", user_string($arg5));
    }
    probe process("sapi/cli/php").provider("php").mark("function__return") {
        printf("Probe function__return: %s\n", user_string($arg1));
        printf(" function_name %s\n", user_string($arg1));
        printf("  request_file %s\n", user_string($arg2));
        printf("  lineno %d\n", $arg3);
        printf("  classname %s\n", user_string($arg4));
        printf("  scope %s\n", user_string($arg5));
    }
    probe process("sapi/cli/php").provider("php").mark("request__shutdown") {
        printf("Probe request__shutdown\n");
        printf("  file %s\n", user_string($arg1));
        printf("  request_uri %s\n", user_string($arg2));
        printf("  request_method %s\n", user_string($arg3));
    }
    probe process("sapi/cli/php").provider("php").mark("request__startup") {
        printf("Probe request__startup\n");
        printf("  file %s\n", user_string($arg1));
        printf("  request_uri %s\n", user_string($arg2));
        printf("  request_method %s\n", user_string($arg3));
    }

The above script will trace all core PHP static probe points throughout the duration of a running PHP script:

    # stap -c 'sapi/cli/php test.php' all_probes.stp

## Using bpftrace with PHP DTrace Static Probes

On Linux distributions with a kernel that supports eBPF, the bpftrace utility can attach to PHP's DTrace USDT probes directly, without requiring SystemTap.

### Installing bpftrace

Install bpftrace using the distribution's package manager. For example, on Oracle Linux, RHEL, or Fedora:

    # dnf install bpftrace

Or, on Debian or Ubuntu:

    # apt install bpftrace

The examples below assume the target PHP binary is installed at /usr/bin/php.

The same USDT probes are also exposed by other SAPIs built from the same source tree, so the probe target may instead be the Apache module (libphp.so) or the FastCGI Process Manager binary (php-fpm); substitute the appropriate path or attach by PID with `-p` as needed.

Make sure the target binary is built with DTrace and the environment variable is configured properly. See Configuring PHP for DTrace Static Probes for details.

The static probes in PHP can be listed using bpftrace:

    # bpftrace -l 'usdt:/usr/bin/php:php:*'

This outputs:

    usdt:/usr/bin/php:php:compile__file__entry
    usdt:/usr/bin/php:php:compile__file__return
    usdt:/usr/bin/php:php:error
    usdt:/usr/bin/php:php:exception__caught
    usdt:/usr/bin/php:php:exception__thrown
    usdt:/usr/bin/php:php:execute__entry
    usdt:/usr/bin/php:php:execute__return
    usdt:/usr/bin/php:php:function__entry
    usdt:/usr/bin/php:php:function__return
    usdt:/usr/bin/php:php:request__shutdown
    usdt:/usr/bin/php:php:request__startup

Örnek 1 all_probes.bt for tracing all PHP Static Probes with bpftrace

    #!/usr/bin/env bpftrace

    usdt:/usr/bin/php:php:compile__file__entry
    {
        printf("Probe compile__file__entry\n");
        printf("  compile_file %s\n", str(arg0));
        printf("  compile_file_translated %s\n", str(arg1));
    }
    usdt:/usr/bin/php:php:compile__file__return
    {
        printf("Probe compile__file__return\n");
        printf("  compile_file %s\n", str(arg0));
        printf("  compile_file_translated %s\n", str(arg1));
    }
    usdt:/usr/bin/php:php:error
    {
        printf("Probe error\n");
        printf("  errormsg %s\n", str(arg0));
        printf("  request_file %s\n", str(arg1));
        printf("  lineno %d\n", (int32)arg2);
    }
    usdt:/usr/bin/php:php:exception__caught
    {
        printf("Probe exception__caught\n");
        printf("  classname %s\n", str(arg0));
    }
    usdt:/usr/bin/php:php:exception__thrown
    {
        printf("Probe exception__thrown\n");
        printf("  classname %s\n", str(arg0));
    }
    usdt:/usr/bin/php:php:execute__entry
    {
        printf("Probe execute__entry\n");
        printf("  request_file %s\n", str(arg0));
        printf("  lineno %d\n", (int32)arg1);
    }
    usdt:/usr/bin/php:php:execute__return
    {
        printf("Probe execute__return\n");
        printf("  request_file %s\n", str(arg0));
        printf("  lineno %d\n", (int32)arg1);
    }
    usdt:/usr/bin/php:php:function__entry
    {
        printf("Probe function__entry\n");
        printf("  function_name %s\n", str(arg0));
        printf("  request_file %s\n", str(arg1));
        printf("  lineno %d\n", (int32)arg2);
        printf("  classname %s\n", str(arg3));
        printf("  scope %s\n", str(arg4));
    }
    usdt:/usr/bin/php:php:function__return
    {
        printf("Probe function__return\n");
        printf("  function_name %s\n", str(arg0));
        printf("  request_file %s\n", str(arg1));
        printf("  lineno %d\n", (int32)arg2);
        printf("  classname %s\n", str(arg3));
        printf("  scope %s\n", str(arg4));
    }
    usdt:/usr/bin/php:php:request__shutdown
    {
        printf("Probe request__shutdown\n");
        printf("  file %s\n", str(arg0));
        printf("  request_uri %s\n", str(arg1));
        printf("  request_method %s\n", str(arg2));
    }
    usdt:/usr/bin/php:php:request__startup
    {
        printf("Probe request__startup\n");
        printf("  file %s\n", str(arg0));
        printf("  request_uri %s\n", str(arg1));
        printf("  request_method %s\n", str(arg2));
    }

The above script will trace all core PHP static probe points throughout the duration of a running PHP script. bpftrace requires root privileges:

    # USE_ZEND_DTRACE=1 bpftrace -c '/usr/bin/php test.php' all_probes.bt

To trace an already-running PHP process (for instance, a php-fpm worker or an Apache process loading libphp.so), attach by PID:

    # bpftrace -p $PID all_probes.bt

The `usdt:` target path in the script must match the binary of the running process; adjust `usdt:/usr/bin/php` to the php-fpm binary or libphp.so as appropriate.

- PHP ile HTTP Kimlik Doğrulaması
- Çerezler
- Oturumlar
- Karşıya dosya yükleme
  - POST yöntemi ile karşıya dosya yükleme
  - Hata İletilerinin Açıklamaları
  - Bilinen zorluklar
  - Çoklu dosya yükleme
  - PUT yöntemi desteği
  - Ayrıca Bakınız
- Uzak dosyaların kullanımı
- Bağlantı yönetimi
- Kalıcı Bağlantılı Veritabanı Bağlantıları
- Komut satırından kullanım — PHP'nin komut satırından kullanımı
  - Diğer SAPI'lerden dikkate değer farklılıklar
  - Seçenekler — Komut satırı seçenekleri
  - Kullanım — PHP dosyalarının çalıştırılması
  - G/Ç Akımları — Giriş/Çıkış Akımları
  - Etkileşimli kabuk
  - Yerleşik HTTP sunucusu
  - INI Ayarları
- Garbage Collection
  - Reference Counting Basics
  - Collecting Cycles
  - Performance Considerations
- DTrace Dynamic Tracing
  - Introduction to PHP and DTrace
  - Using PHP and DTrace
  - Using SystemTap with PHP DTrace Static Probes
  - Using bpftrace with PHP DTrace Static Probes

# İşlev Başvuru Kılavuzu

İpucu

Ayrıca bakınız: Eklenti Grupları/Listesi.

# PHP'nin Davranışını Etkileyenler

# APC User Cache

# Giriş

APCu is an in-memory key-value store for PHP. Keys are of type string and values can be any PHP variables. APCu only supports userland caching of variables.

The APCu cache is per-process on Windows, so when using a process-based (rather than thread-based) SAPI, it will not be shared between different processes.

APCu is APC stripped of opcode caching.

The first APCu codebase was versioned 4.0.0, it was forked from the head of the APC master branch at the time. PHP 7 support is available as of APCu 5.0.0. PHP 8 support is available as of APCu 5.1.19.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/apcu.

İpucu

PHP 7 has a separate module (» apcu-bc) for backwards compatibility with APC.

In backward compatibility mode, APCu registers the applicable APC functions with backward compatible prototypes.

Where an APC function accepted `cache_type`, it is simply ignored by the backward compatible version, and omitted from the prototype for the APCu version.

Uyarı

As of PHP 8.0.0, apcu-bc is no longer supported.

> Bilginize: On Windows, APCu needs a temp path to exist, and be writable by the web server. It checks the TMP, TEMP and USERPROFILE environment variables in that order and finally tries the WINDOWS directory if none of those are set.

> Bilginize: For more in-depth, highly technical implementation details, see the » developer-supplied TECHNOTES file .

APCu sources can be found » here.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Although the default APCu settings are fine for many installations, serious users should consider tuning the following parameters.

There is one decision to be made configuring APCu. How much memory is going to be allocated to APCu. The ini directive that controls this is `apc.shm_size` Read the sections on this carefully below.

Once the server is running, the `apc.php` script that is bundled with the extension should be copied somewhere into the docroot and viewed with a browser as it provides a detailed analysis of the internal workings of APCu. If GD is enabled in PHP, it will even display some interesting graphs.

If APCu is working, the `Cache full count` number (on the left) will display the number of times the cache has reached maximum capacity and has had to evict entries to free up memory. During eviction, if `apc.ttl` was specified, APCu will first attempt to remove expired entries, i.e. entries whose TTL has either expired, or entries that have no TTL set and haven't been accessed in the last `apc.ttl` seconds. If `apc.ttl` was not set, or removing expired entries did not free up enough space, APCu will clear the entire cache.

The number of evictions should be minimal in a well-configured cache. If the cache is constantly being filled, and thusly forcefully freed, the resulting churning will have disparaging effects on script performance. The easiest way to minimize this number is to allocate more memory for APCu.

When APCu is compiled with mmap support (Memory Mapping), it will use only one memory segment, unlike when APCu is built with SHM (SysV Shared Memory) support that uses multiple memory segments. MMAP does not have a maximum limit like SHM does in `/proc/sys/kernel/shmmax`. In general MMAP support is recommended because it will reclaim the memory faster when the webserver is restarted and all in all reduces memory allocation impact at startup.

APCu configuration options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
apc.enabled | 1 | `INI_SYSTEM` |
apc.shm_segments | 1 | `INI_SYSTEM` |
apc.shm_size | "32M" | `INI_SYSTEM` |
apc.entries_hint | 512 * apc.shm_size | `INI_SYSTEM` | Prior to APCu 5.1.25, the default was 4096
apc.ttl | 0 | `INI_SYSTEM` |
apc.gc_ttl | 3600 | `INI_SYSTEM` |
apc.mmap_file_mask | NULL | `INI_SYSTEM` |
apc.slam_defense | 0 | `INI_SYSTEM` |
apc.enable_cli | 0 | `INI_SYSTEM` |
apc.use_request_time | 0 | `INI_ALL` | Prior to APCu 5.1.19, the default was `1`.
apc.serializer | "php" | `INI_SYSTEM` | Prior to APCu 5.1.15, the default was `"default"`.
apc.coredump_unmap | 0 | `INI_SYSTEM` |
apc.preload_path | NULL | `INI_SYSTEM` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`apc.enabled` bool
  `apc.enabled` can be set to 0 to disable APC. This is primarily useful when APC is statically compiled into PHP, since there is no other way to disable it (when compiled as a DSO, the `extension` line in `php.ini` can just be commented-out).
`apc.shm_segments` int
  The number of shared memory segments to allocate for the compiler cache. If APC is running out of shared memory but `apc.shm_size` is set as high as the system allows, raising this value might prevent APC from exhausting its memory.
`apc.shm_size` string
  The size of each shared memory segment given by a shorthand notation as described in this FAQ. By default, some systems (including most BSD variants) have very low limits on the size of a shared memory segment.
`apc.entries_hint` int
  A "hint" about the number of distinct variables that might be stored. Set to zero or omit if not sure.
`apc.ttl` int
  Consider cache entries without an explicit TTL to be expired if they have not been accessed in this many seconds. Effectively, this allows such entries to be removed opportunistically during a cache insert, or prior to a full expunge. Note that because removal is opportunistic, entries can still be readable even if they are older than `apc.ttl` seconds. This setting has no effect on cache entries that have an explicit TTL specified.
`apc.gc_ttl` int
  The number of seconds that a cache entry may remain on the garbage-collection list after being removed or invalidated. Entries are eligible for removal if their reference count is zero, or they exceed this time limit. If set to `0`, time-based cleanup is disabled, and entries are only removed when their reference count drops to zero.
`apc.mmap_file_mask` string
  If compiled with MMAP support by using `--enable-mmap` this is the mktemp-style file_mask to pass to the mmap module for determining whether your mmap'ed memory region is going to be file-backed or shared memory backed. For straight file-backed mmap, set it to something like `/tmp/apc.XXXXXX` (exactly 6 `X`s). To use POSIX-style shm_open/mmap put a `.shm` somewhere in your mask. e.g. `/apc.shm.XXXXXX` You can also set it to `/dev/zero` to use your kernel's `/dev/zero` interface to anonymous mmap'ed memory. Leaving it undefined will force an anonymous mmap.
`apc.slam_defense` bool
  On very busy servers whenever you start the server or modify files you can create a race of many processes all trying to cache the same file at the same time. Setting `apc.slam_defense` to `1` can help prevent multiple processes from caching the same file simultaneously by introducing a probability mechanism. If the same key is attempted to be cached within a short period by different processes, it skips the caching for the current process to mitigate potential cache slams.
`apc.enable_cli` int
  Mostly for testing and debugging. Setting this enables APC for the CLI version of PHP. Under normal circumstances, it is not ideal to create, populate and destroy the APC cache on every CLI request, but for various test scenarios it is useful to be able to enable APC for the CLI version of PHP easily.
`apc.serializer` string
  Used to configure APC to use a third party serializer.
`apc.coredump_unmap` bool
  Enables APC handling of signals, such as SIGSEGV, that write core files when signaled. When these signals are received, APC will attempt to unmap the shared memory segment in order to exclude it from the core file. This setting may improve system stability when fatal signals are received and a large APC shared memory segment is configured.
  Uyarı

  This feature is potentially dangerous. Unmapping the shared memory segment in a fatal signal handler may cause undefined behaviour if a fatal error occurs.

  > Bilginize: Although some kernels may provide a facility to ignore various types of shared memory when generating a core dump file, these implementations may also ignore important shared memory segments such as the Apache scoreboard.

`apc.preload_path` string
  Optionally, set a path to the directory that APC will load cache data at startup.
`apc.use_request_time` bool
  Use the SAPI request start time for TTL.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`APC_ITER_ALL` (int)
`APC_ITER_ATIME` (int)
`APC_ITER_CTIME` (int)
`APC_ITER_DEVICE` (int)
`APC_ITER_DTIME` (int)
`APC_ITER_FILENAME` (int)
`APC_ITER_INODE` (int)
`APC_ITER_KEY` (int)
`APC_ITER_MD5` (int)
`APC_ITER_MEM_SIZE` (int)
`APC_ITER_MTIME` (int)
`APC_ITER_NONE` (int)
`APC_ITER_NUM_HITS` (int)
`APC_ITER_REFCOUNT` (int)
`APC_ITER_TTL` (int)
`APC_ITER_TYPE` (int)
`APC_ITER_VALUE` (int)
`APC_LIST_ACTIVE` (int)
`APC_LIST_DELETED` (int)

# APCu İşlevleri

# apcu_add

(PECL apcu >= 4.0.0)

apcu_add — Cache a new variable in the data store

### Açıklama

function apcu_add(string `$key`, mixed `$var`, int `$ttl` = 0): bool
function apcu_add(array `$values`, mixed `$unused` = NULL, int `$ttl` = 0): array

Caches a variable in the data store, only if it's not already stored.

> Bilginize: Unlike many other mechanisms in PHP, variables stored using apcu_add() will persist between requests (until the value is removed from the cache).

### Bağımsız Değişkenler

`key`
  Store the variable using this name. `key`s are cache-unique, so attempting to use apcu_add() to store data with a key that already exists will not overwrite the existing data, and will instead return `false`. (This is the only difference between apcu_add() and apcu_store().)
`var`
  The variable to store
`ttl`
  Time To Live; store `var` in the cache for `ttl` seconds. After the `ttl` has passed, the stored variable will be expunged from the cache (on the next request). If no `ttl` is supplied (or if the `ttl` is `0`), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).
`values`
  Names in key, variables in value.

### Dönen Değerler

Returns TRUE if something has effectively been added into the cache, FALSE otherwise. Second syntax returns array with error keys.

### Örnekler

Örnek 1 A apcu_add() example

    <?php
    $bar = 'BAR';
    apcu_add('foo', $bar);
    var_dump(apcu_fetch('foo'));
    echo "\n";
    $bar = 'NEVER GETS SET';
    apcu_add('foo', $bar);
    var_dump(apcu_fetch('foo'));
    echo "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "BAR"
    string(3) "BAR"

### Ayrıca Bakınız

- apcu_store() - Cache a variable in the data store
- apcu_fetch() - Fetch a stored variable from the cache
- apcu_delete() - Removes a stored variable from the cache

# apcu_cache_info

(PECL apcu >= 4.0.0)

apcu_cache_info — Retrieves cached information from APCu's data store

### Açıklama

function apcu_cache_info(bool `$limited` = `false`): array|false

Retrieves cached information and meta-data from APCu's data store.

### Bağımsız Değişkenler

`limited`
  If `limited` is `true`, the return value will exclude the individual list of cache entries. This is useful when trying to optimize calls for statistics gathering.

### Dönen Değerler

Array of cached data (and meta-data) başarısızlık durumunda `false` döner

> Bilginize: apcu_cache_info() will raise a warning if it is unable to retrieve APCu cache data. This typically occurs when APCu is not enabled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL apcu 3.0.11 | The `limited` parameter was introduced.
PECL apcu 3.0.16 | The "`filehits`" option for the `cache_type` parameter was introduced.

### Örnekler

Örnek 1 A apcu_cache_info() example

    <?php
    print_r(apcu_cache_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [num_slots] => 2000
        [ttl] => 0
        [num_hits] => 9
        [num_misses] => 3
        [start_time] => 1123958803
        [cache_list] => Array
            (
                [0] => Array
                    (
                        [filename] => /path/to/apcu_test.php
                        [device] => 29954
                        [inode] => 1130511
                        [type] => file
                        [num_hits] => 1
                        [mtime] => 1123960686
                        [creation_time] => 1123960696
                        [deletion_time] => 0
                        [access_time] => 1123962864
                        [ref_count] => 1
                        [mem_size] => 677
                    )
                [1] => Array (...iterates for each cached file)
    )

### Ayrıca Bakınız

- APCu configuration directives
- APCUIterator::getTotalSize() - Get total cache size
- APCUIterator::getTotalHits() - Get total cache hits
- APCUIterator::getTotalCount() - Get total count

# apcu_cas

(PECL apcu >= 4.0.0)

apcu_cas — Updates an old value with a new value

### Açıklama

function apcu_cas(string `$key`, int `$old`, int `$new`): bool

apcu_cas() updates an already existing integer value if the `old` parameter matches the currently stored value with the value of the `new` parameter.

### Bağımsız Değişkenler

`key`
  The key of the value being updated.
`old`
  The old value (the value currently stored).
`new`
  The new value to update to.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 apcu_cas() example

    <?php
    apcu_store('foobar', 2);
    echo '$foobar = 2', PHP_EOL;
    echo '$foobar == 1 ? 2 : 1 = ', (apcu_cas('foobar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;
    echo '$foobar == 2 ? 1 : 2 = ', (apcu_cas('foobar', 2, 1) ? 'ok' : 'fail'), PHP_EOL;

    echo '$foobar = ', apcu_fetch('foobar'), PHP_EOL;

    echo '$f__bar == 1 ? 2 : 1 = ', (apcu_cas('f__bar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;

    apcu_store('perfection', 'xyz');
    echo '$perfection == 2 ? 1 : 2 = ', (apcu_cas('perfection', 2, 1) ? 'ok' : 'epic fail'), PHP_EOL;

    echo '$foobar = ', apcu_fetch('foobar'), PHP_EOL;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $foobar = 2
    $foobar == 1 ? 2 : 1 = fail
    $foobar == 2 ? 1 : 2 = ok
    $foobar = 1
    $f__bar == 1 ? 2 : 1 = fail
    $perfection == 2 ? 1 : 2 = epic fail
    $foobar = 1

### Ayrıca Bakınız

- apcu_dec() - Decrease a stored number
- apcu_store() - Cache a variable in the data store

# apcu_clear_cache

(PECL apcu >= 4.0.0)

apcu_clear_cache — Clears the APCu cache

### Açıklama

function apcu_clear_cache(): bool

Clears the cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` always

### Ayrıca Bakınız

- apcu_cache_info() - Retrieves cached information from APCu's data store

# apcu_dec

(PECL apcu >= 4.0.0)

apcu_dec — Decrease a stored number

### Açıklama

function apcu_dec(
string `$key`,
int `$step` = 1,
bool `&$success` = ?,
int `$ttl` = 0
): int|false

Decreases a stored integer value.

### Bağımsız Değişkenler

`key`
  The key of the value being decreased.
`step`
  The step, or value to decrease.
`success`
  Optionally pass the success or fail boolean value to this referenced variable.
`ttl`
  TTL to use if the operation inserts a new value (rather than decrementing an existing one).

### Dönen Değerler

Returns the current value of `key`'s value on success, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 apcu_dec() example

    <?php
    echo "Let's do something with success", PHP_EOL;

    apcu_store('anumber', 42);

    echo apcu_fetch('anumber'), PHP_EOL;

    echo apcu_dec('anumber'), PHP_EOL;
    echo apcu_dec('anumber', 10), PHP_EOL;
    echo apcu_dec('anumber', 10, $success), PHP_EOL;

    var_dump($success);

    echo "Now, let's fail", PHP_EOL, PHP_EOL;

    apcu_store('astring', 'foo');

    $ret = apcu_dec('astring', 1, $fail);

    var_dump($ret);
    var_dump($fail);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Let's do something with success
    42
    41
    31
    21
    bool(true)
    Now, let's fail

    bool(false)
    bool(false)

### Ayrıca Bakınız

- apcu_inc() - Increase a stored number

# apcu_delete

(PECL apcu >= 4.0.0)

apcu_delete — Removes a stored variable from the cache

### Açıklama

function apcu_delete(mixed `$key`): mixed

Removes a stored variable from the cache.

### Bağımsız Değişkenler

`key`
  A `key` used to store the value as a string for a single key, or as an array of strings for several keys, or as an APCUIterator object.

### Dönen Değerler

If `key` is an array, an indexed array of the keys is returned. Otherwise `true` is returned on success, or `false` on failure.

### Örnekler

Örnek 1 A apcu_delete() example

    <?php
    $bar = 'BAR';
    apcu_store('foo', $bar);
    apcu_delete('foo');
    // this is obviously useless in this form

    // Alternatively delete multiple keys.
    apcu_delete(['foo', 'bar', 'baz']);

    // Or use an Iterator with a regular expression.
    apcu_delete(new APCUIterator('#^myprefix_#'));
    ?>

### Ayrıca Bakınız

- apcu_store() - Cache a variable in the data store
- apcu_fetch() - Fetch a stored variable from the cache
- apcu_clear_cache() - Clears the APCu cache
- APCUIterator

# apcu_enabled

(PECL apcu >= 4.0.3)

apcu_enabled — Whether APCu is usable in the current environment

### Açıklama

function apcu_enabled(): bool

Returns whether APCu is usable in the current environment.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` when APCu is usable in the current environment, `false` otherwise.

# apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry — Atomically fetch or generate a cache entry

### Açıklama

function apcu_entry(string `$key`, callable `$callback`, int `$ttl` = 0): mixed

Atomically attempts to find `key` in the cache, if it cannot be found `callback` is called, passing `key` as the only argument. The return value of the call is then cached with the optionally specified `ttl`, and returned.

> Bilginize: When control enters apcu_entry() the lock for the cache is acquired exclusively, it is released when control leaves apcu_entry(): In effect, this turns the body of `callback` into a critical section, disallowing two processes from executing the same code paths concurrently. In addition, it prohibits the concurrent execution of any other APCu functions, since they will acquire the same lock.

Uyarı

The only APCu function that can be called safely by `callback` is apcu_entry().

### Bağımsız Değişkenler

`key`
  Identity of cache entry
`callback`
  A callable that accepts `key` as the only argument and returns the value to cache.
`ttl`
  Time To Live; store the `callback`'s return value in the cache for `ttl` seconds. After the `ttl` has passed, the stored entry will be expunged from the cache (on the next request). If no `ttl` is supplied (or if the `ttl` is `0`), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

### Dönen Değerler

Returns the cached value

### Örnekler

Örnek 1 An apcu_entry() example

    <?php
    $config = apcu_entry("config", function($key) {
     return [
       "fruit" => apcu_entry("config.fruit", function($key){
         return [
           "apples",
           "pears"
         ];
       }),
       "people" => apcu_entry("config.people", function($key){
         return [
          "bob",
          "joe",
          "niki"
         ];
       })
     ];
    });

    var_dump($config);
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["fruit"]=>
      array(2) {
        [0]=>
        string(6) "apples"
        [1]=>
        string(5) "pears"
      }
      ["people"]=>
      array(3) {
        [0]=>
        string(3) "bob"
        [1]=>
        string(3) "joe"
        [2]=>
        string(4) "niki"
      }
    }

### Ayrıca Bakınız

- apcu_store() - Cache a variable in the data store
- apcu_fetch() - Fetch a stored variable from the cache
- apcu_delete() - Removes a stored variable from the cache

# apcu_exists

(PECL apcu >= 4.0.0)

apcu_exists — Checks if entry exists

### Açıklama

function apcu_exists(string|array `$keys`): bool|array

Checks if one or more APCu entries exist.

### Bağımsız Değişkenler

`keys`
  A string, or an array of strings, that contain keys.

### Dönen Değerler

Returns `true` if the key exists, otherwise `false` Or if an array was passed to `keys`, then an array is returned that contains all existing keys, or an empty array if none exist.

### Örnekler

Örnek 1 apcu_exists() example

    <?php
    $fruit  = 'apple';
    $veggie = 'carrot';

    apcu_store('foo', $fruit);
    apcu_store('bar', $veggie);

    if (apcu_exists('foo')) {
        echo "Foo exists: ";
        echo apcu_fetch('foo');
    } else {
        echo "Foo does not exist";
    }

    echo PHP_EOL;
    if (apcu_exists('baz')) {
        echo "Baz exists.";
    } else {
        echo "Baz does not exist";
    }

    echo PHP_EOL;

    $ret = apcu_exists(array('foo', 'donotexist', 'bar'));
    var_dump($ret);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Foo exists: apple
    Baz does not exist
    array(2) {
      ["foo"]=>
      bool(true)
      ["bar"]=>
      bool(true)
    }

### Ayrıca Bakınız

- apcu_cache_info() - Retrieves cached information from APCu's data store
- apcu_fetch() - Fetch a stored variable from the cache

# apcu_fetch

(PECL apcu >= 4.0.0)

apcu_fetch — Fetch a stored variable from the cache

### Açıklama

function apcu_fetch(mixed `$key`, bool `&$success` = ?): mixed

Fetches an entry from the cache.

### Bağımsız Değişkenler

`key`
  The `key` used to store the value (with apcu_store()). If an array is passed then each element is fetched and returned.
`success`
  Set to `true` in success and `false` in failure.

### Dönen Değerler

The stored variable or array of variables on success; `false` on failure

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL apcu 3.0.17 | The `success` parameter was added.

### Örnekler

Örnek 1 A apcu_fetch() example

    <?php
    $bar = 'BAR';
    apcu_store('foo', $bar);
    var_dump(apcu_fetch('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "BAR"

### Ayrıca Bakınız

- apcu_store() - Cache a variable in the data store
- apcu_delete() - Removes a stored variable from the cache
- APCUIterator

# apcu_inc

(PECL apcu >= 4.0.0)

apcu_inc — Increase a stored number

### Açıklama

function apcu_inc(
string `$key`,
int `$step` = 1,
bool `&$success` = ?,
int `$ttl` = 0
): int|false

Increases a stored number.

### Bağımsız Değişkenler

`key`
  The key of the value being increased.
`step`
  The step, or value to increase.
`success`
  Optionally pass the success or fail boolean value to this referenced variable.
`ttl`
  TTL to use if the operation inserts a new value (rather than incrementing an existing one).

### Dönen Değerler

Returns the current value of `key`'s value on success, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 apcu_inc() example

    <?php
    echo "Let's do something with success", PHP_EOL;

    apcu_store('anumber', 42);

    echo apcu_fetch('anumber'), PHP_EOL;

    echo apcu_inc('anumber'), PHP_EOL;
    echo apcu_inc('anumber', 10), PHP_EOL;
    echo apcu_inc('anumber', 10, $success), PHP_EOL;

    var_dump($success);

    echo "Now, let's fail", PHP_EOL, PHP_EOL;

    apcu_store('astring', 'foo');

    $ret = apcu_inc('astring', 1, $fail);

    var_dump($ret);
    var_dump($fail);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Let's do something with success
    42
    43
    53
    63
    bool(true)
    Now, let's fail

    bool(false)
    bool(false)

### Ayrıca Bakınız

- apcu_dec() - Decrease a stored number

# apcu_key_info

(PECL apcu >= 4.0.2)

apcu_key_info — Get detailed information about the cache key

### Açıklama

function apcu_key_info(string `$key`): ?array

Get detailed information about the cache key

### Bağımsız Değişkenler

`key`
  The key to retrieve information for.

### Dönen Değerler

An array containing the detailed information about the cache key, or `null` if the key does not exist.

### Örnekler

Örnek 1 A apcu_key_info() example

    <?php
    apcu_add('a','b');
    var_dump(apcu_key_info('a'));
    ?>

Yukarıdaki örneğin çıktısı:

    array(7) {
      ["hits"]=>
      int(0)
      ["access_time"]=>
      int(1606701783)
      ["mtime"]=>
      int(1606701783)
      ["creation_time"]=>
      int(1606701783)
      ["deletion_time"]=>
      int(0)
      ["ttl"]=>
      int(0)
      ["refs"]=>
      int(0)
    }

### Ayrıca Bakınız

- apcu_store() - Cache a variable in the data store
- apcu_fetch() - Fetch a stored variable from the cache
- apcu_delete() - Removes a stored variable from the cache

# apcu_sma_info

(PECL apcu >= 4.0.0)

apcu_sma_info — Retrieves APCu Shared Memory Allocation information

### Açıklama

function apcu_sma_info(bool `$limited` = `false`): array|false

Retrieves APCu Shared Memory Allocation information.

### Bağımsız Değişkenler

`limited`
  When set to `false` (default) apcu_sma_info() will return a detailed information about each segment.

### Dönen Değerler

Array of Shared Memory Allocation data; `false` on failure.

### Örnekler

Örnek 1 A apcu_sma_info() example

    <?php
    print_r(apcu_sma_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [num_seg] => 1
        [seg_size] => 31457280
        [avail_mem] => 31448408
        [block_lists] => Array
            (
                [0] => Array
                    (
                        [0] => Array
                            (
                                [size] => 31448408
                                [offset] => 8864
                            )

                    )

            )

    )

### Ayrıca Bakınız

- APCu configuration directives

# apcu_store

(PECL apcu >= 4.0.0)

apcu_store — Cache a variable in the data store

### Açıklama

function apcu_store(string `$key`, mixed `$var`, int `$ttl` = 0): bool
function apcu_store(array `$values`, mixed `$unused` = NULL, int `$ttl` = 0): array

Cache a variable in the data store.

> Bilginize: Unlike many other mechanisms in PHP, variables stored using apcu_store() will persist between requests (until the value is removed from the cache).

### Bağımsız Değişkenler

`key`
  Store the variable using this name. `key`s are cache-unique, so storing a second value with the same `key` will overwrite the original value.
`var`
  The variable to store
`ttl`
  Time To Live; store `var` in the cache for `ttl` seconds. After the `ttl` has passed, the stored variable will be expunged from the cache (on the next request). If no `ttl` is supplied (or if the `ttl` is `0`), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).
`values`
  Names in key, variables in value.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Second syntax returns array with error keys.

### Örnekler

Örnek 1 A apcu_store() example

    <?php
    $bar = 'BAR';
    apcu_store('foo', $bar);
    var_dump(apcu_fetch('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "BAR"

### Ayrıca Bakınız

- apcu_add() - Cache a new variable in the data store
- apcu_fetch() - Fetch a stored variable from the cache
- apcu_delete() - Removes a stored variable from the cache

## İçindekiler

- apcu_add — Cache a new variable in the data store
- apcu_cache_info — Retrieves cached information from APCu's data store
- apcu_cas — Updates an old value with a new value
- apcu_clear_cache — Clears the APCu cache
- apcu_dec — Decrease a stored number
- apcu_delete — Removes a stored variable from the cache
- apcu_enabled — Whether APCu is usable in the current environment
- apcu_entry — Atomically fetch or generate a cache entry
- apcu_exists — Checks if entry exists
- apcu_fetch — Fetch a stored variable from the cache
- apcu_inc — Increase a stored number
- apcu_key_info — Get detailed information about the cache key
- apcu_sma_info — Retrieves APCu Shared Memory Allocation information
- apcu_store — Cache a variable in the data store

# The APCUIterator class

(PECL apcu >= 5.0.0)

## Giriş

The APCUIterator class makes it easier to iterate over large APCu caches. This is helpful as it allows iterating over large caches in steps, while grabbing a defined number of entries per lock instance, so it frees the cache locks for other activities rather than hold up the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more efficient as it's been moved to the C level.

## Sınıf Sözdizimi

class APCUIterator implements Iterator {
/* Yöntemler */
public function __construct(
array|string|null `$search` = `null`,
int `$format` = APC_ITER_ALL,
int `$chunk_size` = 100,
int `$list` = APC_LIST_ACTIVE
)
public function current(): mixed
public function getTotalCount(): int
public function getTotalHits(): int
public function getTotalSize(): int
public function key(): string
public function next(): bool
public function rewind(): void
public function valid(): bool
}

# APCUIterator::__construct

(PECL apcu >= 5.0.0)

APCUIterator::__construct — Constructs an APCUIterator iterator object

### Açıklama

public function APCUIterator::__construct(
array|string|null `$search` = `null`,
int `$format` = APC_ITER_ALL,
int `$chunk_size` = 100,
int `$list` = APC_LIST_ACTIVE
)

Constructs an APCUIterator object.

### Bağımsız Değişkenler

`search`
  Either a PCRE regular expression that matches against APCu key names, given as a string. Or an array of strings with APCu key names. Or, optionally `null` to skip the search.
`format`
  The desired format, as configured with one or more of the APC_ITER_* constants.
`chunk_size`
  The chunk size. Must be a value greater than 0. The default value is 100.
`list`
  The type to list. Either pass in `APC_LIST_ACTIVE` or `APC_LIST_DELETED`.

### Örnekler

Örnek 1 A APCUIterator::__construct() example

    <?php
    foreach (new APCUIterator('/^counter\./') as $counter) {
        echo "$counter[key]: $counter[value]\n";
        apc_dec($counter['key'], $counter['value']);
    }
    ?>

### Ayrıca Bakınız

- apcu_exists() - Checks if entry exists
- apcu_cache_info() - Retrieves cached information from APCu's data store

# APCUIterator::current

(PECL apcu >= 5.0.0)

APCUIterator::current — Get current item

### Açıklama

public function APCUIterator::current(): mixed

Gets the current item from the APCUIterator stack.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the current item on success, or `false` if no more items exist, or on failure.

### Ayrıca Bakınız

- APCUIterator::next() - Move pointer to next item
- Iterator::current() - O anki elemanı döndürür

# APCUIterator::getTotalCount

(PECL apcu >= 5.0.0)

APCUIterator::getTotalCount — Get total count

### Açıklama

public function APCUIterator::getTotalCount(): int

Get the total count.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The total count.

### Ayrıca Bakınız

- APCUIterator::getTotalHits() - Get total cache hits
- APCUIterator::getTotalSize() - Get total cache size
- apcu_cache_info() - Retrieves cached information from APCu's data store

# APCUIterator::getTotalHits

(PECL apcu >= 5.0.0)

APCUIterator::getTotalHits — Get total cache hits

### Açıklama

public function APCUIterator::getTotalHits(): int

Gets the total number of cache hits.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of hits on success, or `false` on failure.

### Ayrıca Bakınız

- APCUIterator::getTotalCount() - Get total count
- APCUIterator::getTotalSize() - Get total cache size
- apcu_cache_info() - Retrieves cached information from APCu's data store

# APCUIterator::getTotalSize

(PECL apcu >= 5.0.0)

APCUIterator::getTotalSize — Get total cache size

### Açıklama

public function APCUIterator::getTotalSize(): int

Gets the total cache size.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The total cache size.

### Ayrıca Bakınız

- APCUIterator::getTotalCount() - Get total count
- APCUIterator::getTotalHits() - Get total cache hits
- apc_cache_info()

# APCUIterator::key

(PECL apcu >= 5.0.0)

APCUIterator::key — Get iterator key

### Açıklama

public function APCUIterator::key(): string

Gets the current iterator key.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the key on success, or `false` upon failure.

### Ayrıca Bakınız

- APCUIterator::current() - Get current item
- Iterator::key() - O anki elemanın anahtarını döndürür

# APCUIterator::next

(PECL apcu >= 5.0.0)

APCUIterator::next — Move pointer to next item

### Açıklama

public function APCUIterator::next(): bool

Moves the iterator pointer to the next element.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- APCUIterator::current() - Get current item
- APCUIterator::rewind() - Rewinds iterator
- Iterator::next() - Konumu sonraki elemana ilerletir

# APCUIterator::rewind

(PECL apcu >= 5.0.0)

APCUIterator::rewind — Rewinds iterator

### Açıklama

public function APCUIterator::rewind(): void

Rewinds back the iterator to the first element.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- APCUIterator::next() - Move pointer to next item
- Iterator::next() - Konumu sonraki elemana ilerletir

# APCUIterator::valid

(PECL apcu >= 5.0.0)

APCUIterator::valid — Checks if current position is valid

### Açıklama

public function APCUIterator::valid(): bool

Checks if the current iterator position is valid.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the current iterator position is valid, otherwise `false`.

### Ayrıca Bakınız

- APCUIterator::current() - Get current item
- Iterator::valid() - O anki konum geçerli mi diye bakar

## İçindekiler

- APCUIterator::__construct — Constructs an APCUIterator iterator object
- APCUIterator::current — Get current item
- APCUIterator::getTotalCount — Get total count
- APCUIterator::getTotalHits — Get total cache hits
- APCUIterator::getTotalSize — Get total cache size
- APCUIterator::key — Get iterator key
- APCUIterator::next — Move pointer to next item
- APCUIterator::rewind — Rewinds iterator
- APCUIterator::valid — Checks if current position is valid

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- APCu İşlevleri
  - apcu_add — Cache a new variable in the data store
  - apcu_cache_info — Retrieves cached information from APCu's data store
  - apcu_cas — Updates an old value with a new value
  - apcu_clear_cache — Clears the APCu cache
  - apcu_dec — Decrease a stored number
  - apcu_delete — Removes a stored variable from the cache
  - apcu_enabled — Whether APCu is usable in the current environment
  - apcu_entry — Atomically fetch or generate a cache entry
  - apcu_exists — Checks if entry exists
  - apcu_fetch — Fetch a stored variable from the cache
  - apcu_inc — Increase a stored number
  - apcu_key_info — Get detailed information about the cache key
  - apcu_sma_info — Retrieves APCu Shared Memory Allocation information
  - apcu_store — Cache a variable in the data store
- APCUIterator — The APCUIterator class
  - APCUIterator::__construct — Constructs an APCUIterator iterator object
  - APCUIterator::current — Get current item
  - APCUIterator::getTotalCount — Get total count
  - APCUIterator::getTotalHits — Get total cache hits
  - APCUIterator::getTotalSize — Get total cache size
  - APCUIterator::key — Get iterator key
  - APCUIterator::next — Move pointer to next item
  - APCUIterator::rewind — Rewinds iterator
  - APCUIterator::valid — Checks if current position is valid

# Componere

# Giriş

Componere (latin, English: compose) targets production environments and provides an API for composition of classes, monkey patching, and casting.

##### Composition:

Componere\Definition is used to define (or redefine) a class at runtime; The class can then be registered, and in the case of redefinition it replaces the original class for as long as the Componere\Definition exists.

public function Componere\Definition::__construct(string `$name`)
public function Componere\Definition::__construct(string `$name`, string `$parent`)
public function Componere\Definition::__construct(string `$name`, array `$interfaces`)
public function Componere\Definition::__construct(string `$name`, string `$parent`, array `$interfaces`)

##### Patching:

Componere\Patch is used to change the class of a specific instance of an object at runtime; Upon application the patch will remain applied for as long as the Componere\Patch exists, and can be reverted explicitly.

public function Componere\Patch::__construct(object `$instance`)
public function Componere\Patch::__construct(object `$instance`, array `$interfaces`)

##### Casting:

Componere\ casting functions can cast among user defined compatible types; Where compatible means Type is sub or super to the type of `object`.

function Componere\cast(string `$type`, object `$object`): object
function Componere\cast_by_ref(string `$type`, object `$object`): object

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

Reflection is required

## Kurulum

Componere source and releases are available on » github

# The Componere\Abstract\Definition class

(Componere 2 >= 2.1.0)

## Giriş

This final abstract represents a class entry, and should not be used by the programmer.

## Sınıf Sözdizimi

final abstract class Componere\Abstract\Definition {
/* Yöntemler */
public function addInterface(string `$interface`): Definition
public function addMethod(string `$name`, Componere\Method `$method`): Definition
public function addTrait(string `$trait`): Definition
public function getReflector(): ReflectionClass
}

# Componere\Abstract\Definition::addInterface

(Componere 2 >= 2.1.0)

Componere\Abstract\Definition::addInterface — Add Interface

### Açıklama

public function Componere\Abstract\Definition::addInterface(string `$interface`): Definition

Shall implement the given interface on the current definition

### Bağımsız Değişkenler

`interface`
  The case insensitive name of an interface

### Dönen Değerler

The current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

# Componere\Abstract\Definition::addMethod

(Componere 2 >= 2.1.0)

Componere\Abstract\Definition::addMethod — Add Method

### Açıklama

public function Componere\Abstract\Definition::addMethod(string `$name`, Componere\Method `$method`): Definition

Shall create or override a method on the current definition.

### Bağımsız Değişkenler

`name`
  The case insensitive name for method
`method`
  Componere\Method not previously added to another Definition

### Dönen Değerler

The current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

Uyarı

Shall throw RuntimeException if Method was added to another Definition

# Componere\Abstract\Definition::addTrait

(Componere 2 >= 2.1.0)

Componere\Abstract\Definition::addTrait — Add Trait

### Açıklama

public function Componere\Abstract\Definition::addTrait(string `$trait`): Definition

Shall use the given trait for the current definition

### Bağımsız Değişkenler

`trait`
  The case insensitive name of a trait

### Dönen Değerler

The current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

# Componere\Abstract\Definition::getReflector

(Componere 2 >= 2.1.0)

Componere\Abstract\Definition::getReflector — Reflection

### Açıklama

public function Componere\Abstract\Definition::getReflector(): ReflectionClass

Shall create or return a ReflectionClass

### Dönen Değerler

A ReflectionClass for the current definition (cached)

## İçindekiler

- Componere\Abstract\Definition::addInterface — Add Interface
- Componere\Abstract\Definition::addMethod — Add Method
- Componere\Abstract\Definition::addTrait — Add Trait
- Componere\Abstract\Definition::getReflector — Reflection

# The Componere\Definition class

(Componere 2 >= 2.1.0)

## Giriş

The Definition class allows the programmer to build and register a type at runtime.

Should a Definition replace an existing class, the existing class will be restored when the Definition is destroyed.

## Sınıf Sözdizimi

final class Componere\Definition extends Componere\Abstract\Definition {
/* Constructors */
public function __construct(string `$name`)
public function __construct(string `$name`, string `$parent`)
public function __construct(string `$name`, array `$interfaces`)
public function __construct(string `$name`, string `$parent`, array `$interfaces`)
/* Yöntemler */
public function addConstant(string `$name`, Componere\Value `$value`): Definition
public function addProperty(string `$name`, Componere\Value `$value`): Definition
public function register(): void
public function isRegistered(): bool
public function getClosure(string `$name`): Closure
public function getClosures(): array
/* Miras alınan yöntemler */
public function Componere\Abstract\Definition::addInterface(string `$interface`): Definition
public function Componere\Abstract\Definition::addMethod(string `$name`, Componere\Method `$method`): Definition
public function Componere\Abstract\Definition::addTrait(string `$trait`): Definition
public function Componere\Abstract\Definition::getReflector(): ReflectionClass
}

# Componere\Definition::__construct

(Componere 2 >= 2.1.0)

Componere\Definition::__construct — Definition Construction

### Açıklama

public function Componere\Definition::__construct(string `$name`)
public function Componere\Definition::__construct(string `$name`, string `$parent`)
public function Componere\Definition::__construct(string `$name`, array `$interfaces`)
public function Componere\Definition::__construct(string `$name`, string `$parent`, array `$interfaces`)

### Bağımsız Değişkenler

`name`
  A case insensitive class name
`parent`
  A case insensitive class name
`interfaces`
  An array of case insensitive class names

### Exceptions

Uyarı

Shall throw InvalidArgumentException if an attempt is made to replace an internal class

Uyarı

Shall throw InvalidArgumentException if an attempt is made to replace an interface

Uyarı

Shall throw InvalidArgumentException if an attempt is made to replace a trait

Uyarı

Shall throw RuntimeException if a class in `interfaces` cannot be found

Uyarı

Shall throw RuntimeException if a class in `interfaces` is not an interface

# Componere\Definition::addConstant

(Componere 2 >= 2.1.0)

Componere\Definition::addConstant — Add Constant

### Açıklama

public function Componere\Definition::addConstant(string `$name`, Componere\Value `$value`): Definition

Shall declare a class constant on the current Definition

### Bağımsız Değişkenler

`name`
  The case sensitive name for the constant
`value`
  The Value for the constant, must not be undefined or static

### Dönen Değerler

The current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

Uyarı

Shall throw RuntimeException if `name` is already declared as a constant

Uyarı

Shall throw RuntimeException if `value` is static

Uyarı

Shall throw RuntimeException if `value` is undefined

# Componere\Definition::addProperty

(Componere 2 >= 2.1.0)

Componere\Definition::addProperty — Add Property

### Açıklama

public function Componere\Definition::addProperty(string `$name`, Componere\Value `$value`): Definition

Shall declare a class property on the current Definition

### Bağımsız Değişkenler

`name`
  The case sensitive name for the property
`value`
  The default Value for the property

### Dönen Değerler

The current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

Uyarı

Shall throw RuntimeException if `name` is already declared as a property

# Componere\Definition::register

(Componere 2 >= 2.1.0)

Componere\Definition::register — Registration

### Açıklama

public function Componere\Definition::register(): void

Shall register the current Definition

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

# Componere\Definition::isRegistered

(Componere 2 >= 2.1.0)

Componere\Definition::isRegistered — State Detection

### Açıklama

public function Componere\Definition::isRegistered(): bool

Shall detect the registration state of this Definition

### Dönen Değerler

Shall return true if this Definition is registered

# Componere\Definition::getClosure

(Componere 2 >= 2.1.0)

Componere\Definition::getClosure — Get Closure

### Açıklama

public function Componere\Definition::getClosure(string `$name`): Closure

Shall return a Closure for the method specified by name

### Bağımsız Değişkenler

`name`
  The case insensitive name of the method

### Dönen Değerler

A Closure bound to the correct scope

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

Uyarı

Shall throw RuntimeException if `name` could not be found

# Componere\Definition::getClosures

(Componere 2 >= 2.1.0)

Componere\Definition::getClosures — Get Closures

### Açıklama

public function Componere\Definition::getClosures(): array

Shall return an array of Closures

### Dönen Değerler

Shall return all methods as an array of Closure objects bound to the correct scope

### Exceptions

Uyarı

Shall throw RuntimeException if Definition was registered

## İçindekiler

- Componere\Definition::__construct — Definition Construction
- Componere\Definition::addConstant — Add Constant
- Componere\Definition::addProperty — Add Property
- Componere\Definition::register — Registration
- Componere\Definition::isRegistered — State Detection
- Componere\Definition::getClosure — Get Closure
- Componere\Definition::getClosures — Get Closures

# The Componere\Patch class

(Componere 2 >= 2.1.0)

## Giriş

The Patch class allows the programmer to change the type of an instance at runtime without registering a new Definition

When a Patch is destroyed it is reverted, so that instances that were patched during the lifetime of the Patch are restored to their formal type.

## Sınıf Sözdizimi

final class Componere\Patch extends Componere\Abstract\Definition {
/* Constructors */
public function __construct(object `$instance`)
public function __construct(object `$instance`, array `$interfaces`)
/* Yöntemler */
public function apply(): void
public function revert(): void
public function isApplied(): bool
public function derive(object `$instance`): Patch
public function getClosure(string `$name`): Closure
public function getClosures(): array
/* Miras alınan yöntemler */
public function Componere\Abstract\Definition::addInterface(string `$interface`): Definition
public function Componere\Abstract\Definition::addMethod(string `$name`, Componere\Method `$method`): Definition
public function Componere\Abstract\Definition::addTrait(string `$trait`): Definition
public function Componere\Abstract\Definition::getReflector(): ReflectionClass
}

# Componere\Patch::__construct

(Componere 2 >= 2.1.0)

Componere\Patch::__construct — Patch Construction

### Açıklama

public function Componere\Patch::__construct(object `$instance`)
public function Componere\Patch::__construct(object `$instance`, array `$interfaces`)

### Bağımsız Değişkenler

`instance`
  The target for this Patch
`interfaces`
  A case insensitive array of class names

### Exceptions

Uyarı

Shall throw RuntimeException if a class in `interfaces` cannot be found

Uyarı

Shall throw RuntimeException if a class in `interfaces` is not an interface

# Componere\Patch::apply

(Componere 2 >= 2.1.0)

Componere\Patch::apply — Application

### Açıklama

public function Componere\Patch::apply(): void

Shall apply the current patch

# Componere\Patch::revert

(Componere 2 >= 2.1.0)

Componere\Patch::revert — Reversal

### Açıklama

public function Componere\Patch::revert(): void

Shall revert the current patch

# Componere\Patch::isApplied

(Componere 2 >= 2.1.0)

Componere\Patch::isApplied — State Detection

### Açıklama

public function Componere\Patch::isApplied(): bool

# Componere\Patch::derive

(Componere 2 >= 2.1.1)

Componere\Patch::derive — Patch Derivation

### Açıklama

public function Componere\Patch::derive(object `$instance`): Patch

Shall derive a Patch for the given `instance`

### Bağımsız Değişkenler

`instance`
  The target for the derived Patch

### Dönen Değerler

Patch for `instance` derived from the current Patch

### Exceptions

Uyarı

Shall throw InvalidArgumentException if `instance` is not compatible

# Componere\Patch::getClosure

(Componere 2 >= 2.1.0)

Componere\Patch::getClosure — Get Closure

### Açıklama

public function Componere\Patch::getClosure(string `$name`): Closure

Shall return a Closure for the method specified by name

### Bağımsız Değişkenler

`name`
  The case insensitive name of the method

### Dönen Değerler

A Closure bound to the correct scope and object

### Exceptions

Uyarı

Shall throw RuntimeException if `name` could not be found

# Componere\Patch::getClosures

(Componere 2 >= 2.1.0)

Componere\Patch::getClosures — Get Closures

### Açıklama

public function Componere\Patch::getClosures(): array

Shall return an array of Closures

### Dönen Değerler

Shall return all methods as an array of Closure objects bound to the correct scope and object

## İçindekiler

- Componere\Patch::__construct — Patch Construction
- Componere\Patch::apply — Application
- Componere\Patch::revert — Reversal
- Componere\Patch::isApplied — State Detection
- Componere\Patch::derive — Patch Derivation
- Componere\Patch::getClosure — Get Closure
- Componere\Patch::getClosures — Get Closures

# The Componere\Method class

(Componere 2 >= 2.1.0)

## Giriş

A Method represents a function with modifiable accessibility flags

## Sınıf Sözdizimi

final class Componere\Method {
/* Constructor */
public function __construct(Closure `$closure`)
/* Yöntemler */
public function setPrivate(): Method
public function setProtected(): Method
public function setStatic(): Method
public function getReflector(): ReflectionMethod
}

# Componere\Method::__construct

(Componere 2 >= 2.1.0)

Componere\Method::__construct — Method Construction

### Açıklama

public function Componere\Method::__construct(Closure `$closure`)

### Bağımsız Değişkenler

`closure`

# Componere\Method::setPrivate

(Componere 2 >= 2.1.0)

Componere\Method::setPrivate — Accessibility Modification

### Açıklama

public function Componere\Method::setPrivate(): Method

### Dönen Değerler

The current Method

### Exceptions

Uyarı

Shall throw RuntimeException if access level was previously set

# Componere\Method::setProtected

(Componere 2 >= 2.1.0)

Componere\Method::setProtected — Accessibility Modification

### Açıklama

public function Componere\Method::setProtected(): Method

### Dönen Değerler

The current Method

### Exceptions

Uyarı

Shall throw RuntimeException if access level was previously set

# Componere\Method::setStatic

(Componere 2 >= 2.1.0)

Componere\Method::setStatic — Accessibility Modification

### Açıklama

public function Componere\Method::setStatic(): Method

### Dönen Değerler

The current Method

# Componere\Method::getReflector

(Componere 2 >= 2.1.0)

Componere\Method::getReflector — Reflection

### Açıklama

public function Componere\Method::getReflector(): ReflectionMethod

Shall create or return a ReflectionMethod

### Dönen Değerler

A ReflectionMethod for the current method (cached)

## İçindekiler

- Componere\Method::__construct — Method Construction
- Componere\Method::setPrivate — Accessibility Modification
- Componere\Method::setProtected — Accessibility Modification
- Componere\Method::setStatic — Accessibility Modification
- Componere\Method::getReflector — Reflection

# The Componere\Value class

(Componere 2 >= 2.1.0)

## Giriş

A Value represents a PHP variable of all types, including undefined

## Sınıf Sözdizimi

final class Componere\Value {
/* Constructor */
public function __construct(mixed `$default` = ?)
/* Yöntemler */
public function setPrivate(): Value
public function setProtected(): Value
public function setStatic(): Value
public function isPrivate(): bool
public function isProtected(): bool
public function isStatic(): bool
public function hasDefault(): bool
}

# Componere\Value::__construct

(Componere 2 >= 2.1.0)

Componere\Value::__construct — Value Construction

### Açıklama

public function Componere\Value::__construct(mixed `$default` = ?)

### Bağımsız Değişkenler

`default`

### Exceptions

Uyarı

Shall throw InvalidArgumentException if `default` does not have a suitable value

# Componere\Value::setPrivate

(Componere 2 >= 2.1.0)

Componere\Value::setPrivate — Accessibility Modification

### Açıklama

public function Componere\Value::setPrivate(): Value

### Dönen Değerler

The current Value

### Exceptions

Uyarı

Shall throw RuntimeException if access level was previously set

# Componere\Value::setProtected

(Componere 2 >= 2.1.0)

Componere\Value::setProtected — Accessibility Modification

### Açıklama

public function Componere\Value::setProtected(): Value

### Dönen Değerler

The current Value

### Exceptions

Uyarı

Shall throw RuntimeException if access level was previously set

# Componere\Value::setStatic

(Componere 2 >= 2.1.0)

Componere\Value::setStatic — Accessibility Modification

### Açıklama

public function Componere\Value::setStatic(): Value

### Dönen Değerler

The current Value

# Componere\Value::isPrivate

(Componere 2 >= 2.1.0)

Componere\Value::isPrivate — Accessibility Detection

### Açıklama

public function Componere\Value::isPrivate(): bool

# Componere\Value::isProtected

(Componere 2 >= 2.1.0)

Componere\Value::isProtected — Accessibility Detection

### Açıklama

public function Componere\Value::isProtected(): bool

# Componere\Value::isStatic

(Componere 2 >= 2.1.0)

Componere\Value::isStatic — Accessibility Detection

### Açıklama

public function Componere\Value::isStatic(): bool

# Componere\Value::hasDefault

(Componere 2 >= 2.1.0)

Componere\Value::hasDefault — Value Interaction

### Açıklama

public function Componere\Value::hasDefault(): bool

## İçindekiler

- Componere\Value::__construct — Value Construction
- Componere\Value::setPrivate — Accessibility Modification
- Componere\Value::setProtected — Accessibility Modification
- Componere\Value::setStatic — Accessibility Modification
- Componere\Value::isPrivate — Accessibility Detection
- Componere\Value::isProtected — Accessibility Detection
- Componere\Value::isStatic — Accessibility Detection
- Componere\Value::hasDefault — Value Interaction

# Componere İşlevleri

# Componere\cast

(Componere 2 >= 2.1.2)

Componere\cast — Casting

### Açıklama

function Componere\cast(string `$type`, object `$object`): object

### Bağımsız Değişkenler

`type`
  A user defined type
`object`
  An object with a user defined type compatible with Type

### Dönen Değerler

An object of type Type, cast from `object`

### Hatalar/İstisnalar

Uyarı

Shall throw InvalidArgumentException if the type of `object` is or is derived from an internal class

Uyarı

Shall throw InvalidArgumentException if Type is an interface

Uyarı

Shall throw InvalidArgumentException if Type is a trait

Uyarı

Shall throw InvalidArgumentException if Type is an abstract

Uyarı

Shall throw InvalidArgumentException if Type is not compatible with the type of `object`

### Ayrıca Bakınız

- Componere\cast_by_ref

# Componere\cast_by_ref

(Componere 2 >= 2.1.2)

Componere\cast_by_ref — Casting

### Açıklama

function Componere\cast_by_ref(string `$type`, object `$object`): object

### Bağımsız Değişkenler

type
  A user defined type
`object`
  An object with a user defined type compatible with Type

### Dönen Değerler

An object of type Type, cast from `object`, where members are references to `object` members

### Hatalar/İstisnalar

Uyarı

Shall throw InvalidArgumentException if the type of `object` is or is derived from an internal class

Uyarı

Shall throw InvalidArgumentException if Type is an interface

Uyarı

Shall throw InvalidArgumentException if Type is a trait

Uyarı

Shall throw InvalidArgumentException if Type is an abstract

Uyarı

Shall throw InvalidArgumentException if Type is not compatible with the type of `object`

### Ayrıca Bakınız

- Componere\cast

## İçindekiler

- Componere\cast — Casting
- Componere\cast_by_ref — Casting

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Componere\Abstract\Definition — The Componere\Abstract\Definition class
  - Componere\Abstract\Definition::addInterface — Add Interface
  - Componere\Abstract\Definition::addMethod — Add Method
  - Componere\Abstract\Definition::addTrait — Add Trait
  - Componere\Abstract\Definition::getReflector — Reflection
- Componere\Definition — The Componere\Definition class
  - Componere\Definition::__construct — Definition Construction
  - Componere\Definition::addConstant — Add Constant
  - Componere\Definition::addProperty — Add Property
  - Componere\Definition::register — Registration
  - Componere\Definition::isRegistered — State Detection
  - Componere\Definition::getClosure — Get Closure
  - Componere\Definition::getClosures — Get Closures
- Componere\Patch — The Componere\Patch class
  - Componere\Patch::__construct — Patch Construction
  - Componere\Patch::apply — Application
  - Componere\Patch::revert — Reversal
  - Componere\Patch::isApplied — State Detection
  - Componere\Patch::derive — Patch Derivation
  - Componere\Patch::getClosure — Get Closure
  - Componere\Patch::getClosures — Get Closures
- Componere\Method — The Componere\Method class
  - Componere\Method::__construct — Method Construction
  - Componere\Method::setPrivate — Accessibility Modification
  - Componere\Method::setProtected — Accessibility Modification
  - Componere\Method::setStatic — Accessibility Modification
  - Componere\Method::getReflector — Reflection
- Componere\Value — The Componere\Value class
  - Componere\Value::__construct — Value Construction
  - Componere\Value::setPrivate — Accessibility Modification
  - Componere\Value::setProtected — Accessibility Modification
  - Componere\Value::setStatic — Accessibility Modification
  - Componere\Value::isPrivate — Accessibility Detection
  - Componere\Value::isProtected — Accessibility Detection
  - Componere\Value::isStatic — Accessibility Detection
  - Componere\Value::hasDefault — Value Interaction
- Componere İşlevleri
  - Componere\cast — Casting
  - Componere\cast_by_ref — Casting

# Hata İşleme ve Günlükleme

# Giriş

Bu işlevler hataların elde edilmesi ve günlük kayıtlarının tutulması ile ilgilidir. Bu işlevlerle kendi hata işleme kurallarınızı tanımlayabileceğiniz gibi hataların günlük dosyalarına nasıl kaydedileceğiyle ilgili değişiklikler de yapabilirsiniz. Böylece hata bildirimini ihtiyaçlarınıza uygun bir biçimde değiştirebilir veya genişletebilirsiniz.

Hata iletilerini günlük kayıt işlevleriyle doğrudan diğer makinelere, bir eposta adresine, sistem günlüklerine ve benzerlerine gönderebilirsiniz. Dolayısıyla, uygulamanızın veya sitenizin en önemli kısımlarını gözlem altında tutabilir ve bunlardan istediklerinizi günlük dosyalarına kaydedebilirsiniz.

Hata bildirim işlevleri, basit uyarılardan özel işlevlerin döndürdükleri hatalara kadar bir yelpazede geribildirim çeşidini ve seviyesini belirleyebilme olanağını verır.

# Yapılandırma/Kurulum

## İçindekiler

- Çalışma Anı Yapılandırması

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Hatalar ve Günlük Kaydı ile ilgili Yapılandırma Yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
error_reporting | NULL | `INI_ALL` |
fatal_error_backtraces | "1" | `INI_ALL` | PHP 8.5.0'dan beri kullanılabilmektedir.
display_errors | "1" | `INI_ALL` |
display_startup_errors | "1" | `INI_ALL` | PHP 8.0.0 öncesinde, öntanımlı değer `"0"` idi.
log_errors | "0" | `INI_ALL` |
log_errors_max_len | "1024" | `INI_ALL` | PHP 8.0.0 ve sonrasında etkisisiz olup PHP 8.1.0 ve sonrasında kaldırılmıştır.
ignore_repeated_errors | "0" | `INI_ALL` |
ignore_repeated_source | "0" | `INI_ALL` |
report_memleaks | "1" | `INI_ALL` | PHP 8.5.0 ve sonrasında kullanımı önerilmemektedir.
track_errors | "0" | `INI_ALL` | PHP 7.2.0 ve sonrasında kullanımı önerilmemekte olup PHP 8.0.0'da kullanımdan kaldırılmıştır.
html_errors | "1" | `INI_ALL` |
xmlrpc_errors | "0" | `INI_SYSTEM` |
xmlrpc_error_number | "0" | `INI_ALL` |
docref_root | "" | `INI_ALL` |
docref_ext | "" | `INI_ALL` | PHP 4.3.2'den beri kullanılabilmektedir.
error_prepend_string | NULL | `INI_ALL` |
error_append_string | NULL | `INI_ALL` |
error_log | NULL | `INI_ALL` |
error_log_mode | 0o644 | `INI_ALL` | Available as of PHP 8.2.0
syslog.facility | "LOG_USER" | `INI_SYSTEM` | PHP 7.3.0 ve sonrasında mevcuttur.
syslog.filter | "no-ctrl" | `INI_ALL` | PHP 7.3.0 ve sonrasında mevcuttur.
syslog.ident | "php" | `INI_SYSTEM` | PHP 7.3.0 ve sonrasında mevcuttur.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`error_reporting` int

  Hata raporlama seviyesini tanımlar. Bağımsız değişken olarak ya bir bit alanını ifade eden bir tamsayı ya da isimli sabitler verilebilir. Hata raporlama seviyeleri ve sabitleri Öntanımlı Sabitler sayfasında ve php.ini içinde açıklanmıştır. Hata raporlama seviyesini çalışma anında belirtmek için error_reporting() işlevini kullanabilirsiniz. Ayrıca, display_errors yönergesine de bakınız.

  `E_ALL` öntanımlıdır.

  PHP 8.0.0 öncesinde, öntanımlı değer ``E_ALL` & ~`E_NOTICE` & ~`E_STRICT` & ~`E_DEPRECATED`` idi. Yani, `E_NOTICE`, `E_STRICT` ve `E_DEPRECATED` seviyesinden hatalar gösterilmiyordu.

  > Bilginize: PHP dışında PHP sabitleri

  > httpd.conf gibi PHP dışı yerlerde PHP sabitlerini kullanmak isterseniz, bunların tamsayı değerlerini kullanmak zorunda kalmak anlamlarını anlamayı zorlaştırdığı için elverişli olmayacaktır. Zamanla başka hata seviyeleri ekleneceğinden azami değer de (`E_ALL` değeri) değişecektir. Bu bakımdan `E_ALL` yerine şimdiki ve gelecekteki tüm bit alanlarını kapsamak üzere `2147483647` gibi büyük bir değer kullanabilirsiniz (`E_ALL`'dan başka tüm hataları da içerir).

`fatal_error_backtraces` bool
  Ölümcül hataların geri izleme (backtrace) içerip içermeyeceğini denetler. Ölümcül hatalar: `E_ERROR`, `E_CORE_ERROR`, `E_COMPILE_ERROR`, `E_USER_ERROR`, `E_RECOVERABLE_ERROR`, `E_PARSE`.
`display_errors` string

  Hataların çıktının bir parçası olarak ekrana basılıp basılmayacağını veya bunların kullanıcıdan gizlenip gizlenmeyeceğini belirler.

  - `Off` - herhangi bir hata gösterilmez.
  - `On` veya `stdout` - hatalar `stdout`'a (standart çıktıya) gönderilir. Bu ön tanımlıdır.
  - `stderr` - hatalar `stderr`'e (standart hataya) gönderilir. Yalnızca `CLI`, `phpdbg` ve `CGI` SAPI'lerinde etkilidir.

  Paketlemede `php.ini-development` içinde `On`, `php.ini-production` içinde `Off`'tur.

  > Bilginize: Bu özellik sizi geliştirme aşamasında desteklemek amacıyla konmuştur ve kullanıcıya yönelik işlemler için asla kullanılmamalıdır.

  > Bilginize:

  > Bu yönergeye çalışma anında (ini_set() ile) değer atanabilse de, eğer betik ölümcül bir hataya sahipse bunun herhangi bir etkisi olmayacaktır. Bunun sebebi çalışma anında istenen eylemin yerine getirilmeyecek olmasıdır.

`display_startup_errors` bool

  `display_errors` etkin olsa bile PHP ilk başlatılırken oluşan hatalar gösterilmez. Hata ayıklamıyorsanız `display_startup_errors` yönergesinin değerini `off` olarak bırakın.

`log_errors` bool

  Betiğin hata iletilerinin sunucunun hata günlüğüne veya error_log ile belirtilen dosyaya kaydedilip kaydedilmeyeceğini belirler. Bu seçenek sunucuya özgüdür.

  > Bilginize:

  > Sitenizde hataları kullanıcıya göstermek yerine hata günlüklerine kaydetmenizi hararetle tavsiye ederiz.

`log_errors_max_len` int

  Hata günlüğü iletilerinin azami uzunluğunu bayt cinsinden belirlemek için kullanılır. Kaynak hakkındaki error_log bilgisi buna eklenir. 1024 öntanımlı değer olup, 0 belirtildiği takdirde hata günlüğü iletilerininin uzunlukları sınırlanmaz. Bu uzunluk günlüğe kaydedilen ve gösterilen hata iletilerinden başka $php_errormsg iletilerine de uygulanır fakat error_log() gibi açıkça çağrılan işlevlerde uygulanmaz.

  int türünde bir değer kullanıldığında değer baytların sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri hakkında bilgiyi bu SSS altında bulabilirsiniz.
`ignore_repeated_errors` bool

  Yinelenen hata iletileri günlüğe kaydedilmez. ignore_repeated_source yönergesinin değeri `true` olmadıkça yinelenen hataların aynı dosyanın aynı satırında oluşması gerekir.

`ignore_repeated_source` bool

  Yinelenen iletiler yok sayılırken ileti kaynağının da yoksayılmasını sağlar. Bu yönergenin değeri `On` olduğu takdirde, farklı dosyalardan veya farklı satırlardan kaynaklanan yinelenmiş iletiler hata günlüklerine kaydedilemez.

`report_memleaks` bool
  Bu yönergenin değeri `Off` olduğu takdirde, bellek sızıntıları (`stdout`'ta veya günlük dosyasında) gösterilmez. Bu sadece, hata ayıklama derlemesinde ve error_reporting yönergesinde `E_WARNING` listeye dahil edilmişse etkilidir.
  Uyarı

  This feature has been DEPRECATED as of PHP 8.5.0. Relying on this feature is highly discouraged.

`track_errors` bool

  Bu yönergenin değeri `On` olduğu takdirde, son hata iletisi daima $php_errormsg değişkenine atanır.

`html_errors` bool

  Hata iletilerine HTML etiketleri dahil edilmez. Yeni HTML hataları biçeminde, doğrudan kullanıcıyı hatayı veya hataya sebep olan işlemi açıklayan bir sayfaya yönlendiren tıklanabilir hatalar üretilir. Bu gönderimler docref_root ve docref_ext yönergelerinden etkilenir.

`xmlrpc_errors` bool

  Normal hata raporlaması kapatılıp, hatalar XML-RPC hata iletileri olarak biçemlenir.

`xmlrpc_error_number` int

  XML-RPC hata dizisinin `faultCode` elemanının değeri olarak bu değer kullanılır (bkz. xmlrpc_is_fault()).

`docref_root` string

  Yeni hata biçemi, hatayı veya hataya sebep olan işlemi açıklayan bir sayfaya bir gönderim içerir. Bu gönderimin bir kılavuz sayfasına yönlendirmesi durumunda, kılavuzun dilinizdeki çevirisini indirebilir ve bu yerel kopyanın bulunduğu yeri bu yönergede belirtebilirsiniz. Örneğin, kılavuzun yerel kopyasına `"/manual/"` ile erişilebiliyorsa bunu `docref_root=/manual/` şeklinde belirtebilirsiniz. Buna ek olarak, kopyanızın dosya uzantısını `docref_ext` yönergesinde belirtebilirsiniz (örnek: `docref_ext=.html`). Harici kaynaklara gönderimler de mümkündür. Örnekler: `docref_root=http://manual/en/` veya `docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"`

  Bazı durumlarda `docref_root` değerinin sonuna bir bölü çizgisi `"/"` eklemeniz gerekebilir. Fakat yukarıdaki ikinci örnekteki gibi bir durumda buna asla gerek yoktur.

  > Bilginize:

  > Bu özellik, bir işlevin açıklamasına bakmayı kolaylaştırması nedeniyle daha ziyade geliştirme aşamasında kullanmanız için tasarlanmıştır. Hataları son kullanıcıya göstermek amacıyla kullanılmamalıdır.

`docref_ext` string

  docref_root yönergesine bakınız.

  > Bilginize:

  > `docref_ext` değeri bir nokta `"."` ile başlamalıdır.

`error_prepend_string` string

  Hata iletisinden önce çıktılanacak dizge. Sadece hata iletisi ekranda gösterilecekse kullanılır. Asıl amaç hata iletisinin önüne HTML kodu ekleyebilmeyi mümkün kılmaktır.

`error_append_string` string

  Bir hata iletisinden sonra çıktılanacak dizge. Sadece hata iletisi ekranda gösterilecekse kullanılır. Asıl amaç hata iletisinin ardına HTML kodu ekleyebilmeyi mümkün kılmaktır.

`error_log` string

  Hataların kaydedileceği dosyanın adı. Dosya, HTTP sunucunun kullanıcısı tarafından yazılabilir olmalıdır. Eğer `syslog` özel değeri kullanılmışsa hatalar bir dosya yerine sistemin hata günlüğüne gönderilir (Unix'te syslog(3), Windows NT'de olay günlüğü). Windows 95'te sistem günlükçüsü desteği yoktur. Ayrıca, syslog() işlevine de bakınız. Yönerge tanımsız bırakılmışsa hatalar SAPI hata günlükçüsüne gönderilir. Örneğin bu, Apache'nin hata günlüğü veya CLI için `stderr` olabilir.

`error_log_mode` int

  error_log yönergesine atanan dosya için dosya kipi.

`syslog.facility` string

  İletiyi ne tür bir uygulamanın günlüklediğini belirtir. Sadece "syslog" içinde error_log etkinse etkilidir.

`syslog.filter` string

  Günlüklenen iletileri süzecek süzgeçleri belirler. İzin verilen karakterler değiştirilmeden yazılır. Diğerleri `\x` ile öncelenen onaltılık karşılıkları ile belirtilir.

  - `all` – Günlüklenen ileti satır sonu karakterinden bölünür ve tüm karakterler değiştirilmeden aktarılır.
  - `no-ctrl` – Günlüklenen ileti satır sonu karakterinden bölünür ve basılamayan 7 bitlik ASCII karakterler öncelenir.
  - `ascii` – Günlüklenen ileti satır sonu karakterinden bölünür ve basılamayan karakterler öncelenir.
  - `raw` – Tüm karakterler değiştirilmeden ve iletiler satır sonu karakterleri ile bölünmeden sistem günlükleyicisine aktarılır (PHP 7.3 öncesindeki gibi).
  Bu ayarlar error_log ini yönergesine "syslog" atandıktan sonra yapılan syslog() çağrıları ile etkisini gösterir.

  > Bilginize:

  > `raw` süzgeç türü PHP 7.3.8 ve PHP 7.4.0 üstü sürümlerle kullanılabilir.

  Bu yönerge Windows üzerinde desteklenmez.
`syslog.ident` string

  Specifies the ident string which is prepended to every message. Only effective if error_log is set to "syslog".

# Öntanımlı Sabitler

Aşağıdaki sabitler PHP çekirdeğinin parçası olarak daima kullanılabilir durumdadır.

> Bilginize: Bu sabit isimleri php.ini dosyasında kullanılabilir, fakat httpd.conf gibi PHP dışı yerlerde isimleri değil değerleri bit maskesi olarak kullanılabilir.

Hatalar ve Günlük Kaydı
Değer | Sabit | Açıklama | Ek Bilgi
--- | --- | --- | ---
1 | `E_ERROR` (int) | Ölümcül çalışma anı hataları. Bellek ayırma sorunu gibi giderilemeyen hatalar bu sınıfa girer. Böyle hatalar betiğin çalışmasının durmasına sebep olur. |
2 | `E_WARNING` (int) | Çalışma anı uyarıları (ölümcül olmayan hatalar). Betiğin çalışması durmaz. |
4 | `E_PARSE` (int) | Derleme anı çözümleme hataları. Çözümleme hatalarını sadece çözümleyici üretir. |
8 | `E_NOTICE` (int) | Çalışma anı bildirimleri. Betikte bir hataya sebep olabilecek fakat betiğin normal çalışmasını esnasında oluşmayabilecek bir şeylerin saptandığını belirtir. |
16 | `E_CORE_ERROR` (int) | PHP'nin başlatılması sırasında oluşan ölümcül hatalar. PHP çekirdeği tarafından üretilmesi dışında `E_ERROR` gibidir. |
32 | `E_CORE_WARNING` (int) | PHP'nin başlatılması sırasında oluşan uyarılar (ölümcül olmayan hatalar). PHP çekirdeği tarafından üretilmesi dışında `E_WARNING` gibidir. |
64 | `E_COMPILE_ERROR` (int) | Ölümcül derleme anı hataları. Zend betik motoru tarafından üretilmesi dışında `E_ERROR` gibidir. |
128 | `E_COMPILE_WARNING` (int) | Derleme anı uyarıları (ölümcül olmayan hatalar). Zend betik motoru tarafından üretilmesi dışında `E_WARNING` gibidir. |
256 | `E_USER_ERROR` (int) | Kullanıcı üretimi hata iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında `E_ERROR` gibidir. |
512 | `E_USER_WARNING` (int) | Kullanıcı üretimi uyarı iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında `E_WARNING` gibidir. |
1024 | `E_USER_NOTICE` (int) | Kullanıcı üretimi bildirim iletileri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında `E_NOTICE` gibidir. |
2048 | `E_STRICT` (int) | Yazılan PHP kodunun ileriye dönük uyumluluğunu ve birlikte çalışabilirliğini en iyilemek amacıyla PHP tarafından yapılan önerileri etkin kılar. |
4096 | `E_RECOVERABLE_ERROR` (int) | Yakalanabilir ölümcül hata. Tehlikeli olma olasılığı bulunan bir hata oluştuğunu fakat yorumlayıcıyı kararsız durumda bırakmadığını belirtir. Hata, kullanıcı tarafından bir eylemci tanımlanarak yakalanmadığı (set_error_handler() işlevine bakınız) takdirde betik `E_ERROR` hatasıyla sonlanır. |
8192 | `E_DEPRECATED` (int) | Çalışma anı bildirimleri. Gelecek sürümlerle çalışmayacak kodlar hakkındaki uyarıları etkin kılar. |
16384 | `E_USER_DEPRECATED` (int) | Kullanıcı üretimi "kullanımı önerilmiyor" bildirimleri. PHP işlevi trigger_error() tarafından PHP kodunda üretilmesi dışında `E_DEPRECATED` gibidir. |
32767 | `E_ALL` (int) | Tüm hatalar, uyarılar ve bildirimler. |

Gerek sayısal gerekse simgesel olarak yukarıdaki değerler raporlanacak hataları belirten bir bit maskesi oluşturmakta kullanılabilir. Bu değerlerden bir bit maskesi oluşturmak veya bunları çözümlemek için bitsel işleçler kullanılabilir. php.ini içinde sadece '|', '~', '!', '^' ve '&' işleç karakterleri tanındığına dikkat edilmelidir.

# Örnekler

Aşağıda, PHP hata işleme yeteneklerinin kullanımına ilişkin bir örneğe yer verilmiştir. Hataları işleme sokan işlevin iletilerinin (XML biçeminde) bir dosyaya yazılması; kodlama mantığıyla çelişen önemli hataların ise geliştiriciye eposta ile gönderilmesi sağlanmıştır.

Örnek 1 Bir betikte hataların yakalanıp işleme sokulması

    <?php
    // Kendi hata işleme sistemimizi oluşturacağız.
    error_reporting(0);

    // kullanıcı tanımlı hata eylemcisi
    function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
    {
        // Hata iletisi için zaman damgası
        $dt = date("Y-m-d H:i:s (T)");

        // Hata iletisi türlerini bir ilişkisel dizi olarak tanımlayalım.
        // Aslında sadece E_WARNING, E_NOTICE, E_USER_ERROR,
        // E_USER_WARNING ve E_USER_NOTICE kullanılacak.
        $errortype = array (
                    E_ERROR              => 'Hata',
                    E_WARNING            => 'Uyarı',
                    E_PARSE              => 'Çözümleme Hatası',
                    E_NOTICE             => 'Bilginize',
                    E_CORE_ERROR         => 'PHP Hatası',
                    E_CORE_WARNING       => 'PHP Uyarısı',
                    E_COMPILE_ERROR      => 'Derleme Hatası',
                    E_COMPILE_WARNING    => 'Derleme Uyarısı',
                    E_USER_ERROR         => 'Kullanıcı Hatası',
                    E_USER_WARNING       => 'Kullanıcı Uyarısı',
                    E_USER_NOTICE        => 'Kullanıcı Bildirimi',
                    E_STRICT             => 'Çalışma Anı Bildirimi',
                    E_RECOVERABLE_ERROR  => 'Yakalanabilir Ölümcül Hata'
                    );
        // Hataların oluşumunu izlemek için hataları bir değişkene kaydedelim
        $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);

        $err = "<errorentry>\n";
        $err .= "\t<datetime>" . $dt . "</datetime>\n";
        $err .= "\t<errornum>" . $errno . "</errornum>\n";
        $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
        $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
        $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
        $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";

        if (in_array($errno, $user_errors)) {
            $err .= "\t<vartrace>" . wddx_serialize_value($vars, "Variables") . "</vartrace>\n";
        }
        $err .= "</errorentry>\n\n";

        // Denemek için:
        // echo $err;

        // Hatayı günlüğe kaydedelim ve önemliyse ayrıca bana postalayalım
        error_log($err, 3, "/usr/local/php4/error.log");
        if ($errno == E_USER_ERROR) {
            mail("phpdev@example.com", "Critical User Error", $err);
        }
    }

    function distance($vect1, $vect2)
    {
        if (!is_array($vect1) || !is_array($vect2)) {
            trigger_error("Bağımsız değişkenler yanlış, dizi belirtilmesi bekleniyor",
                           E_USER_ERROR);
            return NULL;
        }

        if (count($vect1) != count($vect2)) {
            trigger_error("Vektörlerin aynı boyutta olması gerekir", E_USER_ERROR);
            return NULL;
        }

        for ($i=0; $i<count($vect1); $i++) {
            $c1 = $vect1[$i]; $c2 = $vect2[$i];
            $d = 0.0;
            if (!is_numeric($c1)) {
                trigger_error(
                    "1. vektörün $i konumu bir sayı değil, 0 kullanılıyor",
                    E_USER_WARNING);
                $c1 = 0.0;
            }
            if (!is_numeric($c2)) {
                trigger_error(
                    "2. vektörün $i konumu bir sayı değil, 0 kullanılıyor",
                    E_USER_WARNING);
                $c2 = 0.0;
            }
            $d += $c2*$c2 - $c1*$c1;
        }
        return sqrt($d);
    }

    $old_error_handler = set_error_handler("userErrorHandler");

    // Tanımsız sabit, bir uyarı üretir
    $t = TANIMSIZIM;

    // bazı "vektörler" tanımlayalım
    $a = array(2, 3, "foo");
    $b = array(5.5, 4.3, -1.6);
    $c = array(1, -3);

    // bir kullanıcı hatası üretelim
    $t1 = distance($c, $b) . "\n";

    // başka bir bir kullanıcı hatası üretelim
    $t2 = distance($b, "ben bir dizi değilim") . "\n";

    // bir uyarı üretelim
    $t3 = distance($a, $b) . "\n";

    ?>

# Hata İşleme İşlevleri

# Ayrıca Bakınız

Ayrıca bakınız: syslog().

# debug_backtrace

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

debug_backtrace — Hata izleme raporunu bir dizi olarak üretir

### Açıklama

function debug_backtrace(int `$seçenekler` = `DEBUG_BACKTRACE_PROVIDE_OBJECT`, int `$sınır` = 0): array

Hata izleme raporunu (backtrace) bir dizi olarak üretir.

### Bağımsız Değişkenler

`seçenekler`

  Aşağıdaki seçeneklerin bit maskesidir:

  debug_backtrace() seçenekleri
  DEBUG_BACKTRACE_PROVIDE_OBJECT | `"object"` indisinin doldurulup doldurulmayacağı.
  DEBUG_BACKTRACE_IGNORE_ARGS | Bellek kazanmak için `"args"` indisinin ve dolayısıyla tüm işlev/yöntem bağımsız değişkenlerinin atlanıp atlanmayacağı.

  > Bilginize:

  > Olası dört durum vardır:

  > debug_backtrace() seçenekleri
  > `debug_backtrace()` | Her iki indis doldurulur.
  > `debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT)`
  > `debug_backtrace(1)`
  > `debug_backtrace(0)` | `"object"` indisini atlar ve `"args"` indisini doldurur.
  > `debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)` | `"object"` ve `"args"` indisi atlanır.
  > `debug_backtrace(2)`
  > `debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS)` | `"object"` indisini doldurur ve `"args"` indisini atlar.
  > `debug_backtrace(3)`

`sınır`

  Bu bağımsız değişken döndürülecek yığıt çerçevelerinin sayısını sınırlamak için kullanılmaktadır. Öntanımlı değer, tüm yığıt çerçevelerinin dönmesini sağlayan `0` değeridir.

### Dönen Değerler

Bir ilişkisel diziler dizisi döner. Dönmesi olası değerler:

debug_backtrace() işlevinden dönmesi olası elemanlar
İsim | Tür | Açıklama
--- | --- | ---
`function` | string | O anki işlev ismi. Ayrıca bakınız: __FUNCTION__.
`line` | int | O anki satır numarası. Ayrıca bakınız: __LINE__.
`file` | string | O anki dosya ismi. Ayrıca bakınız: __FILE__.
`class` | string | O anki sınıf ismi. Ayrıca bakınız: __CLASS__
`object` | object | O anki nesne.
`type` | string | O anki çağrı türü. Bir yöntem çağrısı ise "->", bir statik yöntem çağrısı ise "::" içerir. Bir işlev çağrısı ise hiçbir şey içermez.
`args` | array | Bir işlevde, işlevin bağımsız değişkenlerini; bir dosyada, dahil edilen dosyalar varsa dahil edilen dosya isimlerini içerir.

### Örnekler

Örnek 1 - debug_backtrace() örneği

    <?php
    // /tmp/a.php dosyası

    function a_test($str)
    {
        echo "\nHi: $str";
        var_dump(debug_backtrace());
    }

    a_test('friend');
    ?>

    <?php
    // /tmp/b.php dosyası
    include_once '/tmp/a.php';
    ?>

/tmp/b.php çalıştırılırken sonuçlar şuna benzer:

    Hi: friend
    array(2) {
    [0]=>
    array(4) {
        ["file"] => string(10) "/tmp/a.php"
        ["line"] => int(10)
        ["function"] => string(6) "a_test"
        ["args"]=>
        array(1) {
          [0] => &string(6) "friend"
        }
    }
    [1]=>
    array(4) {
        ["file"] => string(10) "/tmp/b.php"
        ["line"] => int(2)
        ["args"] =>
        array(1) {
          [0] => string(10) "/tmp/a.php"
        }
        ["function"] => string(12) "include_once"
      }
    }

### Ayrıca Bakınız

- trigger_error() - Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir
- debug_print_backtrace() - Bir hata izleme raporu basar

# debug_print_backtrace

(PHP 5, PHP 7, PHP 8)

debug_print_backtrace — Bir hata izleme raporu basar

### Açıklama

function debug_print_backtrace(int `$seçenekler` = 0, int `$sınır` = 0): void

debug_print_backtrace() bir PHP hata izleme raporu (backtrace) basar. İşlev çağrılarını, include/require ile dahil edilen dosyaları ve eval() kodlarını basar.

### Bağımsız Değişkenler

`seçenekler`

  Aşağıdaki seçeneklerin bit maskesidir:

  debug_print_backtrace() seçenekleri
  DEBUG_BACKTRACE_IGNORE_ARGS | Bellek kazanmak için "args" indisinin ve dolayısıyla tüm işlev/yöntem bağımsız değişkenlerinin atlanıp atlanmayacağı.

`sınır`

  Bu bağımsız değişken döndürülecek yığıt çerçevelerinin sayısını sınırlamak için kullanılmaktadır. Öntanımlı değer, tüm yığıt çerçevelerinin dönmesini sağlayan `0` değeridir.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - debug_print_backtrace() örneği

    <?php
    // include.php dosyası

    function a() {
        b();
    }

    function b() {
        c();
    }

    function c(){
        debug_print_backtrace();
    }

    a();

    ?>

    <?php
    // test.php dosyası
    // Bu dosya çalıştırılacak.

    include 'include.php';
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    #0  c() called at [/tmp/include.php:10]
    #1  b() called at [/tmp/include.php:6]
    #2  a() called at [/tmp/include.php:17]
    #3  include(/tmp/include.php) called at [/tmp/test.php:3]

### Ayrıca Bakınız

- debug_backtrace() - Hata izleme raporunu bir dizi olarak üretir

# error_clear_last

(PHP 7, PHP 8)

error_clear_last — Sonuncu hatayı temizler

### Açıklama

function error_clear_last(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

En son oluşan hatayı siler ve hata artık error_get_last() işleviyle döndürülemez.

### Örnekler

Örnek 1 - error_clear_last() örneği

    <?php
    var_dump(error_get_last());
    error_clear_last();
    var_dump(error_get_last());
    @$a = $b;
    var_dump(error_get_last());
    error_clear_last();
    var_dump(error_get_last());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    NULL
    NULL
    array(4) {
      ["type"]=>
      int(8)
      ["message"]=>
      string(21) "Undefined variable: b"
      ["file"]=>
      string(9) "%s"
      ["line"]=>
      int(6)
    }
    NULL

### Ayrıca Bakınız

- Error constants

# error_get_last

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

error_get_last — Son oluşan hata hakkında bilgi verir

### Açıklama

function error_get_last(): ?array

Son oluşan hata hakkında bilgi verir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Son oluşan hata hakkındaki bilgileri "type", "message", "file" ve "line" anahtarlı bir ilişkisel dizi olarak döndürür. Hatanın sebebi PHP'nin dahili işlevlerinden biriyse "message" işlevin ismi ile başlar. Henüz bir hata oluşmamışsa `null` döner.

### Örnekler

Örnek 1 - error_get_last() örneği

    <?php
    echo $a;
    print_r(error_get_last());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [type] => 8
        [message] => Undefined variable: a
        [file] => C:\WWW\index.php
        [line] => 2
    )

### Ayrıca Bakınız

- Hata sabitleri
- $php_errormsg değişkeni
- error_clear_last() - Sonuncu hatayı temizler
- `display_errors` yönergesi
- `html_errors` yönergesi
- `xmlrpc_errors` yönergesi

# error_log

(PHP 4, PHP 5, PHP 7, PHP 8)

error_log — Tanımlı hata işleme yordamlarına bir hata iletisi gönderir

### Açıklama

function error_log(
string `$ileti`,
int `$günlük_türü` = 0,
?string `$hedef` = `null`,
?string `$ek_başlıklar` = `null`
): bool

Bir hata iletisini, HTTP sunucusunun hata günlüğüne veya bir dosyaya gönderir.

### Bağımsız Değişkenler

`ileti`

  Günlüğe kaydedilecek hata iletisi.

`günlük_türü`

  Hata iletilerinin nereye gönderileceğini belirler. Olası günlük türleri şunlardır:

  error_log() günlük türleri
  0 | error_log yönergesinin değerine bağlı olarak, `ileti` ya işletim sisteminin sistem günlük kayıtları mekanizması kullanılarak PHP'nin sistem günlüğüne ya da bir dosyaya gönderilir.
  1 | `ileti`, `hedef` bağımsız değişkeninde belirtilen eposta adresine gönderilir. Dördüncü, `ek_başlıklar` bağımsız değişkeninin kullanıldığı tek günlük türü budur.
  2 | Artık bir seçenek değildir.
  3 | `ileti`, `hedef` dosyasına eklenir. `ileti` dizgesinin sonuna satırsonu karakteri otomatik olarak eklenir.
  4 | `ileti` doğrudan SAPI günlükleme mekanizmasına gönderilir.

`hedef`

  Bu bağımsız değişkenin değeri yukarıda açıklanan `günlük_türü` bağımsız değişkenine bağlıdır.

`ek_başlıklar`

  `günlük_türü` bağımsız değişkeninde `1` belirtildiğinde kullanılır. Bu günlük türü mail() işlevinin kullandığı iç işlevi kullanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. `günlük_türü` sıfırsa, hatanın günlüğe yazılıp yazılmadığına bakmaksızın, işlev daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `ek_başlıklar` artık `null` olabiliyor.

### Örnekler

Örnek 1 - error_log() örnekleri

    <?php
    // Veritabanına bağlanamazsak sunucunun hata günlüğüne bir bildirim gönderir.
    if (!Ora_Logon($username, $password)) {
        error_log("Oracle database not available!", 0);
    }

    // FOO'nun dışına çıkmışsak yöneticiye bir eposta ile durumu bildirelim
    if (!($foo = allocate_new_foo())) {
        error_log("Büyük bir sorun var, FOO'nun dışına çıktık!", 1,
                   "operator@example.com");
    }

    // error_log() işlevini çağırmanın başka bir yolu:
    error_log("Herşeyi yüzüne gözüne bulaştırdın!", 3,
              "/var/tmp/herkes_hata_yapar.log");
    ?>

### Notlar

Uyarı

error_log() ikil olarak güvenli değildir. `ileti` boş karakterle kırpılacaktır.

İpucu

`ileti` boş karakter içermemelidir. `ileti`'nin dosya, posta, syslog ve benzerlerine gönderilebileciğini unutmayın. error_log() işlevini çağırmadan önce uygun bir dönüşüm/önceleme işlevini, rawurlencode() veya addslashes() işlevini kullanın.

# error_reporting

(PHP 4, PHP 5, PHP 7, PHP 8)

error_reporting — Hangi PHP hatalarının raporlanacağını tanımlar

### Açıklama

function error_reporting(?int `$hata_seviyesi` = `null`): int

error_reporting() işlevi error_reporting yönergesinin değerini çalışma anında tanımlar. PHP bir çok hata seviyesine sahiptir. Bu işlevi kullanarak betiğinizin çalışması esnasında hangi seviyelerin raporlanacağını belirleyebilirsiniz. Seçimlik `hata_seviyesi` bağımsız değişkeni atlanmışsa işlev daima geçerli hata raporlama seviyesini döndürür.

### Bağımsız Değişkenler

`hata_seviyesi`

  Yeni hata raporlama seviyesi. Bir bit maskesi veya isimli sabitler belirtilebilir. Gelecek sürümlerle uyumluluk bakımından bir bit maskesi değil, isimli sabitlerin kullanılması hararetle tavsiye edilir. Yeni hata seviyeleri eklendikçe tamsayı aralığı genişler. Dolayısıyla tamsayı olarak belirtilmiş hata seviyeleri her zaman beklendiği gibi davranmayabilir.

  Kullanılabilecek hata seviyesi sabitleri ve anlamları Öntanımlı Sabitler sayfasında açıklanmıştır.

### Dönen Değerler

`hata_seviyesi` bağımsız değişkenine dönüşmeden önce, error_reporting hata raporlama seviyesi döner.

> Bilginize: Hata denetimi için `@`-işleci hatanın işlenmesi sırasında `hata_seviyesi`ni değiştirir.

### Örnekler

Örnek 1 - error_reporting() örnekleri

    <?php

    // Hata raporlamayı tamamen kapatalım
    error_reporting(0);

    // Basit hataları raporlayalım
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // E_NOTICE de raporlansa iyi olur (ilklendirilmemiş değişkenleri
    // veya yanlış yazılmış değişken isimlerini yakalamak için, vb)
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    // E_NOTICE hariç bütün hatalar raporlansın
    // Bu php.ini içindeki öntanımlı değerdir
    error_reporting(E_ALL & ~E_NOTICE);

    // Tüm PHP hatalarını raporlayalım
    error_reporting(E_ALL);

    // Tüm PHP hatalarını raporlayalım
    error_reporting(-1);

    // error_reporting(E_ALL) ile aynı;
    ini_set('error_reporting', E_ALL);

    ?>

### Notlar

İpucu

`-1` değeri belirtildiği takdirde olası tüm hatalar hatta PHP'nin gelecek sürümlerinde eklenen seviyeler bile raporlanır. Davranış, `E_ALL` sabitinin aktarımına eşdeğerdir.

### Ayrıca Bakınız

- display_errors yönergesi
- html_errors yönergesi
- xmlrpc_errors yönergesi
- hata denetim işleci
- ini_set() - Bir yapılandırma yönergesine değer atar

# get_error_handler

(PHP 8 >= 8.5.0)

get_error_handler — Kullanıcı tanımlı hata işleyici işlevi döndürür

### Açıklama

function get_error_handler(): ?callable

Varsa, geçerli hata işleyici işlevini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Tanımlanmışsa, geçerli hata işleyiciyi döndürür. Yerleşik hata işleyici kullanılıyorsa `null` döndürülür.

Döndürülen işleyici, tanımlamak için set_error_handler() işlevine iletilen çağrılabilir değerin tam karşılığıdır.

### Örnekler

Örnek 1 get_error_handler() örneği

    <?php

    $handler = function (int $errno, string $errstr, ?string $errfile, ?int $errline) {
         echo "Error: " . $errstr . "\n";
    };

    var_dump(get_error_handler()); // NULL

    set_error_handler($handler);

    var_dump(get_error_handler() === $handler); // bool(true)

    ?>

### Notlar

İpucu

PHP 8.5.0 öncesinde bu işlevsellik aşağıdaki çokdoldurum ile sağlanabilir:

    <?php
    if (!function_exists('get_error_handler')) {
        function noop_error_handler() {
        }
        function get_error_handler(): ?callable {
            $handler = set_error_handler('noop_error_handler');
            restore_error_handler();
            return $handler;
        }
    }
    ?>

### Ayrıca Bakınız

- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- set_error_handler() - Kullanıcı tanımlı bir hata işleyici bildirir
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- trigger_error() - Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir
- error level constants

# get_exception_handler

(PHP 8 >= 8.5.0)

get_exception_handler — Kullanıcı tanımlı istisna işleyici işlevi döndürür

### Açıklama

function get_exception_handler(): ?callable

Varsa, geçerli istisna işleyici işlevini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Tanımlanmış geçerli istisna işleyiciyi döndürür. Hiçbir işleyici tanımlanmamışsa `null` döndürülür.

Döndürülen işleyici, tanımlamak için set_exception_handler() işlevine iletilen çağrılabilir değerin tam karşılığıdır.

### Örnekler

Örnek 1 get_exception_handler() örneği

    <?php

    $handler = function (Throwable $ex) {
         echo "Exception: " . $ex::class . ": " . $ex->getMessage() . "\n";
    };

    var_dump(get_exception_handler()); // NULL

    set_exception_handler($handler);

    var_dump(get_exception_handler() === $handler); // bool(true)

    ?>

### Notlar

İpucu

PHP 8.5.0 öncesinde bu işlevsellik aşağıdaki çokdoldurum ile sağlanabilir:

    <?php
    if (!function_exists('get_exception_handler')) {
        function noop_exception_handler() {
        }
        function get_exception_handler(): ?callable {
            $handler = set_exception_handler('noop_exception_handler');
            restore_exception_handler();
            return $handler;
        }
    }
    ?>

### Ayrıca Bakınız

- set_exception_handler() - Kullanıcı tanımlı bir istisna işleyici bildirir
- restore_exception_handler() - Bir önceki istisna eylemcisini devreye sokar
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- Exceptions

# restore_error_handler

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

restore_error_handler — Bir önceki hata eylemcisini devreye sokar

### Açıklama

function restore_error_handler(): true

set_error_handler() ile hata eylemcisini değiştirdikten sonra önceki hata eylemcisini (yerleşik veya kullanıcı tanımlı bir işlev) devreye sokmak için kullanılır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Örnekler

Örnek 1 - restore_error_handler() örneği

unserialize() bir hataya sebep olsun, böylece özgün hata eylemcisini devreye sokalım.

    <?php
    function unserialize_handler($errno, $errstr)
    {
        echo "Dizgeleştirilmiş değer geçersiz.\n";
    }

    $serialized = 'foo';
    set_error_handler('unserialize_handler');
    $original = unserialize($serialized);
    restore_error_handler();
    ?>

Yukarıdaki örneğin çıktısı:

    Dizgeleştirilmiş değer geçersiz.

### Ayrıca Bakınız

- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- set_error_handler() - Kullanıcı tanımlı bir hata işleyici bildirir
- restore_exception_handler() - Bir önceki istisna eylemcisini devreye sokar
- trigger_error() - Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir

# restore_exception_handler

(PHP 5, PHP 7, PHP 8)

restore_exception_handler — Bir önceki istisna eylemcisini devreye sokar

### Açıklama

function restore_exception_handler(): true

set_exception_handler() ile istisna eylemcisini değiştirdikten sonra önceki istisna eylemcisini (yerleşik veya kullanıcı tanımlı bir işlev) devreye sokmak için kullanılır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Örnekler

Örnek 1 - restore_exception_handler() örneği

    <?php
    function istisna_eylemci_1(Exception $e)
    {
        echo '[' . __FUNCTION__ . '] ' . $e->getMessage();
    }

    function istisna_eylemci_2(Exception $e)
    {
        echo '[' . __FUNCTION__ . '] ' . $e->getMessage();
    }

    set_exception_handler('istisna_eylemci_1');
    set_exception_handler('istisna_eylemci_2');

    restore_exception_handler();

    throw new Exception('İlk istisna eylemcisi tetiklenir...');
    ?>

Yukarıdaki örneğin çıktısı:

    [istisna_eylemci_1] İlk istisna eylemcisi tetiklenir...

### Ayrıca Bakınız

- set_exception_handler() - Kullanıcı tanımlı bir istisna işleyici bildirir
- set_error_handler() - Kullanıcı tanımlı bir hata işleyici bildirir
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar

# set_error_handler

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

set_error_handler — Kullanıcı tanımlı bir hata işleyici bildirir

### Açıklama

function set_error_handler(?callable `$hata_işleyici`, int `$hata_seviyeleri` = `E_ALL`): ?callable

Betikteki hatalarda devreye girmek üzere kullanıcı tanımlı bir işlev (`hata_işleyici`) bildirir.

Bu işlev çalışma anında özel bir hata işleyici oluşturmakta kullanılabilir. Örneğin, veriler veya dosyalar temizlenirken işlemlerin durmasına yol açacak bir hata oluştuğunda veya belli durumlar için (trigger_error() ile) bir hatayı tetiklemek gerektiğinde PHP tarafından çağrılacak bir işlev tanımlayıp, bu işlevin ismi set_error_handler() ile PHP'ye bildirilebilir.

Bu işlevin çağrılmasıyla PHP'nin standart hata işleyicisi `hata_seviyeleri` ile belirtilen hata türleri için, geri çağırım işlevi `false` döndürmedikçe tamamen devre dışı kalacaktır. error_reporting() ayarları etkisiz olacak ve her durumda belirtilen hata işleyisi çağrılacaktır. Ancak, error_reporting yönergesindeki değer hala okubabilir ve buna göre davranılabilir.

Ayrıca, gerektiği takdirde exit() işlevini çağırarak betiğin çalışmasını durdurmak da işleyicinin sorumluluğundadır. `hata_işleyici` işlevi döndükten sonra betiğin çalışması, hataya sebep olan deyimden sonraki deyimden devam edecektir.

Kullanıcı tanımlı bir işlev ile üzerinde herhangi bir işlem yapılamayacak hatalar vardır, bunlar: `E_ERROR`, `E_PARSE`, `E_CORE_ERROR`, `E_CORE_WARNING`, `E_COMPILE_ERROR`, üretidiği yerden bağımsız `E_COMPILE_WARNING` ve set_error_handler() işlevinin çağrıldığı dosyada oluşan `E_STRICT` hatalarının çoğu.

Eğer betik çalıştırılmadan önce oluşan hatalar varsa (karşıya dosya yükleme sırasında oluşan hatalar gibi), bu gibi durumlar için bildirilen `hata_işleyici` işlevi çağrılamayacaktır.

### Bağımsız Değişkenler

`hata_işleyici`

  İşleve `null` aktarılırsa işleyici öntanımlı durumuna sıfırlanır. Aksi takdirde, aşağıdaki geri çağırım işlevi tanımıyla bir işleyici aktarılmalıdır:

  function hata_işleyici(
  int `$errno`,
  string `$errstr`,
  string `$errfile` = ?,
  int `$errline` = ?,
  array `$errcontext` = ?
  ): bool
  `errno`
    Oluşan hatanın seviyesinin bir tamsayı olarak aktarılacağı bağımsız değişken. İlk bağımsız değişken olmalıdır.
  `errstr`
    Hata iletisinin bir dizge olarak aktarılacağı bağımsız değişken. İkinci bağımsız değişken olmalıdır.
  `errfile`
    `hata_işleyici` 3 bağımsız değişken kabul ediyorsa, hatanın oluştuğu betik dosyasının ismini bir dizge olarak içerecek, belirtilmesi isteğe bağlı üçüncü bağımsız değişken.
  `errline`
    `hata_işleyici` 4 bağımsız değişken kabul ediyorsa, hatanın oluştuğu deyimin satır numarasını bir tamsayı olarak içerecek, belirtilmesi isteğe bağlı dördüncü bağımsız değişken.
  `errcontext`
    `hata_işleyici` 5 bağımsız değişken kabul ediyorsa, hatanın oluştuğu noktada etkin simge tablosuna işaret eden bir diziyi kabul edecek, belirtilmesi isteğe bağlı beşinci bağımsız değişken. Bu bağımsız değişken, başka bir deyişle, hatanın tetiklendiği etki alanında etkin değişkenleri içeren bir dizidir. `hata_işleyici` bu değişkenlerde bir değişiklik yapmamalıdır.
    Uyarı

    Bu bağımsız değişken PHP 7.2.0 ve sonrasında kullanımdan kaldırılmıştır. PHP 8.0.0'da tamanen kaldırılmıştır. Eğer işlev bu bağımsız değişkeni bir öntanımlı değer olmaksızın tanımlıyorsa, işlev çağrıldığı takdirde, "too few arguments" (çok az bağımsız değişken) hatası oluşur.

  İşlev `false` döndürdüğü takdirde normal hata işleyici kaldığı yerden devam eder.

`hata_seviyeleri`

  `hata_işleyici` işlevini tetikleyecek hatalar sabitleriyle, error_reporting yönergesine gösterilecek hataların değerleri belirtilirken yapıldığı gibi bir bit maskesi olarak belirtilebilir. Bu maskenin belirtilmediği durumda, error_reporting yönergesinde belirtilen değere bakılmaksızın her hatada `hata_işleyici` işlevi çağrılacaktır.

### Dönen Değerler

(Varsa) Evvelce tanımlanmış hata işleyicinin ismini dizge olarak döndürür. Eğer yerleşik bir hata işleyici kullanılmışsa `null` döner. Eğer evvelki hata işleyici bir sınıfın yöntemi ise bu sınıfın ve yöntemin isimlerini içeren bir dizi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `errcontext` kaldırıldı ve artık kullanıcının geri çağırım işlevine aktarılmayacak.
7.2.0 | `errcontext` kullanımdan kaldırıldı. Bu bağımsız değişkenin kullanımı bir `E_DEPRECATED` üretilmesine sebep olur.

### Örnekler

Örnek 1 - set_error_handler() ve trigger_error() ile hataların ele alınması

Bu örnekte hatalar tetiklenerek oluşan dahili istisnaların kullanıcı tanımlı bir işlev ile ele alınması gösterilmiştir.

    <?php
    // hata işleyici işlevi
    function hataİşleyicim($hatanum, $ileti, $betik, $satırnum)
    {
        if (!(error_reporting() & $hatanum)) {
            // Bu hata kodu error_reporting'e dahil olmaz, bu yüzden
            // standart PHP hata işleyicisine düşmesine izin verin
            return false;
        }

        // $ileti önceleme gerektirebilir
        $ileti = htmlspecialchars($ileti);

        switch ($hatanum) {
        case E_USER_ERROR:
            echo "<b>HATA</b> [$hatanum] $ileti<br />\n";
            echo "  $betik dosyasının $satırnum. satırında  ölümcül hata";
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Çıkılıyor...<br />\n";
            exit(1);

        case E_USER_WARNING:
            echo "<b>UYARI</b> [$hatanum] $ileti<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>BİLGİ</b> [$hatanum] $ileti<br />\n";
            break;

        default:
            echo "Bilinmeyen hata türü: [$hatanum] $ileti<br />\n";
            break;
        }

        /* PHP'nin yerleşik hata işleyici çalışmasın */
        return true;
    }

    // Hatanın oluşacağı işlev
    function scale_by_log($vect, $scale)
    {
        if (!is_numeric($scale) || $scale <= 0) {
            trigger_error("x <= 0 için log(x) tanımsız, scale = $scale verilmiş",
                          E_USER_ERROR);
        }

        if (!is_array($vect)) {
            trigger_error("Yanlış girdi, değerler dizi olarak verilmeliydi",
                          E_USER_WARNING);
            return null;
        }

        $temp = array();
        foreach($vect as $pos => $value) {
            if (!is_numeric($value)) {
                trigger_error("$pos. değer bir sayı değil, 0 kullanılıyor",
                              E_USER_NOTICE);
                $value = 0;
            }
            $temp[$pos] = log($scale) * $value;
        }

        return $temp;
    }

    // kullanıcı tanımlı hata işleyiciyi bildir
    $old_error_handler = set_error_handler("hataİşleyicim");

    // Bazı hataları tetikle.
    // Önce sayısal olmayan bir eleman içeren bir dizi tanımla.
    echo "ilk durum; bir hata: sayı yerine dizge\n";
    $a = array(2, 3, "foo", 5.5, 43.3, 21.11);
    print_r($a);

    // burada ikinci hatayı üret
    echo "----\nikinci durum - bir uyarı (b = log(PI) * a)\n";
    /* $pos. değer bir sayı değil, 0 kullanılıyor */
    $b = scale_by_log($a, M_PI);
    print_r($b);

    // Bir dizi yerine bir dizge aktarıp yine sorun çıkar
    echo "----\nüçüncü durum - bir uyarı\n";
    /* Yanlış girdi, değerler dizi olarak verilmeliydi */
    $c = scale_by_log("not array", 2.3);
    var_dump($c); // NULL

    // Bu önemli bir hata; sıfır veya negatif bir sayının logaritması.
    echo "----\ndördüncü durum - ölümcül hata\n";
    /* x <= 0 için log(x) tanımsız, scale = $scale olmalıydı */
    $d = scale_by_log($a, -2.5);
    var_dump($d); // Bu satır hiç çalışmayacak.
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    ilk durum; bir hata: sayı yerine dizge
    Array
    (
        [0] => 2
        [1] => 3
        [2] => foo
        [3] => 5.5
        [4] => 43.3
        [5] => 21.11
    )
    ----
    ikinci durum - bir uyarı (b = log(PI) * a)
    <b>BİLGİ</b> [1024] 2. değer bir sayı değil, 0 kullanılıyor<br />
    Array
    (
        [0] => 2.2894597716988
        [1] => 3.4341896575482
        [2] => 0
        [3] => 6.2960143721717
        [4] => 49.566804057279
        [5] => 24.165247890281
    )
    ----
    üçüncü durum - bir uyarı
    <b>UYARI</b> [512] Yanlış girdi, değerler dizi olarak verilmeliydi<br />
    NULL
    ----
    dördüncü durum - ölümcül hata
    <b>HATA</b> [256] x <= 0 için log(x) tanımsız, scale = -2.5 verilmiş<br />
      php-dnm dosyasının 36. satırında  ölümcül hata, PHP 5.3.0beta2-dev
      (Linux)<br />
    Çıkılıyor...<br />

### Ayrıca Bakınız

- ErrorException
- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- trigger_error() - Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir
- Hata seviyesi sabitleri

# set_exception_handler

(PHP 5, PHP 7, PHP 8)

set_exception_handler — Kullanıcı tanımlı bir istisna işleyici bildirir

### Açıklama

function set_exception_handler(?callable `$istisna_işleyici`): ?callable

İstisna bir `try/catch` bloğu içinde yakalanamadığı durumlarda kullanılmak üzere bir istisna işleyici bildirir. `istisna_işleyici` işlevinin çağrılmasıyla istisna durdurulmuş olur.

### Bağımsız Değişkenler

`istisna_işleyici`

  Yakalanmamış bir istisna olduğunda çağrılacak işlev. Yavrulanacak Throwable nesnesi için bir bağımsız değişken kabul etmesi gerekir. Error ve Exception sınıflarının ikisi de Throwable arayüzünü gerçekler. Kullanılacak işleyicinin tanımı:

  function işleyici(Throwable `$istisna`): void

  Bu işleyiciyi öntanımlı duruma sıfırlamak yerine `null` aktarılabilir.

### Dönen Değerler

Hata durumunda `null` aksi takdirde evvelce tanımlanmış istisna işleyicinin ismini döndürür. Evvelce tanımlanmış bir işleyici olmaması durumunda da `null` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.0.0 | `istisna_işleyici`'ne aktarılan bağımsız değişkenin türü artık Exception değil, Throwable.

### Örnekler

Örnek 1 - set_exception_handler() örneği

    <?php
    function istisna_işleyici(Throwable $istisna) {
      echo "Yakalanmamış istisna: " , $istisna->getMessage(), "\n";
    }

    set_exception_handler('istisna_işleyici');

    throw new Exception('Yakalanmamış İstisna');
    echo "Çalışmadı\n";
    ?>

### Ayrıca Bakınız

- restore_exception_handler() - Bir önceki istisna eylemcisini devreye sokar
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- İstisnalar

# trigger_error

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

trigger_error — Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir

### Açıklama

function trigger_error(string `$ileti`, int `$hata_seviyesi` = `E_USER_NOTICE`): true

Bir kullanıcı hatası durumunu tetiklemek için kullanır. Yerleşik bir hata eylemcisi ile birlikte kullanılabileceği gibi (set_error_handler() ile) yeni bir hata eylemcisi olarak bildirilmiş bir kullanıcı tanımlı işlev ile birlikte de kullanılabilir.

Bu işlev çalışma anında, bir olağandışılık durumunda, belli bir yanıt üretmek gerektiğinde çok kullanışlıdır.

### Bağımsız Değişkenler

`ileti`

  Tetiklenen hata için tasarlanmış hata iletisi. En fazla 1024 bayt uzunluğunda olabilir. 1024 bayttan sonraki karakterler kırpılır.

`hata_seviyesi`

  Tetiklenen hata için tasarlanmış hata türü. Sadece `E_USER_`* ailesinden sabitler belirtilebilir. `E_USER_NOTICE` öntanımlıdır.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

`hata_seviyesi` şunlardan biri değilse ValueError oluşur: `E_USER_ERROR`, `E_USER_WARNING`, `E_USER_NOTICE`, `E_USER_DEPRECATED`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Geçersiz bir `hata_seviyesi` belirtilirse artık ValueError oluşuyor. Evvelce `false` dönerdi.

### Örnekler

Örnek 1 - trigger_error() örneği

Daha kapsamlı bir örnek için set_error_handler() işlevine bakınız.

    <?php
    if ($divisor == 0) {
        trigger_error("Sıfır bir bölen olamaz", E_USER_ERROR);
    }
    ?>

### Notlar

Uyarı

`ileti` içindeki HTML öğeleri öncelenmez. Hata tarayıcıda gösterilecekse htmlentities() kullanın.

### Ayrıca Bakınız

- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar
- set_error_handler() - Kullanıcı tanımlı bir hata işleyici bildirir
- restore_error_handler() - Bir önceki hata eylemcisini devreye sokar
- Hata seviyesi sabitleri

# user_error

(PHP 4, PHP 5, PHP 7, PHP 8)

user_error — trigger_error() işlevinin takma adıdır

### Açıklama

Bu işlev, trigger_error() işlevinin takma adıdır.

## İçindekiler

- debug_backtrace — Hata izleme raporunu bir dizi olarak üretir
- debug_print_backtrace — Bir hata izleme raporu basar
- error_clear_last — Sonuncu hatayı temizler
- error_get_last — Son oluşan hata hakkında bilgi verir
- error_log — Tanımlı hata işleme yordamlarına bir hata iletisi gönderir
- error_reporting — Hangi PHP hatalarının raporlanacağını tanımlar
- get_error_handler — Kullanıcı tanımlı hata işleyici işlevi döndürür
- get_exception_handler — Kullanıcı tanımlı istisna işleyici işlevi döndürür
- restore_error_handler — Bir önceki hata eylemcisini devreye sokar
- restore_exception_handler — Bir önceki istisna eylemcisini devreye sokar
- set_error_handler — Kullanıcı tanımlı bir hata işleyici bildirir
- set_exception_handler — Kullanıcı tanımlı bir istisna işleyici bildirir
- trigger_error — Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir
- user_error — trigger_error işlevinin takma adıdır

- Yapılandırma/Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
- Hata İşleme İşlevleri
  - debug_backtrace — Hata izleme raporunu bir dizi olarak üretir
  - debug_print_backtrace — Bir hata izleme raporu basar
  - error_clear_last — Sonuncu hatayı temizler
  - error_get_last — Son oluşan hata hakkında bilgi verir
  - error_log — Tanımlı hata işleme yordamlarına bir hata iletisi gönderir
  - error_reporting — Hangi PHP hatalarının raporlanacağını tanımlar
  - get_error_handler — Kullanıcı tanımlı hata işleyici işlevi döndürür
  - get_exception_handler — Kullanıcı tanımlı istisna işleyici işlevi döndürür
  - restore_error_handler — Bir önceki hata eylemcisini devreye sokar
  - restore_exception_handler — Bir önceki istisna eylemcisini devreye sokar
  - set_error_handler — Kullanıcı tanımlı bir hata işleyici bildirir
  - set_exception_handler — Kullanıcı tanımlı bir istisna işleyici bildirir
  - trigger_error — Kullanıcı seviyesinde bir hata/uyarı/bilgi iletisi üretir
  - user_error — trigger_error işlevinin takma adıdır

# Foreign Function Interface

# Giriş

This extension allows the loading of shared libraries (.DLL or .so), calling of C functions and accessing of C data structures in pure PHP, without having to have deep knowledge of the Zend extension API, and without having to learn a third “intermediate” language. The public API is implemented as a single class FFI with several static methods (some of them may be called dynamically), and overloaded object methods, which perform the actual interaction with C data.

Dikkat

FFI is dangerous, since it allows to interface with the system on a very low level. The FFI extension should only be used by developers having a working knowledge of C and the used C APIs. To minimize the risk, the FFI API usage may be restricted with the ffi.enable php.ini directive.

> Bilginize: The FFI extension does not render the classic PHP extension API obsolete; it is merely provided for ad-hoc interfacing with C functions and data structures.

İpucu

Currently, accessing FFI data structures is significantly (about 2 times) slower than accessing native PHP arrays and objects. Therefore, it makes no sense to use the FFI extension for speed; however, it may make sense to use it to reduce memory consumption.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

This extension requires the » libffi library to be installed.

## Kurulum

To enable the FFI extension, PHP has to be configured with --with-ffi.

Windows users have to include php_ffi.dll into php.ini to enable the FFI extension.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

FFI Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
ffi.enable | "preload" | `INI_SYSTEM` |
ffi.preload | "" | `INI_SYSTEM` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`ffi.enable` string
  Allows enabling (`"true"`) or disabling (`"false"`) FFI API usage, or restricting it only to the CLI SAPI and preloaded files (`"preload"`). The FFI API restrictions only affect the FFI class, but not overloaded functions of FFI\CData objects. This means that it is possible to create some FFI\CData objects in preloaded files, and then to use these directly in PHP scripts.
`ffi.preload` string
  Allows preloading of FFI bindings during startup, which is not possible with FFI::load() if opcache.preload_user is set. This directive accepts a `DIRECTORY_SEPARATOR` delimited list of filenames. The preloaded bindings can be accessed by calling FFI::scope().

# Örnekler

## İçindekiler

- Basic FFI usage
- PHP Callbacks
- A Complete PHP/FFI/preloading Example

## Basic FFI usage

Before diving into the details of the FFI API, lets take a look at a few examples demonstrating the simplicity of the FFI API usage for regular tasks.

> Bilginize: Some of these examples require libc.so.6 and as such will not work on systems where it is not available.

Örnek 1 Calling a function from shared library

    <?php
    // create FFI object, loading libc and exporting function printf()
    $ffi = FFI::cdef(
        "int printf(const char *format, ...);", // this is a regular C declaration
        "libc.so.6");
    // call C's printf()
    $ffi->printf("Hello %s!\n", "world");
    ?>

Yukarıdaki örneğin çıktısı:

    Hello world!

> Bilginize: Note that some C functions need specific calling conventions, e.g. `__fastcall`, `__stdcall` or `,__vectorcall`.

Örnek 2 Calling a function, returning a structure through an argument

    <?php
    // create gettimeofday() binding
    $ffi = FFI::cdef("
        typedef unsigned int time_t;
        typedef unsigned int suseconds_t;

        struct timeval {
            time_t      tv_sec;
            suseconds_t tv_usec;
        };

        struct timezone {
            int tz_minuteswest;
            int tz_dsttime;
        };

        int gettimeofday(struct timeval *tv, struct timezone *tz);
    ", "libc.so.6");
    // create C data structures
    $tv = $ffi->new("struct timeval");
    $tz = $ffi->new("struct timezone");
    // call C's gettimeofday()
    var_dump($ffi->gettimeofday(FFI::addr($tv), FFI::addr($tz)));
    // access field of C data structure
    var_dump($tv->tv_sec);
    // print the whole C data structure
    var_dump($tz);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(0)
    int(1555946835)
    object(FFI\CData:struct timezone)#3 (2) {
      ["tz_minuteswest"]=>
      int(0)
      ["tz_dsttime"]=>
      int(0)
    }

Örnek 3 Accessing existing C variables

    <?php
    // create FFI object, loading libc and exporting errno variable
    $ffi = FFI::cdef(
        "int errno;", // this is a regular C declaration
        "libc.so.6");
    // print C's errno
    var_dump($ffi->errno);
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)

Örnek 4 Creating and Modifying C variables

    <?php
    // create a new C int variable
    $x = FFI::new("int");
    var_dump($x->cdata);

    // simple assignment
    $x->cdata = 5;
    var_dump($x->cdata);

    // compound assignment
    $x->cdata += 2;
    var_dump($x->cdata);
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(5)
    int(7)

Örnek 5 Working with C arrays

    <?php
    // create C data structure
    $a = FFI::new("long[1024]");
    // work with it like with a regular PHP array
    for ($i = 0; $i < count($a); $i++) {
        $a[$i] = $i;
    }
    var_dump($a[25]);
    $sum = 0;
    foreach ($a as $n) {
        $sum += $n;
    }
    var_dump($sum);
    var_dump(count($a));
    var_dump(FFI::sizeof($a));
    ?>

Yukarıdaki örneğin çıktısı:

    int(25)
    int(523776)
    int(1024)
    int(8192)

Örnek 6 Working with C enums

    <?php
    $a = FFI::cdef('typedef enum _zend_ffi_symbol_kind {
        ZEND_FFI_SYM_TYPE,
        ZEND_FFI_SYM_CONST = 2,
        ZEND_FFI_SYM_VAR,
        ZEND_FFI_SYM_FUNC
    } zend_ffi_symbol_kind;
    ');
    var_dump($a->ZEND_FFI_SYM_TYPE);
    var_dump($a->ZEND_FFI_SYM_CONST);
    var_dump($a->ZEND_FFI_SYM_VAR);
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(2)
    int(3)

## PHP Callbacks

It is possible to assign a PHP closure to a native variable of function pointer type or to pass it as a function argument:

Örnek 1 Assigning a PHP Closure to a C function pointer

    <?php
    $zend = FFI::cdef("
        typedef int (*zend_write_func_t)(const char *str, size_t str_length);
        extern zend_write_func_t zend_write;
    ");

    echo "Hello World 1!\n";

    $orig_zend_write = clone $zend->zend_write;
    $zend->zend_write = function($str, $len) {
        global $orig_zend_write;
        $orig_zend_write("{\n\t", 3);
        $ret = $orig_zend_write($str, $len);
        $orig_zend_write("}\n", 2);
        return $ret;
    };
    echo "Hello World 2!\n";
    $zend->zend_write = $orig_zend_write;
    echo "Hello World 3!\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Hello World 1!
    {
            Hello World 2!
    }
    Hello World 3!

Although this works, this functionality is not supported on all libffi platforms, is not efficient and leaks resources by the end of request.
İpucu

It is therefore recommended to minimize the usage of PHP callbacks.

## A Complete PHP/FFI/preloading Example

php.ini

    ffi.enable=preload
    opcache.preload=preload.php

preload.php

    <?php
    FFI::load(__DIR__ . "/dummy.h");
    opcache_compile_file(__DIR__ . "/dummy.php");
    ?>

dummy.h

    #define FFI_SCOPE "DUMMY"
    #define FFI_LIB "libc.so.6"

    int printf(const char *format, ...);

dummy.php

    <?php
    final class Dummy {
        private static $ffi = null;
        function __construct() {
            if (is_null(self::$ffi)) {
                self::$ffi = FFI::scope("DUMMY");
            }
        }
        function printf($format, ...$args) {
           return (int) self::$ffi->printf($format, ...$args);
        }
    }
    ?>

test.php

    <?php
    $d = new Dummy();
    $d->printf("Hello %s!\n", "world");
    ?>

# Main interface to C code and data

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

Objects of this class are created by the factory methods FFI::cdef(), FFI::load() or FFI::scope(). Defined C variables are made available as properties of the FFI instance, and defined C functions are made available as methods of the FFI instance. Declared C types can be used to create new C data structures using FFI::new() and FFI::type().

FFI definition parsing and shared library loading may take significant time. It is not useful to do it on each HTTP request in a Web environment. However, it is possible to preload FFI definitions and libraries at PHP startup, and to instantiate FFI objects when necessary. Header files may be extended with special `FFI_SCOPE` defines (e.g. `#define FFI_SCOPE "foo"`; the default scope is "C") and then loaded by FFI::load() during preloading. This leads to the creation of a persistent binding, that will be available to all the following requests through FFI::scope(). Refer to the complete PHP/FFI/preloading example for details.

It is possible to preload more than one C header file into the same scope.

## Sınıf Sözdizimi

final class FFI {
/* Sabitler */
public const int __BIGGEST_ALIGNMENT__;
/* Yöntemler */
public static function addr(FFI\CData `&$ptr`): FFI\CData
public static function alignof(FFI\CData|FFI\CType `&$ptr`): int
public static function arrayType(FFI\CType `$type`, array `$dimensions`): FFI\CType
public function cast(FFI\CType|string `$type`, FFI\CData|int|float|bool|null `&$ptr`): ?FFI\CData
public static function cdef(string `$code` = "", ?string `$lib` = `null`): FFI
public static function free(FFI\CData `&$ptr`): void
public static function isNull(FFI\CData `&$ptr`): bool
public static function load(string `$filename`): ?FFI
public static function memcmp(string|FFI\CData `&$ptr1`, string|FFI\CData `&$ptr2`, int `$size`): int
public static function memcpy(FFI\CData `&$to`, FFI\CData|string `&$from`, int `$size`): void
public static function memset(FFI\CData `&$ptr`, int `$value`, int `$size`): void
public function new(FFI\CType|string `$type`, bool `$owned` = `true`, bool `$persistent` = `false`): ?FFI\CData
public static function scope(string `$name`): FFI
public static function sizeof(FFI\CData|FFI\CType `&$ptr`): int
public static function string(FFI\CData `&$ptr`, ?int `$size` = `null`): string
public function type(string `$type`): ?FFI\CType
public static function typeof(FFI\CData `&$ptr`): FFI\CType
}

## Öntanımlı Sabitler

`FFI::__BIGGEST_ALIGNMENT__`

# FFI::addr

(PHP 7 >= 7.4.0, PHP 8)

FFI::addr — Creates an unmanaged pointer to C data

### Açıklama

public static function FFI::addr(FFI\CData `&$ptr`): FFI\CData

Creates an unmanaged pointer to the C data represented by the given FFI\CData. The source `ptr` must survive the resulting pointer. This function is mainly useful to pass arguments to C functions by pointer.

### Bağımsız Değişkenler

`ptr`
  The handle of the pointer to a C data structure.

### Dönen Değerler

Returns the freshly created FFI\CData object.

# FFI::alignof

(PHP 7 >= 7.4.0, PHP 8)

FFI::alignof — Gets the alignment

### Açıklama

public static function FFI::alignof(FFI\CData|FFI\CType `&$ptr`): int

Gets the alignment of the given FFI\CData or FFI\CType object.

### Bağımsız Değişkenler

`ptr`
  The handle of the C data or type.

### Dönen Değerler

Returns the alignment of the given FFI\CData or FFI\CType object.

# FFI::arrayType

(PHP 7 >= 7.4.0, PHP 8)

FFI::arrayType — Dynamically constructs a new C array type

### Açıklama

public static function FFI::arrayType(FFI\CType `$type`, array `$dimensions`): FFI\CType

Dynamically constructs a new C array type with elements of type defined by `type`, and dimensions specified by `dimensions`. In the following example `$t1` and `$t2` are equivalent array types:

    <?php
    $t1 = FFI::type("int[2][3]");
    $t2 = FFI::arrayType(FFI::type("int"), [2, 3]);
    ?>

### Bağımsız Değişkenler

`type`
  A valid C declaration as string, or an instance of FFI\CType which has already been created.
`dimensions`
  The dimensions of the type as array.

### Dönen Değerler

Returns the freshly created FFI\CType object.

# FFI::cast

(PHP 7 >= 7.4.0, PHP 8)

FFI::cast — Performs a C type cast

### Açıklama

public function FFI::cast(FFI\CType|string `$type`, FFI\CData|int|float|bool|null `&$ptr`): ?FFI\CData

FFI::cast() creates a new FFI\CData object, that references the same C data structure, but is associated with a different type. The resulting object does not own the C data, and the source `ptr` must survive the result. The C type may be specified as a string with any valid C type declaration or as FFI\CType object, created before. Any type declared for the instance is allowed.

### Bağımsız Değişkenler

`type`
  A valid C declaration as string, or an instance of FFI\CType which has already been created.
`ptr`
  The handle of the pointer to a C data structure.

### Dönen Değerler

Returns the freshly created FFI\CData object.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Calling FFI::cast() statically is now deprecated.

# FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdef — Creates a new FFI object

### Açıklama

public static function FFI::cdef(string `$code` = "", ?string `$lib` = `null`): FFI

Creates a new FFI object.

### Bağımsız Değişkenler

`code`
  A string containing a sequence of declarations in regular C language (types, structures, functions, variables, etc). Actually, this string may be copy-pasted from C header files.

  > Bilginize: C preprocessor directives are not supported, i.e. `#include`, `#define` and CPP macros do not work.

`lib`
  The name of a shared library file, to be loaded and linked with the definitions.

  > Bilginize: If `lib` is omitted or `null`, platforms supporting `RTLD_DEFAULT` attempt to lookup symbols declared in `code` in the normal global scope. Other systems will fail to resolve these symbols.

### Dönen Değerler

Returns the freshly created FFI object.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | C functions returning `void` return a PHP null instead of FFI\CType::TYPE_VOID.
8.0.0 | `lib` is nullable now.

# FFI::free

(PHP 7 >= 7.4.0, PHP 8)

FFI::free — Releases an unmanaged data structure

### Açıklama

public static function FFI::free(FFI\CData `&$ptr`): void

Manually releases a previously created unmanaged data structure.

### Bağımsız Değişkenler

`ptr`
  The handle of the unmanaged pointer to a C data structure.

### Dönen Değerler

Hiçbir değer dönmez.

# FFI::isNull

(PHP 7 >= 7.4.0, PHP 8)

FFI::isNull — Checks whether a FFI\CData is a null pointer

### Açıklama

public static function FFI::isNull(FFI\CData `&$ptr`): bool

Checks whether a FFI\CData is a null pointer.

### Bağımsız Değişkenler

`ptr`
  The handle of the pointer to a C data structure.

### Dönen Değerler

Returns whether a FFI\CData is a null pointer.

# FFI::load

(PHP 7 >= 7.4.0, PHP 8)

FFI::load — Loads C declarations from a C header file

### Açıklama

public static function FFI::load(string `$filename`): ?FFI

Loads C declarations from a C header file. It is possible to specify shared libraries that should be loaded, using special `FFI_LIB` defines in the loaded C header file.

### Bağımsız Değişkenler

`filename`
  The name of a C header file. C preprocessor directives are not supported, i.e. `#include`, `#define` and CPP macros do not work, except for special cases listed below. The header file should contain a `#define` statement for the `FFI_SCOPE` variable, e.g.: `#define FFI_SCOPE "MYLIB"`. Refer to the class introduction for details. The header file may contain a `#define` statement for the `FFI_LIB` variable to specify the library it exposes. If it is a system library only the file name is required, e.g.: `#define FFI_LIB "libc.so.6"`. If it is a custom library, a relative path is required, e.g.: `#define FFI_LIB "./mylib.so"`.

### Dönen Değerler

Returns the freshly created FFI object, or `null` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | FFI::load() is now allowed in preload scripts when the current system user is the same as the one defined in the `opcache.preload_user` configuration directive.

### Ayrıca Bakınız

- FFI::scope() - Instantiates an FFI object with C declarations parsed during preloading

# FFI::memcmp

(PHP 7 >= 7.4.0, PHP 8)

FFI::memcmp — Compares memory areas

### Açıklama

public static function FFI::memcmp(string|FFI\CData `&$ptr1`, string|FFI\CData `&$ptr2`, int `$size`): int

Compares `size` bytes from the memory areas `ptr1` and `ptr2`. Both `ptr1` and `ptr2` can be any native data structures (FFI\CData) or PHP strings.

### Bağımsız Değişkenler

`ptr1`
  The start of one memory area.
`ptr2`
  The start of another memory area.
`size`
  The number of bytes to compare.

### Dönen Değerler

Returns a value less than `0` if the contents of the memory area starting at `ptr1` are considered less than the contents of the memory area starting at `ptr2`, a value greater than `0` if the contents of the first memory area are considered greater than the second, and `0` if they are equal.

# FFI::memcpy

(PHP 7 >= 7.4.0, PHP 8)

FFI::memcpy — Copies one memory area to another

### Açıklama

public static function FFI::memcpy(FFI\CData `&$to`, FFI\CData|string `&$from`, int `$size`): void

Copies `size` bytes from the memory area `from` to the memory area `to`.

### Bağımsız Değişkenler

`to`
  The start of the memory area to copy to.
`from`
  The start of the memory area to copy from.
`size`
  The number of bytes to copy.

### Dönen Değerler

Hiçbir değer dönmez.

# FFI::memset

(PHP 7 >= 7.4.0, PHP 8)

FFI::memset — Fills a memory area

### Açıklama

public static function FFI::memset(FFI\CData `&$ptr`, int `$value`, int `$size`): void

Fills `size` bytes of the memory area pointed to by `ptr` with the given byte `value`.

### Bağımsız Değişkenler

`ptr`
  The start of the memory area to fill.
`value`
  The byte to fill with.
`size`
  The number of bytes to fill.

### Dönen Değerler

Hiçbir değer dönmez.

# FFI::new

(PHP 7 >= 7.4.0, PHP 8)

FFI::new — Creates a C data structure

### Açıklama

public function FFI::new(FFI\CType|string `$type`, bool `$owned` = `true`, bool `$persistent` = `false`): ?FFI\CData

Creates a native data structure of the given C type. Any type declared for the instance is allowed.

### Bağımsız Değişkenler

`type`
  `type` is a valid C declaration as string, or an instance of FFI\CType which has already been created.
`owned`
  Whether to create owned (i.e. managed) or unmanaged data. Managed data lives together with the returned FFI\CData object, and is released when the last reference to that object is released by regular PHP reference counting or GC. Unmanaged data should be released by calling FFI::free(), when no longer needed.
`persistent`
  Whether to allocate the C data structure permanently on the system heap (using malloc()), or on the PHP request heap (using emalloc()).

### Dönen Değerler

Returns the freshly created FFI\CData object, or `null` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Calling FFI::new() statically is now deprecated.

# FFI::scope

(PHP 7 >= 7.4.0, PHP 8)

FFI::scope — Instantiates an FFI object with C declarations parsed during preloading

### Açıklama

public static function FFI::scope(string `$name`): FFI

Instantiates an FFI object with C declarations parsed during preloading.

The FFI::scope() method is safe to call multiple times for the same scope. Multiple references to the same scope may be loaded at the same time.

### Bağımsız Değişkenler

`name`
  The scope name defined by a special `FFI_SCOPE` define.

### Dönen Değerler

Returns the freshly created FFI object.

### Ayrıca Bakınız

- FFI::load() - Loads C declarations from a C header file

# FFI::sizeof

(PHP 7 >= 7.4.0, PHP 8)

FFI::sizeof — Gets the size of C data or types

### Açıklama

public static function FFI::sizeof(FFI\CData|FFI\CType `&$ptr`): int

Returns the size of the given FFI\CData or FFI\CType object.

### Bağımsız Değişkenler

`ptr`
  The handle of the C data or type.

### Dönen Değerler

The size of the memory area pointed at by `ptr`.

# FFI::string

(PHP 7 >= 7.4.0, PHP 8)

FFI::string — Creates a PHP string from a memory area

### Açıklama

public static function FFI::string(FFI\CData `&$ptr`, ?int `$size` = `null`): string

Creates a PHP string from `size` bytes of the memory area pointed to by `ptr`.

### Bağımsız Değişkenler

`ptr`
  The start of the memory area from which to create a string.
`size`
  The number of bytes to copy to the string. If `size` is omitted or `null`, `ptr` must be a zero terminated array of C `char`.

### Dönen Değerler

The freshly created PHP string.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `size` is nullable now; previously, its default was `0`.

# FFI::type

(PHP 7 >= 7.4.0, PHP 8)

FFI::type — Creates an FFI\CType object from a C declaration

### Açıklama

public function FFI::type(string `$type`): ?FFI\CType

This function creates and returns a FFI\CType object for the given string containing a C type declaration. Any type declared for the instance is allowed.

### Bağımsız Değişkenler

`type`
  A valid C declaration as string.

### Dönen Değerler

Returns the freshly created FFI\CType object, or `null` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Calling FFI::type() statically is now deprecated.

# FFI::typeof

(PHP 7 >= 7.4.0, PHP 8)

FFI::typeof — Gets the FFI\CType of FFI\CData

### Açıklama

public static function FFI::typeof(FFI\CData `&$ptr`): FFI\CType

Gets the FFI\CType object representing the type of the given FFI\CData object.

### Bağımsız Değişkenler

`ptr`
  The handle of the pointer to a C data structure.

### Dönen Değerler

Returns the FFI\CType object representing the type of the given FFI\CData object.

## İçindekiler

- FFI::addr — Creates an unmanaged pointer to C data
- FFI::alignof — Gets the alignment
- FFI::arrayType — Dynamically constructs a new C array type
- FFI::cast — Performs a C type cast
- FFI::cdef — Creates a new FFI object
- FFI::free — Releases an unmanaged data structure
- FFI::isNull — Checks whether a FFI\CData is a null pointer
- FFI::load — Loads C declarations from a C header file
- FFI::memcmp — Compares memory areas
- FFI::memcpy — Copies one memory area to another
- FFI::memset — Fills a memory area
- FFI::new — Creates a C data structure
- FFI::scope — Instantiates an FFI object with C declarations parsed during preloading
- FFI::sizeof — Gets the size of C data or types
- FFI::string — Creates a PHP string from a memory area
- FFI::type — Creates an FFI\CType object from a C declaration
- FFI::typeof — Gets the FFI\CType of FFI\CData

# C Data Handles

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

FFI\CData objects can be used in a number of ways as a regular PHP data:

- C data of scalar types can be read and assigned via the $cdata property, e.g. `$x = FFI::new('int'); $x->cdata = 42;`
- C struct and union fields can be accessed as regular PHP object property, e.g. `$cdata->field`
- C array elements can be accessed as regular PHP array elements, e.g. `$cdata[$offset]`
- C arrays can be iterated using foreach statements.
- C arrays can be used as arguments of count().
- C pointers can be dereferenced as arrays, e.g. `$cdata[0]`
- C pointers can be compared using regular comparison operators (`<`, `<=`, `==`, `!=`, `>=`, `>`).
- C pointers can be incremented and decremented using regular `+`/`-`/ `++`/`--` operations, e.g. `$cdata += 5`
- C pointers can be subtracted from another using regular `-` operations.
- C pointers to functions can be called as a regular PHP closure, e.g. `$cdata()`
- Any C data can be duplicated using the clone operator, e.g. `$cdata2 = clone $cdata;`
- Any C data can be visualized using var_dump(), print_r(), etc.
- FFI\CData can now be assigned to structs and fields as of PHP 8.3.0.

> Bilginize: Notable limitations are that FFI\CData instances do not support isset(), empty() and unset(), and that wrapped C structs and unions do not implement Traversable.

## Sınıf Sözdizimi

namespace FFI;
final class CData {
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | FFI\CData can now be assigned to structs and fields.

# C Type Handles

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

## Sınıf Sözdizimi

namespace FFI;
final class CType {
/* Sabitler */
public const int TYPE_VOID;
public const int TYPE_FLOAT;
public const int TYPE_DOUBLE;
public const int TYPE_LONGDOUBLE;
public const int TYPE_UINT8;
public const int TYPE_SINT8;
public const int TYPE_UINT16;
public const int TYPE_SINT16;
public const int TYPE_UINT32;
public const int TYPE_SINT32;
public const int TYPE_UINT64;
public const int TYPE_SINT64;
public const int TYPE_ENUM;
public const int TYPE_BOOL;
public const int TYPE_CHAR;
public const int TYPE_POINTER;
public const int TYPE_FUNC;
public const int TYPE_ARRAY;
public const int TYPE_STRUCT;
public const int ATTR_CONST;
public const int ATTR_INCOMPLETE_TAG;
public const int ATTR_VARIADIC;
public const int ATTR_INCOMPLETE_ARRAY;
public const int ATTR_VLA;
public const int ATTR_UNION;
public const int ATTR_PACKED;
public const int ATTR_MS_STRUCT;
public const int ATTR_GCC_STRUCT;
public const int ABI_DEFAULT;
public const int ABI_CDECL;
public const int ABI_FASTCALL;
public const int ABI_THISCALL;
public const int ABI_STDCALL;
public const int ABI_PASCAL;
public const int ABI_REGISTER;
public const int ABI_MS;
public const int ABI_SYSV;
public const int ABI_VECTORCALL;
/* Yöntemler */
public function getAlignment(): int
public function getArrayElementType(): FFI\CType
public function getArrayLength(): int
public function getAttributes(): int
public function getEnumKind(): int
public function getFuncABI(): int
public function getFuncParameterCount(): int
public function getFuncParameterType(int `$index`): FFI\CType
public function getFuncReturnType(): FFI\CType
public function getKind(): int
public function getName(): string
public function getPointerType(): FFI\CType
public function getSize(): int
public function getStructFieldNames(): array
public function getStructFieldOffset(string `$name`): int
public function getStructFieldType(string `$name`): FFI\CType
}

## Öntanımlı Sabitler

`FFI\CType::TYPE_VOID`
`FFI\CType::TYPE_FLOAT`
`FFI\CType::TYPE_DOUBLE`
`FFI\CType::TYPE_LONGDOUBLE`
`FFI\CType::TYPE_UINT8`
`FFI\CType::TYPE_SINT8`
`FFI\CType::TYPE_UINT16`
`FFI\CType::TYPE_SINT16`
`FFI\CType::TYPE_UINT32`
`FFI\CType::TYPE_SINT32`
`FFI\CType::TYPE_UINT64`
`FFI\CType::TYPE_SINT64`
`FFI\CType::TYPE_ENUM`
`FFI\CType::TYPE_BOOL`
`FFI\CType::TYPE_CHAR`
`FFI\CType::TYPE_POINTER`
`FFI\CType::TYPE_FUNC`
`FFI\CType::TYPE_ARRAY`
`FFI\CType::TYPE_STRUCT`
`FFI\CType::ATTR_CONST`
`FFI\CType::ATTR_INCOMPLETE_TAG`
`FFI\CType::ATTR_VARIADIC`
`FFI\CType::ATTR_INCOMPLETE_ARRAY`
`FFI\CType::ATTR_VLA`
`FFI\CType::ATTR_UNION`
`FFI\CType::ATTR_PACKED`
`FFI\CType::ATTR_MS_STRUCT`
`FFI\CType::ATTR_GCC_STRUCT`
`FFI\CType::ABI_DEFAULT`
`FFI\CType::ABI_CDECL`
`FFI\CType::ABI_FASTCALL`
`FFI\CType::ABI_THISCALL`
`FFI\CType::ABI_STDCALL`
`FFI\CType::ABI_PASCAL`
`FFI\CType::ABI_REGISTER`
`FFI\CType::ABI_MS`
`FFI\CType::ABI_SYSV`
`FFI\CType::ABI_VECTORCALL`

# FFI\CType::getAlignment

(PHP 8 >= 8.1.0)

FFI\CType::getAlignment — Description

### Açıklama

public function FFI\CType::getAlignment(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getArrayElementType

(PHP 8 >= 8.1.0)

FFI\CType::getArrayElementType — Description

### Açıklama

public function FFI\CType::getArrayElementType(): FFI\CType

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getArrayLength

(PHP 8 >= 8.1.0)

FFI\CType::getArrayLength — Description

### Açıklama

public function FFI\CType::getArrayLength(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getAttributes

(PHP 8 >= 8.1.0)

FFI\CType::getAttributes — Description

### Açıklama

public function FFI\CType::getAttributes(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getEnumKind

(PHP 8 >= 8.1.0)

FFI\CType::getEnumKind — Description

### Açıklama

public function FFI\CType::getEnumKind(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getFuncABI

(PHP 8 >= 8.1.0)

FFI\CType::getFuncABI — Description

### Açıklama

public function FFI\CType::getFuncABI(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getFuncParameterCount

(PHP 8 >= 8.1.0)

FFI\CType::getFuncParameterCount — Retrieve the count of parameters of a function type

### Açıklama

public function FFI\CType::getFuncParameterCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of parameters for the underlying function type. If the underlying type is not a function, an FFI\Exception is thrown.

# FFI\CType::getFuncParameterType

(PHP 8 >= 8.1.0)

FFI\CType::getFuncParameterType — Retrieve the type of a function parameter

### Açıklama

public function FFI\CType::getFuncParameterType(int `$index`): FFI\CType

Returns the type of a parameter for the underlying function type.

### Bağımsız Değişkenler

`index`
  Index of the function parameter, zero-based.

### Dönen Değerler

Returns the type of a parameter for the underlying function type. If the underlying type is not a function, or the given index is outside of the range of parameters of the function, an FFI\Exception is thrown.

# FFI\CType::getFuncReturnType

(PHP 8 >= 8.1.0)

FFI\CType::getFuncReturnType — Description

### Açıklama

public function FFI\CType::getFuncReturnType(): FFI\CType

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getKind

(PHP 8 >= 8.1.0)

FFI\CType::getKind — Description

### Açıklama

public function FFI\CType::getKind(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getName

(PHP 7 >= 7.4.0, PHP 8)

FFI\CType::getName — Description

### Açıklama

public function FFI\CType::getName(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getPointerType

(PHP 8 >= 8.1.0)

FFI\CType::getPointerType — Description

### Açıklama

public function FFI\CType::getPointerType(): FFI\CType

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getSize

(PHP 8 >= 8.1.0)

FFI\CType::getSize — Description

### Açıklama

public function FFI\CType::getSize(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getStructFieldNames

(PHP 8 >= 8.1.0)

FFI\CType::getStructFieldNames — Description

### Açıklama

public function FFI\CType::getStructFieldNames(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# FFI\CType::getStructFieldOffset

(PHP 8 >= 8.1.0)

FFI\CType::getStructFieldOffset — Description

### Açıklama

public function FFI\CType::getStructFieldOffset(string `$name`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`name`

### Dönen Değerler

# FFI\CType::getStructFieldType

(PHP 8 >= 8.1.0)

FFI\CType::getStructFieldType — Description

### Açıklama

public function FFI\CType::getStructFieldType(string `$name`): FFI\CType

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`name`

### Dönen Değerler

## İçindekiler

- FFI\CType::getAlignment — Description
- FFI\CType::getArrayElementType — Description
- FFI\CType::getArrayLength — Description
- FFI\CType::getAttributes — Description
- FFI\CType::getEnumKind — Description
- FFI\CType::getFuncABI — Description
- FFI\CType::getFuncParameterCount — Retrieve the count of parameters of a function type
- FFI\CType::getFuncParameterType — Retrieve the type of a function parameter
- FFI\CType::getFuncReturnType — Description
- FFI\CType::getKind — Description
- FFI\CType::getName — Description
- FFI\CType::getPointerType — Description
- FFI\CType::getSize — Description
- FFI\CType::getStructFieldNames — Description
- FFI\CType::getStructFieldOffset — Description
- FFI\CType::getStructFieldType — Description

# FFI Exceptions

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

## Sınıf Sözdizimi

namespace FFI;
class Exception extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

# FFI Parser Exceptions

(PHP 7 >= 7.4.0, PHP 8)

## Giriş

## Sınıf Sözdizimi

namespace FFI;
final class ParserException extends FFI\Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Örnekler
  - Basic FFI usage
  - PHP Callbacks
  - A Complete PHP/FFI/preloading Example
- FFI — Main interface to C code and data
  - FFI::addr — Creates an unmanaged pointer to C data
  - FFI::alignof — Gets the alignment
  - FFI::arrayType — Dynamically constructs a new C array type
  - FFI::cast — Performs a C type cast
  - FFI::cdef — Creates a new FFI object
  - FFI::free — Releases an unmanaged data structure
  - FFI::isNull — Checks whether a FFI\CData is a null pointer
  - FFI::load — Loads C declarations from a C header file
  - FFI::memcmp — Compares memory areas
  - FFI::memcpy — Copies one memory area to another
  - FFI::memset — Fills a memory area
  - FFI::new — Creates a C data structure
  - FFI::scope — Instantiates an FFI object with C declarations parsed during preloading
  - FFI::sizeof — Gets the size of C data or types
  - FFI::string — Creates a PHP string from a memory area
  - FFI::type — Creates an FFI\CType object from a C declaration
  - FFI::typeof — Gets the FFI\CType of FFI\CData
- FFI\CData — C Data Handles
- FFI\CType — C Type Handles
  - FFI\CType::getAlignment — Description
  - FFI\CType::getArrayElementType — Description
  - FFI\CType::getArrayLength — Description
  - FFI\CType::getAttributes — Description
  - FFI\CType::getEnumKind — Description
  - FFI\CType::getFuncABI — Description
  - FFI\CType::getFuncParameterCount — Retrieve the count of parameters of a function type
  - FFI\CType::getFuncParameterType — Retrieve the type of a function parameter
  - FFI\CType::getFuncReturnType — Description
  - FFI\CType::getKind — Description
  - FFI\CType::getName — Description
  - FFI\CType::getPointerType — Description
  - FFI\CType::getSize — Description
  - FFI\CType::getStructFieldNames — Description
  - FFI\CType::getStructFieldOffset — Description
  - FFI\CType::getStructFieldType — Description
- FFI\Exception — FFI Exceptions
- FFI\ParserException — FFI Parser Exceptions

# OPcache

# Giriş

OPcache improves PHP performance by storing precompiled script bytecode in shared memory, thereby removing the need for PHP to load and parse scripts on each request.

This extension is bundled with PHP 5.5.0 and later, and is » available in PECL for PHP versions 5.2, 5.3 and 5.4.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

OPcache can only be compiled as a shared extension. If you have disabled the building of default extensions with --disable-all, you must compile PHP with the --enable-opcache option for OPcache to be available.

Once compiled, you can use the zend_extension configuration directive to load the OPcache extension into PHP. This can be done with `zend_extension=/full/path/to/opcache.so` on non-Windows platforms, and `zend_extension=C:\path\to\php_opcache.dll` on Windows.

> Bilginize: If you want to use OPcache with » Xdebug, you must load OPcache before Xdebug.

### Recommended php.ini settings

The following settings are generally recommended as providing good performance:

    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60
    opcache.fast_shutdown=1 ; prior to PHP 7.2.0
    opcache.enable_cli=1

You may also want to consider disabling opcache.save_comments and enabling opcache.enable_file_override, however note that you will have to test your code before using these in production as they are known to break some frameworks and applications, particularly in cases where documentation comment annotations are used.

On Windows, opcache.file_cache_fallback should be enabled, and opcache.file_cache should be set to an already existing and writable directory.

A full list of configuration directives supported by OPcache is also available.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

OPcache configuration options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
opcache.enable | 1 | `INI_ALL` |
opcache.enable_cli | 0 | `INI_SYSTEM` | Between PHP 7.1.2 and 7.1.6 inclusive, the default was `1`
opcache.memory_consumption | 128 | `INI_SYSTEM` |
opcache.interned_strings_buffer | 8 | `INI_SYSTEM` |
opcache.max_accelerated_files | 10000 | `INI_SYSTEM` |
opcache.max_wasted_percentage | 5 | `INI_SYSTEM` |
opcache.use_cwd | 1 | `INI_SYSTEM` |
opcache.validate_timestamps | 1 | `INI_ALL` |
opcache.revalidate_freq | 2 | `INI_ALL` |
opcache.revalidate_path | 0 | `INI_ALL` |
opcache.save_comments | 1 | `INI_SYSTEM` |
opcache.fast_shutdown | 0 | `INI_SYSTEM` | Removed in PHP 7.2.0
opcache.enable_file_override | 0 | `INI_SYSTEM` |
opcache.optimization_level | 0x7FFEBFFF | `INI_SYSTEM` | Changed from `0x7FFFBFFF` in PHP 7.3.0
opcache.inherited_hack | 1 | `INI_SYSTEM` | Removed in PHP 7.3.0
opcache.dups_fix | 0 | `INI_ALL` |
opcache.blacklist_filename | "" | `INI_SYSTEM` |
opcache.max_file_size | 0 | `INI_SYSTEM` |
opcache.consistency_checks | 0 | `INI_ALL` | Disabled as of 8.1.18 and 8.2.5. Removed as of PHP 8.3.0.
opcache.force_restart_timeout | 180 | `INI_SYSTEM` |
opcache.error_log | "" | `INI_SYSTEM` |
opcache.log_verbosity_level | 1 | `INI_SYSTEM` |
opcache.record_warnings | 0 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.preferred_memory_model | "" | `INI_SYSTEM` |
opcache.protect_memory | 0 | `INI_SYSTEM` |
opcache.mmap_base | `null` | `INI_SYSTEM` | Windows only.
opcache.restrict_api | "" | `INI_SYSTEM` |
opcache.file_update_protection | 2 | `INI_ALL` |
opcache.huge_code_pages | 0 | `INI_SYSTEM` |
opcache.lockfile_path | "/tmp" | `INI_SYSTEM` |
opcache.opt_debug_level | 0 | `INI_SYSTEM` | Available as of PHP 7.1.0
opcache.file_cache | `null` | `INI_SYSTEM` |
opcache.file_cache_only | 0 | `INI_SYSTEM` |
opcache.file_cache_consistency_checks | 1 | `INI_SYSTEM` |
opcache.file_cache_fallback | 1 | `INI_SYSTEM` | Windows only.
opcache.validate_permission | 0 | `INI_SYSTEM` | Available as of PHP 7.0.14
opcache.validate_root | 0 | `INI_SYSTEM` | Available as of PHP 7.0.14
opcache.preload | "" | `INI_SYSTEM` | Available as of PHP 7.4.0
opcache.preload_user | "" | `INI_SYSTEM` | Available as of PHP 7.4.0
opcache.cache_id | "" | `INI_SYSTEM` | Windows only. Available as of PHP 7.4.0
opcache.jit | "disable" | `INI_ALL` | Available as of PHP 8.0.0. Prior to PHP 8.4.0, the default value was "tracing".
opcache.jit_buffer_size | 64M | `INI_SYSTEM` | Available as of PHP 8.0.0. Prior to PHP 8.4.0, the default value was 0.
opcache.jit_debug | 0 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_bisect_limit | 0 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_prof_threshold | 0.005 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_max_root_traces | 1024 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_max_side_traces | 128 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_max_exit_counters | 8192 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_hot_loop | 61 | `INI_SYSTEM` | Available as of PHP 8.0.0. Before PHP 8.5.0, the default value was 64
opcache.jit_hot_func | 127 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_hot_return | 8 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_hot_side_exit | 8 | `INI_SYSTEM` | Available as of PHP 8.0.0
opcache.jit_blacklist_root_trace | 16 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_blacklist_side_trace | 8 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_max_loop_unrolls | 8 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_max_recursive_calls | 2 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_max_recursive_returns | 2 | `INI_ALL` | Available as of PHP 8.0.0
opcache.jit_max_polymorphic_calls | 2 | `INI_ALL` | Available as of PHP 8.0.0

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`opcache.enable` bool
  Enables the opcode cache. When disabled, code is not optimised or cached. The setting `opcache.enable` can not be enabled at runtime through ini_set(), it can only be disabled. Trying to enable it in a script will generate a warning.
`opcache.enable_cli` bool
  Enables the opcode cache for the CLI version of PHP.
`opcache.memory_consumption` int
  The size of the shared memory storage used by OPcache, in megabytes. The minimum permissible value is `"8"`, which is enforced if a smaller value is set.
`opcache.interned_strings_buffer` int
  The amount of memory used to store interned strings, in megabytes. The maximum value is 32767 on 64bit architectures, and 4095 on 32bit architectures.

  > Bilginize: Prior to PHP 8.4.0, the maximum value was 4095 megabytes on all architectures.

`opcache.max_accelerated_files` int
  The maximum number of keys (and therefore scripts) in the OPcache hash table. The actual value used will be the first number in the set of prime numbers `{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }` that is greater than or equal to the configured value. The minimum value is 200. The maximum value is 1000000. Values outside of this range are clamped to the permissible range.
`opcache.max_wasted_percentage` int
  The maximum percentage of wasted memory that is allowed before a restart is scheduled, if there is insufficient free memory. The maximum permissible value is `"50"`, which is enforced if a larger value is set.
`opcache.use_cwd` bool
  If enabled, OPcache appends the current working directory to the script key, thereby eliminating possible collisions between files with the same base name. Disabling this directive improves performance, but may break existing applications.
`opcache.validate_timestamps` bool

  If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds. When this directive is disabled, you must reset OPcache manually via opcache_reset(), opcache_invalidate() or by restarting the Web server for changes to the filesystem to take effect.

  > Bilginize: OPcache may still validate the timestamp of a file at compile-time if opcache.file_update_protection or opcache.max_file_size options are set to non-zero values.

`opcache.revalidate_freq` int
  How often to check script timestamps for updates, in seconds. `0` will result in OPcache checking for updates on every request. This configuration directive is ignored if opcache.validate_timestamps is disabled.
`opcache.revalidate_path` bool
  If disabled, existing cached files using the same include_path will be reused. Thus, if a file with the same name is elsewhere in the include_path, it won't be found.
`opcache.save_comments` bool
  If disabled, all documentation comments will be discarded from the opcode cache to reduce the size of the optimised code. Disabling this configuration directive may break applications and frameworks that rely on comment parsing for annotations, including Doctrine, Zend Framework 2 and PHPUnit.
`opcache.fast_shutdown` bool
  If enabled, a fast shutdown sequence is used that doesn't free each allocated block, but relies on the Zend Engine memory manager to deallocate the entire set of request variables en masse. This directive has been removed in PHP 7.2.0. A variant of the fast shutdown sequence has been integrated into PHP and will be automatically used if possible.
`opcache.enable_file_override` bool
  When enabled, the opcode cache will be checked for whether a file has already been cached when file_exists(), is_file() and is_readable() are called. This may increase performance in applications that check the existence and readability of PHP scripts, but risks returning stale data if opcache.validate_timestamps is disabled.
`opcache.optimization_level` int
  A bitmask that controls which optimisation passes are executed. The default value is `0x7FFEBFFF`, which enables all safe optimizations. Disabling optimizations or enabling unsafe optimizations is mostly useful for debugging/developing the optimizer. Each bit in the bitmask enables a specific optimization pass:

  Optimization Pass Bitmask
  Bit | Pass Name | Açıklama | Default
  --- | --- | --- | ---
  0 | PASS_1 | Simple peephole optimizations | On
  1 | PASS_2 | Unused (got merged into PASS_1) | On
  2 | PASS_3 | Simple jump optimization | On
  3 | PASS_4 | Call optimization | On
  4 | PASS_5 | Control Flow Graph based optimization | On
  5 | PASS_6 | Data Flow Analysis based optimization | On
  6 | PASS_7 | Whether call graph should be used for SSA-based optimizations | On
  7 | PASS_8 | Sparse conditional constant propagation | On
  8 | PASS_9 | Temporary variable optimization | On
  9 | PASS_10 | Removal of NOP opcodes | On
  10 | PASS_11 | Literal compaction | On
  11 | PASS_12 | Pre-compute call stack size | On
  12 | PASS_13 | Unused variable removal | On
  13 | PASS_14 | Dead code elimination | On
  14 | PASS_15 | Collect and substitute constant declarations (unsafe) | Off
  15 | PASS_16 | Trivial function inlining (part of call optimization) | On
  16 | (Flag) | Ignore possibility of operator overloading (unsafe) | Off

  > Bilginize: Safe vs Unsafe Optimizations
  > Safe optimizations (enabled by default) preserve the exact behavior of PHP code while improving performance. They include dead code elimination, constant folding, and jump optimization. Unsafe optimizations (disabled by default) may alter behavior in edge cases:

  > - Bit 14: Collecting constants. Constants are substituted at compile-time, ignoring runtime declaration order:

  >       <?php
  >       echo getA();         // Outputs: "hello" instead of throwing an Error
  >       const A = "hello";
  >       function getA() { return A; }

  > - Bit 16: Ignoring operator overloading. Unsafe when using classes with `do_operation` (e.g. GMP, BCMath) in arithmetic operations. With type declarations, the optimizer can apply the same optimizations safely.

`opcache.inherited_hack` bool
  This configuration directive is ignored.
`opcache.dups_fix` bool
  This hack should only be enabled to work around "Cannot redeclare class" errors.
`opcache.blacklist_filename` string
  The location of the OPcache blacklist file. A blacklist file is a text file containing the names of files that should not be accelerated, one per line. Wildcards are allowed, and prefixes can also be provided. Lines starting with a semi-colon are ignored as comments. A simple blacklist file might look as follows:

      ; Matches a specific file.
      /var/www/broken.php
      ; A prefix that matches all files starting with x.
      /var/www/x
      ; A wildcard match.
      /var/www/*-broken.php

`opcache.max_file_size` int
  The maximum file size that will be cached, in bytes. If this is `0`, all files will be cached.
`opcache.consistency_checks` int
  If non-zero, OPcache will verify the cache checksum every N requests, where N is the value of this configuration directive. This should only be enabled when debugging, as it will impair performance.

  > Bilginize: Disabled as of 8.1.18 and 8.2.5. Removed as of PHP 8.3.0.

`opcache.force_restart_timeout` int
  The length of time to wait for a scheduled restart to begin if the cache isn't active, in seconds. If the timeout is hit, then OPcache assumes that something is wrong and will kill the processes holding locks on the cache to permit a restart. If opcache.log_verbosity_level is set to 2 or above, a warning will be recorded in the error log when this occurs. This directive is not supported on Windows.
`opcache.error_log` string
  The error log for OPcache errors. An empty string is treated the same as `stderr`, and will result in logs being sent to standard error (which will be the Web server error log in most cases).
`opcache.log_verbosity_level` int
  The log verbosity level. By default, only fatal errors (level 0) and errors (level 1) are logged. Other levels available are warnings (level 2), information messages (level 3) and debug messages (level 4).
`opcache.record_warnings` bool
  If enabled, OPcache will record compile-time warnings and replay them on the next include, even if it is served from cache.
`opcache.preferred_memory_model` string
  The preferred memory model for OPcache to use. If left empty, OPcache will choose the most appropriate model, which is the correct behaviour in virtually all cases. Possible values include `mmap`, `shm`, `posix` and `win32`.
`opcache.protect_memory` bool
  Protects shared memory from unexpected writes while executing scripts. This is useful for internal debugging only.
`opcache.mmap_base` string
  The base used for shared memory segments on Windows. All PHP processes have to map shared memory into the same address space. Using this directive allows "Unable to reattach to base address" errors to be fixed.
`opcache.restrict_api` string
  Allows calling OPcache API functions only from PHP scripts which path is started from specified string. The default `""` means no restriction.
`opcache.file_update_protection` string
  Prevents caching files that are less than this number of seconds old. It protects from caching of incompletely updated files. In case all file updates are atomic, performance can be increased by setting this to `0`. This will allow files to be cached immediately.
`opcache.huge_code_pages` bool
  Enables or disables copying of PHP code (text segment) into HUGE PAGES. This should improve performance, but requires appropriate OS configuration. Available on Linux as of PHP 7.0.0, and on FreeBSD as of PHP 7.4.0.
`opcache.lockfile_path` string
  Absolute path used to store shared lockfiles (for *nix only)
`opcache.opt_debug_level` string
  Produces opcode dumps for debugging different stages of optimizations. 0x10000 will output opcodes as the compiler produced them before any optimization occurs while 0x20000 will output optimized codes.
`opcache.file_cache` string
  Enables and sets the second level cache directory. It should improve performance when SHM memory is full, at server restart or SHM reset. The default `""` disables file based caching.
`opcache.file_cache_only` bool
  Enables or disables opcode caching in shared memory.

  > Bilginize: Prior to PHP 8.1.0, disabling this directive with an already populated file cache required to manually clear the file cache.

`opcache.file_cache_consistency_checks` bool
  Enables or disables checksum validation when script loaded from file cache.
`opcache.file_cache_fallback` bool
  Implies `opcache.file_cache_only=1` for a certain process that failed to reattach to shared memory (Windows only). Explicitly enabling the file cache is required.
  Dikkat

  Disabling this configuration option may prevent processes to start, and is therefore discouraged.

`opcache.validate_permission` bool
  Validates the cached file permissions against the current user.
`opcache.validate_root` bool
  Prevents name collisions in chroot'ed environments. This should be enabled in all chroot'ed environments to prevent access to files outside the chroot.
`opcache.preload` string
  Specifies a PHP script that is going to be compiled and executed at server start-up, and which may preload other files, either by includeing them or by using the opcache_compile_file() function. All the entities (e.g. functions and classes) defined in these files will be available to requests out of the box, until the server is shut down.

  > Bilginize: Preloading is not supported on Windows.

`opcache.preload_user` string
  Lets the preloading to be run as the specified system user. This is useful for servers that startup as root before switching to an unprivileged system user. Preloading as root is not allowed by default for security reasons, unless this directive is explicitly set to `root`. As of PHP 8.3.0, this directive does not need to be set in order to allow preloading while running as root when using the CLI SAPI or phpdbg SAPI.
`opcache.cache_id` string

  On Windows, all processes running the same PHP SAPI under the same user account having the same cache ID share a single OPcache instance. The value of the cache ID can be freely chosen.

  İpucu

  For IIS, different application pools can have their own OPcache instance by using the environment variable APP_POOL_ID as `opcache.cache_id`.

`opcache.jit` string|int
  For typical usage, this option accepts one of four string values:
  - `disable`: Completely disabled, cannot be enabled at runtime.
  - `off`: Disabled, but can be enabled at runtime.
  - `tracing`/`on`: Use tracing JIT. Enabled by default and recommended for most users.
  - `function`: Use function JIT.

  For advanced usage, this option accepts a 4-digit integer `CRTO`, where the digits mean:

  `C` (CPU-specific optimization flags)
    - `0`: Disable CPU-specific optimization.
    - `1`: Enable use of AVX, if the CPU supports it.
  `R` (register allocation)
    - `0`: Don't perform register allocation.
    - `1`: Perform block-local register allocation.
    - `2`: Perform global register allocation.
  `T` (trigger)
    - `0`: Compile all functions on script load.
    - `1`: Compile functions on first execution.
    - `2`: Profile functions on first request and compile the hottest functions afterwards.
    - `3`: Profile on the fly and compile hot functions.
    - `4`: Currently unused.
    - `5`: Use tracing JIT. Profile on the fly and compile traces for hot code segments.
  `O` (optimization level)
    - `0`: No JIT.
    - `1`: Minimal JIT (call standard VM handlers).
    - `2`: Inline VM handlers.
    - `3`: Use type inference.
    - `4`: Use call graph.
    - `5`: Optimize whole script.
  The `"tracing"` mode corresponds to `CRTO = 1254`, the `"function"` mode corresponds to `CRTO = 1205`.
`opcache.jit_buffer_size` int
  The amount of shared memory to reserve for compiled JIT code. A zero value disables the JIT. int türünde bir değer kullanıldığında değer baytların sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri hakkında bilgiyi bu SSS altında bulabilirsiniz.
`opcache.jit_debug` int
  A bit mask specifying which JIT debug output to enable. For possible values, please consult » zend_jit.h (search for macro definitions beginning with `ZEND_JIT_DEBUG`).
`opcache.jit_bisect_limit` int
  Debugging option that disables JIT compilation after compiling a certain number of functions. This may be helpful to bisect the source of a JIT miscompilation. Note: this option only works when JIT trigger is set to 0 (compile on script load) or 1 (compile on first execution), e.g. `opcache.jit=1215`. See more in opcache.jit option.
`opcache.jit_prof_threshold` float
  When using the "profile on first request" trigger mode, this threshold determines whether a function is considered hot. The number of calls to the function divided by the number of calls to all functions must be above the threshold. For example, a threshold of 0.005 means that functions that made up more than 0.5% of all calls will be JIT compiled.
`opcache.jit_max_root_traces` int
  Maximum number of root traces. The root trace is an execution flow taking one path through the code firstly, which is a unit of JIT compilation. JIT will not compile new code if it reaches this limit.
`opcache.jit_max_side_traces` int
  Maximum number of side traces a root trace may have. The side trace is another execution flow that does not follow the path of compiled root trace. Side traces belonging to the same root trace will not be compiled if it reaches this limit.
`opcache.jit_max_exit_counters` int
  Maximum number of side trace exit counters. This limits the total number of side traces there may be, across all root traces.
`opcache.jit_hot_loop` int
  After how many iterations a loop is considered hot. Valid value range is `[0,255]`; for any setting out of this range, e.g. `-1` or `256`, default value will be used instead. `0` will disable JIT to trace and compile any loops.

  > Bilginize: It is recommended that this parameter is set to a prime number, to prevent it from being a multiple of loop iteration counts.

`opcache.jit_hot_func` int
  After how many calls a function is considered hot. Valid value range is `[0,255]`; for any setting out of this range, e.g. `-1` or `256`, default value will be used instead. `0` will disable JIT to trace and compile any functions.
`opcache.jit_hot_return` int
  After how many returns a return is considered hot. Valid value range is `[0,255]`; for any setting out of this range, e.g. `-1` or `256`, default value will be used instead. `0` will disable JIT to trace and compile any returns.
`opcache.jit_hot_side_exit` int
  After how many exits a side exit is considered hot. Valid value range is `[0,255]`; for any setting out of this range, e.g. `-1` or `256`, default value will be used instead. `0` will disable JIT to trace and compile any side exits.
`opcache.jit_blacklist_root_trace` int
  Maximum number of times the compilation of a root trace is attempted before it is blacklisted.
`opcache.jit_blacklist_side_trace` int
  Maximum number of times the compilation of a side trace is attempted before it is blacklisted.
`opcache.jit_max_loop_unrolls` int
  Maximum number of attempts to unroll a loop in a side trace, trying to reach the root trace and close the outer loop.
`opcache.jit_max_recursive_calls` int
  Maximum number of unrolled recursive call loops.
`opcache.jit_max_recursive_returns` int
  Maximum number of unrolled recursive return loops.
`opcache.jit_max_polymorphic_calls` int
  Maximum number of attempts to inline polymorphic (dynamic or method) calls. Calls above this limit are treated as megamorphic and are not inlined.

# Preloading

As of PHP 7.4.0, PHP can be configured to preload scripts into the opcache when the engine starts. Any functions, classes, interfaces, or traits (but not constants) in those files will then become globally available for all requests without needing to be explicitly included. That trades convenience and performance (because the code is always available) for baseline memory usage. It also requires restarting the PHP process to clear pre-loaded scripts, meaning this feature is only practical to use in production, not in a development environment.

Note that the optimal tradeoff between performance and memory may vary with the application. "Preload everything" may be the easiest strategy, but not necessarily the best strategy. Additionally, preloading is only useful when there is a persistent process from one request to another. That means while it can work in a CLI script if the opcache is enabled, it's generally pointless. The exception is when using preloading on FFI libraries.

> Bilginize: Preloading is not supported on Windows.

Configuring preloading involves two steps, and requires that the opcache be enabled. First, set the opcache.preload value in php.ini:

    opcache.preload=preload.php

preload.php is an arbitrary file that will run once at server startup (PHP-FPM, mod_php, etc.) and load code into persistent memory. In servers that startup as root before switching to an unprivileged system user, or if PHP will be run as root (not recommended), the opcache.preload_user value can specify the system user to run the preloading. Running preloading as root is not allowed by default. Set `opcache.preload_user=root` to explicitly allow it.

In the preload.php script, any file referenced by include, include_once, require, require_once, or opcache_compile_file() will be parsed into persistent memory. In the following example, all .php files in the src directory will be preloaded, unless they are a `Test` file.

    <?php
    $directory = new RecursiveDirectoryIterator(__DIR__ . '/src');
    $fullTree = new RecursiveIteratorIterator($directory);
    $phpFiles = new RegexIterator($fullTree, '/.+((?<!Test)+\.php$)/i', RecursiveRegexIterator::GET_MATCH);

    foreach ($phpFiles as $key => $file) {
        require_once $file[0];
    }
    ?>

Both include and opcache_compile_file() will work, but have different implications for how code gets handled.

- include will execute code in the file, while opcache_compile_file() will not. That means only the former supports conditional declaration (functions declared inside an if-block).
- Because include will execute code, nested included files will also be parsed and their declarations preloaded.
- opcache_compile_file() can load files in any order. That is, if a.php defines class `A` and b.php defines class `B` that extends `A`, then opcache_compile_file() can load those two files in any order. When using include, however, a.php must be included first.
- In either case, if a later script includes a file that has already been preloaded then its contents will still execute, but any symbols it defines will not be re-defined. Using include_once will not prevent the file from being included a second time. It may be necessary to load a file again in order to include global constants defined in it, as those are not handled by preloading.

Which approach is better therefore depends on the desired behavior. With code that would otherwise use an autoloader, opcache_compile_file() allows for greater flexibility. With code that would otherwise be loaded manually, include will be more robust.

# OPcache İşlevleri

# opcache_compile_file

(PHP 5 >= 5.5.5, PHP 7, PHP 8, PECL ZendOpcache > 7.0.2)

opcache_compile_file — Compiles and caches a PHP script without executing it

### Açıklama

function opcache_compile_file(string `$filename`): bool

This function compiles a PHP script and adds it to the opcode cache without executing it. This can be used to prime the cache after a Web server restart by pre-caching files that will be included in later requests.

### Bağımsız Değişkenler

`filename`
  The path to the PHP script to be compiled.

### Dönen Değerler

Returns `true` if `filename` was compiled successfully başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If `filename` cannot be loaded or compiled, an error of level `E_WARNING` is generated. You may use @ to suppress this warning.

### Ayrıca Bakınız

- opcache_invalidate() - Invalidates a cached script

# opcache_get_configuration

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache > 7.0.2)

opcache_get_configuration — Get configuration information about the cache

### Açıklama

function opcache_get_configuration(): array|false

This function returns configuration information about the cache instance

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of information, including ini, blacklist and version

### Hatalar/İstisnalar

If `opcache.restrict_api` is in use and the current path is in violation of the rule, an E_WARNING will be raised; no status information will be returned.

### Ayrıca Bakınız

- opcache_get_status() - Get status information about the cache

# opcache_get_status

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache > 7.0.2)

opcache_get_status — Get status information about the cache

### Açıklama

function opcache_get_status(bool `$include_scripts` = `true`): array|false

This function returns state information about the in-memory cache instance. It will not return any information about the file cache.

### Bağımsız Değişkenler

`include_scripts`
  Include script specific state information

### Dönen Değerler

Returns an array of information, optionally containing script specific state information, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If `opcache.restrict_api` is in use and the current path is in violation of the rule, an E_WARNING will be raised; no status information will be returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PHP 8.3.0 | `opcache_get_status()['scripts'][n]['revalidate']` now contains a Unix timestamp of when the next revalidation of the scripts timestamp is due, as dictated by the `opcache.revalidate_freq` INI directive.

### Örnekler

Örnek 1 A opcache_get_status() example

    <?php
    var_dump(opcache_get_status());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(9) {
      'opcache_enabled' =>
      bool(true)
      'cache_full' =>
      bool(false)
      'restart_pending' =>
      bool(false)
      'restart_in_progress' =>
      bool(false)
      'memory_usage' =>
      array(4) {
        'used_memory' =>
        int(9167936)
        'free_memory' =>
        int(125049792)
        'wasted_memory' =>
        int(0)
        'current_wasted_percentage' =>
        double(0)
      }
      'interned_strings_usage' =>
      array(4) {
        'buffer_size' =>
        int(8388608)
        'used_memory' =>
        int(2593616)
        'free_memory' =>
        int(5794992)
        'number_of_strings' =>
        int(10358)
      }
      'opcache_statistics' =>
      array(13) {
        'num_cached_scripts' =>
        int(0)
        'num_cached_keys' =>
        int(0)
        'max_cached_keys' =>
        int(16229)
        'hits' =>
        int(0)
        'start_time' =>
        int(1733310010)
        'last_restart_time' =>
        int(0)
        'oom_restarts' =>
        int(0)
        'hash_restarts' =>
        int(0)
        'manual_restarts' =>
        int(0)
        'misses' =>
        int(0)
        'blacklist_misses' =>
        int(0)
        'blacklist_miss_ratio' =>
        double(0)
        'opcache_hit_rate' =>
        double(0)
      }
      'scripts' =>
      array(0) {
      }
      'jit' =>
      array(7) {
        'enabled' =>
        bool(false)
        'on' =>
        bool(false)
        'kind' =>
        int(5)
        'opt_level' =>
        int(4)
        'opt_flags' =>
        int(6)
        'buffer_size' =>
        int(0)
        'buffer_free' =>
        int(0)
      }
    }

### Ayrıca Bakınız

- opcache_get_configuration() - Get configuration information about the cache

# opcache_invalidate

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache >= 7.0.0)

opcache_invalidate — Invalidates a cached script

### Açıklama

function opcache_invalidate(string `$filename`, bool `$force` = `false`): bool

This function invalidates a particular script from the opcode cache. If `force` is unset or `false`, the script will only be invalidated if the modification time of the script is newer than the cached opcodes. This function only invalidates in-memory cache and not file cache.

### Bağımsız Değişkenler

`filename`
  The path to the script being invalidated.
`force`
  If set to `true`, the script will be invalidated regardless of whether invalidation is necessary.

### Dönen Değerler

Returns `true` if the opcode cache for `filename` was invalidated or if there was nothing to invalidate, or `false` if the opcode cache is disabled.

### Ayrıca Bakınız

- opcache_compile_file() - Compiles and caches a PHP script without executing it
- opcache_reset() - Resets the contents of the opcode cache

# opcache_is_script_cached

(PHP 5 >= 5.5.11, PHP 7, PHP 8, PECL ZendOpcache >= 7.0.4)

opcache_is_script_cached — Tells whether a script is cached in OPCache

### Açıklama

function opcache_is_script_cached(string `$filename`): bool

This function checks if a PHP script has been cached in OPCache. This can be used to more easily detect the "warming" of the cache for a particular script. This function only checks in-memory cache, not file cache. In order to check file cache, use opcache_is_script_cached_in_file_cache().

### Bağımsız Değişkenler

`filename`
  The path to the PHP script to be checked.

### Dönen Değerler

Returns `true` if `filename` is cached in OPCache in-memory cache, `false` otherwise.

### Ayrıca Bakınız

- opcache_compile_file() - Compiles and caches a PHP script without executing it
- opcache_is_script_cached_in_file_cache() - Tells whether a script is cached in OPCache file cache

# opcache_is_script_cached_in_file_cache

(PHP 8 >= 8.5.0)

opcache_is_script_cached_in_file_cache — Tells whether a script is cached in OPCache file cache

### Açıklama

function opcache_is_script_cached_in_file_cache(string `$filename`): bool

This function checks if a PHP script has been cached in OPCache. This can be used to more easily detect the "warming" of the cache for a particular script. This function only checks file cache, not in-memory cache. In order to check in-memory cache, use opcache_is_script_cached().

### Bağımsız Değişkenler

`filename`
  The path to the PHP script to be checked.

### Dönen Değerler

Returns `true` if `filename` is cached in OPCache, `false` otherwise.

### Ayrıca Bakınız

- opcache_compile_file() - Compiles and caches a PHP script without executing it
- opcache_is_script_cached() - Tells whether a script is cached in OPCache

# opcache_jit_blacklist

(PHP 8 >= 8.4.0)

opcache_jit_blacklist — Blacklists a function from being JIT compiled

### Açıklama

function opcache_jit_blacklist( Closure `$closure` ): void

This function blacklists a particular function from being JIT compiled when Tracing JIT is in use. The function is specified using a Closure.

Uyarı

Any parts of the function that were already JIT compiled remain unaffected and will still be JIT compiled.

### Bağımsız Değişkenler

`closure`
  The function to blacklist, represented as a first class callable. It is also possible to pass an anonymous function, in which case the anonymous function itself is blacklisted.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 opcache_jit_blacklist() basic example

    <?php
    function foo() {
        $x = 1;
        $x += 0;
        ++$x;
        var_dump($x);
    }
    opcache_jit_blacklist(foo(...));
    foo();
    ?>

### Ayrıca Bakınız

- opcache_invalidate() - Invalidates a cached script
- opcache_reset() - Resets the contents of the opcode cache

# opcache_reset

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache >= 7.0.0)

opcache_reset — Resets the contents of the opcode cache

### Açıklama

function opcache_reset(): bool

This function resets the entire opcode cache. After calling opcache_reset(), all scripts will be reloaded and reparsed the next time they are hit. This function only resets in-memory cache, not the file cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the opcode cache was reset, or `false` if the opcode cache is disabled or the restart is pending or in progress (see opcache_get_status()).

### Ayrıca Bakınız

- opcache_invalidate() - Invalidates a cached script
- opcache_get_status() - Get status information about the cache

## İçindekiler

- opcache_compile_file — Compiles and caches a PHP script without executing it
- opcache_get_configuration — Get configuration information about the cache
- opcache_get_status — Get status information about the cache
- opcache_invalidate — Invalidates a cached script
- opcache_is_script_cached — Tells whether a script is cached in OPCache
- opcache_is_script_cached_in_file_cache — Tells whether a script is cached in OPCache file cache
- opcache_jit_blacklist — Blacklists a function from being JIT compiled
- opcache_reset — Resets the contents of the opcode cache

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Preloading
- OPcache İşlevleri
  - opcache_compile_file — Compiles and caches a PHP script without executing it
  - opcache_get_configuration — Get configuration information about the cache
  - opcache_get_status — Get status information about the cache
  - opcache_invalidate — Invalidates a cached script
  - opcache_is_script_cached — Tells whether a script is cached in OPCache
  - opcache_is_script_cached_in_file_cache — Tells whether a script is cached in OPCache file cache
  - opcache_jit_blacklist — Blacklists a function from being JIT compiled
  - opcache_reset — Resets the contents of the opcode cache

# Operator Overloading for Objects

# Giriş

This extension defines and implements operator overloading for objects. It allows defining how an object reacts when an operator is used on it.

One example of this is creating a collection type object that has the addition operator overloaded to allow adding elements to the collection or adding two collections together.

Another example is creating an enhanced string class that has the multiplication operator overloaded to allow repeating the string a certain number of times.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/operator.

Windows users can download prebuilt release binaries from the » PECL website.

operator releases are hosted by PECL and the source code by » github.

# Operator Overloading Magic Methods

The operator overloading extension allows you to define how an object reacts to operators. This is done by implementing the following magic methods:

Arithmetic operators:

- `$a::__add($b)`
- `$a::__sub($b)`
- `$a::__mul($b)`
- `$a::__div($b)`
- `$a::__mod($b)`
- `$a::__pow($b)`

Assignment operators:

- `$a::__assign($b)`
- `$a::__assign_add($b)`
- `$a::__assign_sub($b)`
- `$a::__assign_mul($b)`
- `$a::__assign_div($b)`
- `$a::__assign_mod($b)`
- `$a::__assign_pow($b)`
- `$a::__assign_bw_and($b)`
- `$a::__assign_bw_or($b)`
- `$a::__assign_bw_xor($b)`
- `$a::__assign_sl($b)`
- `$a::__assign_sr($b)`
- `$a::__assign_concat($b)`

Bitwise operators:

- `$a::__bw_and($b)`
- `$a::__bw_or($b)`
- `$a::__bw_xor($b)`
- `$a::__bw_not()`
- `$a::__sl($b)`
- `$a::__sr($b)`

Comparison operators:

- `$a::__is_equal($b)`
- `$a::__is_not_equal($b)`
- `$a::__is_identical($b)`
- `$a::__is_not_identical($b)`
- `$a::__is_smaller($b)`
- `$a::__is_smaller_or_equal($b)`
- `$a::__is_greater($b)`
- `$a::__is_greater_or_equal($b)`
- `$a::__spaceship($b)`

Incrementing and decrementing operators:

- `$a::__pre_inc()`
- `$a::__post_inc()`
- `$a::__pre_dec()`
- `$a::__post_dec()`

String operators:

- `$a::__concat($b)`

## Operator Overloading Examples

The following is the class that is used in the testing of the operator overloading extension. It overloads all of the possible operators that can be overloaded for testing.

Örnek 1 Complete class for operator overloading

    <?php
    class OperatorOverloading {
        protected mixed $value;

        //region Standard magic methods
        public function __get(string $name)
        {
            return $this->value;
        }

        public function __set(string $name, mixed $value)
        {
            $this->value = $value;
        }

        public function __construct(mixed $init = null)
        {
            $this->value = $init;
        }
        //endregion

        //region Arithmetic Operators
        public function __add(mixed $val): int|float
        {
            return $this->value + $val;
        }

        public function __div(mixed $val): int|float
        {
            return $this->value / $val;
        }

        public function __mod(mixed $val): int
        {
            return $this->value % $val;
        }

        public function __mul(mixed $val): int|float
        {
            return $this->value * $val;
        }

        public function __pow(mixed $val): int|float
        {
            return $this->value ** $val;
        }

        public function __sub(mixed $val): int|float
        {
            return $this->value - $val;
        }
        //endregion

        //region Assignment Operators
        public function __assign(mixed $val): mixed
        {
            return $this->value = $val;
        }

        public function __assign_add(mixed $val): mixed
        {
            return $this->value += $val;
        }

        public function __assign_bw_and(mixed $val): mixed
        {
            return $this->value &= $val;
        }

        public function __assign_bw_or(mixed $val): mixed
        {
            return $this->value |= $val;
        }

        public function __assign_concat(mixed $val): string
        {
            return $this->value .= $val;
        }

        public function __assign_div(mixed $val): mixed
        {
            return $this->value /= $val;
        }

        public function __assign_mod(mixed $val): mixed
        {
            return $this->value %= $val;
        }

        public function __assign_mul(mixed $val): mixed
        {
            return $this->value *= $val;
        }

        public function __assign_pow(mixed $val): mixed
        {
            return $this->value **= $val;
        }

        public function __assign_sl(mixed $val): mixed
        {
            return $this->value <<= $val;
        }

        public function __assign_sr(mixed $val): mixed
        {
            return $this->value >>= $val;
        }

        public function __assign_sub(mixed $val): mixed
        {
            return $this->value -= $val;
        }
        //endregion

        //region Bitwise Operators
        public function __bw_and(mixed $val): int
        {
            return $this->value & $val;
        }

        public function __bw_not(): int|string
        {
            return ~$this->value;
        }

        public function __bw_or(mixed $val): int
        {
            return $this->value | $val;
        }

        public function __bw_xor(mixed $val): int
        {
            return $this->value ^ $val;
        }

        public function __sl(mixed $val): int
        {
            return $this->value << $val;
        }

        public function __sr(mixed $val): int
        {
            return $this->value >> $val;
        }
        //endregion

        //region Comparison Operators
        public function __is_equal(mixed $val): bool
        {
            return $this->value == $val;
        }

        public function __is_greater(mixed $val): bool
        {
            return $this->value > $val;
        }

        public function __is_greater_or_equal(mixed $val): bool
        {
            return $this->value >= $val;
        }

        public function __is_identical(mixed $val): bool
        {
            return $this->value === $val;
        }

        public function __is_not_equal(mixed $val): bool
        {
            return $this->value != $val;
        }

        public function __is_not_identical(mixed $val): bool
        {
            return $this->value !== $val;
        }

        public function __is_smaller(mixed $val): bool
        {
            return $this->value < $val;
        }

        public function __is_smaller_or_equal(mixed $val): bool
        {
            return $this->value <= $val;
        }

        public function __spaceship(mixed $val): int
        {
            return $this->value <=> $val;
        }
        //endregion

        //region Incrementing/Decrementing Operators
        public function __post_dec(): mixed
        {
            return $this->value--;
        }

        public function __post_inc(): mixed
        {
            return $this->value++;
        }

        public function __pre_dec(): mixed
        {
            return --$this->value;
        }

        public function __pre_inc(): mixed
        {
            return ++$this->value;
        }
        //endregion

        //region String Operators
        public function __concat(mixed $val): string
        {
            return $this->value . $val;
        }
        //endregion

    }

Using the above class, you can overload the operators as follows:

    <?php
    $a = new OperatorOverloading(5);
    var_dump($a + 10);
    var_dump($a - 10);
    $b = new OperatorOverloading("Hello");
    var_dump($b . " World");

The above code will output:

    int(15)
    int(-5)
    string(11) "Hello World"

- Yapılandırma/Kurulum
  - Kurulum
- Operator Overloading Magic Methods

# Çıktı Tamponlama Denetimi

# Giriş

Çıktı denetim işlevleri, betikten gönderilen çıktıyı denetiminizde tutmaya yardımcı olurlar. Bu özellik, çok çeşitli durumlarda yararlı olabilir, özellikle de betiğiniz veriyi çıktılamaya başladıktan sonra bir başlık göndermek isterseniz. Çıktı denetim işlevleri, header() ve setcookie() işlevlerini kullanarak başlık gönderimini etkilemez, sadece PHP kod blokları arasındaki veriler ve echo gibi işlevler etkilenir.

# Yapılandırma/Kurulum

## İçindekiler

- Çalışma Anı Yapılandırması

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Çıktı Denetimi yapılandırma seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
output_buffering | `"0"` | `INI_PERDIR` |
output_handler | `null` | `INI_PERDIR` |
implicit_flush | `"0"` | `INI_ALL` |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | `INI_ALL` | PHP 7.1.0'dan önce, bu INI ayarı şeffaf oturum kimliği desteğini etkinleştiriyordu (bkz. session.trans_sid_tags). PHP 7.1.0 ve sonrasında, yalnızca output_add_rewrite_var() işlevini etkiliyor.
url_rewriter.hosts | `$_SERVER['HTTP_HOST']` öntanımlıdır. | `INI_ALL` | PHP 7.1.0 ve sonrasında kullanılabilir.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`output_buffering` bool/int

  Bu yönergeye `"On"` değeri atamak suretiyle çıktı tamponlaması bütün dosyalar için etkin kılınabilir. Tamponun boyun belli bir değerle sınırlanmak istenirse, `"On"` yerine bu değer bayt cinsinden yazılabilir (örnek: `output_buffering=4096`). PHP-CLI'de bu yönergenin değeri daima `"Off"`tur.

`output_handler` string

  Betiğin tüm çıktısı bir işleve yönlendirilebilir. Örneğin, bu yönergeye mb_output_handler() atanırsa karakter kodlaması şeffaf olarak belirtilen kodlamaya dönüştürülür. Bu yönergeye herhangi bir çıktı eylemcisinin atanması otomatik olarak çıktı tamponlamasını etkin kılar.

  > Bilginize:

  > mb_output_handler() ve ob_iconv_handler() işlevleri birlikte kullanılamaz. ob_gzhandler() ve zlib.output_compression ise şunlardan biri ile birlikte kullanılamaz: mb_output_handler(), ob_gzhandler(), zlib.output_compression, 'URL-Yeniden-Yazma' işleyicisi (bkz. session.use_trans_sid ve output_add_rewrite_var()).

  > Bilginize:

  > Bu yönergede sadece yerleşik işlevler belirtilebilir. Kullanıcı tanımlı işlevler için ob_start() işlevini kullanın.

`implicit_flush` bool

  `false` öntanımlıdır. `true` atandığında her çıktı bloğundan sonra çıktı tamponu kendi kendini otomatik olarak boşaltır. Bu işlem, her `HTML` bloğundan, çıktı üreten her çağrıdan (print veya echo gibi) sonra flush() işlevini çağırmaya eşdeğerdir.

  PHP'yi HTTP ortamında kullanırken bu seçeneğe `true` atandığında bir takım başarım sorunları ortaya çıkabilir, bu bakımdan genellikle sadece hata ayıklama amacıyla kullanılması önerilir. `CLI SAPI` altında bu yönergenin öntanımlı değeri `true`'dur.

  Ayrıca bakınız: ob_implicit_flush().

`url_rewriter.tags` string
  output_add_rewrite_var() değerleri tarafından yeniden yazılacak HTML etiketlerini ve özniteliklerini belirtmek içindir. `"form="` öntanımlıdır. `"form="` veya herhangi bir `form` özniteliğinin eklenmesi, output_add_rewrite_var() işlevine aktarılan her isim-değer çifti için bir isim ve değer özniteliği içeren `form`'a gizli bir `input` öğesi ekleyecektir.
  Dikkat

  Aynı etiket `url_rewriter.tags`'e birden fazla kez eklenirse, URL yeniden yazma işlemi sırasında yalnızca ilki kullanılır.

  > Bilginize: PHP 7.1.0 öncesinde, url_rewriter.tags, session.trans_sid_tags belirtmek için kullanılırdı.

`url_rewriter.hosts` string
  output_add_rewrite_var() değerleri tarafından yeniden yazılacak konakları belirtmek içindir. `$_SERVER['HTTP_HOST']` öntanımlıdır. Aralarına "," konarak çok sayıda konak belirtilebilir, aralarında boşluğa izin verilmez. Örnek: `php.net,wiki.php.net,bugs.php.net`

# Öntanımlı Sabitler

Aşağıdaki sabitler PHP çekirdeğinin parçası olarak daima kullanılabilir durumdadır.

Çıktı işleyicisine aktarılan durum bayrakları

Aşağıdaki bayraklar, ob_start() tarafından bir bit maskesinin parçası olarak ayarlanan çıktı işleyicisinin ikinci bağımsız değişkenine (`kip`) aktarılır:

`PHP_OUTPUT_HANDLER_START` (int)

  Çıktı tamponlamanın başladığını gösterir.

`PHP_OUTPUT_HANDLER_WRITE` (int)

  Çıktı tamponunun boşaltılacağını ve çıktılanacak verilerin bulunduğunu gösterir.

`PHP_OUTPUT_HANDLER_FLUSH` (int)

  Çıktı tamponunun boşaltıldığını gösterir.

`PHP_OUTPUT_HANDLER_CLEAN` (int)

  Çıktı tamponunun temizlendiğini gösterir.

`PHP_OUTPUT_HANDLER_FINAL` (int)

  Bunun son çıktı tamponu işlemi olduğunu gösterir.

`PHP_OUTPUT_HANDLER_CONT` (int)

  Çıktı tamponunu boşaltıldığını ancak çıktı tamponlamanın süreceğini gösterir.

  Bu sabit `PHP_OUTPUT_HANDLER_WRITE` sabitinin takma adıdır.

`PHP_OUTPUT_HANDLER_END` (int)

  Çıktı tamponlamanın bittiğini gösterir.

  Bu sabit `PHP_OUTPUT_HANDLER_FINAL` sabitinin takma adıdır.

Çıktı tamponu denetim seçenekleri

Aşağıdaki seçenekler, ob_start() işlevinin üçüncü bağımsız değişkenine (`seçenekler`) aktarılır:

`PHP_OUTPUT_HANDLER_CLEANABLE` (int)

  ob_start() tarafından oluşturulan bir çıktı tamponunun ob_clean() tarafından temizlenebilirliğini denetler. Bu seçenek ob_end_clean() veya ob_get_clean() işlevinin davranışını denetlemez.

`PHP_OUTPUT_HANDLER_FLUSHABLE` (int)

  ob_start() tarafından oluşturulan bir çıktı tamponunun ob_flush() tarafından boşaltılabilirliğini denetler. Bu seçenek ob_end_flush() veya ob_get_flush() işlevinin davranışını denetlemez.

`PHP_OUTPUT_HANDLER_REMOVABLE` (int)

  ob_start() tarafından oluşturulan bir çıktı tamponunun betik sonlanmadan önce veya ob_end_clean(), ob_end_flush(), ob_get_clean() ya da ob_get_flush() çağrıldığında silinebilirliğini denetler.

`PHP_OUTPUT_HANDLER_STDFLAGS` (int)

  Öntanımlı çıktı tamponu seçeneklerinin tamamı; şuna eşdeğerdir: `PHP_OUTPUT_HANDLER_CLEANABLE` | `PHP_OUTPUT_HANDLER_FLUSHABLE` | `PHP_OUTPUT_HANDLER_REMOVABLE`.

Çıktı işleyicisi durum bayrakları

Aşağıdaki bayraklar ob_get_status() tarafından döndürülen (`status`) bit maskesini oluşturabilir:

`PHP_OUTPUT_HANDLER_STARTED` (int)

  Çıktı işleyicisinin çağrıldığını belirtir.

`PHP_OUTPUT_HANDLER_DISABLED` (int)

  Çıktı işleyicisinin devre dışı olduğunu belirtir. Bu bayrak, çıktı işleyicisi çağrılmadan önce atandığında, çıktı işleyicisi `false` döndürdüğünde veya tamponu işlerken başarısız olduğunda atanır

`PHP_OUTPUT_HANDLER_PROCESSED` (int)

  Çıktı işleyicisinin tamponu başarıyla işlediğini gösterir. PHP 8.4.0'dan itibaren kullanılabilir.

# Output Buffering

Output buffering is the buffering (temporary storage) of output before it is flushed (sent and discarded) to the browser (in a web context) or to the shell (on the command line). While output buffering is active no output is sent from the script, instead the output is stored in an internal buffer.

## Buffering Affecting PHP

PHP relies on the underlying software/hardware infrastructure when flushing output. Buffering implemented by consoles on the command line (e.g. line buffered) or web servers and browser in a web context (e.g. fully buffered) do affect when output is displayed to the end-user. Some of these effects can be eliminated by fine-tuning server settings and/or aligning buffer sizes of the various layers.

## Output Buffering Control In PHP

PHP provides a fully buffered user-level output buffer with functions to start, manipulate and turn off the buffer (most ob_* functions), and two functions to flush the underlying system buffers (flush() and ob_implicit_flush()). Some of this functionality can be set and/or configured using the appropriate php.ini settings as well.

## Use Cases

Output buffering is generally useful in situations when the buffered output is modified or inspected, or it is used more than once in a request; or when the controlled flushing of output is desired. Specific use cases include:

- caching the result of compute/time intensive scripts for example by generating static `HTML` pages
- re-using the generated output by displaying it, saving it to a file and/or sending it by email
- flushing the `head` of an `HTML` page separate from the `body` allows browsers to load external resources while the script executes potentially more time consuming processes (e.g. database/file access, external network connection). This is only useful if the `HTTP` status code cannot change after the headers are sent
- extracting information from functions that would otherwise produce output (e.g. phpinfo())
- controlling the output of third-party code by modifying/using parts (e.g. extracting data, replacing words/phrases, adding missing `HTML` tags), or discarding it entirely under certain conditions (e.g. errors)
- polyfilling certain unavailable web server functionality (e.g. compressing or encoding output)

# Flushing System Buffers

PHP provides two related ways to flush (send and discard the contents of) system buffers: through calling flush() and through enabling implicit flushing with ob_implicit_flush() or the implicit_flush php.ini setting.

## Output Flushing Behaviour

With implicit flushing disabled, PHP will flush output only when flush() is called or when the script ends.

With implicit flushing enabled, PHP will attempt to flush after every block of code resulting in output. Output in this context is non-zero length data that is:

- outside of the `<?php ?>` tags
- printed by language constructs and functions whose explicit purpose is to output user provided variables or strings such as echo, print, printf(), var_dump(), var_export(), vprintf()
- printed by functions whose purpose is to collect and output data/information on the running script or PHP such as debug_print_backtrace(), phpcredits(), phpinfo(), ReflectionExtension::info()
- printed by PHP on an uncaught exception or an unhandled error (subject to the settings of display_errors and error_reporting)
- anything written to `php://output`

> Bilginize: Printing empty strings or sending headers is not considered output and will not result in a flush operation.

Uyarı

If implicit flushing is enabled, control characters (e.g. `"\n"`, `"\r"`, `"\0"`) will trigger flushing as well.

## Limitations

This functionality cannot flush user-level output buffers. To use these together, user-level output buffers must be flushed before flushing system buffers in order for PHP to produce any output.

Uyarı

Calling flush() or implicit flushing being enabled can interfere with output handlers of user-level output buffers that set and send headers in a web context (e.g. ob_gzhandler()) by sending headers before these handlers can do so.

Buffering implemented by the underlying software/hardware cannot be overridden by PHP and should be taken into account when working with PHP's buffer control functions. Checking the web servers/browsers/consoles buffering settings and working with these can alleviate possible issues. Working in a web context, either the web server's buffering settings or the script's buffering could be adjusted to work in tandem whereas working around the buffering strategies of various browsers can be achieved by adjusting buffering in the PHP script. On consoles that implement line buffering, newline characters could be inserted in the appropriate places before flushing output.

## SAPI Differences In Flushing

Although flushing is implemented by each SAPI in a slightly different way, these implementations fall in one of two categories:

- SAPIs used in a web context will flush headers first followed by the output. `Apache2Handler`, `CGI`, `FastCGI` and `FPM` are such SAPIs
- other SAPIs such as `CLI` and `embed` will flush output only

# User-Level Output Buffers

## İçindekiler

- What Output Is Buffered?
- Nesting Output Buffers
- Buffer Size
- Operations Allowed On Buffers
- Output Handlers
- Working With Output Handlers
- Flags Passed To Output Handlers
- Output Handler Return Values

User-level output buffers can be started, manipulated and terminated from PHP code. Each of these buffers includes an output buffer and an associated output handler function.

## What Output Is Buffered?

PHP's user-level output buffers buffer all output after they are started until they are turned off or the script ends. Output in the context of PHP's user-level output buffer is everything that PHP would display or send back to the browser. In practical terms, output is non-zero length data that is:

- outside of the `<?php ?>` tags
- printed by language constructs and functions whose explicit purpose is to output user provided variables or strings such as echo, print, printf(), var_dump(), var_export(), vprintf()
- printed by functions whose purpose is to collect and output data/information on the running script or PHP such as debug_print_backtrace(), phpcredits(), phpinfo(), ReflectionExtension::info()
- printed by PHP on an uncaught exception or an unhandled error (subject to the settings of display_errors and error_reporting)
- anything written to `php://output`

> Bilginize: Data that is written directly to `stdout` or passed to an SAPI function with a similar functionality will not be captured by user-level output buffers. This includes writing data to `stdout` with fwrite() or sending headers using header() or setcookie().

## Turning Output Buffering On

Output buffering can be turned on by using the ob_start() function or by setting the output_buffering and output_handler php.ini settings. While both can create output buffers, ob_start() is more flexible as it accepts user-defined functions as output handlers and the operations allowed on the buffer (flush, clean, remove) can be set as well. Buffers started with ob_start() will be active from the line the function was called, while those started with output_buffering will be buffering output from the first line of the script.

PHP is also shipped with a built-in `"URL-Rewriter"` output handler which starts its own output buffer and only allows up to two instances of it running at any time (one for user-level URL-rewriting and one for transparent session id support). These buffers can be started by calling the output_add_rewrite_var() function and/or by enabling the session.use_trans_sid php.ini setting.

The bundled `zlib` extension has its own output buffer which can be enabled by using the zlib.output_compression php.ini setting.

> Bilginize: While `"URL-Rewriter"` is special in that it only allows up to two instances of it running at any one time, all user-level output buffers use the same underlying buffers used by ob_start() with their functionality implemented by a custom output handler function. As such, all of their functionality can be emulated by userland code.

## Nesting Output Buffers

If there is an output buffer active when a new buffer is started, the new buffer will be nested inside the previously active buffer. The inner buffer will behave the same way regardless whether it is nested but output buffered by it will not be buffered by the outer buffer. Only output flushed by the inner buffer will be buffered by the outer buffer.

Most `ob_*` functions only work with the active output buffer (the last one started) therefore only the active buffer can be flushed, cleaned and turned off. The functions that work with other buffers are ob_list_handlers() which returns the list of all output handlers in use and ob_get_status() which can return information on the active buffer only or on all buffers in use.

Calling ob_get_level() or ob_get_status() will return the nesting level of the active output buffer.

Dikkat

The value for identical levels between ob_get_level() and ob_get_status() is off by one. For ob_get_level() the first level is `1`, whereas for ob_get_status() the first level is `0`.

## Buffer Size

Buffer sizes are expressed by integers and represent the number of bytes the buffer can store without flushing. When the size of output in the buffer exceeds the size of the buffer, the contents of the buffer are sent to the output handler, its return value is flushed and the buffer is cleared.

With the exception of `"URL-Rewriter"`, the size of output buffers can be set when the buffer is started. If set to `0`, the output buffer is only limited by the memory available to PHP. If set to `1`, the buffer is flushed after every block of code producing any non-zero length output.

The size of output buffers can be retrieved by calling ob_get_status().

Output buffers started with ob_start() will have their buffer sizes set to the integer value passed to the function's second `chunk_size` parameter. If omitted, it is set to `0`.

The output buffer started with output_buffering set to `"On"` will have its buffer size set to 0. If set to an integer than buffer size will correspond to that number.

`"URL-Rewriter"`'s buffer size is set to `0`, therefore it is only limited by the memory available to PHP.

The size of `zlib`'s output buffer is controlled by the zlib.output_compression php.ini setting. If set to `"On"` the buffer size will be `"16K"`/`16384`. If set to an integer then buffer size will correspond to that number in bytes.

## Operations Allowed On Buffers

The operations allowed on buffers can be controlled by passing one of the buffer control flags to ob_start()'s third `flags` parameter. If omitted, all operations are allowed by default. If `0` is used instead, the buffer cannot be flushed, cleaned or removed but its contents can still be retrieved.

`PHP_OUTPUT_HANDLER_CLEANABLE` allows ob_clean() to clean the contents of the buffer.

Uyarı

The absence of the `PHP_OUTPUT_HANDLER_CLEANABLE` flag will not prevent ob_end_clean() or ob_get_clean() from clearing the contents of the buffer.

`PHP_OUTPUT_HANDLER_FLUSHABLE` allows ob_flush() to flush the contents of the buffer.

Uyarı

The absence of the `PHP_OUTPUT_HANDLER_FLUSHABLE` flag will not prevent ob_end_flush() or ob_get_flush() from flushing the contents of the buffer.

`PHP_OUTPUT_HANDLER_REMOVABLE` allows ob_end_clean(), ob_end_flush(), ob_get_clean() or ob_get_flush() to turn off the buffer.

`PHP_OUTPUT_HANDLER_STDFLAGS`, the combination of the three flags will allow each of the three operations to be performed on the buffer.

## Flushing, Accessing And Cleaning Buffer Contents

Flushing sends and discards the contents of the active buffer. Output buffers get flushed when the size of the output exceeds the size of the buffer; the script ends or ob_flush(), ob_end_flush() or ob_get_flush() is called.

Dikkat

Calling ob_end_flush() or ob_get_flush() will turn off the active buffer.

Dikkat

Flushing buffers will flush the return value of the output handler which can differ from the contents of the buffer. For example, using ob_gzhandler() will compress the output and flush the compressed output.

The contents of the active buffer can be retrieved by calling ob_get_contents(), ob_get_clean() or ob_get_flush().

If only the length of the buffer's contents are needed, ob_get_length() or ob_get_status() will return the length of the contents in bytes.

Dikkat

Calling ob_get_clean() or ob_get_flush() will turn off the active buffer after returning the its contents.

The contents of the active buffer can be cleaned by calling ob_clean(), ob_end_clean() or ob_get_clean().

Dikkat

Calling ob_end_clean() or ob_get_clean() will turn off the active buffer.

## Turning Buffers Off

Output buffers can be turned off by calling ob_end_clean(), ob_end_flush(), ob_get_flush() or ob_get_clean().

Uyarı

Output buffers started without the `PHP_OUTPUT_HANDLER_REMOVABLE` flag cannot be turned off and may generate an `E_NOTICE`.

Every output buffer that has not been closed by the end of the script or when exit() is called will be flushed and turned off by PHP's shutdown process. The buffers will be flushed and turned off in reverse order of their starting up. The last buffered started will be first, the first buffer started will be last to be flushed and turned off.

Dikkat

If flushing of the buffer's contents is not desired, a custom output handler should be used to prevent flushing during shutdown.

## Output Handlers

Output handlers are callables associated with output buffers that are invoked by calling ob_clean(), ob_flush(), ob_end_flush(), ob_get_flush(), ob_end_clean(), ob_get_clean() or during PHP's shutdown process.

> Bilginize: The shutdown process will flush the return value of the handler.

If omitted or `null` when starting the output buffer the internal `"default output handler"` will be used which returns the unmodified contents of the buffer when invoked. Output handlers can be used to return a modified version of the buffer's contents and/or have side-effects (e.g. send headers).

PHP comes with two internal output handlers: `"default output handler"` and `"URL-Rewriter"` (which is integrated into its own output buffer and only up to two instances of it can be started).

The bundled extensions include four additional output handlers: mb_output_handler(), ob_gzhandler(), ob_iconv_handler(), ob_tidyhandler().

## Working With Output Handlers

When invoked, output handlers are passed the contents of the buffer and a bitmask indicating the status of output buffering.

function handler ( string `$buffer` , int `$phase` = ?): string

`buffer`
  Contents of the output buffer.
`phase`
  Bitmask of `PHP_OUTPUT_HANDLER_*` constants .

Uyarı

Calling any of the following functions from within an output handler will result in a fatal error: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().

> Bilginize: If the `PHP_OUTPUT_HANDLER_DISABLED` of a handler is set, the handler will not be invoked by calling ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush(), ob_clean(), ob_flush() or during PHP's shutdown process. Prior to PHP 8.4.0, this flag had no effect when calling ob_clean() or ob_flush().

> Bilginize: The working directory of the script can change inside the shutdown function under some web servers, e.g. Apache or the built-in web server.

## Flags Passed To Output Handlers

The bitmask passed to the second `phase` parameter of the output handler provides information on the invocation of the handler.

> Bilginize: The bitmask can include more than one flag and the bitwise `&` operator should be used to check whether a flag is set.

Uyarı

The value of `PHP_OUTPUT_HANDLER_WRITE` and its alias `PHP_OUTPUT_HANDLER_CONT` is `0` therefore whether it is set can only be determined by using an equality operator (`==` or `===`).

The following flags are set in a specific phase of the handler's lifecycle: `PHP_OUTPUT_HANDLER_START` is set when a handler is invoked for the first time. `PHP_OUTPUT_HANDLER_FINAL` or its alias `PHP_OUTPUT_HANDLER_END` is set when a handler is invoked for the last time, i.e. it is being turned off. This flag is also set when buffers are being turned off by PHP's shutdown process.

The following flags are set by a specific invocation of the handler: `PHP_OUTPUT_HANDLER_FLUSH` is set when the handler is invoked by calling ob_flush(). `PHP_OUTPUT_HANDLER_WRITE` or its alias `PHP_OUTPUT_HANDLER_CONT` is set when the size of its contents equals or exceeds the size of the buffer and the handler is invoked while the buffer is being automatically flushed. `PHP_OUTPUT_HANDLER_FLUSH` is set when the handler is invoked by calling ob_clean(), ob_end_clean() or ob_get_clean(). When ob_end_clean() or ob_get_clean() is called, `PHP_OUTPUT_HANDLER_FINAL` is set as well.

> Bilginize: When ob_end_flush() or ob_get_flush() is called, `PHP_OUTPUT_HANDLER_FINAL` is set but `PHP_OUTPUT_HANDLER_FLUSH` is not.

## Output Handler Return Values

The return value of the output handler is internally coerced into a string following standard PHP type semantics, with two exceptions: arrays and booleans.

Arrays are converted into the string `"Array"` but the `Array to string conversion` warning is not triggered.

If the handler returns `false` the contents of the buffer are returned. If the handler returns `true` an empty string is returned.

> Bilginize: If a handler returns `false` or throws an exception its `PHP_OUTPUT_HANDLER_DISABLED` status flag is set.

## Exceptions Thrown In Output Handlers

If an uncaught exception is thrown in an output handler the program terminates and the handler is invoked by the shutdown process after which the `"Uncaught Exception"` error message is flushed.

If the uncaught exception is thrown in a handler invoked by ob_flush(), ob_end_flush() or ob_get_flush(), the contents of the buffer are flushed before the error message.

If an uncaught exception is thrown in an output handler during shutdown, the handler is terminated and neither the contents of the buffer nor the error message is flushed.

> Bilginize: If a handler throws an exception its `PHP_OUTPUT_HANDLER_DISABLED` status flag is set.

## Errors Raised In Output Handlers

If a non-fatal error is raised in an output handler the program continues execution.

If the non-fatal error is raised in a handler invoked by ob_flush(), ob_end_flush() or ob_get_flush(), the buffer flushes certain data depending on the return value of the handler. If the handler returns `false` the buffer and the error message are flushed. If the returns anything else the handler return value is flushed but not the error message.

> Bilginize: If a handler returns `false` its `PHP_OUTPUT_HANDLER_DISABLED` status flag is set.

If a fatal error is raised in an output handler the program terminates and the handler is invoked by the shutdown process after which the error message is flushed.

If the fatal error is raised in a handler invoked by ob_flush(), ob_end_flush() or ob_get_flush(), the contents of the buffers are flushed before the error message.

If a fatal error is raised in an output handler during shutdown the program terminates without flushing the buffer or the error message.

## Output In Output Handlers

In specific circumstances, output produced in the handler is flushed along with the contents of the buffer. This output is not appended to the buffer and is not part of the string returned by ob_get_flush().

During flush operations (calling ob_flush(), ob_end_flush(), ob_get_flush() and during shutdown) if the return value of a handler is `false` the contents of the buffer are flushed followed by the output. If the handler is not invoked during shutdown the handler throwing an exception or exit() being called results in the same behavior.

> Bilginize: If a handler returns `false` its `PHP_OUTPUT_HANDLER_DISABLED` status flag is set.

## Output Handler Status Flags

The handler status flags of the buffer's `flags` bitmask are set every time to the output handler is invoked and are part of the `flags` returned by ob_get_status(). If the handler successfully executes and does not return `false`, `PHP_OUTPUT_HANDLER_STARTED` and `PHP_OUTPUT_HANDLER_PROCESSED` is set. If the handler returns `false` or throws an exception while executing, `PHP_OUTPUT_HANDLER_STARTED` and `PHP_OUTPUT_HANDLER_DISABLED` is set.

> Bilginize: If the `PHP_OUTPUT_HANDLER_DISABLED` of a handler is set, the handler will not be invoked by calling ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush(), ob_clean(), ob_flush() or during PHP's shutdown process. Prior to PHP 8.4.0, this flag had no effect when calling ob_clean() or ob_flush().

# Örnekler

## İçindekiler

- Basic usage
- - Çıktının yeniden yazılması

## Basic usage

Örnek 1 - Çıktı Denetimi örneği

    <?php

    ob_start();
    echo "Hello\n";

    setcookie("cookiename", "cookiedata");

    ob_end_flush();

    ?>

Yukarıdaki örnekte, ob_end_flush() işlevi çağrılana kadar echo çıktısı çıktı tamponunda saklanır. Bu süre zarfında, setcookie() çağrısı çerezi bir hataya yol açmadan başarıyla saklar. (Normalde, tarayıcıya veri gönderildikten sonra başlıkları gönderemezsiniz.)

## - Çıktının yeniden yazılması

PHP 7.1.0'dan beri, output_add_rewrite_var() ve output_reset_rewrite_vars() adanmış çıktı tamponunu kullanır. Yani, trans sid çıktı tamponunu kullanmaz.

Örnek 1 - Çıktının yeniden yazılması örneği

    <?php
    // Bu kod PHP 7.1.0, 7.0.10, 5.6.25 ve üstü ile çalışır.

    // HTTP_HOST öntanımlı hedef konaktır. Örnek kodun çalışması için elle atanır
    $_SERVER['HTTP_HOST'] = 'php.net';

    // Sadece form yeniden yazılır. a=href ekle.
    // Etiketler etk_adı=url_özntlk biçeminde belirtilebilir,
    // örn. img=src,iframe=src
    // Atamalar arasında boşluk bulunmamalıdır.
    // Form etiketi özel bir etiket olup gizli (hidden) girdi ekler.
    ini_set('url_rewriter.tags','a=href,form=');
    var_dump(ini_get('url_rewriter.tags'));

    // Bu, URL ve form'a eklenir
    output_add_rewrite_var('test', 'value');
    ?>
    <a href="//php.net/index.php?bug=1234">bug1234</a>
    <form action="https://php.net/?bug=1234&edit=1" method="post">
     <input type="text" name="title" />
    </form>

Yukarıdaki örneğin çıktısı:

    <a href="//php.net/?bug=1234&test=value">bug1234</a>
    <form action="https://php.net/?bug=1234&edit=1" method="post"><input type="hidden" name="test" value="value" />
     <input type="text" name="title" />
    </form>

PHP 7.1.0'dan beri, çıktı yeniden yazma işlevleri kendi INI yönergelerine sahiptir: url_rewriter.tags ve url_rewriter.hosts.

# Çıktı Denetim İşlevleri

# Ayrıca Bakınız

header() ve setcookie().

# flush

(PHP 4, PHP 5, PHP 7, PHP 8)

flush — Sistem çıktı tamponunu boşaltır

### Açıklama

function flush(): void

PHP'nin kullandığı ve PHP'nin artalanında kullanılan (CGI, HTTP sunucusu gibi) sistem yazma tamponlarını boşaltır. Komut satırı ortamında flush() yalnızca tamponların içeriklerini temizlemeye çalışırken, HTTP bağlamında ise başlıklar ve tamponların içerikleri temizlenir.

> Bilginize: flush() HTTP sunucusunun tamponlama şemasını geçersiz kılamayabilir ve tarayıcıdaki istemci tarafı tamponlama üzerinde hiçbir etkisi yoktur.

> Bilginize: Bu işlevin ob_start() veya output_add_rewrite_var() tarafından başlatılanlar gibi kullanıcı seviyesi çıktı işleyicileri üzerinde herhangi bir etkisi yoktur.

Uyarı

flush(), HTTP bağlamında başlıkları atayan ve gönderen çıktı işleyicilerine (örneğin ob_gzhandler()) onlardan önce başlıkları göndererek müdahale edebilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_clean() - Etkin çıktı tamponunun içeriğini temizler (siler)
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır

# ob_clean

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ob_clean — Etkin çıktı tamponunun içeriğini temizler (siler)

### Açıklama

function ob_clean(): bool

Bu işlev çıktı işleyicisini çağırır (`PHP_OUTPUT_HANDLER_CLEAN` bayrağıyla), dönüş değerini iptal eder, etkin çıktı tamponunun içeriğini temizler (siler)

Bu işlev, ob_end_clean() veya ob_get_clean() işlevinin yaptığı gibi etkin çıktı tamponunu kapatmaz.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_CLEANABLE` bayrağı olmaksızın başlatılırsa ob_clean() başarısız olur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

İşlev başarısız olursa bir `E_NOTICE` üretir.

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_get_clean() - Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır
- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)

# ob_end_clean

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_end_clean — Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır

### Açıklama

function ob_end_clean(): bool

Bu işlev çıktı işleyicisini çağırır (`PHP_OUTPUT_HANDLER_CLEAN` ve `PHP_OUTPUT_HANDLER_FINAL` bayraklarıyla), dönüş değerini iptal eder, etkin çıktı tamponunun içeriğini siler ve tamponu kapatır.

`PHP_OUTPUT_HANDLER_REMOVABLE` ile başlatılmış bir etkin çıktı tamponu yoksa ob_end_clean() başarısız olur.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_CLEANABLE` bayrağı olmaksızın başlatılsa bile ob_end_clean() etkin çıktı tamponunun içeriğini siler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

İşlev başarısız olursa `E_NOTICE` seviyesinde bir ileti üretir.

### Örnekler

Aşağıda etkin çıktı tamponunun içeriğinden kurtulmanın kolay bir yolu gösterilmiştir:

Örnek 1 - ob_end_clean() örneği

    <?php
    ob_start();
    echo 'Gösterilmek istenmeyen metin.';
    ob_end_clean();
    ?>

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_clean() - Etkin çıktı tamponunun içeriğini temizler (siler)
- ob_get_clean() - Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır

# ob_end_flush

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_end_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır

### Açıklama

function ob_end_flush(): bool

Çıktı işleyicisini çağırır (`PHP_OUTPUT_HANDLER_FINAL` bayrağı ile), dönüş değerini temizler (gönderir), etkin çıktı tamponunun içeriğini temizler ve tamponu kapatır.

`PHP_OUTPUT_HANDLER_REMOVABLE` ile başlatılmış bir etkin çıktı tamponu yoksa ob_end_flush() başarısız olur.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_FLUSHABLE` bayrağı olmaksızın başlatılsa bile ob_end_flush() çıktı işleyicisinin dönüş değerini temizler (gönderir).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

İşlev başarısız olursa bir `E_NOTICE` üretir.

### Örnekler

Örnek 1 - ob_end_flush() örneği

Aşağıda çıktı tamponlarının boşaltılıp silinmesinin kolay bir yolu gösterilmiştir:

    <?php
      while (@ob_end_flush());
    ?>

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_get_flush() - Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır
- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır

# ob_flush

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ob_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)

### Açıklama

function ob_flush(): bool

Bu işlev çıktı işleyicisini çağırır `PHP_OUTPUT_HANDLER_FLUSH` bayrağı ile) dönüş değerini temizler (gönderir) ve etkin çıktı tamponunun içeriğini siler.

Bu işlev, ob_end_flush() veya ob_get_flush() işlevinin yaptığı gibi çıktı tamponunu kapatmaz.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_FLUSHABLE` bayrağı olmaksızın başlatılırsa ob_flush() başarısız olur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

İşlev başarısız olursa bir `E_NOTICE` üretir.

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_get_flush() - Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır
- ob_clean() - Etkin çıktı tamponunun içeriğini temizler (siler)

# ob_get_clean

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_get_clean — Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır

### Açıklama

function ob_get_clean(): string|false

Bu işlev çıktı işleyicisini çağırır (`PHP_OUTPUT_HANDLER_CLEAN` ve `PHP_OUTPUT_HANDLER_FINAL` bayraklarıyla), dönüş değerini iptal eder, çıktı tamponunun içeriğini döndürür ve etkin çıktı tamponunu kapatır.

`PHP_OUTPUT_HANDLER_REMOVABLE` ile başlatılmış bir etkin çıktı tamponu yoksa ob_get_clean() başarısız olur.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_CLEANABLE` bayrağı olmaksızın başlatılsa bile ob_get_clean() tamponun içeriğini siler.

### Bağımsız Değişkenler

Başarı durumunda etkin çıktı tamponunun içeriğini, aksi takdirde `false` döndürür.

Dikkat

Etkin çıktı tamponu yoksa ob_get_clean() `false` döndürür ancak bir `E_NOTICE` üretmez.

### Hatalar/İstisnalar

İşlev başarısız olursa bir `E_NOTICE` üretir.

### Dönen Değerler

Çıktı tamponlaması etkin değilse `false`, aksi takdirde çıktı tamponunun içeriğini döndürür.

### Örnekler

Örnek 1 - Basit bir ob_get_clean() örneği

    <?php

    ob_start();

    echo "Hello World";

    $out = ob_get_clean();
    $out = strtolower($out);

    var_dump($out);
    ?>

Yukarıdaki örneğin çıktısı:

    string(11) "hello world"

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_clean() - Etkin çıktı tamponunun içeriğini temizler (siler)
- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_get_flush() - Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır

# ob_get_contents

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_get_contents — Çıktı tamponunun içeriği ile döner

### Açıklama

function ob_get_contents(): string|false

Çıktı tamponunu temizlemeden içeriği ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çıktı tamponlaması etkin değilse `false`, aksi takdirde çıktı tamponunun içeriğini döndürür.

### Örnekler

Örnek 1 - ob_get_contents() örneği

    <?php

    ob_start();

    echo "Hello ";

    $out1 = ob_get_contents();

    echo "World";

    $out2 = ob_get_contents();

    ob_end_clean();

    var_dump($out1, $out2);
    ?>

Yukarıdaki örneğin çıktısı:

    string(6) "Hello "
    string(11) "Hello World"

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_length() - Çıktı tamponunundaki içeriğin uzunluğunu döndürür

# ob_get_flush

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_get_flush — Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır

### Açıklama

function ob_get_flush(): string|false

Çıktı işleyicisini çağırır (`PHP_OUTPUT_HANDLER_FINAL` bayrağı ile), dönüş değerini temizler (gönderir), etkin çıktı tamponunun içeriğini döndürüp tamponu kapatır.

`PHP_OUTPUT_HANDLER_REMOVABLE` ile başlatılmış bir etkin çıktı tamponu yoksa ob_get_flush() başarısız olur.

Etkin çıktı tamponu `PHP_OUTPUT_HANDLER_FLUSHABLE` bayrağı olmaksızın başlatılsa bile ob_get_flush() çıktı işleyicisinin dönüş değerini temizler (gönderir).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda etkin çıktı tamponunun içeriğini, aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

İşlev başarısız olursa bir `E_NOTICE` üretir.

### Örnekler

Örnek 1 - ob_get_flush() örneği

    <?php
    // output_buffering=On
    print_r(ob_list_handlers());

    // tamponu bir dosyaya kaydedelim
    $buffer = ob_get_flush();
    file_put_contents('buffer.txt', $buffer);

    print_r(ob_list_handlers());
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => default output handler
    )
    Array
    (
    )

### Ayrıca Bakınız

- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_get_clean() - Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır

# ob_get_length

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

ob_get_length — Çıktı tamponunundaki içeriğin uzunluğunu döndürür

### Açıklama

function ob_get_length(): int|false

Çıktı tamponunundaki içeriğin uzunluğunu bayt cinsinden döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çıktı tamponu etkin değilse `false`, aksi takdirde bayt cinsinden çıktı tamponunundaki içeriğin uzunluğunu döndürür.

### Örnekler

Örnek 1 - ob_get_length() örneği

    <?php

    ob_start();

    echo "Hello ";

    $len1 = ob_get_length();

    echo "World";

    $len2 = ob_get_length();

    ob_end_clean();

    echo $len1 . ", " . $len2;
    ?>

Yukarıdaki örneğin çıktısı:

    6, 11

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner

# ob_get_level

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ob_get_level — Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür

### Açıklama

function ob_get_level(): int

Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çıktı tamponlaması etkin değilse sıfır, aksi takdirde çıktı tamponlama eylemcilerinin iç içelik seviyesini döndürür.

Dikkat

Aynı seviyeler için ob_get_level() ve ob_get_status() arasındaki değer bir eksiktir. Yani, ob_get_level() için ilk seviye `1` ise ob_get_status() için ilk seviye `0`'dır.

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_get_status() - Çıktı tamponlarının durumu ile döner

# ob_get_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ob_get_status — Çıktı tamponlarının durumu ile döner

### Açıklama

function ob_get_status(bool `$tam_durum` = `false`): array

ob_get_status() işlevi, `tam_durum` bağımsız değişkeninde `true` belirtilmişse her seviyeden etkin çıktı tamponlarının tamamının durumunu, aksi takdirde üst seviye çıktı tamponunun durumunu döndürür.

### Bağımsız Değişkenler

`tam_durum`

  `true` her seviyeden etkin çıktı tamponlarının tamamının durumunu, `false` ise veya belirtilmezse sadece üst seviye çıktı tamponunun durumunu döndürür.

### Dönen Değerler

`tam_durum` bağımsız değişkeni belirtilmezse veya `false` olduğunda etkin çıktı seviyesindeki durum bilgisini tutan basit bir dizi döndürülür.

`tam_durum` `true` ise her etkin çıktı tamponu seviyesi için tek elemana sahip bir dizi döndürülür. Çıktı seviyesi, en üst seviye dizinin anahtarı olarak kullanılır ve her dizi elemanının kendisi, tek bir etkin çıkış seviyesindeki durum bilgisini tutan başka bir dizidir.

Çıktı tamponu etkin değilse boş bir dizi döndürülür.

ob_get_status() işlevinin döndürdüğü dizi elemanları
Anahtar | Değer
--- | ---
name | Etkin çıktı işleyicisinin ismi (ayrıntılar için bkz, ob_list_handlers()) dönüş değeleri)
type | `0` (dahili işleyici) veya `1` (kullanıcı tanımlı işleyici)
flags | ob_start() tarafından ayarlanan bayrakların bit maskesi, çıktı işleyicisinin türü (yukarıya bakın) ve tamponlama işleminin durumu ( `PHP_OUTPUT_HANDLER_*` sabitleri). Eğer işleyici, tamponu başarıyla işlediyse ve `false` döndürmediyse, `PHP_OUTPUT_HANDLER_STARTED` ve `PHP_OUTPUT_HANDLER_PROCESSED` atanır. Eğer işleyici, tamponu başarıyla işleyemediyse ve `false` döndürdüyse, `PHP_OUTPUT_HANDLER_STARTED` ve `PHP_OUTPUT_HANDLER_DISABLED` atanır.
level | Çıktı iç içelik seviyesi (sıfır tabanlı). Aynı seviye için ob_get_level() tarafından döndürülen değerin bir eksik olduğu unutulmamalıdır. İlk seviye ob_get_status() için `0` ve ob_get_level() için `1`'dir.
chunk_size | Bayt cinsinden parça boyu. ob_start() veya output_buffering tarafından etkinleştirilir ve değer olarak pozitif bir tamsayı atanır.
buffer_size | Bayt cinsinden çıktı tamponu boyu.
buffer_used | Bayt cinsinden çıtı tamponundaki verini boyu (ob_get_length() işlevinin tamsayı dönüş değeri ile aynı).

### Örnekler

Örnek 1 - `tam_durum` `false` olduğunda dönen dizi

    Array
    (
        [type] => 0
        [flags] => 112
        [level] => 2
        [chunk_size] => 0
        [buffer_size] => 16384
        [buffer_used] => 1024
    )

Örnek 2 - `tam_durum` `true` olduğunda dönen dizi

    Array
    (
        [0] => Array
            (
                [name] => default output handler
                [type] => 0
                [flags] => 112
                [level] => 1
                [chunk_size] => 0
                [buffer_size] => 16384
                [buffer_used] => 2048
            )

        [1] => Array
            (
                [name] => URL-Rewriter
                [type] => 0
                [flags] => 112
                [level] => 2
                [chunk_size] => 0
                [buffer_size] => 16384
                [buffer_used] => 1024
            )
    )

### Ayrıca Bakınız

- ob_get_level() - Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür
- ob_list_handlers() - Kullanımdaki çıktı eylemcileri listeler
- ob_get_length() - Çıktı tamponunundaki içeriğin uzunluğunu döndürür
- ob_start() - Çıktı tamponlamasını başlatır

# ob_implicit_flush

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_implicit_flush — Örtük boşaltmayı açar/kapar

### Açıklama

function ob_implicit_flush(bool `$etkin` = `true`): void

ob_implicit_flush() işlevi örtük tampon temizlemeyi açar veya kapatır. Örtük temizleme işlemi, çıktıyla sonuçlanan her kod bloğundan sonra bir temizleme işlemiyle sonuçlanacaktır, dolayısıyla açıkça flush() çağrıları yapmak gerekmez.

> Bilginize: Boş dizgelerin yazdırılması veya başlıkların gönderilmesi çıktı olarak değerlendirilmez ve bir temizleme işlemiyle sonuçlanmaz.

> Bilginize: Bu işlevin ob_start() veya output_add_rewrite_var() tarafından başlatılanlar gibi kullanıcı seviyesi çıktı işleyicileri üzerinde herhangi bir etkisi yoktur.

### Bağımsız Değişkenler

`etkin`

  `true` ise örtük boşaltma açılır `false` ise kapatılır.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `etkin` artık bir bool değer alıyor; evvelce int değer alırdı.

### Ayrıca Bakınız

- flush() - Sistem çıktı tamponunu boşaltır
- ob_start() - Çıktı tamponlamasını başlatır
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır

# ob_list_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_list_handlers — Kullanımdaki çıktı eylemcileri listeler

### Açıklama

function ob_list_handlers(): array

Kullanımdaki çıktı eylemcileri listeler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kullanımdaki çıktı eylemcileri (varsa) içeren bir dizi döndürür.

Eğer çıktı tamponlaması etkinse ve output_handler atanmamışsa veya ob_start() ile bir geriçağırım işlevi belirtilmemişse ya da `null` belirtilmişse "öntanımlı çıktı işleyicisi" döner. çıktı tamponlamasını etkinleştirmek ve bir çıktı işleyicisi belirtmek ob_start() işlevine bir dahili (yerleşik) işlev aktarmaya eşdeğerdir.

ob_start() işlevine bir geriçağırım işlevi aktarılmışsa, geriçağırım işlevinin tam nitelenmiş ismi döner. Geriçağırım işlevi olarak __invoke() sınıfını gerçekleyen bir nesne belirtilmişse bu nesnenin __invoke() yönteminin tam nitelenmiş ismi döner. Geriçağırım işlevi olarak bir Closure belirtilmişse, `"Closure::__invoke"` döner.

### Örnekler

Örnek 1 - ob_list_handlers() işlevi

    <?php
    // output_buffering=On ve çıktı işleyici yok
    var_dump(ob_list_handlers());
    ob_end_flush();

    // geriçağırım yok ya da null
    ob_start();
    var_dump(ob_list_handlers());
    ob_end_flush();

    // anonim işlev
    ob_start(function($string) { return $string; });
    var_dump(ob_list_handlers());
    ob_end_flush();

    // ok işlevi
    ob_start(fn($string) => $string);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // kullanıcı tanımlı işlev ve __invoke
    $firstClassCallable = userDefinedFunction(...);

    ob_start([$firstClassCallable, '__invoke']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // dahili (yerleşik) işlev
    ob_start('print_r');
    var_dump(ob_list_handlers());
    ob_end_flush();

    // kullanıcı tanımlı işlev
    function userDefinedFunction($string, $flags) { return $string; };

    ob_start('userDefinedFunction');
    var_dump(ob_list_handlers());
    ob_end_flush();

    class MyClass {
        public static function staticHandle($string) {
            return $string;
        }

        public static function handle($string) {
            return $string;
        }

        public function __invoke($string) {
            return $string;
        }
    }

    // sınıf ve statik yöntem
    ob_start(['MyClass','staticHandle']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // nesne ve statik olmayan yöntem
    ob_start([new MyClass,'handle']);
    var_dump(ob_list_handlers());
    ob_end_flush();

    // çağrılabilir nesne
    ob_start(new MyClass);
    var_dump(ob_list_handlers());ob_end_flush();
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      [0]=>
      string(22) "default output handler"
    }
    array(1) {
      [0]=>
      string(22) "default output handler"
    }
    array(1) {
      [0]=>
      string(7) "print_r"
    }
    array(1) {
      [0]=>
      string(19) "userDefinedFunction"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(17) "Closure::__invoke"
    }
    array(1) {
      [0]=>
      string(21) "MyClass::staticHandle"
    }
    array(1) {
      [0]=>
      string(15) "MyClass::handle"
    }
    array(1) {
      [0]=>
      string(17) "MyClass::__invoke"
    }

### Ayrıca Bakınız

- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_get_flush() - Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır
- ob_start() - Çıktı tamponlamasını başlatır

# ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_start — Çıktı tamponlamasını başlatır

### Açıklama

function ob_start(?callable `$geriçağırım` = `null`, int `$parça_boyu` = 0, int `$seçenekler` = `PHP_OUTPUT_HANDLER_STDFLAGS`): bool

Bu işlev çıktı tamponlamasını ektin kılar. Çıktı tamponlaması etkinken betikten hiçbir çıktı gönderilmez ve çıktı dahili bir tamponda saklanır. Tam olarak hangi çıktının etkilendiğini görmek için bkz. What Output Is Buffered?

Çıktı tamponlaması bir yığıt gibi çalışabilir, bir ob_start() etkinken başka bir ob_start() çağrısı yapılabilir. Eğer çok sayıda çıktı geriçağırım işlevi etkinse, her biri iç içelik sırası gözetilerek çıktıyı süzer. Ayrıntılar için bkz. Nesting Output Buffers

Çıktı tamponlarının ayrıntılı açıklaması için bkz. User-Level Output Buffers

### Bağımsız Değişkenler

`geriçağırım`

  Bu bağımsız değişken ile isteğe bağlı bir çıktı eylemcisi işlev belirtilebilir. Ayrıca `null` aktarılarak atlatılabilir.

  Bu işlev, çıktı tamponu boşaltılırken (gönderim), tampon temizlenirken (ob_flush(), ob_clean() ve benzeri bir işlevle) veya isteğin sonunda çıktı tamponu kullanıcının tarayıcısına boşaltılırken çağrılacaktır.

  `geriçağırım` işlevinin sözdizimi:

  function işlev_ismi(string `$tampon`, int `$kip` = ?): string
  `tampon`
    Çıktı tamponunun içeriği.
  `kip`
    `PHP_OUTPUT_HANDLER_*` sabitlerinin bit maskesi. Ayrıntılar için bkz. Flags Passed To Output Handlers

  `geriçağırım` `false` döndürdüğü takdirde tampon içeriği döner. Ayrıntılar için bkz. Output Handler Return Values

  Uyarı

  Aşağıdaki işlevlerden herhangi birini bir çıktı işleyicisinden çağırmak onulmaz bir hataya yol açacaktır: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().

  `geriçağırım` (çıktı işleyici) işlevleri ile ilgili ayrıntılar için bkz. Output Handlers ve Working With Output Handlers

`parça_boyu`

  İsteğe bağlı `parça_boyu` belirtildiği takdirde, `parça_boyu`nu aşan veya tamponun tam dolmasına sebep olan bir çıktılama çağrısından sonra tampon boşaltılır. Öntanımlı `0` değerinin anlamı tampon kapatılana kadar tüm çıktıların tamponlanacağı anlamına gelir. Ayrıntılar için bkz. Buffer Size

`seçenekler`

  `seçenekler`, çıktı tamponuna uygulanabilecek işlemleri denetleyen bir bitmaskesidir. Çıktı tamponunun temizlenmesi, boşaltılması ve silinmesine izin vermek öntanımlı olup, Çıktı tamponu denetim seçenekleri üzerinden doğrudan belirlenebilir. Ayrıntılar için bkz. Operations Allowed On Buffers

  Her sabit aşağıda açıklandığı gibi belli bir işlev kümesine erişimi denetler:

  Sabit | İşlevler
  --- | ---
  `PHP_OUTPUT_HANDLER_CLEANABLE` | ob_clean()
  `PHP_OUTPUT_HANDLER_FLUSHABLE` | ob_flush()
  `PHP_OUTPUT_HANDLER_REMOVABLE` | ob_end_flush(), ob_get_clean(), ob_get_flush()

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Kullanıcı tanımlı geriçağırım işlevi örneği

    <?php

    function geriçağırım($tampon)
    {
      // elmaları armutlarla değiştirelim
      return (str_replace("elmalar", "armutlar", $tampon));
    }

    ob_start("geriçağırım");

    ?>
    <html>
    <body>
    <p>Bizden elmalarla armutların karşılaştırılması isteniyor.</p>
    </body>
    </html>
    <?php

    ob_end_flush();

    ?>

Yukarıdaki örneğin çıktısı:

    <html>
    <body>
    <p>Bizden armutlarla armutların karşılaştırılması isteniyor.</p>
    </body>
    </html>

Örnek 2 - Çıktı tamponunun silinmesini önleyen kod örneği

    <?php

    ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);

    ?>

### Ayrıca Bakınız

- ob_get_contents() - Çıktı tamponunun içeriği ile döner
- ob_end_clean() - Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_implicit_flush() - Örtük boşaltmayı açar/kapar
- ob_gzhandler() - ob_start callback function to gzip output buffer
- ob_iconv_handler() - Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar
- mb_output_handler() - Çıktı tamporundaki karakter kodlamasını dönüştüren geriçağırım işlevi
- ob_tidyhandler() - Tampon onarımı için ob_start geriçağırım işlevi

# output_add_rewrite_var

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

output_add_rewrite_var — URL yeniden yazım değerlerini ekler

### Açıklama

function output_add_rewrite_var(string `$isim`, string `$değer`): bool

Bu işlev, etkin değilse `'URL-Rewriter'` çıktı tamponu işleyicisini başlatır, `isim` ve `değer` çiftini depolar ve tampon temizlendiğinde URLleri ve formları geçerli ini ayarlarına göre yeniden yazar. Bu işleve yapılan sonraki çağrılar, işleyici kapatılana kadar tüm ek isim/değer çiftlerini depolar.

Çıktı tamponu temizlendiğinde (ob_flush(), ob_end_flush(), ob_get_flush() çağrılarak veya betiğin sonunda) 'URL-Yeniden-Yazım' işleyicisi isim/değer çiftlerini HTML etiketlerinin özniteliklerindeki URLlere sorgu olarak ekleyip url_rewriter.tags ve url_rewriter.hosts yapılandırma yönergelerinin değerlerine göre formlara gizli alanlar ekler.

`'URL-Rewriter'` işleyicisine eklenen her isim/değer çifti, aynı isim öznitelikleriyle yinelenen URL sorgularıyla sonuçlansa bile URLlere ve/veya formlara eklenir.

> Bilginize: `'URL-Rewriter'` işleyicisi kapatıldıktan sonra tekrar başlatılamaz.

### Bağımsız Değişkenler

`isim`

  Değişkenin ismi.

`değer`

  Değişkenin değeri.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | PHP 7.1.0 ve sonrasında, artık adanmış çıktı tamponu kullanılmaktadır. Çıktı işlevleri için yalnızca url_rewriter.tags kullanılır. url_rewriter.hosts eklendi. PHP 7.1.0 öncesinde, output_add_rewrite_var() tarafından yeniden yazılan değişkenler şeffaf oturum kimliği desteğiyle çıktı tamponunu paylaşırdı (bkz. session.trans_sid_tags).

### Örnekler

Örnek 1 - output_add_rewrite_var() örneği

    <?php
    ini_set('url_rewriter.tags', 'a=href,form=');

    output_add_rewrite_var('var', 'value');

    // bazı bağlar
    echo '<a href="file.php">bağlantı</a>
    <a href="http://example.com">diğer bağlantı</a>';

    // bir form
    echo '<form action="script.php" method="post">
    <input type="text" name="var2" />
    </form>';

    print_r(ob_list_handlers());
    ?>

Yukarıdaki örneğin çıktısı:

    <a href="file.php?var=value">bağlantı</a>
    <a href="http://example.com">diğer bağlantı</a>

    <form action="script.php" method="post">
    <input type="hidden" name="var" value="value" />
    <input type="text" name="var2" />
    </form>

    Array
    (
        [0] => URL-Rewriter
    )

### Ayrıca Bakınız

- output_reset_rewrite_vars() - URL yeniden yazma değerlerini sıfırlar
- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_list_handlers() - Kullanımdaki çıktı eylemcileri listeler
- url_rewriter.tags
- url_rewriter.hosts

# output_reset_rewrite_vars

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

output_reset_rewrite_vars — URL yeniden yazma değerlerini sıfırlar

### Açıklama

function output_reset_rewrite_vars(): bool

Bu işlev output_add_rewrite_var() işleviyle evvelce tanımlanmış tüm yeniden yazım değişkenlerini siler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | PHP 7.1.0 öncesinde, output_add_rewrite_var() tarafından yeniden yazılan değişkenler aynı oturum modülünün trans sid çıktı tamponunu kullanırdı. PHP 7.1.0 ve sonrasında, adanmış çıktı tamponu kullanılmaktadır. output_reset_rewrite_vars() sadece output_add_rewrite_var() tarafından tanımlanmış yeniden yazım çiftlerini siler.

### Örnekler

Örnek 1 - output_reset_rewrite_vars() örneği

    <?php
    ini_set('url_rewriter.tags', 'a=href');

    output_add_rewrite_var('var', 'value');

    echo '<a href="file.php">bağlantı</a>';
    ob_flush();

    output_reset_rewrite_vars();
    echo '<a href="file.php">bağlantı</a>';
    ?>

Yukarıdaki örneğin çıktısı:

    <a href="file.php?var=value">link</a>
    <a href="file.php">bağlantı</a>

### Ayrıca Bakınız

- output_add_rewrite_var() - URL yeniden yazım değerlerini ekler
- ob_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_list_handlers() - Kullanımdaki çıktı eylemcileri listeler
- url_rewriter.tags
- url_rewriter.hosts
- session.trans_sid_tags
- session.trans_sid_hosts

## İçindekiler

- flush — Sistem çıktı tamponunu boşaltır
- ob_clean — Etkin çıktı tamponunun içeriğini temizler (siler)
- ob_end_clean — Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_end_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
- ob_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
- ob_get_clean — Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır
- ob_get_contents — Çıktı tamponunun içeriği ile döner
- ob_get_flush — Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır
- ob_get_length — Çıktı tamponunundaki içeriğin uzunluğunu döndürür
- ob_get_level — Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür
- ob_get_status — Çıktı tamponlarının durumu ile döner
- ob_implicit_flush — Örtük boşaltmayı açar/kapar
- ob_list_handlers — Kullanımdaki çıktı eylemcileri listeler
- ob_start — Çıktı tamponlamasını başlatır
- output_add_rewrite_var — URL yeniden yazım değerlerini ekler
- output_reset_rewrite_vars — URL yeniden yazma değerlerini sıfırlar

- Yapılandırma/Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Output Buffering
- Flushing System Buffers
- User-Level Output Buffers
  - What Output Is Buffered?
  - Nesting Output Buffers
  - Buffer Size
  - Operations Allowed On Buffers
  - Output Handlers
  - Working With Output Handlers
  - Flags Passed To Output Handlers
  - Output Handler Return Values
- Örnekler
  - Basic usage
  - - Çıktının yeniden yazılması
- Çıktı Denetim İşlevleri
  - flush — Sistem çıktı tamponunu boşaltır
  - ob_clean — Etkin çıktı tamponunun içeriğini temizler (siler)
  - ob_end_clean — Etkin çıktı tamponunu temizler (siler) ve tamponu kapatır
  - ob_end_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır
  - ob_flush — Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir)
  - ob_get_clean — Etkin çıktı tamponun içeriğini döndürüp tamponu kapatır
  - ob_get_contents — Çıktı tamponunun içeriği ile döner
  - ob_get_flush — Etkin çıktı işleyicisinin dönüş değerini boşaltır (gönderir), etkin çıktı tamponunun içeriğini döndürür ve kapatır
  - ob_get_length — Çıktı tamponunundaki içeriğin uzunluğunu döndürür
  - ob_get_level — Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür
  - ob_get_status — Çıktı tamponlarının durumu ile döner
  - ob_implicit_flush — Örtük boşaltmayı açar/kapar
  - ob_list_handlers — Kullanımdaki çıktı eylemcileri listeler
  - ob_start — Çıktı tamponlamasını başlatır
  - output_add_rewrite_var — URL yeniden yazım değerlerini ekler
  - output_reset_rewrite_vars — URL yeniden yazma değerlerini sıfırlar

# PHP Seçenek ve Bilgileri

# Giriş

Bu işlevler PHP'nin kendisi hakkında pek çok bilgi almanızı sağlarlar. Çalışma anı yapılandırması, yüklü eklentiler, sürüm ve daha pek çok bilgi. Ayrıca, çalışmakta olan PHP'nin seçeneklerini atayacak işlevleri de burada bulabilirsiniz. PHP'nin belki de en bilinen işlevi phpinfo()'yu da burada bulabilirsiniz.

# Yapılandırma/Kurulum

## İçindekiler

- Çalışma Anı Yapılandırması

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PHP Seçenekleri ve Bilgileri için Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
assert.active | "1" | `INI_ALL` | PHP 8.3.0 ve sonrasında kullanımı önerilmemektedir.
assert.bail | "0" | `INI_ALL` | PHP 8.3.0 ve sonrasında kullanımı önerilmemektedir.
assert.warning | "1" | `INI_ALL` | PHP 8.3.0 ve sonrasında kullanımı önerilmemektedir.
assert.callback | NULL | `INI_ALL` | PHP 8.3.0 ve sonrasında kullanımı önerilmemektedir.
assert.quiet_eval | "0" | `INI_ALL` | PHP 8.0.0 sürümünde kaldırıldı.
assert.exception | "1" | `INI_ALL` | PHP 8.0.0 öncesinde `"0"` öntanımlıydı. PHP 8.3.0 ve sonrasında kullanımı önerilmemektedir.
enable_dl | "1" | `INI_SYSTEM` | Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.
max_execution_time | "30" | `INI_ALL` |
max_input_time | "-1" | `INI_PERDIR` | PHP 4.3.0 ve sonrasında kullanılabilir.
max_input_nesting_level | "64" | `INI_PERDIR` |
max_input_vars | 1000 | `INI_PERDIR` |
zend.enable_gc | "1" | `INI_ALL` |
zend.max_allowed_stack_size | "0" | `INI_SYSTEM` | PHP 8.3.0 ve sonrasında kullanılabilir.
zend.reserved_stack_size | "0" | `INI_SYSTEM` | PHP 8.3.0 ve sonrasında kullanılabilir.
fiber.stack_size |  | `INI_ALL` | PHP 8.1.0 ve sonrasında kullanılabilir.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`assert.active` bool

  assert() değerlendirmesini etkin kılar. assert() işlevinin davranışını denetlemek yerine zend.assertions kullanılmalıdır.

  Uyarı

  Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.

`assert.bail` bool

  Kararlılık denetimleri başarısız olduğunda betiğin çalışmasını sonlandırır.

  Uyarı

  Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.

`assert.warning` bool

  Başarısız olan her kararlılık denetimi için bir PHP uyarısı çıktılar.

  Uyarı

  Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.

`assert.callback` string

  Kararlılık denetimleri başarısız olduğunda çağrılacak kullanıcı işlevi.

  Uyarı

  Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.

`assert.quiet_eval` bool
  Uyarı

  Bu özellik PHP 8.0.0 sürümünde KALDIRILMIŞTIR.

  Kararlılık denetimini sağlayan ifadenin değerlendirilmesi sırasında error_reporting() işlevinin o anki ayarları kullanılır. Etkin olduğunda değerlendirme sırasında hiçbir hata gösterilmez (örtük error_reporting(0)). Aksi takdirde, hatalar error_reporting() ayarlarına uygun olarak gösterilir.

`assert.exception` bool

  Kararlılık denetimleri başarısız olduğunda AssertionError istisnası çalıştırılır.

  Uyarı

  Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.

`enable_dl` bool

  Bu yönerge ile PHP eklentilerinin dl() işleviyle sanal konak veya dizin temelinde dinamik olarak yüklenip yüklenmeyeceğini belirler.

  Dinamik yüklemenin devre dışı bırakılmasının asıl sebebi güvenliktir. Dinamik yükleme ile, tüm open_basedir sınırlamalarını yok saymak mümkündür. Dinamik yüklemeye öntanımlı olarak izin verilir.

`max_execution_time` int

  Çözümleyici tarafından sonlandırılmadan önce bir betiğin çalışabileceği azami süreyi saniye cinsinden tanımlar. Bu, yetersizce yazılmış betiklerin sunucuya bağlanmasına engel olur. Öntanımlı süre `30` saniyedir. PHP komut satırından çalıştırıldığında bu süre `0` saniyedir.

  Windows sistemlerinde azami çalışma süresi sistem çağrılarından, akım işlemlerinden ve benzerlerinden etkilenmez. Daha ayrıntılı bilgi için set_time_limit() işlevinin açıklamasına bakınız.

  HTTP sunucunuzun PHP'nin çalışmasını kesintiye uğratacak başka zaman aşımı yapılandırmaları olabilir. Apache'nin bir `Timeout` yönergesi ve IIS'nin bir CGI zaman aşımı işlevi vardır. Bu konuda daha ayrıntılı bilgi edinmek için HTTP sunucunuzun belgelerine bakınız.

`max_input_time` int

  Bir betiğin POST ve GET gibi girdileri çözümlemesi için gereken azami süre saniye cinsinden burada belirtilir. Süre, sunucu PHP'yi çağırdığı an başlar betik çalışmaya başladığı an biter. Öntanımlı değeri `-1` olup, yerine max_execution_time kullanıldığı anlamına gelir. Zamanı sınırsız yapmak için `0` atayın.

`max_input_nesting_level` int

  girdi değişkenlerinin ($_GET, $_POST... gibi) azami iç içelik derinliğini ayarlar.

`max_input_vars` int

  Kabul edilebilecek girdi değişkenlerinin sayısı (Bu sınırlama $_GET, $_POST and $_COOKIE değişkenlerine ayrı ayrı uygulanır.). Çırpı çatışmalarını kullanan hizmet reddi saldırıları olasılığını azaltmak için kullanılır. Bu yönergede belirtilenden daha fazla girdi değişkeni varsa bir `E_WARNING` çıktılanır ve istekteki fazla değişkenler yoksayılır.

`zend.enable_gc` bool

  Döngüsel gönderim toplayıcısını açıp kapar.

`zend.max_allowed_stack_size` int

  İşletim sisteminin yazılımın tüketmesine izin verdiği azami yerel yığıt alanı. İşletim sisteminin izin verdiğinden daha fazlasını tüketmeye çalışmak genellikle kolayca erişilebilen hata ayıklama bilgisi olmadan sert bir çökmeyle sonuçlanır. Hata ayıklamayı kolaylaştırmak için, motor çökmeden önce bir Error oluşturur (yazılım zend.max_allowed_stack_size-zend.reserved_stack_size bayttan daha fazla yığıt kullandığında).

  Kullanıcı tanımlı koddaki yineleme yerel yığın alanını tüketmez. Ancak, dahili işlevler ve sihirli yöntemler tüketir. Bu işlevleri içeren çok derin yineleme, yazılımın tüm kullanılabilir yerel yığıt alanını tüketmesine neden olabilir.

  Bu seçenek için olası değerler şunlardır:

  - `0`: İşletim sisteminin yazılımın tüketmesine izin verdiği azami yerel yığıt alanını otomatik olarak algıla. Bu öntanımlı değerdir. Algılama mümkün olmadığında, bilinen bir sistem öntanımlısı kullanılır.
  - `-1`: Motorda yığıt boyutu denetimini devre dışı bırakır.
  - Pozitif tam sayı: Bayt cinsinden sabit bir boyut. Bu değer çok yüksek ayarlanırsa, etkisi yığıt boyutu denetimini devre dışı bırakmakla aynıdır.

  fibers'in yığıt boyutu fiber.stack_size ile belirlendiğinden, bir Fiber'in yürütülmesi sırasında yığıt kullanımını denetlerken zend.max_allowed_stack_size yerine bu seçeneğin değeri kullanılır.

  > Bilginize:

  > Bu, yığıt tamponu taşmalarıyla ilgili değildir ve bir güvenlik özelliği değildir.

`zend.reserved_stack_size` int

  Bayt cinsinden ayrılmış yığıt boyutu. Bu, yığıt boyutu denetlenirken bir tampon olarak izin verilen azami yığıt boyutundan çıkarılır.

  Bu seçenek için olası değerler şunlardır:

  - `0`: Mantıklı boyutu otomatik olarak algıla.
  - Pozitif tam sayı: Bayt cinsinden sabit bir boyut.
`fiber.stack_size` int

  Bayt cinsinden, her Fiber için tahsis edilen yerel yığıt boyutu.

  Öntanımlı değer, gösterici boyutu 8 bayttan küçük olan sistemlerde 1MiB, aksi takdirde 2MiB'dir.

# Öntanımlı Sabitler

Aşağıdaki sabitler PHP çekirdeğinin parçası olarak daima kullanılabilir durumdadır.

Sabitler | Açıklama
--- | ---
Öntanımlı phpcredits() sabitleri
`CREDITS_GROUP` (int) | PHP geliştiricilerinin listesi.
`CREDITS_GENERAL` (int) | Genel katkıcılar: Dil tasarımı ve kavramlar, PHP ve SAPI modülü yazarları.
`CREDITS_SAPI` (int) | PHP için sunucu API modüllerinin listesi ve bunların yazarları.
`CREDITS_MODULES` (int) | PHP için eklenti modüllerinin listesi ve bunların yazarları.
`CREDITS_DOCS` (int) | Belgelendirme ekibi.
`CREDITS_FULLPAGE` (int) | Genellikle diğer seçeneklerle birlikte kullanılır. Diğer seçeneklerin gösterilmesini gerektirdiği bilgilerin tamamının tek bir HTML sayfasına basılmasını sağlar.
`CREDITS_QA` (int) | Kalite güvencesi ekibi.
`CREDITS_ALL` (int) | Tüm katkıcılar; şu sabitlere eşdeğerdir: `CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_QA + CREDITS_FULLPAGE`. Bu sabitlerle ilgili bilgilerin uygun başlıklarla tek bir HTML sayfasında gösterilmesini sağlar. Bu öntanımlı değerdir.

Sabitler | Açıklama
--- | ---
phpinfo() sabitleri
`INFO_GENERAL` (int) | Yapılandırma satırı, php.ini dosyasının yeri, derleme tarihi, HTTP Sunucusu, Sistem ve benzerleri.
`INFO_CREDITS` (int) | PHP Katkıcıları. Ayrıca bakınız: phpcredits().
`INFO_CONFIGURATION` (int) | PHP yönergelerinin geçerli yerel ve asıl değerleri. Ayrıca bakınız: ini_get().
`INFO_MODULES` (int) | Yüklü modüller ve bunlarla ilgili ayarlar.
`INFO_ENVIRONMENT` (int) | $_ENV ile de kullanılabilen ortam değişkenleri bilgisi.
`INFO_VARIABLES` (int) | EGPCS (Environment, GET, POST, Cookie, Server) ile ilgili tüm öntanımlı değişkenleri listeler.
`INFO_LICENSE` (int) | PHP Lisans bilgisi. Ayrıca bakınız: » Lisans SSS.
`INFO_ALL` (int) | Yukarıdakilerin tamamı gösterilir. Bu öntanımlı değerdir.

Sabitler | Açıklama
--- | ---
INI kip sabitleri
`INI_USER` (int) | Girdi kullanıcı betiklerinde (ini_set() gibi) veya Windows kayıt defterinde ayarlanabilir. Girdi .user.ini içinde ayarlanabilir.
`INI_PERDIR` (int) | Girdi php.ini, .htaccess, httpd.conf veya .user.ini içinde ayarlanabilir.
`INI_SYSTEM` (int) | Girdi php.ini veya httpd.conf içinde ayarlanabilir.
`INI_ALL` (int) | Girdi herhangi bir yerde ayarlanabilir.

Sav sabitleri, bunlar assert_options() işlevinde sav seçeneklerine değer atamakta kullanılır.

Sabitler | Açıklama
--- | ---
assert() sabitleri
`ASSERT_ACTIVE` (int) | assert() değerlendirmesi etkin kılınır. Uyarı Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.
`ASSERT_CALLBACK` (int) | Savın başarısızlığı halinde çağrılacak geriçağırım işlevi. Uyarı Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.
`ASSERT_BAIL` (int) | Savın başarısızlığı halinde çalışma durdurulur. Uyarı Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.
`ASSERT_EXCEPTION` (int) | Başarısız her sav için AssertionError oluşur. Uyarı Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.
`ASSERT_WARNING` (int) | Her başarısız sav için PHP uyarısı çıktılanır. Uyarı Bu özelliğin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu özelliğe kesinlikle güvenilmemelidir.
`ASSERT_QUIET_EVAL` (int) | Sav ifadesinin değerlendirilmesi sırasında `error_reporting` kapatılır. Uyarı Bu özellik PHP 8.0.0 sürümünde KALDIRILMIŞTIR.

Aşağıdaki sabitler yalnızca bilgisayarın işletim sistemi Windows ise kullanılabilir. Çeşitli özellikleri tespit etmek ve bunlardan yararlanmak için belirtilen sürüm bilgileri kullanılabilir.

Sabitler | Açıklama
--- | ---
Windows'a özgü sabitler'
`PHP_WINDOWS_VERSION_MAJOR` (int) | Windows ana sürüm numarası; `4` (NT4/Me/98/95), `5` (XP/2003 R2/2003/2000) veya `6` (Vista/2008/7/8/8.1) olabilir.
`PHP_WINDOWS_VERSION_MINOR` (int) | Windows alt sürüm numarası; `0` (Vista/2008/2000/NT4/95), `1` (XP), `2` (2003 R2/2003/XP x64), `10` (98) veya `90` (ME) olabilir.
`PHP_WINDOWS_VERSION_BUILD` (int) | Windows derleme sürümü (örneğin, Windows Vista + SP1 için 6001'dir).
`PHP_WINDOWS_VERSION_PLATFORM` (int) | PHP'nin üzerinde çalıştığı platform sürüm numarası; Windows Vista/XP/2000/NT4 ve Server 2008/2003 için `2`, Windows ME/98/95 için `1` olabilir.
`PHP_WINDOWS_VERSION_SP_MAJOR` (int) | Kurulu SP ana sürümü; hiçbir SP kurulu değilse `0`'dır. Örneğin SP 3 kurulu Windows XP için bu değer `3`'tür.
`PHP_WINDOWS_VERSION_SP_MINOR` (int) | Kurulu SP alt sürümü; hiçbir SP kurulu değilse `0`'dır.
`PHP_WINDOWS_VERSION_SUITEMASK` (int) | Çeşitli kurulu Windows özelliklerini betimleyen bir bit maskesi, Olası değerler için aşağıdaki tabloya bakınız.
`PHP_WINDOWS_VERSION_PRODUCTTYPE` (int) | `PHP_WINDOWS_NT_*` sabitlerini saptamakta kullanılır. Bu değer platform türünü belirleyen `PHP_WINDOWS_NT_*` sabitlerinden biri olabilir.
`PHP_WINDOWS_NT_DOMAIN_CONTROLLER` (int) | Etki alanı denetleyicisidir.
`PHP_WINDOWS_NT_SERVER` (int) | Sunucu sistemini belirtir (Server 2008/2003/2000 gibi); ancak, sunucu aynı zamanda etki alanı denetleyicisi ise `PHP_WINDOWS_NT_DOMAIN_CONTROLLER` olarak raporlanır.
`PHP_WINDOWS_NT_WORKSTATION` (int) | İstemci sistemi belirtir (Vista/XP/2000/NT4 gibi).

`PHP_WINDOWS_VERSION_SUITEMASK` bit maskesinde kullanılabilecek bitsel değerler aşağıdaki tabloda gösterilmiştir.

`PHP_WINDOWS_VERSION_SUITEMASK` bit alanları
Bit alanı | Açıklama
--- | ---
`0x00000004` | Microsoft BackOffice bileşenleri kurulu.
`0x00000400` | Windows Server 2003, Web Edition kurulu.
`0x00004000` | Windows Server 2003, Compute Cluster Edition kurulu.
`0x00000080` | Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition veya Windows 2000 Datacenter Server kurulu.
`0x00000002` | Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, Windows 2000 Advanced Server veya Windows NT Server 4.0 Enterprise Edition kurulu.
`0x00000040` | Windows XP Embedded kurulu.
`0x00000200` | Windows Vista Home Premium, Windows Vista Home Basic veya Windows XP Home Edition kurulu.
`0x00000100` | Remote Desktop sadece etkileşimli tek oturumla desteklenir. Sistem bir uygulama sunucusu olarak çalışmadıkça bu değer atanır.
`0x00000001` | Evvelce sistemde Microsoft Small Business Server kuruluymuş fakat başka bir Windows sürümüne yükseltilmiş.
`0x00000020` | Microsoft Small Business Server, sınırlı istemci lisansı ile kurulu.
`0x00002000` | Windows Storage Server 2003 R2 vya Windows Storage Server 2003 kurulu.
`0x00000010` | Terminal Services kurulu. Bu değer daima atanır. Bu değer atanmışsa ancak `0x00000100` değilse sistem uygulama sunucusu kipinde çalışıyor demektir.
`0x00008000` | Windows Home Server kurulu.

# PHP Seçenek/Bilgi İşlevleri

# assert

(PHP 4, PHP 5, PHP 7, PHP 8)

assert — Savın doğruluğuna bakar

### Açıklama

function assert(mixed `$sav`, Throwable|string|null `$açıklama` = `null`): bool

assert() beklentilerin tanımlanmasını sağlayan bir dil oluşumudur: geliştirme ve deneme ortamlarında yürürlüğe giren, ancak üretimde sıfır maliyetli olacak şekilde en iyilenmiş savlardır.

Savlar yalnızca hata ayıklama özelliği olarak kullanılmalıdır. Bir kullanımı, her zaman `true` olması gereken, aksi takdirde bazı yazılım hatalarını gösteren ön koşullar için tutarlılık denetimidir. Başka bir kullanımı ise, eklenti işlevleri veya belirli sistem sınırları ve özellikleri gibi belirli özelliklerin varlığını sınamaktır.

Sav denetimi devre dışı bırakılabilecek şekilde yapılandırılabileceğinden, girdilerin denetlenmesi gibi normal çalışma zamanı işlemleri için kullanılmamalıdır. Genel bir kural olarak, sav denetimi devre dışı bırakılsa bile kod beklendiği gibi davranmalıdır.

assert() oluşumu, `sav` ile belirtilen beklentinin geçerliliğini sınar.

assert() oluşumunun davranışı aşağıdaki INI ayarları ile değiştirilebilir:

Sav yapılandırma yönergeleri
İsim | Öntanımlı | Açıklama | Sürüm Bilgisi
--- | --- | --- | ---
zend.assertions | `1` | `1`: kodu üret ve çalıştır (geliştirme kipi) `0`: kodu üret ama çalışma anında etrafından dolaş `-1`: kod üretme (üretim kipi) |
assert.active | `true` | `false` ise, assert() beklentiyle ilgilenmez ve koşulsuz olarak `true` döndürür. | PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.callback | `null` | Sav başarısız olduğunda çağrılacak kullanıcı tanımlı işlev. Sözdizimi: function assert_callback( string `$dosya`, int `$satır`, null `$sav`, string `$açıklama` = ? ): void | PHP 8.0.0 öncesinde, işlevin sözdizimi şöyle olmalıydı: function assert_callback( string `$dosya`, int `$satır`, string `$sav`, string `$açıklama` = ? ): void PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.exception | `0` | `1`: Sav başarısız olursa istisnayı yavrula: Ya `istisna` bağımsız değişkeni ile sağlanan nesneyi ya da bir nesne sağlanmamışsa AssertionError nesnesini. `0`: Yukarıda açıklandığı gibi bir Throwable kullan veya oluştur, ancak o nesneyi örnekllemek yerine nesneyi temel alan bir uyarı oluştur (PHP 5 davranışıyla uyumlu) | PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.bail | `false` | `true` ise, beklenti karşılanmazsa PHP betiğinin yürütülmesini iptal eder. | PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.warning | `true` | `true` ise, beklenti karşılanmazsa bir `E_WARNING` çıktılanır. Bu INI ayarı, assert.exception etkinleştirilmişse etkisizdir. |

### Bağımsız Değişkenler

`sav`

  Çalıştırılacak ve sonucu, savın başarını belirlemekte kullanılacak değeri döndüren bir ifade olmalıdır.

  Uyarı

  PHP 8.0.0 öncesinde, `sav` PHP kodu olarak yorumlanan ve eval() ile yürütülen bir dizge idi. Bu dizge geri çağırım işlevine üçüncü bağımsız değişken olarak aktarılırdı. PHP 7.2.0'da kullanımı artık ÖNERİLMEMEKTE olup PHP 8.0.0'da kullanımdan KALDIRILMIŞTIR.

`açıklama`

  `açıklama` bir Throwable örneği ise, yalnızca `sav` yürütülüp başarısız olduğunda yavrulanır.

  > Bilginize:

  > PHP 8.0.0 ve sonrasında, bu, olası bir tanımlanmış onaylama geri çağrım işlevi çağrılmadan önce yapılır.

  > Bilginize:

  > PHP 8.0.0 ve sonrasında, nesne assert.exception yapılandırmasına bakılmaksızın yavrulanır.

  > Bilginize:

  > PHP 8.0.0 ve sonrasında, bu durumda assert.bail etkisizdir.

  `sav` başarısız olursa başarısızlık iletisine dahil edilecek isteğe bağlı bir açıklama. `açıklama` bir dizge ise bir istisna veya uyarı çıktılanırsa kullanılır.

  `açıklama` kullanılmazsa, derleme zamanında assert() çağrısı için kaynak koduna eşit öntanımlı bir açıklama oluşturulur.

`istisna`

  PHP 7'de, ikinci bağımsız değişken açıklayıcı bir dizge yerine bir Throwable nesnesi olabilir; sav başarısız olursa ve assert.exception yapılandırma yönergesi de etkinse bu nesne örneklenir.

### Dönen Değerler

Aşağıdakilerin en az biri doğruysa ise `true` döner.

- `zend.assertions=0`
- `zend.assertions=-1`
- `assert.exception=1`
- `assert.bail=1`
- `açıklama`da özel bir istisna nesnesi belirtilmiş.

Koşulların hiçbiri doğru değilse ancak `sav` doğru ise assert() `true` yoksa `false` ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | `assert.` INI ayarlarının hiçbirinin kullanımı artık önerilmiyor.
8.0.0 | `açıklama` bir Throwable örneği ise, yalnızca `sav` yürütülüp başarısız olduğunda yavrulanır.
8.0.0 | `açıklama` bir Throwable örneği ise, atanmış olsa bile geri çağırım işlevi çağrılmaz.
8.0.0 | assert() artık dizge savları değerlendirmeye almıyor, herhangi bir bağımsız değişken gibi ele alıyor. Örneğin, `assert('$a == $b')` yerine artık `assert($a == $b)` kullanılması gerekiyor. `assert.quiet_eval` php.ini yönergesi ve `ASSERT_QUIET_EVAL` sabiti de kaldırıldı ve artık herhangi bir etkisi olmayacak.
8.0.0 | Bir isim alanı içinde `assert()` adlı bir işlevin bildirilmesine artık izin verilmiyor ve böyle bir bildirim olursa `E_COMPILE_ERROR` çıktılanıyor.
7.3.0 | Bir isim alanı içinde `assert()` adlı bir işlev bildirimi artık önerilmiyor ve böyle bir bildirim olursa bir `E_DEPRECATED` uyarısı veriliyor.
7.2.0 | Sav olarak bir dizge kullanımı artık önerilmiyor. Artık hem assert.active hem de zend.assertions için 1 atanmışsa bir `E_DEPRECATED` uyarısı veriliyor.

### Örnekler

Örnek 1 - assert() örneği

    <?php
    assert(1 > 2);
    echo 'Hi!';
    ?>

Savlar etkin olduğunda (`zend.assertions=1` yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught AssertionError: assert(1 > 2) in example.php:2
    Stack trace:
    #0 example.php(2): assert(false, 'assert(1 > 2)')
    #1 {main}
      thrown in example.php on line 2

Savlar etkin olmadığında (`zend.assertions=0` veya `zend.assertions=-1`) yukarıdaki örneğin çıktısı:

    Hi!

Örnek 2 - Özel ileti kullanımı

    <?php
    assert(1 > 2, "Birin ikiden büyük olması bekleniyor");
    echo 'Hi!';
    ?>

Savlar etkinken yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught AssertionError: Expected one to be greater than two in example.php:2
    Stack trace:
    #0 example.php(2): assert(false, 'Expected one to...')
    #1 {main}
      thrown in example.php on line 2

Savlar etkin değilken yukarıdaki örneğin çıktısı:

    Hi!

Örnek 3 - Özel istisna sınıfı kullanımı

    <?php
    class ArithmeticAssertionError extends AssertionError {}

    assert(1 > 2, new ArithmeticAssertionError("Expected one to be greater than two"));
    echo 'Hi!';

Savlar etkinken yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught ArithmeticAssertionError: Expected one to be greater than two in example.php:4
    Stack trace:
    #0 {main}
      thrown in example.php on line 4

Savlar etkin değilken yukarıdaki örneğin çıktısı:

    Hi!

### Ayrıca Bakınız

- assert_options() - Çeşitli kararlılık denetim seçeneklerini açar/kapar

# assert_options

(PHP 4, PHP 5, PHP 7, PHP 8)

assert_options — Çeşitli kararlılık denetim seçeneklerini açar/kapar

Uyarı

Bu işlevin kullanımı PHP 8.3.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function assert_options(int `$seçenek`, mixed `$değer` = ?): mixed

assert() işlevi için çeşitli denetim seçeneklerini tanımlar veya mevcut değerlerini sorgular.

> Bilginize: assert_options() işlevinin kullanımı önerilmiyor. php.ini yönergelerinde okuma yazma işlemleri için zend.assertions ve assert.exception ile ini_set() ve ini_get() kullanılabilir.

### Bağımsız Değişkenler

`seçenek`

  Sav Seçenekleri
  Seçenek | INI bağımsız değişkeni | Öntanımlı | Açıklama
  --- | --- | --- | ---
  ASSERT_ACTIVE | assert.active | 1 | assert() değerlendirmesi etkin kılınır.
  ASSERT_EXCEPTION | assert.exception | 1 | Başarısız olan her sav için bir AssertionError oluşur
  ASSERT_WARNING | assert.warning | 1 | Her başarısız sav için bir PHP uyarısı çıktılanır
  ASSERT_BAIL | assert.bail | 0 | Savın başarısızlığı halinde çalışma durdurulur.
  ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | Sav ifadesinin değerlendirilmesi sırasında hata raporlama kapatılır. PHP 8.0.0'da kaldırıldı.
  ASSERT_CALLBACK | assert.callback | (`null`) | Savın başarısızlığı halinde çağrılacak geriçağırım işlevi.

`değer`

  Seçenek için isteğe bağlı yeni değer.

  Geriçağırım işlevi `ASSERT_CALLBACK` seçeneğiyle veya assert.callback işleviyle aşağıdaki sözdizimine göre atanmalıdır:

  function assert_callback(
  string `$dosya`,
  int `$satır`,
  ?string `$sav`,
  string `$açıklama` = ?
  ): void
  `dosya`
    assert() işlevinin çağrıldığı dosya.
  `satır`
    assert() işlevinin çağrıldığı satır.
  `sav`
    PHP 8.0.0 öncesinde, assert() işlevine yalnızca bir dizge olarak aktarılması gerekiyordu. (Mantıksal değerler boş dizge olarak aktarılırdı.) PHP 8.0.0 ve sonrasında, daima `null` olarak aktarılmaktadır.
  `açıklama`
    assert() işlevine aktarılan açıklama.

`değer` bağımsız değişkenine boş bir dizge aktarılması assert geriçağırım işlevini sıfırlar.

### Dönen Değerler

Belirtilen seçeneğin özgün değeri döner.

### Hatalar/İstisnalar

`seçenek` geçerli bir seçenek değişse ValueError oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | assert_option() artık kullanımdan kaldırılmıştır.
8.0.0 | `seçenek` geçerli bir seçenek değişse ValueError oluşur. Evvelce `false` dönerdi.

### Örnekler

Örnek 1 - assert_options() örneği

    <?php
    // Sav başarısızlıklarında çalışacak işlevimiz
    function assert_failure($dosya, $satr, $sav, $ileti)
    {
        echo "$dosya dosyasının $satr. satırındaki $sav başarısız: $message";
    }

    // Sınama işlevimiz
    function test_assert($parameter)
    {
        assert(is_bool($parameter));
    }

    // Sav seçeneklerini atayalım
    assert_options(ASSERT_ACTIVE,   true);
    assert_options(ASSERT_BAIL,     true);
    assert_options(ASSERT_WARNING,  false);
    assert_options(ASSERT_CALLBACK, 'assert_failure');

    // Başarısız olmasını umarak bir sav ileri sürelim
    test_assert(1);

    // ASSERT_BAIL true olduğundan buraya asla gelinmez
    echo 'Buraya gelinmemesi gerekir';
    ?>

### Ayrıca Bakınız

- assert() - Savın doğruluğuna bakar

# cli_get_process_title

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

cli_get_process_title — Geçerli sürecin başlığını döndürür

### Açıklama

function cli_get_process_title(): ?string

Geçerli sürece cli_set_process_title() tarafından atanmış başlığı döndürür. Dikkat, kullanılan işletim sistemine bağlı olarak ps veya top çıktısında gösterilenle tam olarak eşleşmeyebilir.

Bu işlev sadece CLI kipinde kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçerli sürecin başlığını içeren bir dizge veya hata durumunda `null` döndürür.

### Hatalar/İstisnalar

İşletim sistemi desteklenmiyorsa bir `E_WARNING` üretilir.

### Örnekler

Örnek 1 - cli_get_process_title() örneği

    <?php
    echo "Process title: " . cli_get_process_title() . "\n";
    ?>

### Ayrıca Bakınız

- cli_set_process_title() - Geçerli sürece başlık tanımlar

# cli_set_process_title

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

cli_set_process_title — Geçerli sürece başlık tanımlar

### Açıklama

function cli_set_process_title(string `$başlık`): bool

top ve ps gibi araçlarda görünen süreç başlığını tanımlar. Bu işlev sadece CLI kipinde kullanılabilir.

### Bağımsız Değişkenler

`başlık`

  Yeni başlık.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

İşletim sistemi desteklenmiyorsa bir `E_WARNING` üretilir.

### Örnekler

Örnek 1 - cli_set_process_title() örneği

    <?php
    $title = "Harika PHP Betiğim";
    $pid = getmypid(); // süreç başlığını ps çıktısında bulmak için

    if (!cli_set_process_title($title)) {
        echo "$pid için süreç başlığı atanamadı...\n";
        exit(1);
    } else {
        echo "$pid kimlikli süreç için başlık olarak '$title' tanımlandı!\n";
        sleep(5);
    }
    ?>

Betik çıktısı:

    6454 kimlikli süreç için başlık olarak 'Harika PHP Betiğim' tanımlandı!

ps çıktısı:

    6454 pts/8    S+     0:00 Harika PHP Betiğim

### Ayrıca Bakınız

- cli_get_process_title() - Geçerli sürecin başlığını döndürür

# dl

(PHP 4, PHP 5, PHP 7, PHP 8)

dl — Belirtilen PHP eklentisini çalışma anında yükler

### Açıklama

function dl(string `$eklenti`): bool

`eklenti` bağımsız değişkeni ile belirtilen PHP eklentisini yükler.

Belli bir eklentinin yüklü olup olmadığını sınamak için, hem yerleşik (php.ini ile yüklenen) hem de devingen olarak (dl() ile) yüklenen eklentileri bulan extension_loaded() işlevini kullanın.

Uyarı

Bu işlev komut satırından çağrıldığında yalnızca CGI SAPI, gömülü SAPI'ler ve CLI için kullanılabilir.

### Bağımsız Değişkenler

`eklenti`

  Bu bağımsız değişken ile eklentinin platforma özgü kütüphane dosyasının ismi belirtilir. Örneğin sockets eklentisini Windows platformunda yüklemek için php_sockets.dll ismini kullanmak gerekirken Unix platformlarında sockets.so kullanmak gerekir (bir paylaşımlı modül olarak derlenmişse).

  Eklentinin yükleneceği dizin platforma göre değişiklik gösterir:

  Windows - php.ini içinde açıkça belirtilmemişse, eklenti öntanımlı olarak c:\php5\ dizininden yüklenir.

  Unix - php.ini içinde açıkça belirtilmemişse, öntanımlı eklenti dizinin yeri şunlara bağlıdır:

  - PHP'nin `--enable-debug` seçeneği ile derlenip derlenmediği;
  - PHP'nin ZTS (Zend Thread Safety) desteği ile derlenip derlenmediği;
  - geçerli yerleşik `ZEND_MODULE_API_NO` sabiti (Zend yerleşik modülü API numarası; genelde API modülünün değişiklik tarihidir. `20010901` gibi).
  Bu durumlar hesaba katılarak eklentilerin öntanımlı yeri şöyle saptanır: `<kurulum-dizini>/lib/php/extensions/ <debug/no-debug>-<zts/non-zts>-ZEND_MODULE_API_NO`. Örnek: /usr/local/php/lib/php/extensions/debug-non-zts-20010901 veya /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Eğer modül yükleme işlevsel değilse (php.ini içinde `enable_dl` off yapılarak iptal edilmişse) bir `E_ERROR` iletisi çıktılanıp çalışma durdurulur. Eğer işlev, kütüphane yüklenemediğinden dolayı başarısız olursa bir `E_WARNING` iletisi çıktılayarak `false`döndürür.

### Örnekler

Örnek 1 - dl() örnekleri

    <?php
    // Platforma göre eklenti yüklemek
    if (!extension_loaded('sqlite')) {
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            dl('php_sqlite.dll');
        } else {
            dl('sqlite.so');
        }
    }

    // veya PHP_SHLIB_SUFFIX sabiti de kullanılabilir
    if (!extension_loaded('sqlite')) {
        $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
        dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
    }
    ?>

### Notlar

> Bilginize:

> dl() Unix platformlarında harf büyüklüğüne duyarlıdır.

### Ayrıca Bakınız

- Eklenti Yükleme Yönergeleri
- extension_loaded() - Belirtilen eklenti yüklü mü diye bakar

# extension_loaded

(PHP 4, PHP 5, PHP 7, PHP 8)

extension_loaded — Belirtilen eklenti yüklü mü diye bakar

### Açıklama

function extension_loaded(string `$eklenti`): bool

Belirtilen eklenti yüklü mü diye bakar.

### Bağımsız Değişkenler

`eklenti`

  Eklentinin ismi. Harf büyüklüğüne duyarsızdır.

  Eklentilerin isimlerini phpinfo() işlevini kullanarak veya `CGI` / `CLI` sürümlerini kullanıyorsanız -m seçeneği ile listeleyebilirsiniz:

      $ php -m
      [PHP Modules]
      xml
      tokenizer
      standard
      sockets
      session
      posix
      pcre
      overload
      mysql
      mbstring
      ctype

      [Zend Modules]

### Dönen Değerler

İsmi belirtilen eklenti yüklü ise `true`, değilse `false` döner.

### Örnekler

Örnek 1 - extension_loaded() örneği

    <?php
    if (!extension_loaded('gd')) {
        if (!dl('gd.so')) {
            exit;
        }
    }
    ?>

### Ayrıca Bakınız

- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- get_extension_funcs() - Bir eklentinin tüm işlevlerinin isimlerini içeren bir dizi döndürür
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- dl() - Belirtilen PHP eklentisini çalışma anında yükler
- function_exists() - Eğer işlev tanımlanmış ise true döndürür

# gc_collect_cycles

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gc_collect_cycles — Çöp döngülerin toplanması için zorlar

### Açıklama

function gc_collect_cycles(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Çöp döngülerin toplanması için zorlar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Toplanan çöp döngü sayısı ile döner.

### Ayrıca Bakınız

- Çöp Toplayıcı

# gc_disable

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gc_disable — Döngüsel gönderim toplayıcısını etkisiz kılar

### Açıklama

function gc_disable(): void

zend.enable_gc yönergesine `0` atayıp döngüsel gönderim toplayıcısını etkisiz kılar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Çöp Toplayıcı

# gc_enable

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gc_enable — Döngüsel gönderim toplayıcısını etkin kılar

### Açıklama

function gc_enable(): void

zend.enable_gc yönergesine `1` atayıp döngüsel gönderim toplayıcısını etkin kılar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Çöp Toplayıcı

# gc_enabled

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gc_enabled — Döngüsel gönderim toplayıcısının durumunu döndürür

### Açıklama

function gc_enabled(): bool

Döngüsel gönderim toplayıcısının (çöp toplayıcı) durumunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çöp toplayıcı etkinse `true` değilse `false` döner.

### Örnekler

Örnek 1 - gc_enabled() örneği

    <?php
     if(gc_enabled()) gc_collect_cycles();
     ?>

### Ayrıca Bakınız

- Çöp Toplayıcı

# gc_mem_caches

(PHP 7, PHP 8)

gc_mem_caches — Zend Motoru bellek yöneticisi tarafından kullanılan belleği geri kazanır

### Açıklama

function gc_mem_caches(): int

Zend Motoru bellek yöneticisi tarafından kullanılan belleği geri kazanır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Serbest bırakılan bayt sayısı.

### Ayrıca Bakınız

- Garbage Collection

# gc_status

(PHP 7 >= 7.3.0, PHP 8)

gc_status — Çöp toplayıcı hakkında bilgi döndürür

### Açıklama

function gc_status(): array

Çöp toplayıcının geçerli durumu hakkında bilgi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Aşağıdaki anahtarları içeren iklişkisel dizi döner:

- `"runs"`
- `"collected"`
- `"threshold"`
- `"roots"`
- `"running"`
- `"protected"`
- `"full"`
- `"buffer_size"`
- `"application_time"`
- `"collector_time"`
- `"destructor_time"`
- `"free_time"`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | gc_status() artık şu ek alanları döndürüyor: `"running"`, `"protected"`, `"full"`, `"buffer_size"`, `"application_time"`, `"collector_time"`, `"destructor_time"` ve `"free_time"`.

### Örnekler

Örnek 1 - gc_status() örneği

    <?php
    // çöp toplayıcıya gereken nesne ağacını oluştur
    $a = new stdClass();
    $a->b = [];
    for ($i = 0; $i < 100000; $i++) {
        $b = new stdClass();
        $b->a = $a;
        $a->b[] = $b;
    }
    unset($a);
    unset($b);
    gc_collect_cycles();

    var_dump(gc_status());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      ["runs"]=>
      int(5)
      ["collected"]=>
      int(100002)
      ["threshold"]=>
      int(50001)
      ["roots"]=>
      int(0)
    }

Yukarıdaki örneğin PHP 8.3 çıktısı şuna benzer:

    array(12) {
      ["running"]=>
      bool(false)
      ["protected"]=>
      bool(false)
      ["full"]=>
      bool(false)
      ["runs"]=>
      int(5)
      ["collected"]=>
      int(100002)
      ["threshold"]=>
      int(50001)
      ["buffer_size"]=>
      int(131072)
      ["roots"]=>
      int(0)
      ["application_time"]=>
      float(0.031182458)
      ["collector_time"]=>
      float(0.020106291)
      ["destructor_time"]=>
      float(0)
      ["free_time"]=>
      float(0.003707167)
    }

### Ayrıca Bakınız

- Garbage Collection

# get_cfg_var

(PHP 4, PHP 5, PHP 7, PHP 8)

get_cfg_var — Belirtilen PHP yönergesinin değerini döndürür

### Açıklama

function get_cfg_var(string `$yönerge`): string|array|false

Belirtilen PHP yapılandırma yönergesininin değerini döndürür.

Bu işlev, PHP yapılandırılırken kullanılan yapılandırma seçeneklerini döndürmediği gibi Apache yapılandırma dosyasını da okumaz.

Sistemin bir yapılandırma dosyası kullanıp kullanmadığını `cfg_file_path` yönergesinin değerine bakarak öğrenebilirsiniz. Bir değer atanmışsa yapılandırma dosyası kullanılıyordur.

### Bağımsız Değişkenler

`yönerge`

  Yapılandırma yönergesinin ismi.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde belirtilen PHP yapılandırma yönergesinin değerini döndürür.

### Ayrıca Bakınız

- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- ini_get_all() - Tüm yapılandırma yönergelerini döndürür

# get_current_user

(PHP 4, PHP 5, PHP 7, PHP 8)

get_current_user — PHP betiğinin sahibininin kullanıcı ismini döndürür

### Açıklama

function get_current_user(): string

Betik sahibininin kullanıcı ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kullanıcı ismi bir dizge olarak döner.

### Örnekler

Örnek 1 - get_current_user() örneği

    <?php
    echo 'Betiğin sahibi: ' . get_current_user();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Betiğin sahibi: SYSTEM

### Ayrıca Bakınız

- getmyuid() - PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- getmygid() - PHP betiğinin sahibinin grup kimliğini döndürür
- getmypid() - PHP'nin süreç kimliğini (PID) döndürür
- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# get_defined_constants

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

get_defined_constants — Tüm sabitlerin isimlerini ve değerlerini içeren bir ilişkisel dizi döndürür

### Açıklama

function get_defined_constants(bool `$sınıfla` = `false`): array

Tanımlı olan tüm sabitlerin isimlerini ve değerlerini içeren bir ilişkisel dizi döndürür. Eklentilerce oluşturulanların yanında define() işleviyle tanımlananları da döndürür.

### Bağımsız Değişkenler

`sınıfla`

  `true` belirtildiği takdirde, dizinin içerdiği sabitler dizinin ilk anahtarlarının altında sınıflandırılırlar.

      <?php
      define("SABİT", 1);
      print_r(get_defined_constants(true));
      ?>

  Yukarıdaki örnek şuna benzer bir çıktı üretir:

      Array
      (
          [Core] => Array
              (
                  [E_ERROR] => 1
                  [E_WARNING] => 2
                  [E_PARSE] => 4
                  [E_NOTICE] => 8
                  [E_CORE_ERROR] => 16
                  [E_CORE_WARNING] => 32
                  [E_COMPILE_ERROR] => 64
                  [E_COMPILE_WARNING] => 128
                  [E_USER_ERROR] => 256
                  [E_USER_WARNING] => 512
                  [E_USER_NOTICE] => 1024
                  [E_ALL] => 2047
                  [TRUE] => 1
              )

          [pcre] => Array
              (
                  [PREG_PATTERN_ORDER] => 1
                  [PREG_SET_ORDER] => 2
                  [PREG_OFFSET_CAPTURE] => 256
                  [PREG_SPLIT_NO_EMPTY] => 1
                  [PREG_SPLIT_DELIM_CAPTURE] => 2
                  [PREG_SPLIT_OFFSET_CAPTURE] => 4
                  [PREG_GREP_INVERT] => 1
              )

          [user] => Array
              (
                  [SABİT] => 1
              )

      )

### Dönen Değerler

sabit_adı => sabit_değeri dizisini döndürür. Seçimlik olarak, sabitler eklenti isimlerine göre gruplandırılır.

### Örnekler

Örnek 1 - get_defined_constants() örneği

    <?php
    print_r(get_defined_constants());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [E_ERROR] => 1
        [E_WARNING] => 2
        [E_PARSE] => 4
        [E_NOTICE] => 8
        [E_CORE_ERROR] => 16
        [E_CORE_WARNING] => 32
        [E_COMPILE_ERROR] => 64
        [E_COMPILE_WARNING] => 128
        [E_USER_ERROR] => 256
        [E_USER_WARNING] => 512
        [E_USER_NOTICE] => 1024
        [E_ALL] => 2047
        [TRUE] => 1
    )

### Ayrıca Bakınız

- defined() - Belirtilen isimde sabit tanımlı mı diye bakar
- constant() - Bir sabitin değerini döndürür
- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- get_defined_functions() - Tanımlanmış bütün işlevleri içeren bir dizi döndürür
- get_defined_vars() - Tüm tanımlı değişkenleri içeren bir dizi döndürür

# get_extension_funcs

(PHP 4, PHP 5, PHP 7, PHP 8)

get_extension_funcs — Bir eklentinin tüm işlevlerinin isimlerini içeren bir dizi döndürür

### Açıklama

function get_extension_funcs(string `$eklenti`): array|false

`eklenti` ile belirtilen modülde tanımlı tüm işlevlerin isimlerini bir dizi içinde döndürür.

### Bağımsız Değişkenler

`eklenti`

  Modülün ismi.

  > Bilginize:

  > Bu bağımsız değişken küçük harflerle yazılmalıdır.

### Dönen Değerler

`eklenti` geçerli bir eklenti ismi değilse `false`, aksi takdirde tüm işlev isimlerini içeren bir dizi döner.

### Örnekler

Örnek 1 - XML işlevlerinin listesi

    <?php
    print_r(get_extension_funcs("xml"));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => xml_parser_create
        [1] => xml_parser_create_ns
        [2] => xml_set_object
        [3] => xml_set_element_handler
        [4] => xml_set_character_data_handler
        [5] => xml_set_processing_instruction_handler
        [6] => xml_set_default_handler
        [7] => xml_set_unparsed_entity_decl_handler
        [8] => xml_set_notation_decl_handler
        [9] => xml_set_external_entity_ref_handler
        [10] => xml_set_start_namespace_decl_handler
        [11] => xml_set_end_namespace_decl_handler
        [12] => xml_parse
        [13] => xml_parse_into_struct
        [14] => xml_get_error_code
        [15] => xml_error_string
        [16] => xml_get_current_line_number
        [17] => xml_get_current_column_number
        [18] => xml_get_current_byte_index
        [19] => xml_parser_free
        [20] => xml_parser_set_option
        [21] => xml_parser_get_option
    )

### Ayrıca Bakınız

- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- ReflectionExtension::getFunctions() - Eklenti işlevlerini döndürür

# get_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

get_include_path — include_path yönergesinin değerini döndürür

### Açıklama

function get_include_path(): string|false

include_path yönergesinin değerini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Dosya arama yollarını içeren bir dizge, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - get_include_path() örneği

    <?php
    echo get_include_path();

    // veya ini_get kullanarak
    echo ini_get('include_path');
    ?>

### Ayrıca Bakınız

- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- restore_include_path() - include_path yönergesini eski değerine ayarlar
- set_include_path() - include_path yönergesinin çalışma anı değerini belirler
- include - include

# get_included_files

(PHP 4, PHP 5, PHP 7, PHP 8)

get_included_files — Betiğe dahil edilen dosyaların isimlerini içeren bir dizi döndürür

### Açıklama

function get_included_files(): array

include, include_once, require veya require_once kullanarak betiğe dahil edilen tüm dosyaların isimlerini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Betiğe dahil edilen dosyaların isimlerini içeren bir dizi döndürür.

Betiğin kendisi de içerilmiş bir dosya olarak ele alınır ve ismi dönen diziye dahil edilir.

Betiğe birden fazla dahil edilen dosyaların isimleri dönen dizi içinde bir kere zikredilir.

### Örnekler

Örnek 1 - get_included_files() örneği

    <?php
    // Dosyanın kendi ismi: abc.php

    include 'test1.php';
    include_once 'test2.php';
    require 'test3.php';
    require_once 'test4.php';

    $included_files = get_included_files();

    foreach ($included_files as $filename) {
        echo "$filename\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    /path/to/abc.php
    /path/to/test1.php
    /path/to/test2.php
    /path/to/test3.php
    /path/to/test4.php

### Ayrıca Bakınız

- include - include
- include_once - include_once
- require - require
- require_once - require_once
- get_required_files() - get_included_files işlevinin takma adıdır

# get_loaded_extensions

(PHP 4, PHP 5, PHP 7, PHP 8)

get_loaded_extensions — Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür

### Açıklama

function get_loaded_extensions(bool `$zend_eklentileri` = `false`): array

PHP yorumlayıcı içinde derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür.

### Bağımsız Değişkenler

`zend_eklentileri`

  Öntanımlı değeri `false` olup, bu durumda Zend eklentilerini listelemez, mysqli gibi normal eklentileri listeler.

### Dönen Değerler

Tüm modül isimlerini içeren indisli bir dizi ile döner.

### Örnekler

Örnek 1 - get_loaded_extensions() örneği

    <?php
    print_r(get_loaded_extensions());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Core
        [1] => date
        [2] => libxml
        [3] => pcre
        [4] => sqlite3
        [5] => zlib
        [6] => ctype
        [7] => dom
        [8] => fileinfo
        [9] => filter
        [10] => hash
        [11] => json
    // Kısaltıldı
        [31] => Zend OPcache
    )

### Ayrıca Bakınız

- get_extension_funcs() - Bir eklentinin tüm işlevlerinin isimlerini içeren bir dizi döndürür
- extension_loaded() - Belirtilen eklenti yüklü mü diye bakar
- dl() - Belirtilen PHP eklentisini çalışma anında yükler
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar

# get_magic_quotes_gpc

(PHP 4, PHP 5, PHP 7)

get_magic_quotes_gpc — magic_quotes_gpc yönergesinin değerini döndürür

Uyarı

Bu işlevin kullanımı PHP 7.4.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function get_magic_quotes_gpc(): false

Daima `false` döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Bu işlev kullanımdan kaldırıldı.

### Ayrıca Bakınız

- addslashes() - Özel karakterlerin önüne tersbölü yerleştirir
- stripslashes() - Bir dizgeden tersbölüleri ayıklar
- get_magic_quotes_runtime() - magic_quotes_runtime yönergesinin çalışma anı değerini döndürür
- ini_get() - Bir yapılandırma yönergesinin değerini döndürür

# get_magic_quotes_runtime

(PHP 4, PHP 5, PHP 7)

get_magic_quotes_runtime — magic_quotes_runtime yönergesinin çalışma anı değerini döndürür

Uyarı

Bu işlevin kullanımı PHP 7.4.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function get_magic_quotes_runtime(): false

Her zaman `false` döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Her zaman `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Bu işlevin kullanımı artık önerilmiyor.

### Ayrıca Bakınız

- get_magic_quotes_gpc() - magic_quotes_gpc yönergesinin değerini döndürür

# get_required_files

(PHP 4, PHP 5, PHP 7, PHP 8)

get_required_files — get_included_files() işlevinin takma adıdır

### Açıklama

Bu işlev get_included_files() işlevinin takma adıdır.

# get_resources

(PHP 7, PHP 8)

get_resources — Etkin özkaynakları döndürür

### Açıklama

function get_resources(?string `$tür` = `null`): array

Etkin özkaynakların isteğe bağlı olarak belirtilen `tür`dekilerini veya tümünü döndürür.

> Bilginize: Bu işlev, hata ayıklama ve sınama amaçlıdır. Üretim ortamlarında kullanılmamalı, özellikle normalde erişilemeyen kaynaklara erişmemeli ve hatta bunları değiştirmemelidir (SplFileObject örneklerini oluşturan akım kaynağı gibi).

### Bağımsız Değişkenler

`tür`

  Belirtilmişse, işlevin sadede bu türdeki etkin özkaynakları döndürmesini sağlar. Bkz: Kullanılabilir özkaynak türlerinin listesi

  Tür olarak `Unknown` dizgesi belirtilirse, sadece 'unknown' türündeki özkaynaklar döner.

  Atlanırsa, tüm etkin özkaynaklar döner.

### Dönen Değerler

Geçerli etkin özkaynakları numaralarına göre indislenmiş olarak içeren bir dizi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `tür` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Tür'süz get_resources() örneği

    <?php
    $fp = tmpfile();
    var_dump(get_resources());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [1]=>
      resource(1) of type (stream)
    }

Örnek 2 - Tür'lüget_resources() örneği

    <?php
    $fp = tmpfile();
    var_dump(get_resources('stream'));
    var_dump(get_resources('curl'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [1]=>
      resource(1) of type (stream)
    }
    array(0) {
    }

### Ayrıca Bakınız

- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- get_defined_constants() - Tüm sabitlerin isimlerini ve değerlerini içeren bir ilişkisel dizi döndürür
- get_defined_functions() - Tanımlanmış bütün işlevleri içeren bir dizi döndürür
- get_defined_vars() - Tüm tanımlı değişkenleri içeren bir dizi döndürür

# getenv

(PHP 4, PHP 5, PHP 7, PHP 8)

getenv — Ortam değişkenlerinden birinin veya tümünün değerini döndürür

### Açıklama

function getenv(?string `$değişken` = `null`, bool `$yerel` = `false`): string|array|false

Ortam değişkenlerinden birinin veya tümünün değerini döndürür.

Tüm ortam değişkenlerini phpinfo() işlevini kullanarak bir liste halinde görebilirsiniz. Bunların pek çoğunun anlamlarını » RFC 3875 belgesinin özellikle 4.1 "Request Meta-Variables" bölümünde bulabilirsiniz.

### Bağımsız Değişkenler

`değişken`

  Ortam değişkeninin ismi, `null` olabilir.

`yerel`

  `true` belirtilirse, yalnızca `değişken` bir dizge ise yalnızca yerel ortam değişkenleri (işletim sistemi veya putenv ile atanır) döner.

### Dönen Değerler

`değişken` diye bir ortam değişkeni yoksa `false` aksi takdirde belirtilen ortam değişkeninin değerini döndürür. `değişken` `null` ise, tüm ortam değişkenlerini içeren ilişkisel bir dizi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `değişken` artık `null` olabiliyor.
7.1.0 | `değişken` artık atlanabiliyor, bu durumda tüm ortam değişkenlerini içeren ilişkisel bir dizi dönüyor.
7.0.9 | `yerel` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - getenv() örneği

    <?php
    // getenv() kullanım örneği
    $ip = getenv('REMOTE_ADDR');

    //Veya basitçe bir süper küresel kullan ($_SERVER veya $_ENV)
    $ip = $_SERVER['REMOTE_ADDR'];

    // Bir ortam değişkeninin değeri, bir SAPI tarafından ayarlanıp
    // ayarlanmadığına veya putenv ile değiştirilip değiştirilmediğine
    // bakılmaksızın rahatça alınabilir
    $ip = getenv('REMOTE_ADDR', true) ?: getenv('REMOTE_ADDR')
    ?>

### Notlar

Uyarı

PHP, Fast CGI gibi bir SAPI olarak çalışıyorsa, bu işlev daima SAPI tarafından atanan bir ortam değişkeninin değerini döndürür (putenv() ile aynı isimde yerel bir ortam değişkeni tanımlanmış olsa bile). Yerel olarak tanımlanmış ortam değişkenlerini döndürmek için `yerel` bağımsız değişkeni kullanılır.

### Ayrıca Bakınız

- putenv() - Bir ortam değişkenine değer atar
- apache_getenv() - Bir Apache ortam değişkeninin değerini döndürür
- Süper Küreseller

# getlastmod

(PHP 4, PHP 5, PHP 7, PHP 8)

getlastmod — Çalışan betiğin son değişiklik zamanını döndürür

### Açıklama

function getlastmod(): int|false

Çalışan betiğin son değişiklik zamanını döndürür.

Başka bir dosyanın değişiklik zamanıyla ilgileniyorsanız filemtime() işlevine bakın.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçerli betiğin son değişiklik zamanını date() işlevinde kullanılabilen bir Unix zaman damgası olarak döndürür. Hata oluşursa `false` döner.

### Örnekler

Örnek 1 - getlastmod() örneği

    <?php
    $fmt = datefmt_create("tr_TR", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN, "dd MMMM yyyy HH:mm:ss");
    // Çıktısı: 'Son değişiklik: 13 Şubat 2009 14:10:09'
    echo "Son değişiklik: " . datefmt_format ($fmt, getlastmod());
    ?>

### Ayrıca Bakınız

- date() - Unix zaman damgasını biçimlendirir
- getmyuid() - PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- getmygid() - PHP betiğinin sahibinin grup kimliğini döndürür
- get_current_user() - PHP betiğinin sahibininin kullanıcı ismini döndürür
- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- getmypid() - PHP'nin süreç kimliğini (PID) döndürür
- filemtime() - Dosyanın değişiklik zamanını döndürür

# getmygid

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

getmygid — PHP betiğinin sahibinin grup kimliğini döndürür

### Açıklama

function getmygid(): int|false

Betik sahibinin grup kimliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata oluşursa `false`, aksi takdirde betik sahibinin grup kimliğini döndürür.

### Ayrıca Bakınız

- getmyuid() - PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- getmypid() - PHP'nin süreç kimliğini (PID) döndürür
- get_current_user() - PHP betiğinin sahibininin kullanıcı ismini döndürür
- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# getmyinode

(PHP 4, PHP 5, PHP 7, PHP 8)

getmyinode — Çalışan betiğin dosya düğümü numarasını döndürür

### Açıklama

function getmyinode(): int|false

Çalışan betiğin dosya düğümü numarasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata oluşursa `false`, aksi takdirde çalışan betiğin dosya düğümü numarasını bir tamsayı olarak döndürür.

### Ayrıca Bakınız

- getmygid() - PHP betiğinin sahibinin grup kimliğini döndürür
- getmyuid() - PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- getmypid() - PHP'nin süreç kimliğini (PID) döndürür
- get_current_user() - PHP betiğinin sahibininin kullanıcı ismini döndürür
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# getmypid

(PHP 4, PHP 5, PHP 7, PHP 8)

getmypid — PHP'nin süreç kimliğini (PID) döndürür

### Açıklama

function getmypid(): int|false

PHP'nin süreç kimliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata oluşursa `false`, aksi takdirde PHP süreç kimliği döner.

### Notlar

Uyarı

Süreç kimlikleri eşsiz değildir, bu bakımdan güvenlikle ilgili konularda güvenilir değildir.

### Ayrıca Bakınız

- getmygid() - PHP betiğinin sahibinin grup kimliğini döndürür
- getmyuid() - PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- get_current_user() - PHP betiğinin sahibininin kullanıcı ismini döndürür
- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# getmyuid

(PHP 4, PHP 5, PHP 7, PHP 8)

getmyuid — PHP betiğinin sahibinin kullanıcı kimliğini döndürür

### Açıklama

function getmyuid(): int|false

Betik sahibinin kullanıcı kimliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata oluşursa `false`, aksi takdirde betik sahibinin kullanıcı kimliğini döndürür.

### Ayrıca Bakınız

- getmygid() - PHP betiğinin sahibinin grup kimliğini döndürür
- getmypid() - PHP'nin süreç kimliğini (PID) döndürür
- get_current_user() - PHP betiğinin sahibininin kullanıcı ismini döndürür
- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# getopt

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

getopt — Komut satırı bağımsız değişkenleri listesinden seçenekleri döndürür

### Açıklama

function getopt(string `$kısa_seçenekler`, array `$uzun_seçenekler` = [], int `&$kalan_indisi` = `null`): array|false

Betiğe aktarılan seçenekleri çözümler.

### Bağımsız Değişkenler

`kısa_seçenekler`
  Bir dizge olup, dizgenin her karakteri bir seçenek karakteri olarak kullanılır ve bu karakterlerle eşleşen seçenekler önlerine birer tire imi (`-`) konarak betik çalıştırılırken komut satırından belirtilebilir. Örneğin, `"x"` seçenek dizgesi `-x` seçeneğinin tanınmasını sağlar. Sadece a-z, A-Z ve 0-9 karakterlerine izin verilir.
`uzun_seçenekler`
  Bir dizi olup, dizinin her elemanı bir seçenek dizgesi olarak kullanılır ve bu dizgelerle eşleşen seçenekler önlerine birer çift tire imi (`--`) konarak betik çalıştırılırken komut satırından belirtilebilir. Örneğin, `"opt"` elemanı `--opt` seçeneğinin tanınmasını sağlar.
`kalan_indisi`
  `kalan_indisi` bağımsız değişkeni belirtilmişse, bağımsız değişken çözümlemesinin durduğu indis bu değişkene yazılacaktır.

`kısa_seçenekler` bağımsız değişkeni şu bileşenleri içerebilir:

- Tek tek karakterler (değerler kabul edilmez)
- Ardına tek bir iki nokta imi konmuş karakterler (bağımsız değişkenin değer gerektirdiğini belirtir)
- Ardına bir çift iki nokta imi konmuş karakterler (bağımsız değişkenin isteğe bağlı değer kabul ettiğini belirtir)

Seçenek değerleri dizgeden sonraki ilk bağımsız değişkendir. Bir değer gerekliyse değerin sonunda boşluk bulunup bulunmadığına bakılmaz.

> Bilginize: İsteğe bağlı değerler bir ayraç olarak `" "` (boşluk) kabul etmezler.

`uzun_seçenekler` dizisinin içerebileceği değerler:

- Sizge (bağımsız değişken değer kabul etmez)
- Ardına tek bir iki nokta imi konmuş dizge (bağımsız değişken değer gerektirir)
- Ardına bir çift iki nokta imi konmuş dizge (seçimlik değer)

> Bilginize:

> `kısa_seçenekler` ve `uzun_seçenekler` için biçem hemen hemen aynıdır. Tek fark, birincisinin bir dizge (her karakter bir seçenek) ikincisinin bir dizi (her eleman bir seçenek) almasıdır.

### Dönen Değerler

Bağımsız değişken çiftlerini içeren bir dizi, başarısızlık durumunda `false` döner.

> Bilginize:

> Seçeneklerin çözümlenmesi seçenek olmayan ilk değerde durur, kalan herşey yok sayılır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `kalan_indisi` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - getopt() örneği - temeller

    <?php
    // Betik: example.php
    $options = getopt("f:hp:");
    var_dump($options);
    ?>

    shell> php example.php -fdeğer -h

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["f"]=>
      string(5) "değer"
      ["h"]=>
      bool(false)
    }

Örnek 2 - getopt() ve uzun seçenekler

    <?php
    // Betik: betik.php
    $kısalar  = "";
    $kısalar .= "f:";  // Değer, zorunlu
    $kısalar .= "v::"; // Değer, seçimlik
    $kısalar .= "abc"; // Bunlar değer kabul etmez

    $uzunlar  = array(
        "gerekli:",     // Değer, zorunlu
        "seçimlik::",   // Değer, seçimlik
        "seçenek",      // Değer kabul etmez
        "sçnk",         // Değer kabul etmez
    );
    $seçenekler = getopt($kısalar, $uzunlar);
    var_dump($seçenekler);
    ?>

    shell> php betik.php -f "f değeri" -v -a --gerekli değer --seçimlik="seçimlik değer" --seçenek

Yukarıdaki örneğin çıktısı:

    array(6) {
      ["f"]=>
      string(9) "f değeri"
      ["v"]=>
      bool(false)
      ["a"]=>
      bool(false)
      ["gerekli"]=>
      string(6) "değer"
      ["seçimlik"]=>
      string(16) "seçimlik değer"
      ["seçenek"]=>
      bool(false)
    }

Örnek 3 - getopt() ve çoklu-tek seçenek

Çok sayıda seçeneğin tek bir seçenek olarak verilmesi:

    <?php
    // Betik: betik.php
    $options = getopt("abc");
    var_dump($options);
    ?>

    shell> php betik.php -aaac

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["a"]=>
      array(3) {
        [0]=>
        bool(false)
        [1]=>
        bool(false)
        [2]=>
        bool(false)
      }
      ["c"]=>
      bool(false)
    }

Örnek 4 getopt() ve `kalan_indisi` kullanımı

    <?php
    // Betik: example.php
    $rest_index = null;
    $opts = getopt('a:b:', [], $rest_index);
    $pos_args = array_slice($argv, $rest_index);
    var_dump($pos_args);

    shell> php example.php -a 1 -b 2 -- test

Yukarıdaki örneğin çıktısı:

    array(1) {
      [0]=>
      string(4) "test"
    }

### Ayrıca Bakınız

- $argv

# getrusage

(PHP 4, PHP 5, PHP 7, PHP 8)

getrusage — Geçerli özkaynak kullanımlarını döndürür

### Açıklama

function getrusage(int `$kip` = 0): array|false

getrusage(2) için bir arayüz olup sistem çağırısından dönen veriyi döndürür.

### Bağımsız Değişkenler

`kip`

  1 belirtilirse getrusage `RUSAGE_CHILDREN` ile çağrılır.

### Dönen Değerler

Sistem çağrısından dönen veriyi içeren bir ilişkisel dizi döner. Tüm girdilere belgelenmiş alan isimleri kullanılarak erişilebilir. Başarısız olursa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.0.0 | Bu işlev artık Windows'ta destekleniyor.

### Örnekler

Örnek 1 - getrusage() örneği

    <?php
    $dat = getrusage();
    echo $dat["ru_oublock"];       // küme çıktı işlemlerinin sayısı
    echo $dat["ru_inblock"];       // küme girdi işlemlerinin sayısı
    echo $dat["ru_msgsnd"];        // gönderilmiş IPC iletilerinin sayısı
    echo $dat["ru_msgrcv"];        // alınmış IPC iletilerinin sayısı
    echo $dat["ru_maxrss"];        // azami yerleşik atama boyutu
    echo $dat["ru_ixrss"];         // bütünleşik paylaşılan bellek boyutu
    echo $dat["ru_idrss"];         // bütünleşik paylaşılmamış veri boyutu
    echo $dat["ru_minflt"];        // geri kazanılmış sayfa sayısı (bellek sayfası hataları)
    echo $dat["ru_majflt"];        // sayfa hatası sayısı (sabit disk sayfası hataları)
    echo $dat["ru_nsignals"];      // alınan sinyal sayısı
    echo $dat["ru_nvcsw"];         // istemli bağlam anahtarı sayısı
    echo $dat["ru_nivcsw"];        // istemsiz bağlam anahtarı sayısı
    echo $dat["ru_nswap"];         // takas alanlarının sayısı
    echo $dat["ru_utime.tv_usec"]; // kullanılan kullanıcı süresi (mikrosaniye)
    echo $dat["ru_utime.tv_sec"];  // kullanılan kullanıcı zamanı (saniye)
    echo $dat["ru_stime.tv_usec"]; // kullanılan sistem zamanı (mikrosaniye)
    echo $dat["ru_stime.tv_sec"];  // kullanılan sistem zamanı (saniye)
    ?>

### Notlar

> Bilginize:

> Windows'ta getrusage() sadece aşağıdaki üyeleri döndürür:

> - `"ru_stime.tv_sec"`
> - `"ru_stime.tv_usec"`
> - `"ru_utime.tv_sec"`
> - `"ru_utime.tv_usec"`
> - `"ru_majflt"` (sadece `kip` `RUSAGE_SELF` ise)
> - `"ru_maxrss"` (sadece `kip` `RUSAGE_SELF` ise)

> getrusage() işlevi `kip`e `1` atanarak çağrılmışsa (`RUSAGE_CHILDREN`), evreler için kaynak kullanımı toplanır (yani işlev dahili olarak `RUSAGE_THREAD` ile çağrılır).

> Bilginize:

> BeOS 2000 üzerinde, sadece aşağıdaki üyeler döner:

> - `"ru_stime.tv_sec"`
> - `"ru_stime.tv_usec"`
> - `"ru_utime.tv_sec"`
> - `"ru_utime.tv_usec"`

### Ayrıca Bakınız

- Sisteminizdeki getrusage(2) kılavuz sayfası

# ini_alter

(PHP 4, PHP 5, PHP 7, PHP 8)

ini_alter — ini_set() işlevinin takma adıdır

### Açıklama

Bu işlev, ini_set() işlevinin takma adıdır.

# ini_get

(PHP 4, PHP 5, PHP 7, PHP 8)

ini_get — Bir yapılandırma yönergesinin değerini döndürür

### Açıklama

function ini_get(string `$yönerge`): string|false

Belirtilen yapılandırma yönergesinin değerini döndürür.

### Bağımsız Değişkenler

`yönerge`

  yapılandırma yönergesinin ismi.

### Dönen Değerler

Başarısızlık durumunda ve `null` bağımsız değişken için boş bir dizge, belirtilen yapılandırma seçeneği mevcut değilse `false`, aksi takdirde yapılandırma yönergesinin değeri ile döner.

### Örnekler

Örnek 1 - ini_get() örnekleri

    <?php
    /*
    php.ini dosyamız şu ayarları içeriyor:

    display_errors = On
    register_globals = Off
    post_max_size = 8M
    */

    echo 'display_errors = ' . (int) ini_get('display_errors') . "\n";
    echo 'register_globals = ' . ini_get('register_globals') . "\n";
    echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
    echo 'post_max_size + 1 = ' . (rtrim(ini_get('post_max_size'), 'KMG') + 1) . "\n";
    echo 'post_max_size (bayt olarak) = ' . return_bytes(ini_get('post_max_size'));

    function return_bytes($val) {
        $val = trim($val);
        $num = (int) rtrim($val, 'KMG');
        $last = strtolower($val[strlen($val) - 1]);

        switch ($last) {
            // 'G' birimi kullanılabilir
            case 'g':
                $num = $num * 1024 * 1024 * 1024;
                break;
            case 'm':
                $num = $num * 1024 * 1024;
                break;
            case 'k':
                $num *= 1024;
                break;
        }

        return $num;
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    display_errors = 1
    register_globals = 0
    post_max_size = 8M
    post_max_size+1 = 9
    post_max_size (bayt olarak) = 8388608

### Notlar

> Bilginize: Mantıksal değerleri sorgularken

> Bir mantıksal ini değeri olarak `off`, boş bir dizge veya "0" olarak dönerken, `on` değeri "1" olarak dönecektir. Bu işlev ayrıca yönergenin değerini birebir dizge olarak da döndürebilir.

> Bilginize: Bellek miktarı değerlerini sorgularken

> upload_max_filesize yönergesinde olduğu gibi pek çok bellek miktarı değeri, php.ini dosyasında kısa gösterimleriyle saklanabilir. ini_get() işlevi, yönergenin değeri olarak değerin int türündeki eşdeğerini değil, php.ini dosyasında saklandığı haliyle string türündeki değerini döndürür. Bu bakımdan, bu değer üzerindeki aritmetik işlemler beklenen sonuçları vermeyebilir. Yukarıdaki örnekte, kısa gösterimi bayt cinsinden bir değere dönüştürmenin yolu gösterilmektedir.

> Bilginize:

> ini_get_all() işlevi `pdo.dsn.*` gibi dizi ini yönergelerini okuyamaz ve bu durumda `false` döndürür.

### Ayrıca Bakınız

- get_cfg_var() - Belirtilen PHP yönergesinin değerini döndürür
- ini_get_all() - Tüm yapılandırma yönergelerini döndürür
- ini_restore() - Bir yapılandırma yönergesine eski değerini atar
- ini_set() - Bir yapılandırma yönergesine değer atar

# ini_get_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ini_get_all — Tüm yapılandırma yönergelerini döndürür

### Açıklama

function ini_get_all(?string `$eklenti` = `null`, bool `$ayrıntılı` = `true`): array|false

Kayıtlı yapılandırma seçeneklerinin hepsini değerleriyle döndürür.

### Bağımsız Değişkenler

`eklenti`

  İsteğe bağlı olarak bir eklenti ismi. `null` değilse ve `core` dizgesi belirtilmemişse sadece belirtilen eklentiye özgü yönergeler döndürülür.

`ayrıntılı`

  Ya her ayarın geçerli değeri ya da her ayarın ayrıntılı değerleri döndürülür. Öntanımlı olan `true` değeri ayrıntılı bir çıktı üretir.

### Dönen Değerler

Yönerge isimlerinin dizinin anahtarları olduğu bir dizi döner. `eklenti` bağımsız değişkeni atlanmışsa `false` döner ve `E_WARNING` seviyesinde bir hata oluşur.

`ayrıntılı` bağımsız değişkeni `true` (öntanımlı) olduğu takdirde dizinin her elemanı, anahtarları `global_value` (php.ini'de atanmış değer), `local_value` (ini_set() veya .htaccess üzerinden atanmış değer), ve `access` (erişim seviyesi) olan bir alt dizi içerir.

`ayrıntılı` bağımsız değişkeni `false` olduğu takdirde her elemanın değeri sadece yönergenin geçerli değerini içerecektir.

Bkz. Yapılandırma ayarlarının yeri

> Bilginize:

> Bir yönergenin, `access` anahtarı altında bir bit maskesi değeri olarak çok sayıda erişim seviyesine sahip olması mümkündür.

### Örnekler

Örnek 1 - ini_get_all() örnekleri

    <?php
    print_r(ini_get_all("pcre"));
    print_r(ini_get_all());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [pcre.backtrack_limit] => Array
            (
                [global_value] => 100000
                [local_value] => 100000
                [access] => 7
            )

        [pcre.recursion_limit] => Array
            (
                [global_value] => 100000
                [local_value] => 100000
                [access] => 7
            )

    )
    Array
    (
        [allow_call_time_pass_reference] => Array
            (
                [global_value] => 0
                [local_value] => 0
                [access] => 6
            )

        [allow_url_fopen] => Array
            (
                [global_value] => 1
                [local_value] => 1
                [access] => 4
            )

        ...

    )

Örnek 2 - Ayrıntısız listeleme

    <?php
    print_r(ini_get_all("pcre", false)); // PHP 5.3.0'dan itibaren
    print_r(ini_get_all(null, false));   // PHP 5.3.0'dan itibaren
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [pcre.backtrack_limit] => 100000
        [pcre.recursion_limit] => 100000
    )
    Array
    (
        [allow_call_time_pass_reference] => 0
        [allow_url_fopen] => 1
        ...
    )

### Notlar

> Bilginize:

> ini_get_all() işlevi `pdo.dsn.*` gibi "dizi" ini yönergelerini yok sayar.

### Ayrıca Bakınız

- Yapılandırma ayarlarının değiştirilmesi
- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- ini_restore() - Bir yapılandırma yönergesine eski değerini atar
- ini_set() - Bir yapılandırma yönergesine değer atar
- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- ReflectionExtension::getINIEntries() - Eklentinin ini girdilerini döndürür

# ini_parse_quantity

(PHP 8 >= 8.2.0)

ini_parse_quantity — Get interpreted size from ini shorthand syntax

### Açıklama

function ini_parse_quantity(string `$shorthand`): int

Returns the interpreted size in bytes on success from an ini shorthand.

### Bağımsız Değişkenler

`shorthand`

  Ini shorthand to parse, must be a number followed by an optional multiplier. The following multipliers are supported: `k`/`K` (`1024`), `m`/`M` (`1048576`), `g`/`G` (`1073741824`). The number can be a decimal, hex (prefixed with `0x` or `0X`), octal (prefixed with `0o`, `0O` or `0`) or binary (prefixed with `0b` or `0B`)

### Dönen Değerler

Returns the interpreted size in bytes as an int.

### Hatalar/İstisnalar

If the value cannot be parsed, or an invalid multiplier is used, an `E_WARNING` is raised.

### Örnekler

Örnek 1 A few ini_parse_quantity() examples

    <?php

    var_dump(ini_parse_quantity('1024'));
    var_dump(ini_parse_quantity('1024M'));
    var_dump(ini_parse_quantity('512K'));
    var_dump(ini_parse_quantity('0xFFk'));
    var_dump(ini_parse_quantity('0b1010k'));
    var_dump(ini_parse_quantity('0o1024'));
    var_dump(ini_parse_quantity('01024'));
    var_dump(ini_parse_quantity('Foobar'));
    var_dump(ini_parse_quantity('10F'));

    ?>

Yukarıdaki örneğin çıktısı:

    int(1024)
    int(1073741824)
    int(524288)
    int(261120)
    int(10240)
    int(532)
    int(532)

    Warning: Invalid quantity "Foobar": no valid leading digits, interpreting as "0" for backwards compatibility
    int(0)

    Warning: Invalid quantity "10F": unknown multiplier "F", interpreting as "10" for backwards compatibility
    int(10)

### Ayrıca Bakınız

- ini_get() - Bir yapılandırma yönergesinin değerini döndürür

# ini_restore

(PHP 4, PHP 5, PHP 7, PHP 8)

ini_restore — Bir yapılandırma yönergesine eski değerini atar

### Açıklama

function ini_restore(string `$yönerge`): void

Belirtilen yapılandırma yönergesine eski değeri atanır.

### Bağımsız Değişkenler

`yönerge`

  Yönergenin ismi.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ini_restore() örneği

    <?php
    $setting = 'html_errors';

    echo '\'' . $setting . '\' yönergesinin şu anki değeri: ' . ini_get($setting), PHP_EOL;

    ini_set($setting, ini_get($setting) ? 0 : 1);
    echo '\'' . $setting . '\' yönergesinin yeni değeri: ' . ini_get($setting), PHP_EOL;

    ini_restore($setting);
    echo '\'' . $setting . '\' yönergesinin özgün değeri: ' . ini_get($setting), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    'html_errors' yönergesinin şu anki değeri: 1
    'html_errors' yönergesinin yeni değeri: 0
    'html_errors' yönergesinin özgün değeri: 1

### Ayrıca Bakınız

- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- ini_get_all() - Tüm yapılandırma yönergelerini döndürür
- ini_set() - Bir yapılandırma yönergesine değer atar

# ini_set

(PHP 4, PHP 5, PHP 7, PHP 8)

ini_set — Bir yapılandırma yönergesine değer atar

### Açıklama

function ini_set(string `$yönerge`, string|int|float|bool|null `$değer`): string|false

Belirtilen yapılandırma yönergesine belirtilen değeri atar. Bu ayarlama betiğinizin çalışma süresince geçerli kalır, betik sonlandığında eski değer geçerli olur.

### Bağımsız Değişkenler

`yönerge`

  ini_set() işlevi ile tüm yapılandırma yönergelerine değer atanamaz. Mevcut yapılandırma yönergelerinin listesini eklerde bulabilirsiniz.

`değer`

  Yönergeye atanacak yeni değer.

### Dönen Değerler

Atama işlemi başarılı olursa eski değer, aksi takdirde `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `değer` artık herhangi bir sayıl türü (`null` dahil) kabul ediyor. Evvelce sadece string türündeki değerleri kabul ediyordu.

### Örnekler

Örnek 1 - Bir INI yönergesine değer atamak

    <?php
    echo ini_get('display_errors');

    if (!ini_get('display_errors')) {
        ini_set('display_errors', '1');
    }

    echo ini_get('display_errors');
    ?>

### Ayrıca Bakınız

- get_cfg_var() - Belirtilen PHP yönergesinin değerini döndürür
- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- ini_get_all() - Tüm yapılandırma yönergelerini döndürür
- ini_restore() - Bir yapılandırma yönergesine eski değerini atar
- Yapılandırma ayarlarının değiştirilmesi

# memory_get_peak_usage

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

memory_get_peak_usage — PHP'ye ayrılan belleğin azami miktarını döndürür

### Açıklama

function memory_get_peak_usage(bool `$gerçek_kullanım` = `false`): int

PHP betiğinize ayrılan azami belleğin bayt cinsinden miktarını döndürür.

### Bağımsız Değişkenler

`gerçek_kullanım`

  `true` olduğu takdirde sistem tarafından PHP'ye ayrılan gerçek bellek miktarı, `false` olduğunda veya bağımsız değişken belirtilmediğinde `emalloc()` tarafından kullanılan bellek miktarı raporlanır.

### Dönen Değerler

Ayrılan azami belleğin bayt cinsinden miktarı.

### Ayrıca Bakınız

- memory_get_usage() - PHP'ye ayrılan belleğin miktarını döndürür
- memory_reset_peak_usage() - Reset the peak memory usage
- memory_limit

# memory_get_usage

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

memory_get_usage — PHP'ye ayrılan belleğin miktarını döndürür

### Açıklama

function memory_get_usage(bool `$gerçek_kullanım` = `false`): int

PHP betiğinize ayrılan belleğin bayt cinsinden miktarını döndürür.

### Bağımsız Değişkenler

`gerçek_kullanım`

  `true` olduğu takdirde sistem tarafından PHP'ye ayrılan gerçek bellek miktarı, `false` olduğunda veya bağımsız değişken belirtilmediğinde `emalloc()` tarafından kullanılan bellek miktarı raporlanır.

> Bilginize:

> PHP, `emalloc()` tarafından ayrılan belleği izlemez.

### Dönen Değerler

Ayrılan belleğin bayt cinsinden miktarı.

### Örnekler

Örnek 1 - memory_get_usage() örneği

    <?php
    // Bu sadece bir örnektir.
    // Miktarlar, sisteminizde farklı olabilir.

    echo memory_get_usage() . "\n"; // 36640

    $a = str_repeat("Hello", 4242);

    echo memory_get_usage() . "\n"; // 57960

    unset($a);

    echo memory_get_usage() . "\n"; // 36744

    ?>

### Ayrıca Bakınız

- memory_get_peak_usage() - PHP'ye ayrılan belleğin azami miktarını döndürür
- memory_limit

# memory_reset_peak_usage

(PHP 8 >= 8.2.0)

memory_reset_peak_usage — Reset the peak memory usage

### Açıklama

function memory_reset_peak_usage(): void

Resets the peak memory usage returned by the memory_get_peak_usage() function.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 memory_reset_peak_usage() example

    <?php

    var_dump(memory_get_peak_usage());

    $a = str_repeat("Hello", 424242);
    var_dump(memory_get_peak_usage());

    unset($a);
    memory_reset_peak_usage();

    $a = str_repeat("Hello", 2424);
    var_dump(memory_get_peak_usage());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(422440)
    int(2508672)
    int(399208)

### Ayrıca Bakınız

- memory_get_peak_usage() - PHP'ye ayrılan belleğin azami miktarını döndürür

# php_ini_loaded_file

(PHP 5 >= 5.2.4, PHP 7, PHP 8)

php_ini_loaded_file — Yüklü php.ini dosyasının dosya yolunu döndürür

### Açıklama

function php_ini_loaded_file(): string|false

Bir php.ini dosyası yüklü mü diye bakar ve dosyanın yolunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

php.ini yüklüyse dosyanın yolu, değilse `false` döner.

### Örnekler

Örnek 1 - php_ini_loaded_file() örneği

    <?php
    $inipath = php_ini_loaded_file();

    if ($inipath) {
        echo 'Yüklü php.ini: ' . $inipath;
    } else {
        echo 'Bir php.ini dosyası yüklü değil';
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yüklü php.ini: /usr/local/php/php.ini

### Ayrıca Bakınız

- php_ini_scanned_files() - Ek ini dizininden ayrıştırılan dosyaların listesi ile döner
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- Yapılandırma Dosyası

# php_ini_scanned_files

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

php_ini_scanned_files — Ek ini dizininden ayrıştırılan dosyaların listesi ile döner

### Açıklama

function php_ini_scanned_files(): string|false

php_ini_scanned_files() işlevi php.ini dosyasından sonra ayrıştırılan yapılandırma dosyalarını bir virgül ayraçlı liste olarak döndürür. Bu dizinler, derleme sırasında bir seçenek ile ve çalışma zamanında isteğe bağlı olarak bir ortam değişkeni tarafından taranır. Daha fazla bilgi Tarama Dizinleri bölümünde bulunabilir.

Döndürülen yapılandırma dosyaları tam dosya yolunu içerir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda .ini dosyalarının virgül ayraçlı listesini bir dizge olarak döndürür. Derleme sırasında --with-config-file-scan-dir seçeneği kullanılmamışsa ve PHP_INI_SCAN_DIR ortam değişkenine bir dizin atanmamışsa `false` döner. Bunlara dizin atanmış ama dizin tarandığında boşsa, boş dizge döner. INI dosyası olmayan bir dosyanın varlığı halinde dosya ismi listeye konur, fakat ek olarak bir PHP hatası çıktılanır. Bu PHP hatası hem derleme sırasında hem de php_ini_scanned_files() işlevi kullanıldığında görüntülenir.

### Örnekler

Örnek 1 - Dönen ini dosyalarının listelenmesi

    <?php
    if ($filelist = php_ini_scanned_files()) {
        if (strlen($filelist) > 0) {
            $files = explode(',', $filelist);

            foreach ($files as $file) {
                echo "<li>" . trim($file) . "</li>\n";
            }
        }
    }
    ?>

### Ayrıca Bakınız

- ini_set() - Bir yapılandırma yönergesine değer atar
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- php_ini_loaded_file() - Yüklü php.ini dosyasının dosya yolunu döndürür

# php_sapi_name

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

php_sapi_name — HTTP sunucusu ile PHP arasındaki arayüzün türünü döndürür

### Açıklama

function php_sapi_name(): string|false

PHP'nin kullandığı arayüz (Sunucu API'si, SAPI) türünü belirten küçük harfli bir dizge döndürür. Örneğin CLI PHP için bu dizge "cli" olurken Apache ile kullanılan API'ye bağlı olarak değişiklik gösteribilir. Olası değerler aşağıda listelenmiştir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda küçük harfli bir dizge olarak arayüz türü, başarısızlık durumunda `false` döner.

Tamamı olmasa da olası değerler şunlardır: `apache`, `apache2handler`, `cgi` (PHP 5.3'e kadar), `cgi-fcgi`, `cli`, `cli-server`, `embed`, `fpm-fcgi`, `litespeed`, `phpdbg`.

### Örnekler

Örnek 1 - php_sapi_name() örneği

Bu örnekte`cgi-fcgi` değerini de kapsayan `cgi` alt dizgesinin varlığı aranmaktadır.

    <?php
    $sapi_type = php_sapi_name();
    if (substr($sapi_type, 0, 3) == 'cgi') {
        echo "CGI PHP kullanıyorsunuz\n";
    } else {
        echo "CGI PHP kullanmıyorsunuz\n";
    }
    ?>

### Notlar

> Bilginize: Başka bir yaklaşım

> PHP sabiti `PHP_SAPI`, php_sapi_name() işlevinden dönen değerin aynını içerir.

İpucu

# Olası bir yanlış anlama

Tanımlı SAPI her zaman apaçık belli değildir. Apache örneğindeki gibi `apache2handler` olarak tanımlanmış olabilir.

### Ayrıca Bakınız

- PHP_SAPI

# php_uname

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

php_uname — PHP'nin çalıştığı işletim sistemi hakkında bilgi döndürür

### Açıklama

function php_uname(string `$kip` = "a"): string

php_uname() işlevi PHP'nin üzerinde çalıştığı işletim sistemi hakkında bilgi döndürür. Bu bilgiyi phpinfo() çıktısının üst satırlarında da görebilirsiniz. İşletim sisteminin sadece ismini öğrenmek isterseniz `PHP_OS` sabitini kullanabilirsiniz; fakat bu sabiti kullanırken, sabitin, PHP'nin derlendiği işletim sistemi adını içereceğini unutmayın.

Bazı eski Unix sürümlerinde, üzerinde çalışılan işletim sistemi saptanamaz ve PHP üzerinde derlendiği işletim sistemi bilgisi gösterilir. Buna genellikle uname() kütüphane çağrısının mevcut olmadığı veya çalışmadığı sistemlerde rastlanır.

### Bağımsız Değişkenler

`kip`

  `kip` döndürülecek bilgi çeşidini belirtmek için kullanılan tek bir karakter içerebilir. Olası değerler:

  - `'a'`: Bu öntanımlıdır. `"s n r v m"` kiplerinin hepsini içerir.
  - `'s'`: işletim sisteminin ismi. Örnek: `FreeBSD`.
  - `'n'`: Konak ismi. Örnek: `localhost.example.com`.
  - `'r'`: Dağıtım ismi. Örnek: `5.1.2-RELEASE`.
  - `'v'`: Sürüm bilgisi. İşletim sistemine göre değişiklik gösterir.
  - `'m'`: Makine türü. Örnek: `i386`.

### Dönen Değerler

Bilgiyi bir dizge olarak döndürür.

### Örnekler

Örnek 1 - php_uname() örnekleri

    <?php
    echo php_uname();
    echo PHP_OS;

    /* Bazı olası çıktılar:
    Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686
    Linux

    FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001
    FreeBSD

    Windows NT XN1 5.1 build 2600
    WINNT
    */

    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        echo 'Bu sunucu Windows üzerinde!';
    } else {
        echo 'Bu sunucu Windows üzerinde değil!';
    }

    ?>

İşinizi yarayacak bazı öntanımlı PHP sabitleri vardır. Örneğin:

Örnek 2 - İşletim sistemine göre bazı sabit örnekleri

    <?php
    // *nix
    echo DIRECTORY_SEPARATOR; // /
    echo PHP_SHLIB_SUFFIX;    // so
    echo PATH_SEPARATOR;      // :

    // Win*
    echo DIRECTORY_SEPARATOR; // \
    echo PHP_SHLIB_SUFFIX;    // dll
    echo PATH_SEPARATOR;      // ;
    ?>

### Ayrıca Bakınız

- phpversion() - Çalışan PHP'nin sürümünü döndürür
- php_sapi_name() - HTTP sunucusu ile PHP arasındaki arayüzün türünü döndürür
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar

# phpcredits

(PHP 4, PHP 5, PHP 7, PHP 8)

phpcredits — PHP'ya katkıda bulunanları gösterir

### Açıklama

function phpcredits(int `$seçenekler` = `CREDITS_ALL`): true

PHP ve eklenti geliştiricilerinin listesini basar. Uygun HTML kodlarını üretip içine bu bilgiyi yerleştirir.

### Bağımsız Değişkenler

`seçenekler`

  Bu bağımsız değişkeni özel bir katkıcılar sayfası üretmek için kullanabilirsiniz. Bağımsız değişken isteğe bağlıdır ve `CREDITS_ALL` öntanımlıdır.

  Olası phpcredits() seçenekleri
  Seçenek | Açıklama
  --- | ---
  `CREDITS_ALL` | Tüm katkıcılar. `CREDITS_DOCS`, `CREDITS_GENERAL`, `CREDITS_GROUP`, `CREDITS_MODULES` ve `CREDITS_FULLPAGE` seçeneklerinin tamamına eşdeğerdir. Uygun başlıklarla tek bir HTML sayfası üretilir.
  `CREDITS_DOCS` | Belgelendirme ekibi.
  `CREDITS_FULLPAGE` | Diğer seçeneklerin çıktılarının birleşiminden oluşan tek bir HTML sayfası üretilir.
  `CREDITS_GENERAL` | Genel katkıcılar: Dil tasarımı ve kavramlar, PHP ve SAPI modülünün yazarları.
  `CREDITS_GROUP` | Çekirdek geliştiricilerin listesi
  `CREDITS_MODULES` | Eklenti modüllerinin ve yazarlarının listesi.
  `CREDITS_SAPI` | Sunucu API modüllerinin ve yazarlarının listesi.

### Dönen Değerler

Daima `true` döndürür.

### Örnekler

Örnek 1 - Genel katkıcıların listelenmesi

    <?php
    phpcredits(CREDITS_GENERAL);
    ?>

Örnek 2 - Çekirdek geliştiricilerin ve belgelendirme ekibinin listelenmesi

    <?php
    phpcredits(CREDITS_GROUP | CREDITS_DOCS | CREDITS_FULLPAGE);
    ?>

Örnek 3 - Tüm katkıcıların listelenmesi

    <html>
     <head>
      <title>Katılımcılar</title>
     </head>
     <body>
    <?php
    // bazı kodlar
    phpcredits(CREDITS_ALL - CREDITS_FULLPAGE);
    // bazı kodlar
    ?>
     </body>
    </html>

### Notlar

> Bilginize:

> CLI kipi kullanıldığında, phpcredits() HTML değil düz metin çıktı verir.

### Ayrıca Bakınız

- phpversion() - Çalışan PHP'nin sürümünü döndürür
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar

# phpinfo

(PHP 4, PHP 5, PHP 7, PHP 8)

phpinfo — PHP yapılandırması hakkında bilgi çıktılar

### Açıklama

function phpinfo(int `$seçenekler` = `INFO_ALL`): true

PHP'nin o anki durumu hakkında büyük miktarda bilgi çıktılar. Bu bilgi, PHP derleme seçenekleri, kurulu eklentiler, PHP sürümü, sunucu bilgisi, (PHP bir modül olarak derlenmişse) sunucu ortam değişkenleri, PHP ortam değişkenleri, işletim sistemi sürüm bilgileri, dosya yolları, asıl ve yerel yapılandırma seçenekleri, HTTP başlıkları ve PHP lisansını içerir.

Her sistemin yapılandırması farklı olduğundan phpinfo() işlevi genellikle, yapılandırma ayarlarını ve kullanılabilecek öntanımlı değişkenleri öğrenmek için kullanılır.

phpinfo() tüm EGPCS (Environment, GET, POST, Cookie, Server) verisini içerdiğinden ayrıca değerli bir hata ayıklama aracıdır.

### Bağımsız Değişkenler

`seçenekler`

  İsteğe bağlı bu bağımsız değişkende aşağıdaki sabitlerin bitsel değerlerinin toplamı belirtilerek işlevin çıktısı özelleştirilebilir. Bu sabitleri veya bitsel değerlerini bitsel VEYA işleci ile birleştirerek belirtebilirsiniz.

  phpinfo() seçenekleri
  Sabit | Değer | Açıklama
  --- | --- | ---
  INFO_GENERAL | 1 | Yapılandırma satırı, php.ini dosyasının yeri, derleme tarihi, HTTP Sunucusu, Sistem, vesaire.
  INFO_CREDITS | 2 | PHP'ye katkıda bulunanlar. Ayrıca, phpcredits() işlevine de bakınız.
  INFO_CONFIGURATION | 4 | PHP yönergelerinin asıl ve yerel değerleri. Ayrıca ini_get() işlevine de bakınız.
  INFO_MODULES | 8 | Yüklü modüller ve binlerğn ayarları. Ayrıca get_loaded_extensions() işlevine de bakınız.
  INFO_ENVIRONMENT | 16 | $_ENV dizisi ile de edinilebilen ortam değişkenleri bilgileri.
  INFO_VARIABLES | 32 | EGPCS (Environment, GET, POST, Cookie, Server) verisinden elde edilen tüm öntanımlı değişkenler.
  INFO_LICENSE | 64 | PHP Lisans bilgileri. Ayıca bakınız: » Lisans SSS.
  INFO_ALL | -1 | Yukarıdakiler hepsi gösterilir.

### Dönen Değerler

Daima `true` döndürür.

### Örnekler

Örnek 1 - phpinfo() örneği

    <?php

    // Tüm bilgiyi gösterelim (INFO_ALL sabitine eşdeğer)
    phpinfo();

    // Sadece modül bilgisini gösterelim.
    // phpinfo(8) de aynı sonucu verir.
    phpinfo(INFO_MODULES);

    ?>

### Notlar

> Bilginize:

> PHP 5.5 öncesinde expose_php yapılandırma seçeneğine `off` atanmışsa bazı bilgiler gösterilmezdi. PHP ve Zend logoları ve katkıcılar bunlardan bazılarıdır.

> Bilginize:

> PHP'yi komut satırından kullanıyorsanız phpinfo() işlevi HTML çıktı yerine düz metin çıktı verir.

### Ayrıca Bakınız

- phpversion() - Çalışan PHP'nin sürümünü döndürür
- phpcredits() - PHP'ya katkıda bulunanları gösterir
- ini_get() - Bir yapılandırma yönergesinin değerini döndürür
- ini_set() - Bir yapılandırma yönergesine değer atar
- get_loaded_extensions() - Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- Öntanımlı Değişkenler

# phpversion

(PHP 4, PHP 5, PHP 7, PHP 8)

phpversion — Çalışan PHP'nin sürümünü döndürür

### Açıklama

function phpversion(?string `$eklenti` = `null`): string|false

Çalışan PHP'nin veya belirtilen eklentinin sürüm numarasını bir dizge olarak döndürür.

### Bağımsız Değişkenler

`eklenti`

  İsteğe bağlı bir eklenti ismi.

### Dönen Değerler

İsteğe bağlı `eklenti` bağımsız değişkeni string türünde belirtilmişse phpversion() bu eklentinin sürüm bilgisini döndürür. Eklenti ile ilgili bir sürüm bilgisi yoksa veya eklenti etkin değilse `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `eklenti` bağımsız değişkeninde artık `null` belirtilebiliyor.

### Örnekler

Örnek 1 - phpversion() örneği

    <?php
    // prints e.g. 'Current PHP version: 8.0.0'
    echo 'Çalışan PHP\'nin sürümü: ' . phpversion();

    // eklenti etkinse '2.0' gibi bir değer basar
    // eklenti etkin değilse hiçbir şey basılmaz
    echo phpversion('tidy');
    ?>

Örnek 2 - `PHP_VERSION_ID` örneği

    <?php
    // PHP_VERSION_ID, PHP 5.2.7'den beri kullanılabilmektedir.
    // Kullandığınız sürüm daha düşükse taklit edin
    if(!defined('PHP_VERSION_ID'))
    {
        $version = explode('.',PHP_VERSION);

        define('PHP_VERSION_ID',
            ($version[0] * 10000 + $version[1] * 100 + $version[2]));
    }

    // PHP_VERSION_ID bir sayı olarak tanımlanır. PHP sürümü yükseldikçe
    // sayı büyür. Şu ifade ile tanımlanır:
    //
    // $version_id = $major_version * 10000 + $minor_version * 100 + $release_version;
    //
    // Artık PHP sürümlerinin özellikleri için PHP_VERSION_ID'ye bakabiliriz.
    // Kullandığınız PHP sürümü bir özelliği desteklemezse version_compare()
    // kullanmanız gerekmez. Örneğin 5.2.7 öncesi sürümlerden birini
    // kullanıyorsanız PHP_VERSION_* sabitlerini şöyle tanımlayabilirsiniz:

    if(PHP_VERSION_ID < 50207)
    {
        define('PHP_MAJOR_VERSION',   $version[0]);
        define('PHP_MINOR_VERSION',   $version[1]);
        define('PHP_RELEASE_VERSION', $version[2]);

     // ve böyle gider, ...
    }
    ?>

### Notlar

> Bilginize:

> Bu bilgi ayrıca `PHP_VERSION` öntanımlı sabitinde de bulunur.

> Bilginize:

> Bazı eklentiler kendi sürüm numaralarını tanımlayabilir. Bununla birlikte, toplu paketteki eklentilerin çoğu sürüm numarası olarak PHP sürümünü kullanır.

### Ayrıca Bakınız

- PHP_VERSION sabitleri
- version_compare() - PHP standardına uygun hale getirilmiş iki sürüm numarası dizgesini karşılaştırır
- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- phpcredits() - PHP'ya katkıda bulunanları gösterir
- zend_version() - Zend motorunun sürümünü döndürür

# putenv

(PHP 4, PHP 5, PHP 7, PHP 8)

putenv — Bir ortam değişkenine değer atar

### Açıklama

function putenv(string `$atama_dizgesi`): bool

`atama_dizgesi`'ni sunucu ortamına ekler. Yeni ortam değişkeni sadece o anki istek için istek süresince geçerli olacaktır. İstek sunumunun sonunda ortam özgün durumuna getirilir.

### Bağımsız Değişkenler

`atama_dizgesi`

  `"FOO=BAR"` gibi bir atama dizgesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir ortam değişkeninin atanması

    <?php
    putenv("UNIQID=$uniqid");
    ?>

### Ayrıca Bakınız

- getenv() - Ortam değişkenlerinden birinin veya tümünün değerini döndürür
- apache_setenv() - Bir Apache ortam değişkeni atar

# restore_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

restore_include_path — include_path yönergesini eski değerine ayarlar

Uyarı

Bu işlevin kullanımı PHP 7.4.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function restore_include_path(): void

include_path yönergesinin çalışma anı değerini tekrar php.ini dosyasında belirtilen değerine ayarlar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - restore_include_path() örneği

    <?php

    echo get_include_path();  // .:/usr/local/lib/php

    set_include_path('/inc');

    echo get_include_path();  // /inc

    restore_include_path();

    // veya ini_restore() kullanarak
    ini_restore('include_path');

    echo get_include_path();  // .:/usr/local/lib/php

    ?>

### Ayrıca Bakınız

- ini_restore() - Bir yapılandırma yönergesine eski değerini atar
- get_include_path() - include_path yönergesinin değerini döndürür
- set_include_path() - include_path yönergesinin çalışma anı değerini belirler
- include - include

# set_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

set_include_path — include_path yönergesinin çalışma anı değerini belirler

### Açıklama

function set_include_path(string `$yeni_değer`): string|false

include_path yönergesinin, betiğin çalışma süresince geçerli olacak değerini belirler.

### Bağımsız Değişkenler

`yeni_değer`

  include_path yönergesinin yeni değeri.

### Dönen Değerler

Başarısızlık durumunda `false`, aksi takdirde include_path yönergesinin eski değeriyle döner.

### Örnekler

Örnek 1 - set_include_path() örneği

    <?php
    set_include_path('/inc');

    // veya ini_set() kullanarak
    ini_set('include_path', '/usr/lib/pear');
    ?>

Örnek 2 - İçerilecek dosyaların aranacağı yollara bir yenisini eklemek

`PATH_SEPARATOR` sabitini kullanarak bu yolları işletim sisteminden bağımsız olarak çoğaltmak mümkündür.

Bu örnekte, `include_path` yönergesinde belirtilen dosya yollarına /usr/lib/pear dizinini ekleyeceğiz.

    <?php
    $path = '/usr/lib/pear';
    set_include_path(get_include_path() . PATH_SEPARATOR . $path);
    ?>

### Ayrıca Bakınız

- ini_set() - Bir yapılandırma yönergesine değer atar
- get_include_path() - include_path yönergesinin değerini döndürür
- restore_include_path() - include_path yönergesini eski değerine ayarlar
- include - include

# set_time_limit

(PHP 4, PHP 5, PHP 7, PHP 8)

set_time_limit — Azami çalıştırma süresini sınırlar

### Açıklama

function set_time_limit(int `$saniye`): bool

Bir betiğin çalıştırılabileceği süreyi saniye cinsinden belirler. Bu süre aşıldığında betik ölümcül hata ile döner. php.ini dosyasında `max_execution_time` yönergesi ile başka bir değer belirtilmemişse öntanımlı süre 30 saniyedir.

set_time_limit() işlevi çağrıldığı anda süre sıfırdan başlatılır. Başka bir deyişle, betik örneğin 30 saniyelik öntanımlı zaman aşımı dahilinde 25 saniye çalıştıktan sonra `set_time_limit(20)` çağrısı yapılırsa süre bitiminde betik 45 saniye çalışmış olacaktır.

### Bağımsız Değişkenler

`saniye`

  Betiğin çalıştırılabileceği azami süre (saniye cinsinden). Sıfır belirtilirse bir zaman sınırlaması kaldırılmış olur.

### Dönen Değerler

Başarılıysa `true`, değilse `false` döner.

### Notlar

> Bilginize:

> max_execution_time yönergesi veya set_time_limit() işlevi sadece betiğin kendi çalışma süresini etkilerler. Betiğin çalışması sırasında, akım işlemleri, veritabanı sorguları ve system() işlevi kullanılarak yapılan sistem çağrıları gibi betiğin dışında gerçekleşen işlemler için harcanan zaman betiğin azami çalışma süresinin hesaplanmasında hesaba katılmaz. Gerçek zamanın ölçüldüğü Windows üzerinde bu geçerli değildir.

### Ayrıca Bakınız

- max_execution_time
- max_input_time

# sys_get_temp_dir

(PHP 5 >= 5.2.1, PHP 7, PHP 8)

sys_get_temp_dir — Geçici dosyalar için kullanılan dizini döndürür

### Açıklama

function sys_get_temp_dir(): string

PHP'nin geçici dosyaları sakladığı öntanımlı dizinin tam yolunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçici dosyaların saklandığı dizinin tam yolunu döndürür.

### Örnekler

Örnek 1 - sys_get_temp_dir() örneği

    <?php
    // sys_get_temp_dir() kullanarak geçici dosyaların
    // tutulduğu dizinde bir geçici dosya oluşturalım
    $temp_file = tempnam(sys_get_temp_dir(), 'Tux');

    echo $temp_file;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    C:\Windows\Temp\TuxA318.tmp

### Ayrıca Bakınız

- tmpfile() - Geçici bir dosya oluşturur
- tempnam() - Eşsiz bir isimle dosya oluşturur

# version_compare

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

version_compare — PHP standardına uygun hale getirilmiş iki sürüm numarası dizgesini karşılaştırır

### Açıklama

function version_compare(string `$sürüm1`, string `$sürüm2`, ?string `$işleç` = `null`): int|bool

version_compare() işlevi PHP standardına uygun hale getirilmiş iki sürüm numarası dizgesini karşılaştırır.

İşlev önce `_`, `-` ve `+` karakterlerini birer nokta `.` ile değiştirir, ardından numara olmayan dizgeciklerin önüne ve ardına birer nokta konur. Örneğin, '4.3.2RC1' dizgesi '4.3.2.RC.1' haline gelir. Sonra her bileşen soldan sağa karşılaştırılır. Bileşenlerin içerdiği özel sürüm dizgeleri şu sıralamaya göre ele alınırlar: `bu listede olmayan bir dizge` < `dev` < `alpha` = `a` < `beta` = `b` < `RC` = `rc` < `#` < `pl` = `p`. Bu yöntemle, '4.1' ve '4.1.2' gibi farklı seviyelerden sürümler karşılaştırabileceği gibi geliştirme sürümlerinin karşılaştırılması için de kullanılabilir.

### Bağımsız Değişkenler

`sürüm1`

  İlk sürüm numarası.

`sürüm2`

  İkinci sürüm numarası.

`işleç`

  Olası işleçler sırasıyla şunlardır: `<`, `lt`, `<=`, `le`, `>`, `gt`, `>=`, `ge`, `==`, `=`, `eq`, `!=`, `<>`, `ne`.

  Bu bağımsız değişken harf büyüklüğüne duyarlıdır, yani değerlerin hepsi küçük harfli olmalıdır.

### Dönen Değerler

Öntanımlı olarak, version_compare() işlevi, birinci sürüm ikincisinden küçükse `-1`, büyükse `1`, eşitse `0` döndürür.

İsteğe bağlı `işleç` bağımsız değişkeni kullanılırsa ve sürümler arasında belirtilen ilişki varsa `true`, aksi takdirde `false` döner.

### Örnekler

Aşağıdaki örnekte, kodu çalıştıran PHP sürümüne içermesi nedeniyle `PHP_VERSION` sabiti kullanılmıştır.

Örnek 1 - version_compare() örnekleri

    <?php
    if (version_compare(PHP_VERSION, '7.0.0') >= 1) {
        echo 'PHP sürümüm en azından 7.0.0, gerçek sürüm: ' . PHP_VERSION . "\n";
    }

    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
        echo 'PHP sürümüm en azından 5.3.0, gerçek sürüm: ' . PHP_VERSION . "\n";
    }

    if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
        echo 'PHP sürümüm en azından 5.0.0, gerçek sürüm: ' . PHP_VERSION . "\n";
    }

    if (version_compare(PHP_VERSION, '5.0.0', '<')) {
        echo 'Hala PHP 4 kullanıyorum, gerçek sürüm: ' . PHP_VERSION . "\n";
    }
    ?>

### Notlar

> Bilginize:

> `PHP_VERSION` sabiti kullanılan PHP'nin sürüm numarasını içerir.

> Bilginize:

> 5.3.0-dev gibi ön dağıtım sürümleri için, ulaşacakları asıl sürümün numarasının alt sürümün numarası (PHP 5.3.0 gibi) olduğu varsayılır.

> Bilginize:

> `alpha` ve `beta` gibi özel sürüm dizgeleri harf büyüklüğüne duyarlıdır. PHP standardına uymayan gelişigüzel kaynaklardan gelen sürüm dizgelerinin version_compare() çağrılmadan önce strtolower() aracılığıyla küçük harfli yapılması gerekebilir.

### Ayrıca Bakınız

- phpversion() - Çalışan PHP'nin sürümünü döndürür
- php_uname() - PHP'nin çalıştığı işletim sistemi hakkında bilgi döndürür
- function_exists() - Eğer işlev tanımlanmış ise true döndürür

# zend_thread_id

(PHP 5, PHP 7, PHP 8)

zend_thread_id — Geçerli evre için eşsiz bir betimleyici döndürür

### Açıklama

function zend_thread_id(): int

Bu işlev geçerli evre için eşsiz bir betimleyici döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Evre kimliğini bir tamsayı olarak döndürür.

### Örnekler

Örnek 1 - zend_thread_id() örneği

    <?php
    $thread_id = zend_thread_id();

    echo 'Evre kimliği: ' . $thread_id;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Evre kimliği: 7864

### Notlar

> Bilginize:

> Bu işlev, PHP, ZTS (Zend Thread Safety) desteği ve hata ayıklama kipi (`--enable-debug`) ile derlendiği takdirde kullanılabilir.

# zend_version

(PHP 4, PHP 5, PHP 7, PHP 8)

zend_version — Zend motorunun sürümünü döndürür

### Açıklama

function zend_version(): string

Kurulu Zend Motorunun sürümünü içeren bir dizge döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Zend Motorunun sürüm numarasını bir dizge olarak döndürür.

### Örnekler

Örnek 1 - zend_version() örneği

    <?php
    echo "Zend motorunun sürümü: " . zend_version();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Zend motorunun sürümü: 2.3.0

### Ayrıca Bakınız

- phpinfo() - PHP yapılandırması hakkında bilgi çıktılar
- phpcredits() - PHP'ya katkıda bulunanları gösterir
- phpversion() - Çalışan PHP'nin sürümünü döndürür

## İçindekiler

- assert — Savın doğruluğuna bakar
- assert_options — Çeşitli kararlılık denetim seçeneklerini açar/kapar
- cli_get_process_title — Geçerli sürecin başlığını döndürür
- cli_set_process_title — Geçerli sürece başlık tanımlar
- dl — Belirtilen PHP eklentisini çalışma anında yükler
- extension_loaded — Belirtilen eklenti yüklü mü diye bakar
- gc_collect_cycles — Çöp döngülerin toplanması için zorlar
- gc_disable — Döngüsel gönderim toplayıcısını etkisiz kılar
- gc_enable — Döngüsel gönderim toplayıcısını etkin kılar
- gc_enabled — Döngüsel gönderim toplayıcısının durumunu döndürür
- gc_mem_caches — Zend Motoru bellek yöneticisi tarafından kullanılan belleği geri kazanır
- gc_status — Çöp toplayıcı hakkında bilgi döndürür
- get_cfg_var — Belirtilen PHP yönergesinin değerini döndürür
- get_current_user — PHP betiğinin sahibininin kullanıcı ismini döndürür
- get_defined_constants — Tüm sabitlerin isimlerini ve değerlerini içeren bir ilişkisel dizi döndürür
- get_extension_funcs — Bir eklentinin tüm işlevlerinin isimlerini içeren bir dizi döndürür
- get_include_path — include_path yönergesinin değerini döndürür
- get_included_files — Betiğe dahil edilen dosyaların isimlerini içeren bir dizi döndürür
- get_loaded_extensions — Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
- get_magic_quotes_gpc — magic_quotes_gpc yönergesinin değerini döndürür
- get_magic_quotes_runtime — magic_quotes_runtime yönergesinin çalışma anı değerini döndürür
- get_required_files — get_included_files işlevinin takma adıdır
- get_resources — Etkin özkaynakları döndürür
- getenv — Ortam değişkenlerinden birinin veya tümünün değerini döndürür
- getlastmod — Çalışan betiğin son değişiklik zamanını döndürür
- getmygid — PHP betiğinin sahibinin grup kimliğini döndürür
- getmyinode — Çalışan betiğin dosya düğümü numarasını döndürür
- getmypid — PHP'nin süreç kimliğini (PID) döndürür
- getmyuid — PHP betiğinin sahibinin kullanıcı kimliğini döndürür
- getopt — Komut satırı bağımsız değişkenleri listesinden seçenekleri döndürür
- getrusage — Geçerli özkaynak kullanımlarını döndürür
- ini_alter — ini_set işlevinin takma adıdır
- ini_get — Bir yapılandırma yönergesinin değerini döndürür
- ini_get_all — Tüm yapılandırma yönergelerini döndürür
- ini_parse_quantity — Get interpreted size from ini shorthand syntax
- ini_restore — Bir yapılandırma yönergesine eski değerini atar
- ini_set — Bir yapılandırma yönergesine değer atar
- memory_get_peak_usage — PHP'ye ayrılan belleğin azami miktarını döndürür
- memory_get_usage — PHP'ye ayrılan belleğin miktarını döndürür
- memory_reset_peak_usage — Reset the peak memory usage
- php_ini_loaded_file — Yüklü php.ini dosyasının dosya yolunu döndürür
- php_ini_scanned_files — Ek ini dizininden ayrıştırılan dosyaların listesi ile döner
- php_sapi_name — HTTP sunucusu ile PHP arasındaki arayüzün türünü döndürür
- php_uname — PHP'nin çalıştığı işletim sistemi hakkında bilgi döndürür
- phpcredits — PHP'ya katkıda bulunanları gösterir
- phpinfo — PHP yapılandırması hakkında bilgi çıktılar
- phpversion — Çalışan PHP'nin sürümünü döndürür
- putenv — Bir ortam değişkenine değer atar
- restore_include_path — include_path yönergesini eski değerine ayarlar
- set_include_path — include_path yönergesinin çalışma anı değerini belirler
- set_time_limit — Azami çalıştırma süresini sınırlar
- sys_get_temp_dir — Geçici dosyalar için kullanılan dizini döndürür
- version_compare — PHP standardına uygun hale getirilmiş iki sürüm numarası dizgesini karşılaştırır
- zend_thread_id — Geçerli evre için eşsiz bir betimleyici döndürür
- zend_version — Zend motorunun sürümünü döndürür

- Yapılandırma/Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- PHP Seçenek/Bilgi İşlevleri
  - assert — Savın doğruluğuna bakar
  - assert_options — Çeşitli kararlılık denetim seçeneklerini açar/kapar
  - cli_get_process_title — Geçerli sürecin başlığını döndürür
  - cli_set_process_title — Geçerli sürece başlık tanımlar
  - dl — Belirtilen PHP eklentisini çalışma anında yükler
  - extension_loaded — Belirtilen eklenti yüklü mü diye bakar
  - gc_collect_cycles — Çöp döngülerin toplanması için zorlar
  - gc_disable — Döngüsel gönderim toplayıcısını etkisiz kılar
  - gc_enable — Döngüsel gönderim toplayıcısını etkin kılar
  - gc_enabled — Döngüsel gönderim toplayıcısının durumunu döndürür
  - gc_mem_caches — Zend Motoru bellek yöneticisi tarafından kullanılan belleği geri kazanır
  - gc_status — Çöp toplayıcı hakkında bilgi döndürür
  - get_cfg_var — Belirtilen PHP yönergesinin değerini döndürür
  - get_current_user — PHP betiğinin sahibininin kullanıcı ismini döndürür
  - get_defined_constants — Tüm sabitlerin isimlerini ve değerlerini içeren bir ilişkisel dizi döndürür
  - get_extension_funcs — Bir eklentinin tüm işlevlerinin isimlerini içeren bir dizi döndürür
  - get_include_path — include_path yönergesinin değerini döndürür
  - get_included_files — Betiğe dahil edilen dosyaların isimlerini içeren bir dizi döndürür
  - get_loaded_extensions — Derlenmiş ve yüklenmiş tüm modüllerin isimlerini içeren bir dizi döndürür
  - get_magic_quotes_gpc — magic_quotes_gpc yönergesinin değerini döndürür
  - get_magic_quotes_runtime — magic_quotes_runtime yönergesinin çalışma anı değerini döndürür
  - get_required_files — get_included_files işlevinin takma adıdır
  - get_resources — Etkin özkaynakları döndürür
  - getenv — Ortam değişkenlerinden birinin veya tümünün değerini döndürür
  - getlastmod — Çalışan betiğin son değişiklik zamanını döndürür
  - getmygid — PHP betiğinin sahibinin grup kimliğini döndürür
  - getmyinode — Çalışan betiğin dosya düğümü numarasını döndürür
  - getmypid — PHP'nin süreç kimliğini (PID) döndürür
  - getmyuid — PHP betiğinin sahibinin kullanıcı kimliğini döndürür
  - getopt — Komut satırı bağımsız değişkenleri listesinden seçenekleri döndürür
  - getrusage — Geçerli özkaynak kullanımlarını döndürür
  - ini_alter — ini_set işlevinin takma adıdır
  - ini_get — Bir yapılandırma yönergesinin değerini döndürür
  - ini_get_all — Tüm yapılandırma yönergelerini döndürür
  - ini_parse_quantity — Get interpreted size from ini shorthand syntax
  - ini_restore — Bir yapılandırma yönergesine eski değerini atar
  - ini_set — Bir yapılandırma yönergesine değer atar
  - memory_get_peak_usage — PHP'ye ayrılan belleğin azami miktarını döndürür
  - memory_get_usage — PHP'ye ayrılan belleğin miktarını döndürür
  - memory_reset_peak_usage — Reset the peak memory usage
  - php_ini_loaded_file — Yüklü php.ini dosyasının dosya yolunu döndürür
  - php_ini_scanned_files — Ek ini dizininden ayrıştırılan dosyaların listesi ile döner
  - php_sapi_name — HTTP sunucusu ile PHP arasındaki arayüzün türünü döndürür
  - php_uname — PHP'nin çalıştığı işletim sistemi hakkında bilgi döndürür
  - phpcredits — PHP'ya katkıda bulunanları gösterir
  - phpinfo — PHP yapılandırması hakkında bilgi çıktılar
  - phpversion — Çalışan PHP'nin sürümünü döndürür
  - putenv — Bir ortam değişkenine değer atar
  - restore_include_path — include_path yönergesini eski değerine ayarlar
  - set_include_path — include_path yönergesinin çalışma anı değerini belirler
  - set_time_limit — Azami çalıştırma süresini sınırlar
  - sys_get_temp_dir — Geçici dosyalar için kullanılan dizini döndürür
  - version_compare — PHP standardına uygun hale getirilmiş iki sürüm numarası dizgesini karşılaştırır
  - zend_thread_id — Geçerli evre için eşsiz bir betimleyici döndürür
  - zend_version — Zend motorunun sürümünü döndürür

# Interactive PHP Debugger

# Giriş

Implemented as a SAPI module, phpdbg can exert complete control over the environment without impacting the functionality or performance of your code.

phpdbg aims to be a lightweight, powerful, easy to use debugging platform for PHP. It offers the following features:

- Step-Through Debugging
- Flexible Breakpoints (Class Method, Function, File:Line, Address, Opcode)
- Easy Access to PHP with built-in eval()
- Userland API
- SAPI Agnostic - Easily Integrated
- PHP Configuration File Support
- JIT Super Globals - Set Your Own !!
- Optional readline Support - Comfortable Terminal Operation
- Easy Operation - See Help :)

Command line options
Option | Example Argument | Description
--- | --- | ---
-c | -c/my/php.ini | Set php.ini file to load
-d | -dmemory_limit=4G | Set a php.ini directive
-n |  | Disable default php.ini
-q |  | Suppress welcome banner
-v |  | Enable oplog output
-b |  | Disable color
-i | -imy.init | Set .phpdbginit file
-I |  | Ignore default .phpdbginit
-O | -Omy.oplog | Set oplog output file
-r |  | Run execution context
-rr |  | Run execution context and quit after execution (not respecting breakpoints)
-e |  | Generate extended information for debugger/profiler
-E |  | Enable step through eval, careful!
-s | -s=, -s=foo | Read code to execute from stdin with an optional delimiter
-S | -Scli | Override SAPI name, careful!
-l | -l4000 | Setup remote console ports
-a | -a192.168.0.3 | Setup remote console bind address
-x |  | Enable xml output (instead of normal text output)
-p | -p, -p=func, -p* | Output opcodes and quit
-h |  | Print the help overview
-V |  | Print version number
-- | -- arg1 arg2 | Use to delimit phpdbg arguments and php $argv; append any $argv argument after it

# Yapılandırma/Kurulum

## İçindekiler

- Çalışma Anı Yapılandırması

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

phpdbg Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
phpdbg.eol | 2 | `INI_ALL` | Removed as of PHP 8.1.0
phpdbg.path |  | 6 | Removed as of PHP 8.1.0

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`phpdbg.eol` mixed

  The kind of line ending to use for output. For setting the value, one of the string aliases must be used.

  int Value | string Alias
  --- | ---
  `0` | `CRLF`, `crlf`, `DOS`, `dos`
  `1` | `LF`, `lf`, `UNIX`, `unix`
  `2` | `CR`, `cr`, `MAC`, `mac`

`phpdbg.path` string

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`PHPDBG_VERSION` (string)
`PHPDBG_FILE` (int)
  Removed as of PHP 7.3.0.
`PHPDBG_METHOD` (int)
  Removed as of PHP 7.3.0.
`PHPDBG_LINENO` (int)
  Removed as of PHP 7.3.0.
`PHPDBG_FUNC` (int)
  Removed as of PHP 7.3.0.
`PHPDBG_COLOR_PROMPT` (int)
`PHPDBG_COLOR_NOTICE` (int)
`PHPDBG_COLOR_ERROR` (int)

# phpdbg İşlevleri

# phpdbg_break_file

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

phpdbg_break_file — Inserts a breakpoint at a line in a file

### Açıklama

function phpdbg_break_file(string `$file`, int `$line`): void

Insert a breakpoint at the given `line` in the given `file`.

### Bağımsız Değişkenler

`file`
  The name of the file.
`line`
  The line number.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_break_function() - Inserts a breakpoint at entry to a function
- phpdbg_break_method() - Inserts a breakpoint at entry to a method
- phpdbg_break_next() - Inserts a breakpoint at the next opcode
- phpdbg_clear() - Clears all breakpoints

# phpdbg_break_function

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

phpdbg_break_function — Inserts a breakpoint at entry to a function

### Açıklama

function phpdbg_break_function(string `$function`): void

Insert a breakpoint at the entry to the given `function`.

### Bağımsız Değişkenler

`function`
  The name of the function.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_break_file() - Inserts a breakpoint at a line in a file
- phpdbg_break_method() - Inserts a breakpoint at entry to a method
- phpdbg_break_next() - Inserts a breakpoint at the next opcode
- phpdbg_clear() - Clears all breakpoints

# phpdbg_break_method

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

phpdbg_break_method — Inserts a breakpoint at entry to a method

### Açıklama

function phpdbg_break_method(string `$class`, string `$method`): void

Insert a breakpoint at the entry to the given `method` of the given `class`.

### Bağımsız Değişkenler

`class`
  The name of the class.
`method`
  The name of the method.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_break_file() - Inserts a breakpoint at a line in a file
- phpdbg_break_function() - Inserts a breakpoint at entry to a function
- phpdbg_break_next() - Inserts a breakpoint at the next opcode
- phpdbg_clear() - Clears all breakpoints

# phpdbg_break_next

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

phpdbg_break_next — Inserts a breakpoint at the next opcode

### Açıklama

function phpdbg_break_next(): void

Insert a breakpoint at the next opcode.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_break_file() - Inserts a breakpoint at a line in a file
- phpdbg_break_function() - Inserts a breakpoint at entry to a function
- phpdbg_break_method() - Inserts a breakpoint at entry to a method
- phpdbg_clear() - Clears all breakpoints

# phpdbg_clear

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

phpdbg_clear — Clears all breakpoints

### Açıklama

function phpdbg_clear(): void

Clear all breakpoints that have been set, either via one of the phpdbg_break_*() functions or interactively in the console.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_break_file() - Inserts a breakpoint at a line in a file
- phpdbg_break_function() - Inserts a breakpoint at entry to a function
- phpdbg_break_method() - Inserts a breakpoint at entry to a method
- phpdbg_break_next() - Inserts a breakpoint at the next opcode

# phpdbg_color

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

phpdbg_color — Sets the color of certain elements

### Açıklama

function phpdbg_color(int `$element`, string `$color`): void

Set the `color` of the given `element`.

### Bağımsız Değişkenler

`element`
  One of the `PHPDBG_COLOR_*` constants.
`color`
  The name of the color. One of `white`, `red`, `green`, `yellow`, `blue`, `purple`, `cyan` or `black`, optionally with either a trailing `-bold` or `-underline`, for instance, `white-bold` or `green-underline`.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_prompt() - Sets the command prompt

# phpdbg_end_oplog

(PHP 7, PHP 8)

phpdbg_end_oplog — Ends an oplog

### Açıklama

function phpdbg_end_oplog(array `$options` = []): ?array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`options`

### Dönen Değerler

# phpdbg_exec

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

phpdbg_exec — Attempts to set the execution context

### Açıklama

function phpdbg_exec(string `$context`): string|bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`context`

### Dönen Değerler

If the execution context was set previously it is returned. If the execution context was not set previously `true` is returned. If the request to set the context fails, `false` is returned, and an `E_WARNING` raised.

# phpdbg_get_executable

(PHP 7, PHP 8)

phpdbg_get_executable — Gets executable

### Açıklama

function phpdbg_get_executable(array `$options` = []): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`options`

### Dönen Değerler

# phpdbg_prompt

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

phpdbg_prompt — Sets the command prompt

### Açıklama

function phpdbg_prompt(string `$string`): void

Set the command prompt to the given `string`.

### Bağımsız Değişkenler

`string`
  The string to use as command prompt.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- phpdbg_color() - Sets the color of certain elements

# phpdbg_start_oplog

(PHP 7, PHP 8)

phpdbg_start_oplog — Starts an oplog

### Açıklama

function phpdbg_start_oplog(): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- phpdbg_break_file — Inserts a breakpoint at a line in a file
- phpdbg_break_function — Inserts a breakpoint at entry to a function
- phpdbg_break_method — Inserts a breakpoint at entry to a method
- phpdbg_break_next — Inserts a breakpoint at the next opcode
- phpdbg_clear — Clears all breakpoints
- phpdbg_color — Sets the color of certain elements
- phpdbg_end_oplog — Ends an oplog
- phpdbg_exec — Attempts to set the execution context
- phpdbg_get_executable — Gets executable
- phpdbg_prompt — Sets the command prompt
- phpdbg_start_oplog — Starts an oplog

- Yapılandırma/Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- phpdbg İşlevleri
  - phpdbg_break_file — Inserts a breakpoint at a line in a file
  - phpdbg_break_function — Inserts a breakpoint at entry to a function
  - phpdbg_break_method — Inserts a breakpoint at entry to a method
  - phpdbg_break_next — Inserts a breakpoint at the next opcode
  - phpdbg_clear — Clears all breakpoints
  - phpdbg_color — Sets the color of certain elements
  - phpdbg_end_oplog — Ends an oplog
  - phpdbg_exec — Attempts to set the execution context
  - phpdbg_get_executable — Gets executable
  - phpdbg_prompt — Sets the command prompt
  - phpdbg_start_oplog — Starts an oplog

# runkit7

# Giriş

The runkit7 extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables.

This package is a fork of the » runkit package providing PHP 7 support.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

Modifying Constants, Functions, Classes, and Methods as well as Custom Superglobals works with all releases of PHP 7. No special requirements are necessary.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/runkit7.

Bu PECL eklentisi için Windows kütüphaneleri (DLL dosyaları) PECL sitesinde mevcuttur.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Runkit Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
runkit.superglobal | "" | `INI_PERDIR` |
runkit.internal_override | "0" | `INI_SYSTEM` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`runkit.superglobal` string
  Comma-separated list of variable names to be treated as superglobals. This value should be set in the systemwide php.ini file, but may work in perdir configuration contexts depending on your SAPI.

  Örnek 1 Custom Superglobals with runkit.superglobal=_FOO,_BAR in php.ini

      <?php
      function show_values() {
        echo "Foo is $_FOO\n";
        echo "Bar is $_BAR\n";
        echo "Baz is $_BAZ\n";
      }

      $_FOO = 'foo';
      $_BAR = 'bar';
      $_BAZ = 'baz';

      /* Displays foo and bar, but not baz */
      show_values();
      ?>

`runkit.internal_override` bool
  Enables ability to modify/rename/remove internal functions.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`RUNKIT7_IMPORT_FUNCTIONS` (int)
  runkit7_import() flag indicating that normal functions should be imported from the specified file.
`RUNKIT7_IMPORT_CLASS_METHODS` (int)
  runkit7_import() flag indicating that class methods should be imported from the specified file.
`RUNKIT7_IMPORT_CLASS_CONSTS` (int)
  runkit7_import() flag indicating that class constants should be imported from the specified file.
`RUNKIT7_IMPORT_CLASS_PROPS` (int)
  runkit7_import() flag indicating that class standard properties should be imported from the specified file.
`RUNKIT7_IMPORT_CLASS_STATIC_PROPS` (int)
  runkit7_import() flag indicating that class static properties should be imported from the specified file. Available since Runkit 1.0.1.
`RUNKIT7_IMPORT_CLASSES` (int)
  runkit7_import() flag representing a bitwise OR of the `RUNKIT7_IMPORT_CLASS_*` constants.
`RUNKIT7_IMPORT_OVERRIDE` (int)
  runkit7_import() flag indicating that if any of the imported functions, methods, constants, or properties already exist, they should be replaced with the new definitions. If this flag is not set, then any imported definitions which already exist will be discarded.
`RUNKIT7_ACC_RETURN_REFERENCE` (int)
  Include this flag to make the function or method being created or redeclared return a reference.
`RUNKIT7_ACC_PUBLIC` (int)
  Flag for runkit7_method_add() and runkit7_method_redefine() to make the method public.
`RUNKIT7_ACC_PROTECTED` (int)
  Flag for runkit7_method_add() and runkit7_method_redefine() to make the method protected.
`RUNKIT7_ACC_PRIVATE` (int)
  Flag for runkit7_method_add() and runkit7_method_redefine() to make the method private.
`RUNKIT7_ACC_STATIC` (int)
  Flag for runkit7_method_add() and runkit7_method_redefine() to make the method static.
`RUNKIT7_FEATURE_MANIPULATION` (int)
  Equal to 1 if runtime manipulation is enabled, and 0 otherwise.
`RUNKIT7_FEATURE_SUPERGLOBALS` (int)
  Equal to 1 if custom superglobals are enabled, and 0 otherwise.
`RUNKIT7_FEATURE_SANDBOX` (int)
  Always 0, it's impractical to implement the sandbox feature in php 7.

# runkit7 İşlevleri

# runkit7_constant_add

(PECL runkit7 >= Unknown)

runkit7_constant_add — Similar to define(), but allows defining in class definitions as well

### Açıklama

function runkit7_constant_add(string `$constant_name`, mixed `$value`, int `$newVisibility` = ?): bool

### Bağımsız Değişkenler

`constant_name`
  Name of constant to declare. Either a string to indicate a global constant, or `classname::constname` to indicate a class constant.
`value`
  NULL, Bool, Long, Double, String, Array, or Resource value to store in the new constant.
`newVisibility`
  Visibility of the constant, for class constants. Public by default. One of the `RUNKIT7_ACC_*` constants.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- define() - Bir isimli sabit tanımlar
- runkit7_constant_redefine() - Redefine an already defined constant
- runkit7_constant_remove() - Remove/Delete an already defined constant

# runkit7_constant_redefine

(PECL runkit7 >= Unknown)

runkit7_constant_redefine — Redefine an already defined constant

### Açıklama

function runkit7_constant_redefine(string `$constant_name`, mixed `$value`, int `$new_visibility` = ?): bool

### Bağımsız Değişkenler

`constant_name`
  Constant to redefine. Either the name of a global constant, or `classname::constname` indicating class constant.
`value`
  Value to assign to the constant.
`new_visibility`
  The new visibility of the constant, for class constants. Unchanged by default. One of the `RUNKIT7_ACC_*` constants.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- runkit7_constant_add() - Similar to define(), but allows defining in class definitions as well
- runkit7_constant_remove() - Remove/Delete an already defined constant

# runkit7_constant_remove

(PECL runkit7 >= Unknown)

runkit7_constant_remove — Remove/Delete an already defined constant

### Açıklama

function runkit7_constant_remove(string `$constant_name`): bool

### Bağımsız Değişkenler

`constant_name`
  Name of the constant to remove. Either the name of a global constant, or `classname::constname` indicating a class constant.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- define() - Bir isimli sabit tanımlar
- runkit7_constant_add() - Similar to define(), but allows defining in class definitions as well
- runkit7_constant_redefine() - Redefine an already defined constant

# runkit7_function_add

(PECL runkit7 >= Unknown)

runkit7_function_add — Add a new function, similar to create_function()

### Açıklama

function runkit7_function_add(
string `$function_name`,
string `$argument_list`,
string `$code`,
bool `$return_by_reference` = `null`,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool
function runkit7_function_add(
string `$function_name`,
Closure `$closure`,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool

### Bağımsız Değişkenler

`function_name`
  Name of the function to be created
`argument_list`
  Comma separated argument list
`code`
  Code making up the function
`closure`
  A closure that defines the function.
`return_by_reference`
  Whether the function should return by reference.
`doc_comment`
  The doc comment of the function.
`return_type`
  The return type of the function.
`is_strict`
  Whether the function should behave as if it were declared in a file with `strict_types=1`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 A runkit7_function_add() example

    <?php
    runkit7_function_add('testme','$a,$b','echo "The value of a is $a\n"; echo "The value of b is $b\n";');
    testme(1,2);
    ?>

Yukarıdaki örneğin çıktısı:

    The value of a is 1
    The value of b is 2

### Ayrıca Bakınız

- create_function() - Kod dizgesini değerlendirerek dinamik olarak bir işlev oluşturur
- runkit7_function_redefine() - Replace a function definition with a new implementation
- runkit7_function_copy() - Copy a function to a new function name
- runkit7_function_rename() - Change a function's name
- runkit7_function_remove() - Remove a function definition
- runkit7_method_add() - Dynamically adds a new method to a given class

# runkit7_function_copy

(PECL runkit7 >= Unknown)

runkit7_function_copy — Copy a function to a new function name

### Açıklama

function runkit7_function_copy(string `$source_name`, string `$target_name`): bool

### Bağımsız Değişkenler

`source_name`
  Name of the existing function
`target_name`
  Name of the new function to copy the definition to

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 A runkit7_function_copy() example

    <?php
    function original() {
      echo "In a function\n";
    }
    runkit7_function_copy('original','duplicate');
    original();
    duplicate();
    ?>

Yukarıdaki örneğin çıktısı:

    In a function
    In a function

### Ayrıca Bakınız

- runkit7_function_add() - Add a new function, similar to create_function
- runkit7_function_redefine() - Replace a function definition with a new implementation
- runkit7_function_rename() - Change a function's name
- runkit7_function_remove() - Remove a function definition

# runkit7_function_redefine

(PECL runkit7 >= Unknown)

runkit7_function_redefine — Replace a function definition with a new implementation

### Açıklama

function runkit7_function_redefine(
string `$function_name`,
string `$argument_list`,
string `$code`,
bool `$return_by_reference` = `null`,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool
function runkit7_function_redefine(
string `$function_name`,
Closure `$closure`,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool

> Bilginize: Öntanımlı olarak, sadece kullanıcı alanı işlevler kaldırılabilir, adı değişebilir ve değişikliğe uğrayabilir. Dahili işlevleri geçersizleştirmek için php.ini içindeki `runkit.internal_override` seçeneği etkinleştirilmelidir.

### Bağımsız Değişkenler

`function_name`
  Name of function to redefine
`argument_list`
  New list of arguments to be accepted by function
`code`
  New code implementation
`closure`
  A closure that defines the function.
`return_by_reference`
  Whether the function should return by reference.
`doc_comment`
  The doc comment of the function.
`return_type`
  The return type of the function.
`is_strict`
  Whether the function behaves as if it was declared in a file with `strict_types=1`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 A runkit7_function_redefine() example

    <?php
    function testme() {
      echo "Original Testme Implementation\n";
    }
    testme();
    runkit7_function_redefine('testme','','echo "New Testme Implementation\n";');
    testme();
    ?>

Yukarıdaki örneğin çıktısı:

    Original Testme Implementation
    New Testme Implementation

### Ayrıca Bakınız

- runkit7_function_add() - Add a new function, similar to create_function
- runkit7_function_copy() - Copy a function to a new function name
- runkit7_function_rename() - Change a function's name
- runkit7_function_remove() - Remove a function definition
- runkit7_method_redefine() - Dynamically changes the code of the given method

# runkit7_function_remove

(PECL runkit7 >= Unknown)

runkit7_function_remove — Remove a function definition

### Açıklama

function runkit7_function_remove(string `$function_name`): bool

> Bilginize: Öntanımlı olarak, sadece kullanıcı alanı işlevler kaldırılabilir, adı değişebilir ve değişikliğe uğrayabilir. Dahili işlevleri geçersizleştirmek için php.ini içindeki `runkit.internal_override` seçeneği etkinleştirilmelidir.

### Bağımsız Değişkenler

`function_name`
  Name of the function to be deleted

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- runkit7_function_add() - Add a new function, similar to create_function
- runkit7_function_copy() - Copy a function to a new function name
- runkit7_function_redefine() - Replace a function definition with a new implementation
- runkit7_function_rename() - Change a function's name

# runkit7_function_rename

(PECL runkit7 >= Unknown)

runkit7_function_rename — Change a function's name

### Açıklama

function runkit7_function_rename(string `$source_name`, string `$target_name`): bool

> Bilginize: Öntanımlı olarak, sadece kullanıcı alanı işlevler kaldırılabilir, adı değişebilir ve değişikliğe uğrayabilir. Dahili işlevleri geçersizleştirmek için php.ini içindeki `runkit.internal_override` seçeneği etkinleştirilmelidir.

### Bağımsız Değişkenler

`source_name`
  Current function name
`target_name`
  New function name

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- runkit7_function_add() - Add a new function, similar to create_function
- runkit7_function_copy() - Copy a function to a new function name
- runkit7_function_redefine() - Replace a function definition with a new implementation
- runkit7_function_remove() - Remove a function definition

# runkit7_import

(PECL runkit7 >= Unknown)

runkit7_import — Process a PHP file importing function and class definitions, overwriting where appropriate

Uyarı

This feature has been removed in PECL runkit7 4.0.0.

### Açıklama

function runkit7_import(string `$filename`, int `$flags` = ?): bool

Similar to include. However, any code residing outside of a function or class is simply ignored. Additionally, depending on the value of `flags`, any functions or classes which already exist in the currently running environment may be automatically overwritten by their new definitions.

### Bağımsız Değişkenler

`filename`
  Filename to import function and class definitions from
`flags`
  Bitwise OR of the `RUNKIT7_IMPORT_*` family of constants.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# runkit7_method_add

(PECL runkit7 >= Unknown)

runkit7_method_add — Dynamically adds a new method to a given class

### Açıklama

function runkit7_method_add(
string `$class_name`,
string `$method_name`,
string `$argument_list`,
string `$code`,
int `$flags` = RUNKIT7_ACC_PUBLIC,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool
function runkit7_method_add(
string `$class_name`,
string `$method_name`,
Closure `$closure`,
int `$flags` = RUNKIT7_ACC_PUBLIC,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool

### Bağımsız Değişkenler

`class_name`
  The class to which this method will be added
`method_name`
  The name of the method to add
`argument_list`
  Comma-delimited list of arguments for the newly-created method
`code`
  The code to be evaluated when `method_name` is called
`closure`
  A closure that defines the method.
`flags`
  The type of method to create, can be `RUNKIT7_ACC_PUBLIC`, `RUNKIT7_ACC_PROTECTED` or `RUNKIT7_ACC_PRIVATE` optionally combined via bitwise OR with `RUNKIT7_ACC_STATIC`
`doc_comment`
  The doc comment of the method.
`return_type`
  The return type of the method.
`is_strict`
  Whether the method behaves as if it were declared in a file with `strict_types=1`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 runkit7_method_add() example

    <?php
    class Example {
        function foo() {
            echo "foo!\n";
        }
    }

    // create an Example object
    $e = new Example();

    // Add a new public method
    runkit7_method_add(
        'Example',
        'add',
        '$num1, $num2',
        'return $num1 + $num2;',
        RUNKIT7_ACC_PUBLIC
    );

    // add 12 + 4
    echo $e->add(12, 4);
    ?>

Yukarıdaki örneğin çıktısı:

    16

### Ayrıca Bakınız

- runkit7_method_copy() - Copies a method from class to another
- runkit7_method_redefine() - Dynamically changes the code of the given method
- runkit7_method_remove() - Dynamically removes the given method
- runkit7_method_rename() - Dynamically changes the name of the given method
- runkit7_function_add() - Add a new function, similar to create_function

# runkit7_method_copy

(PECL runkit7 >= Unknown)

runkit7_method_copy — Copies a method from class to another

### Açıklama

function runkit7_method_copy(
string `$destination_class`,
string `$destination_method_name`,
string `$source_class`,
string `$source_method_name` = ?
): bool

### Bağımsız Değişkenler

`destination_class`
  Destination class for copied method
`destination_method_name`
  Destination method name
`source_class`
  Source class of the method to copy
`source_method_name`
  Name of the method to copy from the source class. If this parameter is omitted, the value of `destination_method_name` is assumed.

### Dönen Değerler

### Örnekler

Örnek 1 runkit7_method_copy() example

    <?php
    class Foo {
        function example() {
            return "foo!\n";
        }
    }

    class Bar {
        // initially, no methods
    }

    // copy the example() method from the Foo class to the Bar class, as baz()
    runkit7_method_copy('Bar', 'baz', 'Foo', 'example');

    // output copied function
    echo Bar::baz();
    ?>

Yukarıdaki örneğin çıktısı:

    foo!

### Ayrıca Bakınız

- runkit7_method_add() - Dynamically adds a new method to a given class
- runkit7_method_redefine() - Dynamically changes the code of the given method
- runkit7_method_remove() - Dynamically removes the given method
- runkit7_method_rename() - Dynamically changes the name of the given method
- runkit7_function_copy() - Copy a function to a new function name

# runkit7_method_redefine

(PECL runkit7 >= Unknown)

runkit7_method_redefine — Dynamically changes the code of the given method

### Açıklama

function runkit7_method_redefine(
string `$class_name`,
string `$method_name`,
string `$argument_list`,
string `$code`,
int `$flags` = RUNKIT7_ACC_PUBLIC,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool
function runkit7_method_redefine(
string `$class_name`,
string `$method_name`,
Closure `$closure`,
int `$flags` = RUNKIT7_ACC_PUBLIC,
string `$doc_comment` = `null`,
string `$return_type` = ?,
bool `$is_strict` = ?
): bool

### Bağımsız Değişkenler

`class_name`
  The class in which to redefine the method
`method_name`
  The name of the method to redefine
`argument_list`
  Comma-delimited list of arguments for the redefined method
`code`
  The new code to be evaluated when `method_name` is called
`closure`
  A closure that defines the method.
`flags`
  The redefined method can be `RUNKIT7_ACC_PUBLIC`, `RUNKIT7_ACC_PROTECTED` or `RUNKIT7_ACC_PRIVATE` optionally combined via bitwise OR with `RUNKIT7_ACC_STATIC`
`doc_comment`
  The doc comment of the method.
`return_type`
  The return type of the method.
`is_strict`
  Whether the method behaves as if it was declared in a file with `strict_types=1`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 runkit7_method_redefine() example

    <?php
    class Example {
        function foo() {
            return "foo!\n";
        }
    }

    // create an Example object
    $e = new Example();

    // output Example::foo() (before redefine)
    echo "Before: " . $e->foo();

    // Redefine the 'foo' method
    runkit7_method_redefine(
        'Example',
        'foo',
        '',
        'return "bar!\n";',
        RUNKIT7_ACC_PUBLIC
    );

    // output Example::foo() (after redefine)
    echo "After: " . $e->foo();
    ?>

Yukarıdaki örneğin çıktısı:

    Before: foo!
    After: bar!

### Ayrıca Bakınız

- runkit7_method_add() - Dynamically adds a new method to a given class
- runkit7_method_copy() - Copies a method from class to another
- runkit7_method_remove() - Dynamically removes the given method
- runkit7_method_rename() - Dynamically changes the name of the given method
- runkit7_function_redefine() - Replace a function definition with a new implementation

# runkit7_method_remove

(PECL runkit7 >= Unknown)

runkit7_method_remove — Dynamically removes the given method

### Açıklama

function runkit7_method_remove(string `$class_name`, string `$method_name`): bool

> Bilginize: Bu işlev çalışmakta olan yöntemi değiştirmekte kullanılamaz.

### Bağımsız Değişkenler

`class_name`
  The class in which to remove the method
`method_name`
  The name of the method to remove

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 runkit7_method_remove() example

    <?php
    class Example {
        function foo() {
            return "foo!\n";
        }

        function bar() {
            return "bar!\n";
        }
    }

    // Remove the 'foo' method
    runkit7_method_remove(
        'Example',
        'foo'
    );

    echo implode(' ', get_class_methods('Example'));

    ?>

Yukarıdaki örneğin çıktısı:

    bar

### Ayrıca Bakınız

- runkit7_method_add() - Dynamically adds a new method to a given class
- runkit7_method_copy() - Copies a method from class to another
- runkit7_method_redefine() - Dynamically changes the code of the given method
- runkit7_method_rename() - Dynamically changes the name of the given method
- runkit7_function_remove() - Remove a function definition

# runkit7_method_rename

(PECL runkit7 >= Unknown)

runkit7_method_rename — Dynamically changes the name of the given method

### Açıklama

function runkit7_method_rename(string `$class_name`, string `$source_method_name`, string `$target_method_name`): bool

> Bilginize: Bu işlev çalışmakta olan yöntemi değiştirmekte kullanılamaz.

### Bağımsız Değişkenler

`class_name`
  The class in which to rename the method
`source_method_name`
  The name of the method to rename
`target_method_name`
  The new name to give to the renamed method

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 runkit7_method_rename() example

    <?php
    class Example {
        function foo() {
            return "foo!\n";
        }
    }

    // Rename the 'foo' method to 'bar'
    runkit7_method_rename(
        'Example',
        'foo',
        'bar'
    );

    // output renamed function
    echo (new Example)->bar();
    ?>

Yukarıdaki örneğin çıktısı:

    foo!

### Ayrıca Bakınız

- runkit7_method_add() - Dynamically adds a new method to a given class
- runkit7_method_copy() - Copies a method from class to another
- runkit7_method_redefine() - Dynamically changes the code of the given method
- runkit7_method_remove() - Dynamically removes the given method
- runkit7_function_rename() - Change a function's name

# runkit7_object_id

(PECL runkit7 >= Unknown)

runkit7_object_id — Return the integer object handle for given object

### Açıklama

function runkit7_object_id(object `$obj`): int

This function is equivalent to spl_object_id().

This function returns a unique identifier for the object. The object id is unique for the lifetime of the object. Once the object is destroyed, its id may be reused for other objects. This behavior is similar to spl_object_hash().

### Bağımsız Değişkenler

`obj`
  Any object.

### Dönen Değerler

An integer identifier that is unique for each currently existing object and is always the same for each object.

### Notlar

> Bilginize: When an object is destroyed, its id may be reused for other objects.

### Ayrıca Bakınız

- spl_object_id() - Return the integer object handle for given object

# runkit7_superglobals

(PECL runkit7 >= Unknown)

runkit7_superglobals — Return numerically indexed array of registered superglobals

### Açıklama

function runkit7_superglobals(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a numerically indexed array of the currently registered superglobals. i.e. _GET, _POST, _REQUEST, _COOKIE, _SESSION, _SERVER, _ENV, _FILES

### Ayrıca Bakınız

- Variable Scope

# runkit7_zval_inspect

(PECL runkit7 >= Unknown)

runkit7_zval_inspect — Returns information about the passed in value with data types, reference counts, etc

### Açıklama

function runkit7_zval_inspect(string `$value`): array

### Bağımsız Değişkenler

`value`
  The value to return the representation of

### Dönen Değerler

The array returned by this function contains the following elements:

- `address`
- `refcount` (optional)
- `is_ref` (optional)
- `type`

### Örnekler

Örnek 1 runkit7_zval_inspect() example

    <?php

    $var = new DateTime();
    var_dump(runkit7_zval_inspect($var));

    $var = 1;
    var_dump(runkit7_zval_inspect($var));
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      ["address"]=>
      string(14) "0x7f45ab21b1e0"
      ["refcount"]=>
      int(2)
      ["is_ref"]=>
      bool(false)
      ["type"]=>
      int(8)
    }

    array(2) {
      ["address"]=>
      string(14) "0x7f45ab21b1e0"
      ["type"]=>
      int(4)
    }

### Ayrıca Bakınız

- References Explained
- » References Explained (by Derick Rethans)

## İçindekiler

- runkit7_constant_add — Similar to define(), but allows defining in class definitions as well
- runkit7_constant_redefine — Redefine an already defined constant
- runkit7_constant_remove — Remove/Delete an already defined constant
- runkit7_function_add — Add a new function, similar to create_function
- runkit7_function_copy — Copy a function to a new function name
- runkit7_function_redefine — Replace a function definition with a new implementation
- runkit7_function_remove — Remove a function definition
- runkit7_function_rename — Change a function's name
- runkit7_import — Process a PHP file importing function and class definitions, overwriting where appropriate
- runkit7_method_add — Dynamically adds a new method to a given class
- runkit7_method_copy — Copies a method from class to another
- runkit7_method_redefine — Dynamically changes the code of the given method
- runkit7_method_remove — Dynamically removes the given method
- runkit7_method_rename — Dynamically changes the name of the given method
- runkit7_object_id — Return the integer object handle for given object
- runkit7_superglobals — Return numerically indexed array of registered superglobals
- runkit7_zval_inspect — Returns information about the passed in value with data types, reference counts, etc

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- runkit7 İşlevleri
  - runkit7_constant_add — Similar to define(), but allows defining in class definitions as well
  - runkit7_constant_redefine — Redefine an already defined constant
  - runkit7_constant_remove — Remove/Delete an already defined constant
  - runkit7_function_add — Add a new function, similar to create_function
  - runkit7_function_copy — Copy a function to a new function name
  - runkit7_function_redefine — Replace a function definition with a new implementation
  - runkit7_function_remove — Remove a function definition
  - runkit7_function_rename — Change a function's name
  - runkit7_import — Process a PHP file importing function and class definitions, overwriting where appropriate
  - runkit7_method_add — Dynamically adds a new method to a given class
  - runkit7_method_copy — Copies a method from class to another
  - runkit7_method_redefine — Dynamically changes the code of the given method
  - runkit7_method_remove — Dynamically removes the given method
  - runkit7_method_rename — Dynamically changes the name of the given method
  - runkit7_object_id — Return the integer object handle for given object
  - runkit7_superglobals — Return numerically indexed array of registered superglobals
  - runkit7_zval_inspect — Returns information about the passed in value with data types, reference counts, etc

# User Operations for Zend

# Giriş

The uopz - User Operations for Zend - extension exposes Zend Engine functionality normally used at compilation and execution time in order to allow modification of the internal structures that represent PHP code, and for user code to interact with the VM.

uopz supports the following activities:

- Overloading some opcodes including ZEND_EXIT and ZEND_NEW
- Backup and restore functions and methods
- Renaming functions and methods
- Copying of functions and methods
- Deletion of functions and methods
- Redefinition of global and class constants
- Deletion of global and class constants
- Runtime composition and modification of classes

> Bilginize:

> All of the activities supported are compatible with opcache

Dikkat

PECL uopz 6.1.1 is not compatible with Xdebug >= 2.9.4. Later uopz versions are not compatible with Xdebug < 2.9.4.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

As of uopz 5.0 PHP 7.0 is required. As of uopz 5.1, PHP 7.1+ is required.

## Kurulum

uopz releases are hosted by PECL and the source code by » github, the easiest route to installation is the normal PECL route: » https://pecl.php.net/package/uopz.

Windows users can download prebuilt release binaries from the » PECL website.

As of uopz 5.0.0 the extension must be loaded as extension. Before this version it must be loaded as zend_extension.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

uopz Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
uopz.disable | "0" | `INI_SYSTEM` | Available as of uopz 5.0.2
uopz.exit | "0" | `INI_SYSTEM` | Available as of uopz 6.0.1
uopz.overloads | "1" | `INI_SYSTEM` | Available as of uopz 2.0.2. Removed as of uopz 5.0.0.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`uopz.disable` bool

  If enabled, uopz should stop having any effect on the engine.

`uopz.exit` bool

  Whether to allow the execution of exit opcodes or not. This setting can be overridden during runtime by calling uopz_allow_exit().

`uopz.overloads` bool

  Enables the ability to use uopz_overload().

> Bilginize: When running with OPcache enabled, it may be necessary to disable all OPcache optimizations (`opcache.optimization_level=0`).

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

The following opcodes are defined as constants by uopz before 5.0.0:

`ZEND_EXIT` (int)
  Invoked by exit() and die(), receives no arguments. Return boolean `true` to exit, `false` to continue
`ZEND_NEW` (int)
  Invoked by object construction, receives the class of object being created as the only argument
`ZEND_THROW` (int)
  Invoked by the throw construct, receives the class of exception being thrown as the only argument
`ZEND_FETCH_CLASS` (int)
  Invoked upon composure, receives the class the name of the class being fetched as the only argument
`ZEND_ADD_TRAIT` (int)
  Invoked upon composure, receives the class the trait is being added to as the first argument, and the name of the trait as the second argument
`ZEND_ADD_INTERFACE` (int)
  Invoked upon composure, receives the class the interface is being added to as the first argument, and the name of the interface as the second argument
`ZEND_INSTANCEOF` (int)
  Invoked by instanceof operator, receives the object being verified as the first argument, and the name of the class which that object should be as the second argument

The following constants control the VM's behaviour after a user handler is invoked, be extremely careful! These constants are removed as of uopz 5.0.0.

`ZEND_USER_OPCODE_CONTINUE` (int)
  Advance 1 opcode and continuue
`ZEND_USER_OPCODE_ENTER` (int)
  Enter into new op_array without recursion
`ZEND_USER_OPCODE_LEAVE` (int)
  Return to calling op_array within the same executor
`ZEND_USER_OPCODE_DISPATCH` (int)
  Dispatch to original opcode handler
`ZEND_USER_OPCODE_DISPATCH_TO` (int)
  Dispatch to a specific handler (OR'd with ZEND opcode constant)
`ZEND_USER_OPCODE_RETURN` (int)
  Exit from executor (return from function)

The following modifiers are registered as constants by uopz

`ZEND_ACC_PUBLIC` (int)
  Mark function as public, the default
`ZEND_ACC_PROTECTED` (int)
  Mark function as protected
`ZEND_ACC_PRIVATE` (int)
  Mark function as private
`ZEND_ACC_STATIC` (int)
  Mark function as static
`ZEND_ACC_FINAL` (int)
  Mark function as final
`ZEND_ACC_ABSTRACT` (int)
  Mark function as abstract
`ZEND_ACC_CLASS` (int)
  Dummy registered for consistency, the default kind of class entry. Removed as of uopz 5.0.0.
`ZEND_ACC_INTERFACE` (int)
  Mark class as interface. Removed as of uopz 5.0.0.
`ZEND_ACC_TRAIT` (int)
  Mark class as trait. Removed as of uopz 5.0.0.
`ZEND_ACC_FETCH` (int)
  Used for getting flags only. Removed as of uopz 5.0.0.

# Uopz İşlevleri

# uopz_add_function

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_add_function — Adds non-existent function or method

### Açıklama

function uopz_add_function(string `$function`, Closure `$handler`, int `&$flags` = ZEND_ACC_PUBLIC): bool
function uopz_add_function(
string `$class`,
string `$function`,
Closure `$handler`,
int `&$flags` = ZEND_ACC_PUBLIC,
int `&$all` = `true`
): bool

Adds a non-existent function or method.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

`handler`

  The Closure that defines the new function or method.

`flags`

  Flags to set for the new function or method.

`all`

  Whether all classes that descend from `class` will also be affected.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

uopz_add_function() throws a RuntimeException if the function or method to add already exists.

### Örnekler

Örnek 1 Basic uopz_add_function() Usage

    <?php
    uopz_add_function('foo', function () {echo 'bar';});
    foo();
    ?>

Yukarıdaki örneğin çıktısı:

    bar

### Ayrıca Bakınız

- uopz_del_function() - Deletes previously added function or method
- uopz_set_return() - Provide a return value for an existing function

# uopz_allow_exit

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_allow_exit — Allows control over disabled exit opcode

### Açıklama

function uopz_allow_exit(bool `$allow`): void

By default uopz disables the exit opcode, so exit() calls are practically ignored. uopz_allow_exit() allows to control this behavior.

### Bağımsız Değişkenler

`allow`

  Whether to allow the execution of exit opcodes or not.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 uopz_allow_exit() example

    <?php
    exit(1);
    echo 1;
    uopz_allow_exit(true);
    exit(2);
    echo 2;
    ?>

Yukarıdaki örneğin çıktısı:

    1

### Notlar

Dikkat

OPcache optimizes away dead code after unconditional exit.

### Ayrıca Bakınız

- uopz_get_exit_status() - Retrieve the last set exit status

# uopz_backup

(PECL uopz 1 >= 1.0.3, PECL uopz 2)

uopz_backup — Backup a function

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_backup(string `$function`): void
function uopz_backup(string `$class`, string `$function`): void

Backup a function at runtime, to be restored on shutdown

### Bağımsız Değişkenler

`class`

  The name of the class containing the function to backup

`function`

  The name of the function

### Dönen Değerler

### Örnekler

Örnek 1 uopz_backup() example

    <?php
    uopz_backup("fgets");
    uopz_function("fgets", function(){
        return true;
    });
    var_dump(fgets());
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

# uopz_compose

(PECL uopz 1, PECL uopz 2)

uopz_compose — Compose a class

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_compose(
string `$name`,
array `$classes`,
array `$methods` = ?,
array `$properties` = ?,
int `$flags` = ?
): void

Creates a new class of the given name that implements, extends, or uses all of the provided classes

### Bağımsız Değişkenler

`name`

  A legal class name

`classes`

  An array of class, interface and trait names

`methods`

  An associative array of methods, values are either closures or [modifiers => closure]

`properties`

  An associative array of properties, keys are names, values are modifiers

`flags`

  Entry type, by default ZEND_ACC_CLASS

### Dönen Değerler

### Örnekler

Örnek 1 uopz_compose() example

    <?php
    class myClass {}
    trait myTrait {}
    interface myInterface {}

    uopz_compose(
        Composed::class, [
            myClass::class,
            myTrait::class,
            myInterface::class
        ], [
        "__construct" => function() {
            /* ... */
        }
    ]);

    var_dump(
     class_uses(Composed::class),
     class_parents(Composed::class),
     class_implements(Composed::class));
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["myTrait"]=>
      string(7) "myTrait"
    }
    array(1) {
      ["myClass"]=>
      string(7) "myClass"
    }
    array(1) {
      ["myInterface"]=>
      string(11) "myInterface"
    }

# uopz_copy

(PECL uopz 1 >= 1.0.4, PECL uopz 2)

uopz_copy — Copy a function

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_copy(string `$function`): Closure
function uopz_copy(string `$class`, string `$function`): Closure

Copy a function by name

### Bağımsız Değişkenler

`class`

  The name of the class containing the function to copy

`function`

  The name of the function

### Dönen Değerler

A Closure for the specified function

### Örnekler

Örnek 1 uopz_copy() example

    <?php
    $strtotime = uopz_copy('strtotime');

    uopz_function("strtotime", function($arg1, $arg2) use($strtotime) {
        /* can call original strtotime from here */
        var_dump($arg1);
    });

    var_dump(strtotime('dummy'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(5) "dummy"

# uopz_del_function

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_del_function — Deletes previously added function or method

### Açıklama

function uopz_del_function(string `$function`): bool
function uopz_del_function(string `$class`, string `$function`, int `&$all` = `true`): bool

Deletes a previously added function or method.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

`all`

  Whether all classes that descend from `class` will also be affected.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

uopz_del_function() throws a RuntimeException if the function or method to delete has not been added by uopz_add_function().

### Örnekler

Örnek 1 Basic uopz_del_function() Usage

    <?php
    uopz_add_function('foo', function () {echo 'bar';});
    var_dump(function_exists('foo'));
    uopz_del_function('foo');
    var_dump(function_exists('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

### Ayrıca Bakınız

- uopz_add_function() - Adds non-existent function or method
- uopz_unset_return() - Unsets a previously set return value for a function

# uopz_delete

(PECL uopz 1, PECL uopz 2)

uopz_delete — Delete a function

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_delete(string `$function`): void
function uopz_delete(string `$class`, string `$function`): void

Deletes a function or method

### Bağımsız Değişkenler

`class`

`function`

### Dönen Değerler

### Örnekler

Örnek 1 uopz_delete() example

    <?php
    uopz_delete("strlen");

    echo strlen("Hello World");
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    PHP Fatal error: Call to undefined function strlen() in /path/to/script.php on line 4

Örnek 2 uopz_delete() class example

    <?php
    class My {
        public static function strlen($arg) {
            return strlen($arg);
        }
    }

    uopz_delete(My::class, "strlen");

    echo My::strlen("Hello World");
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    PHP Fatal error: Call to undefined method My::strlen() in /path/to/script.php on line 10

# uopz_extend

(PECL uopz 1, PECL uopz 2, PECL uopz 5, PECL uopz 6, PECL uopz 7 < 7.1.0)

uopz_extend — Extend a class at runtime

### Açıklama

function uopz_extend(string `$class`, string `$parent`): bool

Makes `class` extend `parent`

### Bağımsız Değişkenler

`class`

  The name of the class to extend

`parent`

  The name of the class to inherit

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

As of PHP 7.4.0, uopz_extend() throws a RuntimeException, if OPcache is enabled, and the class entry of either `class` or `parent` (if it is a trait) is immutable.

### Örnekler

Örnek 1 uopz_extend() example

    <?php
    class A {}
    class B {}

    uopz_extend(A::class, B::class);

    var_dump(class_parents(A::class));
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["B"]=>
      string(1) "B"
    }

# uopz_flags

(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_flags — Get or set flags on function or class

### Açıklama

function uopz_flags(string `$function`, int `$flags` = PHP_INT_MAX): int
function uopz_flags(string `$class`, string `$function`, int `$flags` = PHP_INT_MAX): int

Get or set the flags on a class or function entry at runtime

### Bağımsız Değişkenler

`class`

  The name of a class

`function`

  The name of the function. If `class` is given and an empty string is passed as `function`, uopz_flags() gets or sets the flags of the class entry.

`flags`

  A valid set of ZEND_ACC_ flags. If omitted, uopz_flags() acts as getter.

### Dönen Değerler

If setting, returns old flags, else returns flags

### Hatalar/İstisnalar

As of PHP 7.4.0, if the parameter `flags` is passed, uopz_flags() throws a RuntimeException, if OPcache is enabled, and the class entry of `class` or the function entry of `function` is immutable.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL uopz 5.0.0 | The `flags` parameter is now optional. Formerly, `ZEND_ACC_FETCH` had to be passed to use uopz_flags() as getter.

### Örnekler

Örnek 1 uopz_flags() example

    <?php
    class Test {
        public function method() {
            return __CLASS__;
        }
    }

    $flags = uopz_flags("Test", "method");

    var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_PRIVATE));
    var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_STATIC));

    var_dump(uopz_flags("Test", "method", $flags|ZEND_ACC_STATIC|ZEND_ACC_PRIVATE));

    var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_PRIVATE));
    var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_STATIC));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    int(1234567890)
    bool(true)
    bool(true)

Örnek 2 "Unfinalize" a Class

    <?php
    final class MyClass
    {
    }

    $flags = uopz_flags(MyClass::class, '');
    uopz_flags(MyClass::class, '', $flags & ~ZEND_ACC_FINAL);
    var_dump((new ReflectionClass(MyClass::class))->isFinal());
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)

# uopz_function

(PECL uopz 1, PECL uopz 2)

uopz_function — Creates a function at runtime

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_function(string `$function`, Closure `$handler`, int `$modifiers` = ?): void
function uopz_function(
string `$class`,
string `$function`,
Closure `$handler`,
int `$modifiers` = ?
): void

Creates a function at runtime

### Bağımsız Değişkenler

`class`

  The name of the class to receive the new function

`function`

  The name of the function

`handler`

  The Closure for the function

`modifiers`

  The modifiers for the function, by default copied or ZEND_ACC_PUBLIC

### Dönen Değerler

### Örnekler

Örnek 1 uopz_function() example

    <?php
    uopz_function("my_strlen", function($arg) {
        return strlen($arg);
    });
    echo my_strlen("Hello World");
    ?>

Yukarıdaki örneğin çıktısı:

    11

Örnek 2 uopz_function() class example

    <?php
    class My {}

    uopz_function(My::class, "strlen", function($arg) {
        return strlen($arg);
    }, ZEND_ACC_STATIC);

    echo My::strlen("Hello World");
    ?>

Yukarıdaki örneğin çıktısı:

    11

# uopz_get_exit_status

(PECL uopz 5, PECL uopz , PECL uopz 7)

uopz_get_exit_status — Retrieve the last set exit status

### Açıklama

function uopz_get_exit_status(): mixed

Retrieves the last set exit status, i.e. the value passed to exit().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

This function returns the last exit status, or `null` if exit() has not been called.

### Örnekler

Örnek 1 uopz_get_exit_status() example

    <?php
    exit(123);
    echo uopz_get_exit_status();?>

Yukarıdaki örneğin çıktısı:

    123

### Notlar

Dikkat

OPcache optimizes away dead code after unconditional exit.

### Ayrıca Bakınız

- uopz_allow_exit() - Allows control over disabled exit opcode

# uopz_get_hook

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_get_hook — Gets previously set hook on function or method

### Açıklama

function uopz_get_hook(string `$function`): Closure
function uopz_get_hook(string `$class`, string `$function`): Closure

Gets the previously set hook on a function or method.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

### Dönen Değerler

Returns the previously set hook on a function or method, or `null` if no hook has been set.

### Örnekler

Örnek 1 Basic uopz_get_hook() Usage

    <?php
    function foo() {
        echo 'foo';
    }
    uopz_set_hook('foo', function () {echo 'bar';});
    var_dump(uopz_get_hook('foo'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(Closure)#2 (0) {
    }

### Ayrıca Bakınız

- uopz_set_hook() - Sets hook to execute when entering a function or method
- uopz_unset_hook() - Removes previously set hook on function or method

# uopz_get_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_get_mock — Get the current mock for a class

### Açıklama

function uopz_get_mock(string `$class`): mixed

Returns the current mock for `class`.

### Bağımsız Değişkenler

`class`

  The name of the mocked class.

### Dönen Değerler

Either a string containing the name of the mock, or an object, or `null` if no mock has been set.

### Örnekler

Örnek 1 uopz_get_mock() example

    <?php
    class A {
        public static function who() {
            echo "A";
        }
    }

    class mockA {
        public static function who() {
            echo "mockA";
        }
    }

    uopz_set_mock(A::class, mockA::class);
    echo uopz_get_mock(A::class);
    ?>

Yukarıdaki örneğin çıktısı:

    mockA

### Ayrıca Bakınız

- uopz_set_mock() - Use mock instead of class for new objects
- uopz_unset_mock() - Unset previously set mock

# uopz_get_property

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_get_property — Gets value of class or instance property

### Açıklama

function uopz_get_property(string `$class`, string `$property`): mixed
function uopz_get_property(object `$instance`, string `$property`): mixed

Gets the value of a static class property, if `class` is given, or the value of an instance property, if `instance` is given.

### Bağımsız Değişkenler

`class`

  The name of the class.

`instance`

  The object instance.

`property`

  The name of the property.

### Dönen Değerler

Returns the value of the class or instance property, or `null` if the property is not defined.

### Örnekler

Örnek 1 Basic uopz_get_property() Usage

    <?php
    class Foo {
        private static $staticBar = 10;
        private $bar = 100;
    }
    $foo = new Foo;
    var_dump(uopz_get_property('Foo', 'staticBar'));
    var_dump(uopz_get_property($foo, 'bar'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(10)
    int(100)

### Ayrıca Bakınız

- uopz_set_property() - Sets value of existing class or instance property

# uopz_get_return

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_get_return — Gets a previous set return value for a function

### Açıklama

function uopz_get_return(string `$function`): mixed
function uopz_get_return(string `$class`, string `$function`): mixed

Gets the return value of the `function` previously set by uopz_set_return().

### Bağımsız Değişkenler

`class`

  The name of the class containing the function

`function`

  The name of the function

### Dönen Değerler

The return value or Closure previously set.

### Örnekler

Örnek 1 uopz_get_return() example

    <?php
    uopz_set_return("strlen", 42);
    echo uopz_get_return("strlen");
    ?>

Yukarıdaki örneğin çıktısı:

    42

# uopz_get_static

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_get_static — Gets the static variables from function or method scope

### Açıklama

function uopz_get_static(string `$class`, string `$function`): array
function uopz_get_static(string `$function`): array

Gets the static variables from function or method scope.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

### Dönen Değerler

Returns an associative array of variable names mapped to their current values on success, or `null` if the function or method does not exist.

As of PHP 8.3.0, static initializers are either computed during compile time, or if that is not possible, only when the function or method is run the first time, in which case the value of the static variable is reported as `null` prior to the first invocation.

### Örnekler

Örnek 1 Basic uopz_get_static() Usage

    <?php
    function foo() {
        static $bar = 'baz';
    }
    var_dump(uopz_get_static('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bar"]=>
      string(3) "baz"
    }

### Ayrıca Bakınız

- ReflectionFunctionAbstract::getStaticVariables() - Duruk değişkenleri döndürür
- uopz_set_static() - Sets the static variables in function or method scope

# uopz_implement

(PECL uopz 1, PECL uopz 2, PECL uopz 5, PECL uopz 6, PECL uopz 7 < 7.1.0)

uopz_implement — Implements an interface at runtime

### Açıklama

function uopz_implement(string `$class`, string `$interface`): bool

Makes `class` implement `interface`

### Bağımsız Değişkenler

`class`

`interface`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

As of PHP 7.4.0, uopz_implement() throws a RuntimeException, if OPcache is enabled, and the class entry of `class` is immutable.

### Örnekler

Örnek 1 uopz_implement() example

    <?php
    interface myInterface {}

    class myClass {}

    uopz_implement(myClass::class, myInterface::class);

    var_dump(class_implements(myClass::class));
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["myInterface"]=>
      string(11) "myInterface"
    }

# uopz_overload

(PECL uopz 1, PECL uopz 2)

uopz_overload — Overload a VM opcode

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_overload(int `$opcode`, Callable `$callable`): void

Overloads the specified `opcode` with the user defined function

### Bağımsız Değişkenler

`opcode`

  A valid opcode, see constants for details of supported codes

`callable`

### Dönen Değerler

### Örnekler

Örnek 1 uopz_overload() example

    <?php
    uopz_overload(ZEND_EXIT, function(){});

    exit();
    echo "Hello World";
    ?>

Yukarıdaki örneğin çıktısı:

    Hello World

# uopz_redefine

(PECL uopz 1, PECL uopz 2, PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_redefine — Redefine a constant

### Açıklama

function uopz_redefine(string `$constant`, mixed `$value`): bool
function uopz_redefine(string `$class`, string `$constant`, mixed `$value`): bool

Redefines the given `constant` as `value`

### Bağımsız Değişkenler

`class`

  The name of the class containing the constant

`constant`

  The name of the constant

`value`

  The new value for the constant, must be a valid type for a constant variable

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 uopz_redefine() example

    <?php
    define("MY", 100);

    uopz_redefine("MY", 1000);

    echo MY;
    ?>

Yukarıdaki örneğin çıktısı:

    1000

# uopz_rename

(PECL uopz 1, PECL uopz 2)

uopz_rename — Rename a function at runtime

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_rename(string `$function`, string `$rename`): void
function uopz_rename(string `$class`, string `$function`, string `$rename`): void

Renames `function` to `rename`

> Bilginize:

> If both functions exist, this effectively swaps their names

### Bağımsız Değişkenler

`class`

  The name of the class containing the function

`function`

  The name of an existing function

`rename`

  The new name for the function

### Dönen Değerler

### Örnekler

Örnek 1 uopz_rename() example

    <?php
    uopz_rename("strlen", "original_strlen");

    echo original_strlen("Hello World");
    ?>

Yukarıdaki örneğin çıktısı:

    11

Örnek 2 uopz_rename() class example

    <?php
    class My {
        public function strlen($arg) {
            return strlen($arg);
        }
    }

    uopz_rename(My::class, "strlen", "original_strlen");

    echo My::original_strlen("Hello World");
    ?>

Yukarıdaki örneğin çıktısı:

    11

# uopz_restore

(PECL uopz 1 >= 1.0.3, PECL uopz 2)

uopz_restore — Restore a previously backed up function

Uyarı

uopz 5.0.0 sürümünde bu işlev PECL'de KALDIRILMIŞTIR.

### Açıklama

function uopz_restore(string `$function`): void
function uopz_restore(string `$class`, string `$function`): void

Restore a previously backed up function

### Bağımsız Değişkenler

`class`

  The name of the class containing the function to restore

`function`

  The name of the function

### Dönen Değerler

### Örnekler

Örnek 1 uopz_restore() example

    <?php
    uopz_backup("fgets");
    uopz_function("fgets", function(){
        return true;
    });
    var_dump(fgets());
    uopz_restore('fgets');
    fgets();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Warning: fgets() expects at least 1 parameter, 0 given in /path/to/script.php on line 8

# uopz_set_hook

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_hook — Sets hook to execute when entering a function or method

### Açıklama

function uopz_set_hook(string `$function`, Closure `$hook`): bool
function uopz_set_hook(string `$class`, string `$function`, Closure `$hook`): bool

Sets a hook to execute when entering a function or method.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

`hook`

  A closure to execute when entering the function or method.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Basic uopz_set_hook() Usage

    <?php
    function foo() {
        echo 'foo';
    }
    uopz_set_hook('foo', function () {echo 'bar';});
    foo();
    ?>

Yukarıdaki örneğin çıktısı:

    barfoo

### Ayrıca Bakınız

- uopz_get_hook() - Gets previously set hook on function or method
- uopz_unset_hook() - Removes previously set hook on function or method

# uopz_set_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_mock — Use mock instead of class for new objects

### Açıklama

function uopz_set_mock(string `$class`, mixed `$mock`): void

If `mock` is a string containing the name of a class then it will be instantiated instead of `class`. `mock` can also be an object.

> Bilginize:

> Only dynamic access to properties and methods will use the `mock` object. Static access still uses the original `class`. See example below.

### Bağımsız Değişkenler

`class`

  The name of the class to be mocked.

`mock`

  The mock to use in the form of a string containing the name of the class to use or an object. If a string is passed, it has to be the fully qualified class name. It is recommended to use the `::class` magic constant in this case.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL uopz 6.0.0 | Mocking static members is no longer supported by this function. uopz_redefine() and uopz_set_return(), or Componere can be used instead.

### Örnekler

Örnek 1 uopz_set_mock() example

    <?php
    class A {
        public function who() {
            echo "A";
        }
    }

    class mockA {
        public function who() {
            echo "mockA";
        }
    }

    uopz_set_mock(A::class, mockA::class);
    (new A)->who();
    ?>

Yukarıdaki örneğin çıktısı:

    mockA

Örnek 2 uopz_set_mock() example

    <?php
    class A {
        public function who() {
            echo "A";
        }
    }

    uopz_set_mock(A::class, new class {
                                public function who() {
                                    echo "mockA";
                                }
                            });
    (new A)->who();
    ?>

Yukarıdaki örneğin çıktısı:

    mockA

Örnek 3 uopz_set_mock() and static members

As of uopz 6.0.0 mocking static members is no longer supported.

    <?php
    class A {
        const CON = 'A';
        public static function who() {
            echo "A";
        }
    }

    uopz_set_mock(A::class, new class {
                                const CON = 'mockA';
                                public static function who() {
                                    echo "mockA";
                                }
                            });
    echo A::CON, PHP_EOL;
    A::who();
    ?>

Yukarıdaki örneğin çıktısı:

    A
    A

Output of the above example in uopz 5:

    mockA
    mockA

### Ayrıca Bakınız

- uopz_get_mock() - Get the current mock for a class
- uopz_unset_mock() - Unset previously set mock

# uopz_set_property

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_property — Sets value of existing class or instance property

### Açıklama

function uopz_set_property(string `$class`, string `$property`, mixed `$value`): void
function uopz_set_property(object `$instance`, string `$property`, mixed `$value`): void

Sets the value of an existing static class property, if `class` is given, or the value of an instance property (regardless whether the instance property already exists), if `instance` is given.

### Bağımsız Değişkenler

`class`

  The name of the class.

`instance`

  The object instance.

`property`

  The name of the property.

`value`

  The value to assign to the property.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Basic uopz_set_property() Usage

    <?php
    class Foo {
       private static $staticBar;
       private $bar;
       public static function testStaticBar() {
          return self::$staticBar;
       }
       public function testBar() {
          return $this->bar;
       }
    }
    $foo = new Foo;
    uopz_set_property('Foo', 'staticBar', 10);
    uopz_set_property($foo, 'bar', 100);
    var_dump(Foo::testStaticBar());
    var_dump($foo->testBar());
    ?>

Yukarıdaki örneğin çıktısı:

    int(10)

### Ayrıca Bakınız

- uopz_get_property() - Gets value of class or instance property

# uopz_set_return

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_return — Provide a return value for an existing function

### Açıklama

function uopz_set_return(string `$function`, mixed `$value`, bool `$execute` = `false`): bool
function uopz_set_return(
string `$class`,
string `$function`,
mixed `$value`,
bool `$execute` = `false`
): bool

Sets the return value of the `function` to `value`. If `value` is a Closure and `execute` is set, the Closure will be executed in place of the original function. It is possible to call the original function from the Closure.

> Bilginize:

> This function replaces uopz_rename().

### Bağımsız Değişkenler

`class`

  The name of the class containing the function

`function`

  The name of an existing function

`value`

  The value the function should return. If a Closure is provided and the execute flag is set, the Closure will be executed in place of the original function.

`execute`

  If true, and a Closure was provided as the value, the Closure will be executed in place of the original function.

### Dönen Değerler

True if succeeded, false otherwise.

### Örnekler

Örnek 1 uopz_set_return() example

    <?php
    uopz_set_return("strlen", 42);
    echo strlen("Banana");
    ?>

Yukarıdaki örneğin çıktısı:

    42

Örnek 2 uopz_set_return() example

    <?php
    uopz_set_return("strlen", function($str) { return strlen($str) * 2; }, true );
    echo strlen("Banana");
    ?>

Yukarıdaki örneğin çıktısı:

    12

Örnek 3 uopz_set_return() class example

    <?php
    class My {
        public static function strlen($arg) {
            return strlen($arg);
        }
    }
    uopz_set_return(My::class, "strlen", function($str) { return strlen($str) * 2; }, true );
    echo My::strlen("Banana");
    ?>

Yukarıdaki örneğin çıktısı:

    12

# uopz_set_static

(PECL uopz 5, PECL uopz , PECL uopz 7)

uopz_set_static — Sets the static variables in function or method scope

### Açıklama

function uopz_set_static(string `$function`, array `$static`): void
function uopz_set_static(string `$class`, string `$function`, array `$static`): void

Sets the static variables in function or method scope.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

`static`

  The associative array of variable names mapped to their values.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Basic uopz_set_static() Usage

    <?php
    function foo() {
        static $bar = 'baz';
        var_dump($bar);
    }
    uopz_set_static('foo', ['bar' => 'qux']);
    foo();
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "qux"

### Ayrıca Bakınız

- uopz_get_static() - Gets the static variables from function or method scope

# uopz_undefine

(PECL uopz 1, PECL uopz 2, PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_undefine — Undefine a constant

### Açıklama

function uopz_undefine(string `$constant`): bool
function uopz_undefine(string `$class`, string `$constant`): bool

Removes the constant at runtime

### Bağımsız Değişkenler

`class`

  The name of the class containing `constant`

`constant`

  The name of an existing constant

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 uopz_undefine() example

    <?php
    define("MY", true);

    uopz_undefine("MY");

    var_dump(defined("MY"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)

# uopz_unset_hook

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_unset_hook — Removes previously set hook on function or method

### Açıklama

function uopz_unset_hook(string `$function`): bool
function uopz_unset_hook(string `$class`, string `$function`): bool

Removes the previously set hook on a function or method.

### Bağımsız Değişkenler

`class`

  The name of the class.

`function`

  The name of the function or method.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Basic uopz_unset_hook() Usage

    <?php
    function foo() {
        echo 'foo';
    }
    uopz_set_hook('foo', function () {echo 'bar';});
    foo();
    echo PHP_EOL;
    uopz_unset_hook('foo');
    foo();
    ?>

Yukarıdaki örneğin çıktısı:

    barfoo
    foo

### Ayrıca Bakınız

- uopz_set_hook() - Sets hook to execute when entering a function or method
- uopz_get_hook() - Gets previously set hook on function or method

# uopz_unset_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_unset_mock — Unset previously set mock

### Açıklama

function uopz_unset_mock(string `$class`): void

Unsets the previously set mock for `class`.

### Bağımsız Değişkenler

`class`

  The name of the mocked class.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

A RuntimeException is thrown, if no mock was previously set for `class`.

### Örnekler

Örnek 1 uopz_unset_mock() example

    <?php
    class A {
        public static function who() {
            echo "A";
        }
    }

    class mockA {
        public static function who() {
            echo "mockA";
        }
    }

    uopz_set_mock(A::class, mockA::class);
    uopz_unset_mock(A::class);
    A::who();
    ?>

Yukarıdaki örneğin çıktısı:

    A

### Ayrıca Bakınız

- uopz_set_mock() - Use mock instead of class for new objects
- uopz_get_mock() - Get the current mock for a class

# uopz_unset_return

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_unset_return — Unsets a previously set return value for a function

### Açıklama

function uopz_unset_return(string `$function`): bool
function uopz_unset_return(string `$class`, string `$function`): bool

Unsets the return value of the `function` previously set by uopz_set_return().

### Bağımsız Değişkenler

`class`

  The name of the class containing the function

`function`

  The name of the function

### Dönen Değerler

True on success

### Örnekler

Örnek 1 uopz_unset_return() example

    <?php
    uopz_set_return("strlen", 42);
    $len = strlen("Banana");
    uopz_unset_return("strlen");
    echo $len + strlen("Banana");
    ?>

Yukarıdaki örneğin çıktısı:

    48

## İçindekiler

- uopz_add_function — Adds non-existent function or method
- uopz_allow_exit — Allows control over disabled exit opcode
- uopz_backup — Backup a function
- uopz_compose — Compose a class
- uopz_copy — Copy a function
- uopz_del_function — Deletes previously added function or method
- uopz_delete — Delete a function
- uopz_extend — Extend a class at runtime
- uopz_flags — Get or set flags on function or class
- uopz_function — Creates a function at runtime
- uopz_get_exit_status — Retrieve the last set exit status
- uopz_get_hook — Gets previously set hook on function or method
- uopz_get_mock — Get the current mock for a class
- uopz_get_property — Gets value of class or instance property
- uopz_get_return — Gets a previous set return value for a function
- uopz_get_static — Gets the static variables from function or method scope
- uopz_implement — Implements an interface at runtime
- uopz_overload — Overload a VM opcode
- uopz_redefine — Redefine a constant
- uopz_rename — Rename a function at runtime
- uopz_restore — Restore a previously backed up function
- uopz_set_hook — Sets hook to execute when entering a function or method
- uopz_set_mock — Use mock instead of class for new objects
- uopz_set_property — Sets value of existing class or instance property
- uopz_set_return — Provide a return value for an existing function
- uopz_set_static — Sets the static variables in function or method scope
- uopz_undefine — Undefine a constant
- uopz_unset_hook — Removes previously set hook on function or method
- uopz_unset_mock — Unset previously set mock
- uopz_unset_return — Unsets a previously set return value for a function

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Uopz İşlevleri
  - uopz_add_function — Adds non-existent function or method
  - uopz_allow_exit — Allows control over disabled exit opcode
  - uopz_backup — Backup a function
  - uopz_compose — Compose a class
  - uopz_copy — Copy a function
  - uopz_del_function — Deletes previously added function or method
  - uopz_delete — Delete a function
  - uopz_extend — Extend a class at runtime
  - uopz_flags — Get or set flags on function or class
  - uopz_function — Creates a function at runtime
  - uopz_get_exit_status — Retrieve the last set exit status
  - uopz_get_hook — Gets previously set hook on function or method
  - uopz_get_mock — Get the current mock for a class
  - uopz_get_property — Gets value of class or instance property
  - uopz_get_return — Gets a previous set return value for a function
  - uopz_get_static — Gets the static variables from function or method scope
  - uopz_implement — Implements an interface at runtime
  - uopz_overload — Overload a VM opcode
  - uopz_redefine — Redefine a constant
  - uopz_rename — Rename a function at runtime
  - uopz_restore — Restore a previously backed up function
  - uopz_set_hook — Sets hook to execute when entering a function or method
  - uopz_set_mock — Use mock instead of class for new objects
  - uopz_set_property — Sets value of existing class or instance property
  - uopz_set_return — Provide a return value for an existing function
  - uopz_set_static — Sets the static variables in function or method scope
  - uopz_undefine — Undefine a constant
  - uopz_unset_hook — Removes previously set hook on function or method
  - uopz_unset_mock — Unset previously set mock
  - uopz_unset_return — Unsets a previously set return value for a function

# Windows Cache for PHP

# Giriş

Windows Cache Extension for PHP is a PHP accelerator that is used to increase the speed of PHP applications running on Windows and Windows Server. Once the Windows Cache Extension for PHP is enabled and loaded by the PHP engine, PHP applications can take advantage of the functionality without any code modifications.

The Windows Cache Extension includes 5 different types of caches. The following describes the purpose of each cache type and the benefits it provides.

- PHP Opcode Cache - PHP is a script processing engine, which reads an input stream of data that contains text and/or PHP instructions and produces another stream of data, most commonly in the HTML format. This means that on a web server the PHP engine reads, parses, compiles and executes a PHP script each time that it is requested by a Web client. The reading, parsing and compilation operations put additional load on the web server's CPU and file system and thus affect the overall performance of a PHP web application. The PHP bytecode (opcode) cache is used to store the compiled script bytecode in shared memory so that it can be re-used by PHP engine for subsequent executions of the same script.

  Support for opcode caching was removed in `Wincache 2.0.0`, all users who wish to have an opcache should use the OPcache extension that is included with PHP.

- File Cache - Even with the PHP opcode cache enabled, the PHP engine has to accesses the script files on a file system. When PHP scripts are stored on a remote UNC file share, the file operations introduce a significant performance overhead. The Windows Cache Extension for PHP includes a file cache that is used to store the content of the PHP script files in shared memory, which reduces the amount of file system operations performed by PHP engine.

- Resolve File Path Cache - PHP scripts very often include or operate with files by using relative file paths. Every file path has to be normalized to an absolute file path by the PHP engine. When a PHP application uses many PHP files and accesses them by relative paths, the operation of resolving the paths may negatively impact the application's performance. The Windows Cache Extension for PHP provides a Resolve File Path cache, which is used to store the mappings between relative and absolute file paths, thereby reducing the number of path resolutions that the PHP engine has to perform.

- User Cache (available since version 1.1.0) - PHP scripts can take advantage of the shared memory cache by using the user cache API's. PHP objects and variables can be stored in the user cache and then re-used on subsequent requests. This can be used to improve performance of PHP scripts and to share the data across multiple PHP processes.

- Session Handler (available since version 1.1.0) - The WinCache session handler can be used to store the PHP session data in the shared memory cache. This avoids file system operations for reading and writing session data, which improves performance when large amount of data is stored in PHP session.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- WinCache Statistics Script
- WinCache Session Handler
- WinCache Functions Reroutes

## Gereksinimler

The extension is currently supported only on the following configurations:

Windows OS:

- Windows XP SP3 with IIS 5.1 and » FastCGI Extension
- Windows Server 2003 with IIS 6.0 and » FastCGI Extension
- Windows Vista SP1 with IIS 7.0 and FastCGI Module
- Windows Server 2008 with IIS 7.0 and FastCGI Module
- Windows 7 with IIS 7.5 and FastCGI Module
- Windows Server 2008 R2 with IIS 7.5 and FastCGI Module

PHP:

- PHP 5.2.X, Non-thread-safe build
- PHP 5.3 X86, Non-thread-safe VC9 build

> Bilginize: The WinCache Extension can only be used when IIS is configured to run PHP via FastCGI.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/wincache.

There are two packages for this extension: one package is for PHP versions 5.2.X, and the other package is for PHP 5.3.X. Select the package that is appropriate for the PHP version being used.

To install and enable the extension, follow these steps:

1. Unpack the package into some temporary location.

2. Copy the php_wincache.dll file into the PHP extensions folder. Typically this folder is called "ext" and it is located in the same folder with all PHP binary files. For example: C:\Program Files\PHP\ext.

3. Using a text editor, open the php.ini file, which is usually located in the same folder where all PHP binary files are. For example: C:\Program Files\PHP\php.ini.

4. Add the following line at the end of the php.ini file: `extension = php_wincache.dll`.

5. Save and close the php.ini file.

6. Recycle the IIS Application Pools for PHP to pick up the configuration changes. To check that the extension has been enabled, create a file called phpinfo.php with a PHP code that calls phpinfo function.

7. Save the phpinfo.php file in the root folder of a IIS web site that uses PHP, then open a browser and make a request to http://localhost/phpinfo.php. Search within the returned web page for a section called `wincache`. If the extension is enabled, then the phpinfo output will list the configuration settings provided by the WinCache.

> Bilginize: Do not forget to remove phpinfo.php file from the web site's root folder after verifying that extension has been enabled.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

The following table lists and explains the configuration settings provided by the WinCache extension:

WinCache configuration options
İsim | Öntanımlı | Minimum | Maximum | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | --- | --- | ---
wincache.fcenabled | "1" | "0" | "1" | `INI_ALL` | Available as of WinCache 1.0.0
wincache.fcenabledfilter | "NULL" | "NULL" | "NULL" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.fcachesize | "24" | "5" | "255" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.fcndetect | "1" | "0" | "1" | `INI_SYSTEM` | Available as of WinCache 1.1.0
wincache.maxfilesize | "256" | "10" | "2048" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.ocenabled | "1" | "0" | "1" | `INI_ALL` | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.ocenabledfilter | "NULL" | "NULL" | "NULL" | `INI_SYSTEM` | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.ocachesize | "96" | "15" | "255" | `INI_SYSTEM` | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.filecount | "4096" | "1024" | "16384" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.chkinterval | "30" | "0" | "300" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.ttlmax | "1200" | "0" | "7200" | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.enablecli | 0 | 0 | 1 | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.ignorelist | NULL | NULL | NULL | `INI_ALL` | Available as of WinCache 1.0.0
wincache.namesalt | NULL | NULL | NULL | `INI_SYSTEM` | Available as of WinCache 1.0.0
wincache.ucenabled | 1 | 0 | 1 | `INI_SYSTEM` | Available as of WinCache 1.1.0
wincache.ucachesize | 8 | 5 | 85 | `INI_SYSTEM` | Available as of WinCache 1.1.0
wincache.scachesize | 8 | 5 | 85 | `INI_SYSTEM` | Available as of WinCache 1.1.0
wincache.rerouteini | NULL | NULL | NULL | `INI_SYSTEM` | Available as of WinCache 1.2.0. Removed as of 1.3.7
wincache.reroute_enabled | 1 | 0 | 1 | `INI_SYSTEM`|`INI_PERDIR` | Available as of WinCache 1.3.7
wincache.srwlocks | 1 | 0 | 1 | `INI_SYSTEM` | Available as of WinCache 1.3.6.3. Removed as of 2.0.0.0
wincache.filemapdir | NULL | NULL | NULL | `INI_SYSTEM` | Available as of WinCache 1.3.7.4

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`wincache.fcenabled` bool
  Enables or disables the file cache functionality.
`wincache.fcenabledfilter` string
  Defines a comma-separated list of IIS web site identifiers where file cache should be enabled or disabled. This setting works in conjunction with `wincache.fcenabled`: if `wincache.fcenabled` is set to 1, then the sites listed in the `wincache.fcenabledfilter` will have the file cache turned off; if `wincache.fcenabled` is set to 0, then the sites listed in the `wincache.fcenabledfilter` will have the file cache turned on.
`wincache.fcachesize` int
  Defines the maximum memory size (in megabytes) that is allocated for the file cache. If the total size of all the cached files exceeds the value specified in this setting, then most stale files will be removed from the file cache.
`wincache.fcndetect` bool
  Enables or disables the file change notification detection functionality. If file change notification is supported then it will be used to refresh the opcode and file cache entries as soon as the corresponding files are modified on a file system. If file change notification is not supported, for example when using network file shares, then wincache will poll for file changes at regular time intervals specified by `wincache.chkinterval`.
`wincache.maxfilesize` int
  Defines the maximum allowed size (in kilobytes) for a single file to be cached. If a file size exceeds the specified value, the file will not be cached. This setting applies to the file cache only.
`wincache.ocenabled` bool
  Uyarı

  This option has been REMOVED as of 2.0.0.0

  Enables or disables the opcode cache functionality
`wincache.ocenabledfilter` string
  Uyarı

  This option has been REMOVED as of 2.0.0.0

  Defines a comma-separated list of IIS web site identifiers where opcode cache should be enabled or disabled. This setting works in conjunction with `wincache.ocenabled`: if `wincache.ocenabled` is set to 1, then the sites listed in the `wincache.ocenabledfilter` will have the opcode cache turned off; if `wincache.ocenabled` is set to 0, then the sites listed in the `wincache.ocenabledfilter` will have the opcode cache turned on.
`wincache.ocachesize` int
  Uyarı

  This option has been REMOVED as of 2.0.0.0

  Defines the maximum memory size (in megabytes) that is allocated for the opcode cache. If the cached opcode size exceeds the specified value, then most stale opcode will be removed from the cache. Note that the opcode cache size must be at least 3 times bigger than file cache size. If that is not the case the opcode cache size will be automatically increased.
`wincache.filecount` int
  Defines how many files are expected to be cached by the extension, so that appropriate memory size is allocated at the startup time. If the number of files exceeds the specified value, the WinCache will re-allocate more memory as needed.
`wincache.chkinterval` int
  Defines how often (in seconds) the extension checks for file changes in order to refresh the cache. Setting it to 0 will disable the refreshing of the cache. The file changes will not be reflected in the cache unless the cache entry for that file is removed by scavenger or IIS application pool is recycled or wincache_refresh_if_changed function is called.
`wincache.ttlmax` int
  Defines the maximum time to live (in seconds) for a cached entry without being used. Setting it to 0 will disable the cache scavenger, so the cached entries will never be removed from the cache during the lifetime of the IIS worker process.
`wincache.enablecli` bool
  Defines if caching is enabled when PHP is running in command line (CLI) mode.
`wincache.ignorelist` string

  Defines a list of files that should not be cached by the extension. The files list is specified by using file names only, separated by the pipe symbol - "|".

  Örnek 1 `wincache.ignorelist` example

      wincache.ignorelist = "index.php|misc.php|admin.php"

`wincache.namesalt` string
  Defines a string that will be used when naming the extension specific objects that are stored in shared memory. This is used to avoid conflicts that may be caused if other applications within an IIS worker process tries to access shared memory. The length of the namesalt string cannot exceed 8 characters.
`wincache.ucenabled` bool
  Enables or disables the user cache functionality.
`wincache.ucachesize` int
  Defines the maximum memory size in megabytes that is allocated for the user cache. If the total size of variables stored in the user cache exceeds the specified value, then the most stale variables will be removed from the cache.
`wincache.scachesize` int
  Defines the maximum memory size in megabytes that is allocated for the session cache. If the total size of data stored in the session cache exceeds the specified value, then the most stale data will be removed from the cache.
`wincache.rerouteini` string
  Uyarı

  This option has been REMOVED as of 1.3.7. See `wincache.reroute_enabled` for similar functionality as of 1.3.7.

  Specifies an absolute or a relateve path to the reroute.ini file that contains the list of PHP functions whose implementation should be replaced with the WinCache function equivalents. If a relative path is specified then it is assumed to be relative to the location of php-cgi.exe file.
`wincache.reroute_enabled` bool
  Enables or disables the rerouting of certain file I/O functions through the file cache.
`wincache.srwlocks` bool
  Uyarı

  This option has been REMOVED as of 2.0.0.0

  Enables or disables the use of shared reader/writer locks. Disabling is useful when troubleshooting deadlock conditions in WinCache.
`wincache.filemapdir` string
  Specifies an absolute path to a directory where WinCache will store the temporary files used for shared memory segments. This directory must be on the local machine and not on a networked file system. If the directory is not specified, WinCache will use the Windows System Page File for all shared memory segments.

## WinCache Statistics Script

The installation package for WinCache includes a PHP script, wincache.php, that can be used to obtain cache information and statistics.

If the WinCache extension was installed via the Microsoft Web Platform Installer, then this script is located in %SystemDrive%\Program Files\IIS\Windows Cache for PHP\. On a 64-bit version of the Windows Server operating system, the script is located in %SystemDrive%\Program Files (x86)\IIS\Windows Cache for PHP. If the extension was installed manually, then the wincache.php will be located in the same folder from which the content of the installation package was extracted.

To use wincache.php, copy it into a root folder of a Web site or into any subfolder. To protect the script, open it in any text editor and replace the values for USERNAME and PASSWORD constants. If any other IIS authentication is enabled on the server, then follow the instructions in the comments:

Örnek 1 Authentication configuration for wincache.php

    <?php
    /**
     * ======================== CONFIGURATION SETTINGS ==============================
     * If you do not want to use authentication for this page, set USE_AUTHENTICATION to 0.
     * If you use authentication then replace the default password.
     */
    define('USE_AUTHENTICATION', 1);
    define('USERNAME', 'wincache');
    define('PASSWORD', 'wincache');

    /**
     * The Basic PHP authentication will work only when IIS is configured to support
     * Anonymous Authentication' and nothing else. If IIS is configured to support/use
     * any other kind of authentication like Basic/Negotiate/Digest etc, this will not work.
     * In that case use the array below to define the names of users in your
     * domain/network/workgroup which you want to grant access to.
     */
    $user_allowed = array('DOMAIN\user1', 'DOMAIN\user2', 'DOMAIN\user3');

    /**
     * If the array contains string 'all', then all the users authenticated by IIS
     * will have access to the page. Uncomment the below line and comment above line
     * to grant access to all users who gets authenticated by IIS.
     */
    /* $user_allowed = array('all'); */

    /** ===================== END OF CONFIGURATION SETTINGS ========================== */
    ?>

> Bilginize: Always protect the wincache.php script by using either the built-in authentication or the server's authentication mechanism. Leaving this script unprotected may compromise the security of your web application and web server.

## WinCache Session Handler

The WinCache session handler (available since WinCache 1.1.0) can be used to configure PHP to store the session data in shared memory session cache. Using shared memory instead of the default file session storage helps improve performance of PHP applications that store large amount of data in session objects. Wincache session cache uses file-backed shared memory, which ensures that the session data is not lost during recycling of IIS application pools.

To configure PHP to use WinCache session handler set the php.ini setting session.save_handler to wincache. By default the Windows temporary file location is used for storing the session data. To change the location of the session file use session.save_path directive.

Örnek 1 Enabling WinCache session handler

    session.save_handler = wincache
    session.save_path = C:\inetpub\temp\session\

## WinCache Functions Reroutes

NOTE: wincache.rerouteini was removed as of WinCache 1.3.7.0. It has been replaced with automatic function reroutes. See: wincache.reroute_enabled.

The WinCache functions reroutes (available since WinCache 1.2.0, removed since WinCache 1.3.7.0) can be used to replace built-in PHP functions with their equivalents that are optimized for a particular purpose. WinCache extension includes Windows-optimized implementation of PHP file functions that may improve performance of PHP applications in cases when PHP has to access files on network shares. The optimized implementation is provided for the following functions:

- file_exists
- file_get_contents
- readfile
- is_readable
- is_writable
- is_dir
- realpath
- filesize

To configure WinCache to use the functions reroutes use the file reroute.ini that is included in WinCache installation package. Copy this file into the same directory where php.ini file is located. After that add the wincache.rerouteini setting in php.ini and specify an absolute or relative path to the reroute.ini file.

Örnek 1 Enabling WinCache functions reroutes

    wincache.rerouteini = C:\PHP\reroute.ini

> Bilginize: If WinCache functions reroutes are enabled it is recommended to increase the WinCache file cache size. This can be done by using wincache.fcachesize setting.

The reroute.ini file contains the mappings between the native PHP functions and their equivalents in WinCache. Each line in the file defines a mapping by using the following syntax:

`<PHP function name>:[<number of function parameters>]=<wincache function name>`

The example of the file is shown below. In this example the calls to PHP function file_get_contents() will be replaced with calls to wincache_file_get_contents() only if the number of parameters passed to the function is less than or equals to 2. Specifying the number of parameters is useful when replacement function does not handle all the function's parameters.

Örnek 2 Reroute.ini file content

    [FunctionRerouteList]
    file_exists=wincache_file_exists
    file_get_contents:2=wincache_file_get_contents
    readfile:2=wincache_readfile
    is_readable=wincache_is_readable
    is_writable=wincache_is_writable
    is_writeable=wincache_is_writable
    is_file=wincache_is_file
    is_dir=wincache_is_dir
    realpath=wincache_realpath
    filesize=wincache_filesize

# WinCache İşlevleri

# wincache_fcache_fileinfo

(PECL wincache >= 1.0.0)

wincache_fcache_fileinfo — Retrieves information about files cached in the file cache

### Açıklama

function wincache_fcache_fileinfo(bool `$summaryonly` = `false`): array|false

Retrieves information about file cache content and its usage.

### Bağımsız Değişkenler

`summaryonly`

  Controls whether the returned array will contain information about individual cache entries along with the file cache summary.

### Dönen Değerler

Array of meta data about file cache başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `total_cache_uptime` - total time in seconds that the file cache has been active
- `total_file_count` - total number of files that are currently in the file cache
- `total_hit_count` - number of times the files have been served from the file cache
- `total_miss_count` - number of times the files have not been found in the file cache

- `file_entries` - an array that contains the information about all the cached files:

  - `file_name` - absolute file name of the cached file
  - `add_time` - time in seconds since the file has been added to the file cache
  - `use_time` - time in seconds since the file has been accessed in the file cache
  - `last_check` - time in seconds since the file has been checked for modifications
  - `hit_count` - number of times the file has been served from the cache
  - `file_size` - size of the cached file in bytes

### Örnekler

Örnek 1 A wincache_fcache_fileinfo() example

    <pre>
    <?php
    print_r(wincache_fcache_fileinfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (   [total_cache_uptime] => 3234
        [total_file_count] => 5
        [total_hit_count] => 0
        [total_miss_count] => 1
        [file_entries] => Array
            (
                [1] => Array
                    (
                        [file_name] => c:\inetpub\wwwroot\checkcache.php
                        [add_time] => 1
                        [use_time] => 0
                        [last_check] => 1
                        [hit_count] => 1
                        [file_size] => 2435
                    )
                [2] => Array (...iterates for each cached file)
            )
    )

### Ayrıca Bakınız

- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_fcache_meminfo

(PECL wincache >= 1.0.0)

wincache_fcache_meminfo — Retrieves information about file cache memory usage

### Açıklama

function wincache_fcache_meminfo(): array|false

Retrieves information about memory usage by file cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of meta data about file cache memory usage başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `memory_total` - amount of memory in bytes allocated for the file cache
- `memory_free` - amount of free memory in bytes available for the file cache
- `num_used_blks` - number of memory blocks used by the file cache
- `num_free_blks` - number of free memory blocks available for the file cache
- `memory_overhead` - amount of memory in bytes used for the file cache internal structures

### Örnekler

Örnek 1 A wincache_fcache_meminfo() example

    <pre>
    <?php
    print_r(wincache_fcache_meminfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [memory_total] => 134217728
        [memory_free] => 131339120
        [num_used_blks] => 361
        [num_free_blks] => 3
        [memory_overhead] => 5856
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_lock

(PECL wincache >= 1.1.0)

wincache_lock — Acquires an exclusive lock on a given key

### Açıklama

function wincache_lock(string `$key`, bool `$isglobal` = `false`): bool

Obtains an exclusive lock on a given key. The execution of the current script will be blocked until the lock can be obtained. Once the lock is obtained, the other scripts that try to request the lock by using the same key will be blocked, until the current script releases the lock by using wincache_unlock().

Uyarı

Using of the wincache_lock() and wincache_unlock() can cause deadlocks when executing PHP scripts in a multi-process environment like FastCGI. Do not use these functions unless you are absolutely sure you need to use them. For the majority of the operations on the user cache it is not necessary to use these functions.

### Bağımsız Değişkenler

`key`

  Name of the key in the cache to get the lock on.

`isglobal`

  Controls whether the scope of the lock is system-wide or local. Local locks are scoped to the application pool in IIS FastCGI case or to all php processes that have the same parent process identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Using wincache_lock()

    <?php
    $fp = fopen("/tmp/lock.txt", "r+");
    if (wincache_lock(“lock_txt_lock”)) { // do an exclusive lock
        ftruncate($fp, 0); // truncate file
        fwrite($fp, "Write something here\n");
        wincache_unlock(“lock_txt_lock”); // release the lock
    } else {
        echo "Couldn't get the lock!";
    }
    fclose($fp);
    ?>

### Ayrıca Bakınız

- wincache_unlock() - Releases an exclusive lock on a given key
- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache

# wincache_ocache_fileinfo

(PECL wincache >= 1.0.0)

wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache

### Açıklama

function wincache_ocache_fileinfo(bool `$summaryonly` = `false`): array|false

Retrieves information about opcode cache content and its usage.

Uyarı

Bu işlev PHP 7.0.0'da tamamen KALDIRILMIŞTIR.

### Bağımsız Değişkenler

`summaryonly`

  Controls whether the returned array will contain information about individual cache entries along with the opcode cache summary.

### Dönen Değerler

Array of meta data about opcode cache başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `total_cache_uptime` - total time in seconds that the opcode cache has been active
- `total_file_count` - total number of files that are currently in the opcode cache
- `total_hit_count` - number of times the compiled opcode have been served from the cache
- `total_miss_count` - number of times the compiled opcode have not been found in the cache
- `is_local_cache` - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache

- `file_entries` - an array that contains the information about all the cached files:

  - `file_name` - absolute file name of the cached file
  - `add_time` - time in seconds since the file has been added to the opcode cache
  - `use_time` - time in seconds since the file has been accessed in the opcode cache
  - `last_check` - time in seconds since the file has been checked for modifications
  - `hit_count` - number of times the file has been served from the cache
  - `function_count` - number of functions in the cached file
  - `class_count` - number of classes in the cached file

### Örnekler

Örnek 1 A wincache_ocache_fileinfo() example

    <pre>
    <?php
    print_r(wincache_ocache_fileinfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [total_cache_uptime] => 17357
        [total_file_count] => 121
        [total_hit_count] => 36562
        [total_miss_count] => 201
        [file_entries] => Array
            (
                [1] => Array
                    (
                        [file_name] => c:\inetpub\wwwroot\checkcache.php
                        [add_time] => 17356
                        [use_time] => 7
                        [last_check] => 10
                        [hit_count] => 454
                        [function_count] => 0
                        [class_count] => 1
                    )
                [2] => Array (...iterates for each cached file)
            )
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_ocache_meminfo

(PECL wincache >= 1.0.0)

wincache_ocache_meminfo — Retrieves information about opcode cache memory usage

### Açıklama

function wincache_ocache_meminfo(): array|false

Retrieves information about memory usage by opcode cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of meta data about opcode cache memory usage başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `memory_total` - amount of memory in bytes allocated for the opcode cache
- `memory_free` - amount of free memory in bytes available for the opcode cache
- `num_used_blks` - number of memory blocks used by the opcode cache
- `num_free_blks` - number of free memory blocks available for the opcode cache
- `memory_overhead` - amount of memory in bytes used for the opcode cache internal structures

Uyarı

Bu işlev PHP 7.0.0'da tamamen KALDIRILMIŞTIR.

### Örnekler

Örnek 1 A wincache_ocache_meminfo() example

    <pre>
    <?php
    print_r(wincache_ocache_meminfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [memory_total] => 134217728
        [memory_free] => 112106972
        [num_used_blks] => 15469
        [num_free_blks] => 4
        [memory_overhead] => 247600
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_refresh_if_changed

(PECL wincache >= 1.0.0)

wincache_refresh_if_changed — Refreshes the cache entries for the cached files

### Açıklama

function wincache_refresh_if_changed(array `$files` = NULL): bool

Refreshes the cache entries for the files, whose names were passed in the input argument. If no argument is specified then refreshes all the entries in the cache.

### Bağımsız Değişkenler

`files`

  An array of file names for files that need to be refreshed. An absolute or relative file paths can be used.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

WinCache performs regular checks on the cached files to ensure that if any file has changed then the corresponding entry in the cache is updated. By default this check is performed every 30 seconds. If, for example, a PHP script updates another PHP script where the application's configuration settings are stored, then it may happen that after the configuration settings have been saved to a file, the application is still using old settings for some time until the cache is refreshed. In those cases it may be preferrable to refresh the cache right after the file has been changed. The following example shows how this can be done.

Örnek 1 A wincache_refresh_if_changed() example

    <?php
    $filename = 'C:\inetpub\wwwroot\config.php';
    $handle = fopen($filename, 'w+');
    if ($handle === FALSE) die('Failed to open file '.$filename.' for writing');
    fwrite($handle, '<?php $setting=something; ?>');
    fclose($handle);
    wincache_refresh_if_changed(array($filename));
    ?>

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache

# wincache_rplist_fileinfo

(PECL wincache >= 1.0.0)

wincache_rplist_fileinfo — Retrieves information about resolve file path cache

### Açıklama

function wincache_rplist_fileinfo(bool `$summaryonly` = `false`): array|false

Retrieves information about cached mappings between relative file paths and corresponding absolute file paths.

### Bağımsız Değişkenler

`summaryonly`

### Dönen Değerler

Array of meta data about the resolve file path cache başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `total_file_count` - total number of file path mappings stored in the cache

- `rplist_entries` - an array that contains the information about all the cached file paths:

  - `resolve_path` - path to a file
  - `subkey_data` - corresponding absolute path to a file

### Örnekler

Örnek 1 A wincache_rplist_fileinfo() example

    <pre>
    <?php
    print_r(wincache_rplist_fileinfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [total_file_count] => 5
        [rplist_entries] => Array
            (
                [1] => Array
                    (
                        [resolve_path] => checkcache.php
                        [subkey_data] => c:\inetpub\wwwroot|c:\inetpub\wwwroot\checkcache.php
                    )

                [2] => Array (...iterates for each cached file)
            )
    )

### Ayrıca Bakınız

- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_rplist_meminfo

(PECL wincache >= 1.0.0)

wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache

### Açıklama

function wincache_rplist_meminfo(): array|false

Retrieves information about memory usage by resolve file path cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of meta data that describes memory usage by resolve file path cache. başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `memory_total` - amount of memory in bytes allocated for the resolve file path cache
- `memory_free` - amount of free memory in bytes available for the resolve file path cache
- `num_used_blks` - number of memory blocks used by the resolve file path cache
- `num_free_blks` - number of free memory blocks available for the resolve file path cache
- `memory_overhead` - amount of memory in bytes used for the internal structures of resolve file path cache

### Örnekler

Örnek 1 A wincache_rplist_meminfo() example

    <pre>
    <?php
    print_r(wincache_rplist_meminfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [memory_total] => 9437184
        [memory_free] => 9416744
        [num_used_blks] => 23
        [num_free_blks] => 1
        [memory_overhead] => 416
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_scache_info

(PECL wincache >= 1.1.0)

wincache_scache_info — Retrieves information about files cached in the session cache

### Açıklama

function wincache_scache_info(bool `$summaryonly` = `false`): array|false

Retrieves information about session cache content and its usage.

### Bağımsız Değişkenler

`summaryonly`

  Controls whether the returned array will contain information about individual cache entries along with the session cache summary.

### Dönen Değerler

Array of meta data about session cache başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `total_cache_uptime` - total time in seconds that the session cache has been active
- `total_item_count` - total number of elements that are currently in the session cache
- `is_local_cache` - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache
- `total_hit_count` - number of times the data has been served from the cache
- `total_miss_count` - number of times the data has not been found in the cache

- `scache_entries` - an array that contains the information about all the cached items:

  - `key_name` - name of the key which is used to store the data
  - `value_type` - type of value stored by the key
  - `use_time` - time in seconds since the file has been accessed in the opcode cache
  - `last_check` - time in seconds since the file has been checked for modifications
  - `ttl_seconds` - time remaining for the data to live in the cache, 0 meaning infinite
  - `age_seconds` - time elapsed from the time data has been added in the cache
  - `hitcount` - number of times data has been served from the cache

### Örnekler

Örnek 1 A wincache_scache_info() example

    <pre>
    <?php
    print_r(wincache_scache_info());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [total_cache_uptime] => 17357
        [total_file_count] => 121
        [total_hit_count] => 36562
        [total_miss_count] => 201
        [scache_entries] => Array
            (
                [1] => Array
                    (
                        [file_name] => c:\inetpub\wwwroot\checkcache.php
                        [add_time] => 17356
                        [use_time] => 7
                        [last_check] => 10
                        [hit_count] => 454
                        [function_count] => 0
                        [class_count] => 1
                    )
                [2] => Array (...iterates for each cached file)
            )
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_scache_meminfo

(PECL wincache >= 1.1.0)

wincache_scache_meminfo — Retrieves information about session cache memory usage

### Açıklama

function wincache_scache_meminfo(): array|false

Retrieves information about memory usage by session cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of meta data about session cache memory usage başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `memory_total` - amount of memory in bytes allocated for the session cache
- `memory_free` - amount of free memory in bytes available for the session cache
- `num_used_blks` - number of memory blocks used by the session cache
- `num_free_blks` - number of free memory blocks available for the session cache
- `memory_overhead` - amount of memory in bytes used for the session cache internal structures

### Örnekler

Örnek 1 A wincache_scache_meminfo() example

    <pre>
    <?php
    print_r(wincache_scache_meminfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [memory_total] => 5242880
        [memory_free] => 5215056
        [num_used_blks] => 6
        [num_free_blks] => 3
        [memory_overhead] => 176
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache

# wincache_ucache_add

(PECL wincache >= 1.1.0)

wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache

### Açıklama

function wincache_ucache_add(string `$key`, mixed `$value`, int `$ttl` = 0): bool
function wincache_ucache_add(array `$values`, mixed `$unused` = NULL, int `$ttl` = 0): bool

Adds a variable in user cache, only if this variable doesn't already exist in the cache. The added variable remains in the user cache unless its time to live expires or it is deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

### Bağımsız Değişkenler

`key`

  Store the variable using this `key` name. If a variable with same key is already present the function will fail and return `false`. `key` is case sensitive. To override the value even if `key` is present use wincache_ucache_set() function instad. `key` can also take array of name => value pairs where names will be used as keys. This can be used to add multiple values in the cache in one operation, thus avoiding race condition.

`value`

  Value of a variable to store. `Value` supports all data types except resources, such as file handles. This parameter is ignored if first argument is an array. A general guidance is to pass `null` as `value` while using array as `key`. If `value` is an object, or an array containing objects, then the objects will be serialized. See __sleep() for details on serializing objects.

`values`

  Associative array of keys and values.

`ttl`

  Time for the variable to live in the cache in seconds. After the value specified in `ttl` has passed the stored variable will be deleted from the cache. This parameter takes a default value of `0` which means the variable will stay in the cache unless explicitly deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

### Dönen Değerler

If `key` is string, the function returns `true` on success and `false` on failure.

If `key` is an array, the function returns:

- If all the name => value pairs in the array can be set, function returns an empty array;
- If all the name => value pairs in the array cannot be set, function returns `false`;
- If some can be set while others cannot, function returns an array with name=>value pair for which the addition failed in the user cache.

### Örnekler

Örnek 1 wincache_ucache_add() with `key` as a string

    <?php
    $bar = 'BAR';
    var_dump(wincache_ucache_add('foo', $bar));
    var_dump(wincache_ucache_add('foo', $bar));
    var_dump(wincache_ucache_get('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    string(3) "BAR"

Örnek 2 wincache_ucache_add() with `key` as an array

    <?php
    $colors_array = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
    var_dump(wincache_ucache_add($colors_array));
    var_dump(wincache_ucache_add($colors_array));
    var_dump(wincache_ucache_get('Blue'));
    ?>

Yukarıdaki örneğin çıktısı:

    array(0) { }
    array(4) {
      ["green"]=> int(-1)
      ["Blue"]=> int(-1)
      ["yellow"]=> int(-1)
      ["cyan"]=> int(-1)
    }
    string(1) "6"

### Ayrıca Bakınız

- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- __sleep()

# wincache_ucache_cas

(PECL wincache >= 1.1.0)

wincache_ucache_cas — Compares the variable with old value and assigns new value to it

### Açıklama

function wincache_ucache_cas(string `$key`, int `$old_value`, int `$new_value`): bool

Compares the variable associated with the `key` with `old_value` and if it matches then assigns the `new_value` to it.

### Bağımsız Değişkenler

`key`

  The `key` that is used to store the variable in the cache. `key` is case sensitive.

`old_value`

  Old value of the variable pointed by `key` in the user cache. The value should be of type `long`, otherwise the function returns `false`.

`new_value`

  New value which will get assigned to variable pointer by `key` if a match is found. The value should be of type `long`, otherwise the function returns `false`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Using wincache_ucache_cas()

    <?php
    wincache_ucache_set('counter', 2922);
    var_dump(wincache_ucache_cas('counter', 2922, 1));
    var_dump(wincache_ucache_get('counter'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    int(1)

### Ayrıca Bakınız

- wincache_ucache_inc() - Increments the value associated with the key
- wincache_ucache_dec() - Decrements the value associated with the key

# wincache_ucache_clear

(PECL wincache >= 1.1.0)

wincache_ucache_clear — Deletes entire content of the user cache

### Açıklama

function wincache_ucache_clear(): bool

Clears/deletes all the values stored in the user cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 using wincache_ucache_clear()

    <?php
    wincache_ucache_set('green', 1);
    wincache_ucache_set('red', 2);
    wincache_ucache_set('orange', 4);
    wincache_ucache_set('blue', 8);
    wincache_ucache_set('cyan', 16);
    $array1 = array('green', 'red', 'orange', 'blue', 'cyan');
    var_dump(wincache_ucache_get($array1));
    var_dump(wincache_ucache_clear());
    var_dump(wincache_ucache_get($array1));
    ?>

Yukarıdaki örneğin çıktısı:

    array(5) { ["green"]=> int(1)
               ["red"]=> int(2)
               ["orange"]=> int(4)
               ["blue"]=> int(8)
               ["cyan"]=> int(16) }
    bool(true)
    bool(false)

### Ayrıca Bakınız

- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache

# wincache_ucache_dec

(PECL wincache >= 1.1.0)

wincache_ucache_dec — Decrements the value associated with the key

### Açıklama

function wincache_ucache_dec(string `$key`, int `$dec_by` = 1, bool `&$success` = ?): mixed

Decrements the value associated with the `key` by 1 or as specified by `dec_by`.

### Bağımsız Değişkenler

`key`

  The `key` that was used to store the variable in the cache. `key` is case sensitive.

`dec_by`

  The value by which the variable associated with the `key` will get decremented. If the argument is a floating point number it will be truncated to nearest integer. The variable associated with the `key` should be of type `long`, otherwise the function fails and returns `false`.

`success`

  Will be set to `true` on success and `false` on failure.

### Dönen Değerler

Returns the decremented value on success and `false` on failure.

### Örnekler

Örnek 1 Using wincache_ucache_dec()

    <?php
    wincache_ucache_set('counter', 1);
    var_dump(wincache_ucache_dec('counter', 2923, $success));
    var_dump($success);
    ?>

Yukarıdaki örneğin çıktısı:

    int(2922)
    bool(true)

### Ayrıca Bakınız

- wincache_ucache_inc() - Increments the value associated with the key
- wincache_ucache_cas() - Compares the variable with old value and assigns new value to it

# wincache_ucache_delete

(PECL wincache >= 1.1.0)

wincache_ucache_delete — Deletes variables from the user cache

### Açıklama

function wincache_ucache_delete(mixed `$key`): bool

Deletes the elements in the user cache pointed by `key`.

### Bağımsız Değişkenler

`key`

  The `key` that was used to store the variable in the cache. `key` is case sensitive. `key` can be an array of keys.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

If `key` is an array then the function returns `false` if every element of the array fails to get deleted from the user cache, otherwise returns an array which consists of all the keys that are deleted.

### Örnekler

Örnek 1 Using wincache_ucache_delete() with `key` as a string

    <?php
    wincache_ucache_set('foo', 'bar');
    var_dump(wincache_ucache_delete('foo'));
    var_dump(wincache_ucache_exists('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

Örnek 2 Usingwincache_ucache_delete() with `key` as an array

    <?php
    $array1 = array('green' => '5', 'blue' => '6', 'yellow' => '7', 'cyan' => '8');
    wincache_ucache_set($array1);
    $array2 = array('green', 'blue', 'yellow', 'cyan');
    var_dump(wincache_ucache_delete($array2));
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) { [0]=> string(5) "green"
               [1]=> string(4) "blue"
               [2]=> string(6) "yellow"
               [3]=> string(4) "cyan" }

Örnek 3 Using wincache_ucache_delete() with `key` as an array where some elements cannot be deleted

    <?php
    $array1 = array('green' => '5', 'blue' => '6', 'yellow' => '7', 'cyan' => '8');
    wincache_ucache_set($array1);
    $array2 = array('orange', 'red', 'yellow', 'cyan');
    var_dump(wincache_ucache_delete($array2));
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) { [0]=> string(6) "yellow"
               [1]=> string(4) "cyan" }

### Ayrıca Bakınız

- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache

# wincache_ucache_exists

(PECL wincache >= 1.1.0)

wincache_ucache_exists — Checks if a variable exists in the user cache

### Açıklama

function wincache_ucache_exists(string `$key`): bool

Checks if a variable with the `key` exists in the user cache or not.

### Bağımsız Değişkenler

`key`

  The `key` that was used to store the variable in the cache. `key` is case sensitive.

### Dönen Değerler

Returns `true` if variable with the `key` exitsts, otherwise returns `false`.

### Örnekler

Örnek 1 Using wincache_ucache_exists()

    <?php
    if (!wincache_ucache_exists('green'))
        wincache_ucache_set('green', 1);
    var_dump(wincache_ucache_exists('green'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache

# wincache_ucache_get

(PECL wincache >= 1.1.0)

wincache_ucache_get — Gets a variable stored in the user cache

### Açıklama

function wincache_ucache_get(mixed `$key`, bool `&$success` = ?): mixed

Gets a variable stored in the user cache.

### Bağımsız Değişkenler

`key`

  The `key` that was used to store the variable in the cache. `key` is case sensitive. `key` can be an array of keys. In this case the return value will be an array of values of each element in the `key` array. If an object, or an array containing objects, is returned, then the objects will be unserialized. See __wakeup() for details on unserializing objects.

`success`

  Will be set to `true` on success and `false` on failure.

### Dönen Değerler

If `key` is a string, the function returns the value of the variable stored with that key. The `success` is set to `true` on success and to `false` on failure.

The `key` is an array, the parameter `success` is always set to `true`. The returned array (name => value pairs) will contain only those name => value pairs for which the get operation in user cache was successful. If none of the keys in the key array finds a match in the user cache an empty array will be returned.

### Örnekler

Örnek 1 wincache_ucache_get() with `key` as a string

    <?php
    wincache_ucache_add('color', 'blue');
    var_dump(wincache_ucache_get('color', $success));
    var_dump($success);
    ?>

Yukarıdaki örneğin çıktısı:

    string(4) "blue"
    bool(true)

Örnek 2 wincache_ucache_get() with `key` as an array

    <?php
    $array1 = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
    wincache_ucache_set($array1);
    $array2 = array('green', 'Blue', 'yellow', 'cyan');
    var_dump(wincache_ucache_get($array2, $success));
    var_dump($success);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) { ["green"]=> string(1) "5"
               ["Blue"]=> string(1) "6"
               ["yellow"]=> string(1) "7"
               ["cyan"]=> string(1) "8" }
    bool(true)

### Ayrıca Bakınız

- wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- __wakeup()

# wincache_ucache_inc

(PECL wincache >= 1.1.0)

wincache_ucache_inc — Increments the value associated with the key

### Açıklama

function wincache_ucache_inc(string `$key`, int `$inc_by` = 1, bool `&$success` = ?): mixed

Increments the value associated with the `key` by 1 or as specified by `inc_by`.

### Bağımsız Değişkenler

`key`

  The `key` that was used to store the variable in the cache. `key` is case sensitive.

`inc_by`

  The value by which the variable associated with the `key` will get incremented. If the argument is a floating point number it will be truncated to nearest integer. The variable associated with the `key` should be of type `long`, otherwise the function fails and returns `false`.

`success`

  Will be set to `true` on success and `false` on failure.

### Dönen Değerler

Returns the incremented value on success and `false` on failure.

### Örnekler

Örnek 1 Using wincache_ucache_inc()

    <?php
    wincache_ucache_set('counter', 1);
    var_dump(wincache_ucache_inc('counter', 2921, $success));
    var_dump($success);
    ?>

Yukarıdaki örneğin çıktısı:

    int(2922)
    bool(true)

### Ayrıca Bakınız

- wincache_ucache_dec() - Decrements the value associated with the key
- wincache_ucache_cas() - Compares the variable with old value and assigns new value to it

# wincache_ucache_info

(PECL wincache >= 1.1.0)

wincache_ucache_info — Retrieves information about data stored in the user cache

### Açıklama

function wincache_ucache_info(bool `$summaryonly` = `false`, string `$key` = NULL): array|false

Retrieves information about data stored in the user cache.

### Bağımsız Değişkenler

`summaryonly`

  Controls whether the returned array will contain information about individual cache entries along with the user cache summary.

`key`

  The key of an entry in the user cache. If specified then the returned array will contain information only about that cache entry. If not specified and `summaryonly` is set to `false` then the returned array will contain information about all entries in the cache.

### Dönen Değerler

Array of meta data about user cache başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `total_cache_uptime` - total time in seconds that the user cache has been active
- `total_item_count` - total number of elements that are currently in the user cache
- `is_local_cache` - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache
- `total_hit_count` - number of times the data has been served from the cache
- `total_miss_count` - number of times the data has not been found in the cache

- `ucache_entries` - an array that contains the information about all the cached items:

  - `key_name` - name of the key which is used to store the data
  - `value_type` - type of value stored by the key
  - `use_time` - time in seconds since the file has been accessed in the opcode cache
  - `last_check` - time in seconds since the file has been checked for modifications
  - `is_session` - indicates if the data is a session variable
  - `ttl_seconds` - time remaining for the data to live in the cache, 0 meaning infinite
  - `age_seconds` - time elapsed from the time data has been added in the cache
  - `hitcount` - number of times data has been served from the cache

### Örnekler

Örnek 1 Using wincache_ucache_info()

    <?php
    wincache_ucache_get('green');
    wincache_ucache_set('green', 2922);
    wincache_ucache_get('green');
    wincache_ucache_get('green');
    wincache_ucache_get('green');
    print_r(wincache_ucache_info());
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    ( ["total_cache_uptime"] => int(0)
      ["is_local_cache"] => bool(false)
      ["total_item_count"] => int(1)
      ["total_hit_count"] => int(3)
      ["total_miss_count"] => int(1)
      ["ucache_entries"] => Array(1)
        ( [1] => Array(6)
          (
            ["key_name"] => string(5) "green"
            ["value_type"] => string(4) "long"
            ["is_session"] => int(0)
            ["ttl_seconds"] => int(0)
            ["age_seconds"] => int(0)
            ["hitcount"] => int(3)
           )
        )
    )

### Ayrıca Bakınız

- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_ucache_meminfo

(PECL wincache >= 1.1.0)

wincache_ucache_meminfo — Retrieves information about user cache memory usage

### Açıklama

function wincache_ucache_meminfo(): array|false

Retrieves information about memory usage by user cache.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of meta data about user cache memory usage başarısızlık durumunda `false` döner

The array returned by this function contains the following elements:

- `memory_total` - amount of memory in bytes allocated for the user cache
- `memory_free` - amount of free memory in bytes available for the user cache
- `num_used_blks` - number of memory blocks used by the user cache
- `num_free_blks` - number of free memory blocks available for the user cache
- `memory_overhead` - amount of memory in bytes used for the user cache internal structures

### Örnekler

Örnek 1 A wincache_ucache_meminfo() example

    <pre>
    <?php
    print_r(wincache_ucache_meminfo());
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [memory_total] => 5242880
        [memory_free] => 5215056
        [num_used_blks] => 6
        [num_free_blks] => 3
        [memory_overhead] => 176
    )

### Ayrıca Bakınız

- wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
- wincache_fcache_meminfo() - Retrieves information about file cache memory usage
- wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
- wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
- wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
- wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache
- wincache_scache_meminfo() - Retrieves information about session cache memory usage

# wincache_ucache_set

(PECL wincache >= 1.1.0)

wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache

### Açıklama

function wincache_ucache_set(mixed `$key`, mixed `$value`, int `$ttl` = 0): bool
function wincache_ucache_set(array `$values`, mixed `$unused` = NULL, int `$ttl` = 0): bool

Adds a variable in user cache. Overwrites a variable if it already exists in the cache. The added or updated variable remains in the user cache unless its time to live expires or it is deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

### Bağımsız Değişkenler

`key`

  Store the variable using this `key` name. If a variable with same `key` is already present the function will overwrite the previous value with the new one. `key` is case sensitive. `key` can also take array of name => value pairs where names will be used as keys. This can be used to add multiple values in the cache in one operation, thus avoiding race condition.

`value`

  Value of a variable to store. `Value` supports all data types except resources, such as file handles. This parameter is ignored if first argument is an array. A general guidance is to pass `null` as `value` while using array as `key`. If `value` is an object, or an array containing objects, then the objects will be serialized. See __sleep() for details on serializing objects.

`values`

  Associative array of keys and values.

`ttl`

  Time for the variable to live in the cache in seconds. After the value specified in `ttl` has passed the stored variable will be deleted from the cache. This parameter takes a default value of `0` which means the variable will stay in the cache unless explicitly deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

### Dönen Değerler

If `key` is string, the function returns `true` on success and `false` on failure.

If `key` is an array, the function returns:

- If all the name => value pairs in the array can be set, function returns an empty array;
- If all the name => value pairs in the array cannot be set, function returns `false`;
- If some can be set while others cannot, function returns an array with name=>value pair for which the addition failed in the user cache.

### Örnekler

Örnek 1 wincache_ucache_set() with `key` as a string

    <?php
    $bar = 'BAR';
    var_dump(wincache_ucache_set('foo', $bar));
    var_dump(wincache_ucache_get('foo'));
    $bar1 = 'BAR1';
    var_dump(wincache_ucache_set('foo', $bar1));
    var_dump(wincache_ucache_get('foo'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    string(3) "BAR"
    bool(true)
    string(3) "BAR1"

Örnek 2 wincache_ucache_set() with `key` as an array

    <?php
    $colors_array = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
    var_dump(wincache_ucache_set($colors_array));
    var_dump(wincache_ucache_set($colors_array));
    var_dump(wincache_ucache_get('Blue'));
    ?>

Yukarıdaki örneğin çıktısı:

    array(0) {}
    array(0) {}
    string(1) "6"

### Ayrıca Bakınız

- wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- __sleep()

# wincache_unlock

(PECL wincache >= 1.1.0)

wincache_unlock — Releases an exclusive lock on a given key

### Açıklama

function wincache_unlock(string `$key`): bool

Releases an exclusive lock that was obtained on a given key by using wincache_lock(). If any other process was blocked waiting for the lock on this key, that process will be able to obtain the lock.

Uyarı

Using of the wincache_lock() and wincache_unlock() can cause deadlocks when executing PHP scripts in a multi-process environment like FastCGI. Do not use these functions unless you are absolutely sure you need to use them. For the majority of the operations on the user cache it is not necessary to use these functions.

### Bağımsız Değişkenler

`key`

  Name of the key in the cache to release the lock on.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Using wincache_unlock()

    <?php
    $fp = fopen("/tmp/lock.txt", "r+");
    if (wincache_lock(“lock_txt_lock”)) { // do an exclusive lock
        ftruncate($fp, 0); // truncate file
        fwrite($fp, "Write something here\n");
        wincache_unlock(“lock_txt_lock”); // release the lock
    } else {
        echo "Couldn't get the lock!";
    }
    fclose($fp);
    ?>

### Ayrıca Bakınız

- wincache_lock() - Acquires an exclusive lock on a given key
- wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_ucache_get() - Gets a variable stored in the user cache
- wincache_ucache_delete() - Deletes variables from the user cache
- wincache_ucache_clear() - Deletes entire content of the user cache
- wincache_ucache_exists() - Checks if a variable exists in the user cache
- wincache_ucache_meminfo() - Retrieves information about user cache memory usage
- wincache_ucache_info() - Retrieves information about data stored in the user cache
- wincache_scache_info() - Retrieves information about files cached in the session cache

## İçindekiler

- wincache_fcache_fileinfo — Retrieves information about files cached in the file cache
- wincache_fcache_meminfo — Retrieves information about file cache memory usage
- wincache_lock — Acquires an exclusive lock on a given key
- wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache
- wincache_ocache_meminfo — Retrieves information about opcode cache memory usage
- wincache_refresh_if_changed — Refreshes the cache entries for the cached files
- wincache_rplist_fileinfo — Retrieves information about resolve file path cache
- wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache
- wincache_scache_info — Retrieves information about files cached in the session cache
- wincache_scache_meminfo — Retrieves information about session cache memory usage
- wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache
- wincache_ucache_cas — Compares the variable with old value and assigns new value to it
- wincache_ucache_clear — Deletes entire content of the user cache
- wincache_ucache_dec — Decrements the value associated with the key
- wincache_ucache_delete — Deletes variables from the user cache
- wincache_ucache_exists — Checks if a variable exists in the user cache
- wincache_ucache_get — Gets a variable stored in the user cache
- wincache_ucache_inc — Increments the value associated with the key
- wincache_ucache_info — Retrieves information about data stored in the user cache
- wincache_ucache_meminfo — Retrieves information about user cache memory usage
- wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache
- wincache_unlock — Releases an exclusive lock on a given key

# Building for Windows

## İçindekiler

- Prerequisites
- Compiling and building
- Verifying the build

## Prerequisites

Building WinCache extension will require:

1. PHP source code
2. PHP build environment
3. WinCache source code

For completing first two steps, follow the step-by-step guide for how to » build PHP on Windows.

For getting the WinCache source code follow the instructions described in Downloading PECL extensions.

## Compiling and building

The following steps describe how to compile and build WinCache on Windows OS:

1. Open a command prompt which is used to build PHP

2. Go to the root folder where PHP sources are present

3. Run the command:

       cscript.exe win32\build\buildconf.js

4. Run the command:

       configure.bat --help

   The output will contain a new flag `--enable-wincache`.

5. Run the command:

       configure.js [all options used to build PHP] --enable-wincache

   `--enable-wincache` is the only extra option which is required to ensure that WinCache extension gets built properly. This option will build WinCache and will statically link it with PHP dll. To build WinCache extension as a stand-alone DLL use the option `--enable-wincache=shared`.

6. Run the command:

       nmake

## Verifying the build

The following steps describe how to verify that WinCache has been built correctly:

1. Go to the folder where the PHP binaries are built

2. Run the command:

       php.exe -n -d extension=php_wincache.dll -re wincache

   If WinCache has been built properly, the output of this command will list the INI directives and functions supported by WinCache.

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - WinCache Statistics Script
  - WinCache Session Handler
  - WinCache Functions Reroutes
- WinCache İşlevleri
  - wincache_fcache_fileinfo — Retrieves information about files cached in the file cache
  - wincache_fcache_meminfo — Retrieves information about file cache memory usage
  - wincache_lock — Acquires an exclusive lock on a given key
  - wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache
  - wincache_ocache_meminfo — Retrieves information about opcode cache memory usage
  - wincache_refresh_if_changed — Refreshes the cache entries for the cached files
  - wincache_rplist_fileinfo — Retrieves information about resolve file path cache
  - wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache
  - wincache_scache_info — Retrieves information about files cached in the session cache
  - wincache_scache_meminfo — Retrieves information about session cache memory usage
  - wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache
  - wincache_ucache_cas — Compares the variable with old value and assigns new value to it
  - wincache_ucache_clear — Deletes entire content of the user cache
  - wincache_ucache_dec — Decrements the value associated with the key
  - wincache_ucache_delete — Deletes variables from the user cache
  - wincache_ucache_exists — Checks if a variable exists in the user cache
  - wincache_ucache_get — Gets a variable stored in the user cache
  - wincache_ucache_inc — Increments the value associated with the key
  - wincache_ucache_info — Retrieves information about data stored in the user cache
  - wincache_ucache_meminfo — Retrieves information about user cache memory usage
  - wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache
  - wincache_unlock — Releases an exclusive lock on a given key
- Building for Windows
  - Prerequisites
  - Compiling and building
  - Verifying the build

# Hierarchical Profiler

# Giriş

XHProf is a light-weight hierarchical and instrumentation based profiler. During the data collection phase, it keeps track of call counts and inclusive metrics for arcs in the dynamic callgraph of a program. It computes exclusive metrics in the reporting/post processing phase, such as wall (elapsed) time, CPU time and memory usage. A functions profile can be broken down by callers or callees. XHProf handles recursive functions by detecting cycles in the callgraph at data collection time itself and avoiding the cycles by giving unique depth qualified names for the recursive invocations.

XHProf includes a simple HTML based user interface (written in PHP). The browser based UI for viewing profiler results makes it easy to view results or to share results with peers. A callgraph image view is also supported.

XHProf reports can often be helpful in understanding the structure of the code being executed. The hierarchical nature of the reports can be used to determine, for example, what chain of calls led to a particular function getting called.

XHProf supports ability to compare two runs (a.k.a. "diff" reports) or aggregate data from multiple runs. Diff and aggregate reports, much like single run reports, offer "flat" as well as "hierarchical" views of the profile.

Additional documentation can be found via the » facebook xhprof website.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

Although not required, xhprof includes an interface that's written in PHP. It's used to save and display the profiled data in a usable way, where viewing is done via a web browser. So, a PHP enabled web server will likely make the xhprof experience more useful.

There's also a fork of the GUI interface at » http://github.com/preinheimer/xhprof

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/xhprof

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Xhprof Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
xhprof.output_dir | "" | `INI_ALL` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`xhprof.output_dir` string

  Directory used by the default implementation of the iXHProfRuns interface (namely, the XHProfRuns_Default class) for storing XHProf runs.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`XHPROF_FLAGS_NO_BUILTINS` (int)
  Used to skip all built-in (internal) functions.
`XHPROF_FLAGS_CPU` (int)
  Used to add CPU profiling information to the output.
`XHPROF_FLAGS_MEMORY` (int)
  Used to add memory profiling information to the output.

# Örnekler

Örnek 1 Xhprof example with the optional GUI

This example starts and stops the profiler, then uses the bundled GUI interface to save and parse the results. In other words, the code from the extension itself ends at the call to xhprof_disable().

    <?php
    xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

    for ($i = 0; $i <= 1000; $i++) {
        $a = $i * $i;
    }

    $xhprof_data = xhprof_disable();

    $XHPROF_ROOT = "/tools/xhprof/";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

    $xhprof_runs = new XHProfRuns_Default();
    $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing");

    echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    http://localhost/xhprof/xhprof_html/index.php?run=t11_4bdf44d21121f&source=xhprof_testing

# Xhprof İşlevleri

# xhprof_disable

(PECL xhprof >= 0.9.0)

xhprof_disable — Stops xhprof profiler

### Açıklama

function xhprof_disable(): ?array

Stops the profiler, and returns xhprof data from the run.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of xhprof data, from the run. Returns `null` if profiling is not enabled.

### Örnekler

Örnek 1 xhprof_disable() example

    <?php
    xhprof_enable();

    $foo = strlen("foo bar");

    $xhprof_data = xhprof_disable();

    print_r($xhprof_data);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [main()==>strlen] => Array
            (
                [ct] => 1
                [wt] => 279
            )

        [main()==>xhprof_disable] => Array
            (
                [ct] => 1
                [wt] => 9
            )

        [main()] => Array
            (
                [ct] => 1
                [wt] => 610
            )

    )

# xhprof_enable

(PECL xhprof >= 0.9.0)

xhprof_enable — Start xhprof profiler

### Açıklama

function xhprof_enable(int `$flags` = 0, array `$options` = ?): void

Start xhprof profiling.

### Bağımsız Değişkenler

`flags`

  Optional flags to add additional information to the profiling. See the XHprof constants for further information about these flags, e.g., `XHPROF_FLAGS_MEMORY` to enable memory profiling.

`options`

  An array of optional options, namely, the 'ignored_functions' option to pass in functions to be ignored during profiling.

### Dönen Değerler

`null`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL xhprof 0.9.2 | The optional `options` parameter was added.

### Örnekler

Örnek 1 xhprof_enable() examples

    <?php
    // 1. elapsed time + memory + CPU profiling; and ignore built-in (internal) functions
    xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

    // 2. elapsed time profiling; ignore call_user_func* during profiling
    xhprof_enable(
        0,
        array('ignored_functions' =>  array('call_user_func',
                                            'call_user_func_array')));

    // 3. elapsed time + memory profiling; ignore call_user_func* during profiling
    xhprof_enable(
        XHPROF_FLAGS_MEMORY,
        array('ignored_functions' =>  array('call_user_func',
                                            'call_user_func_array')));
    ?>

### Ayrıca Bakınız

- xhprof_disable() - Stops xhprof profiler
- xhprof_sample_enable() - Start XHProf profiling in sampling mode
- memory_get_usage() - PHP'ye ayrılan belleğin miktarını döndürür
- getrusage() - Geçerli özkaynak kullanımlarını döndürür

# xhprof_sample_disable

(PECL xhprof >= 0.9.0)

xhprof_sample_disable — Stops xhprof sample profiler

### Açıklama

function xhprof_sample_disable(): ?array

Stops the sample mode xhprof profiler, and returns the profile info.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of xhprof sample data, from the run. Returns `null` if profiling is not enabled.

### Örnekler

Örnek 1 xhprof_sample_disable() example

    <?php
    xhprof_sample_enable();

    for ($i = 0; $i <= 10000; $i++) {
        $a = strlen($i);
        $b = $i * $a;
        $c = rand();
    }

    $xhprof_data = xhprof_sample_disable();

    print_r($xhprof_data);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [1272935300.800000] => main()
        [1272935300.900000] => main()
    )

# xhprof_sample_enable

(PECL xhprof >= 0.9.0)

xhprof_sample_enable — Start XHProf profiling in sampling mode

### Açıklama

function xhprof_sample_enable(): void

Starts profiling in sample mode, which is a lighter weight version of xhprof_enable(). The sampling interval is 0.1 seconds, and samples record the full function call stack. The main use case is when lower overhead is required when doing performance monitoring and diagnostics.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`null`

### Ayrıca Bakınız

- xhprof_sample_disable() - Stops xhprof sample profiler
- xhprof_enable() - Start xhprof profiler
- memory_get_usage() - PHP'ye ayrılan belleğin miktarını döndürür
- getrusage() - Geçerli özkaynak kullanımlarını döndürür

## İçindekiler

- xhprof_disable — Stops xhprof profiler
- xhprof_enable — Start xhprof profiler
- xhprof_sample_disable — Stops xhprof sample profiler
- xhprof_sample_enable — Start XHProf profiling in sampling mode

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
- Xhprof İşlevleri
  - xhprof_disable — Stops xhprof profiler
  - xhprof_enable — Start xhprof profiler
  - xhprof_sample_disable — Stops xhprof sample profiler
  - xhprof_sample_enable — Start XHProf profiling in sampling mode

# Yac

# Giriş

Yac (Yet Another cache), is a lock-free, shared memory user data cache, could be used to replace APC, local memcache.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/yac.

Bu PECL eklentisi için Windows kütüphaneleri (DLL dosyaları) PECL sitesinde mevcuttur.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Yac Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
yac.compress_threshold | -1 | `INI_SYSTEM` |
yac.debug | 0 | `INI_ALL` |
yac.enable | 1 | `INI_SYSTEM` |
yac.enable_cli | 0 | `INI_SYSTEM` |
yac.keys_memory_size | 4M | `INI_SYSTEM` |
yac.serializer | php | `INI_SYSTEM` |
yac.values_memory_size | 64M | `INI_SYSTEM` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`yac.compress_threshold` int

`yac.debug` int

`yac.enable` int

`yac.enable_cli` int

`yac.keys_memory_size` string

`yac.serializer` string

`yac.values_memory_size` string

## Özkaynak Türleri

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`YAC_VERSION` (string)
`YAC_MAX_KEY_LEN` (int)
  Max length of a key could be, it is 48 bytes.
`YAC_MAX_VALUE_RAW_LEN` (int)
`YAC_MAX_RAW_COMPRESSED_LEN` (int)
`YAC_SERIALIZER_PHP` (int)
  Use php serialize as serializer
`YAC_SERIALIZER_JSON` (int)
  Use json as serializer(requrie --enable-json)
`YAC_SERIALIZER_IGBINARY` (int)
  Use igbinary as serializer(require --enable-igbinary)
`YAC_SERIALIZER_MSGPACK` (int)
  Use msgpack as serializer(require --enable-msgpack)
`YAC_SERIALIZER` (string)
  Which serialzier is yac used

# The Yac class

(PECL yac >= 1.0.0)

## Giriş

## Sınıf Sözdizimi

class Yac {
/* Özellikler */
protected $_prefix;
/* Yöntemler */
public function __construct(string `$prefix` = "")
public function add(string `$keys`, mixed `$value`, int `$ttl` = 0): bool
public function add(array `$key_vals`): bool
public function delete(string|array `$keys`, int `$ttl` = ?): bool
public function dump(int `$num`): mixed
public function flush(): bool
public function get(string|array `$key`, int `&$cas` = `null`): mixed
public function __get(string `$key`): mixed
public function info(): array
public function set(string `$keys`, mixed `$value`, int `$ttl` = 0): bool
public function add(array `$key_vals`): bool
public function __set(string `$keys`, mixed `$value`): mixed
}

## Özellikler

_prefix

# Yac::add

(PECL yac >= 1.0.0)

Yac::add — Store into cache

### Açıklama

public function Yac::add(string `$keys`, mixed `$value`, int `$ttl` = 0): bool
public function Yac::add(array `$key_vals`): bool

Added a item into cache.

### Bağımsız Değişkenler

`keys`

  string key

`value`

  mixed value, All php value type could be stored except resource

`ttl`

  expire time

### Dönen Değerler

bool, `true` on success, `false` on failure

> Bilginize:

> Yac::add() may fail if cas lock could not obtain, so, if you need the value to be stored properly, you may write codes like:

> Örnek 1 Make sure the item is stored

>     while(!$yac->set("key", "value"));

# Yac::__construct

(PECL yac >= 1.0.0)

Yac::__construct — Constructor

### Açıklama

public function Yac::__construct(string `$prefix` = "")

prefix is used to prepended to keys, this could be used to avoiding conflicts between apps.

### Bağımsız Değişkenler

`prefix`

  string prefix

### Hatalar/İstisnalar

Throws an Exception if Yac is not enabled. Throws Exception if `prefix` exceeds max key length of 48 (`YAC_MAX_KEY_LEN`) bytes.

# Yac::delete

(PECL yac >= 1.0.0)

Yac::delete — Remove items from cache

### Açıklama

public function Yac::delete(string|array `$keys`, int `$ttl` = ?): bool

remove items from cache

### Bağımsız Değişkenler

`keys`

  string key, or array of multiple keys to be removed

`ttl`

  if delay is set, delete will mark the items to be invalid in ttl second.

### Dönen Değerler

# Yac::dump

(PECL yac >= 1.0.0)

Yac::dump — Dump cache

### Açıklama

public function Yac::dump(int `$num`): mixed

Dump values stored in cache

### Bağımsız Değişkenler

`num`

  Maximum number of items should be returned

### Dönen Değerler

mixed

# Yac::flush

(PECL yac >= 1.0.0)

Yac::flush — Flush the cache

### Açıklama

public function Yac::flush(): bool

Remove all cached values

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

bool, always true

# Yac::get

(PECL yac >= 1.0.0)

Yac::get — Retrieve values from cache

### Açıklama

public function Yac::get(string|array `$key`, int `&$cas` = `null`): mixed

Retrieve values from cache

### Bağımsız Değişkenler

`key`

  string keys, or array of multiple keys.

`cas`

  if not `null`, it will be set to the retrieved item's cas.

### Dönen Değerler

mixed on success, false on failure

# Yac::__get

(PECL yac >= 1.0.0)

Yac::__get — Getter

### Açıklama

public function Yac::__get(string `$key`): mixed

Retrieve values from cache

### Bağımsız Değişkenler

`key`

  string key

### Dönen Değerler

mixed on success, `null` on failure

# Yac::info

(PECL yac >= 1.0.0)

Yac::info — Status of cache

### Açıklama

public function Yac::info(): array

Get status of cache system

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Return an array, consistent with: "memory_size", "slots_memory_size", "values_memory_size", "segment_size", "segment_num", "miss", "hits", "fails", "kicks", "recycles", "slots_size", "slots_used"

# Yac::set

(PECL yac >= 1.0.0)

Yac::set — Store into cache

### Açıklama

public function Yac::set(string `$keys`, mixed `$value`, int `$ttl` = 0): bool
public function Yac::add(array `$key_vals`): bool

Add a item into cache, it the key is already exists, override it.

### Bağımsız Değişkenler

`keys`

  string key

`value`

  mixed value, All php value type could be stored except resource

`ttl`

  expire time

### Dönen Değerler

the value self

# Yac::__set

(PECL yac >= 1.0.0)

Yac::__set — Setter

### Açıklama

public function Yac::__set(string `$keys`, mixed `$value`): mixed

store a item into cache

### Bağımsız Değişkenler

`keys`

  string key

`value`

  mixed value, All php value type could be stored except resource

### Dönen Değerler

Always return the value self

## İçindekiler

- Yac::add — Store into cache
- Yac::__construct — Constructor
- Yac::delete — Remove items from cache
- Yac::dump — Dump cache
- Yac::flush — Flush the cache
- Yac::get — Retrieve values from cache
- Yac::__get — Getter
- Yac::info — Status of cache
- Yac::set — Store into cache
- Yac::__set — Setter

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Yac — The Yac class
  - Yac::add — Store into cache
  - Yac::__construct — Constructor
  - Yac::delete — Remove items from cache
  - Yac::dump — Dump cache
  - Yac::flush — Flush the cache
  - Yac::get — Retrieve values from cache
  - Yac::__get — Getter
  - Yac::info — Status of cache
  - Yac::set — Store into cache
  - Yac::__set — Setter

- APCu — APC User Cache
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - APCu İşlevleri
  - APCUIterator — The APCUIterator class
- Componere
  - Yapılandırma/Kurulum
  - Componere\Abstract\Definition — The Componere\Abstract\Definition class
  - Componere\Definition — The Componere\Definition class
  - Componere\Patch — The Componere\Patch class
  - Componere\Method — The Componere\Method class
  - Componere\Value — The Componere\Value class
  - Componere İşlevleri
- Errorfunc — Hata İşleme ve Günlükleme
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Hata İşleme İşlevleri
- FFI — Foreign Function Interface
  - Yapılandırma/Kurulum
  - Örnekler
  - FFI — Main interface to C code and data
  - FFI\CData — C Data Handles
  - FFI\CType — C Type Handles
  - FFI\Exception — FFI Exceptions
  - FFI\ParserException — FFI Parser Exceptions
- OPcache
  - Yapılandırma/Kurulum
  - Preloading
  - OPcache İşlevleri
- Operator Overloading — Operator Overloading for Objects
  - Yapılandırma/Kurulum
  - Operator Overloading Magic Methods
- Outcontrol — Çıktı Tamponlama Denetimi
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Output Buffering
  - Flushing System Buffers
  - User-Level Output Buffers
  - Örnekler
  - Çıktı Denetim İşlevleri
- Info — PHP Seçenek ve Bilgileri
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - PHP Seçenek/Bilgi İşlevleri
- phpdbg — Interactive PHP Debugger
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - phpdbg İşlevleri
- runkit7
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - runkit7 İşlevleri
- uopz — User Operations for Zend
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Uopz İşlevleri
- WinCache — Windows Cache for PHP
  - Yapılandırma/Kurulum
  - WinCache İşlevleri
  - Building for Windows
- Xhprof — Hierarchical Profiler
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Xhprof İşlevleri
- Yac
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Yac — The Yac class

# Ses Biçemleme İşlemleri

# OpenAL Audio Bindings

# Giriş

Platform independent audio bindings. Requires the » OpenAL library.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/openal.

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir.

## Özkaynak Türleri

This extension defines four resource types: Open AL(Device) - Returned by openal_device_open(), Open AL(Context) - Returned by openal_context_create(), Open AL(Buffer) - Returned by openal_buffer_create(), and Open AL(Source) - Returned by openal_source_create().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`ALC_FREQUENCY` (int)
  Context Attribute
`ALC_REFRESH` (int)
  Context Attribute
`ALC_SYNC` (int)
  Context Attribute
`AL_FREQUENCY` (int)
  Buffer Setting
`AL_BITS` (int)
  Buffer Setting
`AL_CHANNELS` (int)
  Buffer Setting
`AL_SIZE` (int)
  Buffer Setting
`AL_BUFFER` (int)
  Source/Listener Setting (Integer)
`AL_SOURCE_RELATIVE` (int)
  Source/Listener Setting (Integer)
`AL_SOURCE_STATE` (int)
  Source/Listener Setting (Integer)
`AL_PITCH` (int)
  Source/Listener Setting (Float)
`AL_GAIN` (int)
  Source/Listener Setting (Float)
`AL_MIN_GAIN` (int)
  Source/Listener Setting (Float)
`AL_MAX_GAIN` (int)
  Source/Listener Setting (Float)
`AL_MAX_DISTANCE` (int)
  Source/Listener Setting (Float)
`AL_ROLLOFF_FACTOR` (int)
  Source/Listener Setting (Float)
`AL_CONE_OUTER_GAIN` (int)
  Source/Listener Setting (Float)
`AL_CONE_INNER_ANGLE` (int)
  Source/Listener Setting (Float)
`AL_CONE_OUTER_ANGLE` (int)
  Source/Listener Setting (Float)
`AL_REFERENCE_DISTANCE` (int)
  Source/Listener Setting (Float)
`AL_POSITION` (int)
  Source/Listener Setting (Float Vector)
`AL_VELOCITY` (int)
  Source/Listener Setting (Float Vector)
`AL_DIRECTION` (int)
  Source/Listener Setting (Float Vector)
`AL_ORIENTATION` (int)
  Source/Listener Setting (Float Vector)
`AL_FORMAT_MONO8` (int)
  PCM Format
`AL_FORMAT_MONO16` (int)
  PCM Format
`AL_FORMAT_STEREO8` (int)
  PCM Format
`AL_FORMAT_STEREO16` (int)
  PCM Format
`AL_INITIAL` (int)
  Source State
`AL_PLAYING` (int)
  Source State
`AL_PAUSED` (int)
  Source State
`AL_STOPPED` (int)
  Source State
`AL_LOOPING` (int)
  Source State
`AL_TRUE` (int)
  Boolean value recognized by OpenAL
`AL_FALSE` (int)
  Boolean value recognized by OpenAL

# OpenAL İşlevleri

# openal_buffer_create

(PECL openal >= 0.1.0)

openal_buffer_create — Generate OpenAL buffer

### Açıklama

function openal_buffer_create(): resource

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an Open AL(Buffer) resource on success or `false` on failure.

### Ayrıca Bakınız

- openal_buffer_loadwav() - Load a .wav file into a buffer
- openal_buffer_data() - Load a buffer with data

# openal_buffer_data

(PECL openal >= 0.1.0)

openal_buffer_data — Load a buffer with data

### Açıklama

function openal_buffer_data(
resource `$buffer`,
int `$format`,
string `$data`,
int `$freq`
): bool

### Bağımsız Değişkenler

`buffer`
  An Open AL(Buffer) resource (previously created by openal_buffer_create()).
`format`
  Format of `data`, one of: `AL_FORMAT_MONO8`, `AL_FORMAT_MONO16`, `AL_FORMAT_STEREO8` ve `AL_FORMAT_STEREO16`
`data`
  Block of binary audio data in the `format` and `freq` specified.
`freq`
  Frequency of `data` given in Hz.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_buffer_loadwav() - Load a .wav file into a buffer
- openal_stream() - Begin streaming on a source

# openal_buffer_destroy

(PECL openal >= 0.1.0)

openal_buffer_destroy — Destroys an OpenAL buffer

### Açıklama

function openal_buffer_destroy(resource `$buffer`): bool

### Bağımsız Değişkenler

`buffer`
  An Open AL(Buffer) resource (previously created by openal_buffer_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_buffer_create() - Generate OpenAL buffer

# openal_buffer_get

(PECL openal >= 0.1.0)

openal_buffer_get — Retrieve an OpenAL buffer property

### Açıklama

function openal_buffer_get(resource `$buffer`, int `$property`): int|false

### Bağımsız Değişkenler

`buffer`
  An Open AL(Buffer) resource (previously created by openal_buffer_create()).
`property`
  Specific property, one of: `AL_FREQUENCY`, `AL_BITS`, `AL_CHANNELS` ve `AL_SIZE`.

### Dönen Değerler

Returns an integer value appropriate to the `property` requested başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_buffer_create() - Generate OpenAL buffer

# openal_buffer_loadwav

(PECL openal >= 0.1.0)

openal_buffer_loadwav — Load a .wav file into a buffer

### Açıklama

function openal_buffer_loadwav(resource `$buffer`, string `$wavfile`): bool

### Bağımsız Değişkenler

`buffer`
  An Open AL(Buffer) resource (previously created by openal_buffer_create()).
`wavfile`
  Path to .wav file on local file system.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_buffer_data() - Load a buffer with data
- openal_stream() - Begin streaming on a source

# openal_context_create

(PECL openal >= 0.1.0)

openal_context_create — Create an audio processing context

### Açıklama

function openal_context_create(resource `$device`): resource

### Bağımsız Değişkenler

`device`
  An Open AL(Device) resource (previously created by openal_device_open()).

### Dönen Değerler

Returns an Open AL(Context) resource on success or `false` on failure.

### Ayrıca Bakınız

- openal_device_open() - Initialize the OpenAL audio layer
- openal_context_destroy() - Destroys a context

# openal_context_current

(PECL openal >= 0.1.0)

openal_context_current — Make the specified context current

### Açıklama

function openal_context_current(resource `$context`): bool

### Bağımsız Değişkenler

`context`
  An Open AL(Context) resource (previously created by openal_context_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_context_create() - Create an audio processing context

# openal_context_destroy

(PECL openal >= 0.1.0)

openal_context_destroy — Destroys a context

### Açıklama

function openal_context_destroy(resource `$context`): bool

### Bağımsız Değişkenler

`context`
  An Open AL(Context) resource (previously created by openal_context_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_context_create() - Create an audio processing context

# openal_context_process

(PECL openal >= 0.1.0)

openal_context_process — Process the specified context

### Açıklama

function openal_context_process(resource `$context`): bool

### Bağımsız Değişkenler

`context`
  An Open AL(Context) resource (previously created by openal_context_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_context_create() - Create an audio processing context
- openal_context_current() - Make the specified context current
- openal_context_suspend() - Suspend the specified context

# openal_context_suspend

(PECL openal >= 0.1.0)

openal_context_suspend — Suspend the specified context

### Açıklama

function openal_context_suspend(resource `$context`): bool

### Bağımsız Değişkenler

`context`
  An Open AL(Context) resource (previously created by openal_context_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_context_create() - Create an audio processing context
- openal_context_current() - Make the specified context current
- openal_context_process() - Process the specified context

# openal_device_close

(PECL openal >= 0.1.0)

openal_device_close — Close an OpenAL device

### Açıklama

function openal_device_close(resource `$device`): bool

### Bağımsız Değişkenler

`device`
  An Open AL(Device) resource (previously created by openal_device_open()) to be closed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_device_open() - Initialize the OpenAL audio layer

# openal_device_open

(PECL openal >= 0.1.0)

openal_device_open — Initialize the OpenAL audio layer

### Açıklama

function openal_device_open(string `$device_desc` = ?): resource

### Bağımsız Değişkenler

`device_desc`
  Open an audio device optionally specified by `device_desc`. If `device_desc` is not specified the first available audio device will be used.

### Dönen Değerler

Returns an Open AL(Device) resource on success or `false` on failure.

### Ayrıca Bakınız

- openal_device_close() - Close an OpenAL device
- openal_context_create() - Create an audio processing context

# openal_listener_get

(PECL openal >= 0.1.0)

openal_listener_get — Retrieve a listener property

### Açıklama

function openal_listener_get(int `$property`): mixed

### Bağımsız Değişkenler

`property`
  Property to retrieve, one of: `AL_GAIN` (float), `AL_POSITION` (array(float,float,float)), `AL_VELOCITY` (array(float,float,float)) ve `AL_ORIENTATION` (array(float,float,float)).

### Dönen Değerler

Returns a float or array of floats (as appropriate) başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_listener_set() - Set a listener property

# openal_listener_set

(PECL openal >= 0.1.0)

openal_listener_set — Set a listener property

### Açıklama

function openal_listener_set(int `$property`, mixed `$setting`): bool

### Bağımsız Değişkenler

`property`
  Property to set, one of: `AL_GAIN` (float), `AL_POSITION` (array(float,float,float)), `AL_VELOCITY` (array(float,float,float)) ve `AL_ORIENTATION` (array(float,float,float)).
`setting`
  Value to set, either float, or an array of floats as appropriate.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_listener_get() - Retrieve a listener property

# openal_source_create

(PECL openal >= 0.1.0)

openal_source_create — Generate a source resource

### Açıklama

function openal_source_create(): resource

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an Open AL(Source) resource on success or `false` on failure.

### Ayrıca Bakınız

- openal_source_set() - Set source property
- openal_source_play() - Start playing the source
- openal_source_destroy() - Destroy a source resource

# openal_source_destroy

(PECL openal >= 0.1.0)

openal_source_destroy — Destroy a source resource

### Açıklama

function openal_source_destroy(resource `$source`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_create() - Generate a source resource

# openal_source_get

(PECL openal >= 0.1.0)

openal_source_get — Retrieve an OpenAL source property

### Açıklama

function openal_source_get(resource `$source`, int `$property`): mixed

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).
`property`
  Property to get, one of: `AL_SOURCE_RELATIVE` (int), `AL_SOURCE_STATE` (int), `AL_PITCH` (float), `AL_GAIN` (float), `AL_MIN_GAIN` (float), `AL_MAX_GAIN` (float), `AL_MAX_DISTANCE` (float), `AL_ROLLOFF_FACTOR` (float), `AL_CONE_OUTER_GAIN` (float), `AL_CONE_INNER_ANGLE` (float), `AL_CONE_OUTER_ANGLE` (float), `AL_REFERENCE_DISTANCE` (float), `AL_POSITION` (array(float,float,float)), `AL_VELOCITY` (array(float,float,float)), `AL_DIRECTION` (array(float,float,float)).

### Dönen Değerler

Returns the type associated with the property being retrieved başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_create() - Generate a source resource
- openal_source_set() - Set source property
- openal_source_play() - Start playing the source

# openal_source_pause

(PECL openal >= 0.1.0)

openal_source_pause — Pause the source

### Açıklama

function openal_source_pause(resource `$source`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_stop() - Stop playing the source
- openal_source_play() - Start playing the source
- openal_source_rewind() - Rewind the source

# openal_source_play

(PECL openal >= 0.1.0)

openal_source_play — Start playing the source

### Açıklama

function openal_source_play(resource `$source`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_stop() - Stop playing the source
- openal_source_pause() - Pause the source
- openal_source_rewind() - Rewind the source

# openal_source_rewind

(PECL openal >= 0.1.0)

openal_source_rewind — Rewind the source

### Açıklama

function openal_source_rewind(resource `$source`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_stop() - Stop playing the source
- openal_source_pause() - Pause the source
- openal_source_play() - Start playing the source

# openal_source_set

(PECL openal >= 0.1.0)

openal_source_set — Set source property

### Açıklama

function openal_source_set(resource `$source`, int `$property`, mixed `$setting`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).
`property`
  Property to set, one of: `AL_BUFFER` (OpenAL(Source)), `AL_LOOPING` (bool), `AL_SOURCE_RELATIVE` (int), `AL_SOURCE_STATE` (int), `AL_PITCH` (float), `AL_GAIN` (float), `AL_MIN_GAIN` (float), `AL_MAX_GAIN` (float), `AL_MAX_DISTANCE` (float), `AL_ROLLOFF_FACTOR` (float), `AL_CONE_OUTER_GAIN` (float), `AL_CONE_INNER_ANGLE` (float), `AL_CONE_OUTER_ANGLE` (float), `AL_REFERENCE_DISTANCE` (float), `AL_POSITION` (array(float,float,float)), `AL_VELOCITY` (array(float,float,float)), `AL_DIRECTION` (array(float,float,float)).
`setting`
  Value to assign to specified `property`. Refer to the description of `property` for a description of the value(s) expected.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_create() - Generate a source resource
- openal_source_get() - Retrieve an OpenAL source property
- openal_source_play() - Start playing the source

# openal_source_stop

(PECL openal >= 0.1.0)

openal_source_stop — Stop playing the source

### Açıklama

function openal_source_stop(resource `$source`): bool

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_play() - Start playing the source
- openal_source_pause() - Pause the source
- openal_source_rewind() - Rewind the source

# openal_stream

(PECL openal >= 0.1.0)

openal_stream — Begin streaming on a source

### Açıklama

function openal_stream(resource `$source`, int `$format`, int `$rate`): resource|false

### Bağımsız Değişkenler

`source`
  An Open AL(Source) resource (previously created by openal_source_create()).
`format`
  Format of `data`, one of: `AL_FORMAT_MONO8`, `AL_FORMAT_MONO16`, `AL_FORMAT_STEREO8` ve `AL_FORMAT_STEREO16`
`rate`
  Frequency of data to stream given in Hz.

### Dönen Değerler

Returns a stream resource on success başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- openal_source_create() - Generate a source resource
- fwrite() - Dosyaya ikil kipte yazar

## İçindekiler

- openal_buffer_create — Generate OpenAL buffer
- openal_buffer_data — Load a buffer with data
- openal_buffer_destroy — Destroys an OpenAL buffer
- openal_buffer_get — Retrieve an OpenAL buffer property
- openal_buffer_loadwav — Load a .wav file into a buffer
- openal_context_create — Create an audio processing context
- openal_context_current — Make the specified context current
- openal_context_destroy — Destroys a context
- openal_context_process — Process the specified context
- openal_context_suspend — Suspend the specified context
- openal_device_close — Close an OpenAL device
- openal_device_open — Initialize the OpenAL audio layer
- openal_listener_get — Retrieve a listener property
- openal_listener_set — Set a listener property
- openal_source_create — Generate a source resource
- openal_source_destroy — Destroy a source resource
- openal_source_get — Retrieve an OpenAL source property
- openal_source_pause — Pause the source
- openal_source_play — Start playing the source
- openal_source_rewind — Rewind the source
- openal_source_set — Set source property
- openal_source_stop — Stop playing the source
- openal_stream — Begin streaming on a source

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- OpenAL İşlevleri
  - openal_buffer_create — Generate OpenAL buffer
  - openal_buffer_data — Load a buffer with data
  - openal_buffer_destroy — Destroys an OpenAL buffer
  - openal_buffer_get — Retrieve an OpenAL buffer property
  - openal_buffer_loadwav — Load a .wav file into a buffer
  - openal_context_create — Create an audio processing context
  - openal_context_current — Make the specified context current
  - openal_context_destroy — Destroys a context
  - openal_context_process — Process the specified context
  - openal_context_suspend — Suspend the specified context
  - openal_device_close — Close an OpenAL device
  - openal_device_open — Initialize the OpenAL audio layer
  - openal_listener_get — Retrieve a listener property
  - openal_listener_set — Set a listener property
  - openal_source_create — Generate a source resource
  - openal_source_destroy — Destroy a source resource
  - openal_source_get — Retrieve an OpenAL source property
  - openal_source_pause — Pause the source
  - openal_source_play — Start playing the source
  - openal_source_rewind — Rewind the source
  - openal_source_set — Set source property
  - openal_source_stop — Stop playing the source
  - openal_stream — Begin streaming on a source

- OpenAL — OpenAL Audio Bindings
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - OpenAL İşlevleri

# Kimlik Doğrulama Hizmetleri

# Radius

# Giriş

This package is based on the libradius (Remote Authentication Dial In User Service) of FreeBSD. It allows clients to perform authentication and accounting by means of network requests to remote servers.

This PECL extension adds full support for Radius Authentication (» RFC 2865) and Radius Accounting (» RFC 2866). This package is available for Unix (tested on FreeBSD and Linux) and for Windows.

> Bilginize: An exact description for libradius can be found » here. A detailed description of the configuration file can be found » here.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/radius.

# Öntanımlı Sabitler

## İçindekiler

- RADIUS Options
- RADIUS Packet Types
- RADIUS Attribute Types
- RADIUS Vendor Specific Attribute Types

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`RADIUS_MPPE_KEY_LEN` (int)
  The maximum length of MPPE keys.

## RADIUS Options

Several RADIUS functions accept option flags as bitmasks. The constants representing those flags are listed below.

`RADIUS_OPTION_SALT` (int)
  When set, this option will result in the attribute value being salt-encrypted.
`RADIUS_OPTION_TAGGED` (int)
  When set, this option will result in the attribute value being tagged with the value of the tag parameter.

## RADIUS Packet Types

RADIUS packets, whether requests or responses, always include a type. These constants are provided to make it easier to specify types when using radius_create_request() and when comparing the result of radius_send_request().

`RADIUS_ACCESS_REQUEST` (int)
  An Access-Request, used to authenticate a user against a RADIUS server. Access request packets must include a `RADIUS_NAS_IP_ADDRESS` or a `RADIUS_NAS_IDENTIFIER` attribute, must also include a `RADIUS_USER_PASSWORD`, `RADIUS_CHAP_PASSWORD` or a `RADIUS_STATE` attribute, and should include a `RADIUS_USER_NAME` attribute.
`RADIUS_ACCESS_ACCEPT` (int)
  An Access-Accept response to an Access-Request indicating that the RADIUS server authenticated the user successfully.
`RADIUS_ACCESS_REJECT` (int)
  An Access-Reject response to an Access-Request indicating that the RADIUS server could not authenticate the user.
`RADIUS_ACCESS_CHALLENGE` (int)
  An Access-Challenge response to an Access-Request indicating that the RADIUS server requires further information in another Access-Request before authenticating the user.
`RADIUS_ACCOUNTING_REQUEST` (int)
  An Accounting-Request, used to convey accounting information for a service to the RADIUS server.
`RADIUS_ACCOUNTING_RESPONSE` (int)
  An Accounting-Response response to an Accounting-Request.
`RADIUS_COA_REQUEST` (int)
  A CoA-Request, sent from the RADIUS server to indicate that the authorisations within the user session have changed. A response must be sent in the form of a CoA-ACK or a CoA-NAK. This constant is available in PECL radius 1.3.0 and later.
`RADIUS_COA_ACK` (int)
  A CoA-ACK, sent to the RADIUS server to indicate that the user authorisations have been updated. This constant is available in PECL radius 1.3.0 and later.
`RADIUS_COA_NAK` (int)
  A CoA-NAK, sent to the RADIUS server to indicate that the user authorisations could not be updated. This constant is available in PECL radius 1.3.0 and later.
`RADIUS_DISCONNECT_REQUEST` (int)
  A Disconnect-Request, sent from the RADIUS server to indicate that the user session must be terminated. This constant is available in PECL radius 1.3.0 and later.
`RADIUS_DISCONNECT_ACK` (int)
  A Disconnect-ACK, sent to the RADIUS server to indicate that the user session has been terminated. This constant is available in PECL radius 1.3.0 and later.
`RADIUS_DISCONNECT_NAK` (int)
  A Disconnect-NAK, sent to the RADIUS server to indicate that the user session could not be terminated. This constant is available in PECL radius 1.3.0 and later.

## RADIUS Attribute Types

These constants define RADIUS attribute types that can be used with radius_put_addr(), radius_put_attr(), radius_put_int() and radius_put_string().

`RADIUS_USER_NAME` (int)
  The User-Name attribute. The attribute value is expected to be a string containing the name of the user being authenticated, and can be set using radius_put_attr().
`RADIUS_USER_PASSWORD` (int)
  The User-Password attribute. The attribute value is expected to be a string containing the user's password, and can be set using radius_put_attr(). This value will be obfuscated on transmission as described in » section 5.2 of RFC 2865.
`RADIUS_CHAP_PASSWORD` (int)
  The Chap-Password attribute. The attribute value is expected to be a string with the first byte containing the CHAP identifier, and the subsequent 16 bytes containing the MD5 hash of the CHAP identifier, the plaintext password and the CHAP challenge value concatenated together. Note that the CHAP challenge value should also be sent separately in a `RADIUS_CHAP_CHALLENGE` attribute.

  Örnek 1 Using CHAP passwords

      <?php
      // Firstly, we'll create an authentication handle and request.
      $radh = radius_auth_open();
      radius_add_server($radh, $server, $port, $secret, 3, 3);
      radius_create_request($radh, RADIUS_ACCESS_REQUEST);

      // Assuming $password contains the plaintext password, we now:

      // Generate a challenge.
      $challenge = mt_rand();

      // Specify a CHAP identifier.
      $ident = 1;

      // Add the Chap-Password attribute.
      $cp = hash('md5', pack('Ca*', $ident, $password.$challenge), true);
      radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);

      // Add the Chap-Challenge attribute.
      radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);

      /* From here, you would add the remaining attributes and
       * call radius_send_request(). */
      ?>

`RADIUS_NAS_IP_ADDRESS` (int)
  The NAS-IP-Address attribute. The attribute value is expected to the IP address of the RADIUS client encoded as an int, which can be set using radius_put_addr().
`RADIUS_NAS_PORT` (int)
  The NAS-Port attribute. The attribute value is expected to be the physical port of the user on the RADIUS client encoded as an int, which can be set using radius_put_int().
`RADIUS_SERVICE_TYPE` (int)
  The Service-Type attribute. The attribute value indicates the service type the user is requesting, and is expected to be an int, which can be set using radius_put_int().

  A number of constants are provided to represent the possible values of this attribute. They include:

  - `RADIUS_LOGIN`
  - `RADIUS_FRAMED`
  - `RADIUS_CALLBACK_LOGIN`
  - `RADIUS_CALLBACK_FRAMED`
  - `RADIUS_OUTBOUND`
  - `RADIUS_ADMINISTRATIVE`
  - `RADIUS_NAS_PROMPT`
  - `RADIUS_AUTHENTICATE_ONLY`
  - `RADIUS_CALLBACK_NAS_PROMPT`
`RADIUS_FRAMED_PROTOCOL` (int)

  The Framed-Protocol attribute. The attribute value is expected to be an int indicating the framing to be used for framed access, and can be set using radius_put_int(). The possible attribute values include these constants:

  - `RADIUS_PPP`
  - `RADIUS_SLIP`
  - `RADIUS_ARAP`
  - `RADIUS_GANDALF`
  - `RADIUS_XYLOGICS`
`RADIUS_FRAMED_IP_ADDRESS` (int)
  The Framed-IP-Address attribute. The attribute value is expected to be the address of the user's network encoded as an int, which can be set using radius_put_addr() and retrieved using radius_cvt_addr().
`RADIUS_FRAMED_IP_NETMASK` (int)
  The Framed-IP-Netmask attribute. The attribute value is expected to be the netmask of the user's network encoded as an int, which can be set using radius_put_addr() and retrieved using radius_cvt_addr().
`RADIUS_FRAMED_ROUTING` (int)
  The Framed-Routing attribute. The attribute value is expected to be an int indicating the routing method for the user, which can be set using radius_put_int().

  Possible values include:

  - `0`: No routing
  - `1`: Send routing packets
  - `2`: Listen for routing packets
  - `3`: Send and listen
`RADIUS_FILTER_ID` (int)
  The Filter-ID attribute. The attribute value is expected to be an implementation-specific, human-readable string of filters, which can be set using radius_put_attr().
`RADIUS_FRAMED_MTU` (int)
  The Framed-MTU attribute. The attribute value is expected to be an int indicating the MTU to be configured for the user, and can be set using radius_put_int().
`RADIUS_FRAMED_COMPRESSION` (int)

  The Framed-Compression attribute. The attribute value is expected to be an int indicating the compression protocol to be used, and can be set using radius_put_int(). Possible values include these constants:

  - `RADIUS_COMP_NONE`: No compression
  - `RADIUS_COMP_VJ`: VJ TCP/IP header compression
  - `RADIUS_COMP_IPXHDR`: IPX header compression
  - `RADIUS_COMP_STAC_LZS`: Stac-LZS compression (added in PECL radius 1.3.0b2)
`RADIUS_LOGIN_IP_HOST` (int)
  The Login-IP-Host attribute. The attribute value is expected to the IP address to connect the user to, encoded as an int, which can be set using radius_put_addr().
`RADIUS_LOGIN_SERVICE` (int)
  The Login-Service attribute. The attribute value is an int indicating the service to connect the user to on the login host. The value can be converted to a PHP integer via radius_cvt_int().
`RADIUS_LOGIN_TCP_PORT` (int)
  The Login-TCP-Port attribute. The attribute value is an int indicating the port to connect the user to on the login host. The value can be converted to a PHP integer via radius_cvt_int().
`RADIUS_REPLY_MESSAGE` (int)
  The Reply-Message attribute. The attribute value is a string containing text that may be displayed to the user in response to an access request.
`RADIUS_CALLBACK_NUMBER` (int)
  The Callback-Number attribute. The attribute value is a string containing the dialing string to use for callback.
`RADIUS_CALLBACK_ID` (int)
  The Callback-Id attribute. The attribute value is a string containing an implementation-specific name of the place to be called.
`RADIUS_FRAMED_ROUTE` (int)
  The Framed-Route attribute. The attribute value is a string containing an implementation-specific set of routes to be configured for the user.
`RADIUS_FRAMED_IPX_NETWORK` (int)
  The Framed-IPX-Network attribute. The attribute value is an int containing the IPX network to be configured for the user, or `0xFFFFFFFE` to indicate that the RADIUS client should select the network, and can be accessed via radius_cvt_int().
`RADIUS_STATE` (int)
  The State attribute. The attribute value is an implementation-defined string included in an Access-Challenge from a server that must be included in the subsequent Access-Request, and can be set using radius_put_attr().
`RADIUS_CLASS` (int)
  The Class attribute. The attribute value is an arbitrary string included in an Access-Accept message that should then be sent to the accounting server in Accounting-Request messages, and can be set using radius_put_attr().
`RADIUS_VENDOR_SPECIFIC` (int)
  The Vendor-Specific attribute. In general, vendor attribute values should be set using radius_put_vendor_addr(), radius_put_vendor_attr(), radius_put_vendor_int() and radius_put_vendor_string(), rather than directly. This constant is mostly useful when interpreting vendor specific attributes in responses from a RADIUS server; when a vendor specific attribute is received, the radius_get_vendor_attr() function should be used to access the vendor ID, attribute type and attribute value.
`RADIUS_SESSION_TIMEOUT` (int)
  Session timeout
`RADIUS_IDLE_TIMEOUT` (int)
  Idle timeout
`RADIUS_TERMINATION_ACTION` (int)
  Termination action
`RADIUS_CALLED_STATION_ID` (int)
  Called Station Id
`RADIUS_CALLING_STATION_ID` (int)
  Calling Station Id
`RADIUS_NAS_IDENTIFIER` (int)
  NAS ID
`RADIUS_PROXY_STATE` (int)
  Proxy State
`RADIUS_LOGIN_LAT_SERVICE` (int)
  Login LAT Service
`RADIUS_LOGIN_LAT_NODE` (int)
  Login LAT Node
`RADIUS_LOGIN_LAT_GROUP` (int)
  Login LAT Group
`RADIUS_FRAMED_APPLETALK_LINK` (int)
  Framed Appletalk Link
`RADIUS_FRAMED_APPLETALK_NETWORK` (int)
  Framed Appletalk Network
`RADIUS_FRAMED_APPLETALK_ZONE` (int)
  Framed Appletalk Zone
`RADIUS_CHAP_CHALLENGE` (int)
  Challenge
`RADIUS_NAS_PORT_TYPE` (int)

  NAS port type, one of:

  - `RADIUS_ASYNC`
  - `RADIUS_SYNC`
  - `RADIUS_ISDN_SYNC`
  - `RADIUS_ISDN_ASYNC_V120`
  - `RADIUS_ISDN_ASYNC_V110`
  - `RADIUS_VIRTUAL`
  - `RADIUS_PIAFS`
  - `RADIUS_HDLC_CLEAR_CHANNEL`
  - `RADIUS_X_25`
  - `RADIUS_X_75`
  - `RADIUS_G_3_FAX`
  - `RADIUS_SDSL`
  - `RADIUS_ADSL_CAP`
  - `RADIUS_ADSL_DMT`
  - `RADIUS_IDSL`
  - `RADIUS_ETHERNET`
  - `RADIUS_XDSL`
  - `RADIUS_CABLE`
  - `RADIUS_WIRELESS_OTHER`
  - `RADIUS_WIRELESS_IEEE_802_11`
`RADIUS_PORT_LIMIT` (int)
  Port Limit
`RADIUS_LOGIN_LAT_PORT` (int)
  Login LAT Port
`RADIUS_CONNECT_INFO` (int)
  Connect info
`RADIUS_ACCT_STATUS_TYPE` (int)

  Accounting status type, one of:

  - `RADIUS_START`
  - `RADIUS_STOP`
  - `RADIUS_ACCOUNTING_ON`
  - `RADIUS_ACCOUNTING_OFF`
`RADIUS_ACCT_DELAY_TIME` (int)
  Accounting delay time
`RADIUS_ACCT_INPUT_OCTETS` (int)
  Accounting input bytes
`RADIUS_ACCT_OUTPUT_OCTETS` (int)
  Accounting output bytes
`RADIUS_ACCT_SESSION_ID` (int)
  Accounting session ID
`RADIUS_ACCT_AUTHENTIC` (int)

  Accounting authentic, one of:

  - `RADIUS_AUTH_RADIUS`
  - `RADIUS_AUTH_LOCAL`
  - `RADIUS_AUTH_REMOTE`
`RADIUS_ACCT_SESSION_TIME` (int)
  Accounting session time
`RADIUS_ACCT_INPUT_PACKETS` (int)
  Accounting input packets
`RADIUS_ACCT_OUTPUT_PACKETS` (int)
  Accounting output packets
`RADIUS_ACCT_TERMINATE_CAUSE` (int)

  Accounting terminate cause, one of:

  - `RADIUS_TERM_USER_REQUEST`
  - `RADIUS_TERM_LOST_CARRIER`
  - `RADIUS_TERM_LOST_SERVICE`
  - `RADIUS_TERM_IDLE_TIMEOUT`
  - `RADIUS_TERM_SESSION_TIMEOUT`
  - `RADIUS_TERM_ADMIN_RESET`
  - `RADIUS_TERM_ADMIN_REBOOT`
  - `RADIUS_TERM_PORT_ERROR`
  - `RADIUS_TERM_NAS_ERROR`
  - `RADIUS_TERM_NAS_REQUEST`
  - `RADIUS_TERM_NAS_REBOOT`
  - `RADIUS_TERM_PORT_UNNEEDED`
  - `RADIUS_TERM_PORT_PREEMPTED`
  - `RADIUS_TERM_PORT_SUSPENDED`
  - `RADIUS_TERM_SERVICE_UNAVAILABLE`
  - `RADIUS_TERM_CALLBACK`
  - `RADIUS_TERM_USER_ERROR`
  - `RADIUS_TERM_HOST_REQUEST`
`RADIUS_ACCT_MULTI_SESSION_ID` (int)
  Accounting multi session ID
`RADIUS_ACCT_LINK_COUNT` (int)
  Accounting link count

Service-Type Constants
`RADIUS_LOGIN`
`RADIUS_FRAMED`
`RADIUS_CALLBACK_LOGIN`
`RADIUS_CALLBACK_FRAMED`
`RADIUS_OUTBOUND`
`RADIUS_ADMINISTRATIVE`
`RADIUS_NAS_PROMPT`
`RADIUS_AUTHENTICATE_ONLY`
`RADIUS_CALLBACK_NAS_PROMPT`

Framed-Protocol Constants
`RADIUS_PPP`
`RADIUS_SLIP`
`RADIUS_ARAP`
`RADIUS_GANDALF`
`RADIUS_XYLOGICS`

Framed-Compression Constants
`RADIUS_COMP_NONE`
`RADIUS_COMP_VJ`
`RADIUS_COMP_IPXHDR`
`RADIUS_COMP_STAC_LZS`

NAS Port Type Constants
`RADIUS_ASYNC`
`RADIUS_SYNC`
`RADIUS_ISDN_SYNC`
`RADIUS_ISDN_ASYNC_V120`
`RADIUS_ISDN_ASYNC_V110`
`RADIUS_VIRTUAL`
`RADIUS_PIAFS`
`RADIUS_HDLC_CLEAR_CHANNEL`
`RADIUS_X_25`
`RADIUS_X_75`
`RADIUS_G_3_FAX`
`RADIUS_SDSL`
`RADIUS_ADSL_CAP`
`RADIUS_ADSL_DMT`
`RADIUS_IDSL`
`RADIUS_ETHERNET`
`RADIUS_XDSL`
`RADIUS_CABLE`
`RADIUS_WIRELESS_OTHER`
`RADIUS_WIRELESS_IEEE_802_11`

Accounting Status Type Constants
`RADIUS_START`
`RADIUS_STOP`
`RADIUS_ACCOUNTING_ON`
`RADIUS_ACCOUNTING_OFF`

Accounting Authentic Constants
`RADIUS_AUTH_RADIUS`
`RADIUS_AUTH_LOCAL`
`RADIUS_AUTH_REMOTE`

Accounting Terminate Cause Constants
`RADIUS_TERM_USER_REQUEST`
`RADIUS_TERM_LOST_CARRIER`
`RADIUS_TERM_LOST_SERVICE`
`RADIUS_TERM_IDLE_TIMEOUT`
`RADIUS_TERM_SESSION_TIMEOUT`
`RADIUS_TERM_ADMIN_RESET`
`RADIUS_TERM_ADMIN_REBOOT`
`RADIUS_TERM_PORT_ERROR`
`RADIUS_TERM_NAS_ERROR`
`RADIUS_TERM_NAS_REQUEST`
`RADIUS_TERM_NAS_REBOOT`
`RADIUS_TERM_PORT_UNNEEDED`
`RADIUS_TERM_PORT_PREEMPTED`
`RADIUS_TERM_PORT_SUSPENDED`
`RADIUS_TERM_SERVICE_UNAVAILABLE`
`RADIUS_TERM_CALLBACK`
`RADIUS_TERM_USER_ERROR`
`RADIUS_TERM_HOST_REQUEST`

## RADIUS Vendor Specific Attribute Types

`RADIUS_VENDOR_MICROSOFT` (int)

  Microsoft specific vendor attributes (» RFC 2548), one of:

  - `RADIUS_MICROSOFT_MS_CHAP_RESPONSE`
  - `RADIUS_MICROSOFT_MS_CHAP_ERROR`
  - `RADIUS_MICROSOFT_MS_CHAP_PW_1`
  - `RADIUS_MICROSOFT_MS_CHAP_PW_2`
  - `RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW`
  - `RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW`
  - `RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY`
  - `RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES`
  - `RADIUS_MICROSOFT_MS_RAS_VENDOR`
  - `RADIUS_MICROSOFT_MS_CHAP_DOMAIN`
  - `RADIUS_MICROSOFT_MS_CHAP_CHALLENGE`
  - `RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS`
  - `RADIUS_MICROSOFT_MS_BAP_USAGE`
  - `RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD`
  - `RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT`
  - `RADIUS_MICROSOFT_MS_MPPE_SEND_KEY`
  - `RADIUS_MICROSOFT_MS_MPPE_RECV_KEY`
  - `RADIUS_MICROSOFT_MS_RAS_VERSION`
  - `RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD`
  - `RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD`
  - `RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON`
  - `RADIUS_MICROSOFT_MS_FILTER`
  - `RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE`
  - `RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE`
  - `RADIUS_MICROSOFT_MS_CHAP2_RESPONSE`
  - `RADIUS_MICROSOFT_MS_CHAP2_SUCCESS`
  - `RADIUS_MICROSOFT_MS_CHAP2_PW`
  - `RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER`
  - `RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER`
  - `RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER`
  - `RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER`
  - `RADIUS_MICROSOFT_MS_ARAP_CHALLENGE`
`RADIUS_MICROSOFT_MS_CHAP_RESPONSE`
`RADIUS_MICROSOFT_MS_CHAP_ERROR`
`RADIUS_MICROSOFT_MS_CHAP_PW_1`
`RADIUS_MICROSOFT_MS_CHAP_PW_2`
`RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW`
`RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW`
`RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY`
`RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES`
`RADIUS_MICROSOFT_MS_RAS_VENDOR`
`RADIUS_MICROSOFT_MS_CHAP_DOMAIN`
`RADIUS_MICROSOFT_MS_CHAP_CHALLENGE`
`RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS`
`RADIUS_MICROSOFT_MS_BAP_USAGE`
`RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD`
`RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT`
`RADIUS_MICROSOFT_MS_MPPE_SEND_KEY`
`RADIUS_MICROSOFT_MS_MPPE_RECV_KEY`
`RADIUS_MICROSOFT_MS_RAS_VERSION`
`RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD`
`RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD`
`RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON`
`RADIUS_MICROSOFT_MS_FILTER`
`RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE`
`RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE`
`RADIUS_MICROSOFT_MS_CHAP2_RESPONSE`
`RADIUS_MICROSOFT_MS_CHAP2_SUCCESS`
`RADIUS_MICROSOFT_MS_CHAP2_PW`
`RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER`
`RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER`
`RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER`
`RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER`
`RADIUS_MICROSOFT_MS_ARAP_CHALLENGE`

# Örnekler

Howto start?

- get a radius resource
- configure the library
- create the request
- put attributes
- send the request
- receive attributes
- close the radius resource (optional)

Take also a look at the examples in this package.

The package contains an example php script. This script demonstrates howto authenticate with radius using PAP or CHAP (md5). If you authenticate with Microsoft Radius servers then its not possible to use CHAP (md5). If you would like to authenticate with Microsoft Servers you have to use MS-CHAPv1 or MS-CHAPv2, but its more complicated, because you need md4, sha1 and des to generate the right data. The enclosed examples demonstrate all authentication-methods, including MS-CHAPv1 and MS-CHAPv2. To get the MS-CHAP to work you need the mcrypt and the mhash extension, starting with version 1.2 of the package, the mcrypt extension is no longer needed.

# Radius İşlevleri

# radius_acct_open

(PECL radius >= 1.1.0)

radius_acct_open — Creates a Radius handle for accounting

### Açıklama

function radius_acct_open(): resource

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a handle on success, `false` on error. This function only fails if insufficient memory is available.

### Örnekler

Örnek 1 radius_acct_open() example

    <?php
    $res = radius_acct_open ()
        or die ("Could not create handle");
    print "Handle successfully created";
    ?>

# radius_add_server

(PECL radius >= 1.1.0)

radius_add_server — Adds a server

### Açıklama

function radius_add_server(
resource `$radius_handle`,
string `$hostname`,
int `$port`,
string `$secret`,
int `$timeout`,
int `$max_tries`
): bool

radius_add_server() may be called multiple times, and it may be used together with radius_config(). At most 10 servers may be specified. When multiple servers are given, they are tried in round-robin fashion until a valid response is received, or until each server's `max_tries` limit has been reached.

### Bağımsız Değişkenler

`radius_handle`
`hostname`
  The `hostname` parameter specifies the server host, either as a fully qualified domain name or as a dotted-quad IP address in text form.
`port`

  The `port` specifies the UDP port to contact on the server. If port is given as 0, the library looks up the `radius/udp` or `radacct/udp` service in the network services database, and uses the port found there. If no entry is found, the library uses the standard Radius ports, 1812 for authentication and 1813 for accounting.

`secret`
  The shared secret for the server host is passed to the `secret` parameter. The Radius protocol ignores all but the leading 128 bytes of the shared secret.
`timeout`
  The timeout for receiving replies from the server is passed to the `timeout` parameter, in units of seconds.
`max_tries`
  The maximum number of repeated requests to make before giving up is passed into the `max_tries`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 radius_add_server() example

    <?php
    if (!radius_add_server($res, 'radius.example.com', 1812, 'testing123', 3, 3)) {
        echo 'RadiusError:' . radius_strerror($res). "\n<br>";
        exit;
    }
    ?>

### Ayrıca Bakınız

- radius_config() - Causes the library to read the given configuration file

# radius_auth_open

(PECL radius >= 1.1.0)

radius_auth_open — Creates a Radius handle for authentication

### Açıklama

function radius_auth_open(): resource

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a handle on success, `false` on error. This function only fails if insufficient memory is available.

### Örnekler

Örnek 1 radius_auth_open() example

    <?php
    $radh = radius_auth_open()
        or die ("Could not create handle");
    echo "Handle successfully created";
    ?>

# radius_close

(PECL radius >= 1.1.0)

radius_close — Frees all ressources

### Açıklama

function radius_close(resource `$radius_handle`): bool

It is not needed to call this function because php frees all resources at the end of each request.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# radius_config

(PECL radius >= 1.1.0)

radius_config — Causes the library to read the given configuration file

### Açıklama

function radius_config(resource `$radius_handle`, string `$file`): bool

Before issuing any Radius requests, the library must be made aware of the servers it can contact. The easiest way to configure the library is to call radius_config(). radius_config() causes the library to read a configuration file whose format is described in » radius.conf.

### Bağımsız Değişkenler

`radius_handle`
`file`
  The pathname of the configuration file is passed as the file argument to radius_config(). The library can also be configured programmatically by calls to radius_add_server().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- radius_add_server() - Adds a server

# radius_create_request

(PECL radius >= 1.1.0)

radius_create_request — Create accounting or authentication request

### Açıklama

function radius_create_request(resource `$radius_handle`, int `$type`): bool

A Radius request consists of a code specifying the kind of request, and zero or more attributes which provide additional information. To begin constructing a new request, call radius_create_request().

> Bilginize: Attention: You must call this function, before you can put any attribute!

### Bağımsız Değişkenler

`radius_handle`
`type`
  Type is `RADIUS_ACCESS_REQUEST` or `RADIUS_ACCOUNTING_REQUEST`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 radius_create_request() example

    <?php
    if (!radius_create_request($res, RADIUS_ACCESS_REQUEST)) {
        echo 'RadiusError:' . radius_strerror($res). "\n<br />";
        exit;
    }
    ?>

### Ayrıca Bakınız

- radius_send_request() - Sends the request and waits for a reply

# radius_cvt_addr

(PECL radius >= 1.1.0)

radius_cvt_addr — Converts raw data to IP-Address

### Açıklama

function radius_cvt_addr(string `$data`): string

Converts raw data to IP-Address

### Bağımsız Değişkenler

`data`
  Input data

### Dönen Değerler

Returns the IP-Address.

### Örnekler

Örnek 1 radius_cvt_addr() example

    <?php
    while ($resa = radius_get_attr($res)) {

        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];

        switch ($attr) {

        case RADIUS_FRAMED_IP_ADDRESS:
            $ip = radius_cvt_addr($data);
            echo "IP: $ip<br>\n";
            break;

        case RADIUS_FRAMED_IP_NETMASK:
            $mask = radius_cvt_addr($data);
            echo "MASK: $mask<br>\n";
            break;
        }
    }
    ?>

### Ayrıca Bakınız

- radius_cvt_int() - Converts raw data to integer
- radius_cvt_string() - Converts raw data to string

# radius_cvt_int

(PECL radius >= 1.1.0)

radius_cvt_int — Converts raw data to integer

### Açıklama

function radius_cvt_int(string `$data`): int

Converts raw data to integer

### Bağımsız Değişkenler

`data`
  Input data

### Dönen Değerler

Returns the integer, retrieved from data.

### Örnekler

Örnek 1 radius_cvt_int() example

    <?php
    while ($resa = radius_get_attr($res)) {

        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];

        switch ($attr) {

        case RADIUS_FRAMED_MTU:
            $mtu = radius_cvt_int($data);
            echo "MTU: $mtu<br>\n";
            break;
        }
    }
    ?>

### Ayrıca Bakınız

- radius_cvt_addr() - Converts raw data to IP-Address
- radius_cvt_string() - Converts raw data to string

# radius_cvt_string

(PECL radius >= 1.1.0)

radius_cvt_string — Converts raw data to string

### Açıklama

function radius_cvt_string(string `$data`): string

Converts raw data to string

### Bağımsız Değişkenler

`data`
  Input data

### Dönen Değerler

Returns the string, retrieved from data.

### Örnekler

Örnek 1 radius_cvt_string() example

    <?php
    while ($resa = radius_get_attr($res)) {

        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];

        switch ($attr) {

        case RADIUS_FILTER_ID:
            $id = radius_cvt_string($data);
            echo "Filter ID: $id<br>\n";
            break;
        }
    }
    ?>

### Ayrıca Bakınız

- radius_cvt_addr() - Converts raw data to IP-Address
- radius_cvt_int() - Converts raw data to integer

# radius_demangle

(PECL radius >= 1.2.0)

radius_demangle — Demangles data

### Açıklama

function radius_demangle(resource `$radius_handle`, string `$mangled`): string

Some data (Passwords, MS-CHAPv1 MPPE-Keys) is mangled for security reasons, and must be demangled before you can use them.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`mangled`
  The mangled data to demangle

### Dönen Değerler

Returns the demangled string, or `false` on error.

# radius_demangle_mppe_key

(PECL radius >= 1.2.0)

radius_demangle_mppe_key — Derives mppe-keys from mangled data

### Açıklama

function radius_demangle_mppe_key(resource `$radius_handle`, string `$mangled`): string

When using MPPE with MS-CHAPv2, the send- and recv-keys are mangled (see » RFC 2548), however this function is useless, because I don't think that there is or will be a PPTP-MPPE implementation in PHP.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`mangled`
  The mangled data to demangle

### Dönen Değerler

Returns the demangled string, or `false` on error.

# radius_get_attr

(PECL radius >= 1.1.0)

radius_get_attr — Extracts an attribute

### Açıklama

function radius_get_attr(resource `$radius_handle`): mixed

Like Radius requests, each response may contain zero or more attributes. After a response has been received successfully by radius_send_request(), its attributes can be extracted one by one using radius_get_attr(). Each time radius_get_attr() is called, it gets the next attribute from the current response.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

Returns an associative array containing the attribute-type and the data, or error number <= 0.

### Örnekler

Örnek 1 radius_get_attr() example

    <?php
    while ($resa = radius_get_attr($res)) {

        if (!is_array($resa)) {
            printf("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];
        printf("Got Attr:%d %d Bytes %s\n", $attr, strlen($data), bin2hex($data));
    }
    ?>

### Ayrıca Bakınız

- radius_put_attr() - Attaches a binary attribute
- radius_get_vendor_attr() - Extracts a vendor specific attribute
- radius_put_vendor_attr() - Attaches a vendor specific binary attribute
- radius_send_request() - Sends the request and waits for a reply

# radius_get_tagged_attr_data

(PECL radius >= 1.3.0)

radius_get_tagged_attr_data — Extracts the data from a tagged attribute

### Açıklama

function radius_get_tagged_attr_data(string `$data`): string|false

If a tagged attribute has been returned from radius_get_attr(), radius_get_tagged_attr_data() will return the data from the attribute.

### Bağımsız Değişkenler

`data`
  The tagged attribute to be decoded.

### Dönen Değerler

Returns the data from the tagged attribute başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 radius_get_tagged_attr_data() example

    <?php
    while ($resa = radius_get_attr($res)) {
        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];

        $tag = radius_get_tagged_attr_tag($data);
        $value = radius_get_tagged_attr_data($data);

        printf("Got tagged attribute with tag %d and value %s\n", $tag, $value);
    }
    ?>

### Ayrıca Bakınız

- radius_get_attr() - Extracts an attribute
- radius_get_tagged_attr_tag() - Extracts the tag from a tagged attribute

# radius_get_tagged_attr_tag

(PECL radius >= 1.3.0)

radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute

### Açıklama

function radius_get_tagged_attr_tag(string `$data`): int|false

If a tagged attribute has been returned from radius_get_attr(), radius_get_tagged_attr_data() will return the tag from the attribute.

### Bağımsız Değişkenler

`data`
  The tagged attribute to be decoded.

### Dönen Değerler

Returns the tag from the tagged attribute başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 radius_get_tagged_attr_tag() example

    <?php
    while ($resa = radius_get_attr($res)) {
        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];

        $tag = radius_get_tagged_attr_tag($data);
        $value = radius_get_tagged_attr_data($data);

        printf("Got tagged attribute with tag %d and value %s\n", $tag, $value);
    }
    ?>

### Ayrıca Bakınız

- radius_get_attr() - Extracts an attribute
- radius_get_tagged_attr_data() - Extracts the data from a tagged attribute

# radius_get_vendor_attr

(PECL radius >= 1.1.0)

radius_get_vendor_attr — Extracts a vendor specific attribute

### Açıklama

function radius_get_vendor_attr(string `$data`): array|false

If radius_get_attr() returns `RADIUS_VENDOR_SPECIFIC`, radius_get_vendor_attr() may be called to determine the vendor.

### Bağımsız Değişkenler

`data`
  Input data

### Dönen Değerler

Returns an associative array containing the attribute-type, vendor and the data, or `false` on error.

### Örnekler

Örnek 1 radius_get_vendor_attr() example

    <?php
    while ($resa = radius_get_attr($res)) {

        if (!is_array($resa)) {
            printf ("Error getting attribute: %s\n",  radius_strerror($res));
            exit;
        }

        $attr = $resa['attr'];
        $data = $resa['data'];
        printf("Got Attr:%d %d Bytes %s\n", $attr, strlen($data), bin2hex($data));
        if ($attr == RADIUS_VENDOR_SPECIFIC) {

            $resv = radius_get_vendor_attr($data);
            if (is_array($resv)) {
                $vendor = $resv['vendor'];
                $attrv = $resv['attr'];
                $datav = $resv['data'];
                printf("Got Vendor Attr:%d %d Bytes %s\n", $attrv, strlen($datav), bin2hex($datav));
            }

        }
    }
    ?>

### Ayrıca Bakınız

- radius_get_attr() - Extracts an attribute
- radius_put_vendor_attr() - Attaches a vendor specific binary attribute

# radius_put_addr

(PECL radius >= 1.1.0)

radius_put_addr — Attaches an IP address attribute

### Açıklama

function radius_put_addr(
resource `$radius_handle`,
int `$type`,
string `$addr`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches an IP address attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`type`

  The attribute type.

`addr`
  An IPv4 address in string form, such as `10.0.0.1`.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

# radius_put_attr

(PECL radius >= 1.1.0)

radius_put_attr — Attaches a binary attribute

### Açıklama

function radius_put_attr(
resource `$radius_handle`,
int `$type`,
string `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches a binary attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`type`

  The attribute type.

`value`
  The attribute value, which will be treated as a raw binary string.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Örnekler

Örnek 1 radius_put_attr() example

    <?php
    mt_srand(time());
    $chall = mt_rand();
    $chapval = hash('md5', pack('Ca*',1 , 'sepp' . $chall));
    $pass = pack('CH*', 1, $chapval);
    if (!radius_put_attr($res, RADIUS_CHAP_PASSWORD, $pass)) {
        echo 'RadiusError:' . radius_strerror($res). "\n<br />";
        exit;
    }
    ?>

### Ayrıca Bakınız

- radius_get_attr() - Extracts an attribute
- radius_get_vendor_attr() - Extracts a vendor specific attribute
- radius_put_vendor_attr() - Attaches a vendor specific binary attribute

# radius_put_int

(PECL radius >= 1.1.0)

radius_put_int — Attaches an integer attribute

### Açıklama

function radius_put_int(
resource `$radius_handle`,
int `$type`,
int `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches an integer attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`type`

  The attribute type.

`value`
  The attribute value.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Örnekler

Örnek 1 radius_put_int() example

    <?php
    if (!radius_put_int($res, RAD_FRAMED_PROTOCOL, RAD_PPP)) {
       echo 'RadiusError:' . radius_strerror($res). "\n<br />";
       exit;
    }
    ?>

### Ayrıca Bakınız

- radius_put_string() - Attaches a string attribute
- radius_put_vendor_int() - Attaches a vendor specific integer attribute
- radius_put_vendor_string() - Attaches a vendor specific string attribute

# radius_put_string

(PECL radius >= 1.1.0)

radius_put_string — Attaches a string attribute

### Açıklama

function radius_put_string(
resource `$radius_handle`,
int `$type`,
string `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches a string attribute to the current RADIUS request. In general, radius_put_attr() is a more useful function for attaching string attributes, as it is binary safe.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`type`

  The attribute type.

`value`
  The attribute value. This value is expected by the underlying library to be null terminated, therefore this parameter is not binary safe.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Örnekler

Örnek 1 radius_put_string() example

    <?php
    if (!radius_put_string($res, RADIUS_USER_NAME, 'billy')) {
        echo 'RadiusError:' . radius_strerror($res). "\n<br />";
        exit;
    }
    ?>

### Ayrıca Bakınız

- radius_put_int() - Attaches an integer attribute
- radius_put_vendor_int() - Attaches a vendor specific integer attribute
- radius_put_vendor_string() - Attaches a vendor specific string attribute

# radius_put_vendor_addr

(PECL radius >= 1.1.0)

radius_put_vendor_addr — Attaches a vendor specific IP address attribute

### Açıklama

function radius_put_vendor_addr(
resource `$radius_handle`,
int `$vendor`,
int `$type`,
string `$addr`
): bool

Attaches an IP address vendor specific attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`vendor`

  The vendor ID.

`type`

  The attribute type.

`addr`
  An IPv4 address in string form, such as `10.0.0.1`.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

# radius_put_vendor_attr

(PECL radius >= 1.1.0)

radius_put_vendor_attr — Attaches a vendor specific binary attribute

### Açıklama

function radius_put_vendor_attr(
resource `$radius_handle`,
int `$vendor`,
int `$type`,
string `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches a vendor specific binary attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`vendor`

  The vendor ID.

`type`

  The attribute type.

`value`
  The attribute value, which will be treated as a raw binary string.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Örnekler

Örnek 1 radius_put_vendor_attr() example

    <?php
    if (!radius_put_vendor_attr($res, RADIUS_VENDOR_MICROSOFT, RAD_MICROSOFT_MS_CHAP_CHALLENGE, $challenge)) {
        echo 'RadiusError:' . radius_strerror($res). "\n<br />";
        exit;
    }
    ?>

### Ayrıca Bakınız

- radius_get_vendor_attr() - Extracts a vendor specific attribute

# radius_put_vendor_int

(PECL radius >= 1.1.0)

radius_put_vendor_int — Attaches a vendor specific integer attribute

### Açıklama

function radius_put_vendor_int(
resource `$radius_handle`,
int `$vendor`,
int `$type`,
int `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches a vendor specific integer attribute to the current RADIUS request.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`vendor`

  The vendor ID.

`type`

  The attribute type.

`value`
  The attribute value.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Ayrıca Bakınız

- radius_put_vendor_string() - Attaches a vendor specific string attribute

# radius_put_vendor_string

(PECL radius >= 1.1.0)

radius_put_vendor_string — Attaches a vendor specific string attribute

### Açıklama

function radius_put_vendor_string(
resource `$radius_handle`,
int `$vendor`,
int `$type`,
string `$value`,
int `$options` = 0,
int `$tag` = ?
): bool

Attaches a vendor specific string attribute to the current RADIUS request. In general, radius_put_vendor_attr() is a more useful function for attaching string attributes, as it is binary safe.

> Bilginize:

> A request must be created via radius_create_request() before this function can be called.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

`vendor`

  The vendor ID.

`type`

  The attribute type.

`value`
  The attribute value. This value is expected by the underlying library to be null terminated, therefore this parameter is not binary safe.
`options`

  A bitmask of the attribute options. The available options include `RADIUS_OPTION_TAGGED` and `RADIUS_OPTION_SALT`.

`tag`

  The attribute tag. This parameter is ignored unless the `RADIUS_OPTION_TAGGED` option is set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL radius 1.3.0 | The `options` and `tag` parameters were added.

### Ayrıca Bakınız

- radius_put_vendor_int() - Attaches a vendor specific integer attribute

# radius_request_authenticator

(PECL radius >= 1.1.0)

radius_request_authenticator — Returns the request authenticator

### Açıklama

function radius_request_authenticator(resource `$radius_handle`): string

The request authenticator is needed for demangling mangled data like passwords and encryption-keys.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

Returns the request authenticator as string, or `false` on error.

### Ayrıca Bakınız

- radius_demangle() - Demangles data

# radius_salt_encrypt_attr

(PECL radius >= 1.3.0)

radius_salt_encrypt_attr — Salt-encrypts a value

### Açıklama

function radius_salt_encrypt_attr(resource `$radius_handle`, string `$data`): string|false

Applies the RADIUS salt-encryption algorithm to the given value.

In general, this is achieved automatically by providing the `RADIUS_OPTION_SALT` option to an attribute setter function, but this function can be used if low-level request construction is required.

### Bağımsız Değişkenler

`data`
  The data to be salt-encrypted.

### Dönen Değerler

Returns the salt-encrypted data başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- radius_put_addr() - Attaches an IP address attribute
- radius_put_attr() - Attaches a binary attribute
- radius_put_int() - Attaches an integer attribute
- radius_put_string() - Attaches a string attribute

# radius_send_request

(PECL radius >= 1.1.0)

radius_send_request — Sends the request and waits for a reply

### Açıklama

function radius_send_request(resource `$radius_handle`): int

After the Radius request has been constructed, it is sent by radius_send_request().

The radius_send_request() function sends the request and waits for a valid reply, retrying the defined servers in round-robin fashion as necessary.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

If a valid response is received, radius_send_request() returns the Radius code which specifies the type of the response. This will typically be `RADIUS_ACCESS_ACCEPT`, `RADIUS_ACCESS_REJECT`, or `RADIUS_ACCESS_CHALLENGE`. If no valid response is received, radius_send_request() returns `false`.

### Ayrıca Bakınız

- radius_create_request() - Create accounting or authentication request

# radius_server_secret

(PECL radius >= 1.1.0)

radius_server_secret — Returns the shared secret

### Açıklama

function radius_server_secret(resource `$radius_handle`): string

The shared secret is needed as salt for demangling mangled data like passwords and encryption-keys.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

Returns the server's shared secret as string, or `false` on error.

# radius_strerror

(PECL radius >= 1.1.0)

radius_strerror — Returns an error message

### Açıklama

function radius_strerror(resource `$radius_handle`): string

If Radius-functions fail then they record an error message. This error message can be retrieved with this function.

### Bağımsız Değişkenler

`radius_handle`

  The RADIUS resource.

### Dönen Değerler

Returns error messages as string from failed radius functions.

## İçindekiler

- radius_acct_open — Creates a Radius handle for accounting
- radius_add_server — Adds a server
- radius_auth_open — Creates a Radius handle for authentication
- radius_close — Frees all ressources
- radius_config — Causes the library to read the given configuration file
- radius_create_request — Create accounting or authentication request
- radius_cvt_addr — Converts raw data to IP-Address
- radius_cvt_int — Converts raw data to integer
- radius_cvt_string — Converts raw data to string
- radius_demangle — Demangles data
- radius_demangle_mppe_key — Derives mppe-keys from mangled data
- radius_get_attr — Extracts an attribute
- radius_get_tagged_attr_data — Extracts the data from a tagged attribute
- radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute
- radius_get_vendor_attr — Extracts a vendor specific attribute
- radius_put_addr — Attaches an IP address attribute
- radius_put_attr — Attaches a binary attribute
- radius_put_int — Attaches an integer attribute
- radius_put_string — Attaches a string attribute
- radius_put_vendor_addr — Attaches a vendor specific IP address attribute
- radius_put_vendor_attr — Attaches a vendor specific binary attribute
- radius_put_vendor_int — Attaches a vendor specific integer attribute
- radius_put_vendor_string — Attaches a vendor specific string attribute
- radius_request_authenticator — Returns the request authenticator
- radius_salt_encrypt_attr — Salt-encrypts a value
- radius_send_request — Sends the request and waits for a reply
- radius_server_secret — Returns the shared secret
- radius_strerror — Returns an error message

- Yapılandırma/Kurulum
  - Kurulum
- Öntanımlı Sabitler
  - RADIUS Options
  - RADIUS Packet Types
  - RADIUS Attribute Types
  - RADIUS Vendor Specific Attribute Types
- Örnekler
- Radius İşlevleri
  - radius_acct_open — Creates a Radius handle for accounting
  - radius_add_server — Adds a server
  - radius_auth_open — Creates a Radius handle for authentication
  - radius_close — Frees all ressources
  - radius_config — Causes the library to read the given configuration file
  - radius_create_request — Create accounting or authentication request
  - radius_cvt_addr — Converts raw data to IP-Address
  - radius_cvt_int — Converts raw data to integer
  - radius_cvt_string — Converts raw data to string
  - radius_demangle — Demangles data
  - radius_demangle_mppe_key — Derives mppe-keys from mangled data
  - radius_get_attr — Extracts an attribute
  - radius_get_tagged_attr_data — Extracts the data from a tagged attribute
  - radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute
  - radius_get_vendor_attr — Extracts a vendor specific attribute
  - radius_put_addr — Attaches an IP address attribute
  - radius_put_attr — Attaches a binary attribute
  - radius_put_int — Attaches an integer attribute
  - radius_put_string — Attaches a string attribute
  - radius_put_vendor_addr — Attaches a vendor specific IP address attribute
  - radius_put_vendor_attr — Attaches a vendor specific binary attribute
  - radius_put_vendor_int — Attaches a vendor specific integer attribute
  - radius_put_vendor_string — Attaches a vendor specific string attribute
  - radius_request_authenticator — Returns the request authenticator
  - radius_salt_encrypt_attr — Salt-encrypts a value
  - radius_send_request — Sends the request and waits for a reply
  - radius_server_secret — Returns the shared secret
  - radius_strerror — Returns an error message

- Radius
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Radius İşlevleri

# Komut Satırına Özgü Eklentiler

# GNU Readline

# Giriş

The readline functions implement an interface to the GNU Readline library. These are functions that provide editable command lines. An example being the way Bash allows you to use the arrow keys to insert characters or scroll through command history. Because of the interactive nature of this library, it will be of little use for writing Web applications, but may be useful when writing scripts used from a command line.

As of PHP 7.1.0 this extension is supported on Windows.

Dikkat

The readline extension is not thread-safe! Thus, the usage of it with any true thread safe SAPI (like Apache mod_winnt) is strongly discouraged.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

To use the readline functions, you need to install libreadline. You can find libreadline on the home page of the GNU Readline project, at » https://tiswww.case.edu/php/chet/readline/rltop.html. It's maintained by Chet Ramey, who's also the author of Bash.

You can also use these functions with the libedit library, a non-GPL replacement for the readline library. The libedit library is BSD licensed and available for download from » http://www.thrysoee.dk/editline/.

## Kurulum

To use these functions you must compile the CGI or CLI version of PHP with readline support. You need to configure PHP --with-readline[=DIR]. If you want to use the libedit readline replacement, configure PHP --with-libedit[=DIR].

On Windows this extension is available by default as of PHP 7.1.0.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Readline Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
cli.pager | "" | `INI_ALL` |
cli.prompt | "\\b \\> " | `INI_ALL` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`cli.pager` string
  External tool to display output from command line.
`cli.prompt` string
  Command line prompt.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`READLINE_LIB` (string)
  The library which is used for readline support; currently either `readline` or `libedit`.

# Readline İşlevleri

# readline

(PHP 4, PHP 5, PHP 7, PHP 8)

readline — Reads a line

### Açıklama

function readline(?string `$prompt` = `null`): string|false

Reads a single line from the user. You must add this line to the history yourself using readline_add_history().

### Bağımsız Değişkenler

`prompt`
  You may specify a string with which to prompt the user.

### Dönen Değerler

Returns a single string from the user. The line returned has the ending newline removed. If there is no more data to read, then `false` is returned.

### Örnekler

Örnek 1 readline() Example

    <?php
    //get 3 commands from user
    for ($i=0; $i < 3; $i++) {
            $line = readline("Command: ");
            readline_add_history($line);
    }

    //dump history
    print_r(readline_list_history());

    //dump variables
    print_r(readline_info());
    ?>

# readline_add_history

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_add_history — Adds a line to the history

### Açıklama

function readline_add_history(string `$prompt`): true

This function adds a line to the command line history.

### Bağımsız Değişkenler

`prompt`
  The line to be added in the history.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | The return type is `true` now; previously, it was bool.

# readline_callback_handler_install

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

readline_callback_handler_install — Initializes the readline callback interface and terminal, prints the prompt and returns immediately

### Açıklama

function readline_callback_handler_install(string `$prompt`, callable `$callback`): true

Sets up a readline callback interface then prints `prompt` and immediately returns. Calling this function twice without removing the previous callback interface will automatically and conveniently overwrite the old interface.

The callback feature is useful when combined with stream_select() as it allows interleaving of IO and user input, unlike readline().

### Bağımsız Değişkenler

`prompt`
  The prompt message.
`callback`
  The `callback` function takes one parameter; the user input returned.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | The return type is `true` now; previously, it was bool.

### Örnekler

Örnek 1 Readline Callback Interface Example

    <?php
    function rl_callback($ret)
    {
        global $c, $prompting;

        echo "You entered: $ret\n";
        $c++;

        if ($c > 10) {
            $prompting = false;
            readline_callback_handler_remove();
        } else {
            readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');
        }
    }

    $c = 1;
    $prompting = true;

    readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');

    while ($prompting) {
        $w = NULL;
        $e = NULL;
        $n = stream_select($r = array(STDIN), $w, $e, null);
        if ($n && in_array(STDIN, $r)) {
            // read a character, will call the callback when a newline is entered
            readline_callback_read_char();
        }
    }

    echo "Prompting disabled. All done.\n";
    ?>

### Ayrıca Bakınız

- readline_callback_handler_remove() - Removes a previously installed callback handler and restores terminal settings
- readline_callback_read_char() - Reads a character and informs the readline callback interface when a line is received
- stream_select() - Belirtilen akım dizisi üzerinde saniye ve mikrosaniye ile belirtilen zaman aşımıyla select() sistem çağrısının eşdeğeri olarak çalışır

# readline_callback_handler_remove

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

readline_callback_handler_remove — Removes a previously installed callback handler and restores terminal settings

### Açıklama

function readline_callback_handler_remove(): bool

Removes a previously installed callback handler and restores terminal settings.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if a previously installed callback handler was removed, or `false` if one could not be found.

### Örnekler

See readline_callback_handler_install() for an example of how to use the readline callback interface.

### Ayrıca Bakınız

- readline_callback_handler_install() - Initializes the readline callback interface and terminal, prints the prompt and returns immediately
- readline_callback_read_char() - Reads a character and informs the readline callback interface when a line is received

# readline_callback_read_char

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

readline_callback_read_char — Reads a character and informs the readline callback interface when a line is received

### Açıklama

function readline_callback_read_char(): void

Reads a character of user input. When a line is received, this function informs the readline callback interface installed using readline_callback_handler_install() that a line is ready for input.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

See readline_callback_handler_install() for an example of how to use the readline callback interface.

### Ayrıca Bakınız

- readline_callback_handler_install() - Initializes the readline callback interface and terminal, prints the prompt and returns immediately
- readline_callback_handler_remove() - Removes a previously installed callback handler and restores terminal settings

# readline_clear_history

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_clear_history — Clears the history

### Açıklama

function readline_clear_history(): true

This function clears the entire command line history.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | The return type is `true` now; previously, it was bool.

# readline_completion_function

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_completion_function — Registers a completion function

### Açıklama

function readline_completion_function(callable `$callback`): bool

This function registers a completion function. This is the same kind of functionality you'd get if you hit your tab key while using Bash.

### Bağımsız Değişkenler

`callback`
  You must supply the name of an existing function which accepts a partial command line and returns an array of possible matches.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# readline_info

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_info — Gets/sets various internal readline variables

### Açıklama

function readline_info(?string `$var_name` = `null`, int|string|bool|null `$value` = `null`): mixed

Gets or sets various internal readline variables.

### Bağımsız Değişkenler

`var_name`
  A variable name.
`value`
  If provided, this will be the new value of the setting.

### Dönen Değerler

If called with no parameters, this function returns an array of values for all the settings readline uses. The elements will be indexed by the following values: `done`, `end`, `erase_empty_line`, `library_version`, `line_buffer`, `mark`, `pending_input`, `point`, `prompt`, `readline_name`, and `terminal_name`. The array will only contain those elements which are supported by the library used to built the readline extension.

If called with one or two parameters, the old value is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `var_name` and `value` are nullable now.

# readline_list_history

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_list_history — Lists the history

### Açıklama

function readline_list_history(): array

Gets the entire command line history.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of the entire command line history. The elements are indexed by integers starting at zero.

# readline_on_new_line

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

readline_on_new_line — Inform readline that the cursor has moved to a new line

### Açıklama

function readline_on_new_line(): void

Tells readline that the cursor has moved to a new line.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Notlar

> Bilginize: This function is only available if supported by the underlying readline library. It is not supported on Windows.

# readline_read_history

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_read_history — Reads the history

### Açıklama

function readline_read_history(?string `$filename` = `null`): bool

This function reads a command history from a file.

### Bağımsız Değişkenler

`filename`
  Path to the filename containing the command history.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `filename` is nullable now.

# readline_redisplay

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

readline_redisplay — Redraws the display

### Açıklama

function readline_redisplay(): void

Redraws readline to redraw the display.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# readline_write_history

(PHP 4, PHP 5, PHP 7, PHP 8)

readline_write_history — Writes the history

### Açıklama

function readline_write_history(?string `$filename` = `null`): bool

This function writes the command history to a file.

### Bağımsız Değişkenler

`filename`
  Path to the saved file.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `filename` is nullable now.

## İçindekiler

- readline — Reads a line
- readline_add_history — Adds a line to the history
- readline_callback_handler_install — Initializes the readline callback interface and terminal, prints the prompt and returns immediately
- readline_callback_handler_remove — Removes a previously installed callback handler and restores terminal settings
- readline_callback_read_char — Reads a character and informs the readline callback interface when a line is received
- readline_clear_history — Clears the history
- readline_completion_function — Registers a completion function
- readline_info — Gets/sets various internal readline variables
- readline_list_history — Lists the history
- readline_on_new_line — Inform readline that the cursor has moved to a new line
- readline_read_history — Reads the history
- readline_redisplay — Redraws the display
- readline_write_history — Writes the history

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Readline İşlevleri
  - readline — Reads a line
  - readline_add_history — Adds a line to the history
  - readline_callback_handler_install — Initializes the readline callback interface and terminal, prints the prompt and returns immediately
  - readline_callback_handler_remove — Removes a previously installed callback handler and restores terminal settings
  - readline_callback_read_char — Reads a character and informs the readline callback interface when a line is received
  - readline_clear_history — Clears the history
  - readline_completion_function — Registers a completion function
  - readline_info — Gets/sets various internal readline variables
  - readline_list_history — Lists the history
  - readline_on_new_line — Inform readline that the cursor has moved to a new line
  - readline_read_history — Reads the history
  - readline_redisplay — Redraws the display
  - readline_write_history — Writes the history

- Readline — GNU Readline
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Readline İşlevleri

# Sıkıştırma ve Arşivleme Eklentileri

# Bzip2 Sıkıştırma

# Giriş

Bzip2 işlevleri bzip2 (.bz2) sıkıştırılmış dosyalarını şeffaf olarak okuyup yazmakta kullanılır.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

Bu modül Julian Seward tarafından hazırlanan » bzip2 kütüphanesindeki işlevleri kullanır. Bu modül için bzip2/libbzip2 sürüm >= 1.0.x gereklidir.

## Kurulum

PHP'de Bzip2 desteği öntanımlı olarak etkin değildir. PHP'yi derlerken bzip2 desteğini etkin kılmak için --with-bz2[=DİZİN] yapılandırma seçeneğini kullanmanız gerekir.

## Özkaynak Türleri

Bu eklenti tek bir özkaynak türü tanımlar: çalışılacak bz2 dosyasını betimleyen bir dosya tanıtıcısı.

# Örnekler

Bu örnekte geçici bir dosya oluşturup, içine bir deneme dizgesi yazıldıktan sonra dosya içeriği çıktılanmaktadır.

Örnek 1 - Basit bzip2 örneği

    <?php

    $dosya = '/tmp/deneme.bz2';
    $dzg = "Bu dizgi bir denemedir.\n";

    // dosyayı yazma amacıyla aç
    $bz = bzopen($dosya, 'w');

    // dosyaya dizgiyi yaz
    bzwrite($bz, $dzg);

    // dosyayı kapat
    bzclose($bz);

    // dosyayı okuma amacıyla aç
    $bz = bzopen($dosya, 'r');

    // 10 karakter oku
    echo bzread($bz, 10);

    // dosya bitene kadar (veya sonraki 1024 karaktere kadar)
    // çıkışa yazdır ve dosyayı kapat
    echo bzread($bz);

    bzclose($bz);
    ?>

# Bzip2 İşlevleri

# bzclose

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzclose — Bzip2 dosyasını kapatır

### Açıklama

function bzclose(resource `$bz`): bool

Dosya tanıtıcısı belirtilen bzip2 dosyasını kapatır.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcı. Geçerli ve bzopen() işlevi tarafından başarılı bir şekilde açılmış olan bir dosyayı göstermelidir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- bzopen() - Bzip2 sıkıştırmalı bir dosyayı açar

# bzcompress

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzcompress — Verilen dizgiyi bzip2 kodlamalı olarak sıkıştırır

### Açıklama

function bzcompress(string `$veri`, int `$blokboyu` = 4, int `$katsayı` = 0): string|int

bzcompress() verilen dizgiyi bzip2 türünde sıkıştırır ve bzip2 kodlu veri olarak döndürür.

### Bağımsız Değişkenler

`veri`
  Sıkıştırılacak dizge.
`blokboyu`
  Sıkıştırma esnasında kullanılacak blok boyu belirtilir. Bu değer 1 ile 9 arasında olmalıdır. 9 değeri en iyi sıkıştırmayı sağlamakla birlikte daha fazla özkaynak kullanır.
`katsayı`
  Bu değer verilen sıkıştırma aşamasının en kötü senaryo durumunda nasıl davranacağını belirtir. (Sık tekrarlı, asimetrik) Bu değer 0 ile 250 arasında değişir. 0 özel bir durumdur. `katsayı` değerinden bağımsız olarak, üretilen çıktı aynı olur.

### Dönen Değerler

Bir hata oluşmuşsa hata numarası ile, oluşmamışsa sıkıştırılmış dizge ile döner.

### Örnekler

Örnek 1 - Veri sıkıştırma

    <?php
    $bilgi = "örnek bilgi";
    $bzbilgi = bzcompress($bilgi, 9);
    echo $bzbilgi;
    ?>

### Ayrıca Bakınız

- bzdecompress() - Bzip2 ile sıkıştırılmış veriyi açar

# bzdecompress

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzdecompress — Bzip2 ile sıkıştırılmış veriyi açar

### Açıklama

function bzdecompress(string `$veri`, bool `$ufak` = `false`): string|int|false

bzdecompress() verilen bzip2 kodlu verinin sıkıştırmasını açar.

### Bağımsız Değişkenler

`veri`
  Sıkıştırılmış haldeki dizge.
`ufak`
  Eğer `true` ise farklı bir açma algoritması uygulanır ve işlem sırasında daha az bellek kullanılır ancak işlem hızı yarıya düşer. (Gereksinim duyulan azami bellek miktarı yaklaşık 2300K civarına düşer) Ayrıntılı bilgi için » bzip2 belgelerine bakınız.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `ufak` bağımsız değişkeninin int iken bool oldu. Evvelce, `0` öntanımlıydı.

### Dönen Değerler

Hata oluşmamışsa sıkıştırması açılmış dizge veya `false`, aksi takdirde hata numarası döner.

### Örnekler

Örnek 1 - Bir dizgenin sıkıştırmasının açılması

    <?php
    $ilk = "Bu dizgiyi sıkıştıralım...";
    $bzilk = bzcompress($ilk);

    echo "Sıkıştırılmış Dizgi: ";
    echo $bzilk;
    echo "\n<br />\n";

    $ikinci = bzdecompress($bzilk);
    echo "Açılmış Dizgi: ";
    echo $ikinci;
    echo "\n<br />\n";
    ?>

### Ayrıca Bakınız

- bzcompress() - Verilen dizgiyi bzip2 kodlamalı olarak sıkıştırır

# bzerrno

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzerrno — Bzip2 hata numarası ile döner

### Açıklama

function bzerrno(resource `$bz`): int

Verilen dosya tanıtıcı tarafından döndürülen bzip2 hatasının numarasını bildirir.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcı. Geçerli ve bzopen() işleve tarafından açılmış bir dosyayı göstermelidir.

### Dönen Değerler

Hata numarası bir tamsayı olarak döner.

### Ayrıca Bakınız

- bzerror() - Bzip2 hata numarasını ve hata iletisini bir dizi içerisinde döndürür
- bzerrstr() - Bzip2 hata iletisini döndürür

# bzerror

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzerror — Bzip2 hata numarasını ve hata iletisini bir dizi içerisinde döndürür

### Açıklama

function bzerror(resource `$bz`): array

Verilen bzip2 dosya tanıtıcısı tarafından döndürülen hatanın tamsayı karşılığını ve hata iletisini birlikte bir dizi içerisinde döndürür.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcısı. Geçerli ve bzopen() işlevi tarafından açılmış bir dosyayı göstermelidir.

### Dönen Değerler

Geriye bir ilişkisel dizi döndürür. Bu dizide hata numarası `errno` girdisinde, hata iletisi ise `errstr` girdisinde bulunur.

### Örnekler

Örnek 1 - bzerror() örneği

    <?php
    $hata = bzerror($bz);

    echo $hata["errno"];
    echo $hata["errstr"];
    ?>

### Ayrıca Bakınız

- bzerrno() - Bzip2 hata numarası ile döner
- bzerrstr() - Bzip2 hata iletisini döndürür

# bzerrstr

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzerrstr — Bzip2 hata iletisini döndürür

### Açıklama

function bzerrstr(resource `$bz`): string

Verilen dosya tanıtıcısı tarafından döndürülen bzip2 hatasının iletisini döndürür.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcısı. Gerçek ve bzopen() işlevi tarafından açılmış varolan bir dosyayı göstermelidir.

### Dönen Değerler

Hata iletisini içeren bir dizge geri döndürür.

### Ayrıca Bakınız

- bzerrno() - Bzip2 hata numarası ile döner
- bzerror() - Bzip2 hata numarasını ve hata iletisini bir dizi içerisinde döndürür

# bzflush

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzflush — Hiçbir şey yapmaz

### Açıklama

function bzflush(resource `$bz`): bool

`bz` dosya tanıtıcısı için tamponda tutulan bzip2 verisinin tümünü yazmaya zorlayacağı düşünülmüştü fakat libbz2'de boş bir işlev olrarak gerçeklendi, dolayısıyla işlev hiçbir şey yapmıyor.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcısı. Geçerli ve bzopen() işlevi tarafından açılmış bir dosyayı göstermelidir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- bzread() - Bzip2 dosyasını ikil olarak okur
- bzwrite() - Bzip2 dosyasını ikil olarak yazar

# bzopen

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzopen — Bzip2 sıkıştırmalı bir dosyayı açar

### Açıklama

function bzopen(string|resource `$dosya`, string `$kip`): resource|false

bzopen() bzip2 (.bz2) türündeki dosyaları okuma veya yazma amacıyla açar.

### Bağımsız Değişkenler

`dosya`
  Açılacak dosyanın adı.
`kip`
  Sadece okuma amaçlı ise `'r'`, sadece yazma amaçlı ise `'w'` desteklenir. Bunlar dışındaki herşey için işlev `false` döndürür.

### Dönen Değerler

Eğer dosya açma işlemi başarılamazsa bzopen() geriye `false` döndürür. Aksi takdirde yeni açılan dosyaya ait bir bzip2 dosya tanıtıcısı döndürür.

### Örnekler

Örnek 1 - bzopen() örneği

    <?php

    $dosya = '/tmp/abc.bz2';

    $bz = bzopen($file, 'r') or die("Belirtilen $dosya dosyası açılamadı.");

    bzclose($bz);

    ?>

### Ayrıca Bakınız

- bzclose() - Bzip2 dosyasını kapatır

# bzread

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzread — Bzip2 dosyasını ikil olarak okur

### Açıklama

function bzread(resource `$bz`, int `$uzunluk` = 1024): string|false

bzread(), bzip2 dosya tanıtıcısı verilen dosyayı okur.

Sıkıştırıması açılmış veri belirtilen `uzunluk` baytlık uzunluğa eriştiği zaman veya dosya sonuna varıldığı zaman okuma işlemi sona erer. Bir kerede en fazla 8192 sıkıştırılmamış bayt okunur.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcısı. Geçerli ve bzopen() işlevi tarafından açılmış bir dosyayı göstermelidir.
`uzunluk`
  Eğer belirtilmemişse, bzread() her seferinde 1024 baytlık sıkıştırması açılmış veri okuyacaktır.

### Dönen Değerler

Sıkıştırması açılmış veriyi veya hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - bzread() örneği

    <?php

    $dosya = '/tmp/foo.bz2';
    $bz = bzopen($dosya, 'r') or die("Belirtilen $dosya dosyası açılamadı.");

    $acilmis_icerik = '';
    while (!feof($bz)) {
      $acilmis_icerik .= bzread($bz, 4096);
    }
    bzclose($bz);

    echo "Belirtilen dosya $dosya içeriği: <br />\n";
    echo $acilmis_icerik;

    ?>

### Ayrıca Bakınız

- bzwrite() - Bzip2 dosyasını ikil olarak yazar
- feof() - Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar
- bzopen() - Bzip2 sıkıştırmalı bir dosyayı açar

# bzwrite

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

bzwrite — Bzip2 dosyasını ikil olarak yazar

### Açıklama

function bzwrite(resource `$bz`, string `$veri`, ?int `$uzunluk` = `null`): int|false

bzwrite() verilen dizgeyi sıkıştırarak belirtilen bzip2 akımına yazar.

### Bağımsız Değişkenler

`bz`
  Dosya tanıtıcı. Geçerli ve bzopen() işlevi tarafından açılmış bir dosyayı göstermelidir.
`veri`
  Yazılacak veri.
`uzunluk`
  Eğer belirtilmişse, belirtilen `uzunluk` bayta erişilince (açılmış halde) veya belirtilen `veri`'nin sonuna gelinmişse yazma işlemi sona erer.

### Dönen Değerler

Yazılan baytların sayısı ile veya hata durumunda `false` ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `uzunluk` artık `null` olabiliyor.

### Örnekler

Örnek 1 - bzwrite() örneği

    <?php

    $str = 'bu yazıyı sıkıştırıp yazalım';
    $bz = bzopen('/tmp/abc.bz2', 'w');
    bzwrite($bz, $str, strlen($str));
    bzclose($bz);

    ?>

### Ayrıca Bakınız

- bzread() - Bzip2 dosyasını ikil olarak okur
- bzopen() - Bzip2 sıkıştırmalı bir dosyayı açar

## İçindekiler

- bzclose — Bzip2 dosyasını kapatır
- bzcompress — Verilen dizgiyi bzip2 kodlamalı olarak sıkıştırır
- bzdecompress — Bzip2 ile sıkıştırılmış veriyi açar
- bzerrno — Bzip2 hata numarası ile döner
- bzerror — Bzip2 hata numarasını ve hata iletisini bir dizi içerisinde döndürür
- bzerrstr — Bzip2 hata iletisini döndürür
- bzflush — Hiçbir şey yapmaz
- bzopen — Bzip2 sıkıştırmalı bir dosyayı açar
- bzread — Bzip2 dosyasını ikil olarak okur
- bzwrite — Bzip2 dosyasını ikil olarak yazar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Örnekler
- Bzip2 İşlevleri
  - bzclose — Bzip2 dosyasını kapatır
  - bzcompress — Verilen dizgiyi bzip2 kodlamalı olarak sıkıştırır
  - bzdecompress — Bzip2 ile sıkıştırılmış veriyi açar
  - bzerrno — Bzip2 hata numarası ile döner
  - bzerror — Bzip2 hata numarasını ve hata iletisini bir dizi içerisinde döndürür
  - bzerrstr — Bzip2 hata iletisini döndürür
  - bzflush — Hiçbir şey yapmaz
  - bzopen — Bzip2 sıkıştırmalı bir dosyayı açar
  - bzread — Bzip2 dosyasını ikil olarak okur
  - bzwrite — Bzip2 dosyasını ikil olarak yazar

# LZF Sıkıştırma Algoritması

# Giriş

LZF çok hızlı bir sıkıştırma algoritmasıdır ve genellikle hızdan çok az ödün vererek disk alanından tasarruf etmek amacıyla kullanılır. Kullanım alanına göre hızlı çalışması veya daha çok sıkıştırma yapması amacıyla derleme anında ayarlama yapılabilir. Bu eklentide, işlemler için Marc Lehmann tarafından yazılan » liblzf kütüphanesi kullanılmıştır.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

Bu » PECL eklentisi PHP ile gelmez. Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/lzf.

Bu işlevleri kullanabilmek için PHP'yi lzf desteğiyle derlemeniz gereklidir. Bunun için derleme derleme sırasında --with-lzf[=DİZİN] yapılandırma seçeneğini kullanmalısınız. Temel ayarlarla LZF hızlı çalışır ancak az sıkıştırma yapar. Dilerseniz derleme sırasında --enable-lzf-better-compression yapılandırma seçeneğini kullanarak daha çok sıkıştırma ancak daha yavaş çalışma kipine ayarlayabilirsiniz.

Windows kullanıcıları bu işlevleri kullanmak için php.ini dosyası içinden php_lzf.dll dosyasını kullanılır hale getirmeleri gerekir.

# LZF İşlevleri

# lzf_compress

(PECL lzf >= 0.1.0)

lzf_compress — LZF sıkıştırma işlemi

### Açıklama

function lzf_compress(string `$veri`): string

lzf_compress() işlevi, belirtilen `veri` dizgesini LZF kodlamasını kullanarak sıkıştırır.

### Bağımsız Değişkenler

`veri`
  Sıkıştırılmak istenen dizge.

### Dönen Değerler

Hata oluşmuşsa, `false` yoksa sıkıştırılmış veriyi döndürür.

### Ayrıca Bakınız

- lzf_decompress() - LZF sıkıştırmasını açma işlemi

# lzf_decompress

(PECL lzf >= 0.1.0)

lzf_decompress — LZF sıkıştırmasını açma işlemi

### Açıklama

function lzf_decompress(string `$veri`): string

lzf_compress() işlevi verilen lzf sıkıştırmalı dizgi içeren `veri` dizgisi açar.

### Bağımsız Değişkenler

`veri`
  Sıkıştırılmış haldeki dizgi.

### Dönen Değerler

Hata oluşursa `false` oluşmazsa verinin sıkıştırılmamış halini döndürür.

### Ayrıca Bakınız

- lzf_compress() - LZF sıkıştırma işlemi

# lzf_optimized_for

(PECL lzf >= 1.0.0)

lzf_optimized_for — LZF eklentisinin neye göre en iyilendirildiğini bildirir

### Açıklama

function lzf_optimized_for(): int

LZF uzantısının derleme esnasında hangi amaca yönelik en iyilendirildiğini bildirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Eğer LZF hız için en iyilenmişse 1, daha çok sıkıştırması için en iyilenmişse 0 ile döner.

## İçindekiler

- lzf_compress — LZF sıkıştırma işlemi
- lzf_decompress — LZF sıkıştırmasını açma işlemi
- lzf_optimized_for — LZF eklentisinin neye göre en iyilendirildiğini bildirir

- Yapılandırma/Kurulum
  - Kurulum
- LZF İşlevleri
  - lzf_compress — LZF sıkıştırma işlemi
  - lzf_decompress — LZF sıkıştırmasını açma işlemi
  - lzf_optimized_for — LZF eklentisinin neye göre en iyilendirildiğini bildirir

# Phar

# Giriş

The phar extension provides a way to put entire PHP applications into a single file called a "phar" (PHP Archive) for easy distribution and installation. In addition to providing this service, the phar extension also provides a file-format abstraction method for creating and manipulating tar and zip files through the PharData class, much as PDO provides a unified interface for accessing different databases. Unlike PDO, which cannot convert between different databases, Phar also can convert between tar, zip and phar file formats with a single line of code. see Phar::convertToExecutable() for one example.

What is phar? Phar archives are best characterized as a convenient way to group several files into a single file. As such, a phar archive provides a way to distribute a complete PHP application in a single file and run it from that file without the need to extract it to disk. Additionally, phar archives can be executed by PHP as easily as any other file, both on the commandline and from a web server. Phar is kind of like a thumb drive for PHP applications.

Phar implements this functionality through a Stream Wrapper. Normally, to use an external file within a PHP script, you would use include:

Örnek 1 Using an external file

    <?php
     include '/path/to/external/file.php';
     ?>

PHP can be thought of as actually translating `/path/to/external/file.php` into a stream wrapper as `file:///path/to/external/file.php`, and under the hood it does in fact use the plain file stream wrapper stream functions to access all local files.

To use a file named `file.php` contained with a phar archive `/path/to/myphar.phar`, the syntax is very similar to the `file://` syntax above.

Örnek 2 Using a file within a phar archive

    <?php
     include 'phar:///path/to/myphar.phar/file.php';
     ?>

In fact, one can treat a phar archive exactly as if it were an external disk, using any of fopen()-related functions, opendir() and mkdir()-related functions to read, change, or create new files and directories within the phar archive. This allows complete PHP applications to be distributed in a single file and run directly from that file.

The most common usage for a phar archive is to distribute a complete application in a single file. For instance, the PEAR Installer that is bundled with PHP versions is distributed as a phar archive. To use a phar archive distributed in this way, the archive can be executed on the command-line or via a web server.

Phar archives can be distributed as `tar` archives, `zip` archives, or as the custom `phar` file format designed specifically for the phar extension. Each file format has advantages and disadvantages. The tar and zip file formats can be read or extracted by any third-party tool that can read the format, but require the phar extension in order to run with PHP. The phar file format is customized and unique to the phar extension, and can only be created by the phar extension or the PEAR package » PHP_Archive, but has the advantage that applications created in this format will run even if the phar extension is not enabled.

In other words, even with the phar extension disabled, one can execute or include a phar-based archive. Accessing individual files within a phar archive is only possible with the phar extension unless the phar archive was created by PHP_Archive.

The phar extension is also capable of converting a phar archive from tar to zip or to phar file format in a single command:

Örnek 3 Converting a phar archive from phar to tar file format

    <?php
     $phar = new Phar('myphar.phar');
     $pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // makes myphar.phar.tar.gz
     ?>

Phar can compress individual files or an entire archive using gzip compression or bzip2 compression, and can verify archive integrity automatically through the use of MD5, SHA-1, SHA-256 or SHA-512 signatures.

Lastly, the Phar extension is security-conscious, and disables write access to executable phar archives by default, and requires system-level disabling of the `phar.readonly` php.ini setting in order to create or modify phar archives. Normal tar and zip archives without an executable stub can always be created or modified using the PharData class.

If you are creating applications for distribution, you will want to read How to create Phar Archives. If you want more information on the differences between the three file formats that phar supports, you should read Phar, Tar and Zip.

If you are using phar applications, there are helpful tips in How to use Phar Archives.

The word `phar` is a portmanteau of `PHP` and `Archive` and is based loosely on the `jar` (Java Archive) familiar to Java developers.

The implementation for Phar archives is based on the PEAR package » PHP_Archive, and the implementation details are similar, although the Phar extension is much more powerful. In addition, the Phar extension allows most PHP applications to be run unmodified while PHP_Archive-based phar archives often require extensive modification in order to work.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

You may optionally wish to enable the zlib and bzip2 extensions to take advantage of compressed phar support. In addition, to take advantage of OpenSSL signing, the OpenSSL extension must be enabled.

If zend.multibyte is enabled, zend.detect_unicode must be enabled as well.

## Kurulum

The Phar extension is bundled with PHP, and enabled by default. To disable Phar support, use --disable-phar.

Phar may be installed via the PECL extension with previous PHP versions, and the » Phar PECL page contains further information and history.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Filesystem and Streams Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
phar.readonly | "1" | `INI_ALL` |
phar.require_hash | "1" | `INI_ALL` |
phar.cache_list | "" | `INI_SYSTEM` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`phar.readonly` bool

  This option disables creation or modification of Phar archives using the `phar` stream or Phar object's write support. This setting should always be enabled on production machines, as the phar extension's convenient write support could allow straightforward creation of a php-based virus when coupled with other common security vulnerabilities.

  > Bilginize:

  > This setting can only be unset in php.ini due to security reasons. If `phar.readonly` is disabled in php.ini, the user may enable `phar.readonly` in a script or disable it later. If `phar.readonly` is enabled in php.ini, a script may harmlessly "re-enable" the INI variable, but may not disable it.

`phar.require_hash` bool

  This option will force all opened Phar archives to contain some kind of signature (currently MD5, SHA1, SHA256, SHA512 and OpenSSL are supported), and will refuse to process any Phar archive that does not contain a signature.

  > Bilginize:

  > This setting can only be unset in php.ini. If `phar.require_hash` is disabled in php.ini, the user may enable `phar.require_hash` in a script or disable it later. If `phar.require_hash` is enabled in php.ini, a script may harmlessly "re-enable" the INI variable, but may not disable it.

  > This setting does not affect reading plain tar files with the PharData class.

  Dikkat

  `phar.require_hash` does not provide any security per se, it is merely a measure against running accidentally corrupted Phar archives, because anyone who would be able to tamper with the Phar could easily fix the signature afterwards.

`phar.cache_list` string

  Allows mapping phar archives to be pre-parsed at web server startup, providing a performance improvement that brings running files out of a phar archive very close to the speed of running those files from a traditional disk-based installation.

  Örnek 1 phar.cache_list usage example

      in php.ini (windows):
      phar.cache_list =C:\path\to\phar1.phar;C:\path\to\phar2.phar
      in php.ini (unix):
      phar.cache_list =/path/to/phar1.phar:/path/to/phar2.phar

## Özkaynak Türleri

The Phar extension provides the `phar` stream, which allows accessing files contained within a phar transparently. See also the description of the Phar file format.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Phar compression constants
Constant | Value | Description
--- | --- | ---
`Phar::NONE` (int) | 0x00000000 | no compression
`Phar::COMPRESSED` (int) | 0x0000F000 | bitmask that can be used with file flags to determine if any compression is present
`Phar::GZ` (int) | 0x00001000 | zlib (gzip) compression
`Phar::BZ2` (int) | 0x00002000 | bzip2 compression

Phar file format constants
Constant | Value | Description
--- | --- | ---
`Phar::PHAR` (int) | 1 | phar file format
`Phar::TAR` (int) | 2 | tar file format
`Phar::ZIP` (int) | 3 | zip file format

Phar signature constants
Constant | Value | Description
--- | --- | ---
`Phar::MD5` (int) | 0x0001 | signature with md5 hash algorithm
`Phar::SHA1` (int) | 0x0002 | signature with sha1 hash algorithm
`Phar::SHA256` (int) | 0x0003 | signature with sha256 hash algorithm (requires hash extension)
`Phar::SHA512` (int) | 0x0004 | signature with sha512 hash algorithm (requires hash extension)
`Phar::OPENSSL` (int) | 0x0010 | signature with OpenSSL public/private key pair. This is a true, asymmetric key signature.
`Phar::OPENSSL_SHA256` (int) |  |
`Phar::OPENSSL_SHA512` (int) |  |

Phar webPhar mime override constants
Constant | Value | Description
--- | --- | ---
`Phar::PHP` (int) | 0 | used to instruct the mimeoverrides parameter of Phar::webPhar() that the extension should be parsed as a PHP file
`Phar::PHPS` (int) | 1 | used to instruct the mimeoverrides parameter of Phar::webPhar() that the extension should be parsed as a PHP source file through highlight_file()

# Using Phar Archives

## İçindekiler

- Using Phar Archives: Introduction
- Using Phar Archives: the phar stream wrapper
- Using Phar Archives: the Phar and PharData class

## Using Phar Archives: Introduction

Phar archives are similar in concept to Java JAR archives, but are tailored to the needs and to the flexibility of PHP applications. A Phar archive is used to distribute a complete PHP application or library in a single file. A Phar archive application is used exactly like any other PHP application:

    php coolapplication.phar

Using a Phar archive library is identical to using any other PHP library:

    <?php
    include 'coollibrary.phar';
    ?>

The `phar` stream wrapper provides the core of the phar extension, and is explained in detail here. The phar stream wrapper allows accessing the files within a phar archive using PHP's standard file functions fopen(), opendir(), and others that work on regular files. The `phar` stream wrapper supports all read/write operations on both files and directories.

    <?php
    include 'phar://coollibrary.phar/internal/file.php';
    header('Content-type: image/jpeg');
    // phars can be accessed by full path or by alias
    echo file_get_contents('phar:///fullpath/to/coollibrary.phar/images/wow.jpg');
    ?>

The Phar class implements advanced functionality for accessing files and for creating phar archives. The Phar class is explained in detail here.

    <?php
    try {
        // open an existing phar
        $p = new Phar('coollibrary.phar', 0);
        // Phar extends SPL's DirectoryIterator class
        foreach (new RecursiveIteratorIterator($p) as $file) {
            // $file is a PharFileInfo class, and inherits from SplFileInfo
            echo $file->getFileName() . "\n";
            echo file_get_contents($file->getPathName()) . "\n"; // display contents;
        }
        if (isset($p['internal/file.php'])) {
            var_dump($p['internal/file.php']->getMetadata());
        }

        // create a new phar - phar.readonly must be 0 in php.ini
        // phar.readonly is enabled by default for security reasons.
        // On production servers, Phars need never be created,
        // only executed.
        if (Phar::canWrite()) {
            $p = new Phar('newphar.tar.phar', 0, 'newphar.tar.phar');
            // make this a tar-based phar archive, compressed with gzip compression (.tar.gz)
            $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);

            // create transaction - nothing is written to newphar.phar
            // until stopBuffering() is called, although temporary storage is needed
            $p->startBuffering();
            // add all files in /path/to/project, saving in the phar with the prefix "project"
            $p->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/project')), '/path/to/');

            // add a new file via the array access API
            $p['file1.txt'] = 'Information';
            $fp = fopen('hugefile.dat', 'rb');
            // copy all data from the stream
            $p['data/hugefile.dat'] = $fp;

            if (Phar::canCompress(Phar::GZ)) {
                $p['data/hugefile.dat']->compress(Phar::GZ);
            }

            $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
            // any value can be saved as file-specific meta-data
            $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
            $p['index.php'] = file_get_contents('index.php');
            $p->setMetadata(array('bootstrap' => 'index.php'));

            // save the phar archive to disk
            $p->stopBuffering();
        }
    } catch (Exception $e) {
        echo 'Could not open Phar: ', $e;
    }
    ?>

In addition, verification of phar file contents can be done using any of the supported symmetric hash algorithms (MD5, SHA1, SHA256 and SHA512 if ext/hash is enabled) and using asymmetric public/private key signing using OpenSSL. To take advantage of OpenSSL signing, you need to generate a public/private key pair, and use the private key to set the signature using Phar::setSignatureAlgorithm(). In addition, the public key as extracted using this code:

    <?php
    $public = openssl_get_publickey(file_get_contents('private.pem'));
    $pkey = '';
    openssl_pkey_export($public, $pkey);
    ?>

must be saved adjacent to the phar archive it verifies. If the phar archive is saved as `/path/to/my.phar`, the public key must be saved as `/path/to/my.phar.pubkey`, or phar will be unable to verify the OpenSSL signature.

The Phar class also provides 3 static methods, Phar::webPhar(), Phar::mungServer() and Phar::interceptFileFuncs() that are crucial to packaging up PHP applications designed for usage on regular filesystems and for web-based applications. Phar::webPhar() implements a front controller that routes HTTP calls to the correct location within the phar archive. Phar::mungServer() is used to modify the values of the $_SERVER array to trick applications that process these values. Phar::interceptFileFuncs() instructs Phar to intercept calls to fopen(), file_get_contents(), opendir(), and all of the stat-based functions (file_exists(), is_readable() and so on) and route all relative paths to locations within the phar archive.

As an example, packaging up a release of the popular phpMyAdmin application for use as a phar archive requires only this simple script and then `phpMyAdmin.phar.tar.php` can be accessed as a regular file from your web server after modifying the user/password:

    <?php
    @unlink('phpMyAdmin.phar.tar.php');
    copy('phpMyAdmin-2.11.3-english.tar.gz', 'phpMyAdmin.phar.tar.php');
    $a = new Phar('phpMyAdmin.phar.tar.php');
    $a->startBuffering();
    $a["phpMyAdmin-2.11.3-english/config.inc.php"] = '<?php
    /* Servers configuration */
    $i = 0;

    /* Server localhost (config:root) [1] */
    $i++;
    $cfg[\'Servers\'][$i][\'host\'] = \'localhost\';
    $cfg[\'Servers\'][$i][\'extension\'] = \'mysqli\';
    $cfg[\'Servers\'][$i][\'connect_type\'] = \'tcp\';
    $cfg[\'Servers\'][$i][\'compress\'] = false;
    $cfg[\'Servers\'][$i][\'auth_type\'] = \'config\';
    $cfg[\'Servers\'][$i][\'user\'] = \'root\';
    $cfg[\'Servers\'][$i][\'password\'] = \'\';

    /* End of servers configuration */
    if (strpos(PHP_OS, \'WIN\') !== false) {
        $cfg[\'UploadDir\'] = getcwd();
    } else {
        $cfg[\'UploadDir\'] = \'/tmp/pharphpmyadmin\';
        @mkdir(\'/tmp/pharphpmyadmin\');
        @chmod(\'/tmp/pharphpmyadmin\', 0777);
    }';
    $a->setStub('<?php
    Phar::interceptFileFuncs();
    Phar::webPhar("phpMyAdmin.phar", "phpMyAdmin-2.11.3-english/index.php");
    echo "phpMyAdmin is intended to be executed from a web browser\n";
    exit -1;
    __HALT_COMPILER();
    ');
    $a->stopBuffering();
    ?>

## Using Phar Archives: the phar stream wrapper

The Phar stream wrapper fully supports fopen() for read and write (not append), unlink(), stat(), fstat(), fseek(), rename() and directory stream operations opendir() and rmdir() and mkdir().

Individual file compression and per-file metadata can also be manipulated in a Phar archive using stream contexts:

    <?php
    $context = stream_context_create(array('phar' =>
                                        array('compress' => Phar::GZ)),
                                        array('metadata' => array('user' => 'cellog')));
    file_put_contents('phar://my.phar/somefile.php', 0, $context);
    ?>

The `phar` stream wrapper does not operate on remote files, and cannot operate on remote files, and so is allowed even when the allow_url_fopen and allow_url_include INI options are disabled.

Although it is possible to create phar archives from scratch just using stream operations, it is best to use the functionality built into the Phar class. The stream wrapper is best used for read-only operations.

## Using Phar Archives: the Phar and PharData class

The Phar class supports reading and manipulation of Phar archives, as well as iteration through inherited functionality of the RecursiveDirectoryIterator class. With support for the ArrayAccess interface, files inside a Phar archive can be accessed as if they were part of an associative array.

The PharData class extends the Phar, and allows creating and modifying non-executable (data) tar and zip archives even if `phar.readonly`=1 in php.ini. As such, PharData::setAlias() and PharData::setStub() are both disabled as the concept of alias and stub are unique to executable phar archives.

It is important to note that when creating a Phar archive, the full path should be passed to the Phar object constructor. Relative paths will fail to initialize.

Assuming that `$p` is a Phar object initialized as follows:

    <?php
    $p = new Phar('/path/to/myphar.phar', 0, 'myphar.phar');
    ?>

An empty Phar archive will be created at `/path/to/myphar.phar`, or if `/path/to/myphar.phar` already exists, it will be opened again. The literal `myphar.phar` demonstrates the concept of an alias that can be used to reference `/path/to/myphar.phar` in URLs as in:

    <?php
    // these two calls to file_get_contents() are equivalent if
    // /path/to/myphar.phar has an explicit alias of "myphar.phar"
    // in its manifest, or if the phar was initialized with the
    // previous example's Phar object setup
    $f = file_get_contents('phar:///path/to/myphar.phar/whatever.txt');
    $f = file_get_contents('phar://myphar.phar/whatever.txt');
    ?>

With the newly created `$p` Phar object, the following is possible:

- `$a = $p['file.php']` creates a PharFileInfo class that refers to the contents of `phar://myphar.phar/file.php`
- `$p['file.php'] = $v` creates a new file (`phar://myphar.phar/file.php`), or overwrites an existing file within `myphar.phar`. `$v` can be either a string or an open file pointer, in which case the entire contents of the file will be used to create the new file. Note that `$p->addFromString('file.php', $v)` is functionally equivalent to the above. Also possible is to add the contents of a file with `$p->addFile('/path/to/file.php', 'file.php')`. Lastly, an empty directory can be created with `$p->addEmptyDir('empty')`.
- `isset($p['file.php'])` can be used to determine whether `phar://myphar.phar/file.php` exists within `myphar.phar`.
- `unset($p['file.php'])` erases `phar://myphar.phar/file.php` from `myphar.phar`.

In addition, the Phar object is the only way to access Phar-specific metadata, through Phar::getMetadata(), and the only way to set or retrieve a Phar archive's PHP loader stub through Phar::getStub() and Phar::setStub(). Additionally, compression for the entire Phar archive at once can only be manipulated using the Phar class.

The full list of Phar object functionality is documented below.

The PharFileInfo class extends the SplFileInfo class, and adds several methods for manipulating Phar-specific details of a file contained within a Phar, such as manipulating compression and metadata.

# Creating Phar Archives

## İçindekiler

- Creating Phar Archives: Introduction

## Creating Phar Archives: Introduction

To be written fully in the near future. Before reading this, be sure to read How to use Phar Archives.

A great place to start is by reading about Phar::buildFromIterator(), and the specifics of the file format choices available for archives. A healthy understanding of what a stub is and does is crucial to phar archive creation, and so Phar::setStub() and Phar::createDefaultStub() are good places to start as well. If you are distributing a web-based application, it is crucial to know about Phar::webPhar() and related method Phar::mungServer(). Any application that accesses its own files should also consider using Phar::interceptFileFuncs().

# What makes a phar a phar and not a tar or a zip?

## İçindekiler

- Ingredients of all Phar archives, independent of file format
- Phar file stub
- Head-to-head comparison of Phar, Tar and Zip
- Tar-based phars
- Zip-based phars
- Phar File Format
- Global Phar bitmapped flags
- Phar manifest file entry definition
- Phar Signature format

## Ingredients of all Phar archives, independent of file format

All Phar archives contain three to four sections:

1. a stub

2. a manifest describing the contents

3. the file contents

4. [optional] a signature for verifying Phar integrity (phar file format only)

## Phar file stub

A Phar's stub is a simple PHP file. The smallest possible stub follows:

    <?php __HALT_COMPILER();

A stub must contain as a minimum, the `__HALT_COMPILER();` token at its conclusion. Typically, a stub will contain loader functionality like so:

    <?php
    Phar::mapPhar();
    include 'phar://myphar.phar/index.php';
    __HALT_COMPILER();

There are no restrictions on the contents of a Phar stub, except for the requirement that it conclude with `__HALT_COMPILER();`. The closing PHP tag ``

    ?>

may be included or omitted, but there can be no more than 1 space between the `;` and the close tag `

    ?>

` or the phar extension will be unable to process the Phar archive's manifest.

In a tar or zip-based phar archive, the stub is stored in the `.phar/stub.php` file. The default stub for phar-based Phar archives contains approximately 7k of code to extract the contents of the phar and execute them. See Phar::createDefaultStub() for more detail.

The phar alias is stored in a tar or zip-based phar archive in the `.phar/alias.txt` file as plain text.

## Head-to-head comparison of Phar, Tar and Zip

What are the good and the bad things about the three supported file formats in the phar extension? This table attempts to address that question.

Feature matrix: Phar vs. Tar vs. Zip
Feature | Phar | Tar | Zip
--- | --- | --- | ---
Standard File Format | No | Yes | Yes
Can be executed without the Phar Extension [1] | Yes | No | No
Per-file compression | Yes | No | Yes
Whole-archive compression | Yes | Yes | No
Whole-archive signature validation | Yes | Yes | Yes
Web-specific application support | Yes | Yes | Yes
Per-file Meta-data | Yes | Yes | Yes
Whole-Archive Meta-data | Yes | Yes | Yes
Archive creation/modification [2] | Yes | Yes | Yes
Full support for all stream wrapper functions | Yes | Yes | Yes
Can be created/modified even if phar.readonly=1 [3] | No | Yes | Yes

İpucu

[1] PHP can only directly access the contents of a Phar archive without the Phar extension if it is using a `stub` that extracts the contents of the phar archive. The stub created by Phar::createDefaultStub() extracts the phar archive and runs its contents from a temporary directory if no phar extension is found.

İpucu

[2] All write access requires `phar.readonly` to be disabled in php.ini or on the command-line directly.

İpucu

[3] Only tar and zip archives without `.phar` in their filename and without an executable stub `.phar/stub.php` can be created if phar.readonly=1.

## Tar-based phars

Archives based on the tar file format follow the more modern USTAR file format. The design of the tar file header makes them more efficient to access than the zip file format, and almost as efficient as the phar file format. File names are limited to 255 bytes, including full path within the phar archive. There is no limit on the number of files within a tar-based phar archive. These archives can fully compressed in gzip or bzip2 format and still be executed by the Phar extension.

There is limited support for reading tarballs in pax interchange format, but all recognized pax headers (currently, typeflag `x` and `g`) are silently ignored. There is also limited support for GNU Tar Archives; currently, `././@LongLink` headers are resolved.

To compress an entire archive, use Phar::compress(). To decompress an entire archive, use Phar::decompress().

## Zip-based phars

Archives based on the zip file format support several features built into the zip file format. Per-file and whole-archive metadata is stored in the zip file comment and zip archive comment as a serialized string. Pre-existing zip comments will be successfully read as a string. Per-file compression read/write is supported with zlib DEFLATE compression, and read access is supported with bzip2 compression. There is no limit on the number of files within a zip-based phar archive. Empty directories are stored in the zip archive as files with a trailing slash like `my/directory/`

## Phar File Format

The phar file format is literally laid out as stub/manifest/contents/signature, and stores the crucial information of what is included in the phar archive in its `manifest`.

The Phar manifest is a highly optimized format that allows per-file specification of file compression, file permissions, and even user-defined meta-data such as file user or group. All values greater than 1 byte are stored in little-endian byte order, with the exception of the API version, which for historical reasons is stored as 3 nibbles in big-endian order.

All unused flags are reserved for future use, and must not be used to store custom information. Use the per-file meta-data facility to store customized information about particular files.

The basic file format of a Phar archive manifest is as follows:

Global Phar manifest format
Size in bytes | Description
--- | ---
4 bytes | Length of manifest in bytes (1 MB limit)
4 bytes | Number of files in the Phar
2 bytes | API version of the Phar manifest (currently 1.0.0)
4 bytes | Global Phar bitmapped flags
4 bytes | Length of Phar alias
?? | Phar alias (length based on previous)
4 bytes | Length of Phar metadata (`0` for none)
?? | Serialized Phar Meta-data, stored in serialize() format
at least 24 * number of entries bytes | entries for each file

## Global Phar bitmapped flags

Here are the bitmapped flags currently recognized by the Phar extension for the global Phar flat bitmap:

Bitmap values recognized
Value | Description
--- | ---
`0x00010000` | If set, this Phar contains a verification signature
`0x00001000` | If set, this Phar contains at least 1 file that is compressed with zlib DEFLATE compression
`0x00002000` | If set, this Phar contains at least 1 file that is compressed with bzip2 compression

## Phar manifest file entry definition

Each file in the manifest contains the following information:

Phar Manifest file entry
Size in bytes | Description
--- | ---
4 bytes | Filename length in bytes
?? | Filename (length specified in previous)
4 bytes | Un-compressed file size in bytes
4 bytes | Unix timestamp of file
4 bytes | Compressed file size in bytes
4 bytes | CRC32 checksum of un-compressed file contents
4 bytes | Bit-mapped File-specific flags
4 bytes | Serialized File Meta-data length (`0` for none)
?? | Serialized File Meta-data, stored in serialize() format

Note that as of API version 1.1.1, empty directories are stored as filenames with a trailing slash like `my/directory/`

The File-specific bitmap values recognized are:

Bitmap values recognized
Value | Description
--- | ---
`0x000001FF` | These bits are reserved for defining specific file permissions of a file. Permissions are used for fstat() and can be used to recreate desired permissions upon extraction.
`0x00001000` | If set, this file is compressed with zlib DEFLATE compression
`0x00002000` | If set, this file is compressed with bzip2 compression

## Phar Signature format

Phars containing a signature always have the signature appended to the end of the Phar archive after the loader, manifest, and file contents. The signature formats supported at this time are MD5, SHA1, SHA256, SHA512, and OPENSSL.

Signature format
Length in bytes | Description
--- | ---
varying | The actual signature, 20 bytes for an SHA1 signature, 16 bytes for an MD5 signature, 32 bytes for an SHA256 signature, and 64 bytes for an SHA512 signature. The length of an OPENSSL signature depends on the size of the private key.
4 bytes | Signature flags. `0x0001` is used to define an MD5 signature, `0x0002` is used to define an SHA1 signature, `0x0003` is used to define an SHA256 signature, and `0x0004` is used to define an SHA512 signature. The SHA256 and SHA512 signature support is available as of API version 1.1.0. `0x0010` is used to define an OPENSSL signature, what is available as of API version 1.1.1, if OpenSSL is available.
4 bytes | Magic `GBMB` used to define the presence of a signature.

# The Phar class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

## Giriş

The Phar class provides a high-level interface to accessing and creating phar archives.

## Sınıf Sözdizimi

class Phar extends RecursiveDirectoryIterator implements Countable, ArrayAccess {
/* Miras alınan sabitler */
public const int FilesystemIterator::CURRENT_MODE_MASK;
public const int FilesystemIterator::CURRENT_AS_PATHNAME;
public const int FilesystemIterator::CURRENT_AS_FILEINFO;
public const int FilesystemIterator::CURRENT_AS_SELF;
public const int FilesystemIterator::KEY_MODE_MASK;
public const int FilesystemIterator::KEY_AS_PATHNAME;
public const int FilesystemIterator::FOLLOW_SYMLINKS;
public const int FilesystemIterator::KEY_AS_FILENAME;
public const int FilesystemIterator::NEW_CURRENT_AND_KEY;
public const int FilesystemIterator::OTHER_MODE_MASK;
public const int FilesystemIterator::SKIP_DOTS;
public const int FilesystemIterator::UNIX_PATHS;
/* Sabitler */
const int BZ2;
const int GZ;
const int NONE;
const int PHAR;
const int TAR;
const int ZIP;
const int COMPRESSED;
const int PHP;
const int PHPS;
const int MD5;
const int OPENSSL;
const int OPENSSL_SHA256;
const int OPENSSL_SHA512;
const int SHA1;
const int SHA256;
const int SHA512;
/* Yöntemler */
public function __construct(string `$filename`, int `$flags` = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string `$alias` = `null`)
public function addEmptyDir(string `$directory`): void
public function addFile(string `$filename`, ?string `$localName` = `null`): void
public function addFromString(string `$localName`, string `$contents`): void
final public static function apiVersion(): string
public function buildFromDirectory(string `$directory`, string `$pattern` = ""): array
public function buildFromIterator(Traversable `$iterator`, ?string `$baseDirectory` = `null`): array
final public static function canCompress(int `$compression` = 0): bool
final public static function canWrite(): bool
public function compress(int `$compression`, ?string `$extension` = `null`): ?Phar
public function compressFiles(int `$compression`): void
public function convertToData(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?PharData
public function convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar
public function copy(string `$from`, string `$to`): true
public function count(int `$mode` = `COUNT_NORMAL`): int
final public static function createDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): string
public function decompress(?string `$extension` = `null`): ?Phar
public function decompressFiles(): true
public function delMetadata(): true
public function delete(string `$localName`): true
public function extractTo(string `$directory`, array|string|null `$files` = `null`, bool `$overwrite` = `false`): bool
public function getAlias(): ?string
public function getMetadata(array `$unserializeOptions` = []): mixed
public function getModified(): bool
public function getPath(): string
public function getSignature(): array|false
public function getStub(): string
final public static function getSupportedCompression(): array
final public static function getSupportedSignatures(): array
public function getVersion(): string
public function hasMetadata(): bool
final public static function interceptFileFuncs(): void
public function isBuffering(): bool
public function isCompressed(): int|false
public function isFileFormat(int `$format`): bool
final public static function isValidPharFilename(string `$filename`, bool `$executable` = `true`): bool
public function isWritable(): bool
final public static function loadPhar(string `$filename`, ?string `$alias` = `null`): bool
final public static function mapPhar(?string `$alias` = `null`, int `$offset` = 0): bool
final public static function mount(string `$pharPath`, string `$externalPath`): void
final public static function mungServer(array `$variables`): void
public function offsetExists(string `$localName`): bool
public function offsetGet(string `$localName`): SplFileInfo
public function offsetSet(string `$localName`, resource|string `$value`): void
public function offsetUnset(string `$localName`): void
final public static function running(bool `$returnPhar` = `true`): string
public function setAlias(string `$alias`): true
public function setDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): true
public function setMetadata(mixed `$metadata`): void
public function setSignatureAlgorithm(int `$algo`, ?string `$privateKey` = `null`): void
public function setStub(resource|string `$stub`, int `$length` = -1): true
public function startBuffering(): void
public function stopBuffering(): void
final public static function unlinkArchive(string `$filename`): true
final public static function webPhar(
?string `$alias` = `null`,
?string `$index` = `null`,
?string `$fileNotFoundScript` = `null`,
array `$mimeTypes` = [],
?callable `$rewrite` = `null`
): void
public function __destruct()
/* Miras alınan yöntemler */
public function RecursiveDirectoryIterator::getChildren(): RecursiveDirectoryIterator
public function RecursiveDirectoryIterator::getSubPath(): string
public function RecursiveDirectoryIterator::getSubPathname(): string
public function RecursiveDirectoryIterator::hasChildren(bool `$allowLinks` = `false`): bool
public function RecursiveDirectoryIterator::key(): string
public function RecursiveDirectoryIterator::next(): void
public function RecursiveDirectoryIterator::rewind(): void
public function FilesystemIterator::current(): string|SplFileInfo|FilesystemIterator
public function FilesystemIterator::getFlags(): int
public function FilesystemIterator::key(): string
public function FilesystemIterator::next(): void
public function FilesystemIterator::rewind(): void
public function FilesystemIterator::setFlags(int `$flags`): void
public function DirectoryIterator::current(): mixed
public function DirectoryIterator::getBasename(string `$suffix` = ""): string
public function DirectoryIterator::getExtension(): string
public function DirectoryIterator::getFilename(): string
public function DirectoryIterator::isDot(): bool
public function DirectoryIterator::key(): mixed
public function DirectoryIterator::next(): void
public function DirectoryIterator::rewind(): void
public function DirectoryIterator::seek(int `$offset`): void
public function DirectoryIterator::__toString(): string
public function DirectoryIterator::valid(): bool
public function SplFileInfo::getATime(): int|false
public function SplFileInfo::getBasename(string `$suffix` = ""): string
public function SplFileInfo::getCTime(): int|false
public function SplFileInfo::getExtension(): string
public function SplFileInfo::getFileInfo(?string `$class` = `null`): SplFileInfo
public function SplFileInfo::getFilename(): string
public function SplFileInfo::getGroup(): int|false
public function SplFileInfo::getInode(): int|false
public function SplFileInfo::getLinkTarget(): string|false
public function SplFileInfo::getMTime(): int|false
public function SplFileInfo::getOwner(): int|false
public function SplFileInfo::getPath(): string
public function SplFileInfo::getPathInfo(?string `$class` = `null`): ?SplFileInfo
public function SplFileInfo::getPathname(): string
public function SplFileInfo::getPerms(): int|false
public function SplFileInfo::getRealPath(): string|false
public function SplFileInfo::getSize(): int|false
public function SplFileInfo::getType(): string|false
public function SplFileInfo::isDir(): bool
public function SplFileInfo::isExecutable(): bool
public function SplFileInfo::isFile(): bool
public function SplFileInfo::isLink(): bool
public function SplFileInfo::isReadable(): bool
public function SplFileInfo::isWritable(): bool
public function SplFileInfo::openFile(string `$mode` = "r", bool `$useIncludePath` = `false`, ?resource `$context` = `null`): SplFileObject
public function SplFileInfo::setFileClass(string `$class` = `SplFileObject::class`): void
public function SplFileInfo::setInfoClass(string `$class` = `SplFileInfo::class`): void
public function SplFileInfo::__toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Added support for the Unix timestamp extension for Zip-based archives.
8.0.0 | Meta-data is no longer deserialized upon opening the archive, but is deferred until Phar::getMetadata() is called.

## Notlar

Dikkat

Prior to PHP 8.0.0, the meta-data was deserialized upon opening the archive. This could lead to security vulnerabilities. Starting with PHP 8.0.0, meta-data is only deserialized when calling Phar::getMetadata(), which has options to restrict deserialization for security reasons.

# Phar::addEmptyDir

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::addEmptyDir — Add an empty directory to the phar archive

### Açıklama

public function Phar::addEmptyDir(string `$directory`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

With this method, an empty directory is created with path `dirname`. This method is similar to ZipArchive::addEmptyDir().

### Bağımsız Değişkenler

`directory`

  The name of the empty directory to create in the phar archive

### Dönen Değerler

no return value, exception is thrown on failure.

### Örnekler

Örnek 1 A Phar::addEmptyDir() example

    <?php
    try {
        $a = new Phar('/path/to/phar.phar');

        $a->addEmptyDir('/full/path/to/file');
        // demonstrates how this file is stored
        $b = $a['full/path/to/file']->isDir();
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Ayrıca Bakınız

- PharData::addEmptyDir() - Add an empty directory to the tar/zip archive
- Phar::addFile() - Add a file from the filesystem to the phar archive
- Phar::addFromString() - Add a file from a string to the phar archive

# Phar::addFile

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::addFile — Add a file from the filesystem to the phar archive

### Açıklama

public function Phar::addFile(string `$filename`, ?string `$localName` = `null`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

With this method, any file or URL can be added to the phar archive. If the optional second parameter `localName` is a string, the file will be stored in the archive with that name, otherwise the `file` parameter is used as the path to store within the archive. URLs must have a localname or an exception is thrown. This method is similar to ZipArchive::addFile().

### Bağımsız Değişkenler

`filename`

  Full or relative path to a file on disk to be added to the phar archive.

`localName`

  Path that the file will be stored in the archive.

### Dönen Değerler

no return value, exception is thrown on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `localName` is now nullable.

### Örnekler

Örnek 1 A Phar::addFile() example

    <?php
    try {
        $a = new Phar('/path/to/phar.phar');

        $a->addFile('/full/path/to/file');
        // demonstrates how this file is stored
        $b = $a['full/path/to/file']->getContent();

        $a->addFile('/full/path/to/file', 'my/file.txt');
        $c = $a['my/file.txt']->getContent();

        // demonstrate URL usage
        $a->addFile('http://www.example.com', 'example.html');
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Notlar

> Bilginize: Phar::addFile(), Phar::addFromString() ve Phar::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine Phar::buildFromDirectory() veya Phar::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- Phar::offsetSet() - Set the contents of an internal file to those of an external file
- PharData::addFile() - Add a file from the filesystem to the tar/zip archive
- Phar::addFromString() - Add a file from a string to the phar archive
- Phar::addEmptyDir() - Add an empty directory to the phar archive

# Phar::addFromString

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::addFromString — Add a file from a string to the phar archive

### Açıklama

public function Phar::addFromString(string `$localName`, string `$contents`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

With this method, any string can be added to the phar archive. The file will be stored in the archive with `localname` as its path. This method is similar to ZipArchive::addFromString().

### Bağımsız Değişkenler

`localName`

  Path that the file will be stored in the archive.

`contents`

  The file contents to store

### Dönen Değerler

no return value, exception is thrown on failure.

### Örnekler

Örnek 1 A Phar::addFromString() example

    <?php
    try {
        $a = new Phar('/path/to/phar.phar');

        $a->addFromString('path/to/file.txt', 'my simple file');
        $b = $a['path/to/file.txt']->getContent();

        // to add contents from a stream handle for large files, use offsetSet()
        $c = fopen('/path/to/hugefile.bin');
        $a['largefile.bin'] = $c;
        fclose($c);
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Notlar

> Bilginize: Phar::addFile(), Phar::addFromString() ve Phar::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine Phar::buildFromDirectory() veya Phar::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- Phar::offsetSet() - Set the contents of an internal file to those of an external file
- PharData::addFromString() - Add a file from a string to the tar/zip archive
- Phar::addFile() - Add a file from the filesystem to the phar archive
- Phar::addEmptyDir() - Add an empty directory to the phar archive

# Phar::apiVersion

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::apiVersion — Returns the api version

### Açıklama

final public static function Phar::apiVersion(): string

Return the API version of the phar file format that will be used when creating phars. The Phar extension supports reading API version 1.0.0 or newer. API version 1.1.0 is required for SHA-256 and SHA-512 hash, and API version 1.1.1 is required to store empty directories.

### Bağımsız Değişkenler

### Dönen Değerler

The API version string as in `"1.0.0"`.

### Örnekler

Örnek 1 A Phar::apiVersion() example

    <?php
    echo Phar::apiVersion();
    ?>

Yukarıdaki örneğin çıktısı:

    1.1.1

# Phar::buildFromDirectory

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::buildFromDirectory — Construct a phar archive from the files within a directory

### Açıklama

public function Phar::buildFromDirectory(string `$directory`, string `$pattern` = ""): array

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Populate a phar archive from directory contents. The optional second parameter is a regular expression (pcre) that is used to exclude files. Any filename that matches the regular expression will be included, all others will be excluded. For more fine-grained control, use Phar::buildFromIterator().

### Bağımsız Değişkenler

`directory`

  The full or relative path to the directory that contains all files to add to the archive.

`pattern`

  An optional pcre regular expression that is used to filter the list of files. Only file paths matching the regular expression will be included in the archive.

### Dönen Değerler

Phar::buildFromDirectory() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to instantiate the internal directory iterators, or a PharException if there were errors saving the phar archive.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Phar::buildFromDirectory() no longer returns `false`.

### Örnekler

Örnek 1 A Phar::buildFromDirectory() example

    <?php
    // create with alias "project.phar"
    $phar = new Phar('project.phar', 0, 'project.phar');
    // add all files in the project
    $phar->buildFromDirectory(dirname(__FILE__) . '/project');
    $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));

    $phar2 = new Phar('project2.phar', 0, 'project2.phar');
    // add all files in the project, only include php files
    $phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
    $phar2->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
    ?>

### Ayrıca Bakınız

- Phar::buildFromIterator() - Construct a phar archive from an iterator

# Phar::buildFromIterator

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::buildFromIterator — Construct a phar archive from an iterator

### Açıklama

public function Phar::buildFromIterator(Traversable `$iterator`, ?string `$baseDirectory` = `null`): array

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Populate a phar archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the phar to the name of a file on disk, and iterators like DirectoryIterator that return SplFileInfo objects. For iterators that return SplFileInfo objects, the second parameter is required.

### Bağımsız Değişkenler

`iterator`

  Any iterator that either associatively maps phar file to location or returns SplFileInfo objects

`baseDirectory`

  For iterators that return SplFileInfo objects, the portion of each file's full path to remove when adding to the phar archive

### Dönen Değerler

Phar::buildFromIterator() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

### Hatalar/İstisnalar

This method returns UnexpectedValueException when the iterator returns incorrect values, such as an integer key instead of a string, a BadMethodCallException when an SplFileInfo-based iterator is passed without a `baseDirectory` parameter, or a PharException if there were errors saving the phar archive.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Phar::buildFromIterator() no longer returns `false`.
8.0.0 | `baseDirectory` is now nullable.

### Örnekler

Örnek 1 A Phar::buildFromIterator() with SplFileInfo

For most phar archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a phar archive containing the files in this sample directory layout:

    /path/to/project/
                     config/
                            dist.xml
                            debug.xml
                     lib/
                         file1.php
                         file2.php
                     src/
                         processthing.php
                     www/
                         index.php
                     cli/
                         index.php

This code could be used to add these files to the "project.phar" phar archive:

    <?php
    // create with alias "project.phar"
    $phar = new Phar('project.phar', 0, 'project.phar');
    $phar->buildFromIterator(
        new RecursiveIteratorIterator(
         new RecursiveDirectoryIterator('/path/to/project')),
        '/path/to/project');
    $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
    ?>

The file project.phar can then be used immediately. Phar::buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the phar archive.

As an interesting note, Phar::buildFromIterator() can also be used to copy the contents of an existing phar archive, as the Phar object descends from DirectoryIterator:

    <?php
    // create with alias "project.phar"
    $phar = new Phar('project.phar', 0, 'project.phar');
    $phar->buildFromIterator(
        new RecursiveIteratorIterator(
         new Phar('/path/to/anotherphar.phar')),
        'phar:///path/to/anotherphar.phar/path/to/project');
    $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
    ?>

Örnek 2 A Phar::buildFromIterator() with other iterators

The second form of the iterator can be used with any iterator that returns a key => value mapping, such as an ArrayIterator:

    <?php
    // create with alias "project.phar"
    $phar = new Phar('project.phar', 0, 'project.phar');
    $phar->buildFromIterator(
        new ArrayIterator(
         array(
            'internal/file.php' => dirname(__FILE__) . '/somefile.php',
            'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
         )));
    $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
    ?>

### Ayrıca Bakınız

- Phar::buildFromDirectory() - Construct a phar archive from the files within a directory

# Phar::canCompress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2

### Açıklama

final public static function Phar::canCompress(int `$compression` = 0): bool

This should be used to test whether compression is possible prior to loading a phar archive containing compressed files.

### Bağımsız Değişkenler

`compression`

  Either `Phar::GZ` or `Phar::BZ2` can be used to test whether compression is possible with a specific compression algorithm (zlib or bzip2).

### Dönen Değerler

`true` if compression/decompression is available, `false` if not.

### Örnekler

Örnek 1 A Phar::canCompress() example

    <?php
    if (Phar::canCompress()) {
        echo file_get_contents('phar://compressedphar.phar/internal/file.txt');
    } else {
        echo 'no compression available';
    }
    ?>

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file

# Phar::canWrite

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::canWrite — Returns whether phar extension supports writing and creating phars

### Açıklama

final public static function Phar::canWrite(): bool

This static method determines whether write access has been disabled in the system php.ini via the phar.readonly ini variable.

### Bağımsız Değişkenler

### Dönen Değerler

`true` if write access is enabled, `false` if it is disabled.

### Örnekler

Örnek 1 A Phar::canWrite() example

    <?php
    if (Phar::canWrite()) {
        file_put_contents('phar://myphar.phar/file.txt', 'hi there');
    }
    ?>

### Ayrıca Bakınız

- phar.readonly
- Phar::isWritable() - Returns true if the phar archive can be modified

# Phar::compress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression

### Açıklama

public function Phar::compress(int `$compression`, ?string `$extension` = `null`): ?Phar

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

For tar-based and phar-based phar archives, this method compresses the entire archive using gzip compression or bzip2 compression. The resulting file can be processed with the gunzip command/bunzip command, or accessed directly and transparently with the Phar extension.

For Zip-based phar archives, this method fails with an exception. The zlib extension must be enabled to compress with gzip compression, the bzip2 extension must be enabled in order to compress with bzip2 compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

In addition, this method automatically renames the archive, appending `.gz`, `.bz2` or removing the extension if passed `Phar::NONE` to remove compression. Alternatively, a file extension may be specified with the second parameter.

### Bağımsız Değişkenler

`compression`

  Compression must be one of `Phar::GZ`, `Phar::BZ2` to add compression, or `Phar::NONE` to remove compression.

`extension`

  By default, the extension is `.phar.gz` or `.phar.bz2` for compressing phar archives, and `.phar.tar.gz` or `.phar.tar.bz2` for compressing tar archives. For decompressing, the default file extensions are `.phar` and `.phar.tar`.

### Dönen Değerler

Returns a Phar object, or `null` on failure.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or the bzip2 extension is not enabled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `extension` is now nullable.

### Örnekler

Örnek 1 A Phar::compress() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p1 = $p->compress(Phar::GZ); // copies to /path/to/my.phar.gz
    $p2 = $p->compress(Phar::BZ2); // copies to /path/to/my.phar.bz2
    $p3 = $p2->compress(Phar::NONE); // exception: /path/to/my.phar already exists
    ?>

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive

# Phar::compressFiles

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::compressFiles — Compresses all files in the current Phar archive

### Açıklama

public function Phar::compressFiles(int `$compression`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

For tar-based phar archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use Phar::compress() to compress an entire tar-based phar archive.

For Zip-based and phar-based phar archives, this method compresses all files in the Phar archive using the specified compression. The zlib or bzip2 extensions must be enabled to take advantage of this feature. In addition, if any files are already compressed using bzip2/zlib compression, the respective extension must be enabled in order to decompress the files prior to re-compressing. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

### Bağımsız Değişkenler

`compression`

  Compression must be one of `Phar::GZ`, `Phar::BZ2` to add compression, or `Phar::NONE` to remove compression.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

### Örnekler

Örnek 1 A Phar::compressFiles() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    $p->compressFiles(Phar::GZ);
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(10) "myfile.txt"
    bool(false)
    bool(false)
    bool(false)
    string(11) "myfile2.txt"
    bool(false)
    bool(false)
    bool(false)
    string(10) "myfile.txt"
    int(4096)
    bool(false)
    bool(true)
    string(11) "myfile2.txt"
    int(4096)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive

# Phar::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::__construct — Construct a Phar archive object

### Açıklama

public function Phar::__construct(string `$filename`, int `$flags` = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS, ?string `$alias` = `null`)

### Bağımsız Değişkenler

`filename`

  Path to an existing Phar archive or to-be-created archive. The file name's extension must contain .phar.

`flags`

  Flags to pass to parent class RecursiveDirectoryIterator.

`alias`

  Alias with which this Phar archive should be referred to in calls to stream functionality.

### Hatalar/İstisnalar

Throws BadMethodCallException if called twice, UnexpectedValueException if the phar archive can't be opened.

### Örnekler

Örnek 1 A Phar::__construct() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
                      'my.phar');
    } catch (UnexpectedValueException $e) {
        die('Could not open my.phar');
    } catch (BadMethodCallException $e) {
        echo 'technically, this cannot happen';
    }
    // this works now
    echo file_get_contents('phar://my.phar/example.txt');
    // and works as if we had typed
    echo file_get_contents('phar:///path/to/my.phar/example.txt');
    ?>

# Phar::convertToData

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::convertToData — Convert a phar archive to a non-executable tar or zip file

### Açıklama

public function Phar::convertToData(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?PharData

This method is used to convert an executable phar archive to either a tar or zip file. To make the tar or zip non-executable, the phar stub and phar alias files are removed from the newly created archive.

If no changes are specified, this method throws a BadMethodCallException if the archive is in phar file format. For archives in tar or zip file format, this method converts the archive to a non-executable archive.

If successful, the method creates a new archive on disk and returns a PharData object. The old archive is not removed from disk, and should be done manually after the process has finished.

### Bağımsız Değişkenler

`format`

  This should be one of `Phar::TAR` or `Phar::ZIP`. If set to `null`, the existing file format will be preserved.

`compression`

  This should be one of `Phar::NONE` for no whole-archive compression, `Phar::GZ` for zlib-based compression, and `Phar::BZ2` for bzip-based compression.

`extension`

  This parameter is used to override the default file extension for a converted archive. Note that `.phar` cannot be used anywhere in the filename for a non-executable tar or zip archive.

  If converting to a tar-based phar archive, the default extensions are `.tar`, `.tar.gz`, and `.tar.bz2` depending on specified compression. For zip-based archives, the default extension is `.zip`.

### Dönen Değerler

The method returns a PharData object on success, or `null` on failure.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), and a PharException if any problems are encountered during the phar creation process.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `format`, `compression`, and `extension` are now nullable.

### Örnekler

Örnek 1 A Phar::convertToData() example

Using Phar::convertToData():

    <?php
    try {
        $tarphar = new Phar('myphar.phar.tar');
        // note that myphar.phar.tar is *not* unlinked
        // convert it to the non-executable tar file format
        // creates myphar.tar
        $tar = $tarphar->convertToData();
        // convert to non-executable zip format, creates myphar.zip
        $zip = $tarphar->convertToData(Phar::ZIP);
        // create myphar.tbz
        $tgz = $tarphar->convertToData(Phar::TAR, Phar::BZ2, '.tbz');
        // creates myphar.phar.tgz
        $phar = $tarphar->convertToData(Phar::PHAR); // throws exception
    } catch (Exception $e) {
        // handle the error here
    }
    ?>

### Ayrıca Bakınız

- Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive
- PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

# Phar::convertToExecutable

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format

### Açıklama

public function Phar::convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This method is used to convert a phar archive to another file format. For instance, it can be used to create a tar-based executable phar archive from a zip-based executable phar archive, or from an executable phar archive in the phar file format. In addition, it can be used to apply whole-archive compression to a tar or phar-based archive.

If no changes are specified, this method throws a BadMethodCallException.

If successful, the method creates a new archive on disk and returns a Phar object. The old archive is not removed from disk, and should be done manually after the process has finished.

### Bağımsız Değişkenler

`format`

  This should be one of `Phar::PHAR`, `Phar::TAR`, or `Phar::ZIP`. If set to `null`, the existing file format will be preserved.

`compression`

  This should be one of `Phar::NONE` for no whole-archive compression, `Phar::GZ` for zlib-based compression, and `Phar::BZ2` for bzip-based compression.

`extension`

  This parameter is used to override the default file extension for a converted archive. Note that all zip- and tar-based phar archives must contain `.phar` in their file extension in order to be processed as a phar archive.

  If converting to a phar-based archive, the default extensions are `.phar`, `.phar.gz`, or `.phar.bz2` depending on the specified compression. For tar-based phar archives, the default extensions are `.phar.tar`, `.phar.tar.gz`, and `.phar.tar.bz2`. For zip-based phar archives, the default extension is `.phar.zip`.

### Dönen Değerler

The method returns a Phar object on success, or `null` on failure.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), an UnexpectedValueException if write support is disabled, and a PharException if any problems are encountered during the phar creation process.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `format`, `compression`, and `extension` are now nullable.

### Örnekler

Örnek 1 A Phar::convertToExecutable() example

Using Phar::convertToExecutable():

    <?php
    try {
        $tarphar = new Phar('myphar.phar.tar');
        // convert it to the phar file format
        // note that myphar.phar.tar is *not* unlinked
        $phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
        $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
        // creates myphar.phar.tgz
        $compressed = $phar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
    } catch (Exception $e) {
        // handle the error here
    }
    ?>

### Ayrıca Bakınız

- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive
- PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

# Phar::copy

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::copy — Copy a file internal to the phar archive to another new file within the phar

### Açıklama

public function Phar::copy(string `$from`, string `$to`): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Copy a file internal to the phar archive to another new file within the phar. This is an object-oriented alternative to using copy() with the phar stream wrapper.

### Bağımsız Değişkenler

`from`

`to`

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws UnexpectedValueException if the source file does not exist, the destination file already exists, write access is disabled, opening either file fails, reading the source file fails, or a PharException if writing the changes to the phar fails.

### Örnekler

Örnek 1 A Phar::copy() example

This example shows using Phar::copy() and the equivalent stream wrapper performance of the same thing. The primary difference between the two approaches is error handling. All Phar methods throw exceptions, whereas the stream wrapper uses trigger_error().

    <?php

    try {
        $phar = new Phar('myphar.phar');

        $phar['a'] = 'hi';
        $phar->copy('a', 'b');

        echo $phar['b']; // Outputs "phar://myphar.phar/b"
    } catch (Exception $e) {
        // Handle error
    }

    // The stream wrapper equivalent of the above code.
    // E_WARNING are triggered on error rather than exceptions
    copy('phar://myphar.phar/a', 'phar//myphar.phar/c');
    echo file_get_contents('phar://myphar.phar/c'); // Outputs "hi"

    ?>

# Phar::count

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::count — Returns the number of entries (files) in the Phar archive

### Açıklama

public function Phar::count(int `$mode` = `COUNT_NORMAL`): int

### Bağımsız Değişkenler

`mode`

  `mode` is an integer value specifying the counting mode to be used. By default, it is set to `COUNT_NORMAL`, which counts only the number of items in the archive that have not been deleted or hidden. When set to `COUNT_RECURSIVE`, it counts all items in the archive, including those that have been deleted or hidden.

### Dönen Değerler

The number of files contained within this phar, or `0` (the number zero) if none.

### Örnekler

Örnek 1 A Phar::count() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    } catch (Exception $e) {
        echo 'Could not create phar:', $e;
    }
    echo 'The new phar has ' . $p->count() . " entries\n";
    $p['file.txt'] = 'hi';
    echo 'The new phar has ' . $p->count() . " entries\n";
    ?>

Yukarıdaki örneğin çıktısı:

    The new phar has 0 entries
    The new phar has 1 entries

# Phar::createDefaultStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::createDefaultStub — Create a phar-file format specific stub

### Açıklama

final public static function Phar::createDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): string

This method is intended for creation of phar-file format-specific stubs, and is not intended for use with tar- or zip-based phar archives.

Phar archives contain a bootstrap loader, or `stub` written in PHP that is executed when the archive is executed in PHP either via include:

    <?php
    include 'myphar.phar';
    ?>

or by simple execution:

    php myphar.phar

This method provides a simple and easy method to create a stub that will run a startup file from the phar archive. In addition, different files can be specified for running the phar archive from the command line versus through a web server. The loader stub also calls Phar::interceptFileFuncs() to allow easy bundling of a PHP application that accesses the file system. If the phar extension is not present, the loader stub will extract the phar archive to a temporary directory and then operate on the files. A shutdown function erases the temporary files on exit.

### Bağımsız Değişkenler

`index`

  Relative path within the phar archive to run if accessed on the command-line

`webIndex`

  Relative path within the phar archive to run if accessed through a web browser

### Dönen Değerler

Returns a string containing the contents of a customized bootstrap loader (stub) that allows the created Phar archive to work with or without the Phar extension enabled.

### Hatalar/İstisnalar

Throws UnexpectedValueException if either parameter is longer than 400 bytes.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `index` and `webIndex` are now nullable.

### Örnekler

Örnek 1 A Phar::createDefaultStub() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Ayrıca Bakınız

- Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
- Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive

# Phar::decompress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::decompress — Decompresses the entire Phar archive

### Açıklama

public function Phar::decompress(?string `$extension` = `null`): ?Phar

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

For tar-based and phar-based phar archives, this method decompresses the entire archive.

For Zip-based phar archives, this method fails with an exception. The zlib extension must be enabled to decompress an archive compressed with gzip compression, and the bzip2 extension must be enabled in order to decompress an archive compressed with bzip2 compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

In addition, this method automatically changes the file extension of the archive, `.phar` by default for phar archives, or `.phar.tar` for tar-based phar archives. Alternatively, a file extension may be specified with the second parameter.

### Bağımsız Değişkenler

`extension`

  For decompressing, the default file extensions are `.phar` and `.phar.tar`. Use this parameter to specify another file extension. Be aware that all executable phar archives must contain `.phar` in their filename.

### Dönen Değerler

A Phar object is returned on success, and `null` on failure.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or the bzip2 extension is not enabled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `extension` is now nullable.

### Örnekler

Örnek 1 A Phar::decompress() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar.gz');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p3 = $p2->decompress(); // creates /path/to/my.phar
    ?>

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive

# Phar::decompressFiles

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::decompressFiles — Decompresses all files in the current Phar archive

### Açıklama

public function Phar::decompressFiles(): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

For tar-based phar archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use Phar::compress() to compress an entire tar-based phar archive.

For Zip-based and phar-based phar archives, this method decompresses all files in the Phar archive. The zlib or bzip2 extensions must be enabled to take advantage of this feature if any files are compressed using bzip2/zlib compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

### Örnekler

Örnek 1 A Phar::decompressFiles() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p->compressFiles(Phar::GZ);
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    $p->decompressFiles();
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(10) "myfile.txt"
    int(4096)
    bool(false)
    bool(true)
    string(11) "myfile2.txt"
    int(4096)
    bool(false)
    bool(true)
    string(10) "myfile.txt"
    bool(false)
    bool(false)
    bool(false)
    string(11) "myfile2.txt"
    bool(false)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive

# Phar::delMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

Phar::delMetadata — Deletes the global metadata of the phar

### Açıklama

public function Phar::delMetadata(): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Deletes the global metadata of the phar

### Bağımsız Değişkenler

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A Phar::delMetaData() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        var_dump($phar->getMetadata());
        $phar->setMetadata("hi there");
        var_dump($phar->getMetadata());
        $phar->delMetadata();
        var_dump($phar->getMetadata());
    } catch (Exception $e) {
        // handle errors
    }
    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    string(8) "hi there"
    NULL

### Ayrıca Bakınız

- Phar::getMetadata() - Returns phar archive meta-data
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::hasMetadata() - Returns whether phar has global meta-data

# Phar::delete

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::delete — Delete a file within a phar archive

### Açıklama

public function Phar::delete(string `$localName`): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Delete a file within an archive. This is the functional equivalent of calling unlink() on the stream wrapper equivalent, as shown in the example below.

### Bağımsız Değişkenler

`localName`

  Path within an archive to the file to delete.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A Phar::delete() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        $phar->delete('unlink/me.php');
        // this is equivalent to:
        unlink('phar://myphar.phar/unlink/me.php');
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Ayrıca Bakınız

- PharData::delete() - Delete a file within a tar/zip archive
- Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory

# Phar::__destruct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::__destruct — Destructs a Phar archive object

### Açıklama

public function Phar::__destruct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# Phar::extractTo

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::extractTo — Extract the contents of a phar archive to a directory

### Açıklama

public function Phar::extractTo(string `$directory`, array|string|null `$files` = `null`, bool `$overwrite` = `false`): bool

Extract all files within a phar archive to disk. Extracted files and directories preserve permissions as stored in the archive. The optional parameters allow optional control over which files are extracted, and whether existing files on disk can be overwritten. The second parameter `files` can be either the name of a file or directory to extract, or an array of names of files and directories to extract. By default, this method will not overwrite existing files, the third parameter can be set to true to enable overwriting of files. This method is similar to ZipArchive::extractTo().

### Bağımsız Değişkenler

`directory`

  Path to extract the given `files` to

`files`

  The name of a file or directory to extract, or an array of files/directories to extract, `null` to skip this param

`overwrite`

  Set to `true` to enable overwriting existing files

### Dönen Değerler

returns `true` on success, but it is better to check for thrown exception, and assume success if none is thrown.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A Phar::extractTo() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        $phar->extractTo('/full/path'); // extract all files
        $phar->extractTo('/another/path', 'file.txt'); // extract only file.txt
        $phar->extractTo('/this/path',
            array('file1.txt', 'file2.txt')); // extract 2 files only
        $phar->extractTo('/third/path', null, true); // extract all files, and overwrite
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Notlar

> Bilginize:

> Windows NTFS dosya sistemi dosya isimlerinde `<|>*?":` gibi bazı karakterleri desteklemez. Bundan başka nokta ile biten dosya isimleri de desteklenmez. Bazı dosya çıkarma araçlarının aksine, bu yöntem bu karakterleri bir alt çizgi ile değiştirmek yerine bu tür dosyaları çıkarmada başarısız olur.

### Ayrıca Bakınız

- PharData::extractTo() - Extract the contents of a tar/zip archive to a directory

# Phar::getAlias

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.1)

Phar::getAlias — Get the alias for Phar

### Açıklama

public function Phar::getAlias(): ?string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the alias or `null` if there's no alias.

# Phar::getMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::getMetadata — Returns phar archive meta-data

### Açıklama

public function Phar::getMetadata(array `$unserializeOptions` = []): mixed

Retrieve archive meta-data. Meta-data can be any PHP variable that can be serialized.

Dikkat

Accessing the meta-data will trigger deserialization, which can trigger the execution of arbitrary PHP code. Do not use this on untrusted phar archives, or configure the `unserializeOptions` in a secure manner.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Any PHP value that can be serialized and is stored as meta-data for the Phar archive, or `null` if no meta-data is stored.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | The parameter `unserializeOptions` has been added.

### Örnekler

Örnek 1 A Phar::getMetadata() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.php'] = '<?php echo "hello";';
        $p->setMetadata(array('bootstrap' => 'file.php'));
        var_dump($p->getMetadata());
    } catch (Exception $e) {
        echo 'Could not modify phar:', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bootstrap"]=>
      string(8) "file.php"
    }

### Ayrıca Bakınız

- Phar::setMetadata() - Sets phar archive meta-data
- Phar::delMetadata() - Deletes the global metadata of the phar
- Phar::hasMetadata() - Returns whether phar has global meta-data

# Phar::getModified

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::getModified — Return whether phar was modified

### Açıklama

public function Phar::getModified(): bool

This method can be used to determine whether a phar has either had an internal file deleted, or contents of a file changed in some way.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

`true` if the phar has been modified since opened, `false` if not.

# Phar::getPath

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Phar::getPath — Get the real path to the Phar archive on disk

### Açıklama

public function Phar::getPath(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# Phar::getSignature

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

### Açıklama

public function Phar::getSignature(): array|false

Returns the verification signature of a phar archive in a hexadecimal string.

### Bağımsız Değişkenler

### Dönen Değerler

Array with the opened archive's signature in `hash` key and `MD5`, `SHA-1`, `SHA-256`, `SHA-512`, or `OpenSSL` in `hash_type`. This signature is a hash calculated on the entire phar's contents, and may be used to verify the integrity of the archive. A valid signature is absolutely required of all executable phar archives if the phar.require_hash INI variable is set to true. If there is no signature, the function returns `false`.

# Phar::getStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive

### Açıklama

public function Phar::getStub(): string

Phar archives contain a bootstrap loader, or `stub` written in PHP that is executed when the archive is executed in PHP either via include:

    <?php
    include 'myphar.phar';
    ?>

or by simple execution:

    php myphar.phar

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the contents of the bootstrap loader (stub) of the current Phar archive.

### Hatalar/İstisnalar

Throws RuntimeException if it is not possible to read the stub from the Phar archive.

### Örnekler

Örnek 1 A Phar::getStub() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    echo $p->getStub();
    echo "==NEXT==\n";
    $p->setStub("<?php
    function __autoload($class)
    {
        include 'phar://' . str_replace('_', '/', $class);
    }
    Phar::mapPhar('myphar.phar');
    include 'phar://myphar.phar/startup.php';
    __HALT_COMPILER(); ?>");
    echo $p->getStub();
    ?>

Yukarıdaki örneğin çıktısı:

    <?php __HALT_COMPILER(); ?>
    ==NEXT==
    <?php
    function __autoload($class)
    {
        include 'phar://' . str_replace('_', '/', $class);
    }
    Phar::mapPhar('myphar.phar');
    include 'phar://myphar.phar/startup.php';
    __HALT_COMPILER(); ?>

### Ayrıca Bakınız

- Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
- Phar::createDefaultStub() - Create a phar-file format specific stub

# Phar::getSupportedCompression

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

Phar::getSupportedCompression — Return array of supported compression algorithms

### Açıklama

final public static function Phar::getSupportedCompression(): array

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns an array containing any of `Phar::GZ` or `Phar::BZ2`, depending on the availability of the zlib extension or the bz2 extension.

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive

# Phar::getSupportedSignatures

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.1.0)

Phar::getSupportedSignatures — Return array of supported signature types

### Açıklama

final public static function Phar::getSupportedSignatures(): array

Return array of supported signature types

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns an array containing any of `MD5`, `SHA-1`, `SHA-256`, `SHA-512`, or `OpenSSL`.

### Ayrıca Bakınız

- Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
- Phar::setSignatureAlgorithm() - Set the signature algorithm for a phar and apply it

# Phar::getVersion

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::getVersion — Return version info of Phar archive

### Açıklama

public function Phar::getVersion(): string

Returns the API version of an opened Phar archive.

### Bağımsız Değişkenler

### Dönen Değerler

The opened archive's API version. This is not to be confused with the API version that the loaded phar extension will use to create new phars. Each Phar archive has the API version hard-coded into its manifest. See Phar file format documentation for more information.

### Ayrıca Bakınız

- Phar::apiVersion() - Returns the api version

# Phar::hasMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

Phar::hasMetadata — Returns whether phar has global meta-data

### Açıklama

public function Phar::hasMetadata(): bool

Returns whether phar has global meta-data set.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns `true` if meta-data has been set, and `false` if not.

### Örnekler

Örnek 1 A Phar::hasMetadata() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        var_dump($phar->hasMetadata());
        $phar->setMetadata(array('thing' => 'hi'));
        var_dump($phar->hasMetadata());
        $phar->delMetadata();
        var_dump($phar->hasMetadata());
    } catch (Exception $e) {
        // handle error
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- Phar::getMetadata() - Returns phar archive meta-data
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::delMetadata() - Deletes the global metadata of the phar

# Phar::interceptFileFuncs

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::interceptFileFuncs — Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

### Açıklama

final public static function Phar::interceptFileFuncs(): void

instructs phar to intercept fopen(), readfile(), file_get_contents(), opendir(), and all of the stat-related functions. If any of these functions is called from within a phar archive with a relative path, the call is modified to access a file within the phar archive. Absolute paths are assumed to be attempts to load external files from the filesystem.

This function makes it possible to run PHP applications designed to run off of a hard disk as a phar application.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

### Örnekler

Örnek 1 A Phar::interceptFileFuncs() example

    <?php
    Phar::interceptFileFuncs();
    include 'phar://' . __FILE__ . '/file.php';
    ?>

Assuming that this phar is at `/path/to/myphar.phar` and it contains `file.php` and `file2.txt`, if `file.php` contains this code:

Örnek 2 A Phar::interceptFileFuncs() example

    <?php
    echo file_get_contents('file2.txt');
    ?>

Normally PHP would search the current directory for `file2.txt`, which would translate as the directory of file.php, or the current directory of a command-line user. Phar::interceptFileFuncs() instructs PHP to consider the current directory to be `phar:///path/to/myphar.phar/` and so opens `phar:///path/to/myphar.phar/file2.txt` in the above example code.

# Phar::isBuffering

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

### Açıklama

public function Phar::isBuffering(): bool

This method can be used to determine whether a Phar will save changes to disk immediately, or whether a call to Phar::stopBuffering() is needed to enable saving changes.

Phar write buffering is per-archive, buffering active for the `foo.phar` Phar archive does not affect changes to the `bar.phar` Phar archive.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the write operations are being buffer, `false` otherwise.

### Örnekler

Örnek 1 A Phar::isBuffering() example

    <?php
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p2 = new Phar('existingphar.phar');
    $p['file1.txt'] = 'hi';
    var_dump($p->isBuffering());
    var_dump($p2->isBuffering());
    ?>
    =2=
    <?php
    $p->startBuffering();
    var_dump($p->isBuffering());
    var_dump($p2->isBuffering());
    $p->stopBuffering();
    ?>
    =3=
    <?php
    var_dump($p->isBuffering());
    var_dump($p2->isBuffering());
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    =2=
    bool(true)
    bool(false)
    =3=
    bool(false)
    bool(false)

### Ayrıca Bakınız

- Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
- Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk

# Phar::isCompressed

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)

### Açıklama

public function Phar::isCompressed(): int|false

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on). Zip-based phar archives cannot be compressed as a file, and so this method will always return `false` if a zip-based phar archive is queried.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

`Phar::GZ`, `Phar::BZ2` or `false`.

### Örnekler

Örnek 1 A Phar::isCompressed() example

    <?php
    try {
        $phar1 = new Phar('myphar.zip.phar');
        var_dump($phar1->isCompressed());
        $phar2 = new Phar('myuncompressed.tar.phar');
        var_dump($phar2->isCompressed());
        $phar2->compress(Phar::GZ);
        var_dump($phar2->isCompressed() == Phar::GZ);
    } catch (Exception $e) {
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms

# Phar::isFileFormat

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter

### Açıklama

public function Phar::isFileFormat(int `$format`): bool

### Bağımsız Değişkenler

`format`

  Either `Phar::PHAR`, `Phar::TAR`, or `Phar::ZIP` to test for the format of the archive.

### Dönen Değerler

Returns `true` if the phar archive matches the file format requested by the parameter

### Hatalar/İstisnalar

PharException is thrown if the parameter is an unknown file format specifier.

### Ayrıca Bakınız

- Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file

# Phar::isValidPharFilename

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename

### Açıklama

final public static function Phar::isValidPharFilename(string `$filename`, bool `$executable` = `true`): bool

Returns whether the given filename is a valid phar filename that will be recognized as a phar archive by the phar extension. This can be used to test a name without having to instantiate a phar archive and catch the inevitable Exception that will be thrown if an invalid name is specified.

### Bağımsız Değişkenler

`filename`

  The name or full path to a phar archive not yet created

`executable`

  This parameter determines whether the filename should be treated as a phar executable archive, or a data non-executable archive

### Dönen Değerler

Returns `true` if the filename is valid, `false` if not.

# Phar::isWritable

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::isWritable — Returns true if the phar archive can be modified

### Açıklama

public function Phar::isWritable(): bool

This method returns `true` if `phar.readonly` is `0`, and the actual phar archive on disk is not read-only.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns `true` if the phar archive can be modified

### Ayrıca Bakınız

- Phar::canWrite() - Returns whether phar extension supports writing and creating phars
- PharData::isWritable() - Returns true if the tar/zip archive can be modified

# Phar::loadPhar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::loadPhar — Loads any phar archive with an alias

### Açıklama

final public static function Phar::loadPhar(string `$filename`, ?string `$alias` = `null`): bool

This can be used to read the contents of an external Phar archive. This is most useful for assigning an alias to a phar so that subsequent references to the phar can use the shorter alias, or for loading Phar archives that only contain data and are not intended for execution/inclusion in PHP scripts.

### Bağımsız Değişkenler

`filename`

  the full or relative path to the phar archive to open

`alias`

  The alias that may be used to refer to the phar archive. Note that many phar archives specify an explicit alias inside the phar archive, and a PharException will be thrown if a new alias is specified in this case.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

PharException is thrown if an alias is passed in and the phar archive already has an explicit alias

### Örnekler

Örnek 1 A Phar::loadPhar() example

Phar::loadPhar can be used anywhere to load an external Phar archive, whereas Phar::mapPhar should be used in a loader stub for a Phar.

    <?php
    try {
        Phar::loadPhar('/path/to/phar.phar', 'my.phar');
        echo file_get_contents('phar://my.phar/file.txt');
    } catch (PharException $e) {
        echo $e;
    }
    ?>

### Ayrıca Bakınız

- Phar::mapPhar() - Reads the currently executed file (a phar) and registers its manifest

# Phar::mapPhar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest

### Açıklama

final public static function Phar::mapPhar(?string `$alias` = `null`, int `$offset` = 0): bool

This static method can only be used inside a Phar archive's loader stub in order to initialize the phar when it is directly executed, or when it is included in another script.

### Bağımsız Değişkenler

`alias`

  The alias that can be used in `phar://` URLs to refer to this archive, rather than its full path.

`offset`

  Unused variable, here for compatibility with PEAR's PHP_Archive.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

PharException is thrown if not called directly within PHP execution, if no __HALT_COMPILER(); token is found in the current source file, or if the file cannot be opened for reading.

### Örnekler

Örnek 1 A Phar::mapPhar() example

mapPhar should be used only inside a phar's loader stub. Use loadPhar to load an external phar into memory.

Here is a sample Phar loader stub that uses mapPhar.

    <?php
    function __autoload($class)
    {
        include 'phar://me.phar/' . str_replace('_', '/', $class) . '.php';
    }
    try {
        Phar::mapPhar('me.phar');
        include 'phar://me.phar/startup.php';
    } catch (PharException $e) {
        echo $e->getMessage();
        die('Cannot initialize Phar');
    }
    __HALT_COMPILER();

### Ayrıca Bakınız

- Phar::loadPhar() - Loads any phar archive with an alias

# Phar::mount

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::mount — Mount an external path or file to a virtual location within the phar archive

### Açıklama

final public static function Phar::mount(string `$pharPath`, string `$externalPath`): void

Much like the unix file system concept of mounting external devices to paths within the directory tree, Phar::mount() allows referring to external files and directories as if they were inside of an archive. This allows powerful abstraction such as referring to external configuration files as if they were inside the archive.

### Bağımsız Değişkenler

`pharPath`

  The internal path within the phar archive to use as the mounted path location. This must be a relative path within the phar archive, and must not already exist.

`externalPath`

  A path or URL to an external file or directory to mount within the phar archive

### Dönen Değerler

No return. PharException is thrown on failure.

### Hatalar/İstisnalar

Throws PharException if any problems occur mounting the path.

### Örnekler

Örnek 1 A Phar::mount() example

The following example shows accessing an external configuration file as if it were a path within a phar archive.

First, the code inside of a phar archive:

    <?php
    $configuration = simplexml_load_string(file_get_contents(
        Phar::running(false) . '/config.xml'));
    ?>

Next the external code used to mount the configuration file:

    <?php
    // first set up the association between the abstract config.xml
    // and the actual one on disk
    Phar::mount('phar://config.xml', '/home/example/config.xml');
    // now run the application
    include '/path/to/archive.phar';
    ?>

Another method is to put the mounting code inside the stub of the phar archive. Here is an example of setting up a default configuration file if no user configuration is specified:

    <?php
    // first set up the association between the abstract config.xml
    // and the actual one on disk
    if (defined('EXTERNAL_CONFIG')) {
        Phar::mount('config.xml', EXTERNAL_CONFIG);
        if (file_exists(__DIR__ . '/extra_config.xml')) {
            Phar::mount('extra.xml', __DIR__ . '/extra_config.xml');
        }
    } else {
        Phar::mount('config.xml', 'phar://' . __FILE__ . '/default_config.xml');
        Phar::mount('extra.xml', 'phar://' . __FILE__ . '/default_extra.xml');
    }
    // now run the application
    include 'phar://' . __FILE__ . '/index.php';
    __HALT_COMPILER();
    ?>

...and the code externally to load this phar archive:

    <?php
    define('EXTERNAL_CONFIG', '/home/example/config.xml');
    // now run the application
    include '/path/to/archive.phar';
    ?>

# Phar::mungServer

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution

### Açıklama

final public static function Phar::mungServer(array `$variables`): void

Phar::mungServer() should only be called within the stub of a phar archive.

Defines a list of up to 4 $_SERVER variables that should be modified for execution. Variables that can be modified to remove traces of phar execution are `REQUEST_URI`, `PHP_SELF`, `SCRIPT_NAME` and `SCRIPT_FILENAME`.

On its own, this method does nothing. Only when combined with Phar::webPhar() does it take effect, and only when the requested file is a PHP file to be parsed. Note that the `PATH_INFO` and `PATH_TRANSLATED` variables are always modified.

The original values of variables that are modified are stored in the SERVER array with `PHAR_` prepended, so for instance `SCRIPT_NAME` would be saved as `PHAR_SCRIPT_NAME`.

### Bağımsız Değişkenler

`variables`

  An array of any of the strings `REQUEST_URI`, `PHP_SELF`, `SCRIPT_NAME` and `SCRIPT_FILENAME`. Other values trigger an exception, and Phar::mungServer() is case-sensitive.

### Dönen Değerler

No return.

### Hatalar/İstisnalar

Throws UnexpectedValueException if any problems are found with the passed in data.

### Örnekler

Örnek 1 A Phar::mungServer() example

    <?php
    // example stub
    Phar::mungServer(array('REQUEST_URI'));
    Phar::webPhar();
    __HALT_COMPILER();
    ?>

### Ayrıca Bakınız

- Phar::webPhar() - Routes a request from a web browser to an internal file within the phar archive
- Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive

# Phar::offsetExists

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::offsetExists — Determines whether a file exists in the phar

### Açıklama

public function Phar::offsetExists(string `$localName`): bool

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets.

offsetExists() is called whenever isset() is called.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to look for in a Phar.

### Dönen Değerler

Returns `true` if the file exists within the phar, or `false` if not.

### Örnekler

Örnek 1 A Phar::offsetExists() example

    <?php
    $p = new Phar(dirname(__FILE__) . '/my.phar', 0, 'my.phar');
    $p['firstfile.txt'] = 'first file';
    $p['secondfile.txt'] = 'second file';
    // the next set of lines call offsetExists() indirectly
    var_dump(isset($p['firstfile.txt']));
    var_dump(isset($p['nothere.txt']));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

### Ayrıca Bakınız

- Phar::offsetGet() - Gets a PharFileInfo object for a specific file
- Phar::offsetSet() - Set the contents of an internal file to those of an external file
- Phar::offsetUnset() - Remove a file from a phar

# Phar::offsetGet

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::offsetGet — Gets a PharFileInfo object for a specific file

### Açıklama

public function Phar::offsetGet(string `$localName`): SplFileInfo

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. Phar::offsetGet() is used for retrieving files from a Phar archive.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to look for in a Phar.

### Dönen Değerler

A PharFileInfo object is returned that can be used to iterate over a file's contents or to retrieve information about the current file.

### Hatalar/İstisnalar

This method throws BadMethodCallException if the file does not exist in the Phar archive.

### Örnekler

Örnek 1 Phar::offsetGet() example

As with all classes that implement the ArrayAccess interface, Phar::offsetGet() is automatically called when using the `[]` angle bracket operator.

    <?php
    $p = new Phar(dirname(__FILE__) . '/myphar.phar', 0, 'myphar.phar');
    $p['exists.txt'] = "file exists\n";
    try {
        // automatically calls offsetGet()
        echo $p['exists.txt'];
        echo $p['doesnotexist.txt'];
    } catch (BadMethodCallException $e) {
        echo $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    file exists
    Entry doesnotexist.txt does not exist

### Ayrıca Bakınız

- Phar::offsetExists() - Determines whether a file exists in the phar
- Phar::offsetSet() - Set the contents of an internal file to those of an external file
- Phar::offsetUnset() - Remove a file from a phar

# Phar::offsetSet

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::offsetSet — Set the contents of an internal file to those of an external file

### Açıklama

public function Phar::offsetSet(string `$localName`, resource|string `$value`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. offsetSet is used for modifying an existing file, or adding a new file to a Phar archive.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to modify in a Phar.

`value`

  Content of the file.

### Dönen Değerler

No return values.

### Hatalar/İstisnalar

if phar.readonly is `1`, BadMethodCallException is thrown, as modifying a Phar is only allowed when phar.readonly is set to `0`. Throws PharException if there are any problems flushing changes made to the Phar archive to disk.

### Örnekler

Örnek 1 A Phar::offsetSet() example

offsetSet should not be accessed directly, but instead used via array access with the `[]` operator.

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    try {
        // calls offsetSet
        $p['file.txt'] = 'Hi there';
    } catch (Exception $e) {
        echo 'Could not modify file.txt:', $e;
    }
    ?>

### Notlar

> Bilginize: Phar::addFile(), Phar::addFromString() ve Phar::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine Phar::buildFromDirectory() veya Phar::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- Phar::offsetExists() - Determines whether a file exists in the phar
- Phar::offsetGet() - Gets a PharFileInfo object for a specific file
- Phar::offsetUnset() - Remove a file from a phar

# Phar::offsetUnset

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::offsetUnset — Remove a file from a phar

### Açıklama

public function Phar::offsetUnset(string `$localName`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. offsetUnset is used for deleting an existing file, and is called by the unset() language construct.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to modify in a Phar.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

if phar.readonly is `1`, BadMethodCallException is thrown, as modifying a Phar is only allowed when phar.readonly is set to `0`. Throws PharException if there are any problems flushing changes made to the Phar archive to disk.

### Örnekler

Örnek 1 A Phar::offsetUnset() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    try {
        // deletes file.txt from my.phar by calling offsetUnset
        unset($p['file.txt']);
    } catch (Exception $e) {
        echo 'Could not delete file.txt: ', $e;
    }
    ?>

### Ayrıca Bakınız

- Phar::offsetExists() - Determines whether a file exists in the phar
- Phar::offsetGet() - Gets a PharFileInfo object for a specific file
- Phar::offsetSet() - Set the contents of an internal file to those of an external file
- Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory
- Phar::delete() - Delete a file within a phar archive

# Phar::running

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive

### Açıklama

final public static function Phar::running(bool `$returnPhar` = `true`): string

Returns the full path to the running phar archive. This is intended for use much like the `__FILE__` magic constant, and only has effect inside an executing phar archive.

Inside the stub of an archive, Phar::running() returns `""`. Simply use `__FILE__` to access the current running phar inside a stub.

### Bağımsız Değişkenler

`returnPhar`

  If `false`, the full path on disk to the phar archive is returned. If `true`, a full phar URL is returned.

### Dönen Değerler

Returns the filename if valid, empty string otherwise.

### Örnekler

Örnek 1 A Phar::running() example

For the following example, assume the phar archive is located at `/path/to/phar/my.phar`.

    <?php
    $a = Phar::running(); // $a is "phar:///path/to/my.phar"
    $b = Phar::running(false); // $b is "/path/to/my.phar"
    ?>

# Phar::setAlias

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.1)

Phar::setAlias — Set the alias for the Phar archive

### Açıklama

public function Phar::setAlias(string `$alias`): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Set the alias for the Phar archive, and write it as the permanent alias for this phar archive. An alias can be used internally to a phar archive to ensure that use of the `phar` stream wrapper to access internal files always works regardless of the location of the phar archive on the filesystem. Another alternative is to rely upon Phar's interception of include or to use Phar::interceptFileFuncs() and use relative paths.

### Bağımsız Değişkenler

`alias`

  A shorthand string that this archive can be referred to in `phar` stream wrapper access.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws UnexpectedValueException when write access is disabled, and PharException if the alias is already in use or any problems were encountered flushing changes to disk.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Phar::setAlias() now has a tentative return of true.

### Örnekler

Örnek 1 A Phar::setAlias() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        $phar->setAlias('myp.phar');
    } catch (Exception $e) {
        // handle error
    }
    ?>

### Ayrıca Bakınız

- Phar::__construct() - Construct a Phar archive object
- Phar::interceptFileFuncs() - Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

# Phar::setDefaultStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader

### Açıklama

public function Phar::setDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This method is a convenience method that combines the functionality of Phar::createDefaultStub() and Phar::setStub().

### Bağımsız Değişkenler

`index`

  Relative path within the phar archive to run if accessed on the command-line

`webIndex`

  Relative path within the phar archive to run if accessed through a web browser

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

UnexpectedValueException is thrown if phar.readonly is enabled in php.ini. PharException is thrown if any problems are encountered flushing changes to disk.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Phar::setDefaultStub() now has a tentative return of true.
8.0.0 | `webIndex` is nullable now.

### Örnekler

Örnek 1 A Phar::setDefaultStub() example

    <?php
    try {
        $phar = new Phar('myphar.phar');
        $phar->setDefaultStub('cli.php', 'web/index.php');
        // this is the same as:
        // $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Ayrıca Bakınız

- Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
- Phar::createDefaultStub() - Create a phar-file format specific stub

# Phar::setMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::setMetadata — Sets phar archive meta-data

### Açıklama

public function Phar::setMetadata(mixed `$metadata`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Phar::setMetadata() should be used to store customized data that describes something about the phar archive as a complete entity. PharFileInfo::setMetadata() should be used for file-specific meta-data. Meta-data can slow down the performance of loading a phar archive if the data is large.

Some possible uses for meta-data include specifying which file within the archive should be used to bootstrap the archive, or the location of a file manifest like » PEAR's package.xml file. However, any useful data that describes the phar archive may be stored.

### Bağımsız Değişkenler

`metadata`

  Any PHP variable containing information to store that describes the phar archive

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 A Phar::setMetadata() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.php'] = '<?php echo "hello"';
        $p->setMetadata(array('bootstrap' => 'file.php'));
        var_dump($p->getMetadata());
    } catch (Exception $e) {
        echo 'Could not create and/or modify phar:', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bootstrap"]=>
      string(8) "file.php"
    }

### Ayrıca Bakınız

- Phar::getMetadata() - Returns phar archive meta-data
- Phar::delMetadata() - Deletes the global metadata of the phar
- Phar::hasMetadata() - Returns whether phar has global meta-data

# Phar::setSignatureAlgorithm

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.1.0)

Phar::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it

### Açıklama

public function Phar::setSignatureAlgorithm(int `$algo`, ?string `$privateKey` = `null`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

set the signature algorithm for a phar and apply it. The signature algorithm must be one of `Phar::MD5`, `Phar::SHA1`, `Phar::SHA256`, `Phar::SHA512`, or `Phar::OPENSSL`.

Note that all executable phar archives have a signature created automatically, `SHA1` by default. data tar- or zip-based archives (archives created with the PharData class) must have their signature created and set explicitly via Phar::setSignatureAlgorithm().

### Bağımsız Değişkenler

`algo`

  One of `Phar::MD5`, `Phar::SHA1`, `Phar::SHA256`, `Phar::SHA512`, or `Phar::OPENSSL`

`privateKey`

  The contents of an OpenSSL private key, as extracted from a certificate or OpenSSL key file:

      <?php
      $private = openssl_get_privatekey(file_get_contents('private.pem'));
      $pkey = '';
      openssl_pkey_export($private, $pkey);
      $p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
      ?>

  See phar introduction for instructions on naming and placement of the public key file.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws UnexpectedValueException for many errors, and a PharException if any problems occur flushing changes to disk.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `privateKey` is now nullable.

### Ayrıca Bakınız

- Phar::getSupportedSignatures() - Return array of supported signature types
- Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

# Phar::setStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive

### Açıklama

public function Phar::setStub(resource|string `$stub`, int `$length` = -1): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This method is used to add a PHP bootstrap loader stub to a new Phar archive, or to replace the loader stub in an existing Phar archive.

The loader stub for a Phar archive is used whenever an archive is included directly as in this example:

    <?php
    include 'myphar.phar';
    ?>

or by simple execution:

    php myphar.phar

The loader is not accessed when including a file through the `phar` stream wrapper like so:

    <?php
    include 'phar://myphar.phar/somefile.php';
    ?>

### Bağımsız Değişkenler

`stub`

  A string or an open stream handle to use as the executable stub for this phar archive.

`length`
  Length of `stub` in bytes.
  Uyarı

  Passing the `length` argument with a resource in the first argument is DEPRECATED as of PHP 8.3.0. Use `$phar->setStub(stream_get_contents($resource))` instead.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

UnexpectedValueException is thrown if phar.readonly is enabled in php.ini. PharException is thrown if any problems are encountered flushing changes to disk.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The return type is `true` now; previously, it was bool.
8.3.0 | Calling Phar::setStub() with a resource and a `length` is now deprecated. Such calls should be replaced by: `$phar->setStub(stream_get_contents($resource));`

### Örnekler

Örnek 1 A Phar::setStub() example

    <?php

    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['a.php'] = '<?php var_dump("Hello");';
        $p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
        include 'phar://brandnewphar.phar/a.php';
        var_dump($p->getStub());

        $p['b.php'] = '<?php var_dump("World");';
        $p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
        include 'phar://brandnewphar.phar/b.php';
        var_dump($p->getStub());
    } catch (Exception $e) {
        echo 'Write operations failed on brandnewphar.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(5) "Hello"
    string(82) "<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"
    string(5) "World"
    string(83) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"

### Ayrıca Bakınız

- Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive
- Phar::createDefaultStub() - Create a phar-file format specific stub

# Phar::startBuffering

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk

### Açıklama

public function Phar::startBuffering(): void

Although technically unnecessary, the Phar::startBuffering() method can provide a significant performance boost when creating or modifying a Phar archive with a large number of files. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes. In this way, the archive will be up-to-date with the activity performed on it.

However, this can be unnecessary when simply creating a new Phar archive, when it would make more sense to write the entire archive out at once. Similarly, it is often necessary to make a series of changes and to ensure that they all are possible before making any changes on disk, similar to the relational database concept of transactions. the Phar::startBuffering()/Phar::stopBuffering() pair of methods is provided for this purpose.

Phar write buffering is per-archive, buffering active for the `foo.phar` Phar archive does not affect changes to the `bar.phar` Phar archive.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 A Phar::startBuffering() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    } catch (Exception $e) {
        echo 'Could not create phar:', $e;
    }
    echo 'The new phar has ' . $p->count() . " entries\n";
    $p->startBuffering();
    $p['file.txt'] = 'hi';
    $p['file2.txt'] = 'there';
    $p['file2.txt']->setCompressedGZ();
    $p['file3.txt'] = 'babyface';
    $p['file3.txt']->setMetadata(42);
    $p->setStub("<?php
    function __autoload($class)
    {
        include 'phar://myphar.phar/' . str_replace('_', '/', $class) . '.php';
    }
    Phar::mapPhar('myphar.phar');
    include 'phar://myphar.phar/startup.php';
    __HALT_COMPILER();");
    $p->stopBuffering();
    ?>

### Ayrıca Bakınız

- Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk
- Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

# Phar::stopBuffering

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk

### Açıklama

public function Phar::stopBuffering(): void

Phar::stopBuffering() is used in conjunction with the Phar::startBuffering() method. Phar::startBuffering() can provide a significant performance boost when creating or modifying a Phar archive with a large number of files. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes. In this way, the archive will be up-to-date with the activity performed on it.

However, this can be unnecessary when simply creating a new Phar archive, when it would make more sense to write the entire archive out at once. Similarly, it is often necessary to make a series of changes and to ensure that they all are possible before making any changes on disk, similar to the relational database concept of transactions. The Phar::startBuffering()/Phar::stopBuffering() pair of methods is provided for this purpose.

Phar write buffering is per-archive, buffering active for the `foo.phar` Phar archive does not affect changes to the `bar.phar` Phar archive.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

PharException is thrown if any problems are encountered flushing changes to disk.

### Örnekler

Örnek 1 A Phar::stopBuffering() example

    <?php
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file1.txt'] = 'hi';
    $p->startBuffering();
    var_dump($p->getStub());
    $p->setStub("<?php
    function __autoload(\$class)
    {
        include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';
    }
    Phar::mapPhar('brandnewphar.phar');
    include 'phar://brandnewphar.phar/startup.php';
    __HALT_COMPILER();");
    $p->stopBuffering();
    var_dump($p->getStub());
    ?>

Yukarıdaki örneğin çıktısı:

    string(24) "<?php __HALT_COMPILER();"
    string(195) "<?php
    function __autoload($class)
    {
        include 'phar://' . str_replace('_', '/', $class);
    }
    Phar::mapPhar('brandnewphar.phar');
    include 'phar://brandnewphar.phar/startup.php';
    __HALT_COMPILER();"

### Ayrıca Bakınız

- Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
- Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

# Phar::unlinkArchive

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::unlinkArchive — Completely remove a phar archive from disk and from memory

### Açıklama

final public static function Phar::unlinkArchive(string `$filename`): true

Removes a phar archive from disk and memory.

### Bağımsız Değişkenler

`filename`

  The path on disk to the phar archive.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

PharException is thrown if there are any open file pointers to the phar archive, or any existing Phar, PharData, or PharFileInfo objects referring to the phar archive.

### Örnekler

Örnek 1 A Phar::unlinkArchive() example

    <?php
    // simple usage
    Phar::unlinkArchive('/path/to/my.phar');

    // more common example:
    $p = new Phar('my.phar');
    $fp = fopen('phar://my.phar/file.txt', 'r');
    // this creates 'my.phar.gz'
    $gp = $p->compress(Phar::GZ);
    // remove all references to the archive
    unset($p);
    fclose($fp);
    // now remove all traces of the archive
    Phar::unlinkArchive('my.phar');
    ?>

### Ayrıca Bakınız

- Phar::delete() - Delete a file within a phar archive
- Phar::offsetUnset() - Remove a file from a phar

# Phar::webPhar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

Phar::webPhar — Routes a request from a web browser to an internal file within the phar archive

### Açıklama

final public static function Phar::webPhar(
?string `$alias` = `null`,
?string `$index` = `null`,
?string `$fileNotFoundScript` = `null`,
array `$mimeTypes` = [],
?callable `$rewrite` = `null`
): void

Phar::webPhar() serves as Phar::mapPhar() for web-based phars. This method parses $_SERVER['REQUEST_URI'] and routes a request from a web browser to an internal file within the phar archive. It simulates a web server, routing requests to the correct file, echoing the correct headers and parsing PHP files as needed. Combined with Phar::mungServer() and Phar::interceptFileFuncs(), any web application can be used unmodified from a phar archive.

Phar::webPhar() should only be called from the stub of a phar archive (see here for more information on what a stub is).

### Bağımsız Değişkenler

`alias`

  The alias that can be used in `phar://` URLs to refer to this archive, rather than its full path.

`index`

  The location within the phar of the directory index.

`fileNotFoundScript`

  The location of the script to run when a file is not found. This script should output the proper HTTP 404 headers.

`mimeTypes`

  An array mapping additional file extensions to MIME type. If the default mapping is sufficient, pass an empty array. By default, these extensions are mapped to these MIME types:

      <?php
      $mimes = array(
          'phps' => Phar::PHPS, // pass to highlight_file()
          'c' => 'text/plain',
          'cc' => 'text/plain',
          'cpp' => 'text/plain',
          'c++' => 'text/plain',
          'dtd' => 'text/plain',
          'h' => 'text/plain',
          'log' => 'text/plain',
          'rng' => 'text/plain',
          'txt' => 'text/plain',
          'xsd' => 'text/plain',
          'php' => Phar::PHP, // parse as PHP
          'inc' => Phar::PHP, // parse as PHP
          'avi' => 'video/avi',
          'bmp' => 'image/bmp',
          'css' => 'text/css',
          'gif' => 'image/gif',
          'htm' => 'text/html',
          'html' => 'text/html',
          'htmls' => 'text/html',
          'ico' => 'image/x-ico',
          'jpe' => 'image/jpeg',
          'jpg' => 'image/jpeg',
          'jpeg' => 'image/jpeg',
          'js' => 'application/x-javascript',
          'midi' => 'audio/midi',
          'mid' => 'audio/midi',
          'mod' => 'audio/mod',
          'mov' => 'movie/quicktime',
          'mp3' => 'audio/mp3',
          'mpg' => 'video/mpeg',
          'mpeg' => 'video/mpeg',
          'pdf' => 'application/pdf',
          'png' => 'image/png',
          'swf' => 'application/shockwave-flash',
          'tif' => 'image/tiff',
          'tiff' => 'image/tiff',
          'wav' => 'audio/wav',
          'xbm' => 'image/xbm',
          'xml' => 'text/xml',
      );
      ?>

`rewrite`

  The rewrites function is passed a string as its only parameter and must return a string or `false`.

  If you are using fast-cgi or cgi then the parameter passed to the function is the value of the $_SERVER['PATH_INFO'] variable. Otherwise, the parameter passed to the function is the value of the $_SERVER['REQUEST_URI'] variable.

  If a string is returned it is used as the internal file path. If `false` is returned then webPhar() will send a HTTP 403 Denied Code.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws PharException when unable to open the internal file to output, or if called from a non-stub. If an invalid array value is passed into `mimeTypes` or an invalid callback is passed into `rewrite`, then UnexpectedValueException is thrown.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `fileNotFoundScript` and `rewrite` are nullable now.

### Örnekler

Örnek 1 A Phar::webPhar() example

With the example below, the created phar will display `Hello World` if one browses to `/myphar.phar/index.php` or to `/myphar.phar`, and will display the source of `index.phps` if one browses to `/myphar.phar/index.phps`.

    <?php
    // creating the phar archive:
    try {
        $phar = new Phar('myphar.phar');
        $phar['index.php'] = '<?php echo "Hello World"; ?>';
        $phar['index.phps'] = '<?php echo "Hello World"; ?>';
        $phar->setStub('<?php
    Phar::webPhar();
    __HALT_COMPILER(); ?>');
    } catch (Exception $e) {
        // handle error here
    }
    ?>

### Ayrıca Bakınız

- Phar::mungServer() - Defines a list of up to 4 $_SERVER variables that should be modified for execution
- Phar::interceptFileFuncs() - Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

## İçindekiler

- Phar::addEmptyDir — Add an empty directory to the phar archive
- Phar::addFile — Add a file from the filesystem to the phar archive
- Phar::addFromString — Add a file from a string to the phar archive
- Phar::apiVersion — Returns the api version
- Phar::buildFromDirectory — Construct a phar archive from the files within a directory
- Phar::buildFromIterator — Construct a phar archive from an iterator
- Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2
- Phar::canWrite — Returns whether phar extension supports writing and creating phars
- Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::compressFiles — Compresses all files in the current Phar archive
- Phar::__construct — Construct a Phar archive object
- Phar::convertToData — Convert a phar archive to a non-executable tar or zip file
- Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format
- Phar::copy — Copy a file internal to the phar archive to another new file within the phar
- Phar::count — Returns the number of entries (files) in the Phar archive
- Phar::createDefaultStub — Create a phar-file format specific stub
- Phar::decompress — Decompresses the entire Phar archive
- Phar::decompressFiles — Decompresses all files in the current Phar archive
- Phar::delMetadata — Deletes the global metadata of the phar
- Phar::delete — Delete a file within a phar archive
- Phar::__destruct — Destructs a Phar archive object
- Phar::extractTo — Extract the contents of a phar archive to a directory
- Phar::getAlias — Get the alias for Phar
- Phar::getMetadata — Returns phar archive meta-data
- Phar::getModified — Return whether phar was modified
- Phar::getPath — Get the real path to the Phar archive on disk
- Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
- Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive
- Phar::getSupportedCompression — Return array of supported compression algorithms
- Phar::getSupportedSignatures — Return array of supported signature types
- Phar::getVersion — Return version info of Phar archive
- Phar::hasMetadata — Returns whether phar has global meta-data
- Phar::interceptFileFuncs — Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
- Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
- Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
- Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename
- Phar::isWritable — Returns true if the phar archive can be modified
- Phar::loadPhar — Loads any phar archive with an alias
- Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest
- Phar::mount — Mount an external path or file to a virtual location within the phar archive
- Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution
- Phar::offsetExists — Determines whether a file exists in the phar
- Phar::offsetGet — Gets a PharFileInfo object for a specific file
- Phar::offsetSet — Set the contents of an internal file to those of an external file
- Phar::offsetUnset — Remove a file from a phar
- Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive
- Phar::setAlias — Set the alias for the Phar archive
- Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
- Phar::setMetadata — Sets phar archive meta-data
- Phar::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it
- Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive
- Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk
- Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk
- Phar::unlinkArchive — Completely remove a phar archive from disk and from memory
- Phar::webPhar — Routes a request from a web browser to an internal file within the phar archive

# The PharData class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

## Giriş

The PharData class provides a high-level interface to accessing and creating non-executable tar and zip archives. Because these archives do not contain a stub and cannot be executed by the phar extension, it is possible to create and manipulate regular zip and tar files using the PharData class even if `phar.readonly` php.ini setting is `1`.

## Sınıf Sözdizimi

class PharData extends RecursiveDirectoryIterator implements Countable, ArrayAccess {
/* Miras alınan sabitler */
public const int FilesystemIterator::CURRENT_MODE_MASK;
public const int FilesystemIterator::CURRENT_AS_PATHNAME;
public const int FilesystemIterator::CURRENT_AS_FILEINFO;
public const int FilesystemIterator::CURRENT_AS_SELF;
public const int FilesystemIterator::KEY_MODE_MASK;
public const int FilesystemIterator::KEY_AS_PATHNAME;
public const int FilesystemIterator::FOLLOW_SYMLINKS;
public const int FilesystemIterator::KEY_AS_FILENAME;
public const int FilesystemIterator::NEW_CURRENT_AND_KEY;
public const int FilesystemIterator::OTHER_MODE_MASK;
public const int FilesystemIterator::SKIP_DOTS;
public const int FilesystemIterator::UNIX_PATHS;
/* Yöntemler */
public function __construct(
string `$filename`,
int `$flags` = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS,
?string `$alias` = `null`,
int `$format` = 0
)
public function addEmptyDir(string `$directory`): void
public function addFile(string `$filename`, ?string `$localName` = `null`): void
public function addFromString(string `$localName`, string `$contents`): void
public function buildFromDirectory(string `$directory`, string `$pattern` = ""): array
public function buildFromIterator(Traversable `$iterator`, ?string `$baseDirectory` = `null`): array
public function compress(int `$compression`, ?string `$extension` = `null`): ?PharData
public function compressFiles(int `$compression`): void
public function convertToData(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?PharData
public function convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar
public function copy(string `$from`, string `$to`): true
public function decompress(?string `$extension` = `null`): ?PharData
public function decompressFiles(): true
public function delMetadata(): true
public function delete(string `$localName`): true
public function extractTo(string `$directory`, array|string|null `$files` = `null`, bool `$overwrite` = `false`): bool
public function isWritable(): bool
public function offsetSet(string `$localName`, resource|string `$value`): void
public function offsetUnset(string `$localName`): void
public function setAlias(string `$alias`): bool
public function setDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): bool
public function setMetadata(mixed `$metadata`): void
public function setSignatureAlgorithm(int `$algo`, ?string `$privateKey` = `null`): void
public function setStub(resource|string `$stub`, int `$length` = -1): true
public function __destruct()
/* Miras alınan yöntemler */
public function RecursiveDirectoryIterator::getChildren(): RecursiveDirectoryIterator
public function RecursiveDirectoryIterator::getSubPath(): string
public function RecursiveDirectoryIterator::getSubPathname(): string
public function RecursiveDirectoryIterator::hasChildren(bool `$allowLinks` = `false`): bool
public function RecursiveDirectoryIterator::key(): string
public function RecursiveDirectoryIterator::next(): void
public function RecursiveDirectoryIterator::rewind(): void
public function FilesystemIterator::current(): string|SplFileInfo|FilesystemIterator
public function FilesystemIterator::getFlags(): int
public function FilesystemIterator::key(): string
public function FilesystemIterator::next(): void
public function FilesystemIterator::rewind(): void
public function FilesystemIterator::setFlags(int `$flags`): void
public function DirectoryIterator::current(): mixed
public function DirectoryIterator::getBasename(string `$suffix` = ""): string
public function DirectoryIterator::getExtension(): string
public function DirectoryIterator::getFilename(): string
public function DirectoryIterator::isDot(): bool
public function DirectoryIterator::key(): mixed
public function DirectoryIterator::next(): void
public function DirectoryIterator::rewind(): void
public function DirectoryIterator::seek(int `$offset`): void
public function DirectoryIterator::__toString(): string
public function DirectoryIterator::valid(): bool
public function SplFileInfo::getATime(): int|false
public function SplFileInfo::getBasename(string `$suffix` = ""): string
public function SplFileInfo::getCTime(): int|false
public function SplFileInfo::getExtension(): string
public function SplFileInfo::getFileInfo(?string `$class` = `null`): SplFileInfo
public function SplFileInfo::getFilename(): string
public function SplFileInfo::getGroup(): int|false
public function SplFileInfo::getInode(): int|false
public function SplFileInfo::getLinkTarget(): string|false
public function SplFileInfo::getMTime(): int|false
public function SplFileInfo::getOwner(): int|false
public function SplFileInfo::getPath(): string
public function SplFileInfo::getPathInfo(?string `$class` = `null`): ?SplFileInfo
public function SplFileInfo::getPathname(): string
public function SplFileInfo::getPerms(): int|false
public function SplFileInfo::getRealPath(): string|false
public function SplFileInfo::getSize(): int|false
public function SplFileInfo::getType(): string|false
public function SplFileInfo::isDir(): bool
public function SplFileInfo::isExecutable(): bool
public function SplFileInfo::isFile(): bool
public function SplFileInfo::isLink(): bool
public function SplFileInfo::isReadable(): bool
public function SplFileInfo::isWritable(): bool
public function SplFileInfo::openFile(string `$mode` = "r", bool `$useIncludePath` = `false`, ?resource `$context` = `null`): SplFileObject
public function SplFileInfo::setFileClass(string `$class` = `SplFileObject::class`): void
public function SplFileInfo::setInfoClass(string `$class` = `SplFileInfo::class`): void
public function SplFileInfo::__toString(): string
}

# PharData::addEmptyDir

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::addEmptyDir — Add an empty directory to the tar/zip archive

### Açıklama

public function PharData::addEmptyDir(string `$directory`): void

With this method, an empty directory is created with path `dirname`. This method is similar to ZipArchive::addEmptyDir().

### Bağımsız Değişkenler

`directory`

  The name of the empty directory to create in the phar archive

### Dönen Değerler

no return value, exception is thrown on failure.

### Örnekler

Örnek 1 A PharData::addEmptyDir() example

    <?php
    try {
        $a = new PharData('/path/to/my.tar');

        $a->addEmptyDir('/full/path/to/file');
        // demonstrates how this file is stored
        $b = $a['full/path/to/file']->isDir();
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Ayrıca Bakınız

- Phar::addEmptyDir() - Add an empty directory to the phar archive
- PharData::addFile() - Add a file from the filesystem to the tar/zip archive
- PharData::addFromString() - Add a file from a string to the tar/zip archive

# PharData::addFile

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::addFile — Add a file from the filesystem to the tar/zip archive

### Açıklama

public function PharData::addFile(string `$filename`, ?string `$localName` = `null`): void

With this method, any file or URL can be added to the tar/zip archive. If the optional second parameter `localname` is specified, the file will be stored in the archive with that name, otherwise the `file` parameter is used as the path to store within the archive. URLs must have a localname or an exception is thrown. This method is similar to ZipArchive::addFile().

### Bağımsız Değişkenler

`filename`

  Full or relative path to a file on disk to be added to the phar archive.

`localName`

  Path that the file will be stored in the archive.

### Dönen Değerler

no return value, exception is thrown on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `localName` is now nullable.

### Örnekler

Örnek 1 A PharData::addFile() example

    <?php
    try {
        $a = new PharData('/path/to/my.tar');

        $a->addFile('/full/path/to/file');
        // demonstrates how this file is stored
        $b = $a['full/path/to/file']->getContent();

        $a->addFile('/full/path/to/file', 'my/file.txt');
        $c = $a['my/file.txt']->getContent();

        // demonstrate URL usage
        $a->addFile('http://www.example.com', 'example.html');
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Notlar

> Bilginize: PharData::addFile(), PharData::addFromString() ve PharData::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine PharData::buildFromDirectory() veya PharData::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- PharData::offsetSet() - Set the contents of a file within the tar/zip to those of an external file or string
- Phar::addFile() - Add a file from the filesystem to the phar archive
- PharData::addFromString() - Add a file from a string to the tar/zip archive
- PharData::addEmptyDir() - Add an empty directory to the tar/zip archive

# PharData::addFromString

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::addFromString — Add a file from a string to the tar/zip archive

### Açıklama

public function PharData::addFromString(string `$localName`, string `$contents`): void

With this method, any string can be added to the tar/zip archive. The file will be stored in the archive with `localname` as its path. This method is similar to ZipArchive::addFromString().

### Bağımsız Değişkenler

`localName`

  Path that the file will be stored in the archive.

`contents`

  The file contents to store

### Dönen Değerler

no return value, exception is thrown on failure.

### Örnekler

Örnek 1 A PharData::addFromString() example

    <?php
    try {
        $a = new PharData('/path/to/my.tar');

        $a->addFromString('path/to/file.txt', 'my simple file');
        $b = $a['path/to/file.txt']->getContent();

        // to add contents from a stream handle for large files, use offsetSet()
        $c = fopen('/path/to/hugefile.bin');
        $a['largefile.bin'] = $c;
        fclose($c);
    } catch (Exception $e) {
        // handle errors here
    }
    ?>

### Notlar

> Bilginize: PharData::addFile(), PharData::addFromString() ve PharData::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine PharData::buildFromDirectory() veya PharData::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- PharData::offsetSet() - Set the contents of a file within the tar/zip to those of an external file or string
- Phar::addFromString() - Add a file from a string to the phar archive
- PharData::addFile() - Add a file from the filesystem to the tar/zip archive
- PharData::addEmptyDir() - Add an empty directory to the tar/zip archive

# PharData::buildFromDirectory

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory

### Açıklama

public function PharData::buildFromDirectory(string `$directory`, string `$pattern` = ""): array

Populate a tar/zip archive from directory contents. The optional second parameter is a regular expression (pcre) that is used to exclude files. Any filename that matches the regular expression will be included, all others will be excluded. For more fine-grained control, use PharData::buildFromIterator().

### Bağımsız Değişkenler

`directory`

  The full or relative path to the directory that contains all files to add to the archive.

`pattern`

  An optional pcre regular expression that is used to filter the list of files. Only file paths matching the regular expression will be included in the archive.

### Dönen Değerler

Phar::buildFromDirectory() returns an associative array mapping internal path of file to the full path of the file on the filesystem, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to instantiate the internal directory iterators, or a PharException if there were errors saving the phar archive.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | PharData::buildFromDirectory() no longer returns `false`.

### Örnekler

Örnek 1 A PharData::buildFromDirectory() example

    <?php
    $phar = new PharData('project.tar');
    // add all files in the project
    $phar->buildFromDirectory(dirname(__FILE__) . '/project');

    $phar2 = new PharData('project2.zip');
    // add all files in the project, only include php files
    $phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
    ?>

### Ayrıca Bakınız

- Phar::buildFromDirectory() - Construct a phar archive from the files within a directory
- PharData::buildFromIterator() - Construct a tar or zip archive from an iterator

# PharData::buildFromIterator

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::buildFromIterator — Construct a tar or zip archive from an iterator

### Açıklama

public function PharData::buildFromIterator(Traversable `$iterator`, ?string `$baseDirectory` = `null`): array

Populate a tar or zip archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the tar/zip to the name of a file on disk, and iterators like DirectoryIterator that return SplFileInfo objects. For iterators that return SplFileInfo objects, the second parameter is required.

### Bağımsız Değişkenler

`iterator`

  Any iterator that either associatively maps tar/zip file to location or returns SplFileInfo objects

`baseDirectory`

  For iterators that return SplFileInfo objects, the portion of each file's full path to remove when adding to the tar/zip archive

### Dönen Değerler

PharData::buildFromIterator() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

### Hatalar/İstisnalar

This method returns UnexpectedValueException when the iterator returns incorrect values, such as an integer key instead of a string, a BadMethodCallException when an SplFileInfo-based iterator is passed without a `baseDirectory` parameter, or a PharException if there were errors saving the phar archive.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | PharData::buildFromIterator() no longer returns `false`.
8.0.0 | `baseDirectory` is now nullable.

### Örnekler

Örnek 1 A PharData::buildFromIterator() with SplFileInfo

For most tar/zip archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a tar/zip archive containing the files in this sample directory layout:

    /path/to/project/
                     config/
                            dist.xml
                            debug.xml
                     lib/
                         file1.php
                         file2.php
                     src/
                         processthing.php
                     www/
                         index.php
                     cli/
                         index.php

This code could be used to add these files to the "project.tar" tar archive:

    <?php
    $phar = new PharData('project.tar');
    $phar->buildFromIterator(
        new RecursiveIteratorIterator(
         new RecursiveDirectoryIterator('/path/to/project')),
        '/path/to/project');
    ?>

The file `project.tar` can then be used immediately. PharData::buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the tar/zip archive.

As an interesting note, PharData::buildFromIterator() can also be used to copy the contents of an existing phar, tar or zip archive, as the PharData object descends from DirectoryIterator:

    <?php
    $phar = new PharData('project.tar');
    $phar->buildFromIterator(
        new RecursiveIteratorIterator(
         new Phar('/path/to/anotherphar.phar')),
        'phar:///path/to/anotherphar.phar/path/to/project');
    $phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
    ?>

Örnek 2 A PharData::buildFromIterator() with other iterators

The second form of the iterator can be used with any iterator that returns a key => value mapping, such as an ArrayIterator:

    <?php
    $phar = new PharData('project.tar');
    $phar->buildFromIterator(
        new ArrayIterator(
         array(
            'internal/file.php' => dirname(__FILE__) . '/somefile.php',
            'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
         )));
    ?>

### Ayrıca Bakınız

- Phar::buildFromIterator() - Construct a phar archive from an iterator

# PharData::compress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression

### Açıklama

public function PharData::compress(int `$compression`, ?string `$extension` = `null`): ?PharData

For tar archives, this method compresses the entire archive using gzip compression or bzip2 compression. The resulting file can be processed with the gunzip command/bunzip command, or accessed directly and transparently with the Phar extension.

For zip archives, this method fails with an exception. The zlib extension must be enabled to compress with gzip compression, the bzip2 extension must be enabled in order to compress with bzip2 compression.

In addition, this method automatically renames the archive, appending `.gz`, `.bz2` or removing the extension if passed `Phar::NONE` to remove compression. Alternatively, a file extension may be specified with the second parameter.

### Bağımsız Değişkenler

`compression`

  Compression must be one of `Phar::GZ`, `Phar::BZ2` to add compression, or `Phar::NONE` to remove compression.

`extension`

  By default, the extension is `.tar.gz` or `.tar.bz2` for compressing a tar, and `.tar` for decompressing.

### Dönen Değerler

A PharData object is returned on success, or `null` on failure.

### Hatalar/İstisnalar

Throws BadMethodCallException if the zlib extension is not available, or the bzip2 extension is not enabled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `extension` is now nullable.

### Örnekler

Örnek 1 A PharData::compress() example

    <?php
    $p = new PharData('/path/to/my.tar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p1 = $p->compress(Phar::GZ); // copies to /path/to/my.tar.gz
    $p2 = $p->compress(Phar::BZ2); // copies to /path/to/my.tar.bz2
    $p3 = $p2->compress(Phar::NONE); // exception: /path/to/my.tar already exists
    ?>

### Ayrıca Bakınız

- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression

# PharData::compressFiles

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::compressFiles — Compresses all files in the current tar/zip archive

### Açıklama

public function PharData::compressFiles(int `$compression`): void

For tar-based archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use PharData::compress() to compress an entire tar-based archive.

For Zip-based archives, this method compresses all files in the archive using the specified compression. The zlib or bzip2 extensions must be enabled to take advantage of this feature. In addition, if any files are already compressed using bzip2/zlib compression, the respective extension must be enabled in order to decompress the files prior to re-compressing.

### Bağımsız Değişkenler

`compression`

  Compression must be one of `Phar::GZ`, `Phar::BZ2` to add compression, or `Phar::NONE` to remove compression.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

### Örnekler

Örnek 1 A PharData::compressFiles() example

    <?php
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    $p->compressFiles(Phar::GZ);
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(10) "myfile.txt"
    bool(false)
    bool(false)
    bool(false)
    string(11) "myfile2.txt"
    bool(false)
    bool(false)
    bool(false)
    string(10) "myfile.txt"
    int(4096)
    bool(false)
    bool(true)
    string(11) "myfile2.txt"
    int(4096)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- PharData::decompressFiles() - Decompresses all files in the current zip archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- PharData::decompress() - Decompresses the entire Phar archive

# PharData::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::__construct — Construct a non-executable tar or zip archive object

### Açıklama

public function PharData::__construct(
string `$filename`,
int `$flags` = FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS,
?string `$alias` = `null`,
int `$format` = 0
)

### Bağımsız Değişkenler

`filename`

  Path to an existing tar/zip archive or to-be-created archive

`flags`

  Flags to pass to Phar parent class RecursiveDirectoryIterator.

`alias`

  Alias with which this Phar archive should be referred to in calls to stream functionality.

`format`

  One of the file format constants available within the Phar class.

### Hatalar/İstisnalar

Throws BadMethodCallException if called twice; UnexpectedValueException if the Phar archive can't be opened.

### Örnekler

Örnek 1 A PharData::__construct() example

    <?php
    try {
        $p = new PharData('/path/to/my.tar', Phar::CURRENT_AS_FILEINFO | Phar::KEY_AS_FILENAME);
    } catch (UnexpectedValueException $e) {
        die('Could not open my.tar');
    } catch (BadMethodCallException $e) {
        echo 'technically, this cannot happen';
    }
    echo file_get_contents('phar:///path/to/my.tar/example.txt');
    ?>

# PharData::convertToData

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::convertToData — Convert a phar archive to a non-executable tar or zip file

### Açıklama

public function PharData::convertToData(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?PharData

This method is used to convert a non-executable tar or zip archive to another non-executable format.

If no changes are specified, this method throws a BadMethodCallException. This method should be used to convert a tar archive to zip format or vice-versa. Although it is possible to simply change the compression of a tar archive using this method, it is better to use the PharData::compress() method for logical consistency.

If successful, the method creates a new archive on disk and returns a PharData object. The old archive is not removed from disk, and should be done manually after the process has finished.

### Bağımsız Değişkenler

`format`

  This should be one of `Phar::TAR` or `Phar::ZIP`. If set to `null`, the existing file format will be preserved.

`compression`

  This should be one of `Phar::NONE` for no whole-archive compression, `Phar::GZ` for zlib-based compression, and `Phar::BZ2` for bzip-based compression.

`extension`

  This parameter is used to override the default file extension for a converted archive. Note that `.phar` cannot be used anywhere in the filename for a non-executable tar or zip archive.

  If converting to a tar-based phar archive, the default extensions are `.tar`, `.tar.gz`, and `.tar.bz2` depending on specified compression. For zip-based archives, the default extension is `.zip`.

### Dönen Değerler

The method returns a PharData object on success, or `null` on failure.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), and a PharException if any problems are encountered during the phar creation process.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `format`, `compression`, and `extension` are now nullable.

### Örnekler

Örnek 1 A PharData::convertToData() example

Using PharData::convertToData():

    <?php
    try {
        $tarphar = new PharData('myphar.tar');
        // note that myphar.tar is *not* unlinked
        // convert it to the non-executable tar file format
        // creates myphar.zip
        $zip = $tarphar->convertToData(Phar::ZIP);
        // create myphar.tbz
        $tgz = $zip->convertToData(Phar::TAR, Phar::BZ2, '.tbz');
        // creates myphar.phar.tgz
        $phar = $tarphar->convertToData(Phar::PHAR); // throws exception
    } catch (Exception $e) {
        // handle the error here
    }
    ?>

### Ayrıca Bakınız

- Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive

# PharData::convertToExecutable

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive

### Açıklama

public function PharData::convertToExecutable(?int `$format` = `null`, ?int `$compression` = `null`, ?string `$extension` = `null`): ?Phar

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

This method is used to convert a non-executable tar or zip archive to an executable phar archive. Any of the three executable file formats (phar, tar or zip) can be used, and whole-archive compression can also be performed.

If no changes are specified, this method throws a BadMethodCallException.

If successful, the method creates a new archive on disk and returns a Phar object. The old archive is not removed from disk, and should be done manually after the process has finished.

### Bağımsız Değişkenler

`format`

  This should be one of `Phar::PHAR`, `Phar::TAR`, or `Phar::ZIP`. If set to `null`, the existing file format will be preserved.

`compression`

  This should be one of `Phar::NONE` for no whole-archive compression, `Phar::GZ` for zlib-based compression, and `Phar::BZ2` for bzip-based compression.

`extension`

  This parameter is used to override the default file extension for a converted archive. Note that all zip- and tar-based phar archives must contain `.phar` in their file extension in order to be processed as a phar archive.

  If converting to a phar-based archive, the default extensions are `.phar`, `.phar.gz`, or `.phar.bz2` depending on the specified compression. For tar-based phar archives, the default extensions are `.phar.tar`, `.phar.tar.gz`, and `.phar.tar.bz2`. For zip-based phar archives, the default extension is `.phar.zip`.

### Dönen Değerler

The method returns a Phar object on success, or `null` on failure.

### Hatalar/İstisnalar

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), an UnexpectedValueException if write support is disabled, and a PharException if any problems are encountered during the phar creation process.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `format`, `compression`, and `localName` are now nullable.

### Örnekler

Örnek 1 A PharData::convertToExecutable() example

Using PharData::convertToExecutable():

    <?php
    try {
        $tarphar = new PharData('myphar.tar');
        // convert it to the phar file format
        // note that myphar.tar is *not* unlinked
        $phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
        $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
        // creates myphar.phar.tgz
        $compressed = $tarphar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
    } catch (Exception $e) {
        // handle the error here
    }
    ?>

### Ayrıca Bakınız

- Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

# PharData::copy

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::copy — Copy a file internal to the tar/zip archive to another new file within the same archive

### Açıklama

public function PharData::copy(string `$from`, string `$to`): true

Copy a file internal to the tar/zip archive to another new file within the same archive. This is an object-oriented alternative to using copy() with the phar stream wrapper.

### Bağımsız Değişkenler

`from`

`to`

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws UnexpectedValueException if the source file does not exist, the destination file already exists, write access is disabled, opening either file fails, reading the source file fails, or a PharException if writing the changes to the phar fails.

### Örnekler

Örnek 1 A PharData::copy() example

This example shows using PharData::copy() and the equivalent stream wrapper performance of the same thing. The primary difference between the two approaches is error handling. All PharData methods throw exceptions, whereas the stream wrapper uses trigger_error().

    <?php

    try {
        $phar = new PharData('myphar.tar');

        $phar['a'] = 'hi';
        $phar->copy('a', 'b');

        echo $phar['b']; // Outputs "phar://myphar.tar/b"
    } catch (Exception $e) {
        // Handle error
    }

    // The stream wrapper equivalent of the above code.
    // E_WARNING are triggered on error rather than exceptions
    copy('phar://myphar.tar/a', 'phar//myphar.tar/c');
    echo file_get_contents('phar://myphar.tar/c'); // Outputs "hi"

    ?>

# PharData::decompress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::decompress — Decompresses the entire Phar archive

### Açıklama

public function PharData::decompress(?string `$extension` = `null`): ?PharData

For tar-based archives, this method decompresses the entire archive.

For Zip-based archives, this method fails with an exception. The zlib extension must be enabled to decompress an archive compressed with gzip compression, and the bzip2 extension must be enabled in order to decompress an archive compressed with bzip2 compression.

In addition, this method automatically renames the file extension of the archive, `.tar` by default. Alternatively, a file extension may be specified with the `extension` parameter.

### Bağımsız Değişkenler

`extension`

  For decompressing, the default file extension is `.tar`. Use this parameter to specify another file extension. Be aware that only executable archives can contain `.phar` in their filename.

### Dönen Değerler

A PharData object is returned on success, or `null` on failure.

### Hatalar/İstisnalar

Throws BadMethodCallException if the zlib extension is not available, or the bzip2 extension is not enabled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `extension` is now nullable.

### Örnekler

Örnek 1 A PharData::decompress() example

    <?php
    $p = new PharData('/path/to/my.tar.gz');
    $p->decompress(); // creates /path/to/my.tar
    ?>

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- PharData::compressFiles() - Compresses all files in the current tar/zip archive
- PharData::decompressFiles() - Decompresses all files in the current zip archive

# PharData::decompressFiles

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::decompressFiles — Decompresses all files in the current zip archive

### Açıklama

public function PharData::decompressFiles(): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

For tar-based archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use PharData::compress() to compress an entire tar-based archive.

For Zip-based archives, this method decompresses all files in the archive. The zlib or bzip2 extensions must be enabled to take advantage of this feature if any files are compressed using bzip2/zlib compression.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws BadMethodCallException if the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

### Örnekler

Örnek 1 A PharData::decompressFiles() example

    <?php
    $p = new PharData('/path/to/my.zip');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p->compressFiles(Phar::GZ);
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    $p->decompressFiles();
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressed(Phar::BZ2));
        var_dump($file->isCompressed(Phar::GZ));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(10) "myfile.txt"
    int(4096)
    bool(false)
    bool(true)
    string(11) "myfile2.txt"
    int(4096)
    bool(false)
    bool(true)
    string(10) "myfile.txt"
    bool(false)
    bool(false)
    bool(false)
    string(11) "myfile2.txt"
    bool(false)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- PharData::compressFiles() - Compresses all files in the current tar/zip archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- PharData::decompress() - Decompresses the entire Phar archive

# PharData::delMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::delMetadata — Deletes the global metadata of a zip archive

### Açıklama

public function PharData::delMetadata(): true

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Deletes the global metadata of the zip archive

### Bağımsız Değişkenler

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A PharData::delMetaData() example

    <?php
    try {
        $phar = new PharData('myphar.zip');
        var_dump($phar->getMetadata());
        $phar->setMetadata("hi there");
        var_dump($phar->getMetadata());
        $phar->delMetadata();
        var_dump($phar->getMetadata());
    } catch (Exception $e) {
        // handle errors
    }
    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    string(8) "hi there"
    NULL

### Ayrıca Bakınız

- Phar::delMetadata() - Deletes the global metadata of the phar

# PharData::delete

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::delete — Delete a file within a tar/zip archive

### Açıklama

public function PharData::delete(string `$localName`): true

Delete a file within an archive. This is the functional equivalent of calling unlink() on the stream wrapper equivalent, as shown in the example below.

### Bağımsız Değişkenler

`localName`

  Path within an archive to the file to delete.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A PharData::delete() example

    <?php
    try {
        $phar = new PharData('myphar.zip');
        $phar->delete('unlink/me.php');
        // this is equivalent to:
        unlink('phar://myphar.phar/unlink/me.php');
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Ayrıca Bakınız

- Phar::delete() - Delete a file within a phar archive

# PharData::__destruct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::__destruct — Destructs a non-executable tar or zip archive object

### Açıklama

public function PharData::__destruct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# PharData::extractTo

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::extractTo — Extract the contents of a tar/zip archive to a directory

### Açıklama

public function PharData::extractTo(string `$directory`, array|string|null `$files` = `null`, bool `$overwrite` = `false`): bool

Extract all files within a tar/zip archive to disk. Extracted files and directories preserve permissions as stored in the archive. The optional parameters allow optional control over which files are extracted, and whether existing files on disk can be overwritten. The second parameter `files` can be either the name of a file or directory to extract, or an array of names of files and directories to extract. By default, this method will not overwrite existing files, the third parameter can be set to true to enable overwriting of files. This method is similar to ZipArchive::extractTo().

### Bağımsız Değişkenler

`directory`

  Path to extract the given `files` to

`files`

  The name of a file or directory to extract, or an array of files/directories to extract

`overwrite`

  Set to `true` to enable overwriting existing files

### Dönen Değerler

returns `true` on success, but it is better to check for thrown exception, and assume success if none is thrown.

### Hatalar/İstisnalar

Throws PharException if errors occur while flushing changes to disk.

### Örnekler

Örnek 1 A PharData::extractTo() example

    <?php
    try {
        $phar = new PharData('myphar.tar');
        $phar->extractTo('/full/path'); // extract all files
        $phar->extractTo('/another/path', 'file.txt'); // extract only file.txt
        $phar->extractTo('/this/path',
            array('file1.txt', 'file2.txt')); // extract 2 files only
        $phar->extractTo('/third/path', null, true); // extract all files, and overwrite
    } catch (Exception $e) {
        // handle errors
    }
    ?>

### Notlar

> Bilginize:

> Windows NTFS dosya sistemi dosya isimlerinde `<|>*?":` gibi bazı karakterleri desteklemez. Bundan başka nokta ile biten dosya isimleri de desteklenmez. Bazı dosya çıkarma araçlarının aksine, bu yöntem bu karakterleri bir alt çizgi ile değiştirmek yerine bu tür dosyaları çıkarmada başarısız olur.

### Ayrıca Bakınız

- Phar::extractTo() - Extract the contents of a phar archive to a directory

# PharData::isWritable

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::isWritable — Returns true if the tar/zip archive can be modified

### Açıklama

public function PharData::isWritable(): bool

This method returns `true` if the tar/zip archive on disk is not read-only. Unlike Phar::isWritable(), data-only tar/zip archives can be modified even if `phar.readonly` is set to `1`.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns `true` if the tar/zip archive can be modified

### Ayrıca Bakınız

- Phar::canWrite() - Returns whether phar extension supports writing and creating phars
- Phar::isWritable() - Returns true if the phar archive can be modified

# PharData::offsetSet

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::offsetSet — Set the contents of a file within the tar/zip to those of an external file or string

### Açıklama

public function PharData::offsetSet(string `$localName`, resource|string `$value`): void

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a tar/zip archive using array access brackets. offsetSet is used for modifying an existing file, or adding a new file to a tar/zip archive.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to modify in a tar or zip archive.

`value`

  Content of the file.

### Dönen Değerler

No return values.

### Hatalar/İstisnalar

Throws PharException if there are any problems flushing changes made to the tar/zip archive to disk.

### Örnekler

Örnek 1 A PharData::offsetSet() example

offsetSet should not be accessed directly, but instead used via array access with the `[]` operator.

    <?php
    $p = new PharData('/path/to/my.tar');
    try {
        // calls offsetSet
        $p['file.txt'] = 'Hi there';
    } catch (Exception $e) {
        echo 'Could not modify file.txt:', $e;
    }
    ?>

### Notlar

> Bilginize: PharData::addFile(), PharData::addFromString() ve PharData::offsetSet() her çağrıldıklarında yeni bir phar arşivi kaydeder. Başarım önemliyse, yerlerine PharData::buildFromDirectory() veya PharData::buildFromIterator() kullanılmalıdır.

### Ayrıca Bakınız

- Phar::offsetSet() - Set the contents of an internal file to those of an external file

# PharData::offsetUnset

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::offsetUnset — Remove a file from a tar/zip archive

### Açıklama

public function PharData::offsetUnset(string `$localName`): void

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a tar/zip archive using array access brackets. offsetUnset is used for deleting an existing file, and is called by the unset() language construct.

### Bağımsız Değişkenler

`localName`

  The filename (relative path) to modify in the tar/zip archive.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws PharException if there are any problems flushing changes made to the tar/zip archive to disk.

### Örnekler

Örnek 1 A PharData::offsetUnset() example

    <?php
    $p = new PharData('/path/to/my.zip');
    try {
        // deletes file.txt from my.zip by calling offsetUnset
        unset($p['file.txt']);
    } catch (Exception $e) {
        echo 'Could not delete file.txt: ', $e;
    }
    ?>

### Ayrıca Bakınız

- Phar::offsetUnset() - Remove a file from a phar

# PharData::setAlias

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::setAlias — Dummy function (Phar::setAlias is not valid for PharData)

### Açıklama

public function PharData::setAlias(string `$alias`): bool

Non-executable tar/zip archives cannot have an alias, so this method simply throws an exception.

### Bağımsız Değişkenler

`alias`

  A shorthand string that this archive can be referred to in `phar` stream wrapper access. This parameter is ignored.

### Dönen Değerler

### Hatalar/İstisnalar

Throws PharException on all method calls

### Ayrıca Bakınız

- Phar::setAlias() - Set the alias for the Phar archive

# PharData::setDefaultStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::setDefaultStub — Dummy function (Phar::setDefaultStub is not valid for PharData)

### Açıklama

public function PharData::setDefaultStub(?string `$index` = `null`, ?string `$webIndex` = `null`): bool

Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

### Bağımsız Değişkenler

`index`

  Relative path within the phar archive to run if accessed on the command-line

`webIndex`

  Relative path within the phar archive to run if accessed through a web browser

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Throws PharException on all method calls

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `webIndex` is nullable now.

### Ayrıca Bakınız

- Phar::setDefaultStub() - Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader

# PharData::setMetadata

(No version information available, might only be in Git)

PharData::setMetadata — Sets phar archive meta-data

### Açıklama

public function PharData::setMetadata(mixed `$metadata`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Phar::setMetadata() should be used to store customized data that describes something about the phar archive as a complete entity. PharFileInfo::setMetadata() should be used for file-specific meta-data. Meta-data can slow down the performance of loading a phar archive if the data is large.

Some possible uses for meta-data include specifying which file within the archive should be used to bootstrap the archive, or the location of a file manifest like » PEAR's package.xml file. However, any useful data that describes the phar archive may be stored.

### Bağımsız Değişkenler

`metadata`

  Any PHP variable containing information to store that describes the phar archive

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 A Phar::setMetadata() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.php'] = '<?php echo "hello"';
        $p->setMetadata(array('bootstrap' => 'file.php'));
        var_dump($p->getMetadata());
    } catch (Exception $e) {
        echo 'Could not create and/or modify phar:', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bootstrap"]=>
      string(8) "file.php"
    }

### Ayrıca Bakınız

- Phar::getMetadata() - Returns phar archive meta-data
- Phar::delMetadata() - Deletes the global metadata of the phar
- Phar::hasMetadata() - Returns whether phar has global meta-data

# PharData::setSignatureAlgorithm

(No version information available, might only be in Git)

PharData::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it

### Açıklama

public function PharData::setSignatureAlgorithm(int `$algo`, ?string `$privateKey` = `null`): void

> Bilginize:

> Phar nesneleri ile çalışmak için, bu yöntem `phar.readonly` php.ini yönergesine `0` atanmış olmasını gerektirir. Aksi takdirde bir PharException istisnası oluşur.

Set the signature algorithm for a phar and apply it. The signature algorithm must be one of `Phar::MD5`, `Phar::SHA1`, `Phar::SHA256`, `Phar::SHA512`, or `Phar::OPENSSL`.

### Bağımsız Değişkenler

`algo`

  One of `Phar::MD5`, `Phar::SHA1`, `Phar::SHA256`, `Phar::SHA512`, or `Phar::OPENSSL`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws UnexpectedValueException for many errors, BadMethodCallException if called for a zip- or a tar-based phar archive, and a PharException if any problems occur flushing changes to disk.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `privateKey` is now nullable.

### Ayrıca Bakınız

- Phar::getSupportedSignatures() - Return array of supported signature types
- Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

# PharData::setStub

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::setStub — Dummy function (Phar::setStub is not valid for PharData)

### Açıklama

public function PharData::setStub(resource|string `$stub`, int `$length` = -1): true

Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

### Bağımsız Değişkenler

`stub`
  Formally, a string or an open stream handle to use as the executable stub for this phar archive. This parameter is ignored.
`length`
  `stub` in bytes. This parameter is ignored.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws PharException on all method calls

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The return type is `true` now; previously, it was bool.

### Ayrıca Bakınız

- Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive

## İçindekiler

- PharData::addEmptyDir — Add an empty directory to the tar/zip archive
- PharData::addFile — Add a file from the filesystem to the tar/zip archive
- PharData::addFromString — Add a file from a string to the tar/zip archive
- PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory
- PharData::buildFromIterator — Construct a tar or zip archive from an iterator
- PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression
- PharData::compressFiles — Compresses all files in the current tar/zip archive
- PharData::__construct — Construct a non-executable tar or zip archive object
- PharData::convertToData — Convert a phar archive to a non-executable tar or zip file
- PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive
- PharData::copy — Copy a file internal to the tar/zip archive to another new file within the same archive
- PharData::decompress — Decompresses the entire Phar archive
- PharData::decompressFiles — Decompresses all files in the current zip archive
- PharData::delMetadata — Deletes the global metadata of a zip archive
- PharData::delete — Delete a file within a tar/zip archive
- PharData::__destruct — Destructs a non-executable tar or zip archive object
- PharData::extractTo — Extract the contents of a tar/zip archive to a directory
- PharData::isWritable — Returns true if the tar/zip archive can be modified
- PharData::offsetSet — Set the contents of a file within the tar/zip to those of an external file or string
- PharData::offsetUnset — Remove a file from a tar/zip archive
- PharData::setAlias — Dummy function (Phar::setAlias is not valid for PharData)
- PharData::setDefaultStub — Dummy function (Phar::setDefaultStub is not valid for PharData)
- PharData::setMetadata — Sets phar archive meta-data
- PharData::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it
- PharData::setStub — Dummy function (Phar::setStub is not valid for PharData)

# The PharFileInfo class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

## Giriş

The PharFileInfo class provides a high-level interface to the contents and attributes of a single file within a phar archive.

## Sınıf Sözdizimi

class PharFileInfo extends SplFileInfo {
/* Yöntemler */
public function __construct(string `$filename`)
public function chmod(int `$perms`): void
public function compress(int `$compression`): true
public function decompress(): true
public function delMetadata(): true
public function getCRC32(): int
public function getCompressedSize(): int
public function getContent(): string
public function getMetadata(array `$unserializeOptions` = []): mixed
public function getPharFlags(): int
public function hasMetadata(): bool
public function isCRCChecked(): bool
public function isCompressed(?int `$compression` = `null`): bool
public function setMetadata(mixed `$metadata`): void
public function __destruct()
/* Miras alınan yöntemler */
public function SplFileInfo::getATime(): int|false
public function SplFileInfo::getBasename(string `$suffix` = ""): string
public function SplFileInfo::getCTime(): int|false
public function SplFileInfo::getExtension(): string
public function SplFileInfo::getFileInfo(?string `$class` = `null`): SplFileInfo
public function SplFileInfo::getFilename(): string
public function SplFileInfo::getGroup(): int|false
public function SplFileInfo::getInode(): int|false
public function SplFileInfo::getLinkTarget(): string|false
public function SplFileInfo::getMTime(): int|false
public function SplFileInfo::getOwner(): int|false
public function SplFileInfo::getPath(): string
public function SplFileInfo::getPathInfo(?string `$class` = `null`): ?SplFileInfo
public function SplFileInfo::getPathname(): string
public function SplFileInfo::getPerms(): int|false
public function SplFileInfo::getRealPath(): string|false
public function SplFileInfo::getSize(): int|false
public function SplFileInfo::getType(): string|false
public function SplFileInfo::isDir(): bool
public function SplFileInfo::isExecutable(): bool
public function SplFileInfo::isFile(): bool
public function SplFileInfo::isLink(): bool
public function SplFileInfo::isReadable(): bool
public function SplFileInfo::isWritable(): bool
public function SplFileInfo::openFile(string `$mode` = "r", bool `$useIncludePath` = `false`, ?resource `$context` = `null`): SplFileObject
public function SplFileInfo::setFileClass(string `$class` = `SplFileObject::class`): void
public function SplFileInfo::setInfoClass(string `$class` = `SplFileInfo::class`): void
public function SplFileInfo::__toString(): string
}

# PharFileInfo::chmod

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::chmod — Sets file-specific permission bits

### Açıklama

public function PharFileInfo::chmod(int `$perms`): void

PharFileInfo::chmod() allows setting of the executable file permissions bit, as well as read-only bits. Writeable bits are ignored, and set at runtime based on the phar.readonly INI variable. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

### Bağımsız Değişkenler

`perms`

  permissions (see chmod())

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 A PharFileInfo::chmod() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar('brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.sh'] = '#!/usr/local/lib/php
        <?php echo "hi"; ?>';
        // set executable bit
        $p['file.sh']->chmod(0555);
        var_dump($p['file.sh']->isExecutable());
    } catch (Exception $e) {
        echo 'Could not create/modify phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

# PharFileInfo::compress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression

### Açıklama

public function PharFileInfo::compress(int `$compression`): true

This method compresses the file inside the Phar archive using either bzip2 compression or zlib compression. The bzip2 or zlib extension must be enabled to take advantage of this feature. In addition, if the file is already compressed, the respective extension must be enabled in order to decompress the file. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

### Bağımsız Değişkenler

`compression`

  Compression must be `Phar::GZ` or `Phar::BZ2`.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2/zlib extension is not available.

### Örnekler

Örnek 1 A PharFileInfo::compress() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        var_dump($file->isCompressed(Phar::BZ2));
        $p['myfile.txt']->compress(Phar::BZ2);
        var_dump($file->isCompressed(Phar::BZ2));
    } catch (Exception $e) {
        echo 'Create/modify operations on my.phar failed: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms

# PharFileInfo::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::__construct — Construct a Phar entry object

### Açıklama

public function PharFileInfo::__construct(string `$filename`)

This should not be called directly. Instead, a PharFileInfo object is initialized by calling Phar::offsetGet() through array access.

### Bağımsız Değişkenler

`filename`

  The full url to retrieve a file. If you wish to retrieve the information for the file `my/file.php` from the phar `boo.phar`, the entry should be `phar://boo.phar/my/file.php`.

### Hatalar/İstisnalar

Throws BadMethodCallException if __construct() is called twice. Throws UnexpectedValueException if the phar URL requested is malformed, the requested phar cannot be opened, or the file can't be found within the phar.

### Örnekler

Örnek 1 A PharFileInfo::__construct() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['testfile.txt'] = "hi\nthere\ndude";
        $file = $p['testfile.txt'];
        foreach ($file as $line => $text) {
            echo "line number $line: $text";
        }
        // this also works
        $file = new PharFileInfo('phar:///path/to/my.phar/testfile.txt');
        foreach ($file as $line => $text) {
            echo "line number $line: $text";
        }
    } catch (Exception $e) {
        echo 'Phar operations failed: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    line number 1: hi
    line number 2: there
    line number 3: dude
    line number 1: hi
    line number 2: there
    line number 3: dude

# PharFileInfo::decompress

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharFileInfo::decompress — Decompresses the current Phar entry within the phar

### Açıklama

public function PharFileInfo::decompress(): true

This method decompresses the file inside the Phar archive. Depending on how the file is compressed, the bzip2 or zlib extensions must be enabled to take advantage of this feature. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2/zlib extension is not available.

### Örnekler

Örnek 1 A PharFileInfo::decompress() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        $file->compress(Phar::GZ);
        var_dump($file->isCompressed());
        $p['myfile.txt']->decompress();
        var_dump($file->isCompressed());
    } catch (Exception $e) {
        echo 'Create/modify failed for my.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    int(4096)
    bool(false)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compressFiles() - Compresses all files in the current Phar archive
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms

# PharFileInfo::delMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

PharFileInfo::delMetadata — Deletes the metadata of the entry

### Açıklama

public function PharFileInfo::delMetadata(): true

Deletes the metadata of the entry, if any.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Daima `true` döndürür. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

### Hatalar/İstisnalar

Throws PharException if errors occurred while flushing changes to disk, and BadMethodCallException if write access is disabled.

### Örnekler

Örnek 1 A PharFileInfo::delMetaData() example

    <?php
    try {
        $a = new Phar('myphar.phar');
        $a['hi'] = 'hi';
        var_dump($a['hi']->delMetadata());
        $a['hi']->setMetadata('there');
        var_dump($a['hi']->delMetadata());
        var_dump($a['hi']->delMetadata());
    } catch (Exception $e) {
        // handle errors
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
- PharFileInfo::hasMetadata() - Returns the metadata of the entry
- PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::hasMetadata() - Returns whether phar has global meta-data
- Phar::getMetadata() - Returns phar archive meta-data

# PharFileInfo::__destruct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::__destruct — Destructs a Phar entry object

### Açıklama

public function PharFileInfo::__destruct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# PharFileInfo::getCRC32

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified

### Açıklama

public function PharFileInfo::getCRC32(): int

This returns the crc32() checksum of the file within the Phar archive.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The crc32() checksum of the file within the Phar archive.

### Hatalar/İstisnalar

Throws BadMethodCallException if the file has not yet had its CRC32 verified. This should be impossible with normal use, as the CRC is verified upon opening the file for reading or writing.

### Örnekler

Örnek 1 A PharFileInfo::getCRC32() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        echo $file->getCRC32();
    } catch (Exception $e) {
        echo 'Write operations on my.phar.phar failed: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    3633523372

# PharFileInfo::getCompressedSize

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive

### Açıklama

public function PharFileInfo::getCompressedSize(): int

This returns the size of the file within the Phar archive. Uncompressed files will return the same value for getCompressedSize as they will with filesize()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The size in bytes of the file within the Phar archive on disk.

### Örnekler

Örnek 1 A PharFileInfo::getCompressedSize() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        echo $file->getCompressedSize();
    } catch (Exception $e) {
        echo 'Write operations failed on my.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    2

### Ayrıca Bakınız

- PharFileInfo::isCompressed() - Returns whether the entry is compressed
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::compressFiles() - Compresses all files in the current Phar archive

# PharFileInfo::getContent

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

PharFileInfo::getContent — Get the complete file contents of the entry

### Açıklama

public function PharFileInfo::getContent(): string

This function behaves like file_get_contents() but for Phar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the file contents.

# PharFileInfo::getMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file

### Açıklama

public function PharFileInfo::getMetadata(array `$unserializeOptions` = []): mixed

Return meta-data that was saved in the Phar archive's manifest for this file.

### Bağımsız Değişkenler

### Dönen Değerler

any PHP variable that can be serialized and is stored as meta-data for the file, or `null` if no meta-data is stored.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | The parameter `unserializeOptions` has been added.

### Örnekler

Örnek 1 A PharFileInfo::getMetadata() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.txt'] = 'hello';
        $p['file.txt']->setMetadata(array('user' => 'bill', 'mime-type' => 'text/plain'));
        var_dump($p['file.txt']->getMetadata());
    } catch (Exception $e) {
        echo 'Could not create/modify brandnewphar.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["user"]=>
      string(4) "bill"
      ["mime-type"]=>
      string(10) "text/plain"
    }

### Ayrıca Bakınız

- PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
- PharFileInfo::hasMetadata() - Returns the metadata of the entry
- PharFileInfo::delMetadata() - Deletes the metadata of the entry
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::hasMetadata() - Returns whether phar has global meta-data
- Phar::getMetadata() - Returns phar archive meta-data

# PharFileInfo::getPharFlags

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::getPharFlags — Returns the Phar file entry flags

### Açıklama

public function PharFileInfo::getPharFlags(): int

This returns the flags set in the manifest for a Phar. This will always return `0` in the current implementation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Phar flags (always `0` in the current implementation)

### Örnekler

Örnek 1 A PharFileInfo::getPharFlags() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        var_dump($file->getPharFlags());
    } catch (Exception $e) {
        echo 'Could not create/modify my.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)

# PharFileInfo::hasMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.2.0)

PharFileInfo::hasMetadata — Returns the metadata of the entry

### Açıklama

public function PharFileInfo::hasMetadata(): bool

Returns the metadata of a file within a phar archive.

### Bağımsız Değişkenler

No parameters.

### Dönen Değerler

Returns `false` if no metadata is set or is `null`, `true` if metadata is not `null`

### Ayrıca Bakınız

- PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
- PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
- PharFileInfo::delMetadata() - Deletes the metadata of the entry
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::hasMetadata() - Returns whether phar has global meta-data
- Phar::getMetadata() - Returns phar archive meta-data

# PharFileInfo::isCRCChecked

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified

### Açıklama

public function PharFileInfo::isCRCChecked(): bool

This returns whether a file within a Phar archive has had its CRC verified.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the file has had its CRC verified, `false` if not.

### Örnekler

Örnek 1 A PharFileInfo::isCRCChecked() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $file = $p['myfile.txt'];
        var_dump($file->isCRCChecked());
    } catch (Exception $e) {
        echo 'Create/modify operations failed on my.phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

# PharFileInfo::isCompressed

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::isCompressed — Returns whether the entry is compressed

### Açıklama

public function PharFileInfo::isCompressed(?int `$compression` = `null`): bool

This returns whether a file is compressed within a Phar archive with either Gzip or Bzip2 compression.

### Bağımsız Değişkenler

`compression`

  One of `Phar::GZ` or `Phar::BZ2`, defaults to any compression.

### Dönen Değerler

`true` if the file is compressed within the Phar archive, `false` if not.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `compression` is now nullable.

### Örnekler

Örnek 1 A PharFileInfo::isCompressed() example

    <?php
    try {
        $p = new Phar('/path/to/my.phar', 0, 'my.phar');
        $p['myfile.txt'] = 'hi';
        $p['myfile2.txt'] = 'hi';
        $p['myfile2.txt']->setCompressedGZ();
        $file = $p['myfile.txt'];
        $file2 = $p['myfile2.txt'];
        var_dump($file->isCompressed());
        var_dump($file2->isCompressed());
    } catch (Exception $e) {
        echo 'Create/modify on phar my.phar failed: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)

### Ayrıca Bakınız

- PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
- PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
- Phar::decompress() - Decompresses the entire Phar archive
- Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Phar::getSupportedCompression() - Return array of supported compression algorithms
- Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Phar::compressFiles() - Compresses all files in the current Phar archive

# PharFileInfo::setMetadata

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file

### Açıklama

public function PharFileInfo::setMetadata(mixed `$metadata`): void

PharFileInfo::setMetadata() should only be used to store customized data in a file that cannot be represented with existing information stored with a file. Meta-data can significantly slow down the performance of loading a phar archive if the data is large, or if there are many files containing meta-data. It is important to note that file permissions are natively supported inside a phar; it is possible to set them with the PharFileInfo::chmod() method. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

Some possible uses for meta-data include passing a user/group that should be set when a file is extracted from the phar to disk. Other uses could include explicitly specifying a MIME type to return. However, any useful data that describes a file, but should not be contained inside of it may be stored.

### Bağımsız Değişkenler

`metadata`

  Any PHP variable containing information to store alongside a file

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 A PharFileInfo::setMetadata() example

    <?php
    // make sure it doesn't exist
    @unlink('brandnewphar.phar');
    try {
        $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
        $p['file.txt'] = 'hello';
        $p['file.txt']->setMetadata(array('user' => 'bill', 'mime-type' => 'text/plain'));
        var_dump($p['file.txt']->getMetaData());
    } catch (Exception $e) {
        echo 'Could not create/modify phar: ', $e;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["user"]=>
      string(4) "bill"
      ["mime-type"]=>
      string(10) "text/plain"
    }

### Ayrıca Bakınız

- PharFileInfo::hasMetadata() - Returns the metadata of the entry
- PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
- PharFileInfo::delMetadata() - Deletes the metadata of the entry
- Phar::setMetadata() - Sets phar archive meta-data
- Phar::hasMetadata() - Returns whether phar has global meta-data
- Phar::getMetadata() - Returns phar archive meta-data

## İçindekiler

- PharFileInfo::chmod — Sets file-specific permission bits
- PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression
- PharFileInfo::__construct — Construct a Phar entry object
- PharFileInfo::decompress — Decompresses the current Phar entry within the phar
- PharFileInfo::delMetadata — Deletes the metadata of the entry
- PharFileInfo::__destruct — Destructs a Phar entry object
- PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified
- PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive
- PharFileInfo::getContent — Get the complete file contents of the entry
- PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file
- PharFileInfo::getPharFlags — Returns the Phar file entry flags
- PharFileInfo::hasMetadata — Returns the metadata of the entry
- PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified
- PharFileInfo::isCompressed — Returns whether the entry is compressed
- PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file

# The PharException class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)

## Giriş

The PharException class provides a phar-specific exception class for try/catch blocks.

## Sınıf Sözdizimi

class PharException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Using Phar Archives
  - Using Phar Archives: Introduction
  - Using Phar Archives: the phar stream wrapper
  - Using Phar Archives: the Phar and PharData class
- Creating Phar Archives
  - Creating Phar Archives: Introduction
- What makes a phar a phar and not a tar or a zip?
  - Ingredients of all Phar archives, independent of file format
  - Phar file stub
  - Head-to-head comparison of Phar, Tar and Zip
  - Tar-based phars
  - Zip-based phars
  - Phar File Format
  - Global Phar bitmapped flags
  - Phar manifest file entry definition
  - Phar Signature format
- Phar — The Phar class
  - Phar::addEmptyDir — Add an empty directory to the phar archive
  - Phar::addFile — Add a file from the filesystem to the phar archive
  - Phar::addFromString — Add a file from a string to the phar archive
  - Phar::apiVersion — Returns the api version
  - Phar::buildFromDirectory — Construct a phar archive from the files within a directory
  - Phar::buildFromIterator — Construct a phar archive from an iterator
  - Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2
  - Phar::canWrite — Returns whether phar extension supports writing and creating phars
  - Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression
  - Phar::compressFiles — Compresses all files in the current Phar archive
  - Phar::__construct — Construct a Phar archive object
  - Phar::convertToData — Convert a phar archive to a non-executable tar or zip file
  - Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format
  - Phar::copy — Copy a file internal to the phar archive to another new file within the phar
  - Phar::count — Returns the number of entries (files) in the Phar archive
  - Phar::createDefaultStub — Create a phar-file format specific stub
  - Phar::decompress — Decompresses the entire Phar archive
  - Phar::decompressFiles — Decompresses all files in the current Phar archive
  - Phar::delMetadata — Deletes the global metadata of the phar
  - Phar::delete — Delete a file within a phar archive
  - Phar::__destruct — Destructs a Phar archive object
  - Phar::extractTo — Extract the contents of a phar archive to a directory
  - Phar::getAlias — Get the alias for Phar
  - Phar::getMetadata — Returns phar archive meta-data
  - Phar::getModified — Return whether phar was modified
  - Phar::getPath — Get the real path to the Phar archive on disk
  - Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
  - Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive
  - Phar::getSupportedCompression — Return array of supported compression algorithms
  - Phar::getSupportedSignatures — Return array of supported signature types
  - Phar::getVersion — Return version info of Phar archive
  - Phar::hasMetadata — Returns whether phar has global meta-data
  - Phar::interceptFileFuncs — Instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
  - Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
  - Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  - Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
  - Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename
  - Phar::isWritable — Returns true if the phar archive can be modified
  - Phar::loadPhar — Loads any phar archive with an alias
  - Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest
  - Phar::mount — Mount an external path or file to a virtual location within the phar archive
  - Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution
  - Phar::offsetExists — Determines whether a file exists in the phar
  - Phar::offsetGet — Gets a PharFileInfo object for a specific file
  - Phar::offsetSet — Set the contents of an internal file to those of an external file
  - Phar::offsetUnset — Remove a file from a phar
  - Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive
  - Phar::setAlias — Set the alias for the Phar archive
  - Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
  - Phar::setMetadata — Sets phar archive meta-data
  - Phar::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it
  - Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive
  - Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk
  - Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk
  - Phar::unlinkArchive — Completely remove a phar archive from disk and from memory
  - Phar::webPhar — Routes a request from a web browser to an internal file within the phar archive
- PharData — The PharData class
  - PharData::addEmptyDir — Add an empty directory to the tar/zip archive
  - PharData::addFile — Add a file from the filesystem to the tar/zip archive
  - PharData::addFromString — Add a file from a string to the tar/zip archive
  - PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory
  - PharData::buildFromIterator — Construct a tar or zip archive from an iterator
  - PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  - PharData::compressFiles — Compresses all files in the current tar/zip archive
  - PharData::__construct — Construct a non-executable tar or zip archive object
  - PharData::convertToData — Convert a phar archive to a non-executable tar or zip file
  - PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive
  - PharData::copy — Copy a file internal to the tar/zip archive to another new file within the same archive
  - PharData::decompress — Decompresses the entire Phar archive
  - PharData::decompressFiles — Decompresses all files in the current zip archive
  - PharData::delMetadata — Deletes the global metadata of a zip archive
  - PharData::delete — Delete a file within a tar/zip archive
  - PharData::__destruct — Destructs a non-executable tar or zip archive object
  - PharData::extractTo — Extract the contents of a tar/zip archive to a directory
  - PharData::isWritable — Returns true if the tar/zip archive can be modified
  - PharData::offsetSet — Set the contents of a file within the tar/zip to those of an external file or string
  - PharData::offsetUnset — Remove a file from a tar/zip archive
  - PharData::setAlias — Dummy function (Phar::setAlias is not valid for PharData)
  - PharData::setDefaultStub — Dummy function (Phar::setDefaultStub is not valid for PharData)
  - PharData::setMetadata — Sets phar archive meta-data
  - PharData::setSignatureAlgorithm — Set the signature algorithm for a phar and apply it
  - PharData::setStub — Dummy function (Phar::setStub is not valid for PharData)
- PharFileInfo — The PharFileInfo class
  - PharFileInfo::chmod — Sets file-specific permission bits
  - PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression
  - PharFileInfo::__construct — Construct a Phar entry object
  - PharFileInfo::decompress — Decompresses the current Phar entry within the phar
  - PharFileInfo::delMetadata — Deletes the metadata of the entry
  - PharFileInfo::__destruct — Destructs a Phar entry object
  - PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified
  - PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive
  - PharFileInfo::getContent — Get the complete file contents of the entry
  - PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file
  - PharFileInfo::getPharFlags — Returns the Phar file entry flags
  - PharFileInfo::hasMetadata — Returns the metadata of the entry
  - PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified
  - PharFileInfo::isCompressed — Returns whether the entry is compressed
  - PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file
- PharException — The PharException class

# Rar Archiving

# Giriş

Rar is a powerful and effective archiver created by Eugene Roshal. This extension gives you possibility to read Rar archives but doesn't support writing Rar archives, because this is not supported by the UnRar library and is directly prohibited by its license.

More information about Rar and UnRar can be found at » http://www.rarlabs.com/.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

Rar is currently available through PECL » https://pecl.php.net/package/rar.

Also you can use the PECL installer to install the Rar extension, using the following command: pecl -v install rar.

You can always download the tar.gz package and install Rar by hand:

Örnek 1 Rar installation

    gunzip rar-xxx.tgz
    tar -xvf rar-xxx.tar
    cd rar-xxx
    phpize
    ./configure && make && make install

Windows users will enable php_rar.dll inside of php.ini in order to use these functions.

## Özkaynak Türleri

This extension registers three internal classes: the archive representations returned by rar_open() – RarArchive, the entry representations returned by rar_list() and rar_entry_get() – RarEntry and the exception type RarException.

This extension also register a stream resource, called "rar" and a URL wrapper called "rar wrapper" and registered under the prefix "rar".

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`RAR_HOST_MSDOS` (int)
  Use `RarEntry::HOST_MSDOS` instead.
`RAR_HOST_OS2` (int)
  Use `RarEntry::HOST_OS2` instead.
`RAR_HOST_WIN32` (int)
  Use `RarEntry::HOST_WIN32` instead.
`RAR_HOST_UNIX` (int)
  Use `RarEntry::HOST_UNIX` instead.
`RAR_HOST_BEOS` (int)
  Use `RarEntry::HOST_BEOS` instead.

# Örnekler

See also the examples under `rar://` wrapper.

Örnek 1 On-the-fly decompression

    <?php

    if (!array_key_exists("i", $_GET) || !is_numeric($_GET["i"]))
        die("Index unspecified or non-numeric");
    $index = (int) $_GET["i"];

    $arch = RarArchive::open("example.rar");
    if ($arch === FALSE)
        die("Cannot open example.rar");

    $entries = $arch->getEntries();
    if ($entries === FALSE)
        die("Cannot retrieve entries");

    if (!array_key_exists($index, $entries))
        die("No such index: $index");

    $orfilename = $entries[$index]->getName(); //UTF-8 encoded

    $filesize = $entries[$index]->getUnpackedSize();

    /* you could check HTTP_IF_MODIFIED_SINCE here and compare with
     * $entries[$index]->getFileTime(). You could also send a
     * "Last modified" header */

    $fp = $entries[$index]->getStream();
    if ($fp === FALSE)
        die("Cannot open file with index $index insided the archive.");

    $arch->close(); //no longer needed; stream is independent

    function detectUserAgent() {
        if (!array_key_exists('HTTP_USER_AGENT', $_SERVER))
            return "Other";

        $uas = $_SERVER['HTTP_USER_AGENT'];
        if (preg_match("@Opera/@", $uas))
            return "Opera";
        if (preg_match("@Firefox/@", $uas))
            return "Firefox";
        if (preg_match("@Chrome/@", $uas))
            return "Chrome";
        if (preg_match("@MSIE ([0-9.]+);@", $uas, $matches)) {
            if (((float) $matches[1]) >= 7.0)
                return "IE";
        }

        return "Other";
    }

    /*
     * We have 3 options:
     * - For FF and Opera, which support RFC 2231, use that format.
     * - For IE and Chrome, use attwithfnrawpctenclong
     *   (http://greenbytes.de/tech/tc2231/#attwithfnrawpctenclong)
     * - For the others, convert to ISO-8859-1, if possible
     */
    $formatRFC2231 = 'Content-Disposition: attachment; filename*=UTF-8\'\'%s';
    $formatDef = 'Content-Disposition: attachment; filename="%s"';

    switch (detectUserAgent()) {
        case "Opera":
        case "Firefox":
            $orfilename = rawurlencode($orfilename);
            $format = $formatRFC2231;
            break;

        case "IE":
        case "Chrome":
            $orfilename = rawurlencode($orfilename);
            $format = $formatDef;
            break;
        default:
            if (function_exists('iconv'))
                $orfilename =
                    @iconv("UTF-8", "ISO-8859-1//TRANSLIT", $orfilename);
            $format = $formatDef;
    }

    header(sprintf($format, $orfilename));
    //cannot send error messages from now on (headers already sent)

    //replace by real content type, perhaps infering from the file extension
    $contentType = "application/octet-stream";
    header("Content-Type: $contentType");

    header("Content-Transfer-Encoding: binary");

    header("Content-Length: $filesize");

    if ($_SERVER['REQUEST_METHOD'] == "HEAD")
        die();

    while (!feof($fp)) {
        $s = @fread($fp, 8192);
        if ($s === false)
            break; //useless to send error messages

        echo $s;
    }
    ?>

This example opens a RAR file and presents the requested file inside the RAR archive for download to the client.

Örnek 2 RAR extension filesystem extraction example

    <?php

    $rar_file = rar_open('example.rar') or die("Can't open Rar archive");

    $entries = rar_list($rar_file);

    foreach ($entries as $entry) {
        echo 'Filename: ' . $entry->getName() . "\n";
        echo 'Packed size: ' . $entry->getPackedSize() . "\n";
        echo 'Unpacked size: ' . $entry->getUnpackedSize() . "\n";

        $entry->extract('/dir/extract/to/');
    }

    rar_close($rar_file);

    ?>

This example opens a RAR file archive and extracts each entry to the specified directory.

# Rar İşlevleri

# rar_wrapper_cache_stats

(PECL rar >= 3.0.0)

rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper

### Açıklama

function rar_wrapper_cache_stats(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper

# The RarArchive class

(PECL rar >= 2.0.0)

## Giriş

This class represents a RAR archive, which may be formed by several volumes (parts) and which contains a number of RAR entries (i.e., files, directories and other special objects such as symbolic links).

Objects of this class can be traversed, yielding the entries stored in the respective RAR archive. Those entries can also be obtained through RarArchive::getEntry() and RarArchive::getEntries().

## Sınıf Sözdizimi

final class RarArchive implements Traversable {
/* Yöntemler */
public function close(): bool
public function getComment(): string
public function getEntries(): array|false
public function getEntry(string `$entryname`): RarEntry|false
public function isBroken(): bool
public function isSolid(): bool
public static function open(string `$filename`, string `$password` = NULL, callable `$volume_callback` = NULL): RarArchive|false
public function setAllowBroken(bool `$allow_broken`): bool
public function __toString(): string
}

# RarArchive::close

# rar_close

(PECL rar >= 2.0.0)

RarArchive::close -- rar_close — Close RAR archive and free all resources

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::close(): bool

Yordamsal kullanım:

function rar_close(RarArchive `$rarfile`): bool

Close RAR archive and free all allocated resources.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 2.0.0 | The RAR entries returned by RarArchive::getEntry() and RarArchive::getEntries() are now invalidated when calling this method. This means that all instance methods called for such entries and not guaranteed to succeed.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $rar_arch = RarArchive::open('latest_winrar.rar');
    echo $rar_arch."\n";
    $rar_arch->close();
    echo $rar_arch."\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar"
    RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar" (closed)

Örnek 2 Yordamsal kullanım

    <?php
    $rar_arch = rar_open('latest_winrar.rar');
    echo $rar_arch."\n";
    rar_close($rar_arch);
    echo $rar_arch."\n";
    ?>

# RarArchive::getComment

# rar_comment_get

(PECL rar >= 2.0.0)

RarArchive::getComment -- rar_comment_get — Get comment text from the RAR archive

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::getComment(): string

Yordamsal kullanım:

function rar_comment_get(RarArchive `$rarfile`): string

Get the (global) comment stored in the RAR archive. It may be up to 64 KiB long.

> Bilginize: This extension does not support comments at the entry level.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().

### Dönen Değerler

Returns the comment or `null` if there is none.

> Bilginize: RAR has currently no support for unicode comments. The encoding of the result of this function is not specified, but it will probably be Windows-1252.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $rar_arch = RarArchive::open('commented.rar');
    echo $rar_arch->getComment();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    This is the comment of the file commented.rar.

Örnek 2 Yordamsal kullanım

    <?php
    $rar_arch = rar_open('commented.rar');
    echo rar_comment_get($rar_arch);
    ?>

# RarArchive::getEntries

# rar_list

(PECL rar >= 2.0.0)

RarArchive::getEntries -- rar_list — Get full list of entries from the RAR archive

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::getEntries(): array|false

Yordamsal kullanım:

function rar_list(RarArchive `$rarfile`): array|false

Get entries list (files and directories) from the RAR archive.

> Bilginize: If the archive has entries with the same name, this method, together with RarArchive `foreach` iteration and array-like access with numeric indexes, are the only ones to access all the entries (i.e., RarArchive::getEntry() and the `rar://` wrapper are insufficient).

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().

### Dönen Değerler

rar_list() returns array of RarEntry objects başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $rar_arch = RarArchive::open('solid.rar');
    if ($rar_arch === FALSE)
        die("Could not open RAR archive.");

    $rar_entries = $rar_arch->getEntries();
    if ($rar_entries === FALSE)
        die("Could not retrieve entries.");

    echo "Found " . count($rar_entries) . " entries.\n";

    foreach ($rar_entries as $e) {
        echo $e;
        echo "\n";
    }
    $rar_arch->close();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Found 2 entries.
    RarEntry for file "tese.txt" (23b93a7a)
    RarEntry for file "unrardll.txt" (2ed64b6e)

Örnek 2 Yordamsal kullanım

    <?php
    $rar_arch = rar_open('solid.rar');
    if ($rar_arch === FALSE)
        die("Could not open RAR archive.");

    $rar_entries = rar_list($rar_arch);
    if ($rar_entries === FALSE)
        die("Could retrieve entries.");

    echo "Found " . count($rar_entries) . " entries.\n";

    foreach ($rar_entries as $e) {
        echo $e;
        echo "\n";
    }
    rar_close($rar_arch);
    ?>

### Ayrıca Bakınız

- RarArchive::getEntry() - Get entry object from the RAR archive
- `rar://` wrapper

# RarArchive::getEntry

# rar_entry_get

(PECL rar >= 2.0.0)

RarArchive::getEntry -- rar_entry_get — Get entry object from the RAR archive

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::getEntry(string `$entryname`): RarEntry|false

Yordamsal kullanım:

function rar_entry_get(RarArchive `$rarfile`, string `$entryname`): RarEntry|false

Get entry object (file or directory) from the RAR archive.

> Bilginize: You can also get entry objects using RarArchive::getEntries(). Note that a RAR archive can have multiple entries with the same name; this method will retrieve only the first.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().
`entryname`
  Path to the entry within the RAR archive.

  > Bilginize: The path must be the same returned by RarEntry::getName().

### Dönen Değerler

Returns the matching RarEntry object başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $rar_arch = RarArchive::open('solid.rar');
    if ($rar_arch === FALSE)
        die("Could not open RAR archive.");
    $rar_entry = $rar_arch->getEntry('tese.txt');
    if ($rar_entry === FALSE)
        die("Could not get such entry");
    echo get_class($rar_entry)."\n";
    echo $rar_entry;
    $rar_arch->close();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    RarEntry
    RarEntry for file "tese.txt" (23b93a7a)

Örnek 2 Yordamsal kullanım

    <?php
    $rar_arch = rar_open('solid.rar');
    if ($rar_arch === FALSE)
        die("Could not open RAR archive.");
    $rar_entry = rar_entry_get($rar_arch, 'tese.txt');
    if ($rar_entry === FALSE)
        die("Could not get such entry");
    echo get_class($rar_entry)."\n";
    echo $rar_entry;
    rar_close($rar_arch);
    ?>

### Ayrıca Bakınız

- RarArchive::getEntries() - Get full list of entries from the RAR archive
- `rar://` wrapper

# RarArchive::isBroken

# rar_broken_is

(PECL rar >= 3.0.0)

RarArchive::isBroken -- rar_broken_is — Test whether an archive is broken (incomplete)

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::isBroken(): bool

Yordamsal kullanım:

function rar_broken_is(RarArchive `$rarfile`): bool

This function determines whether an archive is incomplete, i.e., if a volume is missing or a volume is truncated.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().

### Dönen Değerler

Returns `true` if the archive is broken, `false` otherwise. This function may also return `false` if the passed file has already been closed. The only way to tell the two cases apart is to enable exceptions with RarException::setUsingExceptions(); however, this should be unnecessary as a program should not operate on closed files.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    function retnull() { return null; }
    $file = dirname(__FILE__) . "/multi_broken.part1.rar";
    /* Third argument is used to omit notice */
    $arch = RarArchive::open($file, null, 'retnull');
    var_dump($arch->isBroken());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)

Örnek 2 Yordamsal kullanım

    <?php
    function retnull() { return null; }
    $file = dirname(__FILE__) . "/multi_broken.part1.rar";
    /* Third argument is used to omit notice */
    $arch = rar_open($file, null, 'retnull');
    var_dump(rar_broken_is($arch));
    ?>

### Ayrıca Bakınız

- RarArchive::setAllowBroken() - Whether opening broken archives is allowed

# RarArchive::isSolid

# rar_solid_is

(PECL rar >= 2.0.0)

RarArchive::isSolid -- rar_solid_is — Check whether the RAR archive is solid

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::isSolid(): bool

Yordamsal kullanım:

function rar_solid_is(RarArchive `$rarfile`): bool

Check whether the RAR archive is solid. Individual file extraction is slower on solid archives.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().

### Dönen Değerler

Returns `true` if the archive is solid, `false` otherwise.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $arch1 = RarArchive::open("store_method.rar");
    $arch2 = RarArchive::open("solid.rar");
    echo "$arch1: " . ($arch1->isSolid()?'yes':'no') ."\n";
    echo "$arch2: " . ($arch2->isSolid()?'yes':'no') . "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    RAR Archive "C:\php_rar\trunk\tests\store_method.rar": no
    RAR Archive "C:\php_rar\trunk\tests\solid.rar": yes

Örnek 2 Yordamsal kullanım

    <?php
    $arch1 = rar_open("store_method.rar");
    $arch2 = rar_open("solid.rar");
    echo "$arch1: " . (rar_solid_is($arch1)?'yes':'no') ."\n";
    echo "$arch2: " . (rar_solid_is($arch2)?'yes':'no') . "\n";
    ?>

# RarArchive::open

# rar_open

(PECL rar >= 2.0.0)

RarArchive::open -- rar_open — Open RAR archive

### Açıklama

Nesne yönelimli kullanım (method):

public static function RarArchive::open(string `$filename`, string `$password` = NULL, callable `$volume_callback` = NULL): RarArchive|false

Yordamsal kullanım:

function rar_open(string `$filename`, string `$password` = NULL, callable `$volume_callback` = NULL): RarArchive|false

Open specified RAR archive and return RarArchive instance representing it.

> Bilginize: If opening a multi-volume archive, the path of the first volume should be passed as the first parameter. Otherwise, not all files will be shown. This is by design.

### Bağımsız Değişkenler

`filename`
  Path to the Rar archive.
`password`
  A plain password, if needed to decrypt the headers. It will also be used by default if encrypted files are found. Note that the files may have different passwords in respect to the headers and among them.
`volume_callback`
  A function that receives one parameter – the path of the volume that was not found – and returns a string with the correct path for such volume or `null` if such volume does not exist or is not known. The programmer should ensure the passed function doesn't cause loops as this function is called repeatedly if the path returned in a previous call did not correspond to the needed volume. Specifying this parameter omits the notice that would otherwise be emitted whenever a volume is not found; an implementation that only returns `null` can therefore be used to merely omit such notices.

Uyarı

Prior to version 2.0.0, this function would not handle relative paths correctly. Use realpath() as a workaround.

### Dönen Değerler

Returns the requested RarArchive instance başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 3.0.0 | `volume_callback` was added.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $rar_arch = RarArchive::open('encrypted_headers.rar', 'samplepassword');
    if ($rar_arch === FALSE)
        die("Failed opening file");

    $entries = $rar_arch->getEntries();
    if ($entries === FALSE)
        die("Failed fetching entries");

    echo "Found " . count($entries) . " files.\n";

    if (empty($entries))
        die("No valid entries found.");

    $stream = reset($entries)->getStream();
    if ($stream === FALSE)
        die("Failed opening first file");

    $rar_arch->close();

    echo "Content of first one follows:\n";
    echo stream_get_contents($stream);

    fclose($stream);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Found 2 files.
    Content of first one follows:
    Encrypted file 1 contents.

Örnek 2 Yordamsal kullanım

    <?php
    $rar_arch = rar_open('encrypted_headers.rar', 'samplepassword');
    if ($rar_arch === FALSE)
        die("Failed opening file");

    $entries = rar_list($rar_arch);
    if ($entries === FALSE)
        die("Failed fetching entries");

    echo "Found " . count($entries) . " files.\n";

    if (empty($entries))
        die("No valid entries found.");

    $stream = reset($entries)->getStream();
    if ($stream === FALSE)
        die("Failed opening first file");

    rar_close($rar_arch);

    echo "Content of first one follows:\n";
    echo stream_get_contents($stream);

    fclose($stream);
    ?>

Örnek 3 Volume Callback

    <?php
    /* In this example, there's a volume named multi_broken.part1.rar
     * whose next volume is named multi.part2.rar */
    function resolve($vol) {
        if (preg_match('/_broken/', $vol))
            return str_replace('_broken', '', $vol);
        else
            return null;
    }
    $rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve');
    $entry = $rar_file1->getEntry('file2.txt');
    $entry->extract(null, dirname(__FILE__) . "/temp_file2.txt");
    ?>

### Ayrıca Bakınız

- `rar://` wrapper

# RarArchive::setAllowBroken

(PECL rar >= 3.0.0)

RarArchive::setAllowBroken — Whether opening broken archives is allowed

### Açıklama

Nesne yönelimli kullanım (method):

public function RarArchive::setAllowBroken(bool `$allow_broken`): bool

Yordamsal kullanım:

function rar_allow_broken_set(RarArchive `$rarfile`, bool `$allow_broken`): bool

This method defines whether broken archives can be read or all the operations that attempt to extract the archive entries will fail. Broken archives are archives for which no error is detected when the file is opened but an error occurs when reading the entries.

### Bağımsız Değişkenler

`rarfile`
  A RarArchive object, opened with rar_open().
`allow_broken`
  Whether to allow reading broken files (`true`) or not (`false`).

### Dönen Değerler

Returns `true` başarısızlık durumunda `false` döner. It will only fail if the file has already been closed.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    function retnull() { return null; }
    $file = dirname(__FILE__) . "/multi_broken.part1.rar";
    /* Third argument omits "volume not found" message */
    $a = RarArchive::open($file, null, 'retnull');
    $a->setAllowBroken(true);
    foreach ($a->getEntries() as $e) {
        echo "$e\n";
    }
    var_dump(count($a));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    RarEntry for file "file1.txt" (52b28202)
    int(1)

Örnek 2 Yordamsal kullanım

    <?php
    function retnull() { return null; }
    $file = dirname(__FILE__) . "/multi_broken.part1.rar";
    /* Third argument omits "volume not found" message */
    $a = rar_open($file, null, 'retnull');
    rar_allow_broken_set($a, true);
    foreach (rar_list($a) as $e) {
        echo "$e\n";
    }
    var_dump(count($a));
    ?>

### Ayrıca Bakınız

- RarArchive::isBroken() - Test whether an archive is broken (incomplete)

# RarArchive::__toString

(PECL rar >= 2.0.0)

RarArchive::__toString — Get text representation

### Açıklama

public function RarArchive::__toString(): string

Provides a string representation for this RarArchive object. It currently shows the full path name of the archive volume that was opened and whether the resource is valid or was already closed through a call to RarArchive::close().

This method may be used only for debugging purposes, as there are no guarantees as to which information the result contains or how it is formatted.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A textual representation of this RarArchive object. The content of this representation is unspecified.

### Örnekler

Örnek 1 RarArchive::__toString() example

    <?php
    $rar_arch = RarArchive::open('latest_winrar.rar');
    echo $rar_arch."\n";
    $rar_arch->close();
    echo $rar_arch."\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar"
    RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar" (closed)

## İçindekiler

- RarArchive::close — Close RAR archive and free all resources
- RarArchive::getComment — Get comment text from the RAR archive
- RarArchive::getEntries — Get full list of entries from the RAR archive
- RarArchive::getEntry — Get entry object from the RAR archive
- RarArchive::isBroken — Test whether an archive is broken (incomplete)
- RarArchive::isSolid — Check whether the RAR archive is solid
- RarArchive::open — Open RAR archive
- RarArchive::setAllowBroken — Whether opening broken archives is allowed
- RarArchive::__toString — Get text representation

# The RarEntry class

(PECL rar >= 0.1)

## Giriş

A RAR entry, representing a directory or a compressed file inside a RAR archive.

## Sınıf Sözdizimi

final class RarEntry {
/* Sabitler */
const int HOST_MSDOS = 0;
const int HOST_OS2 = 1;
const int HOST_WIN32 = 2;
const int HOST_UNIX = 3;
const int HOST_MACOS = 4;
const int HOST_BEOS = 5;
const int ATTRIBUTE_WIN_READONLY = 1;
const int ATTRIBUTE_WIN_HIDDEN = 2;
const int ATTRIBUTE_WIN_SYSTEM = 4;
const int ATTRIBUTE_WIN_DIRECTORY = 16;
const int ATTRIBUTE_WIN_ARCHIVE = 32;
const int ATTRIBUTE_WIN_DEVICE = 64;
const int ATTRIBUTE_WIN_NORMAL = 128;
const int ATTRIBUTE_WIN_TEMPORARY = 256;
const int ATTRIBUTE_WIN_SPARSE_FILE = 512;
const int ATTRIBUTE_WIN_REPARSE_POINT = 1024;
const int ATTRIBUTE_WIN_COMPRESSED = 2048;
const int ATTRIBUTE_WIN_OFFLINE = 4096;
const int ATTRIBUTE_WIN_NOT_CONTENT_INDEXED = 8192;
const int ATTRIBUTE_WIN_ENCRYPTED = 16384;
const int ATTRIBUTE_WIN_VIRTUAL = 65536;
const int ATTRIBUTE_UNIX_WORLD_EXECUTE = 1;
const int ATTRIBUTE_UNIX_WORLD_WRITE = 2;
const int ATTRIBUTE_UNIX_WORLD_READ = 4;
const int ATTRIBUTE_UNIX_GROUP_EXECUTE = 8;
const int ATTRIBUTE_UNIX_GROUP_WRITE = 16;
const int ATTRIBUTE_UNIX_GROUP_READ = 32;
const int ATTRIBUTE_UNIX_OWNER_EXECUTE = 64;
const int ATTRIBUTE_UNIX_OWNER_WRITE = 128;
const int ATTRIBUTE_UNIX_OWNER_READ = 256;
const int ATTRIBUTE_UNIX_STICKY = 512;
const int ATTRIBUTE_UNIX_SETGID = 1024;
const int ATTRIBUTE_UNIX_SETUID = 2048;
const int ATTRIBUTE_UNIX_FINAL_QUARTET = 61440;
const int ATTRIBUTE_UNIX_FIFO = 4096;
const int ATTRIBUTE_UNIX_CHAR_DEV = 8192;
const int ATTRIBUTE_UNIX_DIRECTORY = 16384;
const int ATTRIBUTE_UNIX_BLOCK_DEV = 24576;
const int ATTRIBUTE_UNIX_REGULAR_FILE = 32768;
const int ATTRIBUTE_UNIX_SYM_LINK = 40960;
const int ATTRIBUTE_UNIX_SOCKET = 49152;
/* Yöntemler */
public function extract(
string `$dir`,
string `$filepath` = "",
string `$password` = NULL,
bool `$extended_data` = `false`
): bool
public function getAttr(): int
public function getCrc(): string
public function getFileTime(): string
public function getHostOs(): int
public function getMethod(): int
public function getName(): string
public function getPackedSize(): int
public function getStream(string `$password` = ?): resource|false
public function getUnpackedSize(): int
public function getVersion(): int
public function isDirectory(): bool
public function isEncrypted(): bool
public function __toString(): string
}

## Öntanımlı Sabitler

`RarEntry::HOST_MSDOS`
  If the return value of RarEntry::getHostOs() equals this constant, MS-DOS was used to add this entry. Use instead of `RAR_HOST_MSDOS`.
`RarEntry::HOST_OS2`
  If the return value of RarEntry::getHostOs() equals this constant, OS/2 was used to add this entry. Intended to replace `RAR_HOST_OS2`.
`RarEntry::HOST_WIN32`
  If the return value of RarEntry::getHostOs() equals this constant, Microsoft Windows was used to add this entry. Intended to replace `RAR_HOST_WIN32`.
`RarEntry::HOST_UNIX`
  If the return value of RarEntry::getHostOs() equals this constant, an unspecified UNIX OS was used to add this entry. Intended to replace `RAR_HOST_UNIX`.
`RarEntry::HOST_MACOS`
  If the return value of RarEntry::getHostOs() equals this constant, Mac OS was used to add this entry.
`RarEntry::HOST_BEOS`
  If the return value of RarEntry::getHostOs() equals this constant, BeOS was used to add this entry. Intended to replace `RAR_HOST_BEOS`.
`RarEntry::ATTRIBUTE_WIN_READONLY`
  Bit that represents a Windows entry with a read-only attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_HIDDEN`
  Bit that represents a Windows entry with a hidden attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_SYSTEM`
  Bit that represents a Windows entry with a system attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_DIRECTORY`
  Bit that represents a Windows entry with a directory attribute (entry is a directory). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows. See also RarEntry::isDirectory(), which also works with entries that were not added in WinRAR.
`RarEntry::ATTRIBUTE_WIN_ARCHIVE`
  Bit that represents a Windows entry with an archive attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_DEVICE`
  Bit that represents a Windows entry with a device attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_NORMAL`
  Bit that represents a Windows entry with a normal file attribute (entry is NOT a directory). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows. See also RarEntry::isDirectory(), which also works with entries that were not added in WinRAR.
`RarEntry::ATTRIBUTE_WIN_TEMPORARY`
  Bit that represents a Windows entry with a temporary attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_SPARSE_FILE`
  Bit that represents a Windows entry with a sparse file attribute (file is an NTFS sparse file). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_REPARSE_POINT`
  Bit that represents a Windows entry with a reparse point attribute (entry is an NTFS reparse point, e.g. a directory junction or a mount file system). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_COMPRESSED`
  Bit that represents a Windows entry with a compressed attribute (NTFS only). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_OFFLINE`
  Bit that represents a Windows entry with an offline attribute (entry is offline and not accessible). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_NOT_CONTENT_INDEXED`
  Bit that represents a Windows entry with a not content indexed attribute (entry is to be indexed). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_ENCRYPTED`
  Bit that represents a Windows entry with an encrypted attribute (NTFS only). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_WIN_VIRTUAL`
  Bit that represents a Windows entry with a virtual attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.
`RarEntry::ATTRIBUTE_UNIX_WORLD_EXECUTE`
  Bit that represents a UNIX entry that is world executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_WORLD_WRITE`
  Bit that represents a UNIX entry that is world writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_WORLD_READ`
  Bit that represents a UNIX entry that is world readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_GROUP_EXECUTE`
  Bit that represents a UNIX entry that is group executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_GROUP_WRITE`
  Bit that represents a UNIX entry that is group writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_GROUP_READ`
  Bit that represents a UNIX entry that is group readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_OWNER_EXECUTE`
  Bit that represents a UNIX entry that is owner executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_OWNER_WRITE`
  Bit that represents a UNIX entry that is owner writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_OWNER_READ`
  Bit that represents a UNIX entry that is owner readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_STICKY`
  Bit that represents the UNIX sticky bit. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_SETGID`
  Bit that represents the UNIX setgid attribute. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_SETUID`
  Bit that represents the UNIX setuid attribute. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.
`RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`
  Mask to isolate the last four bits (nibble) of UNIX attributes (_S_IFMT, the type of file mask). To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constants `RarEntry::ATTRIBUTE_UNIX_FIFO`, `RarEntry::ATTRIBUTE_UNIX_CHAR_DEV`, `RarEntry::ATTRIBUTE_UNIX_DIRECTORY`, `RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV`, `RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE`, `RarEntry::ATTRIBUTE_UNIX_SYM_LINK` and `RarEntry::ATTRIBUTE_UNIX_SOCKET`.
`RarEntry::ATTRIBUTE_UNIX_FIFO`
  Unix FIFOs will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`.
`RarEntry::ATTRIBUTE_UNIX_CHAR_DEV`
  Unix character devices will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`.
`RarEntry::ATTRIBUTE_UNIX_DIRECTORY`
  Unix directories will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`. See also RarEntry::isDirectory(), which also works with entries that were added in other operating systems.
`RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV`
  Unix block devices will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`.
`RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE`
  Unix regular files (not directories) will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`. See also RarEntry::isDirectory(), which also works with entries that were added in other operating systems.
`RarEntry::ATTRIBUTE_UNIX_SYM_LINK`
  Unix symbolic links will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`.
`RarEntry::ATTRIBUTE_UNIX_SOCKET`
  Unix sockets will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant `RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET`.

# RarEntry::extract

(PECL rar >= 0.1)

RarEntry::extract — Extract entry from the archive

### Açıklama

public function RarEntry::extract(
string `$dir`,
string `$filepath` = "",
string `$password` = NULL,
bool `$extended_data` = `false`
): bool

RarEntry::extract() extracts the entry's data. It will create new file in the specified `dir` with the name identical to the entry's name, unless the second argument is specified. See below for more information.

### Bağımsız Değişkenler

`dir`
  Path to the directory where files should be extracted. This parameter is considered if and only if `filepath` is not. If both parameters are empty an extraction to the current directory will be attempted.
`filepath`
  Path (relative or absolute) containing the directory and filename of the extracted file. This parameter overrides both the parameter `dir` and the original file name.
`password`
  The password used to encrypt this entry. If the entry is not encrypted, this value will not be used and can be omitted. If this parameter is omitted and the entry is encrypted, the password given to rar_open(), if any, will be used. If a wrong password is given, either explicitly or implicitly via rar_open(), CRC checking will fail and this method will fail and return `false`. If no password is given and one is required, this method will fail and return `false`. You can check whether an entry is encrypted with RarEntry::isEncrypted().
`extended_data`
  If `true`, extended information such as NTFS ACLs and Unix owner information will be set in the extract files, as long as it's present in the archive.

Uyarı

Prior to version 2.0.0, this function would not handle relative paths correctly. Use realpath() as a workaround.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 3.0.0 | `extended_data` was added.
PECL rar 3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

### Örnekler

Örnek 1 RarEntry::extract() example

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    $entry->extract('/dir/to'); // create /dir/to/Dir/file.txt
    $entry->extract(false, '/dir/to/new_name.txt'); // create /dir/to/new_name.txt

    ?>

Örnek 2 How to extract all files in archive:

    <?php

    /* example by Erik Jenssen aka erix */

    $filename = "foobar.rar";
    $filepath = "/home/foo/bar/";

    $rar_file = rar_open($filepath.$filename);
    $list = rar_list($rar_file);
    foreach($list as $file) {
        $entry = rar_entry_get($rar_file, $file);
        $entry->extract("."); // extract to the current dir
    }
    rar_close($rar_file);

    ?>

### Ayrıca Bakınız

- RarEntry::getStream() - Get file handler for entry
- `rar://` wrapper

# RarEntry::getAttr

(PECL rar >= 0.1)

RarEntry::getAttr — Get attributes of the entry

### Açıklama

public function RarEntry::getAttr(): int

Returns the OS-dependent attributes of the archive entry.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the attributes or `false` on error.

### Örnekler

Örnek 1 RarEntry::getAttr() example

    <?php

    $rar_file = rar_open('example.rar') or die("Can't open Rar archive");

    $entry = rar_entry_get($rar_file, 'dir/in/the/archive') or die("Can't find such entry");

    $host_os = $entry->getHostOs();
    $attr = $entry->getAttr();

    switch($host_os) {
        case RAR_HOST_MSDOS:
        case RAR_HOST_OS2:
        case RAR_HOST_WIN32:
        case RAR_HOST_MACOS:
            printf("%c%c%c%c%c%c\n",
                    ($attr & 0x08) ? 'V' : '.',
                    ($attr & 0x10) ? 'D' : '.',
                    ($attr & 0x01) ? 'R' : '.',
                    ($attr & 0x02) ? 'H' : '.',
                    ($attr & 0x04) ? 'S' : '.',
                    ($attr & 0x20) ? 'A' : '.');
            break;
        case RAR_HOST_UNIX:
        case RAR_HOST_BEOS:
            switch ($attr & 0xF000)
            {
                case 0x4000:
                    printf("d");
                    break;
                case 0xA000:
                    printf("l");
                    break;
                default:
                    printf("-");
                    break;
            }
            printf("%c%c%c%c%c%c%c%c%c\n",
                    ($attr & 0x0100) ? 'r' : '-',
                    ($attr & 0x0080) ? 'w' : '-',
                    ($attr & 0x0040) ? (($attr & 0x0800) ? 's':'x'):(($attr & 0x0800) ? 'S':'-'),
                    ($attr & 0x0020) ? 'r' : '-',
                    ($attr & 0x0010) ? 'w' : '-',
                    ($attr & 0x0008) ? (($attr & 0x0400) ? 's':'x'):(($attr & 0x0400) ? 'S':'-'),
                    ($attr & 0x0004) ? 'r' : '-',
                    ($attr & 0x0002) ? 'w' : '-',
                    ($attr & 0x0001) ? 'x' : '-');
            break;
    }

    rar_close($rar_file);

    ?>

### Ayrıca Bakınız

- RarEntry::getHostOs() - Get entry host OS
- The constants in RarEntry

# RarEntry::getCrc

(PECL rar >= 0.1)

RarEntry::getCrc — Get CRC of the entry

### Açıklama

public function RarEntry::getCrc(): string

Returns an hexadecimal string representation of the CRC of the archive entry.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the CRC of the archive entry or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 2.0.0 | This method now returns correct values for multiple volume archives.

# RarEntry::getFileTime

(PECL rar >= 0.1)

RarEntry::getFileTime — Get entry last modification time

### Açıklama

public function RarEntry::getFileTime(): string

Gets entry last modification time.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns entry last modification time as string in format `YYYY-MM-DD HH:II:SS`, or `false` on error.

# RarEntry::getHostOs

(PECL rar >= 0.1)

RarEntry::getHostOs — Get entry host OS

### Açıklama

public function RarEntry::getHostOs(): int

Returns the code of the host OS of the archive entry.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the code of the host OS, or `false` on error.

### Örnekler

Örnek 1 RarEntry::getHostOs() example (version >= 2.0.0)

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    switch ($entry->getHostOs()) {
        case RarEntry::HOST_MSDOS:
            echo "MS-DOS\n";
            break;
        case RarEntry::HOST_OS2:
            echo "OS2\n";
            break;
        case RarEntry::HOST_WIN32:
            echo "Win32\n";
            break;
        case RarEntry::HOST_MACOS:
            echo "MacOS\n";
            break;
        case RarEntry::HOST_UNIX:
            echo "Unix/Linux\n";
            break;
        case RarEntry::HOST_BEOS:
            echo "BeOS\n";
            break;
    }

    ?>

Örnek 2 RarEntry::getHostOs() example (version <= 1.0.0)

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    switch ($entry->getHostOs()) {
        case RAR_HOST_MSDOS:
            echo "MS-DOS\n";
            break;
        case RAR_HOST_OS2:
            echo "OS2\n";
            break;
        case RAR_HOST_WIN32:
            echo "Win32\n";
            break;
        case RAR_HOST_MACOS:
            echo "MacOS\n";
            break;
        case RAR_HOST_UNIX:
            echo "Unix/Linux\n";
            break;
        case RAR_HOST_BEOS:
            echo "BeOS\n";
            break;
    }

    ?>

### Ayrıca Bakınız

- RarEntry::extract() - Extract entry from the archive

# RarEntry::getMethod

(PECL rar >= 0.1)

RarEntry::getMethod — Get pack method of the entry

### Açıklama

public function RarEntry::getMethod(): int

RarEntry::getMethod() returns number of the method used when adding current archive entry.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the method number or `false` on error.

### Örnekler

Örnek 1 RarEntry::getMethod() example

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    echo "Method number: " . $entry->getMethod();

    ?>

# RarEntry::getName

(PECL rar >= 0.1)

RarEntry::getName — Get name of the entry

### Açıklama

public function RarEntry::getName(): string

Returns the name (with path) of the archive entry.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the entry name as a string, or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 2.0.0 | As of version 2.0.0, the returned string is encoded in Unicode/UTF-8.

### Örnekler

Örnek 1 RarEntry::getName() example

    <?php

    //this example is safe even in pages not encoded in UTF-8
    //for those encoded in UTF-8, the call to mb_convert_encoding is unnecessary

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    echo "Entry name: " . mb_convert_encoding(
        htmlentities(
            $entry->getName(),
            ENT_COMPAT,
            "UTF-8"
        ),
        "HTML-ENTITIES",
        "UTF-8"
    );

    ?>

# RarEntry::getPackedSize

(PECL rar >= 0.1)

RarEntry::getPackedSize — Get packed size of the entry

### Açıklama

public function RarEntry::getPackedSize(): int

Get packed size of the archive entry.

> Bilginize: Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is capped at 2 GiB. Check the constant `PHP_INT_MAX`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the packed size, or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 2.0.0 | This method now returns correct values of packed sizes bigger than 2 GiB on platforms with 64-bit ints and never returns negative values on other platforms.

### Örnekler

Örnek 1 RarEntry::getPackedSize() example

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    echo "Packed size of " . $entry->getName() . " = " . $entry->getPackedSize() . " bytes";

    ?>

# RarEntry::getStream

(PECL rar >= 2.0.0)

RarEntry::getStream — Get file handler for entry

### Açıklama

public function RarEntry::getStream(string `$password` = ?): resource|false

Returns a file handler that supports read operations. This handler provides on-the-fly decompression for this entry.

The handler is not invalidated by calling rar_close().

Uyarı

The resulting stream has no integrity verification. In particular, file corruption and decryption with a wrong a key will not be detected. It is the programmer's responsability to use the entry's CRC to check for integrity, if he so wishes.

### Bağımsız Değişkenler

`password`
  The password used to encrypt this entry. If the entry is not encrypted, this value will not be used and can be omitted. If this parameter is omitted and the entry is encrypted, the password given to rar_open(), if any, will be used. If a wrong password is given, either explicitly or implicitly via rar_open(), this method's resulting stream will produce wrong output. If no password is given and one is required, this method will fail and return `false`. You can check whether an entry is encrypted with RarEntry::isEncrypted().

### Dönen Değerler

The file handler başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

### Örnekler

Örnek 1 RarEntry::getStream() example

    <?php

    $rar_file = rar_open('example.rar');
    if ($rar_file === false)
        die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt');
    if ($entry === false)
        die("Failed to find such entry");

    $stream = $entry->getStream();
    if ($stream === false)
        die("Failed to obtain stream.");

    rar_close($rar_file); //stream is independent from file

    while (!feof($stream)) {
        $buff = fread($stream, 8192);
        if ($buff !== false)
            echo $buff;
        else
            break; //fread error
    }

    fclose($stream);

    ?>

### Ayrıca Bakınız

- RarEntry::extract() - Extract entry from the archive
- `rar://` wrapper

# RarEntry::getUnpackedSize

(PECL rar >= 0.1)

RarEntry::getUnpackedSize — Get unpacked size of the entry

### Açıklama

public function RarEntry::getUnpackedSize(): int

Get unpacked size of the archive entry.

> Bilginize: Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is capped at 2 GiB. Check the constant `PHP_INT_MAX`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the unpacked size, or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rar 2.0.0 | This method now returns correct values of unpacked sizes bigger than 2 GiB on platforms with 64-bit ints and never returns negative values on other platforms.

### Dönen Değerler

Örnek 1 RarEntry::getUnpackedSize() example

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    echo "Unpacked size of " . $entry->getName() . " = " . $entry->getUnpackedSize() . " bytes";

    ?>

# RarEntry::getVersion

(PECL rar >= 0.1)

RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry

### Açıklama

public function RarEntry::getVersion(): int

Returns minimum version of RAR program (e.g. WinRAR) required to unpack the entry. It is encoded as 10 * major version + minor version.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the version or `false` on error.

### Örnekler

Örnek 1 RarEntry::getVersion() example

    <?php

    $rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

    $entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

    echo "Rar version required for unpacking: " . $entry->getVersion();

    ?>

# RarEntry::isDirectory

(PECL rar >= 2.0.0)

RarEntry::isDirectory — Test whether an entry represents a directory

### Açıklama

public function RarEntry::isDirectory(): bool

Tests whether the current entry is a directory.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this entry is a directory and `false` otherwise.

### Notlar

This function is only available starting with version 2.0.0, but one can also test whether an entry is a directory by checking the entry attributes, like this (only works for files compressed in RAR for Windows or Unix):

    <?php
    //...
    //Open file, get entry and store in variable $e...
    //...

    $isDirectory = (bool) ((($e->getHostOs() == RAR_HOST_WIN32) && ($e->getAttr() & 0x10)) ||
        (($e->getHostOs() == RAR_HOST_UNIX) && (($e->getAttr() & 0xf000) == 0x4000)));
    ?>

# RarEntry::isEncrypted

(PECL rar >= 2.0.0)

RarEntry::isEncrypted — Test whether an entry is encrypted

### Açıklama

public function RarEntry::isEncrypted(): bool

Tests whether the current entry contents are encrypted.

> Bilginize: The password used may differ between files inside the same RAR archive.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the current entry is encrypted and `false` otherwise.

# RarEntry::__toString

(PECL rar >= 2.0.0)

RarEntry::__toString — Get text representation of entry

### Açıklama

public function RarEntry::__toString(): string

RarEntry::__toString() returns a textual representation for this entry. It includes whether the entry is a file or a directory (symbolic links and other special objects will be treated as files), the UTF-8 name of the entry and its CRC. The form and content of this representation may be changed in the future, so they cannot be relied upon.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A textual representation for the entry.

## İçindekiler

- RarEntry::extract — Extract entry from the archive
- RarEntry::getAttr — Get attributes of the entry
- RarEntry::getCrc — Get CRC of the entry
- RarEntry::getFileTime — Get entry last modification time
- RarEntry::getHostOs — Get entry host OS
- RarEntry::getMethod — Get pack method of the entry
- RarEntry::getName — Get name of the entry
- RarEntry::getPackedSize — Get packed size of the entry
- RarEntry::getStream — Get file handler for entry
- RarEntry::getUnpackedSize — Get unpacked size of the entry
- RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry
- RarEntry::isDirectory — Test whether an entry represents a directory
- RarEntry::isEncrypted — Test whether an entry is encrypted
- RarEntry::__toString — Get text representation of entry

# The RarException class

(PECL rar >= 2.0.0)

## Giriş

This class serves two purposes: it is the type of the exceptions thrown by the RAR extension functions and methods and it allows, through static methods to query and define the error behaviour of the extension, i.e., whether exceptions are thrown or only warnings are emitted.

The following error codes are used:

- -1 - error outside UnRAR library
- 11 - insufficient memory
- 12 - bad data
- 13 - bad archive
- 14 - unknown format
- 15 - file open error
- 16 - file create error
- 17 - file close error
- 18 - read error
- 19 - write error
- 20 - buffer too small
- 21 - unknown RAR error
- 22 - password required but not given

## Sınıf Sözdizimi

final class RarException extends Exception {
/* Yöntemler */
public static function isUsingExceptions(): bool
public static function setUsingExceptions(bool `$using_exceptions`): void
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# RarException::isUsingExceptions

(PECL rar >= 2.0.0)

RarException::isUsingExceptions — Check whether error handling with exceptions is in use

### Açıklama

public static function RarException::isUsingExceptions(): bool

Checks whether the RAR functions will emit warnings and return error values or whether they will throw exceptions in most of the circumstances (does not include some programmatic errors such as passing the wrong type of arguments).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if exceptions are being used, `false` otherwise.

### Örnekler

Örnek 1 RarException::isUsingExceptions() example

    <?php
    //The default is not to use exceptions
    var_dump(RarException::isUsingExceptions());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(false)

### Ayrıca Bakınız

- RarException::setUsingExceptions() - Activate and deactivate error handling with exceptions

# RarException::setUsingExceptions

(PECL rar >= 2.0.0)

RarException::setUsingExceptions — Activate and deactivate error handling with exceptions

### Açıklama

public static function RarException::setUsingExceptions(bool `$using_exceptions`): void

If and only if the argument is `true`, then, instead of emitting warnings and returning a special value indicating error when the UnRAR library encounters an error, an exception of type RarException will be thrown.

Exceptions will also be thrown for the following errors, which occur outside the library (their error code will be -1):

- attempting some operations on a closed RarArchive object or a RarEntry object relative to the first;
- attempting to get an entry that does not exist with RarArchive::getEntry().

### Bağımsız Değişkenler

`using_exceptions`
  Should be `true` to activate exception throwing, `false` to deactivate (the default).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 RarException::setUsingExceptions() example

    <?php
    var_dump(RarException::isUsingExceptions());
    $arch = RarArchive::open("does_not_exist.rar");
    var_dump($arch);

    RarException::setUsingExceptions(true);
    var_dump(RarException::isUsingExceptions());
    $arch = RarArchive::open("does_not_exist.rar");
    var_dump($arch); //not reached
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(false)

    Warning: RarArchive::open(): Failed to open does_not_exist.rar: ERAR_EOPEN (file open error) in C:\php_rar\trunk\tests\test.php on line 3
    bool(false)
    bool(true)

    Fatal error: Uncaught exception 'RarException' with message 'unRAR internal error: Failed to open does_not_exist.rar: ERAR_EOPEN (file open error)' in C:\php_rar\trunk\tests\test.php:8
    Stack trace:
    #0 C:\php_rar\trunk\tests\test.php(8): RarArchive::open('does_not_exist....')
    #1 {main}
      thrown in C:\php_rar\trunk\tests\test.php on line 8

### Ayrıca Bakınız

- RarException::isUsingExceptions() - Check whether error handling with exceptions is in use

## İçindekiler

- RarException::isUsingExceptions — Check whether error handling with exceptions is in use
- RarException::setUsingExceptions — Activate and deactivate error handling with exceptions

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- Rar İşlevleri
  - rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper
- RarArchive — The RarArchive class
  - RarArchive::close — Close RAR archive and free all resources
  - RarArchive::getComment — Get comment text from the RAR archive
  - RarArchive::getEntries — Get full list of entries from the RAR archive
  - RarArchive::getEntry — Get entry object from the RAR archive
  - RarArchive::isBroken — Test whether an archive is broken (incomplete)
  - RarArchive::isSolid — Check whether the RAR archive is solid
  - RarArchive::open — Open RAR archive
  - RarArchive::setAllowBroken — Whether opening broken archives is allowed
  - RarArchive::__toString — Get text representation
- RarEntry — The RarEntry class
  - RarEntry::extract — Extract entry from the archive
  - RarEntry::getAttr — Get attributes of the entry
  - RarEntry::getCrc — Get CRC of the entry
  - RarEntry::getFileTime — Get entry last modification time
  - RarEntry::getHostOs — Get entry host OS
  - RarEntry::getMethod — Get pack method of the entry
  - RarEntry::getName — Get name of the entry
  - RarEntry::getPackedSize — Get packed size of the entry
  - RarEntry::getStream — Get file handler for entry
  - RarEntry::getUnpackedSize — Get unpacked size of the entry
  - RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry
  - RarEntry::isDirectory — Test whether an entry represents a directory
  - RarEntry::isEncrypted — Test whether an entry is encrypted
  - RarEntry::__toString — Get text representation of entry
- RarException — The RarException class
  - RarException::isUsingExceptions — Check whether error handling with exceptions is in use
  - RarException::setUsingExceptions — Activate and deactivate error handling with exceptions

# Zip

# Giriş

Bu eklenti, sıkıştırılmış ZIP arşivlerini ve içindeki dosyaları şeffaf olarak okuyup yazmayı etkin kılar.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

Bu eklenti » libzip kütüphanesini gerektirir. PHP 7.3'e kadar 1.1.12 sürümü PHP paketinde gelirdi

Desteklenen en küçük sürüm 0.11'dir, ancak daha yüksek sürümler önerilir.

- Şifreleme desteği için 1.2 sürümü gerekir, bkz: ZipArchive::setEncryptionIndex()
- İlerleme desteği için 1.3 sürümü gerekir, bkz: ZipArchive::registerProgressCallback()
- İptal desteği için 1.6 sürümü gerekir, bkz: ZipArchive::registerCancelCallback()

## Kurulum

## Linux sistemleri

Bu işlevleri kullanmak için PHP'nin --with-zip yapılandırma seçeneği kullanılarak zip desteğiyle derlenmesi gerekir.

PHP 7.4.0 öncesinde libzip PHP paketinin içinde gelirdi ve eklentinin derlenmesi --enable-zip yapılandırma seçeneğiyle sağlanırdı.

PHP 7.3.0 ve sonrasında, PHP paketinde gelen libzip kullanılarak derleme önerilmemekte olup yapılandırmaya --without-libzip seçeneği eklenerek bu sağlanabilir.

Sistem libzip kurulumunu kullanmak için --with-libzip=DİZİN yapılandırma seçeneği eklenmiştir. Libzip 0.11 gerekli olup, 0.11.2 ve sonrasının kullanımı önerilir.

## Windows

PHP 8.2.0 ve sonrasında, php_zip.dll php.ini içinde etkin olmalıdır. Evvelce bu eklenti yerleşikti.

## PECL üzerinden kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/zip.

## Özkaynak Türleri

Zip modülünde kullanılan iki özkaynak türü vardır. İlki, Zip arşivi için Zip dizini, ikincisi ise arşiv girdileri için Zip Girdisi'dir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

ZipArchive, sınıf sabitleri kullanır. Çeşitli sabitler vardır. Bazıları: Seçenekler (`FL_` önekli), Küresel seçenekler (`AFL_` önekli), hatalar (`ER_` önekli) ve kipler (öneksiz).

`ZipArchive::CREATE` (int)
  Bir arşiv yoksa oluşturur.
`ZipArchive::OVERWRITE` (int)
  Arşiv mevcutsa, o anki içeriği yoksayılır. Başka bir deyişle, daima boş bir arşiv başlatır.
`ZipArchive::EXCL` (int)
  Arşiv mevcutsa hata verir.
`ZipArchive::RDONLY` (int)
  Arşiv salt-okunur kipte açılır. libzip ≥ 1.0.0 ile derlenmişse PHP 7.4.3 ve PECL zip 1.17.1 itibariyle kullanılabilir.
`ZipArchive::CHECKCONS` (int)
  Arşiv üzerinde ek tutarlılık sınamaları yapar; sınamalar başarısız olursa hata verir.

Küresel Arşiv Seçenekleri
`ZipArchive::AFL_RDONLY` (int)
  Arşiv salt-okunur, silinemez. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.
`ZipArchive::AFL_IS_TORRENTZIP` (int)
  Geçerli arşiv torrentzip'li. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.
`ZipArchive::AFL_WANT_TORRENTZIP` (int)
  Arşiv torrentzip'li yazılır. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.
`ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE` (int)
  Arşiv boşsa arşiv dosyası silinmez. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.

Arşiv Seçenekleri
`ZipArchive::FL_NOCASE` (int)
  İsim aramasında harf büyüklüğü dikkate alınmaz.
`ZipArchive::FL_NODIR` (int)
  Dizin bileşeni yok sayılır.
`ZipArchive::FL_COMPRESSED` (int)
  Sıkıştırılmış veri okunur.
`ZipArchive::FL_UNCHANGED` (int)
  Özgün veri kullanılır, değişiklikler dikkate alınmaz.
`ZipArchive::FL_RECOMPRESS` (int)
  Verinin yeniden sıkıştırlmasını zorlar. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir. PHP 8.3.0 ve PECL zip 1.22.0 itibariyle önerilmemekte olup gelecek libzip sürümlerinden birinde kaldırılacaktır.
`ZipArchive::FL_ENCRYPTED` (int)
  Şifreli veri okunur (FL_COMPRESSED uygulanır). PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir.
`ZipArchive::FL_OVERWRITE` (int)
  İsmi belirtilen dosya mevcutsa, üzerine yazılır. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir.
`ZipArchive::FL_LOCAL` (int)
  Yerel başlıkta. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir.
`ZipArchive::FL_CENTRAL` (int)
  Merkezî dizinde. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir.
`ZipArchive::FL_ENC_GUESS` (int)
  Dizge kodlaması tahmin edilir (öntanımlıdır). PHP 7.0.8 ve sonrasında geçerlidir.
`ZipArchive::FL_ENC_RAW` (int)
  Değiştirilmemiş dizge döner. PHP 7.0.8 ve sonrasında geçerlidir.
`ZipArchive::FL_ENC_STRICT` (int)
  Kesinlikle belirtime uyulur. PHP 7.0.8 ve sonrasında geçerlidir.
`ZipArchive::FL_ENC_UTF_8` (int)
  Dizge UTF-8 kodludur. PHP 7.0.8 ve sonrasında geçerlidir.
`ZipArchive::FL_ENC_CP437` (int)
  Dizge CP437 kodludur. PHP 7.0.8 ve sonrasında geçerlidir.
`ZipArchive::FL_OPEN_FILE_NOW` (int)
  Arşivin kapanmasını beklemek yerine, eklendiğinde dosyayı açar. Dosya tanıtıcı tüketiminin farkında olunur. PHP 8.3.0 ve PECL zip 1.22.1 ve sonrasında geçerlidir.

Sıkıştırma Kipleri
`ZipArchive::CM_DEFAULT` (int)
  Sıkıştırmak veya saklamaktan daha iyisi.
`ZipArchive::CM_STORE` (int)
  Sıkıştırmasız.
`ZipArchive::CM_SHRINK` (int)
  Sıkıştırmalı.
`ZipArchive::CM_REDUCE_1` (int)
  1 çarpanıyla küçültülmüş.
`ZipArchive::CM_REDUCE_2` (int)
  2 çarpanıyla küçültülmüş.
`ZipArchive::CM_REDUCE_3` (int)
  3 çarpanıyla küçültülmüş.
`ZipArchive::CM_REDUCE_4` (int)
  4 çarpanıyla küçültülmüş.
`ZipArchive::CM_IMPLODE` (int)
  Implode biçemli sıkıştırılmış.
`ZipArchive::CM_DEFLATE` (int)
  Deflate biçemli sıkıştırılmış.
`ZipArchive::CM_DEFLATE64` (int)
  Deflate64 biçemli sıkıştırılmış.
`ZipArchive::CM_PKWARE_IMPLODE` (int)
  PKWARE implode biçemli sıkıştırılmış.
`ZipArchive::CM_BZIP2` (int)
  BZIP2 algoritmasıyla sıkıştırılmış.
`ZipArchive::CM_LZMA` (int)
  LZMA algoritması.
`ZipArchive::CM_LZMA2` (int)
  LZMA2 algoritması. libzip ≥ 1.6.0 ile derlenmişse PHP 7.4.3 ve PECL zip 1.16.0 itibariyle kullanılabilir.
`ZipArchive::CM_ZSTD` (int)
  Zstandard algoritması. libzip ≥ 1.8.0 ile derlenmişse PHP 8.0.0 ve PECL zip 1.19.1 itibariyle kullanılabilir.
`ZipArchive::CM_XZ` (int)
  XZ algoritması. libzip ≥ 1.6.0 ile derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::CM_TERSE` (int)
`ZipArchive::CM_LZ77` (int)
`ZipArchive::CM_WAVPACK` (int)
`ZipArchive::CM_PPMD` (int)

Hatalar
`ZipArchive::ER_OK` (int)
  Hata yok.
`ZipArchive::ER_MULTIDISK` (int)
  Çok diskli zip arşivleri desteklenmiyor.
`ZipArchive::ER_RENAME` (int)
  Geçici dosyanın ismi değiştirilemedi.
`ZipArchive::ER_CLOSE` (int)
  Zip arşivi kapatılamadı.
`ZipArchive::ER_SEEK` (int)
  Konumlama hatası.
`ZipArchive::ER_READ` (int)
  Okuma hatası.
`ZipArchive::ER_WRITE` (int)
  Yazma hatası.
`ZipArchive::ER_CRC` (int)
  CRC hatası
`ZipArchive::ER_ZIPCLOSED` (int)
  İçerilen zip arşivi kapalı.
`ZipArchive::ER_NOENT` (int)
  Böyle bir dosya yok.
`ZipArchive::ER_EXISTS` (int)
  Dosya zaten var.
`ZipArchive::ER_OPEN` (int)
  Dosya açılamadı.
`ZipArchive::ER_TMPOPEN` (int)
  Geçici dosya oluşturulamadı.
`ZipArchive::ER_ZLIB` (int)
  Zlib hatası.
`ZipArchive::ER_MEMORY` (int)
  Bellek ayırmada başarısızlık.
`ZipArchive::ER_CHANGED` (string)
  Girdi değişmiş.
`ZipArchive::ER_COMPNOTSUPP` (int)
  Sıkıştırma yöntemi desteklenmiyor.
`ZipArchive::ER_EOF` (int)
  Dosya sonu eksik.
`ZipArchive::ER_INVAL` (int)
  Geçersiz bağımsız değişken.
`ZipArchive::ER_NOZIP` (int)
  Bir zip arşivi değil.
`ZipArchive::ER_INTERNAL` (int)
  Dahili hata.
`ZipArchive::ER_INCONS` (int)
  Zip arşivi tutarsız.
`ZipArchive::ER_REMOVE` (int)
  Dosya silinemedi.
`ZipArchive::ER_DELETED` (int)
  Girdi silinmiş.
`ZipArchive::ER_ENCRNOTSUPP` (int)
  Şifreleme yöntemi desteklenmiyor. PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_RDONLY` (int)
  Salt-okunur arşiv. PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_NOPASSWD` (int)
  Parola girilmedi. PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_WRONGPASSWD` (int)
  Yanlış parola girildi. PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_OPNOTSUPP` (int)
  İşlem desteklenmiyor. libzip ≥ 1.0.0 desteğiyle derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_INUSE` (int)
  Özkaynak hala kullanımda. libzip ≥ 1.0.0 desteğiyle derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_TELL` (int)
  Tell hatası. libzip ≥ 1.0.0 desteğiyle derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_COMPRESSED_DATA` (int)
  Sıkıştırlmış veri geçersiz. libzip ≥ 1.6.0 desteğiyle derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_CANCELLED` (int)
  İşlem iptal edildi. libzip ≥ 1.6.0 desteğiyle derlenmişse PHP 7.4.3 ve PECL zip 1.16.1 itibariyle kullanılabilir.
`ZipArchive::ER_DATA_LENGTH` (int)
  Beklenmedik uzunlukta veri. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.
`ZipArchive::ER_NOT_ALLOWED` (int)
  torrentzip için izin verilmez. libzip ≥ 1.10.0 destekli PHP 8.3.0 ve PECL zip 1.22.0 sürümlerinde ve sonrasında kullanılabilir.

Şifreleme Kipleri
`ZipArchive::EM_NONE` (int)
  Şifreleme yok. PHP 7.2.0 ve PECL zip 1.14.0 itibariyle kullanılabilir.
`ZipArchive::EM_TRAD_PKWARE` (int)
  Geleneksel PKWARE şifrelemesi. PHP 8.0.0 ve PECL zip 1.19.0 itibariyle kullanılabilir.
`ZipArchive::EM_AES_128` (int)
  AES 128 şifrelemesi. libzip ≥ 1.2.0 desteğiyle derlenmişse PHP 7.2.0 ve PECL zip 1.14.0 itibariyle kullanılabilir.
`ZipArchive::EM_AES_192` (int)
  AES 192 şifrelemesi. libzip ≥ 1.2.0 desteğiyle derlenmişse PHP 7.2.0 ve PECL zip 1.14.0 itibariyle kullanılabilir.
`ZipArchive::EM_AES_256` (int)
  AES 256 şifrelemesi. libzip ≥ 1.2.0 desteğiyle derlenmişse PHP 7.2.0 ve PECL zip 1.14.0 itibariyle kullanılabilir.
`ZipArchive::EM_UNKNOWN` (int)
  Bilinmeyen şifreleme algoritması. PHP 8.0.0 ve PECL zip 1.19.0 itibariyle kullanılabilir.

Uzunluk girdi sabitleri
`ZipArchive::LENGTH_TO_END` (int)
  Dosya boyutu kullanılır, dosya büyürse ek veriler göz ardı edilir, dosya küçülürse hata ortaya çıkar (`ZipArchive::ER_DATA_LENGTH`). PHP 8.3.0 ve PECL zip 1.22.2 itibariyle kullanılabilir.
`ZipArchive::LENGTH_UNCHECKED` (int)
  Kullanılabilecek tüm veri kullanılır. Derleme libzip ≥ 1.10.1 kullanarak yapılmışsa PHP 8.3.0 ve PECL zip 1.22.2 itibariyle kullanılabilir.

Diğer Sabitler
`ZipArchive::LIBZIP_VERSION` (string)
  Zip kütüphanesi sürümü. PHP 7.4.3 ve PECL zip 1.16.0 itibariyle kullanılabilir.

Harici Öznitelikler için İşletim Sistemi Sabitleri
`ZipArchive::OPSYS_DOS` (int)
`ZipArchive::OPSYS_AMIGA` (int)
`ZipArchive::OPSYS_OPENVMS` (int)
`ZipArchive::OPSYS_UNIX` (int)
`ZipArchive::OPSYS_VM_CMS` (int)
`ZipArchive::OPSYS_ATARI_ST` (int)
`ZipArchive::OPSYS_OS_2` (int)
`ZipArchive::OPSYS_MACINTOSH` (int)
`ZipArchive::OPSYS_Z_SYSTEM` (int)
`ZipArchive::OPSYS_CPM` (int)
`ZipArchive::OPSYS_WINDOWS_NTFS` (int)
`ZipArchive::OPSYS_MVS` (int)
`ZipArchive::OPSYS_VSE` (int)
`ZipArchive::OPSYS_ACORN_RISC` (int)
`ZipArchive::OPSYS_VFAT` (int)
`ZipArchive::OPSYS_ALTERNATE_MVS` (int)
`ZipArchive::OPSYS_BEOS` (int)
`ZipArchive::OPSYS_TANDEM` (int)
`ZipArchive::OPSYS_OS_400` (int)
`ZipArchive::OPSYS_OS_X` (int)
`ZipArchive::OPSYS_DEFAULT` (int)
  PECL zip 1.12.4 itibariyle kullanılabilir

# Örnekler

Örnek 1 - Bir Zip arşivi oluşturmak

    <?php

    $zip = new ZipArchive();
    $filename = "./test112.zip";

    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
        exit("<$filename> açılamadı\n");
    }

    $zip->addFromString("testfilephp.txt" . time(),
        "#1 Bu, testfilephp.txt olarak eklenen bir deneme dizgesidir.\n");
    $zip->addFromString("testfilephp2.txt" . time(),
        "#2 Bu, testfilephp2.txt olarak eklenen bir deneme dizgesidir.\n");
    $zip->addFile($thisdir . "/too.php","/testfromfile.php");
    echo "dosya sayısı: " . $zip->numFiles . "\n";
    echo "durum:" . $zip->status . "\n";
    $zip->close();
    ?>

Örnek 2 - Arşiv bilgilerinin dökümü ve listelenmesi

    <?php
    $za = new ZipArchive();

    $za->open('test_with_comment.zip');
    print_r($za);
    var_dump($za);
    echo "Dosya sayısı: " . $za->numFiles . "\n";
    echo "Durumu: " . $za->status  . "\n";
    echo "Sistem durumu: " . $za->statusSys . "\n";
    echo "Dosya ismi: " . $za->filename . "\n";
    echo "Açıklama: " . $za->comment . "\n";

    for ($i=0; $i<$za->numFiles;$i++) {
        echo "İndis: $i\n";
        print_r($za->statIndex($i));
    }
    echo "Dosya sayısı:" . $za->numFiles . "\n";
    ?>

Örnek 3 - Zip akım sarmalayıcı; bir OpenOffice meta bilgisini okur

    <?php
    $reader = new XMLReader();

    $reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml');
    $odt_meta = array();
    while ($reader->read()) {
        if ($reader->nodeType == XMLREADER::ELEMENT) {
            $elm = $reader->name;
        } else {
            if ($reader->nodeType == XMLREADER::END_ELEMENT &&
              $reader->name == 'office:meta') {
                break;
            }
            if (!trim($reader->value)) {
                continue;
            }
            $odt_meta[$elm] = $reader->value;
        }
    }
    print_r($odt_meta);
    ?>

Bu örnekte PHP 4'teki eski eklenti kullanılmıştır. Bir zip dosya arşivi açılmakta, arşivdeki her dosya okunup içeriği basılmaktadır. Bu örnekte ZZIPlib kaynak paketiyle dağıtılan deneme arşivlerinden test2.zip dosyası kullanılmıştır.

Örnek 4 - Zip kullanım örneği (PHP 4)

    <?php

    $zip = zip_open("/tmp/test2.zip");

    if ($zip) {
        while ($zip_entry = zip_read($zip)) {
            echo "İsim:                " .
              zip_entry_name($zip_entry) . "\n";
            echo "Özgün dosya boyu:    " .
              zip_entry_filesize($zip_entry) . "\n";
            echo "Sıkıştırılmış boyut: " .
              zip_entry_compressedsize($zip_entry) . "\n";
            echo "Sıkıştırma yöntemi:  " .
              zip_entry_compressionmethod($zip_entry) . "\n";

            if (zip_entry_open($zip, $zip_entry, "r")) {
                echo "Dosya içeriği:\n";
                $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                echo "$buf\n";

                zip_entry_close($zip_entry);
            }
            echo "\n";

        }

        zip_close($zip);

    }
    ?>

# ZipArchive sınıfı

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

## Giriş

Zip ile sıkıştırılmış bir dosya arşivi.

## Sınıf Sözdizimi

class ZipArchive implements Countable {
/* Sabitler */
public const int CREATE;
public const int EXCL;
public const int CHECKCONS;
public const int OVERWRITE;
public const int RDONLY;
public const int FL_NOCASE;
public const int FL_NODIR;
public const int FL_COMPRESSED;
public const int FL_UNCHANGED;
public const int FL_RECOMPRESS;
public const int FL_ENCRYPTED;
public const int FL_OVERWRITE;
public const int FL_LOCAL;
public const int FL_CENTRAL;
public const int FL_ENC_GUESS;
public const int FL_ENC_RAW;
public const int FL_ENC_STRICT;
public const int FL_ENC_UTF_8;
public const int FL_ENC_CP437;
public const int FL_OPEN_FILE_NOW;
public const int CM_DEFAULT;
public const int CM_STORE;
public const int CM_SHRINK;
public const int CM_REDUCE_1;
public const int CM_REDUCE_2;
public const int CM_REDUCE_3;
public const int CM_REDUCE_4;
public const int CM_IMPLODE;
public const int CM_DEFLATE;
public const int CM_DEFLATE64;
public const int CM_PKWARE_IMPLODE;
public const int CM_BZIP2;
public const int CM_LZMA;
public const int CM_LZMA2;
public const int CM_ZSTD;
public const int CM_XZ;
public const int CM_TERSE;
public const int CM_LZ77;
public const int CM_WAVPACK;
public const int CM_PPMD;
public const int ER_OK;
public const int ER_MULTIDISK;
public const int ER_RENAME;
public const int ER_CLOSE;
public const int ER_SEEK;
public const int ER_READ;
public const int ER_WRITE;
public const int ER_CRC;
public const int ER_ZIPCLOSED;
public const int ER_NOENT;
public const int ER_EXISTS;
public const int ER_OPEN;
public const int ER_TMPOPEN;
public const int ER_ZLIB;
public const int ER_MEMORY;
public const int ER_CHANGED;
public const int ER_COMPNOTSUPP;
public const int ER_EOF;
public const int ER_INVAL;
public const int ER_NOZIP;
public const int ER_INTERNAL;
public const int ER_INCONS;
public const int ER_REMOVE;
public const int ER_DELETED;
public const int ER_ENCRNOTSUPP;
public const int ER_RDONLY;
public const int ER_NOPASSWD;
public const int ER_WRONGPASSWD;
public const int ER_OPNOTSUPP;
public const int ER_INUSE;
public const int ER_TELL;
public const int ER_COMPRESSED_DATA;
public const int ER_CANCELLED;
public const int ER_DATA_LENGTH;
public const int ER_NOT_ALLOWED;
public const int AFL_RDONLY;
public const int AFL_IS_TORRENTZIP;
public const int AFL_WANT_TORRENTZIP;
public const int AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE;
public const int OPSYS_DOS;
public const int OPSYS_AMIGA;
public const int OPSYS_OPENVMS;
public const int OPSYS_UNIX;
public const int OPSYS_VM_CMS;
public const int OPSYS_ATARI_ST;
public const int OPSYS_OS_2;
public const int OPSYS_MACINTOSH;
public const int OPSYS_Z_SYSTEM;
public const int OPSYS_CPM;
public const int OPSYS_WINDOWS_NTFS;
public const int OPSYS_MVS;
public const int OPSYS_VSE;
public const int OPSYS_ACORN_RISC;
public const int OPSYS_VFAT;
public const int OPSYS_ALTERNATE_MVS;
public const int OPSYS_BEOS;
public const int OPSYS_TANDEM;
public const int OPSYS_OS_400;
public const int OPSYS_OS_X;
public const int OPSYS_DEFAULT;
public const int EM_NONE;
public const int EM_TRAD_PKWARE;
public const int EM_AES_128;
public const int EM_AES_192;
public const int EM_AES_256;
public const int EM_UNKNOWN;
public const string LIBZIP_VERSION;
public const int LENGTH_TO_END;
public const int LENGTH_UNCHECKED;
/* Özellikler */
public readonly int $lastId;
public readonly int $status;
public readonly int $statusSys;
public readonly int $numFiles;
public readonly string $filename;
public readonly string $comment;
/* Yöntemler */
public function addEmptyDir(string `$dizin`, int `$seçenekler` = 0): bool
public function addFile(
string `$dosyayolu`,
string `$girdiadı` = "",
int `$başlangıç` = 0,
int `$uzunluk` = ZipArchive::LENGTH_TO_END,
int `$seçenekler` = ZipArchive::FL_OVERWRITE
): bool
public function addFromString(string `$isim`, string `$içerik`, int `$seçenekler` = ZipArchive::FL_OVERWRITE): bool
public function addGlob(string `$pattern`, int `$flags` = 0, array `$options` = []): array|false
public function addPattern(string `$pattern`, string `$path` = ".", array `$options` = []): array|false
public function clearError(): void
public function close(): bool
public function count(): int
public function deleteIndex(int `$indis`): bool
public function deleteName(string `$isim`): bool
public function extractTo(string `$hedef`, array|string|null `$girdiler` = `null`): bool
public function getArchiveComment(int `$seçenekler` = 0): string|false
public function getArchiveFlag(int `$flag`, int `$flags` = 0): int
public function getCommentIndex(int `$indis`, int `$seçenekler` = 0): string|false
public function getCommentName(string `$isim`, int `$seçenekler` = 0): string|false
public function getExternalAttributesIndex(
int `$index`,
int `&$opsys`,
int `&$attr`,
int `$flags` = 0
): bool
public function getExternalAttributesName(
string `$name`,
int `&$opsys`,
int `&$attr`,
int `$flags` = 0
): bool
public function getFromIndex(int `$indis`, int `$uzunluk` = 0, int `$seçenekler` = 0): string|false
public function getFromName(string `$isim`, int `$uzunluk` = 0, int `$seçenekler` = 0): string|false
public function getNameIndex(int `$indis`, int `$seçenekler` = 0): string|false
public function getStatusString(): string
public function getStream(string `$isim`): resource|false
public function getStreamIndex(int `$index`, int `$flags` = 0): resource|false
public function getStreamName(string `$name`, int `$flags` = 0): resource|false
public static function isCompressionMethodSupported(int `$method`, bool `$enc` = `true`): bool
public static function isEncryptionMethodSupported(int `$method`, bool `$enc` = `true`): bool
public function locateName(string `$isim`, int `$seçenekler` = 0): int|false
public function open(string `$dosya`, int `$seçenekler` = 0): bool|int
public function registerCancelCallback(callable `$callback`): bool
public function registerProgressCallback(float `$rate`, callable `$callback`): bool
public function renameIndex(int `$indis`, string `$yeni_isim`): bool
public function renameName(string `$isim`, string `$yenisi`): bool
public function replaceFile(
string `$filepath`,
int `$index`,
int `$start` = 0,
int `$length` = `ZipArchive::LENGTH_TO_END`,
int `$flags` = 0
): bool
public function setArchiveComment(string `$açıklama`): bool
public function setArchiveFlag(int `$flag`, int `$value`): bool
public function setCommentIndex(int `$indis`, string `$açıklama`): bool
public function setCommentName(string `$isim`, string `$açıklama`): bool
public function setCompressionIndex(int `$index`, int `$method`, int `$compflags` = 0): bool
public function setCompressionName(string `$name`, int `$method`, int `$compflags` = 0): bool
public function setEncryptionIndex(int `$index`, int `$method`, #[\SensitiveParameter]?string `$password` = `null`): bool
public function setEncryptionName(string `$name`, int `$method`, #[\SensitiveParameter]?string `$password` = `null`): bool
public function setExternalAttributesIndex(
int `$index`,
int `$opsys`,
int `$attr`,
int `$flags` = 0
): bool
public function setExternalAttributesName(
string `$name`,
int `$opsys`,
int `$attr`,
int `$flags` = 0
): bool
public function setMtimeIndex(int `$index`, int `$timestamp`, int `$flags` = 0): bool
public function setMtimeName(string `$name`, int `$timestamp`, int `$flags` = 0): bool
public function setPassword(#[\SensitiveParameter]string `$password`): bool
public function statIndex(int `$indis`, int `$seçenekler` = 0): array|false
public function statName(string `$isim`, int `$seçenekler` = 0): array|false
public function unchangeAll(): bool
public function unchangeArchive(): bool
public function unchangeIndex(int `$indis`): bool
public function unchangeName(string `$isim`): bool
}

## Özellikler

lastId

  Son eklenen girdinin (dosya veya dizin) indis değeri. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kullanılabilir.

status

  Zip Arşivinin durumu. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kapalı arşiv için kullanılabilir.

statusSys

  Zip Arşivinin sistem durumu. PHP 8.0.0 ve PECL zip 1.18.0 itibariyle kapalı arşiv için kullanılabilir.

numFiles

  Arşivdeki dosya sayısı

filename

  Dosya sistemindeki dosya ismi

comment

  Arşivle ilgili açıklama

# ZipArchive::addEmptyDir

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.8.0)

ZipArchive::addEmptyDir — Yeni bir dizin ekler

### Açıklama

public function ZipArchive::addEmptyDir(string `$dizin`, int `$seçenekler` = 0): bool

Arşive boş bir dizin ekler.

### Bağımsız Değişkenler

`dizin`

  Eklenecek dizinin ismi.

`seçenekler`

  `ZipArchive::FL_ENC_GUESS`, `ZipArchive::FL_ENC_UTF_8`, `ZipArchive::FL_ENC_CP437` sabitlerinin bit maskesi. Bu sabitlerin davranışı ZIP sabitleri sayfasında açıklanmıştır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 / 1.18.0 | `seçenekler` eklendi.

### Örnekler

Örnek 1 - Bir arşivde boş bir dizin oluşturmak

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        if($zip->addEmptyDir('newDirectory')) {
            echo 'Kök dizin oluşturuldu';
        } else {
            echo 'Dizin oluşturulamadı';
        }
        $zip->close();
    } else {
        echo 'başarısız';
    }
    ?>

# ZipArchive::addFile

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::addFile — Yolu belirtilen dosyayı arşive ekler

### Açıklama

public function ZipArchive::addFile(
string `$dosyayolu`,
string `$girdiadı` = "",
int `$başlangıç` = 0,
int `$uzunluk` = ZipArchive::LENGTH_TO_END,
int `$seçenekler` = ZipArchive::FL_OVERWRITE
): bool

Yolu belirtilen dosyayı arşive ekler.

> Bilginize: Taşınabilirliği arttırmak için ZIP dosya isimlerinde dizin ayracı olarak bölü çizgilerini (`/`) kullanın.

### Bağımsız Değişkenler

`dosyayolu`

  Eklenecek dosyanın yolu.

`girdiadı`

  Belirtilmişse ve boş değilse dosyanın ZIP arşivi içindeki ismi olup `dosyayolu`nu geçersiz kılar.

`başlangıç`

  Kısmi kopya için başlangıç konumu.

`uzunluk`

  Kısmi kopya için kopyalanan uzunluk; `ZipArchive::LENGTH_TO_END` (0) ise dosya boyutu, `ZipArchive::LENGTH_UNCHECKED` ise dosyanın tamamı kullanılır.

`seçenekler`

  `ZipArchive::FL_OVERWRITE`, `ZipArchive::FL_ENC_GUESS`, `ZipArchive::FL_ENC_UTF_8`, `ZipArchive::FL_ENC_CP437`, `ZipArchive::FL_OPEN_FILE_NOW` sabitlerinin bit maskesi. Bu sabitlerin davranışı ZIP sabitleri sayfasında açıklanmıştır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 / 1.22.1 | `ZipArchive::FL_OPEN_FILE_NOW` eklendi.
8.3.0 / 1.22.2 | `ZipArchive::LENGTH_TO_END` ve `ZipArchive::LENGTH_UNCHECKED`sabiti eklendi.
8.0.0 / 1.18.0 | `seçenekler` eklendi.

### Örnekler

Bu örnekte test.zip adında bir ZIP arşivi açılıp /path/to/index.txt dosyası newname.txt ismiyle arşive eklenmektedir.

Örnek 1 - Aç ve ekle

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->addFile('/path/to/index.txt', 'newname.txt');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

### Notlar

> Bilginize:

> Bir dosya arşive eklenecekse, PHP dosyayı kilitler. Kilit, yalnızca ZipArchive nesnesi kapatıldığında, ZipArchive::close() veya ZipArchive nesnesi yok edildiğinde serbest bırakılır. Kilit serbest bırakılana kadar eklenen dosyayı silmeniz engellenebilir.

### Ayrıca Bakınız

- ZipArchive::replaceFile() - Replace file in ZIP archive with a given path

# ZipArchive::addFromString

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::addFromString — İsmi ve içeriği belirtilen dosyayı arşive ekler

### Açıklama

public function ZipArchive::addFromString(string `$isim`, string `$içerik`, int `$seçenekler` = ZipArchive::FL_OVERWRITE): bool

İsmi ve içeriği belirtilen dosyayı arşive ekler.

> Bilginize: Taşınabilirliği arttırmak için ZIP dosya isimlerinde dizin ayracı olarak bölü çizgilerini (`/`) kullanın.

### Bağımsız Değişkenler

`isim`

  Oluşturulacak girdinin ismi.

`içerik`

  Oluşturulacak girdinin içeriği. İkil olarak güvenli kipte yazılır.

`seçenekler`

  `ZipArchive::FL_OVERWRITE`, `ZipArchive::FL_ENC_GUESS`, `ZipArchive::FL_ENC_UTF_8`, `ZipArchive::FL_ENC_CP437` sabitlerinin bit maskesi. Bu sabitlerin davranışı ZIP sabitleri sayfasında açıklanmıştır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 / 1.18.0 | `seçenekler` eklendi.

### Örnekler

Örnek 1 - Arşive yeni bir girdi eklemek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('test.txt', 'Bu dizge dosyanın içeriğidir.'');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

Örnek 2 - Bir dosyayı arşivdeki bir dizine eklemek

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->addFromString('dir/test.txt', 'Bu dizge dosyanın içeriğidir.'');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

# ZipArchive::addGlob

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL zip >= 1.9.0)

ZipArchive::addGlob — Add files from a directory by glob pattern

### Açıklama

public function ZipArchive::addGlob(string `$pattern`, int `$flags` = 0, array `$options` = []): array|false

Add files from a directory which match the glob `pattern`.

> Bilginize: Taşınabilirliği arttırmak için ZIP dosya isimlerinde dizin ayracı olarak bölü çizgilerini (`/`) kullanın.

### Bağımsız Değişkenler

`pattern`
  A glob() pattern against which files will be matched.
`flags`
  A bit mask of `glob()` flags.
`options`

  An associative array of options. Available options are:

  - `"add_path"` Prefix to prepend when translating to the local path of the file within the archive. This is applied after any remove operations defined by the `"remove_path"` or `"remove_all_path"` options.
  - `"remove_path"` Prefix to remove from matching file paths before adding to the archive.
  - `"remove_all_path"` `true` to use the file name only and add to the root of the archive.
  - `"flags"` Bitmask consisting of `ZipArchive::FL_OVERWRITE`, `ZipArchive::FL_ENC_GUESS`, `ZipArchive::FL_ENC_UTF_8`, `ZipArchive::FL_ENC_CP437`, `ZipArchive::FL_OPEN_FILE_NOW`. The behaviour of these constants is described on the ZIP constants page.
  - `"comp_method"` Compression method, one of the `ZipArchive::CM_*` constants.
  - `"comp_flags"` Compression level.
  - `"enc_method"` Encryption method, one of the `ZipArchive::EM_*` constants.
  - `"enc_password"` Password used for encryption.

### Dönen Değerler

An array of added files on success başarısızlık durumunda `false` döner

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL zip 1.18.0 | `"flags"` in `options` was added.
8.0.0, PECL zip 1.18.1 | `"comp_method"`, `"comp_flags"`, `"enc_method"` and `"enc_password"` in `options` were added.
8.3.0, PECL zip 1.22.1 | `ZipArchive::FL_OPEN_FILE_NOW` was added.

### Örnekler

Örnek 1 ZipArchive::addGlob() example

Add all php scripts and text files from current working directory

    <?php
    $zip = new ZipArchive();
    $ret = $zip->open('application.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
    if ($ret !== TRUE) {
        printf('Failed with code %d', $ret);
    } else {
        $options = array('add_path' => 'sources/', 'remove_all_path' => TRUE);
        $zip->addGlob('*.{php,txt}', GLOB_BRACE, $options);
        $zip->close();
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::addFile() - Yolu belirtilen dosyayı arşive ekler
- ZipArchive::addPattern() - Add files from a directory by PCRE pattern

# ZipArchive::addPattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL zip >= 1.9.0)

ZipArchive::addPattern — Add files from a directory by PCRE pattern

### Açıklama

public function ZipArchive::addPattern(string `$pattern`, string `$path` = ".", array `$options` = []): array|false

Add files from a directory which match the regular expression `pattern`. The operation is not recursive. The pattern will be matched against the file name only.

### Bağımsız Değişkenler

`pattern`
  A PCRE pattern against which files will be matched.
`path`
  The directory that will be scanned. Defaults to the current working directory.
`options`
  An associative array of options accepted by ZipArchive::addGlob().

### Dönen Değerler

An array of added files on success başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 ZipArchive::addPattern() example

Add all php scripts and text files from current directory

    <?php
    $zip = new ZipArchive();
    $ret = $zip->open('application.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
    if ($ret !== TRUE) {
        printf('Failed with code %d', $ret);
    } else {
        $directory = realpath('.');
        $options = array('add_path' => 'sources/', 'remove_path' => $directory);
        $zip->addPattern('/\.(?:php|txt)$/', $directory, $options);
        $zip->close();
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::addFile() - Yolu belirtilen dosyayı arşive ekler
- ZipArchive::addGlob() - Add files from a directory by glob pattern

# ZipArchive::clearError

(PHP 8 >= 8.2.0, PECL zip >= 1.20.0)

ZipArchive::clearError — Clear the status error message, system and/or zip messages

### Açıklama

public function ZipArchive::clearError(): void

Clear the status error message, system and/or zip messages.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- ZipArchive::getStatusString() - Durum hata iletilerini, sistem ve/veya zip iletilerini döndürür

# ZipArchive::close

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::close — Etkin (açık veya oluşturulmuş) arşivi kapatır

### Açıklama

public function ZipArchive::close(): bool

Açılmış veya yeni oluşturulmuş arşivi kapatır ve değişiklikleri kaydeder. Bu yöntem betiğin sonunda otomatik olarak çağrılır.

Arşiv dosya içermiyorsa, arşiv dosyası `ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE` küresel seçeneğinin değerine uygun olarak silinir (veya silinmez).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ZipArchive::setArchiveFlag() - Set a global flag of a ZIP archive

# ZipArchive::count

(PHP 7 >= 7.2.0, PHP 8, PECL zip >= 1.15.0)

ZipArchive::count — Counts the number of files in the archive

### Açıklama

public function ZipArchive::count(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of files in the archive.

# ZipArchive::deleteIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::deleteIndex — İndisi belirtilen girdiyi arşivden siler

### Açıklama

public function ZipArchive::deleteIndex(int `$indis`): bool

İndisi belirtilen girdiyi arşivden siler.

### Bağımsız Değişkenler

`indis`

  Silinecek girdinin indisi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - İndisini kullanarak arşivden bir dosya silmek

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->deleteIndex(2);
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

# ZipArchive::deleteName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::deleteName — İsmi belirtilen girdiyi siler

### Açıklama

public function ZipArchive::deleteName(string `$isim`): bool

İsmi belirtilen girdiyi arşivden siler.

### Bağımsız Değişkenler

`isim`

  Silinecek girdinin ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - İsmini kullanarak arşivden bir dosya silmek

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test1.zip') === TRUE) {
        $zip->deleteName('testfromfile.php');
        $zip->deleteName('testDir/');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

# ZipArchive::extractTo

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::extractTo — Arşiv içeriğini çıkarır

### Açıklama

public function ZipArchive::extractTo(string `$hedef`, array|string|null `$girdiler` = `null`): bool

Arşivin tamamını veya belirtilen dosyaları belirtilen hedefe çıkarır.

Uyarı

Çıkarılan dosya ve dizinler için öntanımlı izinler olası en geniş yetkileri sağlar. Bu geçerli umask değeri ile sınırlanabilir. Geçerli umask değeri umask() işlevi ile değiştirilebilir.

Güvenlik nedeniyle özgün izinlere dokunulmaz. Bunun örneği ZipArchive::getExternalAttributesIndex() sayfasındaki kod örneğinde görülebilir.

### Bağımsız Değişkenler

`hedef`

  Dosyaların çıkarılacağı yer.

`girdiler`

  Çıkarılacak girdiler. Tek bir girdi ismi içeren bir dizge veya girdi isimlerini içeren bir dizi kabul eder.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Tüm girdileri çıkarmak

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->extractTo('/my/destination/dir/');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

Örnek 2 - İki girdi çıkarmak

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test_im.zip');
    if ($res === TRUE) {
        $zip->extractTo('/my/destination/dir/', array('pear_item.gif',
            'testfromfile.php'));
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'olmadı';
    }
    ?>

### Notlar

> Bilginize:

> Windows NTFS dosya sistemi dosya isimlerinde `<|>*?":` gibi bazı karakterleri desteklemez. Bundan başka nokta ile biten dosya isimleri de desteklenmez. Bazı dosya çıkarma araçlarının aksine, bu yöntem bu karakterleri bir alt çizgi ile değiştirmek yerine bu tür dosyaları çıkarmada başarısız olur.

# ZipArchive::getArchiveComment

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getArchiveComment — Zip arşivinin açıklamasını döndürür

### Açıklama

public function ZipArchive::getArchiveComment(int `$seçenekler` = 0): string|false

Zip arşivinin açıklamasını döndürür.

### Bağımsız Değişkenler

`seçenekler`

  Değer olarak `ZipArchive::FL_UNCHANGED` belirtilirse özgün açıklama değişmeden döner.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde açıklama dizgesi döner.

### Örnekler

Örnek 1 - Bir arşiv açıklamasını basmak

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test_with_comment.zip');
    if ($res === TRUE) {
        var_dump($zip->getArchiveComment());
        /* Veya arşivin özelliğini kullanalım */
        var_dump($zip->comment);
    } else {
        echo 'olmadı, kod:' . $res;
    }
    ?>

# ZipArchive::getArchiveFlag

(PHP >= 8.3.0, PECL zip >= 1.22.0)

ZipArchive::getArchiveFlag — Returns the value of a Zip archive global flag

### Açıklama

public function ZipArchive::getArchiveFlag(int `$flag`, int `$flags` = 0): int

Returns a Zip archive global flag value.

### Bağımsız Değişkenler

`flag`

  The global flag to retrieve, among `AFL_*` constants:

  - `ZipArchive::AFL_RDONLY`
  - `ZipArchive::AFL_IS_TORRENTZIP`
  - `ZipArchive::AFL_WANT_TORRENTZIP`
  - `ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE`
`flags`
  If `flags` is set to `ZipArchive::FL_UNCHANGED`, the original unchanged flag is returned.

### Dönen Değerler

Returns 1 if flag is set for archive, 0 if not, and -1 if an error occurred.

### Örnekler

Örnek 1 Test if archive is a torrentzip format

    <?php

    $zip = new ZipArchive();
    $res = $zip->open('test.zip');

    if ($res === true) {
        var_dump($zip->getArchiveFlag(ZipArchive::AFL_IS_TORRENTZIP));
    } else {
        echo 'Failed, code: ' . $res;
    }

    ?>

### Ayrıca Bakınız

- ZipArchive::setArchiveFlag() - Set a global flag of a ZIP archive

# ZipArchive::getCommentIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.4.0)

ZipArchive::getCommentIndex — İndisi belirtilen girdinin açıklamasını döndürür

### Açıklama

public function ZipArchive::getCommentIndex(int `$indis`, int `$seçenekler` = 0): string|false

İndisi belirtilen girdinin açıklamasını döndürür.

### Bağımsız Değişkenler

`indis`

  Girdinin indisi.

`seçenekler`

  Değer olarak `ZipArchive::FL_UNCHANGED` belirtilirse özgün açıklama değişmeden döner.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde açıklama dizgesi döner.

### Örnekler

Örnek 1 - Bir girdinin açıklamasını basmak

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test1.zip');
    if ($res === TRUE) {
        var_dump($zip->getCommentIndex(1));
    } else {
        echo 'olmadı, kod:' . $res;
    }
    ?>

# ZipArchive::getCommentName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.4.0)

ZipArchive::getCommentName — İsmi belirtilen girdinin açıklamasını döndürür

### Açıklama

public function ZipArchive::getCommentName(string `$isim`, int `$seçenekler` = 0): string|false

İsmi belirtilen girdinin açıklamasını döndürür.

### Bağımsız Değişkenler

`isim`

  Girdinin ismi.

`seçenekler`

  Değer olarak `ZipArchive::FL_UNCHANGED` belirtilirse özgün açıklama değişmeden döner.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde açıklama dizgesi döner.

### Örnekler

Örnek 1 - Bir girdinin açıklamasını basmak

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test1.zip');
    if ($res === TRUE) {
        var_dump($zip->getCommentName('test/entry1.txt'));
    } else {
        echo 'olmadı, kod:' . $res;
    }
    ?>

# ZipArchive::getExternalAttributesIndex

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index

### Açıklama

public function ZipArchive::getExternalAttributesIndex(
int `$index`,
int `&$opsys`,
int `&$attr`,
int `$flags` = 0
): bool

Retrieve the external attributes of an entry defined by its index.

### Bağımsız Değişkenler

`index`
  Index of the entry.
`opsys`
  On success, receive the operating system code defined by one of the ZipArchive::OPSYS_ constants.
`attr`
  On success, receive the external attributes. Value depends on operating system.
`flags`
  If flags is set to `ZipArchive::FL_UNCHANGED`, the original unchanged attributes are returned.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example extract all the entries of a ZIP archive test.zip and set the Unix rights from external attributes.

Örnek 1 Extract all entries with Unix rights

    <?php
    $zip = new ZipArchive();
    if ($zip->open('test.zip') === TRUE) {
        for ($idx=0 ; $s = $zip->statIndex($idx) ; $idx++) {
            if ($zip->extractTo('.', $s['name'])) {
                if ($zip->getExternalAttributesIndex($idx, $opsys, $attr)
                    && $opsys==ZipArchive::OPSYS_UNIX) {
                   chmod($s['name'], ($attr >> 16) & 0777);
                }
            }
        }
        $zip->close();
        echo "Ok\n";
    } else {
        echo "KO\n";
    }
    ?>

# ZipArchive::getExternalAttributesName

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name

### Açıklama

public function ZipArchive::getExternalAttributesName(
string `$name`,
int `&$opsys`,
int `&$attr`,
int `$flags` = 0
): bool

Retrieve the external attributes of an entry defined by its name.

### Bağımsız Değişkenler

`name`
  Name of the entry.
`opsys`
  On success, receive the operating system code defined by one of the ZipArchive::OPSYS_ constants.
`attr`
  On success, receive the external attributes. Value depends on operating system.
`flags`
  If flags is set to `ZipArchive::FL_UNCHANGED`, the original unchanged attributes are returned.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ZipArchive::getFromIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getFromIndex — İndisi belirtilen girdinin içeriğini döndürür

### Açıklama

public function ZipArchive::getFromIndex(int `$indis`, int `$uzunluk` = 0, int `$seçenekler` = 0): string|false

İndisi belirtilen girdinin içeriğini döndürür.

### Bağımsız Değişkenler

`indis`

  Girdi indisi.

`uzunluk`

  Girdiden okunacak uzunluk. `0` belirtilirse, tüm girdi okunur.

`seçenekler`

  Arşivi açmakta kullanılacak seçenekler, Aşağıdaki sabitler VEYAlanarak belirtilir:

  - `ZipArchive::FL_UNCHANGED`

  - `ZipArchive::FL_COMPRESSED`

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdinin içeriği döner.

### Örnekler

Örnek 1 - Dosya içeriğini basmak

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        echo $zip->getFromIndex(2);
        $zip->close();
    } else {
        echo 'olmadı';
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::getFromName() - İsmi belirtilen girdinin içeriğini döndürür

# ZipArchive::getFromName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getFromName — İsmi belirtilen girdinin içeriğini döndürür

### Açıklama

public function ZipArchive::getFromName(string `$isim`, int `$uzunluk` = 0, int `$seçenekler` = 0): string|false

İsmi belirtilen girdinin içeriğini döndürür.

### Bağımsız Değişkenler

`isim`

  Girdinin ismi.

`uzunluk`

  Girdiden okunacak uzunluk. `0` belirtilirse, tüm girdi okunur.

`seçenekler`

  Girdiyi bulmak için kullanılacak seçenekler, Aşağıdaki sabitler VEYAlanarak belirtilir:

  - `ZipArchive::FL_UNCHANGED`

  - `ZipArchive::FL_COMPRESSED`

  - `ZipArchive::FL_NOCASE`

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdinin içeriği döner.

### Örnekler

Örnek 1 - Dosya içeriğinin basılması

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test1.zip') === TRUE) {
        echo $zip->getFromName('testfromfile.php');
        $zip->close();
    } else {
        echo 'failed';
    }
    ?>

Örnek 2 - Bir zip girdisindeki resimde dönüşüm

    <?php
    $z = new ZipArchive();
    if ($z->open(dirname(__FILE__) . '/test_im.zip')) {
        $im_string = $z->getFromName("pear_item.gif");
        $im = imagecreatefromstring($im_string);
        imagepng($im, 'b.png');
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::getFromIndex() - İndisi belirtilen girdinin içeriğini döndürür

# ZipArchive::getNameIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::getNameIndex — İndisi belirtilen girdinin ismini döndürür

### Açıklama

public function ZipArchive::getNameIndex(int `$indis`, int `$seçenekler` = 0): string|false

İndisi belirtilen girdinin ismini döndürür.

### Bağımsız Değişkenler

`indis`

  Girdi indisi.

`seçenekler`

  Değer olarak `ZipArchive::FL_UNCHANGED` belirtilirse özgün isim değişmeden döner.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdinin ismi döner.

### Örnekler

Örnek 1 - ZipArchive::getNameIndex() örneği

    <?php
    if ($zip->open('test.zip') == TRUE) {
     for ($i = 0; $i < $zip->numFiles; $i++) {
         $filename = $zip->getNameIndex($i);
         // ...
     }
    }
    ?>

# ZipArchive::GetStatusString

(PHP 5 >= 5.2.7, PHP 7, PHP 8)

ZipArchive::GetStatusString — Durum hata iletilerini, sistem ve/veya zip iletilerini döndürür

### Açıklama

public function ZipArchive::getStatusString(): string

Durum hata iletilerini, sistem ve/veya zip iletilerini döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Durum iletisini içeren bir dizge döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 / 1.18.0 | Bu yöntem artık kapalı bir arşivde çağrılabiliyor.
8.0.0 / 1.18.0 | Bu yöntem başarısızlık durumunda artık `false`döndürmüyor.

# ZipArchive::getStream

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getStream — İsmi belirtilen girdi için dosya tanıtıcısı (salt okunur) döndürür

### Açıklama

public function ZipArchive::getStream(string `$isim`): resource|false

İsmi belirtilen girdi için dosya tanıtıcısı döndürür. Şimdilik sadece okuma işlemleri desteklenmektedir.

### Bağımsız Değişkenler

`isim`

  Kullanılacak girdinin ismi.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdinin dosya tanıtıcısı döner.

### Örnekler

Örnek 1 - Girdi içeriğini fread() ile alıp saklamak

    <?php
    $contents = '';
    $z = new ZipArchive();
    if ($z->open('test.zip')) {
        $fp = $z->getStream('test');
        if(!$fp) exit("olmadı\n");

        while (!feof($fp)) {
            $contents .= fread($fp, 2);
        }

        fclose($fp);
        file_put_contents('t',$contents);
        echo "bitti.\n";
    }
    ?>

Örnek 2 - fopen() ve zip akım sarmalayıcı kullanmak dışında yukarıdaki ile aynı

    <?php
    $contents = '';
    $fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r');
    if (!$fp) {
        exit("açılamadı\n");
    }
    while (!feof($fp)) {
        $contents .= fread($fp, 2);
    }
    echo "$contents\n";
    fclose($fp);
    echo "bitti.\n";
    ?>

Örnek 3 - Akım sarmalayıcı ve resim, XML işleviyle de kullanılabilir

    <?php
    $im = imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif');
    imagepng($im, 'a.png');
    ?>

### Ayrıca Bakınız

- ZipArchive::getStreamIndex() - Get a file handler to the entry defined by its index (read only)
- ZipArchive::getStreamName() - Get a file handler to the entry defined by its name (read only)
- Sıkıştırma Akımları

# ZipArchive::getStreamIndex

(PHP 8 >= 8.2.0, PECL zip >= 1.20.0)

ZipArchive::getStreamIndex — Get a file handler to the entry defined by its index (read only)

### Açıklama

public function ZipArchive::getStreamIndex(int `$index`, int `$flags` = 0): resource|false

Get a file handler to the entry defined by its index. For now, it only supports read operations.

### Bağımsız Değişkenler

`index`
  Index of the entry
`flags`
  If flags is set to `ZipArchive::FL_UNCHANGED`, the original unchanged stream is returned.

### Dönen Değerler

Returns a file pointer (resource) on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Get the entry contents with fread() and store it

    <?php
    $contents = '';
    $z = new ZipArchive();
    if ($z->open('test.zip')) {
        $fp = $z->getStreamIndex(1, ZipArchive::FL_UNCHANGED);
        if(!$fp) die($z->getStatusString());

        echo stream_get_contents($fp);

        fclose($fp);
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::getStreamName() - Get a file handler to the entry defined by its name (read only)

# ZipArchive::getStreamName

(PHP 8 >= 8.2.0, PECL zip >= 1.20.0)

ZipArchive::getStreamName — Get a file handler to the entry defined by its name (read only)

### Açıklama

public function ZipArchive::getStreamName(string `$name`, int `$flags` = 0): resource|false

Get a file handler to the entry defined by its name. For now, it only supports read operations.

### Bağımsız Değişkenler

`name`
  The name of the entry to use.
`flags`
  If flags is set to `ZipArchive::FL_UNCHANGED`, the original unchanged stream is returned.

### Dönen Değerler

Returns a file pointer (resource) on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Get the entry contents with fread() and store it

    <?php
    $contents = '';
    $z = new ZipArchive();
    if ($z->open('test.zip')) {
        $fp = $z->getStreamName('test', ZipArchive::FL_UNCHANGED);
        if(!$fp) die($z->getStatusString());

        echo stream_get_contents($fp);

        fclose($fp);
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::getStreamIndex() - Get a file handler to the entry defined by its index (read only)

# ZipArchive::isCompressionMethodSupported

(PHP >= 8.0.0, PECL zip >= 1.19.0)

ZipArchive::isCompressionMethodSupported — Check if a compression method is supported by libzip

### Açıklama

public static function ZipArchive::isCompressionMethodSupported(int `$method`, bool `$enc` = `true`): bool

Check if a compression method is supported by libzip.

### Bağımsız Değişkenler

`method`
  The compression method, one of the `ZipArchive::CM_*` constants.
`enc`
  If `true` check for compression, else check for decompression.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.7.0.

### Ayrıca Bakınız

- ZipArchive::setCompressionIndex() - Set the compression method of an entry defined by its index
- ZipArchive::setCompressionName() - Set the compression method of an entry defined by its name

# ZipArchive::isEncryptionMethodSupported

(PHP >= 8.0.0, PECL zip >= 1.19.0)

ZipArchive::isEncryptionMethodSupported — Check if a encryption method is supported by libzip

### Açıklama

public static function ZipArchive::isEncryptionMethodSupported(int `$method`, bool `$enc` = `true`): bool

Check if a compression method is supported by libzip.

### Bağımsız Değişkenler

`method`
  The encryption method, one of the `ZipArchive::EM_*` constants.
`enc`
  If `true` check for encryption, else check for decryption.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.7.0.

### Ayrıca Bakınız

- ZipArchive::setEncryptionIndex() - Set the encryption method of an entry defined by its index
- ZipArchive::setEncryptionName() - Set the encryption method of an entry defined by its name

# ZipArchive::locateName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::locateName — İsmi belirtilen girdinin indisini döndürür

### Açıklama

public function ZipArchive::locateName(string `$isim`, int `$seçenekler` = 0): int|false

İsmi belirtilen girdinin indisini döndürür.

### Bağımsız Değişkenler

`isim`

  Girdinin ismi.

`seçenekler`

  İsmin nasıl aranacağı aşağıdaki sabitlerden oluşan bir bit maskesi olarak belirtilir. Hiçbiri belirtilmeyecekse `0` belirtilir.

  - `ZipArchive::FL_NOCASE`

  - `ZipArchive::FL_NODIR`

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdinin indisi döner.

### Örnekler

Örnek 1 - Bir arşiv oluşturup üzerinde ZipArchive::locateName() kullanmak

    <?php
    $file = 'testlocate.zip';

    $zip = new ZipArchive;
    if ($zip->open($file, ZipArchive::CREATE) !== TRUE) {
        exit('failed');
    }

    $zip->addFromString('entry1.txt', 'girdi #1');
    $zip->addFromString('entry2.txt', 'girdi #2');
    $zip->addFromString('dir/entry2d.txt', 'girdi #2');

    if (!$zip->status == ZipArchive::ER_OK) {
        echo "ZIP yazılamadı\n";
    }
    $zip->close();

    if ($zip->open($file) !== TRUE) {
        exit('Olmadı');
    }

    echo $zip->locateName('entry1.txt') . "\n";
    echo $zip->locateName('eNtry2.txt') . "\n";
    echo $zip->locateName('eNtry2.txt', ZipArchive::FL_NOCASE) . "\n";
    echo $zip->locateName('enTRy2d.txt',
         ZipArchive::FL_NOCASE|ZipArchive::FL_NODIR) . "\n";
    $zip->close();

    ?>

Yukarıdaki örneğin çıktısı:

    0

    1
    2

# ZipArchive::open

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::open — Bir ZIP dosya arşivi açar

### Açıklama

public function ZipArchive::open(string `$dosya`, int `$seçenekler` = 0): bool|int

Okumak, yazmak veya değiştirmek amacıyla bir zip arşivi açar.

libzip 1.6.0'dan beri, boş dosya artık geçerli bir arşiv değil.

### Bağımsız Değişkenler

`dosya`

  Açılacak ZIP arşivinin dosya ismi.

`seçenekler`

  Arşivin açılacağı kip; şu sabitlerden biridir:

  - `ZipArchive::OVERWRITE`

  - `ZipArchive::CREATE`

  - `ZipArchive::RDONLY`

  - `ZipArchive::EXCL`

  - `ZipArchive::CHECKCONS`

### Dönen Değerler

Başarı durumunda `true` yoksa aşağıdaki hata kodarından biri döner:

`ZipArchive::ER_EXISTS`
  Dosya zaten mevcut.
`ZipArchive::ER_INCONS`
  Zip arşivi tutarsız.
`ZipArchive::ER_INVAL`
  Geçersiz bağımsız değişken.
`ZipArchive::ER_MEMORY`
  Malloc hatası.
`ZipArchive::ER_NOENT`
  Böyle bir dosya yok.
`ZipArchive::ER_NOZIP`
  Bir zip arşivi değil.
`ZipArchive::ER_OPEN`
  Dosya açılamiyor.
`ZipArchive::ER_READ`
  Okuma hatası.
`ZipArchive::ER_SEEK`
  Konumlama hatası.

### Örnekler

Örnek 1 - Bir arşivi açıp içeriğini dökmek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        echo 'Tamam';
        $zip->extractTo('test');
        $zip->close();
    } else {
        echo 'Olmadı, kod:' . $res;
    }
    ?>

Örnek 2 - Bir arşiv oluşturmak

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('test.txt', 'Bu dizge dosyanın içeriğidir.');
        $zip->addFile('data.txt', 'entryname.txt');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'Olmadı';
    }
    ?>

Örnek 3 - Geçici bir arşiv oluşturma

    <?php
    $name = tempnam(sys_get_temp_dir(), "FOO");
    $zip = new ZipArchive;
    $res = $zip->open($name, ZipArchive::OVERWRITE); // boş dosya budanmaz
    if ($res === TRUE) {
        $zip->addFile('data.txt', 'entryname.txt');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'Olmadı';
    }
    ?>

# ZipArchive::registerCancelCallback

(PHP >= 8.0.0, PECL zip >= 1.17.0)

ZipArchive::registerCancelCallback — Register a callback to allow cancellation during archive close.

### Açıklama

public function ZipArchive::registerCancelCallback(callable `$callback`): bool

Register a `callback` function to allow cancellation during archive close.

### Bağımsız Değişkenler

`callback`
  If this function return 0 operation will continue, other value it will be cancelled.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example creates a ZIP file archive php.zip and cancel operation on some run condition.

Örnek 1 Archive a file

    <?php
    $zip = new ZipArchive();
    if ($zip->open('php.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
        $zip->addFile(PHP_BINARY, 'php');
        $zip->registerCancelCallback(function () {
            return ($someruncondition ? -1 : 0);
        });
        $zip->close();
    }

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.6.0.

### Ayrıca Bakınız

- ZipArchive::registerProgressCallback() - Register a callback to provide updates during archive close.

# ZipArchive::registerProgressCallback

(PHP >= 8.0.0, PECL zip >= 1.17.0)

ZipArchive::registerProgressCallback — Register a callback to provide updates during archive close.

### Açıklama

public function ZipArchive::registerProgressCallback(float `$rate`, callable `$callback`): bool

Register a `callback` function to provide updates during archive close.

### Bağımsız Değişkenler

`rate`
  Change between each call of the callback (from 0.0 to 1.0).
`callback`
  This function will receive the current `state` as a float (from 0.0 to 1.0).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example creates a ZIP file archive php.zip and show progression.

Örnek 1 Archive a file

    $zip = new ZipArchive();
    if ($zip->open('php.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
        $zip->addFile(PHP_BINARY, 'php');
        $zip->registerProgressCallback(0.05, function ($r) {
            printf("%d%%\n", $r * 100);
        });
        $zip->close();
    }

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.3.0.

### Ayrıca Bakınız

- ZipArchive::registerCancelCallback() - Register a callback to allow cancellation during archive close.

# ZipArchive::renameIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::renameIndex — İndisi belirtilen girdinin ismini değiştirir

### Açıklama

public function ZipArchive::renameIndex(int `$indis`, string `$yeni_isim`): bool

İndisi belirtilen girdinin ismini değiştirir.

### Bağımsız Değişkenler

`indis`

  İsmi değiştirilecek girdinin indisi.

`yeni_isim`

  Girdinin yeni ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir girdinin ismini değiştirmek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        $zip->renameIndex(2,'newname.txt');
        $zip->close();
    } else {
        echo 'olmadı, kod:' . $res;
    }
    ?>

# ZipArchive::renameName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::renameName — İsmi belirtilen girdinin ismini değiştirir

### Açıklama

public function ZipArchive::renameName(string `$isim`, string `$yenisi`): bool

İsmi belirtilen girdinin ismini değiştirir.

### Bağımsız Değişkenler

`isim`

  Girdinin değiştirilecek ismi.

`yenisi`

  Girdinin yeni ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir girdinin ismini değiştirmek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        $zip->renameName('currentname.txt','newname.txt');
        $zip->close();
    } else {
        echo 'Olmadı, kod:' . $res;
    }
    ?>

# ZipArchive::replaceFile

(PHP >= 8.0.0, PECL zip >= 1.18.0)

ZipArchive::replaceFile — Replace file in ZIP archive with a given path

### Açıklama

public function ZipArchive::replaceFile(
string `$filepath`,
int `$index`,
int `$start` = 0,
int `$length` = `ZipArchive::LENGTH_TO_END`,
int `$flags` = 0
): bool

Replace file in ZIP archive with a given path.

> Bilginize: Taşınabilirliği arttırmak için ZIP dosya isimlerinde dizin ayracı olarak bölü çizgilerini (`/`) kullanın.

### Bağımsız Değişkenler

`filepath`
  The path to the file to add.
`index`
  The index of the file to be replaced, its name is unchanged.
`start`
  For partial copy, start position.
`length`
  For partial copy, length to be copied, if `ZipArchive::LENGTH_TO_END` (0) the file size is used, if `ZipArchive::LENGTH_UNCHECKED` the whole file is used (starting from `start`).
`flags`
  Bitmask consisting of `ZipArchive::FL_ENC_GUESS`, `ZipArchive::FL_ENC_UTF_8`, `ZipArchive::FL_ENC_CP437`, `ZipArchive::FL_OPEN_FILE_NOW`. The behaviour of these constants is described on the ZIP constants page.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0, PECL zip 1.22.1 | `ZipArchive::FL_OPEN_FILE_NOW` was added.
8.3.0, PECL zip 1.22.2 | `ZipArchive::LENGTH_TO_END` and `ZipArchive::LENGTH_UNCHECKED` were added.

### Örnekler

This example opens a ZIP file archive test.zip and replaces index 1 entry with /path/to/index.txt.

Örnek 1 Open and replace

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->replaceFile('/path/to/index.txt', 1);
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::addFile() - Yolu belirtilen dosyayı arşive ekler

# ZipArchive::setArchiveComment

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.4.0)

ZipArchive::setArchiveComment — Bir ZIP arşivine açıklama ekler

### Açıklama

public function ZipArchive::setArchiveComment(string `$açıklama`): bool

Bir ZIP arşivine açıklama ekler.

### Bağımsız Değişkenler

`açıklama`

  Açıklamanın içeriği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir arşiv oluşturup bir açıklama eklemek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('test.txt', 'Bu dizge dosyanın içeriğidir.');
        $zip->setArchiveComment('Yeni arşiv açıklaması');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'Olmadı';
    }
    ?>

# ZipArchive::setArchiveFlag

(PHP >= 8.3.0, PECL zip >= 1.22.0)

ZipArchive::setArchiveFlag — Set a global flag of a ZIP archive

### Açıklama

public function ZipArchive::setArchiveFlag(int `$flag`, int `$value`): bool

Set a global flag of a ZIP archive.

### Bağımsız Değişkenler

`flag`

  The global flag to change, among `AFL_*` constants.

  - `ZipArchive::AFL_WANT_TORRENTZIP`
  - `ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE`
`value`
  The new value of the flag.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Create a torrentzip archive

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->setArchiveFlag(ZipArchive::AFL_WANT_TORRENTZIP, 1);
        $zip->addFromString('test.txt', 'file content goes here');
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>

### Ayrıca Bakınız

- ZipArchive::getArchiveFlag() - Returns the value of a Zip archive global flag

# ZipArchive::setCommentIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.4.0)

ZipArchive::setCommentIndex — İndisi belirtilen girdiye bir açıklama ekler

### Açıklama

public function ZipArchive::setCommentIndex(int `$indis`, string `$açıklama`): bool

İndisi belirtilen girdiye bir açıklama ekler.

### Bağımsız Değişkenler

`indis`

  Girdi indisi.

`açıklama`

  Açıklamanın içeriği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir arşiv açıp bir girdiye açıklama eklemek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        $zip->setCommentIndex(2, 'yeni girdi açıklaması');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'Olmadı';
    }
    ?>

# ZipArchive::setCommentName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.4.0)

ZipArchive::setCommentName — İsmi belirtilen girdiye bir açıklama ekler

### Açıklama

public function ZipArchive::setCommentName(string `$isim`, string `$açıklama`): bool

İsmi belirtilen girdiye bir açıklama ekler.

### Bağımsız Değişkenler

`isim`

  Girdinin ismi.

`açıklama`

  Açıklamanın içeriği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir arşiv açıp bir girdiye açıklama eklemek

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        $zip->setCommentName('entry1.txt', 'yeni girdi açıklaması');
        $zip->close();
        echo 'Tamam';
    } else {
        echo 'Olmadı';
    }
    ?>

# ZipArchive::setCompressionIndex

(PHP 7, PHP 8, PECL zip >= 1.13.0)

ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index

### Açıklama

public function ZipArchive::setCompressionIndex(int `$index`, int `$method`, int `$compflags` = 0): bool

Set the compression method of an entry defined by its index.

### Bağımsız Değişkenler

`index`
  Index of the entry.
`method`
  The compression method, one of the `ZipArchive::CM_*` constants.
`compflags`
  Compression level.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Add files with different compression methods to an archive

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('foo', 'Some text');
        $zip->addFromString('bar', 'Some other text');
        $zip->setCompressionIndex(0, ZipArchive::CM_STORE);
        $zip->setCompressionIndex(1, ZipArchive::CM_DEFLATE);
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>

# ZipArchive::setCompressionName

(PHP 7, PHP 8, PECL zip >= 1.13.0)

ZipArchive::setCompressionName — Set the compression method of an entry defined by its name

### Açıklama

public function ZipArchive::setCompressionName(string `$name`, int `$method`, int `$compflags` = 0): bool

Set the compression method of an entry defined by its name.

### Bağımsız Değişkenler

`name`
  Name of the entry.
`method`
  The compression method, one of the `ZipArchive::CM_*` constants.
`compflags`
  Compression level.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Add files with different compression methods to an archive

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('foo', 'Some text');
        $zip->addFromString('bar', 'Some other text');
        $zip->setCompressionName('foo', ZipArchive::CM_STORE);
        $zip->setCompressionName('bar', ZipArchive::CM_DEFLATE);
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>

Örnek 2 Add file and set compression method

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFile('foo.jpg', 'bar.jpg');
        $zip->setCompressionName('bar.jpg', ZipArchive::CM_XZ);
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>

# ZipArchive::setEncryptionIndex

(PHP >= 7.2.0, PHP 8, PECL zip >= 1.14.0)

ZipArchive::setEncryptionIndex — Set the encryption method of an entry defined by its index

### Açıklama

public function ZipArchive::setEncryptionIndex(int `$index`, int `$method`, #[\SensitiveParameter]?string `$password` = `null`): bool

Set the encryption method of an entry defined by its index.

### Bağımsız Değişkenler

`index`
  Index of the entry.
`method`
  The encryption method defined by one of the ZipArchive::EM_ constants.
`password`
  Optional password, default used when missing.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `password` is now nullable.

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.2.0.

### Ayrıca Bakınız

- ZipArchive::setPassword() - Set the password for the active archive
- ZipArchive::setEncryptionName() - Set the encryption method of an entry defined by its name

# ZipArchive::setEncryptionName

(PHP >= 7.2.0, PHP 8, PECL zip >= 1.14.0)

ZipArchive::setEncryptionName — Set the encryption method of an entry defined by its name

### Açıklama

public function ZipArchive::setEncryptionName(string `$name`, int `$method`, #[\SensitiveParameter]?string `$password` = `null`): bool

Set the encryption method of an entry defined by its name.

### Bağımsız Değişkenler

`name`
  Name of the entry.
`method`
  The encryption method defined by one of the ZipArchive::EM_ constants.
`password`
  Optional password, default used when missing.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `password` is now nullable.

### Örnekler

This example creates a ZIP file archive test.zip and add the file test.txt encrypted using the AES 256 method.

Örnek 1 Archive and encrypt a file

    <?php
    $zip = new ZipArchive();
    if ($zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
        $zip->setPassword('secret');
        $zip->addFile('text.txt');
        $zip->setEncryptionName('text.txt', ZipArchive::EM_AES_256);
        $zip->close();
        echo "Ok\n";
    } else {
        echo "KO\n";
    }
    ?>

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.2.0.

### Ayrıca Bakınız

- ZipArchive::setPassword() - Set the password for the active archive
- ZipArchive::setEncryptionIndex() - Set the encryption method of an entry defined by its index

# ZipArchive::setExternalAttributesIndex

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index

### Açıklama

public function ZipArchive::setExternalAttributesIndex(
int `$index`,
int `$opsys`,
int `$attr`,
int `$flags` = 0
): bool

Set the external attributes of an entry defined by its index.

### Bağımsız Değişkenler

`index`
  Index of the entry.
`opsys`
  The operating system code defined by one of the ZipArchive::OPSYS_ constants.
`attr`
  The external attributes. Value depends on operating system.
`flags`
  Optional flags. Currently unused.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ZipArchive::setExternalAttributesName

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name

### Açıklama

public function ZipArchive::setExternalAttributesName(
string `$name`,
int `$opsys`,
int `$attr`,
int `$flags` = 0
): bool

Set the external attributes of an entry defined by its name.

### Bağımsız Değişkenler

`name`
  Name of the entry.
`opsys`
  The operating system code defined by one of the ZipArchive::OPSYS_ constants.
`attr`
  The external attributes. Value depends on operating system.
`flags`
  Optional flags. Currently unused.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example opens a ZIP file archive test.zip and add the file test.txt with its Unix rights as external attributes.

Örnek 1 Archive a file, with its Unix rights

    <?php
    $zip = new ZipArchive();
    $stat = stat($filename='test.txt');
    if (is_array($stat) && $zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
        $zip->addFile($filename);
        $zip->setExternalAttributesName($filename, ZipArchive::OPSYS_UNIX, $stat['mode'] << 16);
        $zip->close();
        echo "Ok\n";
    } else {
        echo "KO\n";
    }
    ?>

# ZipArchive::setMtimeIndex

(PHP >= 8.0.0, PECL zip >= 1.16.0)

ZipArchive::setMtimeIndex — Set the modification time of an entry defined by its index

### Açıklama

public function ZipArchive::setMtimeIndex(int `$index`, int `$timestamp`, int `$flags` = 0): bool

Set the modification time of an entry defined by its index.

### Bağımsız Değişkenler

`index`
  Index of the entry.
`timestamp`
  The modification time (unix timestamp) of the file.
`flags`
  Optional flags, unused for now.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example creates a ZIP file archive test.zip and add the file test.txt with its modification date.

Örnek 1 Archive a file

    <?php
    $zip = new ZipArchive();
    if ($zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
        $zip->addFile('text.txt');
        $zip->setMtimeIndex(0, mktime(0,0,0,12,25,2019));
        $zip->close();
        echo "Ok\n";
    } else {
        echo "KO\n";
    }
    ?>

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.0.0.

### Ayrıca Bakınız

- ZipArchive::setMtimeName() - Set the modification time of an entry defined by its name

# ZipArchive::setMtimeName

(PHP >= 8.0.0, PECL zip >= 1.16.0)

ZipArchive::setMtimeName — Set the modification time of an entry defined by its name

### Açıklama

public function ZipArchive::setMtimeName(string `$name`, int `$timestamp`, int `$flags` = 0): bool

Set the modification time of an entry defined by its name.

### Bağımsız Değişkenler

`name`
  Name of the entry.
`timestamp`
  The modification time (unix timestamp) of the file.
`flags`
  Optional flags, unused for now.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

This example creates a ZIP file archive test.zip and add the file test.txt with its modification date.

Örnek 1 Archive a file

    <?php
    $zip = new ZipArchive();
    if ($zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
        $zip->addFile('text.txt');
        $zip->setMtimeName('text.txt', mktime(0,0,0,12,25,2019));
        $zip->close();
        echo "Ok\n";
    } else {
        echo "KO\n";
    }
    ?>

### Notlar

> Bilginize: This function is only available if built against libzip ≥ 1.0.0.

### Ayrıca Bakınız

- ZipArchive::setMtimeIndex() - Set the modification time of an entry defined by its index

# ZipArchive::setPassword

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL zip >= 1.12.4)

ZipArchive::setPassword — Set the password for the active archive

### Açıklama

public function ZipArchive::setPassword(#[\SensitiveParameter]string `$password`): bool

Sets the password for the active archive.

### Bağımsız Değişkenler

`password`
  The password to be used for the archive.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: As of PHP 7.2.0 and libzip 1.2.0 the password is used to decompress the archive, and is also the default password for ZipArchive::setEncryptionName() and ZipArchive::setEncryptionIndex(). Formerly, this function only set the password to be used to decompress the archive; it did not turn a non-password-protected ZipArchive into a password-protected ZipArchive.

### Ayrıca Bakınız

- ZipArchive::setEncryptionIndex() - Set the encryption method of an entry defined by its index
- ZipArchive::setEncryptionName() - Set the encryption method of an entry defined by its name

# ZipArchive::statIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::statIndex — İndisi belirtilen girdiyle ilgili bilgileri döndürür

### Açıklama

public function ZipArchive::statIndex(int `$indis`, int `$seçenekler` = 0): array|false

İndisi belirtilen girdiyle ilgili bilgileri döndürür.

### Bağımsız Değişkenler

`indis`

  Girdi indisi.

`seçenekler`

  Değişiklikleri yok sayarak arşivin özgün dosyası hakkında bilgi istemek için `ZipArchive::FL_UNCHANGED` sabiti bit maskesine dahil edilebilir.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdi ile ilgili ayrıntıları içeren bir dizi döner.

### Örnekler

Örnek 1 - Bir girdiyle ilgili bilgilerin dökümü

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        print_r($zip->statIndex(3));
        $zip->close();
    } else {
        echo 'Başarısız. Çıkış kodu:' . $res;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [name] => foobar/baz
        [index] => 3
        [crc] => 499465816
        [size] => 27
        [mtime] => 1123164748
        [comp_size] => 24
        [comp_method] => 8
    )

# ZipArchive::statName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::statName — İsmi belirtilen girdiyle ilgili bilgileri döndürür

### Açıklama

public function ZipArchive::statName(string `$isim`, int `$seçenekler` = 0): array|false

İsmi belirtilen girdiyle ilgili bilgileri döndürür.

### Bağımsız Değişkenler

`isim`

  Girdi ismi.

`seçenekler`

  İsmin nasıl aranacağı aşağıdaki sabitlerden oluşan bir bit maskesi olarak belirtilir. Ayrıca, değişiklikleri yoksayarak arşivin özgün dosyası hakkında bilgi edinmek için `ZipArchive::FL_UNCHANGED` sabiti de bit maskesine dahil edilebilir. Sabitlerin açıklamaları Öntanımlı Sabitler sayfasında bulunabilir.

  - `ZipArchive::FL_NOCASE`

  - `ZipArchive::FL_NODIR`

  - `ZipArchive::FL_UNCHANGED`

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde girdi ile ilgili ayrıntıları içeren bir dizi döner.

### Örnekler

Örnek 1 - Bir girdiyle ilgili bilgilerin dökümü

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip');
    if ($res === TRUE) {
        print_r($zip->statName('foobar/baz'));
        $zip->close();
    } else {
        echo 'Başarısız. Çıkış kodu:' . $res;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [name] => foobar/baz
        [index] => 3
        [crc] => 499465816
        [size] => 27
        [mtime] => 1123164748
        [comp_size] => 24
        [comp_method] => 8
    )

# ZipArchive::unchangeAll

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::unchangeAll — Arşivde yapılmış değişikliklerin tamamını geri alır

### Açıklama

public function ZipArchive::unchangeAll(): bool

Arşivde yapılmış değişikliklerin tamamını geri alır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ZipArchive::unchangeArchive

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::unchangeArchive — Arşiv bilgilerinde yapılmış değişiklikleri geri alır

### Açıklama

public function ZipArchive::unchangeArchive(): bool

Arşiv bilgilerinde yapılmış değişiklikleri geri alır. Şimdilik sadece açıklama değişiklikleri geri alınabilmektedir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ZipArchive::unchangeIndex

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::unchangeIndex — İndisi belirtilen girdideki değişiklikleri geri alır

### Açıklama

public function ZipArchive::unchangeIndex(int `$indis`): bool

İndisi belirtilen girdideki değişiklikleri geri alır.

### Bağımsız Değişkenler

`indis`

  Girdi indisi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ZipArchive::unchangeName

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.5.0)

ZipArchive::unchangeName — İsmi belirtilen girdideki değişiklikleri geri alır

### Açıklama

public function ZipArchive::unchangeName(string `$isim`): bool

Belirtilen girdide yapılmış değişiklikleri geri alır.

### Bağımsız Değişkenler

`isim`

  Girdinin ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

## İçindekiler

- ZipArchive::addEmptyDir — Yeni bir dizin ekler
- ZipArchive::addFile — Yolu belirtilen dosyayı arşive ekler
- ZipArchive::addFromString — İsmi ve içeriği belirtilen dosyayı arşive ekler
- ZipArchive::addGlob — Add files from a directory by glob pattern
- ZipArchive::addPattern — Add files from a directory by PCRE pattern
- ZipArchive::clearError — Clear the status error message, system and/or zip messages
- ZipArchive::close — Etkin (açık veya oluşturulmuş) arşivi kapatır
- ZipArchive::count — Counts the number of files in the archive
- ZipArchive::deleteIndex — İndisi belirtilen girdiyi arşivden siler
- ZipArchive::deleteName — İsmi belirtilen girdiyi siler
- ZipArchive::extractTo — Arşiv içeriğini çıkarır
- ZipArchive::getArchiveComment — Zip arşivinin açıklamasını döndürür
- ZipArchive::getArchiveFlag — Returns the value of a Zip archive global flag
- ZipArchive::getCommentIndex — İndisi belirtilen girdinin açıklamasını döndürür
- ZipArchive::getCommentName — İsmi belirtilen girdinin açıklamasını döndürür
- ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index
- ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name
- ZipArchive::getFromIndex — İndisi belirtilen girdinin içeriğini döndürür
- ZipArchive::getFromName — İsmi belirtilen girdinin içeriğini döndürür
- ZipArchive::getNameIndex — İndisi belirtilen girdinin ismini döndürür
- ZipArchive::GetStatusString — Durum hata iletilerini, sistem ve/veya zip iletilerini döndürür
- ZipArchive::getStream — İsmi belirtilen girdi için dosya tanıtıcısı (salt okunur) döndürür
- ZipArchive::getStreamIndex — Get a file handler to the entry defined by its index (read only)
- ZipArchive::getStreamName — Get a file handler to the entry defined by its name (read only)
- ZipArchive::isCompressionMethodSupported — Check if a compression method is supported by libzip
- ZipArchive::isEncryptionMethodSupported — Check if a encryption method is supported by libzip
- ZipArchive::locateName — İsmi belirtilen girdinin indisini döndürür
- ZipArchive::open — Bir ZIP dosya arşivi açar
- ZipArchive::registerCancelCallback — Register a callback to allow cancellation during archive close.
- ZipArchive::registerProgressCallback — Register a callback to provide updates during archive close.
- ZipArchive::renameIndex — İndisi belirtilen girdinin ismini değiştirir
- ZipArchive::renameName — İsmi belirtilen girdinin ismini değiştirir
- ZipArchive::replaceFile — Replace file in ZIP archive with a given path
- ZipArchive::setArchiveComment — Bir ZIP arşivine açıklama ekler
- ZipArchive::setArchiveFlag — Set a global flag of a ZIP archive
- ZipArchive::setCommentIndex — İndisi belirtilen girdiye bir açıklama ekler
- ZipArchive::setCommentName — İsmi belirtilen girdiye bir açıklama ekler
- ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index
- ZipArchive::setCompressionName — Set the compression method of an entry defined by its name
- ZipArchive::setEncryptionIndex — Set the encryption method of an entry defined by its index
- ZipArchive::setEncryptionName — Set the encryption method of an entry defined by its name
- ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index
- ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
- ZipArchive::setMtimeIndex — Set the modification time of an entry defined by its index
- ZipArchive::setMtimeName — Set the modification time of an entry defined by its name
- ZipArchive::setPassword — Set the password for the active archive
- ZipArchive::statIndex — İndisi belirtilen girdiyle ilgili bilgileri döndürür
- ZipArchive::statName — İsmi belirtilen girdiyle ilgili bilgileri döndürür
- ZipArchive::unchangeAll — Arşivde yapılmış değişikliklerin tamamını geri alır
- ZipArchive::unchangeArchive — Arşiv bilgilerinde yapılmış değişiklikleri geri alır
- ZipArchive::unchangeIndex — İndisi belirtilen girdideki değişiklikleri geri alır
- ZipArchive::unchangeName — İsmi belirtilen girdideki değişiklikleri geri alır

# Zip İşlevleri

Uyarı

Yordamsal API kullanımı PHP 8.0.0 itibariyle önerilmemektedir. Yerine ZipArchive kullanılmalıdır.

# zip_close

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_close — Bir ZIP dosya arşivini kapatır

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_close(resource `$zip`): void

Belirtilen ZIP dosya arşivini kapatır.

### Bağımsız Değişkenler

`zip`

  zip_open() ile açılmış bir ZIP dosyası.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::close().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# zip_entry_close

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_close — Bir dizin girdisini kapatır

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_close(resource `$zip_girdisi`): bool

Belirtilen dizin girdisini kapatır.

### Bağımsız Değişkenler

`zip_girdisi`

  zip_entry_open() ile açılmış bir dizin girdisi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor.

### Ayrıca Bakınız

- zip_entry_open() - Okumak için bir dizin girdisi açar
- zip_entry_read() - Bir açık dizin girdisini okur

# zip_entry_compressedsize

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_compressedsize — Dizin girdisinin sıkıştırılmış uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_compressedsize(resource `$zip_girdisi`): int|false

Belirtilen dizin girdisinin sıkıştırılmış uzunluğunu döndürür.

### Bağımsız Değişkenler

`zip_girdisi`

  zip_read() ile döndürülmüş bir dizin girdisi.

### Dönen Değerler

Sıkıştırılmış uzunluk, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::statIndex().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# zip_entry_compressionmethod

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_compressionmethod — Dizin girdisinin sıkıştırma yöntemini döndürür

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_compressionmethod(resource `$zip_girdisi`): string|false

`zip_girdisi` ile belirtilen dizin girdisinin sıkıştırma yöntemini döndürür.

### Bağımsız Değişkenler

`zip_girdisi`

  zip_read() ile döndürülmüş bir dizin girdisi.

### Dönen Değerler

Sıkıştırma yöntemi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::statIndex().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# zip_entry_filesize

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_filesize — Bir dizin girdisinin uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_filesize(resource `$zip_girdisi`): int|false

Belirtilen dizin girdisinin asıl uzunluğunu döndürür.

### Bağımsız Değişkenler

`zip_girdisi`

  zip_read() ile döndürülmüş bir dizin girdisi.

### Dönen Değerler

Dizin girdisinin uzunluğu, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::statIndex().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# zip_entry_name

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_name — Bir dizin girdisinin ismini döndürür

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_name(resource `$zip_girdisi`): string|false

Belirtilen dizin girdisinin ismini döndürür.

### Bağımsız Değişkenler

`zip_entry`

  zip_read() ile döndürülmüş bir dizin girdisi.

### Dönen Değerler

Dizin girdisinin ismi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::statIndex().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# zip_entry_open

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_open — Okumak için bir dizin girdisi açar

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_open(resource `$zip_dt`, resource `$zip_girdisi`, string `$kip` = "rb"): bool

Bir zip dosyasında okumak için bir dizin girdisi açar.

### Bağımsız Değişkenler

`zip_dt`

  zip_open() ile döndürülmüş geçerli bir dosya tanıtıcısı.

`zip_girdisi`

  zip_read() ile döndürülmüş bir dizin girdisi.

`kip`

  fopen() belgesinde belirtilen kiplerden biri.

  > Bilginize:

  > Normalde, `kip` yoksayılıp daima `"rb"` kipi kullanılır. Bunun sebebi PHP'deki zip desteğinin sadece okuma erişimi sağlamasıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

> Bilginize:

> fopen() ve benzerlerinen aksine, zip_entry_open() işlevinin dönüş değeri sadece işlemin sonucunu gösterir ve dizin girdisini okumak veya kapatmak için gerekli değildir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor.

### Ayrıca Bakınız

- zip_entry_close() - Bir dizin girdisini kapatır
- zip_entry_read() - Bir açık dizin girdisini okur

# zip_entry_read

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_entry_read — Bir açık dizin girdisini okur

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_entry_read(resource `$zip_girdisi`, int `$uzunluk` = 1024): string|false

Açık bir dizin girdisini okur.

### Bağımsız Değişkenler

`zip_girdisi`

  zip_read() ile döndürülmüş bir dizin girdisi.

`uzunluk`

  Döndürülecek bayt sayısı.

  > Bilginize:

  > Bu sıkıştırılmamış uzunluk olmalıdır.

### Dönen Değerler

Dosya sonuna gelinmişse boş dizge, bir hata oluşmuşsa `false` yoksa okunan veriyi bir dizge olarak döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::getFromIndex().

### Ayrıca Bakınız

- zip_entry_open() - Okumak için bir dizin girdisi açar
- zip_entry_close() - Bir dizin girdisini kapatır
- zip_entry_filesize() - Bir dizin girdisinin uzunluğunu döndürür

# zip_open

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_open — Bir ZIP dosya arşivi açar

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_open(string `$dosya_adı`): resource|int|false

Okumak için yeni bir ZIP dosya arşivi açar.

### Bağımsız Değişkenler

`dosya_adı`

  Açılacak ZIP arşivinin dosya ismi.

### Dönen Değerler

Normalde, daha sonra zip_read() ve zip_close() ile kullanmak üzere bir dosya tanıtıcısı döndürür veya ya `false` döndürür ya da `dosya_adı` diye bir dosya yoksa veya başka bir hata varsa hata numarası döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::open().

### Ayrıca Bakınız

- zip_read() - Bir ZIP dosya arşivindeki bir sonraki girdiyi okur
- zip_close() - Bir ZIP dosya arşivini kapatır

# zip_read

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.0.0)

zip_read — Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function zip_read(resource `$zip`): resource|false

Bir ZIP dosya arşivindeki bir sonraki girdiyi okur.

### Bağımsız Değişkenler

`zip`

  zip_open() ile açılmış bir ZIP dosyası.

### Dönen Değerler

Normalde, daha sonra `zip_entry_...` işlevleri ile kullanmak üzere bir dizin girdisi özkaynağı döndürür. Okunacak girdi yoksa `false`, bir hata oluşmuşsa hatanın numarasını döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Nesne arayüzünü desteklemek için bu işlevin kullanımı artık önerilmiyor. Bkz: ZipArchive::statIndex().

### Ayrıca Bakınız

- zip_open() - Bir ZIP dosya arşivi açar
- zip_close() - Bir ZIP dosya arşivini kapatır
- zip_entry_open() - Okumak için bir dizin girdisi açar
- zip_entry_read() - Bir açık dizin girdisini okur

## İçindekiler

- zip_close — Bir ZIP dosya arşivini kapatır
- zip_entry_close — Bir dizin girdisini kapatır
- zip_entry_compressedsize — Dizin girdisinin sıkıştırılmış uzunluğunu döndürür
- zip_entry_compressionmethod — Dizin girdisinin sıkıştırma yöntemini döndürür
- zip_entry_filesize — Bir dizin girdisinin uzunluğunu döndürür
- zip_entry_name — Bir dizin girdisinin ismini döndürür
- zip_entry_open — Okumak için bir dizin girdisi açar
- zip_entry_read — Bir açık dizin girdisini okur
- zip_open — Bir ZIP dosya arşivi açar
- zip_read — Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- ZipArchive — ZipArchive sınıfı
  - ZipArchive::addEmptyDir — Yeni bir dizin ekler
  - ZipArchive::addFile — Yolu belirtilen dosyayı arşive ekler
  - ZipArchive::addFromString — İsmi ve içeriği belirtilen dosyayı arşive ekler
  - ZipArchive::addGlob — Add files from a directory by glob pattern
  - ZipArchive::addPattern — Add files from a directory by PCRE pattern
  - ZipArchive::clearError — Clear the status error message, system and/or zip messages
  - ZipArchive::close — Etkin (açık veya oluşturulmuş) arşivi kapatır
  - ZipArchive::count — Counts the number of files in the archive
  - ZipArchive::deleteIndex — İndisi belirtilen girdiyi arşivden siler
  - ZipArchive::deleteName — İsmi belirtilen girdiyi siler
  - ZipArchive::extractTo — Arşiv içeriğini çıkarır
  - ZipArchive::getArchiveComment — Zip arşivinin açıklamasını döndürür
  - ZipArchive::getArchiveFlag — Returns the value of a Zip archive global flag
  - ZipArchive::getCommentIndex — İndisi belirtilen girdinin açıklamasını döndürür
  - ZipArchive::getCommentName — İsmi belirtilen girdinin açıklamasını döndürür
  - ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index
  - ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name
  - ZipArchive::getFromIndex — İndisi belirtilen girdinin içeriğini döndürür
  - ZipArchive::getFromName — İsmi belirtilen girdinin içeriğini döndürür
  - ZipArchive::getNameIndex — İndisi belirtilen girdinin ismini döndürür
  - ZipArchive::GetStatusString — Durum hata iletilerini, sistem ve/veya zip iletilerini döndürür
  - ZipArchive::getStream — İsmi belirtilen girdi için dosya tanıtıcısı (salt okunur) döndürür
  - ZipArchive::getStreamIndex — Get a file handler to the entry defined by its index (read only)
  - ZipArchive::getStreamName — Get a file handler to the entry defined by its name (read only)
  - ZipArchive::isCompressionMethodSupported — Check if a compression method is supported by libzip
  - ZipArchive::isEncryptionMethodSupported — Check if a encryption method is supported by libzip
  - ZipArchive::locateName — İsmi belirtilen girdinin indisini döndürür
  - ZipArchive::open — Bir ZIP dosya arşivi açar
  - ZipArchive::registerCancelCallback — Register a callback to allow cancellation during archive close.
  - ZipArchive::registerProgressCallback — Register a callback to provide updates during archive close.
  - ZipArchive::renameIndex — İndisi belirtilen girdinin ismini değiştirir
  - ZipArchive::renameName — İsmi belirtilen girdinin ismini değiştirir
  - ZipArchive::replaceFile — Replace file in ZIP archive with a given path
  - ZipArchive::setArchiveComment — Bir ZIP arşivine açıklama ekler
  - ZipArchive::setArchiveFlag — Set a global flag of a ZIP archive
  - ZipArchive::setCommentIndex — İndisi belirtilen girdiye bir açıklama ekler
  - ZipArchive::setCommentName — İsmi belirtilen girdiye bir açıklama ekler
  - ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index
  - ZipArchive::setCompressionName — Set the compression method of an entry defined by its name
  - ZipArchive::setEncryptionIndex — Set the encryption method of an entry defined by its index
  - ZipArchive::setEncryptionName — Set the encryption method of an entry defined by its name
  - ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index
  - ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
  - ZipArchive::setMtimeIndex — Set the modification time of an entry defined by its index
  - ZipArchive::setMtimeName — Set the modification time of an entry defined by its name
  - ZipArchive::setPassword — Set the password for the active archive
  - ZipArchive::statIndex — İndisi belirtilen girdiyle ilgili bilgileri döndürür
  - ZipArchive::statName — İsmi belirtilen girdiyle ilgili bilgileri döndürür
  - ZipArchive::unchangeAll — Arşivde yapılmış değişikliklerin tamamını geri alır
  - ZipArchive::unchangeArchive — Arşiv bilgilerinde yapılmış değişiklikleri geri alır
  - ZipArchive::unchangeIndex — İndisi belirtilen girdideki değişiklikleri geri alır
  - ZipArchive::unchangeName — İsmi belirtilen girdideki değişiklikleri geri alır
- Zip İşlevleri
  - zip_close — Bir ZIP dosya arşivini kapatır
  - zip_entry_close — Bir dizin girdisini kapatır
  - zip_entry_compressedsize — Dizin girdisinin sıkıştırılmış uzunluğunu döndürür
  - zip_entry_compressionmethod — Dizin girdisinin sıkıştırma yöntemini döndürür
  - zip_entry_filesize — Bir dizin girdisinin uzunluğunu döndürür
  - zip_entry_name — Bir dizin girdisinin ismini döndürür
  - zip_entry_open — Okumak için bir dizin girdisi açar
  - zip_entry_read — Bir açık dizin girdisini okur
  - zip_open — Bir ZIP dosya arşivi açar
  - zip_read — Bir ZIP dosya arşivindeki bir sonraki girdiyi okur

# Zlib Sıkıştırması

# Giriş

Bu modül, gzip sıkıştırmalı dosyalarla (sıkıştırılmamış olanlarla da fakat soketlerle değil) çalışabilen dosya sistemi işlevlerinin bazıları üzerinden gzip (.gz) sıkıştırmalı dosyaların okunup yazılabilmesini sağlar.

> Bilginize:

> PHP .gz uzantılı dosyalar için bir fopen sarmalayıcısı da içerir. Bu konuda daha fazla bilgi için bkz: zlib://

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

Bu modül, Jean-loup Gailly ve Mark Adler tarafından geliştirilen » zlib işlevlerini kullanır. Bu modül ile zlib'in 1.2.0.4 ve üstü sürümlerini kullanmalısınız.

## Kurulum

Zlib desteği PHP'de öntanımlı olarak etkin değildir. Etkin olması için PHP'yi --with-zlib[=DiZiN] seçeneği ile derlemelisiniz.

PHP'nin Windows sürümünde bu eklenti yerleşik olarak gelmektedir. Bu işlevleri Windows'ta kullanmak için herhangi bir eklenti kurulmasına gerek yoktur.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Zlib eklentisi, istek yapan tarayıcı desteklediği takdirde, sayfaların şeffaf olarak sıkıştırılmasını sağlar. Eklentinin php.ini yapılandırma dosyasında üç yönergesi vardır.

Zlib Yapılandırma Yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
zlib.output_compression | "0" | `INI_ALL` |
zlib.output_compression_level | "-1" | `INI_ALL` |
zlib.output_handler | "" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`zlib.output_compression` bool/int

  Sayfanın şeffaf olarak sıkıştırılıp sıkıştırılmayacağı. Bu yönergeye php.ini içinde veya Apache yapılandırmasında "On" değerini belirtirseniz ve tarayıcı istek yaparken bir "Accept-Encoding: gzip" veya "deflate" başlığı gönderirse sayfalar sıkıştırılır ve çıktıya istek yapılan başlığa göre (sırasıyla) "Content-Encoding: gzip" veya "Vary: Accept-Encoding" başlığı eklenir. Çalışma anında herhangi bir çıktı göndermeden önce de bu yönergeye "On" atanabilir.

  Bu seçenek "On"/"Off" değerlerinden başka tamsayı değerler de kabul eder. Tamsayı değerle çıktı tamponunun boyutunu belirleyebilirsiniz (öntanımlı olarak 4 kB'tır).

  > Bilginize:

  > Bu yönergeye "On" atandığı takdirde output_handler boş olmalıdır! Yerine `zlib.output_handler` kullanılmalıdır.

`zlib.output_compression_level` int

  Çıktının şeffaf olarak sıkıştırılması için kullanılacak sıkıştırma seviyesi. 0 (sıkıştırma yok) ile 9 (en fazla sıkıştırma) arasında bir değer olarak belirtilir. Öntanımlı değer -1 olup, kullanılacak sıkıştırma seviyesine sunucu karar verir.

`zlib.output_handler` string

  php.ini dosyanızda zlib.output_compression yönergesini etkin kılmışsanız ek çıktı eylemcileri belirtemezsiniz. Bu ayar output_handler gibi yapılır fakat birlikle kullanılamazlar.

## Özkaynak Türleri

Bu eklenti gzopen() işlevinden dönen bir dosya tanıtıcısı tanımlar. PHP 8.0.0 öncesinde `zlib.deflate` ve `zlib.inflate` özkaynakları da tanımlıydı.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`FORCE_GZIP` (int)
`FORCE_DEFLATE` (int)
`ZLIB_ENCODING_RAW` (int)
  RFC 1951'e göre DEFLATE algoritması.
`ZLIB_ENCODING_DEFLATE` (int)
  RFC 1950'ye göre ZLIB sıkıştırma algoritması.
`ZLIB_ENCODING_GZIP` (int)
  RFC 1952'ye göre GZIP algoritması.
`ZLIB_FILTERED` (int)
`ZLIB_HUFFMAN_ONLY` (int)
`ZLIB_FIXED` (int)
`ZLIB_RLE` (int)
`ZLIB_DEFAULT_STRATEGY` (int)
`ZLIB_BLOCK` (int)
`ZLIB_NO_FLUSH` (int)
`ZLIB_PARTIAL_FLUSH` (int)
`ZLIB_SYNC_FLUSH` (int)
`ZLIB_FULL_FLUSH` (int)
`ZLIB_FINISH` (int)
`ZLIB_VERSION` (string)
  Bir string olarak `zlib` sürüm numarası.
`ZLIB_VERNUM` (int)
  Bir int olarak `zlib` sürüm numarası.
`ZLIB_OK` (int)
  Herhangi bir hata veya ek durum bilgisi yok.
`ZLIB_STREAM_END` (int)
  Akım başarıyla sonlandı.
`ZLIB_NEED_DICT` (int)
  Önceden ayarlanmış bir sözlüğe ihtiyaç var.
`ZLIB_ERRNO` (int)
  Dosya işlem hatası.
`ZLIB_STREAM_ERROR` (int)
  Akım durumu tutarsız veya bir bağımsız değişken geçersiz.
`ZLIB_DATA_ERROR` (int)
  Girdi verisi bozuk.
`ZLIB_MEM_ERROR` (int)
  Yetersiz bellek.
`ZLIB_BUF_ERROR` (int)
  Yetersiz tampon alanı veya girdi akımının beklenmedik şekilde sonlanması nedeniyle ilerleme sağlanamıyor.
`ZLIB_VERSION_ERROR` (int)
  `zlib` kütüphane sürümü, çağrıcının varsaydığı sürümle uyumlu değil.

# Örnekler

Bu örnek geçici bir dosya açar ve içine bir deneme dizgesi yazdıktan sonra dosya içeriğini iki defa basar.

Örnek 1 - Küçük bir Zlib örneği

    <?php

    $filename = tempnam('/tmp', 'zlibtest') . '.gz';
    echo "<html>\n<head></head>\n<body>\n<pre>\n";
    $s = "Only a test, test, test, test, test, test, test, test!\n";

    // dosyayı azami sıkıştırmayla açalım
    $zp = gzopen($filename, "w9");

    // dizgeyi dosyaya yazalım
    gzwrite($zp, $s);

    // dosyayı kapatalım
    gzclose($zp);

    // dosyayı okumak için açalım
    $zp = gzopen($filename, "r");

    // 3 karakter okuyalım
    echo gzread($zp, 3);

    // dosyayı sonuna kadar çıktılayıp kapatalım.
    gzpassthru($zp);
    gzclose($zp);

    echo "\n";

    // dosyayı açıp içeriğini basalım (ikinci kez).
    if (readgzfile($filename) != strlen($s)) {
            echo "Zlib işlevlerinde hata!";
    }
    unlink($filename);
    echo "</pre>\n</body>\n</html>\n";

    ?>

Örnek 2 - Ardışık sıkıştırma ve açma arayüzü örneği

    <?php
    // GZIP sıkıştırması gerçekleştirelim:
    $deflateContext = deflate_init(ZLIB_ENCODING_GZIP);
    $compressed = deflate_add($deflateContext, "Sıkıştırılacak veri", ZLIB_NO_FLUSH);
    $compressed .= deflate_add($deflateContext, ", biraz daha", ZLIB_NO_FLUSH);
    $compressed .= deflate_add($deflateContext, " ve biraz daha!", ZLIB_FINISH);

    // GZIP sıkıştırmasını açalım:
    $inflateContext = inflate_init(ZLIB_ENCODING_GZIP);
    $uncompressed = inflate_add($inflateContext, $compressed, ZLIB_NO_FLUSH);
    $uncompressed .= inflate_add($inflateContext, NULL, ZLIB_FINISH);
    echo $uncompressed;
    ?>

Yukarıdaki örneğin çıktısı:

    Sıkıştırılacak veri, biraz daha, ve biraz daha!

# Zlib İşlevleri

# deflate_add

(PHP 7, PHP 8)

deflate_add — Incrementally deflate data

### Açıklama

function deflate_add(DeflateContext `$context`, string `$data`, int `$flush_mode` = `ZLIB_SYNC_FLUSH`): string|false

Incrementally deflates data in the specified context.

### Bağımsız Değişkenler

`context`

  A context created with deflate_init().

`data`

  A chunk of data to compress.

`flush_mode`

  One of `ZLIB_BLOCK`, `ZLIB_NO_FLUSH`, `ZLIB_PARTIAL_FLUSH`, `ZLIB_SYNC_FLUSH` (default), `ZLIB_FULL_FLUSH`, `ZLIB_FINISH`. Normally you will want to set `ZLIB_NO_FLUSH` to maximize compression, and `ZLIB_FINISH` to terminate with the last chunk of data. See the » zlib manual for a detailed description of these constants.

### Dönen Değerler

Returns a chunk of compressed data, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If invalid arguments are given, an error of level `E_WARNING` is generated.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `context` expects a DeflateContext instance now; previously, a resource was expected.

### Ayrıca Bakınız

- deflate_init() - Initialize an incremental deflate context

# deflate_init

(PHP 7, PHP 8)

deflate_init — Initialize an incremental deflate context

### Açıklama

function deflate_init(int `$encoding`, array|object `$options` = []): DeflateContext|false

Initializes an incremental deflate context using the specified `encoding`.

Note that the `window` option here only sets the window size of the algorithm, differently from the zlib filters where the same parameter also sets the encoding to use; the encoding must be set with the `encoding` parameter.

Limitation: there is currently no way to set the header information on a GZIP compressed stream, which are set as follows: GZIP signature (`\x1f\x8B`); compression method (`\x08` == DEFLATE); 6 zero bytes; the operating system set to the current system (`\x00` = Windows, `\x03` = Unix, etc.)

### Bağımsız Değişkenler

`encoding`

  One of the `ZLIB_ENCODING_*` constants.

`options`

  An associative array which may contain the following elements:

  level

    The compression level in range -1..9; defaults to -1.

  memory

    The compression memory level in range 1..9; defaults to 8.

  window

    The zlib window size (logarithmic) in range `8`..`15`; defaults to `15`. zlib changes a window size of `8` to `9`, and as of zlib 1.2.8 fails with a warning, if a window size of `8` is requested for `ZLIB_ENCODING_RAW` or `ZLIB_ENCODING_GZIP`.

  strategy

    One of `ZLIB_FILTERED`, `ZLIB_HUFFMAN_ONLY`, `ZLIB_RLE`, `ZLIB_FIXED` or `ZLIB_DEFAULT_STRATEGY` (the default).

  dictionary

    A string or an array of strings of the preset dictionary (default: no preset dictionary).

### Dönen Değerler

Returns a deflate context resource (`zlib.deflate`) on success, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If an invalid option is passed to `options` or the context couldn't be created, an error of level `E_WARNING` is generated.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | On success, this function returns a DeflateContext instance now; previously, a resource was returned.

### Ayrıca Bakınız

- deflate_add() - Incrementally deflate data
- inflate_init() - Initialize an incremental inflate context

# gzclose

(PHP 4, PHP 5, PHP 7, PHP 8)

gzclose — Bir açık gzipli dosya tanıtıcısını kapar

### Açıklama

function gzclose(resource `$dt`): bool

Belirtilen dosya tanıtıcısını kapatır.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - gzclose() örneği

    <?php
    $gz = gzopen('birdosya.gz','w9');
    gzputs ($gz, 'birdosya.gz dosyasına eklenecek veri');
    gzclose($gz);
    ?>

### Ayrıca Bakınız

- gzopen() - Bir gzipli dosya açar

# gzcompress

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

gzcompress — Bir dizgeyi sıkıştırır

### Açıklama

function gzcompress(string `$veri`, int `$seviye` = -1, int `$kodlama` = `ZLIB_ENCODING_DEFLATE`): string|false

Bu işlev belirtilen dizgeyi `ZLIB` veri biçemini kullanarak sıkıştırır.

ZLIB sıkıştırma algoritması hakkında daha ayrıntılı bilgi edinmek için "» ZLIB Sıkıştırılmış Veri Biçemi Belirtiminin 3.3 sürümü" (RFC 1950) belgesine bakınız.

> Bilginize:

> Bu biçem bir takım başlık verileri içeren gzip sıkıştırması ile aynı değildir. Gzip sıkıştırması için gzencode() işlevine bakınız.

### Bağımsız Değişkenler

`veri`

  Sıkıştırılacak veri.

`seviye`

  Sıkıştırma seviyesi. Sıkıştırma olmayacağını belirtmek için 0, azami sıkıştırma için 9'a kadar değer belirtilebilir.

  -1 belitilirse, zlib kütüphanesinin 6 olan öntanımlı sıkıştırması kullanılır.

`kodlama`

  `ZLIB_ENCODING_*` sabitlerinden biri.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmış dizgeyi döndürür.

### Örnekler

Örnek 1 - gzcompress() örneği

    <?php
    $sıkıveri = gzcompress('Sıkıştırılacak veri', 9);
    echo $sıkıveri;
    ?>

### Ayrıca Bakınız

- gzdeflate() - Bir dizgeyi deflate biçeminde sıkıştırır
- gzinflate() - Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
- gzuncompress() - Sıkıştırılmış bir dizgenin sıkıştırmasını açar
- gzencode() - Gzipli bir dizge oluşturur

# gzdecode

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

gzdecode — Gzipli bir dizgenin sıkıştırmasını açar

### Açıklama

function gzdecode(string `$veri`, int `$uzunluk` = 0): string|false

Belirtilen `veri` dizgesinin gzip sıkıştırmalı biçemini döndürür.

### Bağımsız Değişkenler

`veri`

  gzencode() tarafından sıkıştırılmış veri.

`uzunluk`

  Kodu çözülecek verinin azami uzunluğu.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmamış dizgeyi döndürür.

### Hatalar/İstisnalar

Bir hata oluşursa, `E_WARNING` seviyesinde bir hata çıktılanır.

### Ayrıca Bakınız

- gzencode() - Gzipli bir dizge oluşturur

# gzdeflate

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gzdeflate — Bir dizgeyi deflate biçeminde sıkıştırır

### Açıklama

function gzdeflate(string `$veri`, int `$seviye` = -1, int `$kodlama` = `ZLIB_ENCODING_RAW`): string|false

Bu işlev belirtilen veriyi `DEFLATE` veri biçemini kullanarak sıkıştırır.

DEFLATE sıkıştırma algoritması hakkında daha ayrıntılı bilgi edinmek için "» DEFLATE Sıkıştırılmış Veri Biçemi Belirtiminin 1.3 sürümü" (RFC 1951) belgesine bakınız.

### Bağımsız Değişkenler

`data`

  Sıkıştırılacak veri.

`seviye`

  Sıkıştırma seviyesi. Sıkıştırma olmayacağını belirtmek için 0, azami sıkıştırma için 9'a kadar değer belirtilebilir. Belirtilmezse, öntanımlı sıkıştırma seviyesi zlib kütüphanesinin öntanımlı sıkıştırma seviyesine eşit olacaktır.

`kodlama`

  `ZLIB_ENCODING_*` sabitlerinden biri.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmış dizgeyi döndürür.

### Örnekler

Örnek 1 - gzdeflate() örneği

    <?php
    $sıkıveri = gzdeflate('Sıkıştırılacak veri', 9);
    echo $sıkıveri;
    ?>

### Ayrıca Bakınız

- gzinflate() - Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
- gzcompress() - Bir dizgeyi sıkıştırır
- gzuncompress() - Sıkıştırılmış bir dizgenin sıkıştırmasını açar
- gzencode() - Gzipli bir dizge oluşturur

# gzencode

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gzencode — Gzipli bir dizge oluşturur

### Açıklama

function gzencode(string `$veri`, int `$seviye` = -1, int `$kodlama` = `ZLIB_ENCODING_GZIP`): string|false

Bu işlev `veri` dizgesinin gzip programının çıktısı ile uyumlu olarak sıkıştırılmış halini döndürür.

GZIP sıkıştırma algoritması hakkında daha ayrıntılı bilgi edinmek için "» GZIP Sıkıştırılmış Dosya Biçemi Belirtiminin 4.3 sürümü" (RFC 1952) belgesine bakınız.

### Bağımsız Değişkenler

`veri`

  Sıkıştırılacak veri.

`seviye`

  Sıkıştırma seviyesi. Sıkıştırma olmayacağını belirtmek için 0, azami sıkıştırma için 9'a kadar değer belirtilebilir. Belirtilmezse, öntanımlı sıkıştırma seviyesi zlib kütüphanesinin öntanımlı sıkıştırma seviyesine eşit olacaktır.

`kodlama`

  Kodlama kipi. `FORCE_GZIP` (öntanımlı) veya `FORCE_DEFLATE` olabilir.

  `FORCE_DEFLATE` bir zlib başlığı, deflate biçemli veri ve bir Adler sağlama toplamından oluşan RFC 1950 uyumlu bir çıktı üretir.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmış dizgeyi döndürür.

### Örnekler

Sonuçlanan dizge, standart bir .gz dosyasının içerebileceği uygun başlıkları ve veri yapısını içerir.

Örnek 1 - Bir gzip dosyası oluşturmak

    <?php
    $veri = file_get_contents("bigfile.txt");
    $sıkıveri = gzencode($veri, 9);
    file_put_contents("bigfile.txt.gz", $sıkıveri);
    ?>

### Ayrıca Bakınız

- gzdecode() - Gzipli bir dizgenin sıkıştırmasını açar
- gzdeflate() - Bir dizgeyi deflate biçeminde sıkıştırır
- gzinflate() - Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
- gzuncompress() - Sıkıştırılmış bir dizgenin sıkıştırmasını açar
- gzcompress() - Bir dizgeyi sıkıştırır
- » ZLIB Sıkıştırmalı Veri Biçemi Belirtimi (RFC 1950)

# gzeof

(PHP 4, PHP 5, PHP 7, PHP 8)

gzeof — Gzipli dosya tanıtıcında dosya sonunu sınar

### Açıklama

function gzeof(resource `$dt`): bool

Gzipli dosya tanıtıcısında dosya sonuna gelinmişse `true` döndürür.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Gzipli dosya tanıtıcısında dosya sonuna gelinmişse veya bir hata oluşmuşsa `true` aksi takdirde `false` döndürür.

### Örnekler

Örnek 1 - gzeof() örneği

    <?php
    $gz = gzopen('birdosya.gz', 'r');
    while (!gzeof($gz)) {
      echo gzgetc($gz);
    }
    gzclose($gz);
    ?>

# gzfile

(PHP 4, PHP 5, PHP 7, PHP 8)

gzfile — Gzipli dosyayı bir dizi içinde döndürür

### Açıklama

function gzfile(string `$dosyaismi`, int `$include_path_kullan` = 0): array|false

Dosyanın içeriğini bir dizide döndürmesi dışında readgzfile() ile aynıdır.

### Bağımsız Değişkenler

`dosyaismi`

  Okunacak dosyanın ismi.

`include_path_kullan`

  Bu isteğe bağlı bağımsız değişkenle 1 değerini aktarırsanız dosyanın include_path yönergesindeki yollarda da aranmasını sağlamış olursunuz.

### Dönen Değerler

Her elemanında bir satır içermek üzere dosyayı içeren dizi ile döner. Boş satırlar dahildir ve satırsonu karakterleri kaldırılmaz, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - gzfile() örneği

    <?php
    $satırlar = gzfile('birdosya.gz');
    foreach ($satırlar as $satır) {
        echo $satır;
    }
    ?>

### Ayrıca Bakınız

- readgzfile() - Bir .gz dosyası çıktılar
- gzopen() - Bir gzipli dosya açar

# gzgetc

(PHP 4, PHP 5, PHP 7, PHP 8)

gzgetc — Gzipli dosya göstericisindeki karakteri döndürür

### Açıklama

function gzgetc(resource `$dt`): string|false

Dosya tanıtıcı belirtilen akımdan (sıkıştırılmamış) tek bir karakter içeren bir dizge döndürür.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Sıkıştırılmamış karakteri veya (gzeof()'tan farklı olarak) dosya sonuna gelinmişse `false` döndürür.

### Örnekler

Örnek 1 - gzgetc() örneği

    <?php
    $gz = gzopen('birdosya.gz', 'r');
    while (!gzeof($gz)) {
      echo gzgetc($gz);
    }
    gzclose($gz);
    ?>

### Ayrıca Bakınız

- gzopen() - Bir gzipli dosya açar
- gzgets() - Gzipli dosya tanıtıcısından bir satır döndürür

# gzgets

(PHP 4, PHP 5, PHP 7, PHP 8)

gzgets — Gzipli dosya tanıtıcısından bir satır döndürür

### Açıklama

function gzgets(resource `$dt`, ?int `$uzunluk` = `null`): string|false

Belirtilen dosya tanıtıcısında mevcut konumdan itibaren en fazla (sıkıştırılmamış) `uzunluk` - 1 bayt okur. Okuma işlemi `uzunluk` - 1 baytta, ilk satırsonu karakterinde veya dosya sonuna gelindiğinde (hangisi önce olursa) durur.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

`uzunluk`

  Okunacak verinin uzunluğu.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmamış dizgeyi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `uzunluk` artık `null` olabiliyor; evvelce, `1024` öntanımlıydı.

### Örnekler

Örnek 1 - gzgets() örneği

    <?php
    $dt = gzopen('birdosya.gz', 'r');
    while (!gzeof($dt)) {
       $tampon = gzgets($dt, 4096);
       echo $tampon;
    }
    gzclose($dt);
    ?>

### Ayrıca Bakınız

- gzopen() - Bir gzipli dosya açar
- gzgetc() - Gzipli dosya göstericisindeki karakteri döndürür
- gzwrite() - Bir dizgeyi bir gzipli dosyaya ikil kipte yazar

# gzgetss

(PHP 4, PHP 5, PHP 7)

gzgetss — Gzipli dosya tanıtıcısından bir satır okuyup HTML etiketlerinden arındırır

Uyarı

Bu işlevin kullanımı PHP 7.3.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function gzgetss(resource `$dt`, int `$uzunluk`, string `$izinli_etiketler` = ?): string

Okuduğu satırdan HTML ve PHP etiketlerini ayıklaması dışında gzgets() işlevi ile aynıdır.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

`uzunluk`

  Okunacak verinin uzunluğu.

`izinli_etiketler`

  Bu isteğe bağlı bağımsız değişkende ayıklanmayacak etiketleri belirtebilirsiniz.

### Dönen Değerler

Bir hata oluşursa `false` aksi takdirde sıkıştırılmamış ve etiketleri ayıklanmış dizgeyi döndürür.

### Örnekler

Örnek 1 - gzgetss() örneği

    <?php
    $dt = gzopen('birdosya.gz', 'r');
    while (!gzeof($dt)) {
       $tampon = gzgetss($dt, 4096);
       echo $tampon;
    }
    gzclose($dt);
    ?>

### Ayrıca Bakınız

- gzopen() - Bir gzipli dosya açar
- gzgets() - Gzipli dosya tanıtıcısından bir satır döndürür
- strip_tags() - Bir dizgeden HTML ve PHP etiketlerini ayıklar

# gzinflate

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gzinflate — Deflate sıkıştırmalı bir verinin sıkıştırmasını açar

### Açıklama

function gzinflate(string `$veri`, int `$uzunluk` = 0): string|false

Deflate sıkıştırmalı bir verinin sıkıştırmasını açar.

### Bağımsız Değişkenler

`veri`

  gzdeflate() tarafından sıkıştırılmış veri.

`uzunluk`

  Kodu çözülmüş verinin azami uzunluğu.

### Dönen Değerler

Bir hata durumunda `false` aksi takdirde verinin sıkıştırılmamış halini döndürür.

Sıkıştırılmamış veri uzunluğu, sıkıştırılmış `veri`'nin 32768 mislinden uzunsa veya seçimlik `uzunluk` bağımsız değişkeninde sıfırdan büyük bir değer belirtilmesi durumunda belirtilen değerden daha uzunsa bu işlev bir hata döndürür.

### Örnekler

Örnek 1 - gzinflate() örneği

    <?php
    $sımsıkı = gzdeflate('Sıkıştırılacak veri', 9);
    $normal = gzinflate($sımsıkı);
    echo $normal;
    ?>

### Ayrıca Bakınız

- gzdeflate() - Bir dizgeyi deflate biçeminde sıkıştırır
- gzcompress() - Bir dizgeyi sıkıştırır
- gzuncompress() - Sıkıştırılmış bir dizgenin sıkıştırmasını açar
- gzencode() - Gzipli bir dizge oluşturur

# gzopen

(PHP 4, PHP 5, PHP 7, PHP 8)

gzopen — Bir gzipli dosya açar

### Açıklama

function gzopen(string `$dosyaismi`, string `$kip`, int `$include_path_kullan` = 0): resource|false

Okuma veya yazma amacıyla bir gzipli (.gz) dosya açar.

gzopen() işlevi henüz sıkıştırılmamış dosyaları okumak için açmakta da kullanılabilir. Bu durumda gzread(), sıkıştırmasız dosyayı doğrudan okuyacaktır.

### Bağımsız Değişkenler

`dosyaismi`

  Gzipli dosyanın ismi.

`kip`

  fopen() işlevindeki gibi (`rb` veya `wb`) olmakla birlikte ayrıca bir sıkıştırma seviyesiyle (`wb9` gibi) birlikte bir strateji de belirtilebilir: `wb6f` örneğindeki gibi süzgeçli veri için `f`; `wb1h` örneğindeki gibi `sadece Huffman sıkıştırması` için `h`. (Bu strateji bağımsız değişkenleri hakkında daha ayrıntılı bilgi için zlib.h dosyasındaki `deflateInit2` açıklamasına bakınız.)

`include_path_kullan`

  Bu isteğe bağlı bağımsız değişkene `1` belirtirseniz dosya ayrıca include_path yönergesinde belirtilen yolarda da aranır.

### Dönen Değerler

Açılan dosyaya bir dosya tanıtıcısı döndürür. Bu dosya tanıtıcısını kullanarak, (şeffaf olarak) sıkıştırılmış dosyadan herşeyi sıkıştırılmamış olarak okuyabilir ve dosyaya herşeyi sıkıştırılmış olarak yazabilirsiniz.

Açma işlemi başarısız olursa işlev `false` döndürür.

### Örnekler

Örnek 1 - gzopen() örneği

    <?php
    $dt = gzopen("/tmp/dosya.gz", "r");
    ?>

### Ayrıca Bakınız

- gzclose() - Bir açık gzipli dosya tanıtıcısını kapar

# gzpassthru

(PHP 4, PHP 5, PHP 7, PHP 8)

gzpassthru — Gzipli dosya tanıtıcısında kalan verinin tamamını çıktılar

### Açıklama

function gzpassthru(resource `$dt`): int

Belirtilen dosya tanıtıcısında mevcut konumdan dosya sonuna kadar okur ve (sıkıştırılmamış) sonucu standart çıktıya gönderir.

> Bilginize:

> Veriyi dosyaya yazdıktan sonra çıktılamak isterseniz dosya göstericisini akımın başlangıcına taşımak için gzrewind() işlevini kullanmalısınız.

İpucu

Tek isteğiniz dosya içeriğini değiştirmeden ve dosya içinde belli bir konuma gitmeden içeriği çıktı tamponuna dökümlemekse readgzfile() işlevini kullanarak fazladan bir gzopen() çağrısı yapmaktan kurtulursunuz.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Belirtilen dosya tanıtıcısından okunan sıkıştırılmamış karakter sayısı döner.

### Örnekler

Örnek 1 - gzpassthru() örneği

    <?php
    $dt = gzopen('dosya.gz', 'r');
    gzpassthru($dt);
    gzclose($dt);
    ?>

# gzputs

(PHP 4, PHP 5, PHP 7, PHP 8)

gzputs — gzwrite() işlevinin takma adıdır

### Açıklama

Bu işlev gzwrite() işlevinin takma adıdır.

# gzread

(PHP 4, PHP 5, PHP 7, PHP 8)

gzread — Gzipli dosyayı ikil kipte okur

### Açıklama

function gzread(resource `$dt`, int `$uzunluk`): string|false

gzread() işlevi belirtilen dosya tanıtıcısından `uzunluk` bayt okur. Okuma işlemi, gzipli dosya akımından (sıkıştırılmamış) `uzunluk` bayt okununca veya dosya sonuna gelindiğinde (hangisi önce olursa) durur.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

`uzunluk`

  Okunacak sıkıştırılmamış bayt sayısı.

### Dönen Değerler

Okunan veri ile döner, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - gzread() örneği

    <?php
    // gzipli dosyanın içeriğini dizgeye yazar
    $dosya = "/usr/local/birdosya.txt.gz";
    $dt = gzopen($dosya, "r");
    $içerik = gzread($dt, 10000);
    gzclose($dt);
    ?>

### Ayrıca Bakınız

- gzwrite() - Bir dizgeyi bir gzipli dosyaya ikil kipte yazar
- gzopen() - Bir gzipli dosya açar
- gzgets() - Gzipli dosya tanıtıcısından bir satır döndürür
- gzgetss() - Gzipli dosya tanıtıcısından bir satır okuyup HTML etiketlerinden arındırır
- gzfile() - Gzipli dosyayı bir dizi içinde döndürür
- gzpassthru() - Gzipli dosya tanıtıcısında kalan verinin tamamını çıktılar

# gzrewind

(PHP 4, PHP 5, PHP 7, PHP 8)

gzrewind — Gzipli dosya göstericisini dosya başlangıcına taşır

### Açıklama

function gzrewind(resource `$dt`): bool

Belirtilen dosya tanıtıcısında dosya göstericisini dosya akımının başlangıcına taşır.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- gzseek() - Gzipli dosya göstericisini konumlar
- gztell() - Gzipli dosya tanıtıcısının okuma/yazma konumunu döndürür

# gzseek

(PHP 4, PHP 5, PHP 7, PHP 8)

gzseek — Gzipli dosya göstericisini konumlar

### Açıklama

function gzseek(resource `$dt`, int `$konum`, int `$nereye` = `SEEK_SET`): int

Belirtilen dosya tanıtıcısında dosya göstericisini belirtilen konuma taşır. `gzseek(dt, konum, SEEK_SET)` C çağrısına eşdeğerdir.

Dosya okumak için açılmışsa bu işlev yine de taklit edilir ama işlem oldukça yavaşlar. Dosya yazmak için açılmışsa sadece ileri yönde konumlamalar desteklenir; gzseek() konumlamanın ardından yeni konuma kadar olan bölgeyi sıfırlarla doldurur.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

`konum`

  Göstericinin götürüleceği konum.

`nereye`

  Olası `nereye` değerleri:

  - `SEEK_SET` - Gösterici, tam `konum`uncu bayta yerleştirilir.
  - `SEEK_CUR` - Gösterici, mevcut konum artı `konum`uncu bayta yerleştirilir.

  `nereye` bağımsız değişkeni belirtilmezse `SEEK_SET` belirtilmiş gibi işlem yapılır.

### Dönen Değerler

Başarı durumunda 0, aksi takdirde -1 döner. Dosya sonunun sonrasına yapılan bir konumlama bir hata olarak değerlendirilmez.

### Örnekler

Örnek 1 - gzseek() örneği

    <?php
    $gz = gzopen('birdosya.gz', 'r');
    gzseek($gz,2);
    echo gzgetc($gz);
    gzclose($gz);
    ?>

### Ayrıca Bakınız

- gztell() - Gzipli dosya tanıtıcısının okuma/yazma konumunu döndürür
- gzrewind() - Gzipli dosya göstericisini dosya başlangıcına taşır

# gztell

(PHP 4, PHP 5, PHP 7, PHP 8)

gztell — Gzipli dosya tanıtıcısının okuma/yazma konumunu döndürür

### Açıklama

function gztell(resource `$dt`): int|false

Belirtilen dosya tanıtıcısının, yani sıkıştırılmamış dosya akımının okuma/yazma konumunu döndürür.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

### Dönen Değerler

Dosya göstericisinin yeri veya bir hata oluşmuşsa `false` döner.

### Ayrıca Bakınız

- gzopen() - Bir gzipli dosya açar
- gzseek() - Gzipli dosya göstericisini konumlar
- gzrewind() - Gzipli dosya göstericisini dosya başlangıcına taşır

# gzuncompress

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

gzuncompress — Sıkıştırılmış bir dizgenin sıkıştırmasını açar

### Açıklama

function gzuncompress(string `$veri`, int `$uzunluk` = 0): string|false

Bu işlev sıkıştırılmış bir dizgenin sıkıştırmasını açar.

### Bağımsız Değişkenler

`veri`

  gzcompress() tarafından sıkıştırılmış veri.

`uzunluk`

  Kodu çözülecek verinin azami uzunluğu.

### Dönen Değerler

Verinin sıkıştırılmamış halini veya bir hata oluşması halinde `false` döndürür.

Sıkıştırılmamış veri uzunluğu isteğe bağlı `uzunluk` ile belirtilenden veya sıkıştırılmış `veri`'nin 32768 mislinden uzunsa bu işlev bir hata döndürür.

### Örnekler

Örnek 1 - gzuncompress() örneği

    <?php
    $compressed   = gzcompress('Sıkıştırılacak veri', 9);
    $uncompressed = gzuncompress($compressed);
    echo $uncompressed;
    ?>

### Ayrıca Bakınız

- gzcompress() - Bir dizgeyi sıkıştırır
- gzinflate() - Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
- gzdeflate() - Bir dizgeyi deflate biçeminde sıkıştırır
- gzencode() - Gzipli bir dizge oluşturur

# gzwrite

(PHP 4, PHP 5, PHP 7, PHP 8)

gzwrite — Bir dizgeyi bir gzipli dosyaya ikil kipte yazar

### Açıklama

function gzwrite(resource `$dt`, string `$dizge`, ?int `$length` = `null`): int|false

gzwrite() işleve belirtilen `dizge` dizgesini belirtilen dosya tanıtıcısına sıkıştırarak yazar.

### Bağımsız Değişkenler

`dt`

  Gzipli dosya tanıtıcısı. gzopen() tarafından açılmış bir dosyayı gösteren geçerli bir tanıtıcı olmalıdır.

`dizge`

  Sıkıştırılarak dosyaya yazılacak dizge.

`uzunluk`

  Yazılacak sıkıştırılmamış bayt sayısı. Belirtilmişse yazma işlemi sıkıştırılmamış `uzunluk` bayt yazıldıktan sonra veya dosya sonuna gelindiğinde (hangisi önce olursa) durur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `uzunluk` artık `null` olabiliyor; evvelce `0` öntanımlıydı.
7.4.0 | Başarısızlık durumunda artık `false` dönüyor; evvelce `0` dönerdi.

### Dönen Değerler

Belirtilen sıkıştırılmış dosya akımına yazılan sıkıştırılmamış bayt sayısı ile döner, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - gzwrite() örneği

    <?php
    $dizge = 'Sıkıştırılacak bir takım bilgiler';
    $gz = gzopen('birdosya.gz','w9');
    gzwrite($gz, $dizge);
    gzclose($gz);
    ?>

### Ayrıca Bakınız

- gzread() - Gzipli dosyayı ikil kipte okur
- gzopen() - Bir gzipli dosya açar

# inflate_add

(PHP 7, PHP 8)

inflate_add — Incrementally inflate encoded data

### Açıklama

function inflate_add(InflateContext `$context`, string `$data`, int `$flush_mode` = `ZLIB_SYNC_FLUSH`): string|false

Incrementally inflates encoded data in the specified `context`.

Limitation: header information from GZIP compressed data are not made available.

### Bağımsız Değişkenler

`context`

  A context created with inflate_init().

`data`

  A chunk of compressed data.

`flush_mode`

  One of `ZLIB_BLOCK`, `ZLIB_NO_FLUSH`, `ZLIB_PARTIAL_FLUSH`, `ZLIB_SYNC_FLUSH` (default), `ZLIB_FULL_FLUSH`, `ZLIB_FINISH`. Normally you will want to set `ZLIB_NO_FLUSH` to maximize compression, and `ZLIB_FINISH` to terminate with the last chunk of data. See the » zlib manual for a detailed description of these constants.

### Dönen Değerler

Returns a chunk of uncompressed data, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If invalid parameters are given, inflating the data requires a preset dictionary, but none is specified, the compressed stream is corrupt or has an invalid checksum, an error of level `E_WARNING` is generated.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `context` expects an InflateContext instance now; previously, a resource was expected.

### Ayrıca Bakınız

- inflate_init() - Initialize an incremental inflate context

# inflate_get_read_len

(PHP 7 >= 7.2.0, PHP 8)

inflate_get_read_len — Get number of bytes read so far

### Açıklama

function inflate_get_read_len(InflateContext `$context`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`context`

### Dönen Değerler

Returns number of bytes read so far başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `context` expects an InflateContext instance now; previously, a resource was expected.

# inflate_get_status

(PHP 7 >= 7.2.0, PHP 8)

inflate_get_status — Get decompression status

### Açıklama

function inflate_get_status(InflateContext `$context`): int

Usually returns either `ZLIB_OK` or `ZLIB_STREAM_END`.

### Bağımsız Değişkenler

`context`

### Dönen Değerler

Returns decompression status.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `context` expects an InflateContext instance now; previously, a resource was expected.

# inflate_init

(PHP 7, PHP 8)

inflate_init — Initialize an incremental inflate context

### Açıklama

function inflate_init(int `$encoding`, array|object `$options` = []): InflateContext|false

Initialize an incremental inflate context with the specified `encoding`.

### Bağımsız Değişkenler

`encoding`

  One of the `ZLIB_ENCODING_*` constants.

`options`

  An associative array which may contain the following elements:

  level

    The compression level in range -1..9; defaults to -1.

  memory

    The compression memory level in range 1..9; defaults to 8.

  window

    The zlib window size (logarithmic) in range 8..15; defaults to 15.

  strategy

    One of `ZLIB_FILTERED`, `ZLIB_HUFFMAN_ONLY`, `ZLIB_RLE`, `ZLIB_FIXED` or `ZLIB_DEFAULT_STRATEGY` (the default).

  dictionary

    A string or an array of strings of the preset dictionary (default: no preset dictionary).

### Dönen Değerler

Returns an inflate context resource (`zlib.inflate`) on success, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If an invalid encoding or option is passed to `options`, or the context couldn't be created, an error of level `E_WARNING` is generated.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | On success, this function returns an InflateContext instance now; previously, a resource was returned.

### Notlar

Dikkat

Unlike gzinflate(), incremental inflate contexts do not constrain the length of the decoded data, so provide no automatic protection against Zip bombs.

### Ayrıca Bakınız

- inflate_add() - Incrementally inflate encoded data
- deflate_init() - Initialize an incremental deflate context

# ob_gzhandler

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ob_gzhandler — ob_start callback function to gzip output buffer

### Açıklama

function ob_gzhandler(string `$data`, int `$flags`): string|false

ob_gzhandler() is intended to be used as a callback function for ob_start() to help facilitate sending gz-encoded data to web browsers that support compressed web pages. Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return its output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages. If a browser doesn't support compressed pages this function returns `false`.

### Bağımsız Değişkenler

`data`

`flags`

### Dönen Değerler

### Örnekler

Örnek 1 ob_gzhandler() example

    <?php

    ob_start("ob_gzhandler");

    ?>
    <html>
    <body>
    <p>This should be a compressed page.</p>
    </body>
    </html>

### Notlar

> Bilginize:

> ob_gzhandler() requires the zlib extension.

> Bilginize:

> You cannot use both ob_gzhandler() and zlib.output_compression. Also note that using zlib.output_compression is preferred over ob_gzhandler().

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır
- ob_end_flush() - Etkin çıktı işleyicisinin dönüş değerini temizler (gönderir), etkin çıktı tamponunu kapatır

# readgzfile

(PHP 4, PHP 5, PHP 7, PHP 8)

readgzfile — Bir .gz dosyası çıktılar

### Açıklama

function readgzfile(string `$dosyaismi`, int `$include_path_kullan` = 0): int|false

Bir dosyayı okur ve sıkıştırıp standart çıktıya gönderir.

readgzfile() işlevi gzipli olmayan dosyaları da okumakta kullanılabilir; bu durumda readgzfile() sıkıştırılmamış dosyayı doğrudan okur.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya sisteminden okunup içeriği standart çıktıya yazılacak dosya.

`use_include_path`

  Bu isteğe bağlı bağımsız değişkenle 1 değerini aktarırsanız dosyanın include_path yönergesindeki yollarda da aranmasını sağlamış olursunuz.

### Dönen Değerler

Başarılı olursa dosyadan okunan (sıkıştırılmamış) bayt sayısı ile döner, başarısızlık durumunda `false` döner

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Ayrıca Bakınız

- gzpassthru() - Gzipli dosya tanıtıcısında kalan verinin tamamını çıktılar
- gzfile() - Gzipli dosyayı bir dizi içinde döndürür
- gzopen() - Bir gzipli dosya açar

# zlib_decode

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

zlib_decode — Uncompress any raw/gzip/zlib encoded data

### Açıklama

function zlib_decode(string `$data`, int `$max_length` = 0): string|false

Uncompress any raw/gzip/zlib encoded data.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`data`

`max_length`

### Dönen Değerler

Returns the uncompressed data, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- zlib_encode() - Compress data with the specified encoding

# zlib_encode

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

zlib_encode — Compress data with the specified encoding

### Açıklama

function zlib_encode(string `$data`, int `$encoding`, int `$level` = -1): string|false

Compress data with the specified encoding.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`data`

  The data to compress.

`encoding`

  The compression algorithm. Either `ZLIB_ENCODING_RAW`, `ZLIB_ENCODING_DEFLATE` or `ZLIB_ENCODING_GZIP`.

`level`

### Dönen Değerler

### Örnekler

Örnek 1 zlib_encode() example

    <?php
    $str = 'hello world';
    $enc = zlib_encode($str, ZLIB_ENCODING_DEFLATE);
    echo bin2hex($enc);
    ?>

Yukarıdaki örneğin çıktısı:

    789ccb48cdc9c95728cf2fca4901001a0b045d

### Ayrıca Bakınız

- zlib_decode() - Uncompress any raw/gzip/zlib encoded data

# zlib_get_coding_type

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

zlib_get_coding_type — Çıktı sıkıştırması için kullanılan kodlama türünü döndürür

### Açıklama

function zlib_get_coding_type(): string|false

Çıktı sıkıştırması için kullanılan kodlama türünü döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Olası dönüş değerleri `gzip`, `deflate`, ya da `false`'tır.

### Ayrıca Bakınız

- zlib.output_compression yönergesi.

## İçindekiler

- deflate_add — Incrementally deflate data
- deflate_init — Initialize an incremental deflate context
- gzclose — Bir açık gzipli dosya tanıtıcısını kapar
- gzcompress — Bir dizgeyi sıkıştırır
- gzdecode — Gzipli bir dizgenin sıkıştırmasını açar
- gzdeflate — Bir dizgeyi deflate biçeminde sıkıştırır
- gzencode — Gzipli bir dizge oluşturur
- gzeof — Gzipli dosya tanıtıcında dosya sonunu sınar
- gzfile — Gzipli dosyayı bir dizi içinde döndürür
- gzgetc — Gzipli dosya göstericisindeki karakteri döndürür
- gzgets — Gzipli dosya tanıtıcısından bir satır döndürür
- gzgetss — Gzipli dosya tanıtıcısından bir satır okuyup HTML etiketlerinden arındırır
- gzinflate — Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
- gzopen — Bir gzipli dosya açar
- gzpassthru — Gzipli dosya tanıtıcısında kalan verinin tamamını çıktılar
- gzputs — gzwrite işlevinin takma adıdır
- gzread — Gzipli dosyayı ikil kipte okur
- gzrewind — Gzipli dosya göstericisini dosya başlangıcına taşır
- gzseek — Gzipli dosya göstericisini konumlar
- gztell — Gzipli dosya tanıtıcısının okuma/yazma konumunu döndürür
- gzuncompress — Sıkıştırılmış bir dizgenin sıkıştırmasını açar
- gzwrite — Bir dizgeyi bir gzipli dosyaya ikil kipte yazar
- inflate_add — Incrementally inflate encoded data
- inflate_get_read_len — Get number of bytes read so far
- inflate_get_status — Get decompression status
- inflate_init — Initialize an incremental inflate context
- ob_gzhandler — ob_start callback function to gzip output buffer
- readgzfile — Bir .gz dosyası çıktılar
- zlib_decode — Uncompress any raw/gzip/zlib encoded data
- zlib_encode — Compress data with the specified encoding
- zlib_get_coding_type — Çıktı sıkıştırması için kullanılan kodlama türünü döndürür

# The DeflateContext class

(PHP 8)

## Giriş

A fully opaque class which replaces `zlib.deflate` resources as of PHP 8.0.0.

## Sınıf Sözdizimi

final class DeflateContext {
}

# The InflateContext class

(PHP 8)

## Giriş

A fully opaque class which replaces `zlib.inflate` resources as of PHP 8.0.0.

## Sınıf Sözdizimi

final class InflateContext {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- Zlib İşlevleri
  - deflate_add — Incrementally deflate data
  - deflate_init — Initialize an incremental deflate context
  - gzclose — Bir açık gzipli dosya tanıtıcısını kapar
  - gzcompress — Bir dizgeyi sıkıştırır
  - gzdecode — Gzipli bir dizgenin sıkıştırmasını açar
  - gzdeflate — Bir dizgeyi deflate biçeminde sıkıştırır
  - gzencode — Gzipli bir dizge oluşturur
  - gzeof — Gzipli dosya tanıtıcında dosya sonunu sınar
  - gzfile — Gzipli dosyayı bir dizi içinde döndürür
  - gzgetc — Gzipli dosya göstericisindeki karakteri döndürür
  - gzgets — Gzipli dosya tanıtıcısından bir satır döndürür
  - gzgetss — Gzipli dosya tanıtıcısından bir satır okuyup HTML etiketlerinden arındırır
  - gzinflate — Deflate sıkıştırmalı bir verinin sıkıştırmasını açar
  - gzopen — Bir gzipli dosya açar
  - gzpassthru — Gzipli dosya tanıtıcısında kalan verinin tamamını çıktılar
  - gzputs — gzwrite işlevinin takma adıdır
  - gzread — Gzipli dosyayı ikil kipte okur
  - gzrewind — Gzipli dosya göstericisini dosya başlangıcına taşır
  - gzseek — Gzipli dosya göstericisini konumlar
  - gztell — Gzipli dosya tanıtıcısının okuma/yazma konumunu döndürür
  - gzuncompress — Sıkıştırılmış bir dizgenin sıkıştırmasını açar
  - gzwrite — Bir dizgeyi bir gzipli dosyaya ikil kipte yazar
  - inflate_add — Incrementally inflate encoded data
  - inflate_get_read_len — Get number of bytes read so far
  - inflate_get_status — Get decompression status
  - inflate_init — Initialize an incremental inflate context
  - ob_gzhandler — ob_start callback function to gzip output buffer
  - readgzfile — Bir .gz dosyası çıktılar
  - zlib_decode — Uncompress any raw/gzip/zlib encoded data
  - zlib_encode — Compress data with the specified encoding
  - zlib_get_coding_type — Çıktı sıkıştırması için kullanılan kodlama türünü döndürür
- DeflateContext — The DeflateContext class
- InflateContext — The InflateContext class

- Bzip2 — Bzip2 Sıkıştırma
  - Yapılandırma/Kurulum
  - Örnekler
  - Bzip2 İşlevleri
- LZF — LZF Sıkıştırma Algoritması
  - Yapılandırma/Kurulum
  - LZF İşlevleri
- Phar
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Using Phar Archives
  - Creating Phar Archives
  - What makes a phar a phar and not a tar or a zip?
  - Phar — The Phar class
  - PharData — The PharData class
  - PharFileInfo — The PharFileInfo class
  - PharException — The PharException class
- Rar — Rar Archiving
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Rar İşlevleri
  - RarArchive — The RarArchive class
  - RarEntry — The RarEntry class
  - RarException — The RarException class
- Zip
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - ZipArchive — ZipArchive sınıfı
  - Zip İşlevleri
- Zlib — Zlib Sıkıştırması
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Zlib İşlevleri
  - DeflateContext — The DeflateContext class
  - InflateContext — The InflateContext class

# Şifresel Eklentiler

# HASH İleti Aşı Çerçevesi

# Giriş

Bu eklenti, HMAC değerlerinin oluşturulması ve HKDF ve PBKDF2 gibi anahtar türetmeleri de dahil olmak üzere çeşitli aş algoritmaları kullanılarak keyfi uzunluktaki iletilerin doğrudan veya artımlı işlenmesi için kullanılabilen işlevler sağlar.

Kabaca üç aş algoritması sınıfı vardır ve algoritmaların tam listesi hash_algos() belgelemesinde bulunabilir.

- Sağlama toplamı algoritmaları (`"crc32b"` veya `"adler32"` gibi): Bunlar, ileti hatalarının tespit edilmesi gibi durumlarda yararlı olan sağlama toplamlarını hesaplamak için kullanılır. Genellikle çok hızlıdırlar. Bu algoritmalar genellikle kolayca "tahmin edilebilir"dir ve karışıklık yaratmak için elle değiştirilebilen değerler üretir, bu nedenle bunlar kriptografik kullanım için tamamen uygun değildir.
- Kriptografik olmayan algoritmalar (xxHash ailesi gibi): Bunlar genellikle aş tabloları için aş değerlerini hesaplamak için kullanılır, çünkü keyfi dizge girdileri üzerinde iyi bir dağıtım elde etmek üzere tasarlanmıştır. Ayrıca genellikle hızlıdırlar, ancak bunlar da kriptografik kullanım için uygun değildir.
- Kriptografik algoritmalar (SHA-2 ailesi gibi): Bunlar, girdilerini temsil eden ancak tahmin edilebilir veya çatışmalara eğilimli olmayan aş değerleri üretmek için tasarlanmıştır. Başarım genellikle ikincil bir endişe kaynağıdır, ancak günümüz donanımı genellikle PHP'nin mevcut olduğunda kullanmaya çalıştığı bu algoritmalar için özel işlemeyi destekler. NIST'in Bilgisayar Güvenliği Kaynak Merkezi » Amerika Birleşik Devletleri Federal Bilgi İşleme Standartları tarafından onaylı geçerli algoritmaların açıklamasını sunmaktadır.
  Dikkat

  `"md4"`, `"md5"` ve `"sha1"` gibi bazı erken dönem kriptografik algoritmaların çatışma saldırılarına karşı hassas olduğu kanıtlanmıştır ve bunların kriptografik uygulamalarda artık kullanılmaması genel olarak önerilmektedir.

Parolaları ele alırken aş işlevlerini kullanma konusunda en iyi uygulamalar hakkında bilgi edinmek için Güvenli Parola Karma İşlemi ile ilgili SSS'ye de bakılabilir.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

PHP 5.1.2 ve sonrasında Hash eklentisi PHP paketinde gelmekte ve öntanımlı olarak derlenmektedir.

İptal edilmek istenirse PHP'yi derlemek için yapılandırırken --disable-hash seçeneğini belirtin. PHP'nin eski sürümleri Hash desteği için » PECL eklentisini kurabilirler.

PHP 7.4.0 ve sonrasında Hash eklentisi PHP'nin temel eklentisi olmuştur. Bu bakımdan, daima etkindir.

## Özkaynak Türleri

Bu eklentinin hash_init() işlevinden dönen bir Aşlama Bağlamı özkaynağı vardır.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`HASH_HMAC` (int)
  hash_init() için isteğe bağlı seçenek. Geçerli aşlama bağlamına HMAC digest anahtar algoritmasının uygulanacağını belirtir.

# HashContext sınıfı

(PHP 7 >= 7.2.0, PHP 8)

## Giriş

## Sınıf Sözdizimi

final class HashContext {
/* Yöntemler */
private function __construct()
public function __debugInfo(): array
public function __serialize(): array
public function __unserialize(array `$data`): void
}

# HashContext::__construct

(PHP 7 >= 7.2.0, PHP 8)

HashContext::__construct — Doğrudan örneklemeye izin vermemek için özel kurucu

### Açıklama

private function HashContext::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# HashContext::__debugInfo

(PHP 8 >= 8.4.0)

HashContext::__debugInfo — Returns debugging information about the hashing context

### Açıklama

public function HashContext::__debugInfo(): array

This method is not meant to be called directly; it is invoked by var_dump() and related functions when inspecting a HashContext instance.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an associative array of debugging information. It contains an `algo` key holding the name of the hashing algorithm in use by the context.

### Örnekler

Örnek 1 HashContext::__debugInfo() example

    <?php
    $ctx = hash_init('sha256');
    var_dump($ctx);
    ?>

Yukarıdaki örneğin çıktısı:

    object(HashContext)#1 (1) {
      ["algo"]=>
      string(6) "sha256"
    }

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- var_dump() - Bir değişkenle ilgili bilgiyi dökümler

# HashContext::__serialize

(PHP 8)

HashContext::__serialize — Serializes the HashContext object

### Açıklama

public function HashContext::__serialize(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# HashContext::__unserialize

(PHP 8)

HashContext::__unserialize — Deserializes the `data` parameter into a HashContext object

### Açıklama

public function HashContext::__unserialize(array `$data`): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`data`

  The value being deserialized.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- HashContext::__construct — Doğrudan örneklemeye izin vermemek için özel kurucu
- HashContext::__debugInfo — Returns debugging information about the hashing context
- HashContext::__serialize — Serializes the HashContext object
- HashContext::__unserialize — Deserializes the data parameter into a HashContext object

# Hash İşlevleri

# hash

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash — Bir ileti aşı üretir

### Açıklama

function hash(
string `$algo`,
string `$veri`,
bool `$ham_çıktı` = `false`,
array `$seçenekler` = []
): string

Bir ileti özeti üretir.

### Bağımsız Değişkenler

`algo`

  Seçilen aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_algos() işlevinde bulunabilir.

`veri`

  Aşlanacak ileti.

`ham_çıktı`

  `true` olduğu takdirde ham ikil veri çıktılanır, aksi takdirde (`false`) küçük harfli onaltılıklar çıktılanır.

`seçenekler`

  Çeşitli aşlama algoritmaları için seçenekleri içeren dizi. Şimdilik sadece, MurmurHash türevleri `"seed"` bağımsız değişkenini desteklemektedir.

### Dönen Değerler

Hesaplanan ileti aşını, `ham_çıktı` için `true` belirtilmedikçe küçük harfli onaltılıklardan oluşan bir dizge olarak, aksi takdirde ham ikil gösterimi içeren bir dizge olarak çıktılar.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `seçenekler` bağımsız değişkeni eklendi.
8.0.0 | `algo` bilinmiyorsa hash() işlevi artık bir ValueError istisnası oluşturuyor; evvelce, `false` dönerdi.

### Örnekler

Örnek 1 - hash() örneği

    <?php
    echo hash('sha256', 'Pijamalı hasta yağız şoföre çabucak güvendi.');
    ?>

Yukarıdaki örneğin çıktısı:

    04eb8190a875ba9b6d05edbb0873e47ad41c48c2fac96e404040568868f3f20d

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_file() - Belirtilen dosyanın içeriğinden bir ileti aşı üretir
- hash_hmac() - HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir

# hash_algos

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_algos — Kayıtlı aşlama algoritmalarının bir listesini döndürür

### Açıklama

function hash_algos(): array

Kayıtlı aşlama algoritmalarının bir listesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Desteklenen aşlama algoritmalarını içeren sayısal indisli bir dizi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | MurmurHash3 ve xxHash algoritmaları desteği eklendi.
7.4.0 | crc32c için destek eklendi.
7.1.0 | sha512/224, sha512/256, sha3-224, sha3-256, sha3-384 ve sha3-512 için destek eklendi.

### Örnekler

Örnek 1 - hash_algos() örneği

PHP 8.1.0 itibariyle, hash_algos() aşağıdaki algoritma isimlerini döndürecektir:

    <?php
    print_r(hash_algos());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => md2
        [1] => md4
        [2] => md5
        [3] => sha1
        [4] => sha224
        [5] => sha256
        [6] => sha384
        [7] => sha512/224
        [8] => sha512/256
        [9] => sha512
        [10] => sha3-224
        [11] => sha3-256
        [12] => sha3-384
        [13] => sha3-512
        [14] => ripemd128
        [15] => ripemd160
        [16] => ripemd256
        [17] => ripemd320
        [18] => whirlpool
        [19] => tiger128,3
        [20] => tiger160,3
        [21] => tiger192,3
        [22] => tiger128,4
        [23] => tiger160,4
        [24] => tiger192,4
        [25] => snefru
        [26] => snefru256
        [27] => gost
        [28] => gost-crypto
        [29] => adler32
        [30] => crc32
        [31] => crc32b
        [32] => crc32c
        [33] => fnv132
        [34] => fnv1a32
        [35] => fnv164
        [36] => fnv1a64
        [37] => joaat
        [38] => murmur3a
        [39] => murmur3c
        [40] => murmur3f
        [41] => xxh32
        [42] => xxh64
        [43] => xxh3
        [44] => xxh128
        [45] => haval128,3
        [46] => haval160,3
        [47] => haval192,3
        [48] => haval224,3
        [49] => haval256,3
        [50] => haval128,4
        [51] => haval160,4
        [52] => haval192,4
        [53] => haval224,4
        [54] => haval256,4
        [55] => haval128,5
        [56] => haval160,5
        [57] => haval192,5
        [58] => haval224,5
        [59] => haval256,5
    )

### Ayrıca Bakınız

- hash() - Bir ileti aşı üretir
- hash_hmac_algos() - hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür

# hash_copy

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

hash_copy — Aşlama bağlamını kopyalar

### Açıklama

function hash_copy(HashContext `$bağlam`): HashContext

Aşlama bağlamını kopyalar.

### Bağımsız Değişkenler

`bağlam`

  hash_init() tarafından döndürülmüş aşlama bağlamı.

### Dönen Değerler

Aşlama Bağlamının bir kopyasını döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor ve döndürülüyor.

### Örnekler

Örnek 1 - hash_copy() örneği

    <?php
    $context = hash_init("sha256");
    hash_update($context, "Pijamalı hasta ");

    /* kulanmaya devem edebilmek için bağlamı kopyalayalım */
    $copy_context = hash_copy($context);

    echo hash_final($context), "\n";

    hash_update($copy_context, "yağız şoföre çabucak güvendi.");
    echo hash_final($copy_context), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    36ae7cdae49d9a73ac20adb1325eb6855cb11ba7f502e9c549d0aeebd286abab
    04eb8190a875ba9b6d05edbb0873e47ad41c48c2fac96e404040568868f3f20d

# hash_equals

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

hash_equals — Zamanlama saldırısı güvenli dize karşılaştırması

### Açıklama

function hash_equals(#[\SensitiveParameter]string `$bilinen_dzg`, #[\SensitiveParameter]string `$kullanıcı_dzg`): bool

Yürütme sırasında `bilinen_dzg` içeriği hakkında bilgi sızdırmaksızın iki dizgenin eşit olup olmadığına bakar.

Bu işlev, zamanlama saldırılarını azaltmak için kullanılabilir. `===` ile düzenli karşılaştırma yapmak, iki değerin farklı olup olmadığına ve ilk farkın hangi konumda bulunabileceğine bağlı olarak daha fazla veya daha az zaman alacaktır, dolayısıyla `bilinen_dzg` içeriği hakkında bilgi sızdırılacaktır.

Dikkat

Kullanıcı tarafından sağlanan dizgenin birinci yerine ikinci bağımsız değişken olarak belirtilmesi önemlidir.

### Bağımsız Değişkenler

`bilinen_dzg`

  Gizli tutulması gereken dizge.

`kullanıcı_dzg`

  Karşılaştıma için kullanıcının sağladığı dizge.

### Dönen Değerler

İki dizge benzerse `true` yoksa `false` döner.

### Örnekler

Örnek 1 - hash_equals() örneği

    <?php
    $gizliAnahtar = '8uRhAeH89naXfFXKGOEj';

    // Değer ve imzayı kullanıcı örn. URL içinde sağlar ve
    // $_GET kullanılarak alınır.
    $değer = 'username=rasmuslerdorf';
    $imza = '8c35009d3b50caf7f5d2c1e031842e6b7823a1bb781d33c5237cd27b57b5f327';

    if (hash_equals(hash_hmac('sha256', $değer, $gizliAnahtar), $signature)) {
        echo "Değer doğru imzalanmış.", PHP_EOL;
    } else {
        echo "Değer tahrif edilmiş.", PHP_EOL;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Değer doğru imzalanmış.

### Notlar

> Bilginize:

> Başarılı bir karşılaştırma için verilen dizgeler eşit uzunlukta olmalıdır. Uzunluklar farklıysa hemen `false` döner. Zamanlama saldırısı durumunda bilinen dizgenin uzunluğu değişebilir.

### Ayrıca Bakınız

- hash_hmac() - HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir

# hash_file

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_file — Belirtilen dosyanın içeriğinden bir ileti aşı üretir

### Açıklama

function hash_file(
string `$algo`,
string `$dosya`,
bool `$ham_çıktı` = `false`,
array `$seçenekler` = []
): string|false

Belirtilen dosyanın içeriğinden bir ileti aşı üretir.

### Bağımsız Değişkenler

`algo`

  Aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_algos() işlevinde bulunabilir.

`dosya`

  Aşı hesaplanacak dosyanın yeri; fopen() sarmalayıcıları desteklenir.

`ham_çıktı`

  `true` olduğu takdirde ham ikil veri çıktılanır, aksi takdirde (`false`) küçük harfli onaltılıklar çıktılanır.

`seçenekler`

  Çeşitli aşlama algoritmaları için seçenekleri içeren dizi. Şimdilik sadece, MurmurHash türevleri `"seed"` bağımsız değişkenini desteklemektedir.

### Dönen Değerler

Hesaplanan ileti aşını, `ham_çıktı` için `true` belirtilmedikçe küçük harfli onaltılıklardan oluşan bir dizge olarak, aksi takdirde ham ikil gösterimi içeren bir dizge olarak çıktılar.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `seçenekler` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - hash_file() örneği

    <?php
    /* Aşı hesaplanacak dosyayı oluşturalım */
    file_put_contents('example.txt',
        'Pijamalı hasta yağız şoföre çabucak güvendi.');

    echo hash_file('sha256', 'example.txt');
    ?>

Yukarıdaki örneğin çıktısı:

    04eb8190a875ba9b6d05edbb0873e47ad41c48c2fac96e404040568868f3f20d

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_hmac_file() - Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir

# hash_final

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_final — Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür

### Açıklama

function hash_final(HashContext `$bağlam`, bool `$ham_çıktı` = `false`): string

Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür.

### Bağımsız Değişkenler

`bağlam`

  hash_init() tarafından döndürülmüş aşlama bağlamı.

`ham_çıktı`

  `true` olduğu takdirde ham ikil veri çıktılanır, aksi takdirde (`false`) küçük harfli onaltılıklar çıktılanır.

### Dönen Değerler

Hesaplanan ileti aşını, `ham_çıktı` için `true` belirtilmedikçe küçük harfli onaltılıklardan oluşan bir dizge olarak, aksi takdirde ham ikil gösterimi içeren bir dizge olarak çıktılar.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor.

# hash_hkdf

(PHP 7 >= 7.1.2, PHP 8)

hash_hkdf — Sağlanan anahtar girdisinden HKDF anahtar türevi oluşturur

### Açıklama

function hash_hkdf(
string `$algo`,
#[\SensitiveParameter]string `$anahtar`,
int `$uzunluk` = 0,
string `$bilgi` = "",
string `$tuz` = ""
): string

### Bağımsız Değişkenler

`algo`

  Seçilen aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_hmac_algos() işlevinde bulunabilir.

  > Bilginize:

  > Kriptografik olmayan aş işlevlerine izin verilmez.

`anahtar`

  Kullanılacak anahtar (ikil veri). Boş olamaz.

`uzunluk`

  İstenen çıktının bayt cinsinden uzunluğu. En çok algoritma aş uzunluğunun 255 katı olabilir.

  `uzunluk` olarak `0` verilirse, öntanımlı çıktı uzunluğu seçilen aş boyutunun 255 katından büyük olamaz.

`bilgi`

  Application/context-specific bilgi dizgesi.

`tuz`

  Türetme sırasında kullanılacak tuz.

  Seçimlik olmasına rağmen, rasgele bir tuz HKDF'nin gücünü önemli ölçüde arttırır.

### Dönen Değerler

Türetilen anahtarın ham ikil gösterimini içeren bir dizge döner.

### Hatalar/İstisnalar

`anahtar` boşsa veya `algo` kriptografik değilse ya da `uzunluk` negatif veya çok (algoritma aş uzunluğunun 255 katından) büyükse, bir ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık hata durumunda ValueError istisnası oluşuyor. Evvelce `false` döner ve bir `E_WARNING` iletisi çıktılanırdı.

### Örnekler

Örnek 1 - hash_hkdf() örneği

    <?php
    // Rasgele bir anahtar ve türetme sırasında anahtarı güçlendirecek tuz üret
    $girdiAnh = random_bytes(32);
    $tuz = random_bytes(16);

    // yukarıda oluşturulan girdiyi kullanılarak ayrı bir anahtar çifti türet
    $şifrelemeAnh = hash_hkdf('sha256', $girdiAnh, 32, 'aes-256-encryption', $tuz);
    $kimlikKanıtAnh = hash_hkdf('sha256', $girdiAnh, 32, 'sha-256-authentication', $salt);

    var_dump(şifrelemeAnh !== $kimlikKanıtAnh); // bool(true)
    ?>

Yukarıdaki örnekte, şifreleme için AES-256, kimlik kanıtlama için SHA-256 kullanılarak bir anahtar çifti üretir (encrypt-then-HMAC oluşturmaya uygun)

### Ayrıca Bakınız

- hash_pbkdf2() - Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür
- » RFC 5869
- » kullanıcı alanı gerçeklenim

# hash_hmac

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_hmac — HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir

### Açıklama

function hash_hmac(
string `$algo`,
string `$veri`,
#[\SensitiveParameter]string `$anahtar`,
bool `$ham_çıktı` = `false`
): string

HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir.

### Bağımsız Değişkenler

`algo`

  Aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_hmac_algos() işlevinde bulunabilir.

  > Bilginize:

  > Kriptografik olmayan aş işlevlerine izin verilmez.

`veri`

  Aşlanacak ileti.

`anahtar`

  HMAC ileti aşının üretiminde kullanılacak paylaşımlı gizli anahtar.

`ham_çıktı`

  `true` olduğu takdirde ham ikil veri çıktılanır, aksi takdirde (`false`) küçük harfli onaltılıklar çıktılanır.

### Dönen Değerler

Hesaplanan ileti aşını, `ham_çıktı` için `true` belirtilmedikçe küçük harfli onaltılıklardan oluşan bir dizge olarak, aksi takdirde ham ikil gösterimi içeren bir dizge olarak çıktılar.

### Hatalar/İstisnalar

`algo` bilinmiyorsa veya kriptografik olmayan bir aşlama algoritmasıysa bir ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `algo` bilinmiyorsa artık bir ValueError istisnası oluşuyor; evvelce, `false` dönerdi.
7.2.0 | Kriptografik olmayan aş işlevlerinin (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) ve `HASH_HMAC` sabitinin kullanımı iptal edildi.

### Örnekler

Örnek 1 - hash_hmac() örneği

    <?php
    echo hash_hmac('sha256',
        'Pijamalı hasta yağız şoföre çabucak güvendi.', 'çokgizli');
    ?>

Yukarıdaki örneğin çıktısı:

    863f6b38ab2a65abe35721011273a251026eb485f8a62926afea24188881391b

### Ayrıca Bakınız

- hash_hmac_algos() - hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür
- hash_hmac_file() - Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
- hash_equals() - Zamanlama saldırısı güvenli dize karşılaştırması

# hash_hmac_algos

(PHP 7 >= 7.2.0, PHP 8)

hash_hmac_algos — hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür

### Açıklama

function hash_hmac_algos(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

hash_hmac() işlevi için elverişli aşlama algoritmalarından desteklenenlerin listesini içeren sayısal indisli bir dizi döndürür.

### Örnekler

Örnek 1 - hash_hmac_algos() örneği

    <?php
    print_r(hash_hmac_algos());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => md2
        [1] => md4
        [2] => md5
        [3] => sha1
        [4] => sha224
        [5] => sha256
        [6] => sha384
        [7] => sha512/224
        [8] => sha512/256
        [9] => sha512
        [10] => sha3-224
        [11] => sha3-256
        [12] => sha3-384
        [13] => sha3-512
        [14] => ripemd128
        [15] => ripemd160
        [16] => ripemd256
        [17] => ripemd320
        [18] => whirlpool
        [19] => tiger128,3
        [20] => tiger160,3
        [21] => tiger192,3
        [22] => tiger128,4
        [23] => tiger160,4
        [24] => tiger192,4
        [25] => snefru
        [26] => snefru256
        [27] => gost
        [28] => gost-crypto
        [29] => haval128,3
        [30] => haval160,3
        [31] => haval192,3
        [32] => haval224,3
        [33] => haval256,3
        [34] => haval128,4
        [35] => haval160,4
        [36] => haval192,4
        [37] => haval224,4
        [38] => haval256,4
        [39] => haval128,5
        [40] => haval160,5
        [41] => haval192,5
        [42] => haval224,5
        [43] => haval256,5
    )

### Notlar

> Bilginize:

> PHP 7.2.0 öncesinde, desteklenen aş algoritmaların bir listesini almanın tek yolu, hash_hmac() için uygun olmayan aş algoritmalarını da döndüren hash_algos() işlevini çağırmaktı.

### Ayrıca Bakınız

- hash_hmac() - HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
- hash_algos() - Kayıtlı aşlama algoritmalarının bir listesini döndürür

# hash_hmac_file

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_hmac_file — Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir

### Açıklama

function hash_hmac_file(
string `$algo`,
string `$dosya`,
#[\SensitiveParameter]string `$anahtar`,
bool `$ham_çıktı` = `false`
): string|false

Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir.

### Bağımsız Değişkenler

`algo`

  Aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_hmac_algos() işlevinde bulunabilir.

  > Bilginize:

  > Kriptografik olmayan aş işlevlerine izin verilmez.

`dosya`

  Aşı hesaplanacak dosyanın yeri; fopen() sarmalayıcıları desteklenir.

`anahtar`

  HMAC ileti aşının üretiminde kullanılacak paylaşımlı gizli anahtar.

`ham_çıktı`

  `true` olduğu takdirde ham ikil veri çıktılanır, aksi takdirde (`false`) küçük harfli onaltılıklar çıktılanır.

### Dönen Değerler

Hesaplanan ileti aşını, `ham_çıktı` için `true` belirtilmedikçe küçük harfli onaltılıklardan oluşan bir dizge olarak, aksi takdirde ham ikil gösterimi içeren bir dizge olarak çıktılar. `dosya` okunamıyorsa `false` döner.

### Hatalar/İstisnalar

`algo` bilinmiyorsa veya kriptografik olmayan bir aşlama algoritmasıysa bir ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık `algo` bilinmiyorsa veya kriptografik olmayan bir aşlama algoritmasıysa bir ValueError istisnası oluşuyor. Evvelce `false` dönerdi.
7.2.0 | Kriptografik olmayan aş işlevlerinin (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) ve `HASH_HMAC` sabitinin kullanımı iptal edildi.

### Örnekler

Örnek 1 - hash_hmac_file() örneği

    <?php
    /* Aşı hesaplanacak dosyayı oluşturalım */
    file_put_contents('example.txt',
        'Pijamalı hasta yağız şoföre çabucak güvendi.');

    echo hash_hmac_file('sha256', 'example.txt', 'çokgizli');
    ?>

Yukarıdaki örneğin çıktısı:

    863f6b38ab2a65abe35721011273a251026eb485f8a62926afea24188881391b

### Ayrıca Bakınız

- hash_hmac() - HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
- hash_hmac_algos() - hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür
- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_equals() - Zamanlama saldırısı güvenli dize karşılaştırması

# hash_init

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_init — Ardışık aşlama bağlamını ilklendirir

### Açıklama

function hash_init(
string `$algo`,
int `$sabitler` = 0,
#[\SensitiveParameter]string `$anahtar` = "",
array `$seçenekler` = []
): HashContext

Ardışık aşlama bağlamını ilklendirir.

### Bağımsız Değişkenler

`algo`

  Aşlama algoritmasının ismi (örn, `"sha256"`). Desteklenen algoritmaların listesi hash_algos() işlevinde bulunabilir.

  > Bilginize:

  > `HASH_HMAC` seçeneği belirtilmişse kriptografik olmayan aş işlevlerine izin verilmez.

`sabitler`

  İleti aşının üretimi için isteğe bağlı sabitler. Şimdilik tek bir sabit desteklenmektedir: `HASH_HMAC`. Bu sabit belirtildiği takdirde, `anahtar` bağımsız değişkeni de belirtilmelidir.

`anahtar`

  `sabitler` bağımsız değişkeninde `HASH_HMAC` belirtildiği takdirde, HMAC aşlama yöntemi ile kullanılacak paylaşımlı gizli anahtar.

`seçenekler`

  Çeşitli aşlama algoritmaları için seçenekleri içeren dizi. Şimdilik sadece, MurmurHash türevleri `"seed"` bağımsız değişkenini desteklemektedir.

### Dönen Değerler

hash_update(), hash_update_stream(), hash_update_file(), ve hash_final() işlevlerinde kullanılmak üzere bir Aşlama Bağlamı özkaynağı döndürür.

### Hatalar/İstisnalar

`algo` bilinmiyorsa veya kriptografik olmayan bir aşlama algoritmasıysa bir ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `seçenekler` bağımsız değişkeni eklendi.
8.0.0 | Artık `algo` bilinmiyorsa veya kriptografik olmayan bir aşlama algoritmasıysa ya da `anahtar` boşsa ValueError istisnası oluşuyor. Evvelce `false` döner ve bir `E_WARNING` iletisi çıktılanırdı.
7.2.0 | Kriptografik olmayan aş işlevlerinin (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) ve `HASH_HMAC` sabitinin kullanımı iptal edildi.
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor.

### Örnekler

Örnek 1 - Ardışık aşlama örneği

    <?php
    $hash = hash('sha256', 'Pijamalı hasta yağız şoföre çabucak güvendi.');

    $ctx = hash_init('sha256');
    hash_update($ctx, 'Pijamalı hasta ');
    hash_update($ctx, 'yağız şoföre çabucak güvendi.');
    $incremental_hash = hash_final($ctx);

    echo $incremental_hash, PHP_EOL;
    var_dump($hash === $incremental_hash);
    ?>

Yukarıdaki örneğin çıktısı:

    04eb8190a875ba9b6d05edbb0873e47ad41c48c2fac96e404040568868f3f20d
    bool(true)

### Ayrıca Bakınız

- hash_algos() - Kayıtlı aşlama algoritmalarının bir listesini döndürür
- hash_update() - Veriyi etkin bir aşlama bağlamına dahil eder
- hash_update_file() - Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder
- hash_update_stream() - Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder
- hash_final() - Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür

# hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

hash_pbkdf2 — Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür

### Açıklama

function hash_pbkdf2(
string `$algo`,
#[\SensitiveParameter]string `$parola`,
string `$tuz`,
int `$yineleme`,
int `$uzunluk` = 0,
bool `$ikil` = `false`,
array `$seçenekler` = []
): string

### Bağımsız Değişkenler

`algo`

  Seçilen aşlama algoritmasının ismi (`"sha256"` gibi). Desteklenen algoritmaların listesi hash_hmac_algos() işlevinde bulunabilir.

  > Bilginize:

  > Kriptografik olmayan aş işlevlerine izin verilmez.

`parola`

  Türetim için kullanılacak parola.

`tuz`

  Türetim için kullanılacak tuz. Rasgele bir değer üretilmelidir.

`yineleme`

  Türetim için dahili olarak uygulanacak yinelemelerin sayısı.

`uzunluk`

  Çıktı dizgesinin uzunluğu. `ikil` `true` ise türetilen anahtarın bayt cinsinden uzunluğudur; `false` ise türetilen anahtar uzunluğunun iki katı olmalıdır (her bayt için iki harf/rakam döner).

  `0` ise belirtilen algoritmanın tüm çıktısı kullanılır.

`ikil`

  `true` ise ham ikil veri, `false` ise küçük harfli onaltılıklar çıktılanır.

`seçenekler`

  Çeşitli aşlama algoritmaları için bir dizi seçenek. Şu anda, MurmurHash çeşitleri tarafından yalnızca `"seed"` anahtarı desteklenmektedir.

### Dönen Değerler

`ikil` `true` ise türetilen anahtarın ham ikil gösterimi, `false` ise küçük harfli onaltılık gösterimi döner

### Hatalar/İstisnalar

Algoritma bilinmiyorsa, `yineleme` sıfırdan küçük veya eşitse, `uzunluk` sıfırdan küçükse veya `tuz` çok uzunsa (`INT_MAX``- 4`'ten büyükse), bir ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık hata durumunda ValueError istisnası oluşuyor. Evvelce `false` döner ve bir `E_WARNING` iletisi çıktılanırdı.
7.2.0 | Kriptografik olmayan aş işlevlerinin (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) kullanımı iptal edildi.

### Örnekler

Örnek 1 - hash_pbkdf2() genel kullanım örneği

    <?php
    $parola = "password";
    $yineleme = 600000;

    // random_bytes() kullanarak kriptografik olarak güvenli rastgele tuz üret
    $tuz = random_bytes(16);

    $aş = hash_pbkdf2("sha256", $parola, $tuz, $yineleme, 20);
    var_dump($aş);

    // ham ikil durumunda, eşdeğer sonuç için $uzunluk yarıya düşer
    $aş = hash_pbkdf2("sha256", $parola, $tuz, $yineleme, 10, true);
    var_dump(bin2hex($aş));?>
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(20) "120fb6cffcf8b32c43e7"
    string(20) "120fb6cffcf8b32c43e7"

### Notlar

Dikkat

PBKDF2 yöntemi depolama için parolaları aşlamada kullanılabilir. Bununla birlikte, password_hash() veya `CRYPT_BLOWFISH` ile crypt() parola depolamaya daha uygundur.

### Ayrıca Bakınız

- password_hash() - Parola aşı oluşturur
- hash_hkdf() - Sağlanan anahtar girdisinden HKDF anahtar türevi oluşturur
- sodium_crypto_pwhash() - Derive a key from a password, using Argon2

# hash_update

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_update — Veriyi etkin bir aşlama bağlamına dahil eder

### Açıklama

function hash_update(HashContext `$bağlam`, string `$veri`): true

Veriyi etkin bir aşlama bağlamına dahil eder.

### Bağımsız Değişkenler

`bağlam`

  hash_init() tarafından döndürülmüş aşlama bağlamı.

`veri`

  İleti aşına dahil edilecek ileti.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor.

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_update_file() - Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder
- hash_update_stream() - Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder
- hash_final() - Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür

# hash_update_file

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_update_file — Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder

### Açıklama

function hash_update_file(HashContext `$bağlam`, string `$dosya`, ?resource `$akım` = `null`): bool

Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder.

### Bağımsız Değişkenler

`bağlam`

  hash_init() tarafından döndürülmüş aşlama bağlamı.

`dosya`

  Aşlanacak dosyanın yeri; fopen() sarmalayıcıları desteklenir.

`akım`

  stream_context_create() ile oluşturulmuş bir akım bağlamı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `akım` `null` olabiliyor.
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor.

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_update() - Veriyi etkin bir aşlama bağlamına dahil eder
- hash_update_stream() - Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder
- hash_final() - Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür
- hash_file() - Belirtilen dosyanın içeriğinden bir ileti aşı üretir

# hash_update_stream

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL hash >= 1.1)

hash_update_stream — Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder

### Açıklama

function hash_update_stream(HashContext `$bağlam`, resource `$akım`, int `$uzunluk` = -1): int

Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder.

### Bağımsız Değişkenler

`bağlam`

  hash_init() tarafından döndürülmüş aşlama bağlamı.

`akım`

  Bir akım oluşturma işlevi tarafından oluşturulmuş bir dosya tanıtıcısı.

`uzunluk`

  Akımdan aşlama bağlamına kopyalanacak azami karakter sayısı.

### Dönen Değerler

`akım`'dan `bağlam`'a eklenebilen bayt sayısı.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | resource türünde bir değer yerine HashContext kabul ediliyor.

### Örnekler

Örnek 1 - hash_update_stream() örneği

    <?php
    $fp = tmpfile();
    fwrite($fp, 'yağız şoföre çabucak güvendi.');
    rewind($fp);

    $ctx = hash_init('sha256');
    hash_update($ctx, 'Pijamalı hasta ');
    hash_update_stream($ctx, $fp);
    echo hash_final($ctx);
    ?>

Yukarıdaki örneğin çıktısı:

    04eb8190a875ba9b6d05edbb0873e47ad41c48c2fac96e404040568868f3f20d

### Ayrıca Bakınız

- hash_init() - Ardışık aşlama bağlamını ilklendirir
- hash_update() - Veriyi etkin bir aşlama bağlamına dahil eder
- hash_update_stream()
- hash_final() - Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür

## İçindekiler

- hash — Bir ileti aşı üretir
- hash_algos — Kayıtlı aşlama algoritmalarının bir listesini döndürür
- hash_copy — Aşlama bağlamını kopyalar
- hash_equals — Zamanlama saldırısı güvenli dize karşılaştırması
- hash_file — Belirtilen dosyanın içeriğinden bir ileti aşı üretir
- hash_final — Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür
- hash_hkdf — Sağlanan anahtar girdisinden HKDF anahtar türevi oluşturur
- hash_hmac — HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
- hash_hmac_algos — hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür
- hash_hmac_file — Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
- hash_init — Ardışık aşlama bağlamını ilklendirir
- hash_pbkdf2 — Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür
- hash_update — Veriyi etkin bir aşlama bağlamına dahil eder
- hash_update_file — Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder
- hash_update_stream — Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- HashContext — HashContext sınıfı
  - HashContext::__construct — Doğrudan örneklemeye izin vermemek için özel kurucu
  - HashContext::__debugInfo — Returns debugging information about the hashing context
  - HashContext::__serialize — Serializes the HashContext object
  - HashContext::__unserialize — Deserializes the data parameter into a HashContext object
- Hash İşlevleri
  - hash — Bir ileti aşı üretir
  - hash_algos — Kayıtlı aşlama algoritmalarının bir listesini döndürür
  - hash_copy — Aşlama bağlamını kopyalar
  - hash_equals — Zamanlama saldırısı güvenli dize karşılaştırması
  - hash_file — Belirtilen dosyanın içeriğinden bir ileti aşı üretir
  - hash_final — Bir ardışık aşlama işlemini bitirip üretilen aşı döndürür
  - hash_hkdf — Sağlanan anahtar girdisinden HKDF anahtar türevi oluşturur
  - hash_hmac — HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
  - hash_hmac_algos — hash_hmac için uygun kayıtlı aşlama algoritmalarının listesini döndürür
  - hash_hmac_file — Bir dosyanın içeriğinden HMAC yöntemini kullanarak bir anahtarlı ileti aşı üretir
  - hash_init — Ardışık aşlama bağlamını ilklendirir
  - hash_pbkdf2 — Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür
  - hash_update — Veriyi etkin bir aşlama bağlamına dahil eder
  - hash_update_file — Veriyi bir dosyadan etkin bir aşlama bağlamına dahil eder
  - hash_update_stream — Veriyi açık bir akımdan etkin bir aşlama bağlamına dahil eder

# Mcrypt

# Giriş

Uyarı

Bu özelliğin kullanımı PHP 7.1.0'dan beri ÖNERİLMEMEKTEDİR ve PHP 7.2.0'da tamamen KALDIRILMIŞTIR.

Bu özelliğin yerine kulllanılabilecekler:

- Sodium (PHP 7.2.0 ve sonrasında mevcuttur.)
- OpenSSL

> Bilginize: PHP 7.2.0 itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.

Bu eklenti, mcrypt kütüphanesi için bir arayüzdür. Mcrypt eklentisi, CBC, OFB, CFB ve ECB şifre kiplerinde DES, TripleDES, Blowfish (öntanımlı), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 ve GOST gibi bir çok algoritma çeşidini desteklemektedir. Ayrıca, özgür olmadığı düşünülen RC6 ve IDEA da desteklenmektedir. CFB/OFB öntanımlı olarak 8 bittir.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

Bu işlevler » mcrypt kütüphanesini kullanarak çalışır. » http://mcrypt.sourceforge.net/ adresinden libmcrypt-x.x.tar.gz paketini indirip kurulum yönergelerini izleyerek kütüphaneyi sisteminize kurabilirsiniz.

libmcrypt'in 2.5.6 ve üstü sürümleri gerekir.

Windows kullanıcıları kütüphaneyi PHP 5.2 Windows çalıştırılabilirleri dağıtımında bulacaktır. PHP 5.3 Windows çalıştırılabilirleri MCrypt kütüphanesinin duruk sürümünü kullandığından DLL kütüphaneleri gerekli değildir.

Sisteminizde libmcrypt 2.4.x veya üstü kuruluysa CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT küme algoritmaları ve ENIGMA (crypt), PANAMA, RC4, WAKE akım şifrelerine ek olarak nOFB şifre kipi de destekleniyor olacaktır.

## Kurulum

PHP 7.2.0 itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/mcrypt.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Mcrypt yapılandırma yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mcrypt.algorithms_dir | `null` | `INI_ALL` | PHP 4.0.2'den beri kullanılabilmektedir.
mcrypt.modes_dir | `null` | `INI_ALL` | PHP 4.0.2'den beri kullanılabilmektedir.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mcrypt.algorithms_dir` string
  Algoritmaları içeren dizin. Öntanımlı dizin libmcrypt içinde derlenmiş dizin olup genelde /usr/local/lib/libmcrypt dizinidir. Daha ayrıntılı bilgi için mcrypt_list_algorithms() işlevine bakınız.
`mcrypt.modes_dir` string
  Kipleri içeren dizin. Öntanımlı dizin libmcrypt içinde derlenmiş dizin olup genelde /usr/local/lib/libmcrypt dizinidir. Daha ayrıntılı bilgi için mcrypt_list_modes() işlevine bakınız.

## Özkaynak Türleri

mcrypt_module_open() işlevi bir şifreleme tanıtıcısı döndürür.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Mcrypt dört şifreleme kipinde çalışabilir: `CBC`, `OFB`, `CFB` ve `ECB`. Sisteminizde libmcrypt-2.4.x veya üstü bir sürüm kuruluysa işlevler `nOFB` küme şifreleme kipinde ve `STREAM` kipinde çalışabilir. Desteklenen tüm şifreleme kiplerini kendileri için tanımlanmış sabitler ve bunların açıklamaları olarak aşağıda bulabilirsiniz. Daha ayrıntılı bilgi için Applied Cryptography by Schneier (ISBN 0-471-11709-9) kitabına bakınız.

- `MCRYPT_MODE_ECB` (`elektronik kod defteri`) çoğu amaç için genellikle uygun olmayan bir blok şifreleme kipidir. Bu kipin kullanılması önerilmez.
- `MCRYPT_MODE_CBC` (`şifre bloğu zinciri` ) `ECB` kipinden belirgin şekilde daha güvenli olan bir blok şifreleme kipidir.
- `MCRYPT_MODE_CFB` (`8 bitlik kipte şifre geribeslemesi`) bir akım şifreleme kipidir. `CFB`'den ziyade `NCFB` kipini kullanmanız önerilir.
- `MCRYPT_MODE_OFB` (`8 bitlik kipte çıktı geribeslemesi`) bir akım şifreleme kipi olup, `CFB` arasında seçim yapılacaksa, hata yayılımına katlanılamayacak uygulamalarda `OFB` tercih edilebilir. 8 bitlik kipte çalıştığından güvenilir değildir, dolayısıyla kullanımı önerilmez.
- `MCRYPT_MODE_NOFB` (`n bitlik kipte çıktı geribeslemesi)`) kipi `OFB` kipi ile karşılaştırılabilir, fakat algoritmaya özgü tam küme genişliğinde çalışır.
- `MCRYPT_MODE_STREAM`, `"WAKE"`, `"RC4"` gibi başka akım algoritmalarını da içeren ek bir kiptir.

Mcrypt, önceden tanımlanmış sabitleri olmayan başka çalışma kiplerini de destekler. Bunlar eksik sabitlerin yerine bir dizge aktararak kullanılabilir.

- `"ctr"` (`sayaç kipi`) bir akım şifreleme kipidir.
- `"ncfb"` (`n bitlik kipte şifre geribeslemesi`) kipi `CFB` kipiyle karşılaştırılabilir, fakat algoritmaya özgü tam küme genişliğinde çalışır.

Diğer bazı kipler ve rasgele sayı üreteci sabitleri

`MCRYPT_ENCRYPT` (int)
`MCRYPT_DECRYPT` (int)
`MCRYPT_DEV_RANDOM` (int)
`MCRYPT_DEV_URANDOM` (int)
`MCRYPT_RAND` (int)

# Mcrypt şifreleri

Burada mcrypt eklentisi tarafından desteklenen şifrelere yer verilmiştir. Desteklenen şifrelerin tam listesini mcrypt.h başlık dosyasının sonunda bulabilirsiniz. mcrypt-2.2.x arayüzünün genel kuralı, PHP ile bir şifreye MCRYPT_şifreadı ile erişilebilmesidir. Ayrıca bu sabitler, libmcrypt-2.4.x ve libmcrypt-2.5.x ile de çalışmakta olup bir şifreye mcrypt_module_open() işlevinde ismini bir dizge olarak belirterek erişmek de mümkünür.

- MCRYPT_3DES
- MCRYPT_ARCFOUR_IV (sadece libmcrypt > 2.4.x)
- MCRYPT_ARCFOUR (sadece libmcrypt > 2.4.x)
- MCRYPT_BLOWFISH
- MCRYPT_CAST_128
- MCRYPT_CAST_256
- MCRYPT_CRYPT
- MCRYPT_DES
- MCRYPT_DES_COMPAT (sadece libmcrypt 2.2.xonly)
- MCRYPT_ENIGMA (sadece libmcrypt > 2.4.x , MCRYPT_CRYPT için takma ad)
- MCRYPT_GOST
- MCRYPT_IDEA (özgür değil)
- MCRYPT_LOKI97 (sadece libmcrypt > 2.4.x)
- MCRYPT_MARS (sadece libmcrypt > 2.4.x, özgür değil)
- MCRYPT_PANAMA (sadece libmcrypt > 2.4.x)
- MCRYPT_RIJNDAEL_128 (sadece libmcrypt > 2.4.x)
- MCRYPT_RIJNDAEL_192 (sadece libmcrypt > 2.4.x)
- MCRYPT_RIJNDAEL_256 (sadece libmcrypt > 2.4.x)
- MCRYPT_RC2
- MCRYPT_RC4 (sadece libmcrypt 2.2.x)
- MCRYPT_RC6 (sadece libmcrypt > 2.4.x)
- MCRYPT_RC6_128 (sadece libmcrypt 2.2.x)
- MCRYPT_RC6_192 (sadece libmcrypt 2.2.x)
- MCRYPT_RC6_256 (sadece libmcrypt 2.2.x)
- MCRYPT_SAFER64
- MCRYPT_SAFER128
- MCRYPT_SAFERPLUS (sadece libmcrypt > 2.4.x)
- MCRYPT_SERPENT(sadece libmcrypt > 2.4.x)
- MCRYPT_SERPENT_128 (sadece libmcrypt 2.2.x)
- MCRYPT_SERPENT_192 (sadece libmcrypt 2.2.x)
- MCRYPT_SERPENT_256 (sadece libmcrypt 2.2.x)
- MCRYPT_SKIPJACK (sadece libmcrypt > 2.4.x)
- MCRYPT_TEAN (sadece libmcrypt 2.2.x)
- MCRYPT_THREEWAY
- MCRYPT_TRIPLEDES (sadece libmcrypt > 2.4.x)
- MCRYPT_TWOFISH (eski mcrypt 2.x veya mcrypt > 2.4.x sürümleri için)
- MCRYPT_TWOFISH128 (TWOFISHxxx şifreleri 2.4.x sürümlerinde değil, yeni 2.x sürümlerinde kullanılabilmektedir)
- MCRYPT_TWOFISH192
- MCRYPT_TWOFISH256
- MCRYPT_WAKE (sadece libmcrypt > 2.4.x)
- MCRYPT_XTEA (sadece libmcrypt > 2.4.x)

İlgili şifre işlevinde, `CBC` kipi için bir ilklendirme vektörü (İV) sağlamanız isteğe bağlı iken `CFB` ve `OFB` kiplerinde bir ilklendirme vektörü sağlamak zorundasınız. İV eşsiz olmalı ve şifreleme/çözme için aynı İV kullanılmalıdır. Şifreli saklanacak bir veriyi, verinin altında saklandığı indisle ilgili bir işlevinin çıktısı olarak alabilirsiniz (dosyanın MD5 anahtarı gibi). Bundan başka, İV'yi şifreli veri ile birlikte de aktarabilirsiniz. (Bu konuda daha ayrıntılı bilgi için Applied Cryptography by Schneier (ISBN 0-471-11709-9) kitabının 9.3. faslına bakınız.)

# Mcrypt İşlevleri

# mcrypt_create_iv

(PHP 4, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_create_iv — Rasgele bir kaynaktan bir ilklendirme vektörü (IV) oluşturur

Uyarı

Bu işlevin kullanımı PHP 7.1.0'dan beri ÖNERİLMEMEKTEDİR ve PHP 7.2.0'da tamamen KALDIRILMIŞTIR.

Bu işlevin yerine kulllanılabilecekler:

- random_bytes()

### Açıklama

function mcrypt_create_iv(int `$boy`, int `$kaynak` = MCRYPT_DEV_URANDOM): string

Rasgele bir kaynaktan bir ilklendirme vektörü (IV) oluşturur.

IV dizgesi, şifreleme yordamları için ek bir tohum olarak kullanılır. Bu IV'nin gizli olması gerekmediği gibi istenmez de. Hiçbir güvenlik kaybı oluşmadan şifreli metin ile birlikte gönderebilirsiniz.

### Bağımsız Değişkenler

`boy`
  IV boyu.
`kaynak`
  Şu değerlerden biri olabilir: `MCRYPT_RAND` (sistem rasgele sayı üreteci), `MCRYPT_DEV_RANDOM` (veri /dev/random'dan okunur), `MCRYPT_DEV_URANDOM` (veri /dev/urandom'dan okunur). Windows (şüphesiz) /dev/random veya /dev/urandom aygıtlarına sahip olmadığından Windows için sadece `MCRYPT_RAND` desteklenmektedir. PHP 5.3.0 öncesinde, `MCRYPT_RAND` Windows üzerinde desteklenen tek sabitti. PHP 5.6.0 öncesinde, bu bağımsız değişkenin öntanımlı değeri `MCRYPT_DEV_RANDOM` idi.

  > Bilginize: `MCRYPT_DEV_RANDOM` daha fazla döküntü sağlanana kadar engellenebilir.

### Dönen Değerler

Bir hata durumunda `false` yoksa ilklendirme vektörünü bir dizge olarak döndürür.

### Örnekler

Örnek 1 - mcrypt_create_iv() örneği

    <?php
        $boy = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
        $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
    ?>

### Ayrıca Bakınız

- » http://www.ciphersbyritter.com/GLOSSARY.HTM#IV
- » http://www.quadibloc.com/crypto/co0409.htm
- Applied Cryptography by Schneier (ISBN 0-471-11709-9) kitabının 9.3. faslı
- random_bytes() - Get cryptographically secure random bytes

# mcrypt_decrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_decrypt — Belirtilen bağımsız değişkenlerle şifreli bir metnin şifresini çözer

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_decrypt(
string `$şifre`,
string `$anahtar`,
string `$veri`,
string `$kip`,
string `$iv` = ?
): string|false

Belirtilen `veri`nin şifresini çözer ve şifrelenmemiş dizgeyi döndürür.

### Bağımsız Değişkenler

`şifre`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`anahtar`
  Veriyi şifrelemekte kullanılan anahtar. Belirtilen anahtar `şifre` tarafından desteklenmiyorsa işlev bir uyarı çıktılar ve `false` döner.
`veri`
  Belirtilen `şifre` ve `kip` ile şifresi çözülecek veri. Verinin küme boyunun katları uzunlukta olmasını sağlamak için dolgu olarak "\0" karakteri kullanılır.
`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

`iv`

  CBC, CFB, OFB kiplerinde ve STREAM kipinde bazı algoritmalarda ilklendirme için kullanılır. Sağlanan ilklendirme vektörü (IV) boyutu zincirleme kipi tarafınan desteklenmiyorsa veya bir IV sağlanmamışsa, fakat zincirleme kipi için bir IV gerekliyse, işlev bir uyarı çıktılar ve `false` döndürür.

### Dönen Değerler

Şifresi çözülmüş veriyi bir dizge olarak döndürür, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mcrypt_encrypt() - Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler

# mcrypt_enc_get_algorithms_name

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_algorithms_name — Açık algoritmanın adını döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_algorithms_name(resource `$şt`): string

Açık algoritmanın adını döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Açık algoritmanın adını içeren bir dizge döndürür.

### Örnekler

Örnek 1 - mcrypt_enc_get_algorithms_name() örneği

    <?php
    $td = mcrypt_module_open(MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";

    $td = mcrypt_module_open('cast-256', '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    CAST-256
    CAST-256

# mcrypt_enc_get_block_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_block_size — Açık algoritmanın küme boyunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_block_size(resource `$şt`): int

Açık algoritmanın küme boyunu döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Açık algoritmanın küme boyunu bayt sayısı olarak döndürür.

# mcrypt_enc_get_iv_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_iv_size — Açık algoritmanın ilklendirme vektörü uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_iv_size(resource `$şt`): int

Şifreleme tanıtıcısı ile belirtilen algoritmanın ilklendirme vektörü (iv) uzunluğunu döndürür. CBC, CFB ve OFB kipleri ile akım kipindeki bazı algoritmalar bir ilklendirme vektörü kullanır.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Açık algoritma tarafından iv yok sayılıyorsa 0, aksi takdirde iv boyunu döndürür.

# mcrypt_enc_get_key_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_key_size — Açık kipin desteklediği azami anahtar uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_key_size(resource `$şt`): int

Açık kipin desteklediği azami anahtar uzunluğunu döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Açık kipin desteklediği azami anahtar uzunluğunu bayt sayısı olarak döndürür.

# mcrypt_enc_get_modes_name

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_modes_name — Açık kipin ismini döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_modes_name(resource `$şt`): string

Bu işlev açık kipin ismini döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

İsim bir dizge olarak döner.

### Örnekler

Örnek 1 - mcrypt_enc_get_modes_name() örneği

    <?php
    $td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_modes_name($td). "\n";

    $td = mcrypt_module_open ('cast-256', '', 'ecb', '');
    echo mcrypt_enc_get_modes_name($td). "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    CFB
    ECB

# mcrypt_enc_get_supported_key_sizes

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_get_supported_key_sizes — Açık algoritmanın desteklediği anahtar boylarını listeler

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_get_supported_key_sizes(resource `$şt`): array

Açık algoritmanın desteklediği anahtar boylarını bir dizi içinde döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Şifreleme tanıtıcısı ile belirtilen algoritmanın desteklediği anahtar boylarını içeren bir dizi döndürür. Boş bir dizi dönmüşse, 1 ile mcrypt_enc_get_key_size() arasındaki tüm anahtar boyları algoritma tarafından destekleniyor demektir.

### Örnekler

Örnek 1 - mcrypt_enc_get_supported_key_sizes() örneği

    <?php
        $td = mcrypt_module_open('rijndael-256', '', 'ecb', '');
        var_dump(mcrypt_enc_get_supported_key_sizes($td));
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      int(16)
      [1]=>
      int(24)
      [2]=>
      int(32)
    }

# mcrypt_enc_is_block_algorithm

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_is_block_algorithm — Açık kipin algoritması bir küme algoritması mı diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_is_block_algorithm(resource `$şt`): bool

Açık kipin algoritmasının bir küme algoritması olup olmadığına bakar.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Algoritma bir küme algoritması ise `true`, bir akım algoritması ise `false` döner.

# mcrypt_enc_is_block_algorithm_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_is_block_algorithm_mode — Açık kipte şifreleme kümeler halinde mi yapılıyor diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_is_block_algorithm_mode(resource `$şt`): bool

Açık kipte, şifrelemenin kümeler üzerinde çalışıp çalışmadığına bakar (yani, akımlar için `false`, cbc, cfb, ofb için `true` döner).

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Kip, küme algoritmaları kullanmak için ise `true`, değilse `false` döner.

# mcrypt_enc_is_block_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_is_block_mode — Açık kip küme çıktılayan türde mi diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_is_block_mode(resource `$şt`): bool

Açık kip küme çıktılayan türde mi diye bakar (yani, cbc ve ecb için `true`, cfb ve akım kipleri için `false` döndürür.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Kip, bayt kümeleri halinde çıktılama yapıyorsa `true`, sadece baytları çıktılıyorsa `false` döner.

# mcrypt_enc_self_test

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_enc_self_test — Şifreleme tanıtıcısı ile belirtilen modülün kendi kendini sınamasını sağlar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_enc_self_test(resource `$şt`): int

`şt` şifreleme tanıtıcısı ile belirtilen modülün kendi kendini sınamasını sağlar.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Sınama başarılı olursa `0` yoksa negatif bir tamsayı döner.

# mcrypt_encrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_encrypt — Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_encrypt(
string `$şifre`,
string `$anahtar`,
string `$veri`,
string `$kip`,
string `$iv` = ?
): string|false

Veriyi şifreleyip döndürür.

### Bağımsız Değişkenler

`şifre`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`anahtar`
  Veriyi şifreleyecek anahtar. Aanhtar şifre tarafından desteklenmiyorsa işlev bir uyarı çıktır ve `false` döndürür. Bir dizgeden bir anahtar oluşturmak için hash işlevlerini kullanmanız önerilir.
`veri`
  Belirtilen `şifre` ve `kip` ile şifrelenecek veri. Veri uzunluğu desteklenen küme boyunun katlarından farklıysa eksik kısım '`\0`' ile doldurulur. Dönen şifreli veri girilen veriden daha uzun olabilir.
`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

`iv`

  CBC, CFB, OFB kiplerinde ve STREAM kipinde bazı algoritmalarda ilklendirme için kullanılır. Sağlanan ilklendirme vektörü (IV) boyutu zincirleme kipi tarafınan desteklenmiyorsa veya bir IV sağlanmamışsa, fakat zincirleme kipi için bir IV gerekliyse, işlev bir uyarı çıktılar ve `false` döndürür.

### Dönen Değerler

Şifrelenmiş veriyi bir dizge olarak döndürür, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - mcrypt_encrypt() örneği

    <?php
        # --- ENCRYPTION ---

        # the key should be random binary, use scrypt, bcrypt or PBKDF2 to
        # convert a string into a key
        # key is specified using hexadecimal
        $key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");

        # show key size use either 16, 24 or 32 byte keys for AES-128, 192
        # and 256 respectively
        $key_size =  strlen($key);
        echo "Key size: " . $key_size . "\n";

        $plaintext = "This string was AES-256 / CBC / ZeroBytePadding encrypted.";

        # create a random IV to use with CBC encoding
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
       $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

        # creates a cipher text compatible with AES (Rijndael block size = 128)
        # to keep the text confidential
        # only suitable for encoded input that never ends with value 00h
        # (because of default zero padding)
        $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
                                     $plaintext, MCRYPT_MODE_CBC, $iv);

        # prepend the IV for it to be available for decryption
        $ciphertext = $iv . $ciphertext;

        # encode the resulting cipher text so it can be represented by a string
        $ciphertext_base64 = base64_encode($ciphertext);

        echo  $ciphertext_base64 . "\n";

        # === WARNING ===

        # Resulting cipher text has no integrity or authenticity added
        # and is not protected against padding oracle attacks.

        # --- DECRYPTION ---

        $ciphertext_dec = base64_decode($ciphertext_base64);

        # retrieves the IV, iv_size should be created using mcrypt_get_iv_size()
        $iv_dec = substr($ciphertext_dec, 0, $iv_size);

        # retrieves the cipher text (everything except the $iv_size in the front)
        $ciphertext_dec = substr($ciphertext_dec, $iv_size);

        # may remove 00h valued characters from end of plain text
        $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
                                        $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);

        echo  $plaintext_dec . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Key size: 32
    ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=
    This string was AES-256 / CBC / ZeroBytePadding encrypted.

### Ayrıca Bakınız

- mcrypt_decrypt() - Belirtilen bağımsız değişkenlerle şifreli bir metnin şifresini çözer
- mcrypt_module_open() - Kullanılacak kipi ve algoritma modülünü açar

# mcrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_generic — Veriyi şifreler

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_generic(resource `$şt`, string `$veri`): string

Bu işlev veriyi şifreler ve döndürür. Verinin küme boyunun katları uzunlukta olmasını sağlamak için dolgu olarak "\0" karakteri kullanılır, bu yüzden dönen şifresi çözülmüş veri özgün şifresiz veriden daha uzun olur.

Şifreli veriyi bir veritabanında saklamak isterseniz, işlevden dönen verinin tamamını sakladığınızdan emin olun, yoksa şifresini çözmek mümkün olmayabilir. Özgün dizgeniz 10 karakterlikse ve küme boyu da 8 bayt ise veritabanı alanının genişliği en az 16 bayt olmalıdır (küme boyunu öğrenmek için mcrypt_enc_get_block_size() işlevini kullanın. mdecrypt_generic() işlevi 10 baytlık veri için 16 bayt döndürmüşse fazlalıkları silmek için rtrim($str, "\0") işlevini kullanabilirsiniz.

Veriyi örneğin bir MySQL veritabanında saklıyorsanız varchar alanlarının veriyi saklarken verinin sonundaki fazladan boşlukları kendiliğinden sildiğini unutmayın. Boşluk karakteri (ASCII 32) ile biten bir şifreli veri bu yüzden kullanılmaz hale gelebilir. Bu bakımdan şifreli verileri bir tinyblob/tinytext (veya daha büyük) alanlarda saklamanız önerilir.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı. Bu işlevi kullanmadan önce şifreleme tanıtıcısını bir anahtar ve bir IV kullanarak mcrypt_generic_init() işlevi ile ilklendirmelisiniz. Şifreleme bittikten sonra şifreleme tampolarını mcrypt_generic_deinit() işlevi ile serbest bırakabilirsiniz. Kullanım örneği için mcrypt_module_open() işlevine bakınız.
`veri`
  Şifrelenecek veri.

### Dönen Değerler

Şifrelenmiş veriyi döndürür.

### Ayrıca Bakınız

- mdecrypt_generic() - Verinin şifresini çözer
- mcrypt_generic_init() - Şifreleme için gerekli tüm tamponları ilklendirir
- mcrypt_generic_deinit() - Bir şifreleme tanıtıcısını yeniden ilklendirir

# mcrypt_generic_deinit

(PHP 4 >= 4.0.7, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_generic_deinit — Bir şifreleme tanıtıcısını yeniden ilklendirir

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_generic_deinit(resource `$şt`): bool

This function terminates encryption specified by the encryption Şifre tanıtıcısı (`şt`) ile belirtilen şifrelemeyi sonlandırır. Tüm tamporları temizler fakat modülü kapatmaz. Modülü kapatmak için mcrypt_module_close() işlevini kullanmalısınız. (Unutursanız, betik sonunda PHP bunu sizin yerinize yapacaktır).

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mcrypt_module_open() - Kullanılacak kipi ve algoritma modülünü açar
- mcrypt_generic_init() - Şifreleme için gerekli tüm tamponları ilklendirir

# mcrypt_generic_init

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_generic_init — Şifreleme için gerekli tüm tamponları ilklendirir

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_generic_init(resource `$şt`, string `$anahtar`, string `$iv`): int

mcrypt_generic() veya mdecrypt_generic() işlevinden önce bu işlevi çağırmanız gerekir.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.
`anahtar`
  Azami anahtar uzunluğu mcrypt_enc_get_key_size() işlevi ile öğrenilebilir; işlevin döndürdüğü değer ve daha küçük her değer geçerlidir.
`iv`
  Normalde algoritma küme uzunluğundadır, fakat gerçek boyu mcrypt_enc_get_iv_size() işleviyle de öğrenebilirsiniz. ECB kipinde IV yok sayılır. CFB, CBC, STREAM, nOFB ve OFB kipleri için bir IV olması ZORUNLUdur. Rasgele ve eşsiz (fakat gizli değil) olmalıdır. Şifreleme ve şifre çözme amacıyla aynı veri için aynı IV kullanılmalıdır. Bir IV kullanmak istemiyorsanız sıfırlarla (\0) doldubilirsiniz, fakat bunu yapmanız önerilmez.

### Dönen Değerler

İşlev bir hata durumunda negatif bir değer döndürür: Anahtar uzunluğu hatalı ise -3, bellek ayırmada sorun çıkmışsa -4, bilinmeyen bir hata türü için bunlar dışında bir negatif değer döner. Hatayla birlikte bir de uyarı gösterilir.Yanlış sayıda bağımsız değişken aktarılması halinde işlev `false` döndürür.

### Ayrıca Bakınız

- mcrypt_module_open() - Kullanılacak kipi ve algoritma modülünü açar

# mcrypt_get_block_size

(PHP 4, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_get_block_size — Belirtilen şifrenin küme uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_get_block_size(int `$şifre`): int|false
function mcrypt_get_block_size(string `$şifre`, string `$kip`): int|false

İlk sözdizimi libmcrypt 2.2.x için, ikincisi libmcrypt 2.4.x ve üstü içindir.

mcrypt_get_block_size() işlevi belirtilen `kip` ve `şifre` için küme uzunluğunu döndürür.

mcrypt_module_open() ile döndürülen şifreleme tanıtıcısını kullanması nedeniyle mcrypt_enc_get_block_size() işlevi daha kullanışlıdır.

### Bağımsız Değişkenler

`şifre`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

### Dönen Değerler

Blok uzunluğunu bayt sayısı olarak döndürür, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - mcrypt_get_block_size() örneği

Bu örnekteki işlev libmcrypt 2.4.x ve üstü içindir.

    <?php

    echo mcrypt_get_block_size('tripledes', 'ecb'); // çıktısı: 8

    ?>

### Ayrıca Bakınız

- mcrypt_get_key_size() - Belirtilen şifrenin anahtar uzunluğunu döndürür
- mcrypt_enc_get_block_size() - Açık algoritmanın küme boyunu döndürür
- mcrypt_encrypt() - Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler

# mcrypt_get_cipher_name

(PHP 4, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_get_cipher_name — Belirtilen şifrenin ismini döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_get_cipher_name(int `$şifre`): string
function mcrypt_get_cipher_name(string `$şifre`): string

mcrypt_get_cipher_name() işlevi belirtilen şifrenin ismini öğrenmek için kulanılır.

mcrypt_get_cipher_name() işlevi bağımsız değişken olarak bir şifre numarası (libmcrypt 2.2.x) veya bir şifre ismi (libmcrypt 2.4.x ve üstü) alır ve varsa şifrenin ismini yoksa `false` döndürür.

### Bağımsız Değişkenler

`cipher`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

### Dönen Değerler

Belirtilen şifre yoksa `false` aksi takdirde şifre ismini içeren bir dizge döndürür.

### Örnekler

Örnek 1 - mcrypt_get_cipher_name() örneği

    <?php
       $şifre = MCRYPT_TripleDES;

       echo mcrypt_get_cipher_name($şifre);
    ?>

Yukarıdaki örneğin çıktısı:

    3DES

# mcrypt_get_iv_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_get_iv_size — Belirtilen şifre ve kipe özgü IV uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_get_iv_size(string `$şifre`, string `$kip`): int

Belirtilen `şifre` ve `kip`e özgü IV uzunluğunu döndürür.

mcrypt_module_open() ile döndürülen şifreme tanıtıcısını kullanan mcrypt_enc_get_iv_size() işlevi daha kullanışlıdır.

### Bağımsız Değişkenler

`şifre`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

  ECB kipi yok sayılır. Şifreleme ve şifre çözme için aynı IV'yi kullanmak zorundasınız, aksi takdirde işlem başarısız olur.

### Dönen Değerler

İlklendirme Vektörünün (IV) uzunluğu bayt sayısı olarak döner. Hata durumunda `false`, belirtilen şifre ve kipte IV yok sayılıyorsa `0` döner.

### Örnekler

Örnek 1 - mcrypt_get_iv_size() örneği

    <?php
        echo mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB) . "\n";

        echo mcrypt_get_iv_size('des', 'ecb') . "\n";
    ?>

### Ayrıca Bakınız

- mcrypt_get_block_size() - Belirtilen şifrenin küme uzunluğunu döndürür
- mcrypt_enc_get_iv_size() - Açık algoritmanın ilklendirme vektörü uzunluğunu döndürür
- mcrypt_create_iv() - Rasgele bir kaynaktan bir ilklendirme vektörü (IV) oluşturur

# mcrypt_get_key_size

(PHP 4, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_get_key_size — Belirtilen şifrenin anahtar uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_get_key_size(int `$şifre`): int|false
function mcrypt_get_key_size(string `$şifre`, string `$kip`): int|false

mcrypt_module_open() işlevinden dönen özkaynağı kullanan mcrypt_enc_get_key_size() işlevini daha kullanışlıdır.

mcrypt_get_key_size() işlevi belirtilen `kip`te `şifre` anahtarının uzunluğunu döndürür.

### Bağımsız Değişkenler

`şifre`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

### Dönen Değerler

Algoritmanın desteklediği azami anahtar boyutunu bayt cinsinden döndürür, başarısızlık durumunda `false` döner.

### Örnekler

Bu örnekteki işlev libmcrypt 2.4.x ve 2.5.x destekli sistemler içindir. mcrypt_module_open() ile döndürülen şifreleme tanıtıcısını kullanan mcrypt_enc_get_key_size() işlevi daha kullanışlıdır.

Örnek 1 - mcrypt_get_key_size() örneği

    <?php
        echo mcrypt_get_key_size('tripledes', 'ecb');
    ?>

    Çıktısı:
    24

### Ayrıca Bakınız

- mcrypt_get_block_size() - Belirtilen şifrenin küme uzunluğunu döndürür
- mcrypt_enc_get_key_size() - Açık kipin desteklediği azami anahtar uzunluğunu döndürür
- mcrypt_encrypt() - Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler

# mcrypt_list_algorithms

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_list_algorithms — Desteklenen şifreleri listeler

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_list_algorithms(string `$lib_dir` = ini_get("mcrypt.algorithms_dir")): array

`lib_dir` ile belirtilen dizinde bulunan dosyalar tarafından desteklenen algoritmaların listesini döndürür.

### Bağımsız Değişkenler

`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Desteklenen algoritmaları içeren bir dizi döner.

### Örnekler

Örnek 1 - mcrypt_list_algorithms() örneği

    <?php
    $algorithms = mcrypt_list_algorithms();
    print_r($algorithms);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => cast-128
        [1] => gost
        [2] => rijndael-128
        [3] => twofish
        [4] => arcfour
        [5] => cast-256
        [6] => loki97
        [7] => rijndael-192
        [8] => saferplus
        [9] => wake
        [10] => blowfish-compat
        [11] => des
        [12] => rijndael-256
        [13] => serpent
        [14] => xtea
        [15] => blowfish
        [16] => enigma
        [17] => rc2
        [18] => tripledes
    )

# mcrypt_list_modes

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_list_modes — Desteklenen kiplerin listesini döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_list_modes(string `$lib_dir` = ini_get("mcrypt.modes_dir")): array

`lib_dir` ile belirtilen dizinde bulunan dosyalar tarafından desteklenen kiplerin listesini döndürür.

### Bağımsız Değişkenler

`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.modes_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Desteklenen kipleri içeren bir dizi döner.

### Örnekler

Örnek 1 - mcrypt_list_modes() örneği

    <?php
        $kipler = mcrypt_list_modes();

        foreach ($kipler as $kip) {
            echo "$kip <br />\n";
        }
    ?>

Örnek, öntanımlı kip dizininde desteklenen tüm algoritmaları listeler. `mcrypt.modes_dir` php.ini yönergesi ile bir dizin belirtilmemişse öntanımlı mcrypt dizini kullanılır (genellikle /usr/local/lib/libmcrypt).

# mcrypt_module_close

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_close — Şifreleme tanıtıcısını kapatır

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_close(resource `$şt`): bool

Belirtilen şifreleme tanıtıcısını kapatır.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mcrypt_module_open() - Kullanılacak kipi ve algoritma modülünü açar

# mcrypt_module_get_algo_block_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_get_algo_block_size — Belirtilen algoritmanın küme boyunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_get_algo_block_size(string `$algoritma`, string `$lib_dir` = ?): int

Belirtilen algoritmanın küme boyunu döndürür.

### Bağımsız Değişkenler

`algoritma`
  Kullanılacak algoritma.
`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen algoritmanın küme boyunu bayt sayısı olarak döndürür.

# mcrypt_module_get_algo_key_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_get_algo_key_size — Belirtilen algoritmanın desteklediği azami anahtar uzunluğunu döndürür

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_get_algo_key_size(string `$algoritma`, string `$lib_dir` = ?): int

Belirtilen algoritmanın desteklediği azami anahtar uzunluğunu döndürür.

### Bağımsız Değişkenler

`algoritma`
  Kullanılacak algoritma.
`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen algoritmanın desteklediği azami anahtar uzunluğunu bayt sayısı olarak döndürür.

# mcrypt_module_get_supported_key_sizes

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_get_supported_key_sizes — Belirtilen algoritmanın desteklediği anahtar boyutlarını listeler

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_get_supported_key_sizes(string `$algoritma`, string `$lib_dir` = ?): array

Belirtilen algoritmanın desteklediği anahtar boyutlarını bir dizi olarak döndürür. Boş bir dizi dönerse 1 ile mcrypt_module_get_algo_key_size() arasındaki tüm anahtar boyutları algoritma tarafından destekleniyor demektir.

### Bağımsız Değişkenler

`algoritma`
  Kullanılacak algoritma.
`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen algoritmanın desteklediği anahtar boyutlarını içeren bir dizi döndürür. Boş bir dizi dönerse 1 ile mcrypt_module_get_algo_key_size() arasındaki tüm anahtar boyutları algoritma tarafından destekleniyor demektir.

### Ayrıca Bakınız

- mcrypt_enc_get_supported_key_sizes() - Açık algoritmanın desteklediği anahtar boylarını listeler

# mcrypt_module_is_block_algorithm

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_is_block_algorithm — Belirtilen algoritma bir küme algoritması mı diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_is_block_algorithm(string `$algoritma`, string `$lib_dir` = ?): bool

Belirtilen algoritma bir küme algoritması ise `true` akım algoritması ise `false` döner.

### Bağımsız Değişkenler

`algoritma`
  Çıktılama kipine bakılacak algoritma.
`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen algoritma bir küme algoritması ise `true` akım algoritması ise `false` döner.

# mcrypt_module_is_block_algorithm_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_is_block_algorithm_mode — Belirtilen kip, küme algoritmaları ile kullanılabiliryor mu diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_is_block_algorithm_mode(string `$kip`, string `$lib_dir` = ?): bool

Belirtilen kip küme algoritmaları ile kullanılıyorsa `true`, yoksa `false` döndürür. (Yani, akım algoritmaları için `false`; cbc, cfb, ofb için `true` döndürür).

### Bağımsız Değişkenler

`kip`
  Sınanacak kip.
`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen kip küme algoritmaları ile kullanılıyorsa `true`, yoksa `false` döndürür. (Yani, akım algoritmaları için `false`; cbc, cfb, ofb için `true` döndürür).

# mcrypt_module_is_block_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_is_block_mode — Belirtilen kip bir küme kipi mi diye bakar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_is_block_mode(string `$kip`, string `$lib_dir` = ?): bool

Belirtilen kip bayt kümeleri çıktılıyorsa `true` sadece bir bayt dizisi çıktılıyorsa `false` döner (örneğin, cbc ve icb için `true`, vfb ve akım için `false` döndürür).

### Bağımsız Değişkenler

`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Belirtilen kip bayt kümeleri çıktılıyorsa `true` sadece bir bayt dizisi çıktılıyorsa `false` döner (örneğin, cbc ve icb için `true`, vfb ve akım için `false` döndürür).

# mcrypt_module_open

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_open — Kullanılacak kipi ve algoritma modülünü açar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_open(
string `$algoritma`,
string `$algoritma_dizini`,
string `$kip`,
string `$kip_dizini`
): resource

Kullanılacak kipi ve algoritma modülünü açar. Algoritma doğrudan ismiyle belirtilebileceği gibi (`"twofish"` gibi), `MCRYPT_`şifre_adı sabitlerinden biri de belirtilebilir. Modülü kapatmak için mcrypt_module_close() kullanılır.

### Bağımsız Değişkenler

`algoritma`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`algoritma_dizini`
  `algorithm_dizini` şifreleme modüllerinin yerlerini belirtmek için kullanılır. Bir dizin yerine boş bir dizge belirtirseniz `mcrypt.algorithms_dir` php.ini yönergelerinin değerleri kullanılır. Atanmamışsa libmcrypt derlenirken kullanılan öntanımlı dizinler kullanılır (genellikle /usr/local/lib/libmcrypt).
`kip`

  `MCRYPT_MODE_kipadı` sabitlerinden biri veya şu dizelerden biri: "ecb", "cbc", "cfb", "ofb", "nofb" veya "stream".

`kip_dizini`
  `kip_dizini` şifreleme modüllerinin yerlerini belirtmek için kullanılır. Bir dizin yerine boş bir dizge belirtirseniz `mcrypt.modes_dir` php.ini yönergelerinin değerleri kullanılır. Atanmamışsa libmcrypt derlenirken kullanılan öntanımlı dizinler kullanılır (genellikle /usr/local/lib/libmcrypt).

### Dönen Değerler

Bir hata durumunda `false` yoksa bir şifreleme tanıtıcısı döndürür.

### Örnekler

Örnek 1 - mcrypt_module_open() örnekleri

    <?php
        $şt = mcrypt_module_open(MCRYPT_DES, '',
            MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');

        $şt = mcrypt_module_open('rijndael-256', '', 'ofb', '');
    ?>

Yukarıdaki örnekteki ilk satır öntanımlı dizindeki `DES` şifre modülünü ve /usr/lib/mcrypt-modes dizinindeki `ECB` kip modülünü açacaktır. İkinci örnekte şifre ve kip için isimleri kullanılmaktadır. Bu örnek sadece eklenti, libmcrypt 2.4.x veya 2.5.x desteğiyle derlenmişse çalışacaktır.

Örnek 2 - Şifreleme için mcrypt_module_open() kullanımı

    <?php
        /* Şifre modülünü açalım */
        $şt = mcrypt_module_open('rijndael-256', '', 'ofb', '');

        /* IV'yi oluşturup anahtar uzunluğunu belirleyelim.
           Windows'ta bunun yerine MCRYPT_RAND kullanın */
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($şt), MCRYPT_DEV_RANDOM);
        $ks = mcrypt_enc_get_key_size($şt);

        /* Anahtarı oluşturalım */
        /* (örneğe özel: bunun için MD5 iyi bir aş algoritması değil) */
        $tuz = substr(hash('md5', 'epeyce gizli anahtar'), 0, $ks);

        /* Şifreleme işlemini ilklendirelim */
        mcrypt_generic_init($şt, $tuz, $iv);

        /* Veriyi şifreleyelim */
        $şifreli = mcrypt_generic($şt, 'Bu çok önemli bir veridir.');

        /* Şifre tanıtıcısını sonlandıralım */
        mcrypt_generic_deinit($şt);

        /* Şifreleme modülünü şifre çözmek için ilklendirelim */
        mcrypt_generic_init($şt, $tuz, $iv);

        /* Verinin şifresini çözelim */
        $şifresiz = mdecrypt_generic($şt, $şifreli);

        /* Şifre çözme tanıtıcısını sonlandıralım ve modülü kapatalım */
        mcrypt_generic_deinit($şt);
        mcrypt_module_close($şt);

        /* Dizgeyi gösterelim */
        echo trim($şifresiz) . "\n";
    ?>

### Ayrıca Bakınız

- mcrypt_module_close() - Şifreleme tanıtıcısını kapatır
- mcrypt_generic() - Veriyi şifreler
- mdecrypt_generic() - Verinin şifresini çözer
- mcrypt_generic_init() - Şifreleme için gerekli tüm tamponları ilklendirir
- mcrypt_generic_deinit() - Bir şifreleme tanıtıcısını yeniden ilklendirir

# mcrypt_module_self_test

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_module_self_test — Belirtilen modülün kendini kendini sınamasını sağlar

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mcrypt_module_self_test(string `$algoritma`, string `$lib_dir` = ?): bool

Belirtilen modülün kendini kendini sınamasını sağlar.

### Bağımsız Değişkenler

`algoritma`

  `MCRYPT_şifreadı` sabitlerinden biri veya dizge olarak algoritma adlarından biri.

`lib_dir`
  Belirtilmesi isteğe bağlı olup algoritma modülünün sistemdeki yerini belirtmek için kullanılır. Belirtilmezse `mcrypt.algorithms_dir` php.ini yönergesinin değeri kullanılır.

### Dönen Değerler

Sınama başarılı olursa `true` yoksa `false` döner.

### Örnekler

Örnek 1 - mcrypt_module_self_test() örneği

    <?php
    var_dump(mcrypt_module_self_test(MCRYPT_RIJNDAEL_128)) . "\n";
    var_dump(mcrypt_module_self_test(MCRYPT_BOGUS_CYPHER));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

# mdecrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mdecrypt_generic — Verinin şifresini çözer

Uyarı

Bu işlevin kullanımı PHP 7.1.0 itibariyle ÖNERİLMEMEKTE olup PHP 7.2.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mdecrypt_generic(resource `$şt`, string `$veri`): string

Belirtilen verinin şifresini çözer. Şifresi çözülürken verinin sonuna eklenen baytlar yüzünden dönen dizge şifrelenmemiş dizgeden daha uzundur.

### Bağımsız Değişkenler

`şt`
  mcrypt_module_open() tarafından döndürülmüş bir şifreleme tanıtıcısı.
`data`
  Şifrelenmiş veri.

### Dönen Değerler

Şifresi çözülmüş veri döner.

### Örnekler

Örnek 1 - mdecrypt_generic() örneği

    <?php
        /* Veri */
        $tuz = 'Bu anahtar bu şifre için bile gereğinden uzun bir anahtar';
        $veri = 'çok önemli veri';

        /* Modülü açıp bir İV üretelim */
        $şt = mcrypt_module_open('des', '', 'ecb', '');
        $tuz = substr($tuz, 0, mcrypt_enc_get_key_size($şt));
        $iv_boyu = mcrypt_enc_get_iv_size($şt);
        $iv = mcrypt_create_iv($iv_boyu, MCRYPT_RAND);

        /* Şifreleme tanıtıcısını ilklendirelim */
        if (mcrypt_generic_init($şt, $tuz, $iv) != -1) {

            /* Veriyi şifreleyelim */
            $şifreli_veri = mcrypt_generic($şt, $veri);
            mcrypt_generic_deinit($şt);

            /* Şifreyi çözmek için tamponu ilklendirelim */
            mcrypt_generic_init($şt, $tuz, $iv);
            $sonuç = mdecrypt_generic($şt, $şifreli_veri);

            /* Temizlik */
            mcrypt_generic_deinit($şt);
            mcrypt_module_close($şt);
        }

        if (strncmp($sonuç, $veri, strlen($veri)) == 0) {
            echo "Tamam\n";
        } else {
            echo "Hata\n";
        }
    ?>

Yukarıdaki örnekte, şifreleme öncesi veri ile şifreleme sonrası şifresi çözülmüş verinin nasıl karşılaştırılacağı gösterilmiştir. Bir verinin şifresini çözmeden önce şifreleme tamponunu mcrypt_generic_init() ile yeniden ilklendirmek çok önemlidir.

Bu işlevi çağırmadan önce, mcrypt_generic_init() işlevini bir tuz ve bir İV (ilklendirme vektörü) ile çağırarak şifreleme tanıtıcısını daima ilklendirmelisiniz. Şifreleme bittikten sonra şifreleme tamponlarını mcrypt_generic_deinit() işleviyle serbest bırakmalısınız. Bununla ilgili bir örneği mcrypt_module_open() işlevinin açıklamasında bulabilirsiniz.

### Ayrıca Bakınız

- mcrypt_generic() - Veriyi şifreler
- mcrypt_generic_init() - Şifreleme için gerekli tüm tamponları ilklendirir
- mcrypt_generic_deinit() - Bir şifreleme tanıtıcısını yeniden ilklendirir

## İçindekiler

- mcrypt_create_iv — Rasgele bir kaynaktan bir ilklendirme vektörü (IV) oluşturur
- mcrypt_decrypt — Belirtilen bağımsız değişkenlerle şifreli bir metnin şifresini çözer
- mcrypt_enc_get_algorithms_name — Açık algoritmanın adını döndürür
- mcrypt_enc_get_block_size — Açık algoritmanın küme boyunu döndürür
- mcrypt_enc_get_iv_size — Açık algoritmanın ilklendirme vektörü uzunluğunu döndürür
- mcrypt_enc_get_key_size — Açık kipin desteklediği azami anahtar uzunluğunu döndürür
- mcrypt_enc_get_modes_name — Açık kipin ismini döndürür
- mcrypt_enc_get_supported_key_sizes — Açık algoritmanın desteklediği anahtar boylarını listeler
- mcrypt_enc_is_block_algorithm — Açık kipin algoritması bir küme algoritması mı diye bakar
- mcrypt_enc_is_block_algorithm_mode — Açık kipte şifreleme kümeler halinde mi yapılıyor diye bakar
- mcrypt_enc_is_block_mode — Açık kip küme çıktılayan türde mi diye bakar
- mcrypt_enc_self_test — Şifreleme tanıtıcısı ile belirtilen modülün kendi kendini sınamasını sağlar
- mcrypt_encrypt — Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler
- mcrypt_generic — Veriyi şifreler
- mcrypt_generic_deinit — Bir şifreleme tanıtıcısını yeniden ilklendirir
- mcrypt_generic_init — Şifreleme için gerekli tüm tamponları ilklendirir
- mcrypt_get_block_size — Belirtilen şifrenin küme uzunluğunu döndürür
- mcrypt_get_cipher_name — Belirtilen şifrenin ismini döndürür
- mcrypt_get_iv_size — Belirtilen şifre ve kipe özgü IV uzunluğunu döndürür
- mcrypt_get_key_size — Belirtilen şifrenin anahtar uzunluğunu döndürür
- mcrypt_list_algorithms — Desteklenen şifreleri listeler
- mcrypt_list_modes — Desteklenen kiplerin listesini döndürür
- mcrypt_module_close — Şifreleme tanıtıcısını kapatır
- mcrypt_module_get_algo_block_size — Belirtilen algoritmanın küme boyunu döndürür
- mcrypt_module_get_algo_key_size — Belirtilen algoritmanın desteklediği azami anahtar uzunluğunu döndürür
- mcrypt_module_get_supported_key_sizes — Belirtilen algoritmanın desteklediği anahtar boyutlarını listeler
- mcrypt_module_is_block_algorithm — Belirtilen algoritma bir küme algoritması mı diye bakar
- mcrypt_module_is_block_algorithm_mode — Belirtilen kip, küme algoritmaları ile kullanılabiliryor mu diye bakar
- mcrypt_module_is_block_mode — Belirtilen kip bir küme kipi mi diye bakar
- mcrypt_module_open — Kullanılacak kipi ve algoritma modülünü açar
- mcrypt_module_self_test — Belirtilen modülün kendini kendini sınamasını sağlar
- mdecrypt_generic — Verinin şifresini çözer

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Mcrypt şifreleri
- Mcrypt İşlevleri
  - mcrypt_create_iv — Rasgele bir kaynaktan bir ilklendirme vektörü (IV) oluşturur
  - mcrypt_decrypt — Belirtilen bağımsız değişkenlerle şifreli bir metnin şifresini çözer
  - mcrypt_enc_get_algorithms_name — Açık algoritmanın adını döndürür
  - mcrypt_enc_get_block_size — Açık algoritmanın küme boyunu döndürür
  - mcrypt_enc_get_iv_size — Açık algoritmanın ilklendirme vektörü uzunluğunu döndürür
  - mcrypt_enc_get_key_size — Açık kipin desteklediği azami anahtar uzunluğunu döndürür
  - mcrypt_enc_get_modes_name — Açık kipin ismini döndürür
  - mcrypt_enc_get_supported_key_sizes — Açık algoritmanın desteklediği anahtar boylarını listeler
  - mcrypt_enc_is_block_algorithm — Açık kipin algoritması bir küme algoritması mı diye bakar
  - mcrypt_enc_is_block_algorithm_mode — Açık kipte şifreleme kümeler halinde mi yapılıyor diye bakar
  - mcrypt_enc_is_block_mode — Açık kip küme çıktılayan türde mi diye bakar
  - mcrypt_enc_self_test — Şifreleme tanıtıcısı ile belirtilen modülün kendi kendini sınamasını sağlar
  - mcrypt_encrypt — Salt metin veriyi belirtilen bağımsız değişkenlerle şifreler
  - mcrypt_generic — Veriyi şifreler
  - mcrypt_generic_deinit — Bir şifreleme tanıtıcısını yeniden ilklendirir
  - mcrypt_generic_init — Şifreleme için gerekli tüm tamponları ilklendirir
  - mcrypt_get_block_size — Belirtilen şifrenin küme uzunluğunu döndürür
  - mcrypt_get_cipher_name — Belirtilen şifrenin ismini döndürür
  - mcrypt_get_iv_size — Belirtilen şifre ve kipe özgü IV uzunluğunu döndürür
  - mcrypt_get_key_size — Belirtilen şifrenin anahtar uzunluğunu döndürür
  - mcrypt_list_algorithms — Desteklenen şifreleri listeler
  - mcrypt_list_modes — Desteklenen kiplerin listesini döndürür
  - mcrypt_module_close — Şifreleme tanıtıcısını kapatır
  - mcrypt_module_get_algo_block_size — Belirtilen algoritmanın küme boyunu döndürür
  - mcrypt_module_get_algo_key_size — Belirtilen algoritmanın desteklediği azami anahtar uzunluğunu döndürür
  - mcrypt_module_get_supported_key_sizes — Belirtilen algoritmanın desteklediği anahtar boyutlarını listeler
  - mcrypt_module_is_block_algorithm — Belirtilen algoritma bir küme algoritması mı diye bakar
  - mcrypt_module_is_block_algorithm_mode — Belirtilen kip, küme algoritmaları ile kullanılabiliryor mu diye bakar
  - mcrypt_module_is_block_mode — Belirtilen kip bir küme kipi mi diye bakar
  - mcrypt_module_open — Kullanılacak kipi ve algoritma modülünü açar
  - mcrypt_module_self_test — Belirtilen modülün kendini kendini sınamasını sağlar
  - mdecrypt_generic — Verinin şifresini çözer

# Mhash

# Giriş

Bu işlevler » mhash ile çalışmak için tasarlanmıştır. Mhash, sağlamalar, ileti aşları, ileti kimlik doğrulama kodları ve benzerlerini oluşturmak için kullanılır.

Bu eklenti mhash kütüphanesine bir arayüz olup, MD5, SHA1, GOST ve benzeri aşlama algoritmalarını destekler. Desteklenen aş türlerinin tam listesi sabitler sayfasında bulunabilir. PHP'den bir aşlama algoritmasına erişmek için genel kural `MHASH_algoAdı` sabitlerini kullanmaktır. Örneğin, TIGER algoritmasına erişim için `MHASH_TIGER` sabiti kullanılır.

> Bilginize:

> Bu eklenti yerine artık Hash eklentisi kullanılmalıdır.

> Bilginize:

> PHP 7.0.0 itibariyle Mhash eklentisi Hash eklentisiyle bütünleşmiştir. Bu nedenle, extension_loaded() ile Mhash desteğini tespit etmek artık mümkün değildir; onun yerine function_exists() işlevini kullanın. Dahası, Mhash artık get_loaded_extensions() ve ilgili özellikler tarafından raporlanmamaktadır.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

Mhash kullanmak için » Mhash sitesinden kaynak paketini indirip içindeki talimatlara uygun olarak kurun.

## Kurulum

Bu eklentiyi etkin kılmak için PHP'yi --with-mhash[=DiZiN] seçeneği ile derlemelisiniz. DiZiN, mhash kurulum dizinidir.

PHP 5.3.0 itibariyle, mhash eklentisi Hash eklentisi ile birleştirilmiştir. Bu mhash kurulum dizinini etkisiz kılar ve mhash desteğini sağlamak için hash eklentisinin etkinleştirilmesini gerektirir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Buradaki sabitler Mhash tarafından desteklenen algoritmaların sabitleridir. Burada bulunmayıp da Mhash tarafından desteklenen bir algoritmanın varlığı bu listenin güncel olmadığını gösterir.

- `MHASH_ADLER32`
- `MHASH_CRC32`
- `MHASH_CRC32B`
- `MHASH_GOST`
- `MHASH_HAVAL128`
- `MHASH_HAVAL160`
- `MHASH_HAVAL192`
- `MHASH_HAVAL224`
- `MHASH_HAVAL256`
- `MHASH_MD2`
- `MHASH_MD4`
- `MHASH_MD5`
- `MHASH_RIPEMD128`
- `MHASH_RIPEMD256`
- `MHASH_RIPEMD320`
- `MHASH_SHA1`
- `MHASH_SHA192`
- `MHASH_SHA224`
- `MHASH_SHA256`
- `MHASH_SHA384`
- `MHASH_SHA512`
- `MHASH_SNEFRU128`
- `MHASH_SNEFRU256`
- `MHASH_TIGER`
- `MHASH_TIGER128`
- `MHASH_TIGER160`
- `MHASH_WHIRLPOOL`

# Örnekler

Örnek 1 - Bir dizgenin MD5 ve HMAC aşlarını hesaplayıp sonuçları birer onaltılık dizge olarak çıktılar

    <?php
    $girdi = "what do ya want for nothing?";
    $aş = mhash(MHASH_MD5, $girdi);
    echo "MD5 aşı: " . bin2hex($aş) . "<br />\n";
    $aş = mhash(MHASH_MD5, $girdi, "Jefe");
    echo "HMAC aşı: " . bin2hex($aş) . "<br />\n";
    ?>

Yukarıdaki örneğin çıktısı:

    MD5 aşı: d03cb659cbf9192dcd066272249f8412
    HMAC aşı: 750c783e6ab0b503eaa86e310a5db738

# Mhash İşlevleri

# mhash

(PHP 4, PHP 5, PHP 7, PHP 8)

mhash — İleti aşını hesaplar

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mhash(int `$algo`, string `$veri`, ?string `$anahtar` = `null`): string|false

Belirtilen `algo`ritma kullanılarak belirtilen `veri` için bir aş üretilir.

### Bağımsız Değişkenler

`algo`

  `MHASH_algoAdı` sabitlerinden biri olarak aş üretiminde kullanılacak algoritma.

`veri`

  Bir dizge olarak aşı üretilecek veri.

`anahtar`

  Belirtilirse işlev bir ileti aşı yerine bir HMAC aşı döndürür. HMAC, ileti kimlik doğrulaması için anahtarlı bir aştır, başka bir deyişle belirtilen anahtara bağlı bir ileti aşıdır. Mhash tarafından desteklenen algoritmaların bazıları HMAC kipinde kullanılamaz.

### Dönen Değerler

Bir hata durumunda `false`, yoksa elde edilen ileti aşını veya HMAC aşını bir dizge olarak döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine `hash_*()` işlevleri kullanılmalıdır.
8.0.0 | `anahtar` artık `null` olabiliyor.

# mhash_count

(PHP 4, PHP 5, PHP 7, PHP 8)

mhash_count — Kullanılabilecek en yüksek algoritmanın kimliğini döndürür

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mhash_count(): int

Kullanılabilecek en yüksek algoritmanın kimliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kullanılabilecek en büyük algoritmanın kimliğini döndürür. Aşlar 0'dan bu algoritmanın kimliğine kadar numaralıdır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine `hash_*()` işlevleri kullanılmalıdır.

### Örnekler

Örnek 1 - Tüm algoritmaları sıradan geçmek

    <?php

    $nr = mhash_count();

    for ($i = 0; $i <= $nr; $i++) {
        echo sprintf("%s için küme boyu %d bayttır\n",
            mhash_get_hash_name($i),
            mhash_get_block_size($i));
    }
    ?>

# mhash_get_block_size

(PHP 4, PHP 5, PHP 7, PHP 8)

mhash_get_block_size — Belirtilen algoritmanın küme boyunu döndürür

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mhash_get_block_size(int `$algo`): int|false

Belirtilen algoritmanın küme boyunu döndürür.

### Bağımsız Değişkenler

`algo`

  `MHASH_algoAdı` sabitlerinden biri olarak kullanılacak algoritma.

### Dönen Değerler

`algo` algoritması mevcut değilse `false` mevcutsa bayt cinsinden küme uzunluğu döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine `hash_*()` işlevleri kullanılmalıdır.

### Örnekler

Örnek 1 - mhash_get_block_size() örneği

    <?php

    echo mhash_get_block_size(MHASH_MD5); // 16

    ?>

# mhash_get_hash_name

(PHP 4, PHP 5, PHP 7, PHP 8)

mhash_get_hash_name — Belirtilen algoritmanın ismini döndürür

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mhash_get_hash_name(int `$algo`): string|false

Belirtilen algoritmanın ismini döndürür.

### Bağımsız Değişkenler

`algo`

  `MHASH_algoAdı` sabitlerinden biri olarak kullanılacak algoritma.

### Dönen Değerler

`algo` algoritması mevcut değilse `false` mevcutsa algoritmanın ismini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine `hash_*()` işlevleri kullanılmalıdır.

### Örnekler

Örnek 1 - mhash_get_hash_name() örneği

    <?php

    echo mhash_get_hash_name(MHASH_MD5); // MD5

    ?>

# mhash_keygen_s2k

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

mhash_keygen_s2k — Bir anahtar üretir

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function mhash_keygen_s2k(
int `$algo`,
string `$parola`,
string `$tuz`,
int `$uzunluk`
): string|false

Belirtilen `algo` için kullanıcı tarafından sağlanan `parola` ile bir anahtar üretir.

Kullanılan algoritma OpenPGP belgesinde (» RFC 2440) belirtilen Tuzlu S2K algoritmasıdır.

Kullanıcılar normalde klavyede yazabilecekleri anahtarları seçtikleri için, kullanıcı tarafından sağlanan parolaların kriptografik algoritmalarda anahtar olarak kullanılmaya uygun olmadığını unutmayın. Bu parolalar, karakter başına yalnızca 6 ila 7 bit (veya daha az) kullanır. Kullanıcı tarafından sağlanan anahtara bir dönüşüm (bu işlev gibi) uygulanması şiddetle tavsiye edilir.

### Bağımsız Değişkenler

`algo`

  `MHASH_algoAdı` sabitlerinden biri olarak anahtarı oluşturmak için kullanılacak algoritma.

`parola`

  Kullanıcı tarafından sağlanmış parola.

`tuz`

  Anahtar üretirken her anahtar için farklı bir tuz belirtilmelidir. Anahtarı denetlerken bu tuzu bilmeniz gerekir. Bu bakımdan en iyisi anahtara eklemektir. `tuz` sabit 8 bayt uzunlukta olmalıdır, eğer daha kısa belirtilirse dolgu karakteri olarak "\0" kullanılır.

`uzunluk`

  Bayt cinsinden anahtar uzunluğu.

### Dönen Değerler

Bir hata durumunda `false`, yoksa üretilen anahtarı bir dizge olarak döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine `hash_*()` işlevleri kullanılmalıdır.

## İçindekiler

- mhash — İleti aşını hesaplar
- mhash_count — Kullanılabilecek en yüksek algoritmanın kimliğini döndürür
- mhash_get_block_size — Belirtilen algoritmanın küme boyunu döndürür
- mhash_get_hash_name — Belirtilen algoritmanın ismini döndürür
- mhash_keygen_s2k — Bir anahtar üretir

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Örnekler
- Mhash İşlevleri
  - mhash — İleti aşını hesaplar
  - mhash_count — Kullanılabilecek en yüksek algoritmanın kimliğini döndürür
  - mhash_get_block_size — Belirtilen algoritmanın küme boyunu döndürür
  - mhash_get_hash_name — Belirtilen algoritmanın ismini döndürür
  - mhash_keygen_s2k — Bir anahtar üretir

# OpenSSL

# Giriş

Bu eklenti, simetrik ve asimetrik şifreleme ve şifre çözme, PBKDF2, PKCS7, PKCS12, X509 ve diğer kripto işlemleri için » OpenSSL kitaplığının işlevlerini sağlar. Buna ek olarak TLS akışlarının uygulanmasını sağlar.

OpenSSL, bu modülün şu anda desteklemediği birçok özellik sunar. Bunlardan bazıları gelecekte eklenebilir.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

PHP 7.0 için OpenSSL >= 0.9.8, < 1.2 gerekir. PHP 7.1-8.0 için OpenSSL >= 1.0.1, < 3.0 gerekir. PHP >= 8.1 için OpenSSL >= 1.0.2, < 4.0 gerekir.

Uyarı

Daima OpenSSL'in geliştirmesi devam eden sürümünü kullanmanızı öneririz yoksa HTTP sunucunuz saldırılardan zarar görebilir.

## Kurulum

PHP'nin OpenSSL desteğini kullanmak için PHP'yi --with-openssl seçeneği ile derlemelisiniz.

OpenSSL kütüphanesi çalışma anındaki normal işlemler için ek gereksinimlere sahiptir. En önemlisi, OpenSSL'in, rasgele veya yarı rasgele bir sayı üretecine erişebilmesi gerekir; çoğu Unix ve Unix benzeri (Linux dahil) platform için bu `/dev/urandom` veya `/dev/random` aygıtına erişebilmek anlamına gelir.

PHP'nin sabit kodlanmış bir öntanımlı yerine sistem şifre listesini kullanmasını sağlayan --with-system-ciphers yapılandırma seçeneği mevcuttur.

> Bilginize: Win32 kullanıcıları için

> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: libeay32.dll veya OpenSSL 1.1 itibariyle libcrypto-*.dll

> Anahtar üretim ve sertifika imzalama işlevlerini kullanmayı düşünüyorsanız sisteminizde ek olarak geçerli bir openssl.cnf kurulu olmalıdır. Win32 çalıştırılabilir paketlerine örnek bir yapılandırma dosyası eklenmekte ve bu dosya extras/ssl dizinine konmaktadır.

> PHP openssl.cnf dosyasını şu mantıksal sırayla araştırır:

> - `OPENSSL_CONF` ortam değişkeni varsa, değişkenin değeri yapılandırma dosyasının yolu olarak (dosya ismi dahil) kullanılır.
> - `SSLEAY_CONF` ortam değişkeni varsa, değişkenin değeri yapılandırma dosyasının yolu olarak (dosya ismi dahil) kullanılır.
> - openssl.cnf dosyasının öntanımlı sertifika alanında bulunduğu varsayılır (openssl DLL'i derlenirken böyle yapılandırılır). Yani, dosyanın öntanımlı yeri: C:\Program Files\Common Files\SSL\openssl.cnf (x64) veya C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86) ya da PHP 7.4.0 öncesinde C:\usr\local\ssl\openssl.cnf.
> Kurulum sırasında yapılandırma dosyasının öntanımlı yere mi kurulacağına yoksa başka bir yere kurup yerini ortam değişkenlerini kullanarak mı belirtileceğine karar verilmelidir. Bir yapılandırma dosyası gerektiren işlevlerdeki `seçenekler` bağımsız değişkenini kullanarak dosyanın öntanımlı yeri geçersiz kılınabilir.
> Dikkat

> Yetkisiz kullanıcıların openssl.cnf dosyasını değiştirmelerine izin verilmediğinden emin olunmalıdır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | --with-openssl[=DiZiN] artık pkg-config değişkenini PKG_CONFIG_PATH OpenSSL konumuna ayarlamak veya OPENSSL_LIBS ve OPENSSL_CFLAGS değişkenlerini belirtmek yerine bir dizin belirtilmesini artık kabul etmiyor.
7.4.0 | OpenSSL öntanımlı yapılandırma dosyasının yeri evvelce C:\usr\local\ssl iken artık sırayla şuralarda aranmaktadır: C:\Program Files\Common Files\SSL ve C:\Program Files (x86)\Common Files\SSL.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

openssl Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
openssl.cafile | "" | `INI_PERDIR` |
openssl.capath | "" | `INI_PERDIR` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`openssl.cafile` string

  Uzaktaki görevdeşin kimliğini doğrulamak için `verify_peer` bağlam seçeneğiyle kullanılması gereken yerel dosya sistemindeki Sertifika Yetkilisi dosyasının konumu.

`openssl.capath` string

  cafile belirtilmezse veya sertifika orada yoksa capath ile gösterilen dizinde uygun bir sertifika aranır. capath, doğru şekilde aşlanmış bir sertifika dizini olmalıdır.

Ayrıca bkz. SSL bağlamı seçenekleri

## Özkaynak Türleri

PHP 8.0.0 öncesinde, OpenSSL modülünde 3 özkaynak türü tanımlıydı:

- `OpenSSL key`
- `OpenSSL X.509`
- `OpenSSL X.509 CSR`

# Öntanımlı Sabitler

## İçindekiler

- Amaç sınama seçenekleri
- Asimetrik şifreleme için dolgu seçenekleri
- Anahtar türleri
- PKCS7 Seçenekleri/Sabitleri
- CMS Seçenekleri/Sabitleri
- İmzalama Algoritmaları
- Şifreler
- Sürüm sabitleri
- Sunucu Adı Gösterge sabitler
- Diğer sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

## Amaç sınama seçenekleri

`X509_PURPOSE_SSL_CLIENT` (int)
`X509_PURPOSE_SSL_SERVER` (int)
`X509_PURPOSE_NS_SSL_SERVER` (int)
`X509_PURPOSE_SMIME_SIGN` (int)
`X509_PURPOSE_SMIME_ENCRYPT` (int)
`X509_PURPOSE_CRL_SIGN` (int)
`X509_PURPOSE_ANY` (int)

## Asimetrik şifreleme için dolgu seçenekleri

`OPENSSL_PKCS1_PADDING` (int)
`OPENSSL_SSLV23_PADDING` (int)
`OPENSSL_NO_PADDING` (int)
`OPENSSL_PKCS1_OAEP_PADDING` (int)

## Anahtar türleri

`OPENSSL_KEYTYPE_RSA` (int)
`OPENSSL_KEYTYPE_DSA` (int)
`OPENSSL_KEYTYPE_DH` (int)
`OPENSSL_KEYTYPE_EC` (int)
  Bu seçenek sadece PHP, OpenSSL 0.9.8+ ile derlendiği takdirde kullanılabilir.

## PKCS7 Seçenekleri/Sabitleri

S/MIME işlevleri seçenek olarak aşağıdaki değerlerin bitsel olarak VEYAlanmasıyla elde edilen değerleri kullanırlar:

PKCS7 CONSTANTS
Sabit | Açıklama
--- | ---
`PKCS7_TEXT` (int) | Şifreli/imzalı iletiye başlıklar `text/plain` içerik türüyle eklenir. Şifre çözme veya doğrulama yapılacaksa bu başlıklar çıktıdan ayıklanır; eğer şifresi çözülecek veya doğrulanacak iletinin MIME türü `text/plain` değilse bir hata oluşur.
`PKCS7_BINARY` (int) | Normalde girdi iletisi, (S/MIME belirtiminin gereği olarak) satırsonu karakteri olarak `CR` ve `LF` kullanan "meşru" biçeme dönüştürülür. Bu seçenek kullanıldığı takdirde hiçbir dönüşüm yapılmaz. MIME biçeminde olmayan ikil verilerle çalışırken yararlıdır.
`PKCS7_NOINTERN` (int) | Bir ileti doğrulanırken iletiye dahil edilmiş sertifikalar varsa bunlar imzalama sertifikaları olarak ele alınır. Bu seçenekle sadece openssl_pkcs7_verify() işlevinin `güvenilmez_sertifikalar_dosyası` bağımsız değişkeninde belirtilen sertifikalar kullanılır. Bununla birlikte, sağlanan sertifikalar hala güvencesiz CA olarak kullanılabilir.
`PKCS7_NOVERIFY` (int) | İmzalı iletinin imzalama sertifikası doğrulanmaz.
`PKCS7_NOCHAIN` (int) | İmzalama setifikalarına zincir doğrulama yapılmaz; yani, imzalı iletideki sertifikalar güvencesiz CA olarak kullanılmaz.
`PKCS7_NOCERTS` (int) | Bir ileti imzalanırken normal olarak imzalama sertifikası iletiye eklenir. Bu seçenek belirtilmişse eklenmez. Böylece imzalanan iletinin boyu küçülmüş olur, ancak doğrulayıcının imzalama sertifikasının bir kopyasına sahip olması gerekir (örneğin, openssl_pkcs7_verify() işlevinin `güvenilmez_sertifikalar_dosyası` bağımsız değişkeninde aktarılabilir).
`PKCS7_NOATTR` (int) | Normalde bir ileti imzalanırken desteklenen bakışımlı algoritmalar ve imzalama zamanı dahil bazı öznitelikler iletiye eklenir. Bu seçenek belirtilmişse bunlar iletiye eklenmez.
`PKCS7_DETACHED` (int) | Bir ileti imzalanırken MIME türü `"multipart/signed"` olan salt metin imzalama yapılır. openssl_pkcs7_sign() işlevinin `seçenekler` bağımsız değişkeninde hiçbir şey belirtmezseniz öntanımlı olarak bu uygulanır. Bu seçeneği belirtmezseniz ileti şeffaf olmayan bir biçimde imzalanır, ancak eposta aktarımlarına karşı daha dayanıklı olmakla birlikte, ileti S/MIME desteği olmayan eposta araçları ile okunamaz.
`PKCS7_NOSIGS` (int) | Bir iletideki imzalar doğrulanmaz ve denenmez.
`PKCS7_NOOLDMIMETYPE` (int) | PHP 8.3.0 ve sonrasında kullanılabilir. Bir iletiyi şifrelemek için içerik türü `application/x-pkcs7-mime` yerine `application/pkcs7-mime` yapılır.

## CMS Seçenekleri/Sabitleri

CMS işlevleri, aşağıdaki değerlerden bir veya daha fazlasını içerebilen bir bit alanı kullanılarak belirtilen seçenekleri kullanır:

CMS Sabitleri
Sabit | Açıklama
--- | ---
`OPENSSL_CMS_TEXT` (int) | Şifrelenmiş/imzalanmış iletiye `text/plain` içerik türü başlıklarını ekler. Şifre çözme veya doğrulama durumunda, bu başlıkları çıktıdan çıkarır - şifresi çözülen veya doğrulanan iletinin MIME türü `text/plain` değilse bir hata oluşur.
`OPENSSL_CMS_BINARY` (int) | Normalde girdi iletisi, CMS belirtiminin gerektirdiği şekilde satır sonu olarak `CR` ve `LF`'i etkin bir şekilde kullanan "meşru" biçeme dönüştürülür. Bu seçenek mevcut olduğunda, herhangi bir dönüşüm yapılmaz. Bu, CMS biçeminde olmayabilecek ikil veriyi işlerken kullanışlıdır.
`OPENSSL_CMS_NOINTERN` (int) | Bir ileti doğrulanırken, iletinin içerdiği sertifikalarda (varsa) normalde imza sertifikası aranır. Bu seçenek ile sadece openssl_cms_verify() işlevinin `güvenilmeyen_sertifikalar_dosyası` bağımsız değişkeninde belirtilen sertifikalar kullanılır. Sağlanan sertifikalar yine de güvenilmeyen sertifikalar olarak kullanılabilir.
`OPENSSL_CMS_NOVERIFY` (int) | İmzalı bir iletinin imzalayanlar sertifikasını doğrulanmaz. message.
`OPENSSL_CMS_NOCERTS` (int) | Bir iletiyi imzalarken normalde imzalayanın sertifikası iletiye dahil edilir - bu seçenekle hariç tutulur. Bu, imzalanan iletinin boyutunu azaltır, ancak doğrulayıcının imzalayanlar sertifikasının bir kopyasını yerel olarak bulundurması gerekir (örneğin, sertifika openssl_cms_verify() işlevine `güvenilmeyen_sertifikalar_dosyası` ile aktarılarak kullanılabilir).
`OPENSSL_CMS_NOATTR` (int) | Normalde bir ileti imzalandığında, imzalama zamanını ve desteklenen simetrik algoritmaları içeren bir dizi öznitelik iletiye dahil edilir. Bu seçenekle dahil edilmez.
`OPENSSL_CMS_DETACHED` (int) | Bir ileti imzalanırken, `"multipart/signed"` S/MIME türü ile açık metin imzalama kullanılır. openssl_cms_sign() işlevine `seçenekler` ile herhangi bir seçenek belirtilmezse öntanımlı olarak bu yapılır. Bu seçeneği kapatırsanız, ileti mat imzalama kullanılarak imzalanır; ileti, eposta sunucularından aktarılırken dönüşüme daha dirençli olur fakat S/MIME'yi desteklemeyen posta istemcileri tarafından okunamaz.
`OPENSSL_CMS_NOSIGS` (int) | Bir iletideki imzaları doğrulamaya çalışmaz.
`OPENSSL_CMS_OLDMIMETYPE` (int) | PHP 8.3.0 ve sonrasında kullanılabilir. Bir iletiyi şifrelemek için içerik türü `application/x-pkcs7-mime` yerine `application/pkcs7-mime` yapılır.

## İmzalama Algoritmaları

`OPENSSL_ALGO_DSS1` (int)
`OPENSSL_ALGO_SHA1` (int)
  openssl_sign() ve openssl_verify() tarafından öntanımlı algoritma olarak kullanılır.
`OPENSSL_ALGO_SHA224` (int)
`OPENSSL_ALGO_SHA256` (int)
`OPENSSL_ALGO_SHA384` (int)
`OPENSSL_ALGO_SHA512` (int)
`OPENSSL_ALGO_RMD160` (int)
`OPENSSL_ALGO_MD5` (int)
`OPENSSL_ALGO_MD4` (int)
`OPENSSL_ALGO_MD2` (int)
  Bu sabit sadece PHP, MD2 desteğiyle derlenmişse kullanılabilir. OpenSSL 1.0.0+ derlenirken `enable-md2` ve PHP derlenirken CFLAG olarak `-DHAVE_OPENSSL_MD2_H` aktarılmasını gerektirir.

## Şifreler

`OPENSSL_DEFAULT_STREAM_CIPHERS` (string)
  Öntanımlı şifreleri listeler.
`OPENSSL_CIPHER_RC2_40` (int)
`OPENSSL_CIPHER_RC2_128` (int)
`OPENSSL_CIPHER_RC2_64` (int)
`OPENSSL_CIPHER_DES` (int)
`OPENSSL_CIPHER_3DES` (int)
`OPENSSL_CIPHER_AES_128_CBC` (int)
`OPENSSL_CIPHER_AES_192_CBC` (int)
`OPENSSL_CIPHER_AES_256_CBC` (int)

## Sürüm sabitleri

`OPENSSL_VERSION_TEXT` (string)
`OPENSSL_VERSION_NUMBER` (int)

## Sunucu Adı Gösterge sabitler

`OPENSSL_TLSEXT_SERVER_NAME` (int)
  SNI desteği var mı/yok mu?

> Bilginize:

> PHP'nin OpenSSL 0.9.8j veya üstü ile derlenmesini gerektirir.

## Diğer sabitler

`OPENSSL_RAW_DATA` (int)
  openssl_encrypt() veya openssl_decrypt() işlevine `OPENSSL_RAW_DATA` aktarılmışsa, veri olduğu gibi döndürülür. Belirtilmezse Base64 kodlu veri döndürülür.
`OPENSSL_DONT_ZERO_PAD_KEY` (int)
  openssl_encrypt() işlevinin öntanımlı anahtar uzunluğundan daha kısa olan anahtarlara dolgu eklemesini önler.
`OPENSSL_ZERO_PADDING` (int)
  Öntanımlı olarak şifreleme işlemleri, standart blok doldurma kullanılarak doldurulur ve şifre çözülürken dolgu kontrol edilip kaldırılır. openssl_encrypt() veya openssl_decrypt() işlevine `OPENSSL_ZERO_PADDING` aktarılırsa, herhangi bir dolgu yapılmaz. Şifrelenen veya şifresi çözülen toplam veri miktarı blok boyutunun katları olmalıdır, aksi takdirde bir hata oluşur.
`OPENSSL_ENCODING_SMIME` (int)
  Kodlamanın S/MIME olduğunu belirtir.
`OPENSSL_ENCODING_DER` (int)
  Kodlamanın DER olduğunu belirtir. (DER: Distinguished Encoding Rules - Seçkin Kodlama Kuralları).
`OPENSSL_ENCODING_PEM` (int)
  Kodlamanın PEM olduğunu belirtir. (PEM: Privacy-Enhanced Mail - Gizliliği Gelişkin Posta).

# Anahtar/Sertifika Bağımsız değişkenleri

Sadece bir kaç openssl işlevi bir anahtar veya sertifika bağımsız değişkeni gerektirir. Aşağıdaki yöntemlerden biri kullanılabilir.

- Sertifikalar

  1. openssl_x509_read() işlevinden dönen bir OpenSSLCertificate örneği (veya PHP 8.0.0 öncesinde `OpenSSL X.509` türünde bir özkaynak).
  2. file://bir/yol/sertifika.pem biçeminde bir dizge; İsmi belirtilen dosya PEM kodlamalı bir sertifika içermelidir.
  3. -----BEGIN CERTIFICATE----- ile başlayabilen PEM kodlamalı bir sertifikanın içeriğinden oluşan bir dizge.

- Certificate Signing Requests (CSRs)

  1. openssl_csr_new() işlevinden dönen bir OpenSSLCertificateSigningRequest örneği (veya PHP 8.0.0 öncesinde `OpenSSL X.509 CSR` türünde bir özkaynak).
  2. file://bir/yol/csr.pem biçeminde bir dizge; dosya PEM kodlamalı bir CSR içermelidir.
  3. -----BEGIN CERTIFICATE REQUEST----- ile başlayabilen PEM kodlamalı bir CSR'nin içeriğinden oluşan bir dizge.

- Genel ve Gizli Anahtarlar

  1. openssl_get_publickey() veya openssl_get_privatekey() işlevinden dönmüş bir OpenSSLAsymmetricKey örneği (veya PHP 8.0.0 öncesinde `OpenSSL key` türünde bir özkaynak).
  2. Sadece genel anahtarlar için: bir OpenSSLCertificate örneği (veya PHP 8.0.0 öncesinde `OpenSSL X.509` türünde bir özkaynak).
  3. file://bir/yol/dosya.pem biçeminde bir dizge; belirtilen dosya PEM kodlamalı bir sertifika veya gizli anahtar (veya her ikisini de) içermelidir.
  4. -----BEGIN PUBLIC KEY----- ile başlayabilen, PEM kodlamalı bir sertifika veya anahtarın içeriğinden oluşan bir dizge.
  5. Gizli anahtarlar için ayrıca, `array($anahtar, $parolası)` sözdizimini de kullanabilirsiniz; burada $anahtar file:// kullarak belirtilen bir anahtar veya bunun dizgesel içeriği, $parolası ise gizli anahtarın parolasını içeren bir dizge olmalıdır.

# Sertifika Doğrulama

Bir imza veya sertifikayı doğrulayacak bir işlev çağrılırken `ca_bilgisi` bağımsız değişkeninde güvenilir CA dosyalarının yerlerini belirten dosya ve dizin isimlerini içeren bir dizi belirtilir. Bir dizin belirtilirken, dizin dizgesi openssl komutunun kullanabileceği şekilde biçimlendirilmiş olmalıdır.

# OpenSSL İşlevleri

# openssl_cipher_iv_length

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

openssl_cipher_iv_length — Gets the cipher iv length

### Açıklama

function openssl_cipher_iv_length(string `$cipher_algo`): int|false

Gets the cipher initialization vector (iv) length.

### Bağımsız Değişkenler

`cipher_algo`

  The cipher method, see openssl_get_cipher_methods() for a list of potential values.

### Dönen Değerler

Returns the cipher length on success, or `false` on failure.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error when the cipher algorithm is unknown.

### Örnekler

Örnek 1 openssl_cipher_iv_length() example

    <?php
    $method = 'AES-128-CBC';
    $ivlen = openssl_cipher_iv_length($method);

    echo $ivlen;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    16

# openssl_cipher_key_length

(PHP 8 >= 8.2.0)

openssl_cipher_key_length — Gets the cipher key length

### Açıklama

function openssl_cipher_key_length(string `$cipher_algo`): int|false

Gets the cipher key length.

### Bağımsız Değişkenler

`cipher_algo`

  The cipher method, see openssl_get_cipher_methods() for a list of potential values.

### Dönen Değerler

Returns the cipher length on success, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error when the cipher algorithm is unknown.

### Örnekler

Örnek 1 openssl_cipher_key_length() example

    <?php
    $method = 'AES-128-CBC';

    var_dump(openssl_cipher_key_length($method));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(16)

# openssl_cms_decrypt

(PHP 8)

openssl_cms_decrypt — Decrypt a CMS message

### Açıklama

function openssl_cms_decrypt(
string `$input_filename`,
string `$output_filename`,
#[\SensitiveParameter]OpenSSLCertificate|string `$certificate`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|null `$private_key` = `null`,
int `$encoding` = `OPENSSL_ENCODING_SMIME`
): bool

Decrypts a CMS message.

### Bağımsız Değişkenler

`input_filename`

  The name of a file containing encrypted content.

`output_filename`

  The name of the file to deposit the decrypted content.

`certificate`

  The name of the file containing a certificate of the recipient.

`private_key`

  The name of the file containing a PKCS#8 key.

`encoding`

  The encoding of the input file. One of `OPENSSL_ENCODING_SMIME`, `OPENSSL_ENCODING_DER` or `OPENSSL_ENCODING_PEM`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# openssl_cms_encrypt

(PHP 8)

openssl_cms_encrypt — Encrypt a CMS message

### Açıklama

function openssl_cms_encrypt(
string `$input_filename`,
string `$output_filename`,
OpenSSLCertificate|array|string `$certificate`,
?array `$headers`,
int `$flags` = 0,
int `$encoding` = `OPENSSL_ENCODING_SMIME`,
string|int `$cipher_algo` = `OPENSSL_CIPHER_AES_128_CBC`
): bool

This function encrypts content to one or more recipients, based on the certificates that are passed to it.

### Bağımsız Değişkenler

`input_filename`

  The file to be encrypted.

`output_filename`

  The output file.

`certificate`

  Recipients to encrypt to.

`headers`

  Headers to include when S/MIME is used.

`flags`

  Flags to be passed to CMS_sign.

`encoding`

  An encoding to output. One of `OPENSSL_ENCODING_SMIME`, `OPENSSL_ENCODING_DER` or `OPENSSL_ENCODING_PEM`.

`cipher_algo`

  A cipher to use.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | `cipher_algo` is now of type int or string. Previously, it was of type int.
8.1.0 | The default cipher algorithm (`cipher_algo`) is now AES-128-CBC (`OPENSSL_CIPHER_AES_128_CBC`). Previously, PKCS7/CMS was used (`OPENSSL_CIPHER_RC2_40`).

# openssl_cms_read

(PHP 8)

openssl_cms_read — Export the CMS file to an array of PEM certificates

### Açıklama

function openssl_cms_read(string `$input_filename`, array `&$certificates`): bool

Performs the exact analog to openssl_pkcs7_read().

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`input_filename`

`certificates`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# openssl_cms_sign

(PHP 8)

openssl_cms_sign — Bir dosyayı imzalar

### Açıklama

function openssl_cms_sign(
string `$girdi_dosyası`,
string `$çıktı_dosyası`,
OpenSSLCertificate|string `$sertifika`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$özel_anahtar`,
?array `$başlıklar`,
int `$seçenekler` = 0,
int `$kodlama` = `OPENSSL_ENCODING_SMIME`,
?string `$güvenilmeyen_sertifikalar_dosyası` = `null`
): bool

Bu işlev bir dosyayı bir X.509 sertifikası ve anahtarı ile imzalar.

### Bağımsız Değişkenler

`girdi_dosyası`

  İmzalanacak dosyanın ismi.

`çıktı_dosyası`

  Sonuçların saklanacağı dosya.

`sertifika`

  İmzalama setifikası. Geçerli değerler için bkz: Anahtar/Sertifika bağımsız değişkenleri

`özel_anahtar`

  `sertifika` ile ilişkili anahtarı içeren dosyanın ismi. Geçerli değerler için bkz: Anahtar/Sertifika bağımsız değişkenleri

`başlıklar`

  S/MIME çıktıda içerilecek başlıklar dizisi.

`seçenekler`

  cms_sign() işlevine aktarılacak seçenekler.

`kodlama`

  Çıktı dosyasının kodlaması. Şunlardan biri olabilir: `OPENSSL_CMS_SMIME`, `OPENSLL_CMS_DER` veya `OPENSSL_CMS_PEM`.

`güvenilmeyen_sertifikalar_dosyası`

  İmzaya dahil edilecek ara sertifikalar.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - openssl_cms_sign() örneği

    <?php

    openssl_cms_sign('input.txt', 'output.txt', 'file://cert.pem', 'file://privkey.pem', null, OPENSSL_CMS_BINARY, OPENSSL_ENCODING_DER, 'chain.pem');
    ?>

# openssl_cms_verify

(PHP 8)

openssl_cms_verify — Belirtilen CMS imzasını doğrular

### Açıklama

function openssl_cms_verify(
string `$girdi_dosyası`,
int `$seçenekler` = 0,
?string `$sertifikalar` = `null`,
array `$ca_bilgisi` = [],
?string `$güvenilmeyen_sertifikalar_dosyası` = `null`,
?string `$içerik` = `null`,
?string `$pk7` = `null`,
?string `$imza_dosyası` = `null`,
int `$kodlama` = `OPENSSL_ENCODING_SMIME`
): bool

Bu işlev ekli ya da ayrık bir CMS imzasını belirtilen kodlama ile doğrular.

### Bağımsız Değişkenler

`girdi_dosyası`

  Girdi dosyası.

`seçenekler`

  cms_verify() işlevine aktarılacak seçenekler.

`sertifikalar`

  İmzalayan sertifikasını ve isteğe bağlı olarak ara sertifikaları içeren dosya.

`ca_bilgisi`

  Öz imzalı sertifika yetkilisi sertifikalarını içeren dizi.

`güvenilmeyen_sertifikalar_dosyası`

  Ek ara sertifikaları içeren dosya.

`içerik`

  İmzalar çıkarıldığında içeriğe işaret eden dosya.

`pk7`

`imza_dosyası`

  İmzaların kaydedileceği dosya.

`kodlama`

  Girdi dosyasının kodlaması. Şunlardan biri olabilir: `OPENSSL_CMS_SMIME`, `OPENSLL_CMS_DER` veya `OPENSSL_CMS_PEM`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# openssl_csr_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_export — Belirtilen CSR'yi bir dizge olarak döndürür

### Açıklama

function openssl_csr_export(OpenSSLCertificateSigningRequest|string `$csr`, string `&$çıktı`, bool `$metinsiz` = `true`): bool

`csr` ile belirtilen sertifika imzalama isteğini PEM biçemli bir metne dönüştürüp `çıktı` bağımsız değişkenine kaydeder.

### Bağımsız Değişkenler

`csr`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`çıktı`

  Başarı durumunda bu dizge PEM kodlu CSR içerir.

`metinsiz`

  Belirtilmesi isteğe bağlı olan `metinsiz` bağımsız değişkeni çıktının ayrıntı seviyesini belirler. `false` belirtilirse çıktıda insanlar için anlamlı bilgiler bulunmaz. Bağımsız değişkenin öntanımlı değeri: `true`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `csr` artık OpenSSLCertificateSigningRequest örneği kabul ediyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - openssl_csr_export() örneği

    <?php
    $subject = array(
        "commonName" => "example.com",
    );
    $private_key = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    $configargs = array(
        'digest_alg' => 'sha256WithRSAEncryption'
    );
    $csr = openssl_csr_new($subject, $private_key, $configargs);
    openssl_csr_export($csr, $csr_string);
    echo $csr_string;
    ?>

### Ayrıca Bakınız

- openssl_csr_export_to_file() - Belirtilen CSR'yi bir dosyaya kaydeder
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_csr_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_export_to_file — Belirtilen CSR'yi bir dosyaya kaydeder

### Açıklama

function openssl_csr_export_to_file(OpenSSLCertificateSigningRequest|string `$csr`, string `$dosya`, bool `$metinsiz` = `true`): bool

`csr` ile belirtilen sertifika imzalama isteğini CSR biçemli bir metne dönüştürüp `dosya`ya kaydeder.

### Bağımsız Değişkenler

`csr`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`dosya`

  Çıktı dosyasının yolu.

`metinsiz`

  Belirtilmesi isteğe bağlı olan `metinsiz` bağımsız değişkeni çıktının ayrıntı seviyesini belirler. `false` belirtilirse çıktıda insanlar için anlamlı bilgiler bulunmaz. Bağımsız değişkenin öntanımlı değeri: `true`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `csr` artık OpenSSLCertificateSigningRequest örneği kabul ediyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - openssl_csr_export_to_file() örneği

    <?php
    $subject = array(
        "commonName" => "example.com",
    );
    $private_key = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    $csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384') );
    openssl_pkey_export_to_file($private_key, 'example-priv.key');
    // CSR, $subject ile birlikte özel anahtara karşılık gelen genel anahtarı içerir
    openssl_csr_export_to_file($csr, 'example-csr.pem');
    ?>

### Ayrıca Bakınız

- openssl_csr_export() - Belirtilen CSR'yi bir dizge olarak döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_csr_get_public_key

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

openssl_csr_get_public_key — Bir CSR'nin açık anahtarını döndürür

### Açıklama

function openssl_csr_get_public_key(OpenSSLCertificateSigningRequest|string `$csr`, bool `$kısa_ad` = `true`): OpenSSLAsymmetricKey|false

openssl_csr_get_public_key() `csr`'den genel anahtarı çıkarır ve diğer işlevler için kullanıma hazırlar.

### Bağımsız Değişkenler

`csr`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`kısa_ad`
  Uyarı

  Bu bağımsız değişken yok sayılır.

### Dönen Değerler

Başarı durumunda OpenSSLAsymmetricKey, başarısızlık durumunda `false` döner

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık OpenSSLAsymmetricKey örneği dönüyor; evvelce `OpenSSL key` türünde bir özkaynak dönerdi.
8.0.0 | `csr` artık OpenSSLCertificateSigningRequest örneği kabul ediyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - openssl_csr_get_public_key() örneği

    <?php
    $subject = array(
        "commonName" => "example.com",
    );
    $private_key = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    $csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha256') );
    $public_key = openssl_csr_get_public_key($csr);
    $info = openssl_pkey_get_details($public_key);
    echo $info['key'];
    ?>

### Ayrıca Bakınız

- openssl_csr_get_subject() - Bir CSR'nin öznesini döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_pkey_get_details() - Anahtarla ilgili ayrıntıları bir dizi içinde döndürür
- openssl_pkey_export_to_file() - Bir anahtarın ihraç edilebilir gösterimini bir dosyaya kaydeder
- openssl_pkey_export() - Bir anahtarın ihraç edilebilir gösterimini bir dizge olarak döndürür

# openssl_csr_get_subject

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

openssl_csr_get_subject — Bir CSR'nin öznesini döndürür

### Açıklama

function openssl_csr_get_subject(OpenSSLCertificateSigningRequest|string `$csr`, bool `$kısa_ad` = `true`): array|false

openssl_csr_get_subject() commonName (CN), organizationName (O), countryName (C) vb. alanlar dahil olmak üzere `csr`'de kodlanmış konu ayırt edici ad bilgilerini döndürür.

### Bağımsız Değişkenler

`csr`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`kısa_ad`

  `kısa_ad` verinin dizi içinde nasıl indisleneceğini belirler - `kısa_ad` `true` (öntanımlı) ise alanlar kısa isimlerle indislenir, aksi takdirde uzun isimler kullanılır. Örneğin, commonName için kısa isim CN'dir.

### Dönen Değerler

Konuyu açıklayan ilişkisel bir dizi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `csr` artık OpenSSLCertificateSigningRequest örneği kabul ediyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - openssl_csr_get_subject() örneği

    <?php
    $subject = array(
        "countryName" => "CA",
        "stateOrProvinceName" => "Alberta",
        "localityName" => "Calgary",
        "organizationName" => "XYZ Widgets Inc",
        "organizationalUnitName" => "PHP Documentation Team",
        "commonName" => "Wez Furlong",
        "emailAddress" => "wez@example.com",
    );
    $private_key = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    $configargs = array(
        'digest_alg' => 'sha512WithRSAEncryption'
    );
    $csr = openssl_csr_new($subject, $privkey, $configargs);
    print_r(openssl_csr_get_subject($csr));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [C] => CA
        [ST] => Alberta
        [L] => Calgary
        [O] => XYZ Widgets Inc
        [OU] => PHP Documentation Team
        [CN] => Wez Furlong
        [emailAddress] => wez@example.com
    )

### Ayrıca Bakınız

- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_get_public_key() - Bir CSR'nin açık anahtarını döndürür
- openssl_x509_parse() - Bir X509 sertifikasını çözümleyip bilgileri bir dizi içinde döndürür

# openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_new — Bir sertifika imzalama isteği (CSR) üretir

### Açıklama

function openssl_csr_new(
array `$ayırdedici_adlar`,
#[\SensitiveParameter]OpenSSLAsymmetricKey `&$gizli_anh`,
?array `$seçenekler` = `null`,
?array `$ek_seçenekler` = `null`
): OpenSSLCertificateSigningRequest|false

`ayırdedici_adlar` ile sağlanan bilgilere dayalı olarak yeni bir sertifika imzalama isteği (CSR) üretir.

> Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

### Bağımsız Değişkenler

`ayırdedici_adlar`

  Sertifika için kullanılacak ayırt edilebilir isim veya konu alanları.

`gizli_anh`

  openssl_pkey_new() (veya başka bir openssl_pkey işlevi) ile üretilmiş bir gizli anahtar. Anahtar çiftinin genel anahtar parçası CSR'yi imzalamakta kullanılır.

`seçenekler`

  İsteği ilklendirmek için öntanımlı olarak sisteminizdeki `openssl.conf` kullanılır. `seçenekler` dizisinin `config_section_section` anahtarında başka bir yapılandırma dosyası bölümü belirtebileceğiniz gibi `config` anahtarında başka bir openssl yapılandırma dosyasının yolunu da belirtebilirsiniz. `seçenekler` dizisi aşağıdaki anahtarları içerebilir. Bu anahtarlar `openssl.conf` dosyasındaki eşdeğerleri gibi davranırlar.

  Yapılandırma Geçersizleştiricileri
  `seçenekler` anahtarı | Türü | `openssl.conf` eşdeğeri | Açıklama
  --- | --- | --- | ---
  digest_alg | string | default_md | Özet yöntemi veya imza aşı, genellikle openssl_get_md_methods() yöntemlerinden biridir.
  x509_extensions | string | x509_extensions | Bir x509 sertifikası üretilirken kullanılacak eklentileri belirler.
  req_extensions | string | req_extensions | Bir CSR üretilirken kullanılacak eklentileri belirler.
  private_key_bits | int | default_bits | Bir gizli anahtarın kaç bitlik olacağını belirler.
  private_key_type | int | none | Üretilecek gizli anahtarın türünü belirler. Şu sabitlerden biri olabilir: `OPENSSL_KEYTYPE_DSA`, `OPENSSL_KEYTYPE_DH`, `OPENSSL_KEYTYPE_RSA` veya `OPENSSL_KEYTYPE_EC`. Öntanımlı değer `OPENSSL_KEYTYPE_RSA`'dır.
  encrypt_key | bool | encrypt_key | İhraç edilecek anahtar (bir parola ile) şifrelenececek mi?
  encrypt_key_cipher | int | none | şifreleme sabitlerinden biri.
  curve_name | string | none | openssl_get_curve_names() adlarından biri.
  config | string | N/A | Size özel openssl.conf dosyasının yolu.

`ek_seçenekler`

  CSR için kullanılacak ek seçenekleri belirtmek için kullanılır. `ayırdedici_adlar` ve `ek_seçenekler` birer ilişkisel dizi olup anahtarları nesne kimliklerine (OID) dönüştürülerek isteğin ilgili parçasına uygulanır.

### Dönen Değerler

Üretilen CSR, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık OpenSSLCertificateSigningRequest örneği dönüyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak dönerdi.
8.0.0 | `gizli_anh` artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce `OpenSSL key` türünde bir özkaynak kabul ederdi.
7.1.0 | `seçenekler` artık `curve_name` seçeneğini destekliyor.

### Örnekler

Örnek 1 - Öz-imzalı sertifika üretimi

    <?php
    // SSL sertifikaları için commonName genellikle sertifikanın kullanılacağı
    // alanın ismidir. Fakat S/MIME sertifikalar için commonName, eposta adresi/
    // sahibinin ismidir. location ve identification alanları ise güvenceye konu
    // alan veya eposta sahibinin ismini içerir.
    $dn = array(
        "countryName" => "GB",
        "stateOrProvinceName" => "Somerset",
        "localityName" => "Glastonbury",
        "organizationName" => "The Brain Room Limited",
        "organizationalUnitName" => "PHP Documentation Team",
        "commonName" => "Wez Furlong",
        "emailAddress" => "wez@example.com"
    );

    // Yeni bir gizli/genel anahtar çifti üretelim
    $privkey = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));

    // Bir sertifika imzalama isteği üretelim
    $csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));

    // 365 günlük, öz-imzalı sertifika üretelim.
    $x509 = openssl_csr_sign($csr, null, $privkey, $days=365, array('digest_alg' => 'sha256'));

    // Öz-imzali sertifika, CSR ve gizli anahtarı ileride kullanım için saklayalım.
    openssl_csr_export($csr, $csrout); var_dump($csrout);
    openssl_x509_export($x509, $certout) and var_dump($certout);
    openssl_pkey_export($privkey, $pkeyout, "mypassword"); var_dump($pkeyout);

    // Oluşan hatalar varsa gösterelim
    while (($e = openssl_error_string()) !== false) {
        echo $e . "\n";
    }
    ?>

Örnek 2 - Öz-imzalı ECC sertifikası oluşrurmak (PHP 7.1.0 ve üstü)

    <?php
    $subject = array(
        "commonName" => "docs.php.net",
    );

    // Gizli/Genel Anahtar çiftini üretelim
    $private_key = openssl_pkey_new(array(
        "private_key_type" => OPENSSL_KEYTYPE_EC,
        "curve_name" => 'prime256v1',
    ));

    // Sertifika imzalama isteği (csr) üretelim
    $csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384'));

    // Öz-imzalı EC setifikası üretelim
    $x509 = openssl_csr_sign($csr, null, $private_key, $days=365, array('digest_alg' => 'sha384'));
    openssl_x509_export_to_file($x509, 'ecc-cert.pem');
    openssl_pkey_export_to_file($private_key, 'ecc-private.key');
    ?>

### Ayrıca Bakınız

- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_csr_sign

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_csr_sign — Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

### Açıklama

function openssl_csr_sign(
OpenSSLCertificateSigningRequest|string `$csr`,
OpenSSLCertificate|string|null `$CA_sert`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anh`,
int `$gün`,
?array `$seçenekler` = `null`,
int `$sıranum` = 0,
?string `$seri_hex` = `null`
): OpenSSLCertificate|false

`csr` ile belirtilen Sertifika İmzalama İsteğinden bir x509 sertifikesı üretir.

> Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

### Bağımsız Değişkenler

`csr`

  openssl_csr_new() tarafından üretilmiş bir sertifika imzalama isteği, file://bir/yol/csr biçeminde bir dizge olarak PEM kodlamalı bir CSR'nin dosya yolu veya openssl_csr_export() işlevinden dönen bir dizge olabilir.

`CA_sert`

  Üretilen sertifikayı imzalamak için kullanılacak sertifika. `null` belirtilirse üretilen sertifika kendisiyle imzalanır.

`gizli_anh`

  `CA_sert` ile ilişkili gizli anahtar.

`gün`

  Üretilen sertifikanın kaç gün geçerli kalacağı belirtilir.

`seçenekler`

  Üretilen sertifikanın ince ayarları için kullanılır. Bu bağımsız değişken ile ilgili ayrıntılı bilgi için openssl_csr_new() işlevine bakınız.

`sıranum`

  Üretilen sertifikanın sıra numarası. Belirtilmezse 0 öntanımlıdır.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa bir OpenSSLCertificate örneği döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık OpenSSLCertificate örneği dönüyor; evvelce `OpenSSL X.509` türünde bir özkaynak dönerdi.
8.0.0 | `csr` artık OpenSSLCertificateSigningRequest örneği kabul ediyor; evvelce `OpenSSL X.509 CSR` türünde bir özkaynak kabul ederdi.
8.0.0 | `CA_sert` artık OpenSSLCertificate örneği kabul ediyor; evvelce `OpenSSL X.509` türünde bir özkaynak kabul ederdi.
8.0.0 | `gizli_anh` artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce `OpenSSL key` veya `OpenSSL X.509` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - openssl_csr_sign() örneği - PEM imzalama (Kendi Sertifika Yetkilinizi nasıl oluşturursunuz?)

    <?php
    // Başka bir sayfadaki bir textarea'ya aktarılmak üzere bir
    // CSR alındığını varsayalım
    $csrdata = $_POST["CSR"];

    // Sertifikayı kendi "sertifika yetkilimizin sertifikası" ile
    // imzalayacağız. İmzalamak için başka bir sertifika da kullanılabilirdi,
    // fakat imzalama sertifikası yazılım/kulllanıcılar için güvenilir
    // olmadıkça işlem işe yaramayacak ve yeni bir imzalı sertifika gerekecektir.

    // Kendi CA sertifikamıza ve gizli anahtarımıza ihtiyacımız var
    $cacert = "file://bir/yol/ca.crt";
    $gizanh = array("file://bir/yol/ca.key", "gizanh_parolası");

    $usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365, array('digest_alg'=>'sha256') );

    // Üretilen sertifikayı gösterelim ki, kullanıcı onu kendi alanına
    // kopyalayabilsin (örneğin SSL sunucusunun sertifikasının bulunduğu dosyaya)
    openssl_x509_export($usercert, $certout);
    echo $certout;

    // Oluşan hata varsa gösterelim
    while (($e = openssl_error_string()) !== false) {
        echo $e . "\n";
    }
    ?>

# openssl_decrypt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_decrypt — Verinin şifresini çözer

### Açıklama

function openssl_decrypt(
string `$veri`,
string `$yöntem`,
#[\SensitiveParameter]string `$parola`,
int `$seçenekler` = 0,
string `$iy` = "",
?string `$etiket` = `null`,
string `$kiml_kntlı_ek_veri` = ""
): string|false

Bir ham veya base64 kodlu bir dizgeyi `veri` olarak alıp belirtilen `yöntem` ve `parola`'yı kullanarak verinin şifresini çözer.

### Bağımsız Değişkenler

`veri`

  Şifresi çözülecek veri.

`yöntem`

  Şifreleme yöntemi. Kullanılabilir şifreleme yöntemleri için openssl_get_cipher_methods() işlevine bakılabilir.

`parola`

  Anahtar.

`seçenekler`

  `OPENSSL_RAW_DATA`, `OPENSSL_ZERO_PADDING` veya `OPENSSL_DONT_ZERO_PAD_KEY` sabitlerinin bitsel birleşimi.

`iy`

  `null` olmayan bir ilklendirme yöneyi.

`etiket`

  AEAD şifreleme kipinde kimlik kanıtlama etiketi. Yanlışsa, kimlik kanıtlama başarısız olur ve işlev `false` döndürür.

  Dikkat

  İşlev `etiket` uzunluğuna bakmaz. openssl_encrypt() çağrıldığında alınan etiket uzunluğu ile eşleşmesini sağlamak işlevi çağıranın sorumluluğundadır. Aksi takdirde, belirtilen etiket sadece uygun etiketin başlangıcıyla eşleşirse şifre çözme başarılı olabilir.

`kiml_kntlı_ek_veri`

  Kimlik kanıtlamasından geçmiş ek veri.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa şifresi çözülmüş veriyi bir dizge olarak döndürür.

### Hatalar/İstisnalar

`yöntem` bağımsız değişkeni ile bilinmeyen bir şifreleme algoritması belirtilmişse `E_WARNING` seviyesinde bir hata oluşur.

`iy` bağımsız değişkeni üzerinden boş bir dizge aktarılırsa `E_WARNING` seviyesinde bir hata oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `etiket` artık `null` olabiliyor.
7.1.0 | `etiket` ve `ek_kiml_knt_verisi` bağımsız değişkenleri eklendi.

### Ayrıca Bakınız

- openssl_encrypt() - Veriyi şifreler

# openssl_dh_compute_key

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_dh_compute_key — Uzak DH genel anahtarının ve yerel DH anahtarının genel değeri için paylaşılan gizi hesaplar

### Açıklama

function openssl_dh_compute_key(string `$genel_anh`, #[\SensitiveParameter]OpenSSLAsymmetricKey `$gizli_anh`): string|false

openssl_dh_compute_key() tarafından döndürülen paylaşımlı giz, genellikle uzaktaki bir tarafla gizlice iletişim kurmak için bir şifreleme anahtarı olarak kullanılır. Bu, Diffie-Hellman anahtar değişimi olarak bilinir.

> Bilginize: ECDH sadece PHP 8.1.0 ve OpenSSL 3.0.0 itibariyle desteklenmektedir.

### Bağımsız Değişkenler

`genel_anh`

  Uzak tarafın DH Genel anahtarı.

`gizli_anh`

  Yerel DH Gizli anahtarı, uzak tarafla paylaşılacak Genel anahtara karşılık gelir.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa paylaşımlı giz döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `gizli_anh` artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce `OpenSSL key` türünde bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 - Paylaşımlı gizi hesaplamak

Önce yerel olarak bir genel/gizli DH anahtar çifti oluşturulur ve uzak tarafın da aynısını yapmasını sağlanır. Bunun için `openssl` komut satırı uygulamasını kullanmak gerekiyor.

    # genel/gizli DH anahtar çifti üret
    openssl dhparam -out dhparam.pem 2048
    openssl genpkey -paramfile dhparam.pem -out privatekey.pem

    # sadece genel anahtarı çıktıla
    openssl pkey -in privatekey.pem -pubout -out publickey.pem

Sonra, genel anahtarın karşı tarafa gönderilmesi gerekir. Uzak tarafın gönderdiği genel anahtarı görmek için `openssl pkey` komutu kullanılır.

    openssl pkey -pubin -in remotepublickey.pem -text -noout

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    PKCS#3 DH Public-Key: (2048 bit)
        public-key:
            67:e5:e5:fa:e0:7b:0f:96:2c:dc:96:44:5f:50:02:
            9e:8d:c2:6c:04:68:b0:d1:1d:75:66:fc:63:f5:e3:
            42:30:b8:96:c1:45:cc:08:60:b4:21:3b:dd:ee:66:
            88:db:77:d9:1e:11:89:d4:5c:f2:7a:f2:f1:fe:1c:
            77:9d:6f:13:b8:b2:56:00:ef:cb:3b:60:79:74:02:
            98:f5:f9:8e:3e:b5:62:08:de:ca:8c:c3:40:4a:80:
            79:d5:43:06:17:a8:19:56:af:cc:95:5e:e2:32:2d:
            d2:14:7b:76:5a:9a:f1:3c:76:76:35:cc:7b:c1:a5:
            f4:39:e5:b6:ca:71:3f:7c:3f:97:e5:ab:86:c1:cd:
            0e:e6:ee:04:c9:e6:2d:80:7e:59:c0:49:eb:b6:64:
            4f:a8:f9:bb:a3:87:b3:3d:76:01:9e:2b:16:94:a4:
            37:30:fb:35:e2:63:be:23:90:b9:ef:3f:46:46:04:
            94:8f:60:79:7a:51:55:d6:1a:1d:f5:d9:7f:4a:3e:
            aa:ac:b0:d0:82:cc:c2:e0:94:e0:54:c1:17:83:0b:
            74:08:4d:5a:79:ae:ff:7f:1c:04:ab:23:39:4a:ae:
            87:83:55:43:ab:7a:7c:04:9d:20:80:bb:af:5f:16:
            a3:e3:20:b9:21:47:8c:f8:7f:a8:60:80:9e:61:77:
            36
     [...kısaltıldı...]

Paylaşımlı gizi hesaplamak için genel anahtar openssl_dh_compute_key() işlevinde bağımsız değişken olarak kullanılır.

    <?php
    $remote_public_key = '67e5e5fae07b0f962cdc96445f50029e8dc26c0468b0d11d7566fc63f5e34230b896c145cc0860b4213bddee6688db77d91e1189d45cf27af2f1fe1c779d6f13b8b25600efcb3b6079740298f5f98e3eb56208deca8cc3404a8079d5430617a81956afcc955ee2322dd2147b765a9af13c767635cc7bc1a5f439e5b6ca713f7c3f97e5ab86c1cd0ee6ee04c9e62d807e59c049ebb6644fa8f9bba387b33d76019e2b1694a43730fb35e263be2390b9ef3f464604948f60797a5155d61a1df5d97f4a3eaaacb0d082ccc2e094e054c117830b74084d5a79aeff7f1c04ab23394aae87835543ab7a7c049d2080bbaf5f16a3e320b921478cf87fa860809e617736';

    $local_priv_key = openssl_pkey_get_private('file://privatekey.pem');

    $paylaşımlı_giz = openssl_dh_compute_key(hex2bin($remote_public_key), $local_priv_key);
    echo bin2hex($paylaşımlı_giz)."\n";
    ?>

Örnek 2 - DH genel/gizli anahtar çiftinin PHP ile üretilmesi

Önce DH başat sayısını üret

    openssl dhparam -out dhparam.pem 2048
    openssl dh -in dhparam.pem -noout  -text

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    PKCS#3 DH Parameters: (2048 bit)
            prime:
                00:a3:25:1e:73:3f:44:b9:2b:ee:f4:9d:9f:37:6a:
                4b:fd:1d:bd:f4:af:da:c8:10:77:59:41:c6:5f:73:
                d2:88:29:39:cd:1c:5f:c3:9f:0f:22:d2:9c:20:c1:
                e4:c0:18:03:b8:b6:d8:da:ad:3b:39:a6:da:8e:fe:
                12:30:e9:03:5d:22:ba:ef:18:d2:7b:69:f9:5b:cb:
                78:c6:0c:8c:6b:f2:49:92:c2:49:e0:45:77:72:b3:
                55:36:30:f2:40:17:89:18:50:03:fa:2d:54:7a:7f:
                34:4c:73:32:b6:88:14:51:14:be:80:57:95:e6:a3:
                f6:51:ff:17:47:4f:15:d6:0e:6c:47:53:72:2c:2a:
                4c:21:cb:7d:f3:49:97:c9:47:5e:40:33:7b:99:52:
                7e:7a:f3:52:27:80:de:1b:26:6b:40:bb:14:11:0b:
                fb:e6:d8:2f:cf:a0:06:2f:96:b9:1c:0b:b4:cb:d3:
                a6:62:9c:48:67:f6:81:f2:c6:ff:45:03:0a:9d:67:
                9d:ce:27:d9:6b:48:5d:ca:fb:c2:5d:84:9b:8b:cb:
                40:c7:a4:0c:8a:6e:f4:ab:ba:b6:10:c3:b8:25:4d:
                cf:60:96:f4:db:e8:00:1c:58:47:7a:fb:51:86:d1:
                22:d7:4e:94:31:7a:d5:da:3d:53:de:da:bb:64:8d:
                62:6b
            generator: 2 (0x2)

Başat ve üreteç değerleri openssl_pkey_new() işlevine p ve g bağımsız değişkenleri olarak aktarılıyor.

    <?php
    $configargs = array();
    $configargs['p'] = hex2bin('00a3251e733f44b92beef49d9f376a4bfd1dbdf4afdac810775941c65f73d2882939cd1c5fc39f0f22d29c20c1e4c01803b8b6d8daad3b39a6da8efe1230e9035d22baef18d27b69f95bcb78c60c8c6bf24992c249e0457772b3553630f2401789185003fa2d547a7f344c7332b688145114be805795e6a3f651ff17474f15d60e6c4753722c2a4c21cb7df34997c9475e40337b99527e7af3522780de1b266b40bb14110bfbe6d82fcfa0062f96b91c0bb4cbd3a6629c4867f681f2c6ff45030a9d679dce27d96b485dcafbc25d849b8bcb40c7a40c8a6ef4abbab610c3b8254dcf6096f4dbe8001c58477afb5186d122d74e94317ad5da3d53dedabb648d626b');
    $configargs['g'] = hex2bin('02');
    $private_key = openssl_pkey_new(array('dh' => $configargs));
    openssl_pkey_export_to_file($private_key,'privatekey.pem',$passphrase='y0urp@s5phr@se');

    $details = openssl_pkey_get_details($private_key);
    $local_pub_key = $details['dh']['pub_key'];
    echo bin2hex($local_pub_key)."\n";//you can send your public key to the remote party

    $details = openssl_pkey_get_details(openssl_pkey_get_public("file://remotepublickey.pem"));
    $remote_public_key = $details['dh']['pub_key'];
    $paylaşımlı_giz = openssl_dh_compute_key($remote_public_key, $private_key);
    echo bin2hex($paylaşımlı_giz)."\n";
    ?>

### Ayrıca Bakınız

- openssl_pkey_new() - Yeni bir gizli anahtar üretir
- openssl_pkey_get_details() - Anahtarla ilgili ayrıntıları bir dizi içinde döndürür
- openssl_pkey_get_private() - Gizli anahtarı döndürür
- openssl_pkey_get_public() - Genel anahtarı sertifikadan elde edip kullanıma hazırlar

# openssl_digest

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_digest — Bir özet hesaplar

### Açıklama

function openssl_digest(string `$veri`, string `$yöntem`, bool `$ikil` = `false`): string|false

Belirtilen verinin belirtilen yöntemle özetini çıkarıp ikil veya onaltılık kodlanmış bir dizge olarak döndürür.

### Bağımsız Değişkenler

`veri`

  Özeti hesaplanacak veri.

`yöntem`

  "sha256" gibi bir özet yöntemi. Özet yöntemlerinin listesi için bkz: openssl_get_md_methods()

`ikil`

  Çıktı ikil dizge olacaksa `true`, onaltılık dizge olacaksa `false` olmalıdır.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa özet dizgesi döner.

### Hatalar/İstisnalar

`yöntem` bağımsız değişkeni ile bilinmeyen bir imza algoritması belirtilmişse `E_WARNING` seviyesinde bir hata oluşur.

### Ayrıca Bakınız

- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür

# openssl_encrypt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_encrypt — Veriyi şifreler

### Açıklama

function openssl_encrypt(
#[\SensitiveParameter]string `$veri`,
string `$yöntem`,
#[\SensitiveParameter]string `$parola`,
int `$seçenekler` = 0,
string `$iy` = "",
string `&$etiket` = `null`,
string `$kiml_kntlı_ek_veri` = "",
int `$etiket_uzunluğu` = 16
): string|false

Belirtilen `veri`'yi belirtilen `yöntem` ve `parola` ile şifreler ve bir base64 kodlu dizge olarak veya ham bir dizge olarak döndürür.

### Bağımsız Değişkenler

`veri`

  Şifrelenecek düz metin ileti verisi.

`yöntem`

  Şifreleme yöntemi. Şifreleme yöntemlerinin listesi için bkz: openssl_get_cipher_methods()

`parola`

  Parola. Beklenenden kısaysa `null` ile dolgu yapılır, uzunsa kırpılır ve bunun için bir uyarı verilmez.

`seçenekler`

  `OPENSSL_RAW_DATA` ve `OPENSSL_ZERO_PADDING` veya `OPENSSL_DONT_ZERO_PAD_KEY` sabitlerinin bitsel birleşimi.

`iy`

  `null` olmayan bir ilklendirme yöneyi.

`etiket`

  AEAD şifreleme kipi (GCM veya CCM) kullanıldığında gönderimli aktarılan kimlik kanıtlama etiketi.

`kiml_kntlı_ek_veri`

  Kimlik kanıtlamasından geçmiş ek veri

`etiket_uzunluğu`

  Kimlik kanıtlama `etiket`inin uzunluğu. GCM kipinde değer 4-16 arasında olabilir.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa şifrelenmiş veri dizgesi döner.

### Hatalar/İstisnalar

`yöntem` bağımsız değişkeni ile bilinmeyen bir şifreleme algoritması belirtilmişse `E_WARNING` seviyesinde bir hata oluşur.

`iy` bağımsız değişkeni üzerinden boş bir dizge aktarılırsa `E_WARNING` seviyesinde bir hata oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `etiket`, `ek_kiml_knt_verisi` ve `etiket_uzunluğu` bağımsız değişkenleri eklendi.

### Örnekler

Örnek 1 - PHP 7.1+ için GCM kipinde AES Kimlik Kanıtlamalı Şifreleme örneği

    <?php
    // $key, daha önce openssl_random_pseudo_bytes gibi kriptografik olarak
    // güvenilir bir yolla oluşturulmuş olmalıdır.
    $plaintext = "şifrelenecek ileti";
    $cipher = "aes-128-gcm";
    if (in_array($cipher, openssl_get_cipher_methods()))
    {
        $ivlen = openssl_cipher_iv_length($cipher);
        $iv = openssl_random_pseudo_bytes($ivlen);
        $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
        // Şifreyi daha sonra çözmek için $cipher, $iv ve $tag saklanacak
        $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
        echo $original_plaintext."\n";
    }
    ?>

Örnek 2 - PHP 7.1 öncesi için GCM kipinde AES Kimlik Kanıtlamalı Şifreleme örneği

    <?php
    //$key evvelce openssl_random_pseudo_bytes gibi güvenli bir yolla üretilmiş olmalı
    $plaintext = "şifrelenecek ileti";
    $ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
    $iv = openssl_random_pseudo_bytes($ivlen);
    $ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
    $hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
    $ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );

    // daha sonra şifreyi çözmek için....
    $c = base64_decode($ciphertext);
    $ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
    $iv = substr($c, 0, $ivlen);
    $hmac = substr($c, $ivlen, $sha2len=32);
    $ciphertext_raw = substr($c, $ivlen+$sha2len);
    $original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
    $calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
    if (hash_equals($hmac, $calcmac))// timing attack safe comparison
    {
        echo $original_plaintext."\n";
    }
    ?>

### Ayrıca Bakınız

- openssl_decrypt() - Verinin şifresini çözer

# openssl_error_string

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_error_string — OpenSSL hata iletisini döndürür

### Açıklama

function openssl_error_string(): string|false

OpenSSL kütüphanesinde son oluşan hatanın iletisini döndürür. Hata iletileri bir yığına atılır, dolayısıyla tüm hata iletilerini toplamak için bu işlevin defalarca çağrılması gerekir. Son hata ilk alınan olur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Döndürülecek hata iletisi kalmamışsa `false`, varsa bir hata dizgesi döndürür.

### Örnekler

Örnek 1 - openssl_error_string() örneği

    <?php
    // Bazı openssl işlevlerinin başarısız olduğunu varsayalım
    while ($msg = openssl_error_string())
        echo $msg . "<br />\n";
    ?>

# openssl_free_key

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_free_key — Anahtar özkaynağını serbest bırakır

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function openssl_free_key(OpenSSLAsymmetricKey `$anahtar`): void

`anahtar` kimlikli anahtar için ayrılan belleği serbest bırakır.

### Bağımsız Değişkenler

`anahtar`

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bir etkisi kalmadığından bu işlevin kullanımı önerilmiyor.
8.0.0 | `anahtar` artık OpenSSLAsymmetricKey nesnesi kabul ediyor; evvelce, `OpenSSL key` türünde bir özkaynak kabul edilirdi.

# openssl_get_cert_locations

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_get_cert_locations — Retrieve the available certificate locations

### Açıklama

function openssl_get_cert_locations(): array

openssl_get_cert_locations() returns an array with information about the available certificate locations that will be searched for SSL certificates.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array with the available certificate locations.

### Örnekler

Örnek 1 openssl_get_cert_locations() example

    <?php
    var_dump(openssl_get_cert_locations());
    ?>

Yukarıdaki örneğin çıktısı:

    array(8) {
      ["default_cert_file"]=>
      string(21) "/usr/lib/ssl/cert.pem"
      ["default_cert_file_env"]=>
      string(13) "SSL_CERT_FILE"
      ["default_cert_dir"]=>
      string(18) "/usr/lib/ssl/certs"
      ["default_cert_dir_env"]=>
      string(12) "SSL_CERT_DIR"
      ["default_private_dir"]=>
      string(20) "/usr/lib/ssl/private"
      ["default_default_cert_area"]=>
      string(12) "/usr/lib/ssl"
      ["ini_cafile"]=>
      string(0) ""
      ["ini_capath"]=>
      string(0) ""
    }

# openssl_get_cipher_methods

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_get_cipher_methods — Kullanılabilecek şifreleme yöntemlerini döndürür

### Açıklama

function openssl_get_cipher_methods(bool `$rumuzlar` = `false`): array

Kullanılabilecek şifreleme yöntemlerini döndürür.

### Bağımsız Değişkenler

`rumuzlar`

  Şifre rumuzları dönen diziye dahil edilecekse `true` olmalıdır.

### Dönen Değerler

OpenSSL 1.1.1 öncesinde şifreleme yöntemlerini içeren dizi büyük ve küçük harfli olabiliyordu. OpenSSL 1.1.1 ve sonrasında sadece küçük harfli dizgeler dönüyor.

### Örnekler

Örnek 1 - openssl_get_cipher_methods() örneği

Kullanılabilecek şifreleme yöntemlerini ve varsa rumuzlarını listeler.

    <?php
    $şifreler             = openssl_get_cipher_methods();
    $şifreler_ve_rumuzlar = openssl_get_cipher_methods(true);
    $rumuzlar             = array_diff($şifreler_ve_rumuzlar, $şifreler);

    //ECB kipinden kaçınılmalı
    $şifreler = array_filter( $ciphers, function($n) { return stripos($n,"ecb")===FALSE; } );

    //Aug 2016'ya kadar, Openssl için zayıf olanlar: RC2, RC4, DES, 3DES, MD5 tabanlı
    $şifreler = array_filter( $şifreler, function($c) { return stripos($c,"des")===FALSE; } );
    $şifreler = array_filter( $şifreler, function($c) { return stripos($c,"rc2")===FALSE; } );
    $şifreler = array_filter( $şifreler, function($c) { return stripos($c,"rc4")===FALSE; } );
    $şifreler = array_filter( $şifreler, function($c) { return stripos($c,"md5")===FALSE; } );
    $rumuzlar = array_filter($rumuzlar,function($c) { return stripos($c,"des")===FALSE; } );
    $rumuzlar = array_filter($rumuzlar,function($c) { return stripos($c,"rc2")===FALSE; } );

    print_r($şifreler);
    print_r($rumuzlar);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => aes-128-cbc
        [1] => aes-128-cbc-hmac-sha1
        [2] => aes-128-cbc-hmac-sha256
        [3] => aes-128-ccm
        [4] => aes-128-cfb
        [5] => aes-128-cfb1
        [6] => aes-128-cfb8
        [7] => aes-128-ctr
        [9] => aes-128-gcm
        [10] => aes-128-ocb
        [11] => aes-128-ofb
        [12] => aes-128-xts
        [13] => aes-192-cbc
        [14] => aes-192-ccm
        [15] => aes-192-cfb
        [16] => aes-192-cfb1
        [17] => aes-192-cfb8
        [18] => aes-192-ctr
        [20] => aes-192-gcm
        [21] => aes-192-ocb
        [22] => aes-192-ofb
        [23] => aes-256-cbc
        [24] => aes-256-cbc-hmac-sha1
        [25] => aes-256-cbc-hmac-sha256
        [26] => aes-256-ccm
        [27] => aes-256-cfb
        [28] => aes-256-cfb1
        [29] => aes-256-cfb8
        [30] => aes-256-ctr
        [32] => aes-256-gcm
        [33] => aes-256-ocb
        [34] => aes-256-ofb
        [35] => aes-256-xts
        [36] => aria-128-cbc
        [37] => aria-128-ccm
        [38] => aria-128-cfb
        [39] => aria-128-cfb1
        [40] => aria-128-cfb8
        [41] => aria-128-ctr
        [43] => aria-128-gcm
        [44] => aria-128-ofb
        [45] => aria-192-cbc
        [46] => aria-192-ccm
        [47] => aria-192-cfb
        [48] => aria-192-cfb1
        [49] => aria-192-cfb8
        [50] => aria-192-ctr
        [52] => aria-192-gcm
        [53] => aria-192-ofb
        [54] => aria-256-cbc
        [55] => aria-256-ccm
        [56] => aria-256-cfb
        [57] => aria-256-cfb1
        [58] => aria-256-cfb8
        [59] => aria-256-ctr
        [61] => aria-256-gcm
        [62] => aria-256-ofb
        [63] => bf-cbc
        [64] => bf-cfb
        [66] => bf-ofb
        [67] => camellia-128-cbc
        [68] => camellia-128-cfb
        [69] => camellia-128-cfb1
        [70] => camellia-128-cfb8
        [71] => camellia-128-ctr
        [73] => camellia-128-ofb
        [74] => camellia-192-cbc
        [75] => camellia-192-cfb
        [76] => camellia-192-cfb1
        [77] => camellia-192-cfb8
        [78] => camellia-192-ctr
        [80] => camellia-192-ofb
        [81] => camellia-256-cbc
        [82] => camellia-256-cfb
        [83] => camellia-256-cfb1
        [84] => camellia-256-cfb8
        [85] => camellia-256-ctr
        [87] => camellia-256-ofb
        [88] => cast5-cbc
        [89] => cast5-cfb
        [91] => cast5-ofb
        [92] => chacha20
        [93] => chacha20-poly1305
        [111] => id-aes128-CCM
        [112] => id-aes128-GCM
        [113] => id-aes128-wrap
        [114] => id-aes128-wrap-pad
        [115] => id-aes192-CCM
        [116] => id-aes192-GCM
        [117] => id-aes192-wrap
        [118] => id-aes192-wrap-pad
        [119] => id-aes256-CCM
        [120] => id-aes256-GCM
        [121] => id-aes256-wrap
        [122] => id-aes256-wrap-pad
        [124] => idea-cbc
        [125] => idea-cfb
        [127] => idea-ofb
        [137] => seed-cbc
        [138] => seed-cfb
        [140] => seed-ofb
        [141] => sm4-cbc
        [142] => sm4-cfb
        [143] => sm4-ctr
        [145] => sm4-ofb
    )
    Array
    (
        [36] => aes128
        [37] => aes128-wrap
        [38] => aes192
        [39] => aes192-wrap
        [40] => aes256
        [41] => aes256-wrap
        [69] => aria128
        [70] => aria192
        [71] => aria256
        [72] => bf
        [77] => blowfish
        [99] => camellia128
        [100] => camellia192
        [101] => camellia256
        [102] => cast
        [103] => cast-cbc
        [146] => idea
        [164] => seed
        [169] => sm4
    )

### Ayrıca Bakınız

- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür

# openssl_get_curve_names

(PHP 7 >= 7.1.0, PHP 8)

openssl_get_curve_names — Gets list of available curve names for ECC

### Açıklama

function openssl_get_curve_names(): array|false

Gets the list of available curve names for use in Elliptic curve cryptography (ECC) for public/private key operations. The two most widely standardized/supported curves are prime256v1 (NIST P-256) and secp384r1 (NIST P-384).

Approximate Equivalancies of AES, RSA, DSA and ECC Keysizes
AES Symmetric Keysize (Bits) | RSA and DSA Keysize (Bits) | ECC Keysize (Bits)
--- | --- | ---
80 | 1024 | 160
112 | 2048 | 224
128 | 3072 | 256
192 | 7680 | 384
256 | 15360 | 512

» NIST recommends using ECC curves with at least 256 bits.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of available curve names, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 openssl_get_curve_names() example

    <?php
    $curve_names = openssl_get_curve_names();
    print_r($curve_names);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => secp112r1
        [1] => secp112r2
        [2] => secp128r1
        [3] => secp128r2
        [4] => secp160k1
        [5] => secp160r1
        [6] => secp160r2
        [7] => secp192k1
        [8] => secp224k1
        [9] => secp224r1
        [10] => secp256k1
        [11] => secp384r1
        [12] => secp521r1
        [13] => prime192v1
        [14] => prime192v2
        [15] => prime192v3
        [16] => prime239v1
        [17] => prime239v2
        [18] => prime239v3
        [19] => prime256v1
        [20] => sect113r1
        [21] => sect113r2
        [22] => sect131r1
        [23] => sect131r2
        [24] => sect163k1
        [25] => sect163r1
        [26] => sect163r2
        [27] => sect193r1
        [28] => sect193r2
        [29] => sect233k1
        [30] => sect233r1
        [31] => sect239k1
        [32] => sect283k1
        [33] => sect283r1
        [34] => sect409k1
        [35] => sect409r1
        [36] => sect571k1
        [37] => sect571r1
        [38] => c2pnb163v1
        [39] => c2pnb163v2
        [40] => c2pnb163v3
        [41] => c2pnb176v1
        [42] => c2tnb191v1
        [43] => c2tnb191v2
        [44] => c2tnb191v3
        [45] => c2pnb208w1
        [46] => c2tnb239v1
        [47] => c2tnb239v2
        [48] => c2tnb239v3
        [49] => c2pnb272w1
        [50] => c2pnb304w1
        [51] => c2tnb359v1
        [52] => c2pnb368w1
        [53] => c2tnb431r1
        [54] => wap-wsg-idm-ecid-wtls1
        [55] => wap-wsg-idm-ecid-wtls3
        [56] => wap-wsg-idm-ecid-wtls4
        [57] => wap-wsg-idm-ecid-wtls5
        [58] => wap-wsg-idm-ecid-wtls6
        [59] => wap-wsg-idm-ecid-wtls7
        [60] => wap-wsg-idm-ecid-wtls8
        [61] => wap-wsg-idm-ecid-wtls9
        [62] => wap-wsg-idm-ecid-wtls10
        [63] => wap-wsg-idm-ecid-wtls11
        [64] => wap-wsg-idm-ecid-wtls12
        [65] => Oakley-EC2N-3
        [66] => Oakley-EC2N-4
        [67] => brainpoolP160r1
        [68] => brainpoolP160t1
        [69] => brainpoolP192r1
        [70] => brainpoolP192t1
        [71] => brainpoolP224r1
        [72] => brainpoolP224t1
        [73] => brainpoolP256r1
        [74] => brainpoolP256t1
        [75] => brainpoolP320r1
        [76] => brainpoolP320t1
        [77] => brainpoolP384r1
        [78] => brainpoolP384t1
        [79] => brainpoolP512r1
        [80] => brainpoolP512t1
    )

# openssl_get_md_methods

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_get_md_methods — Kullanılabilecek özet yöntemlerini döndürür

### Açıklama

function openssl_get_md_methods(bool `$rumuzlar` = `false`): array

Kullanılabilecek özet yöntemlerini döndürür.

### Bağımsız Değişkenler

`rumuzlar`

  Özet rumuzları dönen diziye dahil edilecekse `true` olmalıdır.

### Dönen Değerler

Kullanılabilecek özet yöntemlerini içeren bir dizi.

### Örnekler

Örnek 1 - openssl_get_md_methods() örneği

Kullanılabilecek özet yöntemlerini ve varsa rumuzlarını listeler.

    <?php
    $yontemler             = openssl_get_md_methods();
    $yontemler_ve_rumuzlar = openssl_get_md_methods(true);
    $rumuzlar              = array_diff($yontemler_ve_rumuzlar, $yontemler);

    print_r($yontemler);

    print_r($rumuzlar);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => DSA
        [1] => DSA-SHA
        [2] => MD2
        [3] => MD4
        [4] => MD5
        [5] => RIPEMD160
        [6] => SHA
        [7] => SHA1
        [8] => SHA224
        [9] => SHA256
        [10] => SHA384
        [11] => SHA512
        [12] => dsaEncryption
        [13] => dsaWithSHA
        [14] => ecdsa-with-SHA1
        [15] => md2
        [16] => md4
        [17] => md5
        [18] => ripemd160
        [19] => sha
        [20] => sha1
        [21] => sha224
        [22] => sha256
        [23] => sha384
        [24] => sha512
    )
    Array
    (
        [2] => DSA-SHA1
        [3] => DSA-SHA1-old
        [4] => DSS1
        [9] => RSA-MD2
        [10] => RSA-MD4
        [11] => RSA-MD5
        [12] => RSA-RIPEMD160
        [13] => RSA-SHA
        [14] => RSA-SHA1
        [15] => RSA-SHA1-2
        [16] => RSA-SHA224
        [17] => RSA-SHA256
        [18] => RSA-SHA384
        [19] => RSA-SHA512
        [28] => dsaWithSHA1
        [29] => dss1
        [32] => md2WithRSAEncryption
        [34] => md4WithRSAEncryption
        [36] => md5WithRSAEncryption
        [37] => ripemd
        [39] => ripemd160WithRSA
        [40] => rmd160
        [43] => sha1WithRSAEncryption
        [45] => sha224WithRSAEncryption
        [47] => sha256WithRSAEncryption
        [49] => sha384WithRSAEncryption
        [51] => sha512WithRSAEncryption
        [52] => shaWithRSAEncryption
        [53] => ssl2-md5
        [54] => ssl3-md5
        [55] => ssl3-sha1
    )

### Ayrıca Bakınız

- openssl_digest() - Bir özet hesaplar
- openssl_get_cipher_methods() - Kullanılabilecek şifreleme yöntemlerini döndürür

# openssl_get_privatekey

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_get_privatekey — openssl_pkey_get_private() işlevinin takma adıdır

### Açıklama

Bu işlev, openssl_pkey_get_private() işlevinin takma adıdır.

# openssl_get_publickey

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_get_publickey — openssl_pkey_get_public() işlevinin takma adıdır

### Açıklama

Bu işlev, openssl_pkey_get_public() işlevinin takma adıdır.

# openssl_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_open — Mühürlü veriyi açar

### Açıklama

function openssl_open(
string `$veri`,
#[\SensitiveParameter]string `&$çıktı`,
string `$zarf_anahtarı`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
string `$algoritma`,
?string `$ilklendirme_yöneyi` = `null`
): bool

`gizli_anahtar` ile ilgili gizli anahtar ve `zarf_anahtarı` kullanılarak `veri`'nin mühürü ve şifresi çözüldükten sonra `çıktı` bağımsız değişkenine konur. `zarf_anahtarı` veri mühürlenirken üretilir ve sadece belli bir gizli anahtarla birlikte kullanılabilir. Daha fazla bilgi için openssl_seal() işlevine bakınız.

### Bağımsız Değişkenler

`veri`

`çıktı`

  İşlem başarılı olursa çözümlenen veri bu bağımsız değişkene konur.

`zarf_anahtarı`

`gizli_anahtar`

`algoritma`

  Şifreleme yöntemi.

  Dikkat

  Öntanımlı değerin (`'RC4'`) güvensiz olduğu varsayılır. Burada güvenli bir şifreleme yöntemi belirtmelisiniz.

`ilklendirme_yöneyi`

  İlklendirme yöneyi

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.
8.0.0 | `algoritma` artık seçimlik değil.

### Örnekler

Örnek 1 - openssl_open() örneği

    <?php
    // $mühürlü ve $mühür değişkenlerinin zarfı mühürleyen tarafından
    // gönderilen mühürlü veriyi ve zarf anahtarını içerdiği varsayılıyor

    // Gizli anahtarı dosyadan okuyalım ve hazırlayalım
    $dt = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
    $gizanh = fread($dt, 8192);
    fclose($dt);
    $gizankim = openssl_get_privatekey($gizanh);

    // Şifreyi çözüp veriyi $veri'ye saklayalım
    if (openssl_open($mühürlü, $veri, $mühür, $gizankim)) {
        echo "Zarftaki veri: ", $veri;
    } else {
        echo "Zarfın mühürü açılamadı";
    }

    // Gizli anahtara ayrılan belleği serbest bırakalım
    openssl_free_key($gizankim);
    ?>

### Ayrıca Bakınız

- openssl_seal() - Veriyi mühürler (şifreler)

# openssl_password_hash

(PHP 8 >= 8.4.0)

openssl_password_hash — Create a password hash using OpenSSL's Argon2 implementation

### Açıklama

function openssl_password_hash(string `$algo`, string `$password`, array `$options` = []): string

Creates a password hash using OpenSSL's Argon2 implementation. This is an alternative to password_hash() that uses OpenSSL as the backend, which may offer hardware acceleration on some platforms.

This function is only available when PHP is compiled with OpenSSL support that includes Argon2 (`HAVE_OPENSSL_ARGON2`).

### Bağımsız Değişkenler

`algo`

  The password hashing algorithm. Supported values: `"argon2id"` and `"argon2i"`.

`password`

  The user's password.

`options`

  An associative array of options. Supported keys:

  - `memory_cost` - Maximum memory (in KiB) that may be used to compute the hash
  - `time_cost` - Maximum amount of time it may take to compute the hash
  - `threads` - Number of threads to use for computing the hash

### Dönen Değerler

Returns the password hash as a string.

### Hatalar/İstisnalar

Throws a ValueError if `algo` is not one of the supported values (`"argon2i"` or `"argon2id"`).

Throws an Error if the hashing operation fails for an unknown reason.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Function added.

### Örnekler

Örnek 1 openssl_password_hash() example

    <?php
    $hash = openssl_password_hash('argon2id', 'my-secret-password');
    echo $hash;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHR2YWx1ZQ$hashvalue...

Örnek 2 openssl_password_hash() with custom options

    <?php
    $hash = openssl_password_hash('argon2id', 'my-secret-password', [
        'memory_cost' => 65536,
        'time_cost'   => 4,
        'threads'     => 1,
    ]);
    ?>

### Ayrıca Bakınız

- openssl_password_verify() - Verify a password against a hash using OpenSSL's Argon2 implementation
- password_hash() - Parola aşı oluşturur

# openssl_password_verify

(PHP 8 >= 8.4.0)

openssl_password_verify — Verify a password against a hash using OpenSSL's Argon2 implementation

### Açıklama

function openssl_password_verify(string `$algo`, string `$password`, string `$hash`): bool

Verifies that a password matches a hash created by openssl_password_hash().

This function is only available when PHP is compiled with OpenSSL support that includes Argon2 (`HAVE_OPENSSL_ARGON2`).

### Bağımsız Değişkenler

`algo`

  The password hashing algorithm. Supported values: `"argon2id"` and `"argon2i"`.

`password`

  The user's password.

`hash`

  A hash created by openssl_password_hash().

### Dönen Değerler

Returns `true` if the password and hash match, or `false` otherwise.

### Hatalar/İstisnalar

Throws a ValueError if `algo` is not one of the supported values (`"argon2i"` or `"argon2id"`).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Function added.

### Örnekler

Örnek 1 openssl_password_verify() example

    <?php
    $hash = openssl_password_hash('argon2id', 'my-secret-password');

    if (openssl_password_verify('argon2id', 'my-secret-password', $hash)) {
        echo 'Password matches.';
    } else {
        echo 'Password does not match.';
    }
    ?>

### Ayrıca Bakınız

- openssl_password_hash() - Create a password hash using OpenSSL's Argon2 implementation
- password_verify() - Parola ile aş eşleşmesini doğrular

# openssl_pbkdf2

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string

### Açıklama

function openssl_pbkdf2(
#[\SensitiveParameter]string `$password`,
string `$salt`,
int `$key_length`,
int `$iterations`,
string `$digest_algo` = "sha1"
): string|false

openssl_pbkdf2() computes PBKDF2 (Password-Based Key Derivation Function 2), a key derivation function defined in PKCS5 v2.

### Bağımsız Değişkenler

`password`

  Password from which the derived key is generated.

`salt`
  PBKDF2 recommends a cryptographic salt of at least 128 bits (16 bytes).
`key_length`

  Length of desired output key.

`iterations`

  The number of iterations desired. » NIST recommends at least 1,000. As of 2023, OWASP recommends 600,000 iterations for PBKDF2-HMAC-SHA256 and 210,000 for PBKDF2-HMAC-SHA512.

`digest_algo`

  Optional hash or digest algorithm from openssl_get_md_methods(). Defaults to SHA-1. It is recommended to set it to SHA-256 or SHA-512.

### Dönen Değerler

Returns raw binary string başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 openssl_pbkdf2() example

    <?php
    $password = 'password';
    $salt = openssl_random_pseudo_bytes(16);
    $keyLength = 20;
    $iterations = 600000;
    $generated_key = openssl_pbkdf2($password, $salt, $keyLength, $iterations, 'sha256');
    echo bin2hex($generated_key)."\n";
    echo base64_encode($generated_key)."\n";
    ?>

### Ayrıca Bakınız

- hash_pbkdf2() - Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür
- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür

# openssl_pkcs12_export

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

openssl_pkcs12_export — PKCS#12 uyumlu sertifika deposu dosyasını bir değişkene yerleştirir

### Açıklama

function openssl_pkcs12_export(
OpenSSLCertificate|string `$sertifika`,
string `&$çıktı`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
#[\SensitiveParameter]string `$parola`,
array `$seçenekler` = []
): bool

Belitilen `sertifika`ları, PKCS#12 dosya biçemiyle belirtilen `çıktı` dizgesine yerleştirir.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`çıktı`

  İşlem başarılı olursa PKCS#12 bu bağımsız değişkene konur.

`gizli_anahtar`

  PKCS#12 dosyasınının gizli anahtar bileşeni. Geçerli değerler için bkz: Gizli/Genel Anahtar bağımsız değişkenleri

`parola`

  PKCS#12 dosyasının şifreleme/çözme parolası.

`seçenekler`

  Seçimlikler dizisi, diğer anahtarlar yok sayılır.

  Anahtar | Açıklama
  --- | ---
  `"extracerts"` | PKCS#12 dosyasında içerilecek tek bir sertifika ya da ek sertifikalar dizisi.
  `"friendly_name"` | Sağlanan sertifika ve anahtar için kullanılacak dizge

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifita` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce,`OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkcs12_export_to_file

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

openssl_pkcs12_export_to_file — Bir PKCS#12 uyumlu sertifika deposunu bir dosyaya kaydeder

### Açıklama

function openssl_pkcs12_export_to_file(
OpenSSLCertificate|string `$sertifika`,
string `$çıktı_dosyası`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
#[\SensitiveParameter]string `$parola`,
array `$seçenekler` = []
): bool

Belitilen `sertifika`yı, PKCS#12 dosya biçeminde belirtilen `çıktı_dosyası`na kaydeder.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`çıktı_dosyası`

  Çıktı dosyasının yolu.

`gizli_anahtar`

  PKCS#12 dosyasının gizli anahtar bileşeni. Geçerli değerler için bkz: Gizli/Genel Anahtar bağımsız değişkenleri

`parola`

  PKCS#12 dosyasının şifreleme/çözme parolası.

`seçenekler`

  Seçimlikler dizisi, diğer anahtarlar yok sayılır.

  Anahtar | Açıklama
  --- | ---
  `"extracerts"` | PKCS#12 dosyasında içerilecek tek bir sertifika ya da ek sertifikalar dizisi.
  `"friendly_name"` | Sağlanan sertifika ve anahtar için kullanılacak dizge

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifita` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkcs12_read

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

openssl_pkcs12_read — Bir PKCS#12 Sertifika Deposunu bir diziye çözümler

### Açıklama

function openssl_pkcs12_read(string `$pkcs12`, array `&$sertifikalar`, #[\SensitiveParameter]string `$parola`): bool

`pkcs12` ile belirtilen PKCS#12 sertifika deposunu çözümler ve sertifikaları `sertifikalar` dizisine yerleştirir.

### Bağımsız Değişkenler

`pkcs12`

  PKCS#12 sertifika deposunun içeriği, dosyası değil.

`sertifikalar`

  İşlem başarılı olursa sertifikalar bu diziye konur.

`parola`

  PKCS#12 dosyasının şifresini açmak için parola.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - openssl_pkcs12_read() örneği

    <?php
    if (!$cert_store = file_get_contents("/certs/file.p12")) {
        echo "Hata: Sertifika dosyası okunamadı\n";
        exit;
    }

    if (openssl_pkcs12_read($cert_store, $cert_info, "parola_burada")) {
        echo "Sertifika Bilgisi\n";
        print_r($cert_info);
    } else {
        echo "Hata: Sertifika deposu okunamadı\n";
        exit;
    }
    ?>

# openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_decrypt — S/MIME şifreli bir iletinin şifresini çözer

### Açıklama

function openssl_pkcs7_decrypt(
string `$girdi_dosyası`,
string `$çıktı_dosyası`,
#[\SensitiveParameter]OpenSSLCertificate|string `$sertifika`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string|null `$gizli_anahtar` = `null`
): bool

Şifreli iletiyi `girdi_dosyası`'ndan okur, `sertifika` ile belirtilen sertifikaları ve `gizli_anahtar` ile belirtilen gizli anahtarı kullanarak iletinin şifresini çözer ve sonucu `çıktı_dosyası`'na kaydeder.

### Bağımsız Değişkenler

`girdi_dosyası`

`çıktı_dosyası`

  Şifresi çözülen iletinin kaydedileceği dosyanın yolu.

`sertifika`

`gizli_anahtar`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.

### Örnekler

Örnek 1 - openssl_pkcs7_decrypt() örneği

    <?php
    // $sert ve $anahtar kişisel sertifikanızı ve gizli anahtarınızı içersin.
    $şifreli = "encrypted.msg";   // Şifreli iletinin bulunduğu dosya
    $şifresiz = "decrypted.msg";  // Şifresiz iletinin yazılacağı dosya

    if (openssl_pkcs7_decrypt($şifreli, $şifresiz, $sert, $anahtar)) {
        echo "Şifre çözüldü!";
    } else {
        echo "Şifre çözülemedi!";
    }
    ?>

# openssl_pkcs7_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_encrypt — Bir S/MIME iletiyi şifreler

### Açıklama

function openssl_pkcs7_encrypt(
string `$girdi_dosyası`,
string `$çıktı_dosyası`,
OpenSSLCertificate|array|string `$sertifika`,
?array `$başlıklar`,
int `$seçenekler` = 0,
int `$algoritma` = `OPENSSL_CIPHER_AES_128_CBC`
): bool

`girdi_dosyası`nın içeriğini alır ve yalnızca `sertifika` ile belirtilen alıcılar tarafından okunabilmeleri için bir RC2 40 bit `algoritma` kullanarak bunları şifreler ve şifreli iletiyi `çıktı_dosyası`'na kaydeder.

### Bağımsız Değişkenler

`girdi_dosyası`

`çıktı_dosyası`

`sertifika`

  Ya tek bir X.509 sertifikasını içeren bir dizge ya da X.509 sertifikalarını içeren bir dizi olmalıdır.

`başlıklar`

  İleti şifrelendikten sonra hazırlanan başlıkları içerecek dizi.

  Dizi elemanların her biri ya tek bir başlık satırı içermeli ya da başlık ismini anahtar olarak alan bir ilişkisel dizi olmalıdır.

`seçenekler`

  Kodlama işlemini etkileyen seçenekler; PKCS7 sabitlerine bakınız.

`algoritma`

  Şifreleme sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Öntanımlı şifreleme algoritması (`algoritma`) artık AES-128-CBC (`OPENSSL_CIPHER_AES_128_CBC`) olabiliyor. Evvelce, PKCS7/CMS kullanılırdı (`OPENSSL_CIPHER_RC2_40`).
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.

### Örnekler

Örnek 1 - openssl_pkcs7_encrypt() örneği

    <?php
    // Bir iletiyi şifreleyip Atmaca kod adlı araştırma
    // elemanınıza göndermek istediğinizi varsayalım.
    // Sertifikası atmaca.pem dosyasında olsun.
    $data = <<<EOD
    Atmaca,

    Çok gizli, kişiye özel!

    8:30'da gizli yerimizde buluşalım.

    Başkan
    EOD;

    // anahtarı yükleyelim
    $key = file_get_contents("atmaca.pem");

    // iletiyi dosyaya kaydedelim
    $fp = fopen("msg.txt", "w");
    fwrite($fp, $data);
    fclose($fp);

    // encrypt it
    if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
        array("To" => "atmaca@example.com",  // anahtarlı sözdizimi
              "From: CEO <ceo@example.com>", // indisli sözdizimi
              "Subject" => "Kişiye özel"))) {
        // iletiyi şifreleyip gönderelim!
        exec(ini_get("sendmail_path") . " < enc.txt");
    }
    ?>

# openssl_pkcs7_read

(PHP 7 >= 7.2.0, PHP 8)

openssl_pkcs7_read — Export the PKCS7 file to an array of PEM certificates

### Açıklama

function openssl_pkcs7_read(string `$data`, array `&$certificates`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`data`

  The string of data you wish to parse (p7b format).

`certificates`

  The array of PEM certificates from the p7b input data.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Get a PEM array from a P7B file

    <?php

    $file = 'certs.p7b';

    $f = file_get_contents($file);
    $p7 = array();
    $r = openssl_pkcs7_read($f, $p7);

    if ($r === false) {
        printf("ERROR: %s is not a proper p7b file".PHP_EOL, $file);
            for($e = openssl_error_string(), $i = 0; $e; $e = openssl_error_string(), $i++)
                printf("SSL l%d: %s".PHP_EOL, $i, $e);
        exit(1);
    }

    print_r($p7);
    ?>

### Ayrıca Bakınız

- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_sign — Bir S/MIME iletiyi imzalar

### Açıklama

function openssl_pkcs7_sign(
string `$girdi_dosyası`,
string `$çıktı_dosyası`,
OpenSSLCertificate|string `$sertifika`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
?array `$başlıklar`,
int `$seçenekler` = `PKCS7_DETACHED`,
?string `$güvenilmez_sertifikalar_dosyası` = `null`
): bool

İleti `girdi_dosyası`'ndan okunur, `sertifika` ve bununla ilgili `gizli_anahtar` kullanılarak imzalanır, elde edilen imzalı ileti `çıktı_dosyası`'na kaydedilir.

### Bağımsız Değişkenler

`girdi_dosyası`

  İmzalanacak girdiyi içeren dosya.

`çıktı_dosyası`

  İmzalanan girdinin kaydedileceği dosya.

`sertifika`

  `girdi_dosyası`nı imzalamakta kullanılacak X.509 sertifikası. Geçerli değerler için bkz: Anahtar/Sertifika bağımsız değişkenleri

`gizli_anahtar`

  `sertifika` ile ilişkili gizli anahtar. Geçerli değerler için bkz: Gizli/Genel Anahtar bağımsız değişkenleri

`başlıklar`

  İleti imzalandıktan sonra hazırlanan başlıkları içeren bir dizidir. Bu bağımsız değişken ile ilgili ayrıntılı bilgi için openssl_pkcs7_encrypt() işlevine bakınız.

`seçenekler`

  Çıktıda değişiklik yapmak için kullanılır. Bkz: PKCS7 sabitleri.

`güvenilmez_sertifikalar_dosyası`

  Alıcının imzayı doğrulamasına yardımcı olması için imzaya eklenecek sertifikaları içeren dosyanın yolu.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509 CSR` özkaynağı kabul edilirdi.
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509 CSR` özkaynağı kabul edilirdi. was accepted.

### Örnekler

Örnek 1 - openssl_pkcs7_sign() örneği

    <?php
    // Alıcının, iletinin sizden geldiğinden emin olması için
    // iletiyi imzalamak istediğinizi varsayalım.
    $data = <<<EOD

    Ağırlama giderleri için sana 10.000 TL harcama yetkisi veriyorum.

    Başkan
    EOD;

    // İletiyi dosyaya kaydedelim
    $fp = fopen("msg.txt", "w");
    fwrite($fp, $data);
    fclose($fp);

    // şifreleyelim
    if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
        array("file://mycert.pem", "mypassphrase"),
        array("To" => "joes@example.com",   // ilişkisel
              "From: HQ <ceo@example.com>", // indisli
              "Subject" => "Kişiye özel")
        )) {
        // ileti imzalandığına göre gönderebiliriz!
        exec(ini_get("sendmail_path") . " < signed.txt");
    }
    ?>

# openssl_pkcs7_verify

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_verify — S/MIME imzalı bir iletinin imzasını doğrular

### Açıklama

function openssl_pkcs7_verify(
string `$girdi_dosyası`,
int `$seçenekler`,
?string `$imzacı_sertifikaları_dosyası` = `null`,
array `$CA_bilgisi` = [],
?string `$güvenilmez_sertifikalar_dosyası` = `null`,
?string `$içerik` = `null`,
?string `$çıktı_dosyası` = `null`
): bool|int

S/MIME imzalı iletiyi içeren `girdi_dosyası` okunur ve iletinin imzası doğrulanmaya çalışılır.

### Bağımsız Değişkenler

`girdi_dosyası`

  İletinin bulunduğu dosyanın yolu.

`seçenekler`

  İmzanın nasıl doğrulanacağı belirtilir. Ayrıntılı bilgi için PKCS7 sabitlerine bakınız.

`imzacı_sertifikaları_dosyası`

  Belirtildiği takdirde, iletileri imzalamakta kullanılan sertifikaların PEM biçemli olarak saklandığı dosyanın yolu olmalıdır.

`CA_bilgisi`

  Belirtildiği takdirde, doğrulama işleminde kullanılacak güvenilir CA sertifikaları hakkında bilgileri içeren bir dizi olmalıdır. Ayrıntılı bilgi için Sertifika Doğrulama bölümüne bakınız.

`güvenilmez_sertifikalar_dosyası`

  Belirtildiği takdirde, güvenilmez CA'lar olarak kullanılacak sertifikaların bulunduğu dosyanın yolu olmalıdır.

`içerik`

`çıktı_dosyası`

  Belirtildiği takdirde, imzası doğrulanmış iletinin içeriği imzasız olarak bu dosyaya kaydedilir.

### Dönen Değerler

İmza doğru ise `true`, değilse (ileti kurcalanmışsa veya sertifika geçersizse) `false`, işlem sırasında bir hata oluşmuşsa -1 döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `imzacı_sertifikaları_dosyası`, `güvenilmez_sertifikalar_dosyası`, `içerik` ve `çıktı_dosyası` artık `null` olabiliyor.
7.2.0 | `çıktı_dosyası` bağımsız değişkeni eklendi.

### Notlar

> Bilginize: RFC 2045'te belirtildiği gibi, `girdi_dosyası` satırları 76 karakterden uzun olamaz.

# openssl_pkey_derive

(PHP 7 >= 7.3.0, PHP 8)

openssl_pkey_derive — Computes shared secret for public value of remote and local DH or ECDH key

### Açıklama

function openssl_pkey_derive(OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$public_key`, #[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$private_key`, int `$key_length` = 0): string|false

openssl_pkey_derive() takes a set of a `public_key` and `private_key` and derives a shared secret, for either DH or EC keys.

### Bağımsız Değişkenler

`public_key`

  `public_key` is the public key for the derivation. See Public/Private Key parameters for a list of valid values.

`private_key`

  `private_key` is the private key for the derivation. See Public/Private Key parameters for a list of valid values.

`key_length`

  If not zero, will attempt to set the desired length of the derived secret.

  Dikkat

  This parameter is deprecated and should not be used, as it does not work as expected. It never returns a secret longer than the size of the prime. If the desired length is smaller than the size of the prime, it truncates the length only for ECDH keys but fails for DH keys.

### Dönen Değerler

The derived secret on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | The parameter `key_length` is now deprecated.

### Örnekler

Örnek 1 openssl_pkey_derive() example

    <?php
    // Load in private key
    $priv = openssl_pkey_get_private("-----BEGIN PRIVATE KEY-----
    MIICJgIBADCCARcGCSqGSIb3DQEDATCCAQgCggEBAJLxRCaZ933uW+AXmabHFDDy
    upojBIRlbmQLJZfigDaSA1f9YOTsIv+WwVFTX/J1mtCyx9uBcz0Nt2kmVwxWuc2f
    VtCEMPsmLsVXX7xRUFLpyX1Y1IYGBVXQOoOvLWYQjpZgnx47Pkh1Ok1+smffztfC
    0DCNt4KorWrbsPcmqBejXHN79KvWFjZmXOksRiNu/Bn76RiqvofC4z8Ri3kHXQG2
    197JGZzzFXHadGC3xbkg8UxsNbYhVMKbm0iANfafUH7/hoS9UjAVQYtvwe7YNiW/
    HnyfVCrKwcc7sadd8Iphh+3lf5P1AhaQEAMytanrzq9RDXKBxuvpSJifRYasZYsC
    AQIEggEEAoIBAGwAYC2E81Y1U2Aox0U7u1+vBcbht/OO87tutMvc4NTLf6NLPHsW
    cPqBixs+3rSn4fADzAIvdLBmogjtiIZoB6qyHrllF/2xwTVGEeYaZIupQH3bMK2b
    6eUvnpuu4Ytksiz6VpXBBRMrIsj3frM+zUtnq8vKUr+TbjV2qyKR8l3eNDwzqz30
    dlbKh9kIhZafclHfRVfyp+fVSKPfgrRAcLUgAbsVjOjPeJ90xQ4DTMZ6vjiv6tHM
    hkSjJIcGhRtSBzVF/cT38GyCeTmiIA/dRz2d70lWrqDQCdp9ArijgnpjNKAAulSY
    CirnMsGZTDGmLOHg4xOZ5FEAzZI2sFNLlcw=
    -----END PRIVATE KEY-----
    ");

    // Load in public key
    $pub = openssl_pkey_get_public("-----BEGIN PUBLIC KEY-----
    MIICJDCCARcGCSqGSIb3DQEDATCCAQgCggEBAJLxRCaZ933uW+AXmabHFDDyupoj
    BIRlbmQLJZfigDaSA1f9YOTsIv+WwVFTX/J1mtCyx9uBcz0Nt2kmVwxWuc2fVtCE
    MPsmLsVXX7xRUFLpyX1Y1IYGBVXQOoOvLWYQjpZgnx47Pkh1Ok1+smffztfC0DCN
    t4KorWrbsPcmqBejXHN79KvWFjZmXOksRiNu/Bn76RiqvofC4z8Ri3kHXQG2197J
    GZzzFXHadGC3xbkg8UxsNbYhVMKbm0iANfafUH7/hoS9UjAVQYtvwe7YNiW/Hnyf
    VCrKwcc7sadd8Iphh+3lf5P1AhaQEAMytanrzq9RDXKBxuvpSJifRYasZYsCAQID
    ggEFAAKCAQAiCSBpxvGgsTorxAWtcAlSmzAJnJxFgSPef0g7OjhESytnc8G2QYmx
    ovMt5KVergcitztWh08hZQUdAYm4rI+zMlAFDdN8LWwBT/mGKSzRkWeprd8E7mvy
    ucqC1YXCMqmIwPySvLQUB/Dl8kgau7BLAnIJm8VP+MVrn8g9gghD0qRCgPgtEaDV
    vocfgnOU43rhKnIgO0cHOKtw2qybSFB8QuZrYugq4j8Bwkrzh6rdMMeyMl/ej5Aj
    c0wamOzuBDtXt0T9+Fx3khHaowjCc7xJZRgZCxg43SbqMWJ9lUg94I7+LTX61Gyv
    dtlkbGbtoDOnxeNnN93gwQZngGYZYciu
    -----END PUBLIC KEY-----
    ");

    // Outputs the hex version of the derived key
    echo bin2hex(openssl_pkey_derive($pub,$priv));

# openssl_pkey_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_export — Bir anahtarın ihraç edilebilir gösterimini bir dizge olarak döndürür

### Açıklama

function openssl_pkey_export(
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$anahtar`,
string `&$çıktı`,
#[\SensitiveParameter]?string `$parola` = `null`,
?array `$seçenekler` = `null`
): bool

Belirtilen `anahtar` bir PEM kodlu dizge olarak ihraç edilmek üzere (gönderimli belirtilen) `çıktı` bağımsız değişkenine yerleştirilir.

> Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

### Bağımsız Değişkenler

`anahtar`

`çıktı`

`parola`

  Belirtilen anahtar bir parola ile korunuyorsa bu parola burada belirtilir.

`seçenekler`

  İhraç işlemine ince ayar çekmek için ve/veya openssl yapılandırma dosyasındaki seçenekleri geçersiz kılmak için kullanılabilir. Ayrıntılar için openssl_csr_new()işlevine bakınız.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkey_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_export_to_file — Bir anahtarın ihraç edilebilir gösterimini bir dosyaya kaydeder

### Açıklama

function openssl_pkey_export_to_file(
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$anahtar`,
string `$çıktı_dosyası`,
#[\SensitiveParameter]?string `$parola` = `null`,
?array `$seçenekler` = `null`
): bool

Anahtarın ASCII zırhlı (PEM kodlu) eşdeğerini belirtilen `çıktı_dosyası`na kaydeder.

> Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

### Bağımsız Değişkenler

`anahtar`

`çıktı_dosyası`

  ASCII zırhlı anahtarın kaydedileceği dosyanın yolu.

`parola`

  Belirtilen anahtar bir parola ile korunuyorsa parola burada belirtilir.

`seçenekler`

  İhraç işlemine ince ayar çekmek için ve/veya openssl yapılandırma dosyasındaki seçenekleri geçersiz kılmak için kullanılabilir. Ayrıntılar için openssl_csr_new()işlevine bakınız.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkey_free

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_free — Bir gizli anahtarı serbest bırakır

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function openssl_pkey_free(OpenSSLAsymmetricKey `$anahtar`): void

> Bilginize:

> Bu işlevin bir etkisi yoktur. PHP 8.0.0 öncesinde, bu işev özkaynağı kapatmak için kullanılırdı.

openssl_pkey_new() ile oluşturulmuş bir gizli anahtarı serbest bırakır.

### Bağımsız Değişkenler

`anahtar`

  Anahtarı betimleyin özkaynak.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bir etkisi olmadığı için bu işlevin kullanımı önerilmemektedir.
8.0.0 | `anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkey_get_details

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

openssl_pkey_get_details — Anahtarla ilgili ayrıntıları bir dizi içinde döndürür

### Açıklama

function openssl_pkey_get_details(OpenSSLAsymmetricKey `$anahtar`): array|false

Anahtarla ilgili ayrıntıları (bit sayısı, anahtar, türü gibi) bir dizi içinde döndürür.

### Bağımsız Değişkenler

`anahtar`

  Anahtarı betimleyen özkaynak.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa anahtarın ayrıntılarını içeren bir dizi döner. Dönen dizi şu indisleri içerir: `bits` (bit sayısı), `key` (genel anahtarın metinsel gösterimi) ve `type` (şunlardan biridir: `OPENSSL_KEYTYPE_RSA`, `OPENSSL_KEYTYPE_DSA`, `OPENSSL_KEYTYPE_DH`, `OPENSSL_KEYTYPE_EC` veya bilinmiyor anlamında -1).

Kullanılan anahtar türüne bağlı olarak, ek ayrıntılar dönebilir. Bazı elemanların her zaman kullanılamayacağına dikkat edin.

- `OPENSSL_KEYTYPE_RSA`, ek olarak anahtar verisini içeren `"rsa"` adlı bir dizi anahtarı döner.

  Anahtar | Açıklama
  --- | ---
  `"n"` | modül
  `"e"` | genel üs
  `"d"` | gizli üs
  `"p"` | asal 1
  `"q"` | asal 2
  `"dmp1"` | üs1, d mod (p-1)
  `"dmq1"` | üs2, d mod (q-1)
  `"iqmp"` | katsayı, (q'nun tersi) mod p

- `OPENSSL_KEYTYPE_DSA`, ek olarak anahtar verisini içeren `"dsa"` adlı bir dizi anahtarı döner.

  Anahtar | Açıklama
  --- | ---
  `"p"` | asal sayı (genel)
  `"q"` | 160-bit alt asal, q | p-1 (genel)
  `"g"` | alt grup üreteci (genel)
  `"priv_key"` | gizli anahtar x
  `"pub_key"` | genel anahtar y = g^x

- `OPENSSL_KEYTYPE_DH`, ek olarak anahtar verisini içeren `"dh"` adlı bir dizi anahtarı döner.

  Anahtar | Açıklama
  --- | ---
  `"p"` | asal sayı (paylaşımlı)
  `"g"` | Z_p üreteci (paylaşımlı)
  `"priv_key"` | gizli DH değeri x
  `"pub_key"` | genel DH değeri g^x

- `OPENSSL_KEYTYPE_EC`, ek olarak anahtar verisini içeren `"ec"` adlı bir dizi anahtarı döner.

  Anahtar | Açıklama
  --- | ---
  `"curve_name"` | eğri adı, bkz: openssl_get_curve_names()
  `"curve_oid"` | EC eğrisi için ASN1 Nesne Kimliği (OID).
  `"x"` | x koordinatı (genel)
  `"y"` | y koordinatı (genel)
  `"d"` | gizli anahtar

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `anahtar` artık OpenSSLAsymmetricKey örneği kabul ediyor; evvelce, `OpenSSL key` özkaynağı kabul edilirdi.

# openssl_pkey_get_private

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_get_private — Gizli anahtarı döndürür

### Açıklama

function openssl_pkey_get_private(#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`, #[\SensitiveParameter]?string `$parola` = `null`): OpenSSLAsymmetricKey|false

Belirtilen `gizli_anahtar` çözümlenip diğer işlevlerin kullanımına hazırlanır.

### Bağımsız Değişkenler

`gizli_anahtar`

  Şunlardan biri olabilir:

  1. file://bir/yol/dosya.pem biçeminde bir dizge. İsmi belirtilen dosya PEM kodlu bir sertifika, bir gizli anahtar veya her ikisini birden içerebilir.
  2. PEM kodlu bir gizli anahtar.
`parola`

  Belirtilen anahtar bir parola ile korunuyorsa bu parola burada belirtilir.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa gizli anahtar için OpenSSLAsymmetricKey örneği, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık OpenSSLAsymmetricKey örneği döndürüyor; evvelce `OpenSSL key` özkaynağı dönerdi.
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.
8.0.0 | `parola` artık `null` olabiliyor.

# openssl_pkey_get_public

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_get_public — Genel anahtarı sertifikadan elde edip kullanıma hazırlar

### Açıklama

function openssl_pkey_get_public(OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$genel_anahtar`): OpenSSLAsymmetricKey|false

Genel anahtarı belirtilen `genel_anahtar`'dan elde edip diğer işlevlerin kullanımına hazırlar.

### Bağımsız Değişkenler

`genel_anahtar`

  Şunlardan biri olabilir:

  1. OpenSSLAsymmetricKey örneği
  2. file://bir/yol/dosya.pem biçeminde bir dizge. İsmi belirtilen dosya PEM kodlu sertifika, genel anahtar veya her ikisini birden içerebilir.
  3. PEM kodlu genel anahtar.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa OpenSSLAsymmetricKey örneği döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık OpenSSLAsymmetricKey örneği döndürüyor; evvelce `OpenSSL key` özkaynağı dönerdi.
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_pkey_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_new — Yeni bir gizli anahtar üretir

### Açıklama

function openssl_pkey_new(?array `$seçenekler` = ?): OpenSSLAsymmetricKey|false

Yeni bir gizli anahtar üretir. Genel anahtarın elde edilişi aşağıdaki örnekte gösterilmiştir.

> Bilginize: Bu işlevin gerektiği gibi çalışması için geçerli bir openssl.cnf kurulu olmalıdır. Daha ayrıntılı bilgi için kurulum bölümüne bakılabilir.

### Bağımsız Değişkenler

`seçenekler`

  Anahtar üretimine ince ayar çekmek için (bit sayısını belirtmek gibi) kullanılabilir. Daha ayrıntılı bilgi için openssl_csr_new() işlevine bakınız.

### Dönen Değerler

İşlem başarısız olursa `false` yoksa OpenSSLAsymmetricKey örneği döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık OpenSSLAsymmetricKey örneği döndürüyor; evvelce `OpenSSL key` özkaynağı dönerdi.
7.1.0 | EC anahtarlarının üretilebilmesi için `curve_name` seçeneği eklendi.

### Örnekler

Örnek 1 - Genel anahtarın gizli anahtardan elde edilmesi

    <?php
    $private_key = openssl_pkey_new();
    $public_key_pem = openssl_pkey_get_details($private_key)['key'];
    echo $public_key_pem;
    $public_key = openssl_pkey_get_public($public_key_pem);
    var_dump($public_key);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArZFsmN2P6rx1Xt7YV95o
    gcdlal0k3ryiIhFNzjwtRNNTXfEfBr6lUuaIJYQ8/XqEBX0hpcfuuF6tTRlonA3t
    WLME0QFD93YVsAaXcy76YqjjqcRRodIBphAbYyyMI/lXkQAdn7kbAmr7neSOsMYJ
    El9Wo4Hl4oG6e52ZnYHyqW9dxh4hX93eupR2TmcCdVf+r9xoHewP0KJYSHt7vDUX
    AQlWYcQiWHIadFsmL0orr6mutlXFReoHbesgKY9/3YLOu0JfxflSjIZ2JeL1NTl1
    MsmODsUwgAUrwnWKKx+eQUP5g3GnSB3dPkRh9zRVRiLNWbCugyjrf3e6DgQWrW7j
    pwIDAQAB
    -----END PUBLIC KEY-----
    resource(5) of type (OpenSSL key)

# openssl_private_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_private_decrypt — Genel anahtarla şifrelenmiş verinin şifresini gizli anahtarla çözer

### Açıklama

function openssl_private_decrypt(
string `$şifreli_veri`,
#[\SensitiveParameter]string `&$şifresiz_veri`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
int `$dolgu` = `OPENSSL_PKCS1_PADDING`
): bool

Evvelce openssl_public_encrypt() tarafından şifrelenmiş `şifreli_veri`'nin şifresini çözüp sonucu `şifresiz_veri` bağımsız değişkenine yerleştirir.

Şifreli verinin sadece size yazılıp yazılmadığını bu işlevle öğrenebilirsiniz.

### Bağımsız Değişkenler

`şifreli_veri`

`şifresiz_veri`

`gizli_anahtar`

  Veriyi şifrelemekte kullanılan genel anahtarın karşılığı olan gizli anahtar.

`dolgu`

  Şunlardan biri belirtilebilir: `OPENSSL_PKCS1_PADDING`, `OPENSSL_SSLV23_PADDING`, `OPENSSL_PKCS1_OAEP_PADDING`, `OPENSSL_NO_PADDING`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Ayrıca Bakınız

- openssl_public_encrypt() - Veriyi genel anahtarla şifreler
- openssl_public_decrypt() - Gizli anahtarla şifrelenmiş verinin şifresini genel anahtarla çözer

# openssl_private_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_private_encrypt — Veriyi gizli anahtarla şifreler

### Açıklama

function openssl_private_encrypt(
#[\SensitiveParameter]string `$şifresiz_veri`,
string `&$şifreli_veri`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|gizli_anahtar `$private_key`,
int `$dolgu` = `OPENSSL_PKCS1_PADDING`
): bool

`şifresiz_veri`, `gizli_anahtar` ile şifrelenir ve sonuç `şifreli_veri` bağımsız değişkenine konur. Şifrelenmiş verinin şifresi openssl_public_decrypt() işlevi ile çözülebilir.

Bu işlev bir iletiyi imzalamakta, dolayısıyla başkası tarafından yazılmadığını kanıtlamakta kullanılabilir.

### Bağımsız Değişkenler

`şifresiz_veri`

  Şifrelenecek veri.

`şifreli_veri`

  Şifrelenen veri bu değişkene konur.

`gizli_anahtar`

  Gizli anahtar.

`dolgu`

  Bunlardan biri belirtilebilir: `OPENSSL_PKCS1_PADDING`, `OPENSSL_NO_PADDING`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Ayrıca Bakınız

- openssl_public_encrypt() - Veriyi genel anahtarla şifreler
- openssl_public_decrypt() - Gizli anahtarla şifrelenmiş verinin şifresini genel anahtarla çözer

# openssl_public_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_public_decrypt — Gizli anahtarla şifrelenmiş verinin şifresini genel anahtarla çözer

### Açıklama

function openssl_public_decrypt(
string `$şifreli_veri`,
#[\SensitiveParameter]string `&$şifresiz_veri`,
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$genel_anahtar`,
int `$dolgu` = `OPENSSL_PKCS1_PADDING`
): bool

Evvelce openssl_private_encrypt() tarafından şifrelenmiş `şifreli_veri`'nin şifresini çözüp sonucu `veri` bağımsız değişkenine yerleştirir.

Bu işlevi, şifrelenmiş iletinin gizli anahtarın sahibi tarafından yazılıp yazılmadığı öğrenmek için kullanabilirsiniz.

### Bağımsız Değişkenler

`şifreli_veri`

`şifresiz_veri`

`genel_anahtar`

  Veriyi şifrelemekte kullanılan gizli anahtarın karşılığı olan genel anahtar.

`dolgu`

  Şunlardan biri ollabilir: `OPENSSL_PKCS1_PADDING`, `OPENSSL_NO_PADDING`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Ayrıca Bakınız

- openssl_private_encrypt() - Veriyi gizli anahtarla şifreler
- openssl_private_decrypt() - Genel anahtarla şifrelenmiş verinin şifresini gizli anahtarla çözer

# openssl_public_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_public_encrypt — Veriyi genel anahtarla şifreler

### Açıklama

function openssl_public_encrypt(
#[\SensitiveParameter]string `$şifresiz_veri`,
string `&$şifreli_veri`,
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$genel_anahtar`,
int `$dolgu` = `OPENSSL_PKCS1_PADDING`
): bool

`şifresiz_veri`, `genel_anahtar` ile şifrelenir ve sonuç `şifreli_veri` bağımsız değişkenine konur. Şifrelenmiş verinin şifresi openssl_private_decrypt() işlevi ile çözülebilir.

Bu işlev, sadece gizli anahtarın sahibi tarafından okunabilecek şifreli iletiler oluşturmak için kullanılabileceği gibi verileri bir veritabanında şifreli saklamak için de kullanılabilir.

### Bağımsız Değişkenler

`şifresiz_veri`

  Şifrelenecek veri.

`şifreli_veri`

  Şifrelenen veri bu değişkene konur.

`genel_anahtar`

  Genel anahtar.

`dolgu`

  Şunlardan biri belirtilebilir: `OPENSSL_PKCS1_PADDING`, `OPENSSL_SSLV23_PADDING`, `OPENSSL_PKCS1_OAEP_PADDING`, `OPENSSL_NO_PADDING`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Ayrıca Bakınız

- openssl_private_encrypt() - Veriyi gizli anahtarla şifreler
- openssl_private_decrypt() - Genel anahtarla şifrelenmiş verinin şifresini gizli anahtarla çözer

# openssl_random_pseudo_bytes

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_random_pseudo_bytes — Yarı-rasgele bayt dizesi üretir

### Açıklama

function openssl_random_pseudo_bytes(int `$uzunluk`, bool `&$güçlü_sonuç` = `null`): string

`uzunluk` karakterlik bir dizge döndürür.

Ayrıca, yarı-rastgele baytları üretmek için kriptografik olarak güçlü bir algoritma kullanılmışsa `güçlü_sonuç` bağımsız değişkeninde bu bilgi de döner. `false` değeri nadirdir, ancak bazı sistemler bozulmuş veya eski olabilir.

### Bağımsız Değişkenler

`uzunluk`

  İstenen dizgenin uzunluğu. `2147483647`'den (dahil) küçük, pozitif bir tamsayı olmalıdır. PHP, bu bağımsız değişkenden bir pozitif tamsayı elde etmek için gerekli tür dönüşümünü yapacaktır.

`güçlü_sonuç`

  Güçlü bir algoritma kullanılmışsa bu bağımsız değişkende `true` döner. Bir hata oluşursa bu değer `null` olacaktır (örneğin, GPG parolası kullanımı güvenlidir).

### Dönen Değerler

İşlem başarılı olursa üretilen dizge döner.

### Hatalar/İstisnalar

openssl_random_pseudo_bytes() başarısızlık durumunda bir Exception örneği oluşturur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `güçlü_sonuç` artık `null` olabiliyor.
7.4.0 | İşlev artık başarısızlık durumunda `false` döndürmüyor, bunun yerine bir Exception örneği oluşturuyor.

### Örnekler

Örnek 1 - openssl_random_pseudo_bytes() örneği

    <?php
    for ($i = 1; $i <= 4; $i++) {
        $bytes = openssl_random_pseudo_bytes($i, $cstrong);
        $hex   = bin2hex($bytes);
        echo "Uzunluklar: Bayt: $i ve Onaltılık: " . strlen($hex) . PHP_EOL;
        var_dump($hex);
        var_dump($cstrong);
        echo PHP_EOL;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Uzunluklar: Bayt: 1 ve Onaltılık: 2
    string(2) "42"
    bool(true)
    Uzunluklar: Bayt: 2 ve Onaltılık: 4
    string(4) "dc6e"
    bool(true)
    Uzunluklar: Bayt: 3 ve Onaltılık: 6
    string(6) "288591"
    bool(true)
    Uzunluklar: Bayt: 4 ve Onaltılık: 8
    string(8) "ab86d144"
    bool(true)

### Ayrıca Bakınız

- random_bytes() - Get cryptographically secure random bytes
- bin2hex() - Bir ikil verinin onaltılık gösterimini elde eder
- crypt() - Tek yönlü dizge aşlama
- random_int() - Get a cryptographically secure, uniformly selected integer

# openssl_seal

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_seal — Veriyi mühürler (şifreler)

### Açıklama

function openssl_seal(
#[\SensitiveParameter]string `$veri`,
string `&$mühürlü_veri`,
array `&$zarf_anahtarları`,
array `$genel_anahtar`,
string `$algoritma`,
string `&$ilklendirme_yöneyi` = `null`
): int|false

Rasgele üretilmiş bir gizli anahtarla verilen `algoritma`'yı kullanarak `veri`yi mühürler (şifreler) ve `mühürlü_veri` bağımsız değişkeninde döndürür. Gizli anahtar, `genel_anahtar` içindeki tanımlayıcılarla ilişkili genel anahtarlarla şifrelenir ve `zarf_anahtarları` dizisinde döndürülür. Bu, bir kişinin birden fazla alıcıya mühürlü veri gönderebileceği anlamına gelir (genel anahtarlarının elinde olması şartıyla). Her alıcının, hem mühürlü veriyi hem de alıcının genel anahtarıyla şifrelenmiş zarf anahtarını alması gerekir.

### Bağımsız Değişkenler

`veri`

  Mühürlenecek veri.

`mühürlü_veri`

  Mühürlenen veri bu bağımsız değişkene konur.

`zarf_anahtarları`

  Genel anahtarlarla şirelenmiş gizli anahtarların döndürüldüğü dizi.

`genel_anahtar`

  Genel anahtarları içeren OpenSSLAsymmetricKey örnekleri dizisi.

`algoritma`

  Şifreleme yöntemi.

  Dikkat

  Öntanımlı değerin (`'RC4'`) günenilmez olduğu varsayılır. Güvenilir bir şifreleme yöntemi belirtilmesi şiddetle önerilir. method.

`ilklendirme_yöneyi`

  İlklendirme yöneyi.

### Dönen Değerler

İşlem başarılı olursa mühürlü veri `mühürlü_veri` bağımsız değişkenine, zarf mühürleri `zarf_anahtarları` bağımsız değişkenine konup mühürlü verinin uzunluğu döndürülür. Hata oluşursa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.
8.0.0 | `algoritma` artık seçimlik değil.
8.0.0 | `ilklendirme_yöneyi` artık `null` olabiliyor.

### Örnekler

Örnek 1 - openssl_seal() örneği

    <?php
    // $veri'nin mühürlenecek veriyi içerdiği varsayılıyor.

    // alıcıların genel anahtarlarını alıp hazırlayalım
    $dt = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
    $sert = fread($dt, 8192);
    fclose($dt);
    $ga1 = openssl_get_publickey($sert);

    // İşlemi ikinci alıcı için yineleyelim.
    $dt = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
    $sert = fread($dt, 8192);
    fclose($dt);
    $ga2 = openssl_get_publickey($sert);

    // Veriyi mühürleyelim. $muhurlu_veri sadece $ga1 ve $ga2'nin sahipleri
    // tarafından sırasıyla $muhurler[0] ve $muhurler[1] anahtarları ile
    // çözülebilir.
    openssl_seal($data, $muhurlu_veri, $muhurler, array($ga1, $ga2));

    // anahtar belleklerini serbest bırakalım
    openssl_free_key($ga1);
    openssl_free_key($ga2);
    ?>

### Ayrıca Bakınız

- openssl_open() - Mühürlü veriyi açar

# openssl_sign

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_sign — İmza üretir

### Açıklama

function openssl_sign(
string `$veri`,
string `&$imza`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`,
string|int `$algoritma` = `OPENSSL_ALGO_SHA1`
): bool

`gizli_anahtar`ı kullanarak kriptografik bir imza üreterek belirtilen `veri` için bir imza hesaplar. Veri şifrelenmez.

### Bağımsız Değişkenler

`veri`

  İmzalanacak veri.

`imza`

  İşlem başarılı olursa imza bu bağımsız değişkene konur.

`gizli_anahtar`

  İmza bu anahtar kullanılarak oluşturulur. Ya bir OpenSSLAsymmetricKey örneğidir; openssl_get_privatekey() ile üretilir.

  Ya da PEM biçemli bir anahtar dizgesidir.

`algoritma`

  int türünde, İmzalama algoritmalarından biri.

  string türünde, openssl_get_md_methods() işlevinden döndürülmüş geçerli bir dizge (örn: "sha256WithRSAEncryption" veya "sha384".

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Örnekler

Örnek 1 - openssl_sign() örneği

    <?php
    // $veri'nin imzalanacak veriyi içerdiği varsayılıyor

    // Gizli anahtarı dosyadan alıp hazırla
    $pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");

    // İmzayı hesapla
    openssl_sign($veri, $imza, $genankim);

    // Anahtar belleğini serbest bırak
    openssl_free_key($genankim);
    ?>

Örnek 2 - openssl_sign() örneği

    <?php
    // imzalanacak veri
    $data = 'my data';

    // genel ve gizli anahtarları üret
    $new_key_pair = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    openssl_pkey_export($new_key_pair, $private_key_pem);

    $details = openssl_pkey_get_details($new_key_pair);
    $public_key_pem = $details['key'];

    // imzayı üret
    openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);

    // kullanmak üzere kaydet
    file_put_contents('private_key.pem', $private_key_pem);
    file_put_contents('public_key.pem', $public_key_pem);
    file_put_contents('signature.dat', $signature);

    // imzayı doğrula
    $r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");
    // göster
    var_dump($r);
    ?>

### Ayrıca Bakınız

- openssl_verify() - İmzayı doğrular

# openssl_spki_export

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge

### Açıklama

function openssl_spki_export(string `$spki`): string|false

Exports PEM formatted public key from encoded signed public key and challenge

### Bağımsız Değişkenler

`spki`

  Expects a valid signed public key and challenge

### Dönen Değerler

Returns the associated PEM formatted public key or `false` on failure.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error if an invalid argument is passed via the `spki` parameter.

### Örnekler

Örnek 1 openssl_spki_export() example

Extracts the associated PEM formatted public key or `null` on failure.

    <?php
    $pkey = openssl_pkey_new('secret password');
    $spkac = openssl_spki_new($pkey, 'challenge string');
    $pubKey = openssl_spki_export(preg_replace('/SPKAC=/', '', $spkac));

    if ($pubKey) {
        echo $pubKey;
    }
    ?>

Örnek 2 openssl_spki_export() example from <keygen>

Extracts the associated PEM formatted public key issued from the <keygen> element

    <?php
    $spkac = openssl_spki_export(preg_replace('/SPKAC=/', '', $_POST['spkac']));
    if ($spkac != NULL) {
        echo $spkac;
    } else {
        echo "Extraction of pub key failed";
    }
    ?>
    <keygen name="spkac" challenge="challenge string" keytype="RSA">

### Ayrıca Bakınız

- openssl_spki_new() - Generate a new signed public key and challenge
- openssl_spki_verify() - Verifies a signed public key and challenge
- openssl_spki_export_challenge() - Exports the challenge associated with a signed public key and challenge
- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_spki_export_challenge

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_spki_export_challenge — Exports the challenge associated with a signed public key and challenge

### Açıklama

function openssl_spki_export_challenge(string `$spki`): string|false

Exports challenge from encoded signed public key and challenge

### Bağımsız Değişkenler

`spki`

  Expects a valid signed public key and challenge

### Dönen Değerler

Returns the associated challenge string or `false` on failure.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error if an invalid argument is passed via the `spki` parameter.

### Örnekler

Örnek 1 openssl_spki_export_challenge() example

Extracts the associated challenge string or NULL on failure.

    <?php
    $pkey = openssl_pkey_new('secret password');
    $spkac = openssl_spki_new($pkey, 'challenge string');
    $challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spkac));
    ?>

Örnek 2 openssl_spki_export_challenge() example from <keygen>

Extracts the associated challenge string issued from the <keygen> element

    <?php
    $challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $_POST['spkac']));
    ?>
    <keygen name="spkac" challenge="challenge string" keytype="RSA">

### Ayrıca Bakınız

- openssl_spki_new() - Generate a new signed public key and challenge
- openssl_spki_verify() - Verifies a signed public key and challenge
- openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_spki_new

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_spki_new — Generate a new signed public key and challenge

### Açıklama

function openssl_spki_new(#[\SensitiveParameter]OpenSSLAsymmetricKey `$private_key`, string `$challenge`, int `$digest_algo` = `OPENSSL_ALGO_MD5`): string|false

Generates a signed public key and challenge using specified hashing algorithm

### Bağımsız Değişkenler

`private_key`

  `private_key` should be set to a private key that was previously generated by openssl_pkey_new() (or otherwise obtained from the other openssl_pkey family of functions). The corresponding public portion of the key will be used to sign the CSR.

`challenge`

  The challenge associated to associate with the SPKAC

`digest_algo`

  The digest algorithm. See openssl_get_md_method().

### Dönen Değerler

Returns a signed public key and challenge string or `false` on failure.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error if an unknown signature algorithm is passed via the `digest_algo` parameter.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `private_key` accepts an OpenSSLAsymmetricKey instance now; previously, a resource of type `OpenSSL key` was accepted.

### Örnekler

Örnek 1 openssl_spki_new() example

Generate a new SPKAC with the default digest (MD5)

    <?php
    $pkey = openssl_pkey_new('secret password');
    $spkac = openssl_spki_new($pkey, 'testing');

    if ($spkac !== NULL) {
        echo $spkac;
    } else {
        echo "SPKAC generation failed";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    MIICRzCCAS8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM3V3sS4o4
    mB9dczziRnjGAmSp+JwPrHoYMAFGvDNmZGyiWfU586X4BKs++BAj7e/FsAfno0Hd
    hN9FwpCNFSox30L03nQvLYJE7f/WqigwBeMRT7Op/xvFks4sT70xP2HRYv4KqP9a
    WRcKU6cFH8VxhFhqM2txEIxZKdFLaL28yT7bEDmcglf4JLDdgNMb9rET1dkgtKE6
    dOaJHPGjf1uvnOH4YwkQr7n4sLUR3Kdbh0ZJAFuQVDZulo+LLzxBBkqJJcB6FhF+
    oXCdHTKZnqAhpWDz+NXYytAmevab6IYm5TWPWsJUv1YKJA5lg2mXbbloIZlN9Mgc
    i9fi03bdw+crAgMBAAEWB3Rlc3RpbmcwDQYJKoZIhvcNAQEEBQADggEBALyUvP/o
    pPSoWBlorFyZ2RnGwKf9qMpE0q2IJP7G3oDR4LyK/m933DUiZ+YnqThrH/CWb4Ek
    y5I3OCyl3S4wCuU1ibZZwDVwYShr5ELp0J9PEf7qMQZOhNsizoC7k+Czb2xB6hYW
    sKfsfTKm3cXBtH3fdgc/Z1Z7VSWnAzYo38snqm72NTf5yFRnrQdphNNXi+kn1zHA
    lxXRyFDXHOcYsOnwAWfyXFA4QDHQ0ezz0UoCY8gJXovcZb4GRYqOLUAsF2HcNboy
    29WN8VqE29sL9QxVZFlwMcqyoLcNnyw38GvNvAGqSvzzbnEFP2MAQXJVe0H0hdp/
    MML5G2iNVgNozAo=

### Ayrıca Bakınız

- openssl_spki_verify() - Verifies a signed public key and challenge
- openssl_spki_export_challenge() - Exports the challenge associated with a signed public key and challenge
- openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_spki_verify

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_spki_verify — Verifies a signed public key and challenge

### Açıklama

function openssl_spki_verify(string `$spki`): bool

Validates the supplied signed public key and challenge

### Bağımsız Değişkenler

`spki`

  Expects a valid signed public key and challenge

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Emits an `E_WARNING` level error if an invalid argument is passed via the `spki` parameter.

### Örnekler

Örnek 1 openssl_spki_verify() example

Validates an existing signed public key and challenge

    <?php
    $pkey = openssl_pkey_new('secret password');
    $spkac = openssl_spki_new($pkey, 'challenge string');

    if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac))) {
        echo $spkac;
    } else {
        echo "SPKAC validation failed";
    }
    ?>

Örnek 2 openssl_spki_verify() example from <keygen>

Validates an existing signed public key and challenge issued from the <keygen> element

    <?php
    if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $_POST['spkac']))) {
        echo $spkac;
    } else {
        echo "SPKAC validation failed";
    }
    ?>
    <keygen name="spkac" challenge="challenge string" keytype="RSA">

### Ayrıca Bakınız

- openssl_spki_new() - Generate a new signed public key and challenge
- openssl_spki_export_challenge() - Exports the challenge associated with a signed public key and challenge
- openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
- openssl_get_md_methods() - Kullanılabilecek özet yöntemlerini döndürür
- openssl_csr_new() - Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign() - Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir

# openssl_verify

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_verify — İmzayı doğrular

### Açıklama

function openssl_verify(
string `$veri`,
string `$imza`,
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$genel_anahtar`,
string|int `$algoritma` = `OPENSSL_ALGO_SHA1`
): int|false

`genel_anahtar` kimlikli genel anahtarı kullanarak belirtilen `veri` için belirtilen `imza` ile imza doğrulaması yapar.

### Bağımsız Değişkenler

`veri`

  İmzayı üretmek için kullanılmış veri.

`imza`

  Doğrulama için kullanılacak imza.

`genel_anahtar`

  OpenSSLAsymmetricKey - openssl_get_publickey() ile döndürülmüş bir anahtar

  string - PEM biçemli anahtar, örnek:, `-----BEGIN PUBLIC KEY----- MIIBCgK...`.

`algoritma`

  int türünde, İmzalama algoritmalarından biri.

  string türünde, openssl_get_md_methods() işlevinden döndürülmüş geçerli bir dizge (örn: "sha256WithRSAEncryption" veya "sha384".

### Dönen Değerler

İmza doğruysa 1, yanlışsa 0, hata oluşmuşsa -1 veya `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

### Örnekler

Örnek 1 - openssl_verify() örneği

    <?php
    // $veri ve $imza'nın veriyi ve imzayı içerdiği varsayılıyor

    // Genel anahtarı sertifikadan alıp hazırla
    $pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");

    // imza doğru mu?
    $ok = openssl_verify($veri, $imza, $genankim);
    if ($ok == 1) {
        echo "iyi";
    } elseif ($ok == 0) {
        echo "kötü";
    } else {
        echo "çirkin, bir hata oluştu";
    }
    // Anahtar belleğini serbest bırak
    openssl_free_key($genankim);
    ?>

Örnek 2 - openssl_verify() örneği

    <?php
    // imzalanacak veri
    $data = 'my data';

    // yeni genel ve gizli anahtar üret
    $private_key_res = openssl_pkey_new(array(
        "private_key_bits" => 2048,
        "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    $details = openssl_pkey_get_details($private_key_res);
    $public_key_res = openssl_pkey_get_public($details['key']);

    // imza üret
    openssl_sign($data, $signature, $private_key_res, "sha256WithRSAEncryption");

    // imzayı doğrula
    $ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA256);
    if ($ok == 1) {
        echo "geçerli";
    } elseif ($ok == 0) {
        echo "geçersiz";
    } else {
        echo "hata: ".openssl_error_string();
    }
    ?>

### Ayrıca Bakınız

- openssl_sign() - İmza üretir

# openssl_x509_check_private_key

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_check_private_key — Bir gizli anahtarın bir sertifikaya karşılık olup olmadığına bakar

### Açıklama

function openssl_x509_check_private_key(OpenSSLCertificate|string `$sertifika`, #[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$gizli_anahtar`): bool

Belirtilen `gizli_anahtar`ın belirtilen `sertifika`ya karşılık olup olmadığına bakar.

Uyarı

İşlev `gizli_anahtar`ın bir gizli anahtar olup olmadığına bakmaz. Sadece genel öğeleri (RSA anahtarının üssü ve modülü gibi) ve/veya anahtar çiftinin anahtar bağımsız değişkenlerini (EC anahtarının EC bağımsız değişkenleri gibi) karşılaştırır.

Yani, örneğin, `gizli_anahtar` için bir genel anahtar verilebilir ve işlev `true` döndürebilirdi.

### Bağımsız Değişkenler

`sertifika`

  Sertifika nesnesi.

`gizli_anahtar`

  Gizli anahtar.

### Dönen Değerler

Gizli `anahtar`, `sertifika`'nın karşılığı ise `true` yoksa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509` özkaynağı kabul edilirdi.
8.0.0 | `gizli_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_checkpurpose

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_checkpurpose — Sertifikanın belli bir amaçla kulanılıp kullanılmayacağına bakar

### Açıklama

function openssl_x509_checkpurpose(
OpenSSLCertificate|string `$sertifika`,
int `$amaç`,
array `$CA_bilgisi` = [],
?string `$güvenilmez_sertifikalar_dosyası` = `null`
): bool|int

Belirtilen sertifikanın belirtilen amaç için kullanılıp kullanılmayacağına bakar.

### Bağımsız Değişkenler

`sertifika`

  İncelenen sertifika.

`amaç`

  openssl_x509_checkpurpose() amaçlar
  Sabit | Açıklama
  --- | ---
  X509_PURPOSE_SSL_CLIENT | Sertifika, bir SSL bağlantısının istemci tarafı için kullanılabilir mi?
  X509_PURPOSE_SSL_SERVER | Sertifika, bir SSL bağlantısının sunucu tarafı için kullanılabilir mi?
  X509_PURPOSE_NS_SSL_SERVER | Sertifika, Netscape SSL sunucusu için kullanılabilir mi?
  X509_PURPOSE_SMIME_SIGN | Sertifika, S/MIME epostaları imzalamak için kullanılabilir mi?
  X509_PURPOSE_SMIME_ENCRYPT | Sertifika, S/MIME epostaları şifrelemek için kullanılabilir mi?
  X509_PURPOSE_CRL_SIGN | Sertifika, bir sertifika yürürlükten kaldırma listesi (CRL) için kullanılabilir mi?
  X509_PURPOSE_ANY | Sertifika, her türlü amaç için kullanılabilir mi?

  Bu seçenekler bit alanları değildir, dolayısıyla sadece biri belirtilebilir!
`CA_bilgisi`

  Sertifika Doğrulama bölümünde açıklandığı gibi güvenilir yetkili sertifika dosya ve dizinlerini içeren bir dizi olmalıdır.

`güvenilmez_sertifikalar_dosyası`

  Belirtildiği takdirde, sertifikayı doğrulamaya yardımcı olacak sertifikaların bulunduğu PEM kodlamalı dosyanın (bu dosyadan gelen sertifikalara güvenilmez ise de) ismi olmalıdır.

### Dönen Değerler

Sertifika belirtilen amaç için kullanılabiliyorsa `true`, kullanılamıyorsa `false`, bir hata oluşmuşsa -1 döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509` özkaynağı kabul edilirdi.
8.0.0 | `güvenilmez_sertifikalar_dosyası` artık `null` olabiliyor.

# openssl_x509_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_export — Belirtilen sertifikayı dizge olarak döndürür

### Açıklama

function openssl_x509_export(OpenSSLCertificate|string `$sertifika`, string `&$çıktı`, bool `$metinsiz` = `true`): bool

`sertifika` ile belirtilen sertifikayı `çıktı` bağımsız değişkeninde PEM kodlamalı bir dizge olarak döndürür.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`çıktı`

  PEM kodlamalı dizgenin konulacağı değişken.

`metinsiz`

  Belirtilmesi isteğe bağlı olan `metinsiz` bağımsız değişkeni çıktının ayrıntı seviyesini belirler. `false` belirtilirse çıktıda insanlar için anlamlı bilgiler bulunmaz. Bağımsız değişkenin öntanımlı değeri: `true`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_x509_export_to_file — Belirtilen sertifikayı bir dosyaya kaydeder

### Açıklama

function openssl_x509_export_to_file(OpenSSLCertificate|string `$sertifika`, string `$dosya`, bool `$metinsiz` = `true`): bool

`sertifika` ile belirtilen sertifikayı yolu `dosya` bağımsız değişkeninde belirtilen dosyaya PEM kodlamalı bir dizge olarak kaydeder.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`dosya`

  Sertifikanın kaydedileceği dosyanın yolu.

`metinsiz`

  Belirtilmesi isteğe bağlı olan `metinsiz` bağımsız değişkeni çıktının ayrıntı seviyesini belirler. `false` belirtilirse çıktıda insanlar için anlamlı bilgiler bulunmaz. Bağımsız değişkenin öntanımlı değeri: `true`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_fingerprint

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate

### Açıklama

function openssl_x509_fingerprint(OpenSSLCertificate|string `$certificate`, string `$digest_algo` = "sha1", bool `$binary` = `false`): string|false

openssl_x509_fingerprint() returns the digest of `certificate` as a string.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`digest_algo`

  The digest method or hash algorithm to use, e.g. "sha256", one of openssl_get_md_methods().

`binary`

  When set to `true`, outputs raw binary data. `false` outputs lowercase hexits.

### Dönen Değerler

Returns a string containing the calculated certificate fingerprint as lowercase hexits unless `binary` is set to `true` in which case the raw binary representation of the message digest is returned.

Returns `false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `certificate` accepts an OpenSSLCertificate instance now; previously, a resource of type `OpenSSL X.509` was accepted.

# openssl_x509_free

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_free — Sertifika özkaynağını serbest bırakır

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function openssl_x509_free(OpenSSLCertificate `$sertifika`): void

> Bilginize:

> Bu işlevin bir etkisi yoktur. PHP 8.0.0 öncesinde, bu işev özkaynağı kapatmak için kullanılırdı.

`sertifika` ile belirtilen bellek özkaynağını serbest bırakır.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Etkisiz olduğundan bu işlevin kullanılması artık önerilmiyor.
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_parse

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_parse — Bir X509 sertifikasını çözümleyip bilgileri bir dizi içinde döndürür

### Açıklama

function openssl_x509_parse(OpenSSLCertificate|string `$sertifika`, bool `$kısa_adlar` = `true`): array|false

`sertifika` ile belirtilen sertifika ile ilgili bilgiler (konu ismi, yayıncı ismi, amaçlar, geçerli olduğu tarihler gibi) döndürür.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`kısa_adlar`

  Dizi içinde verinin nasıl indisleneceği belirtilir. `true` belirtilirse (öntanımlıdır) indis olarak alanların kısa isimleri, aksi takdirde uzun isimleri kullanılır. Örneğin, CN, commonName için bir kısaltmadır.

### Dönen Değerler

Dönen verinin yapısında değişiklik yapılma ihtimali olduğundan, yapı (ihtiyaten) henüz belgelenmemiştir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sertifika` artık OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_read

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_x509_read — X.509 sertifikasını çözümleyip sertifika için nesne döndürür

### Açıklama

function openssl_x509_read(OpenSSLCertificate|string `$sertifika`): OpenSSLCertificate|false

`sertifika` ile belirtilen sertifikayı çözümleyip sertifika ile ilgili bir nesne döndürür.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

### Dönen Değerler

Başarı durumunda OpenSSLCertificate nesnesi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık OpenSSLAsymmetricKey örneği döndürüyor; evvelce `OpenSSL key` özkaynağı dönerdi.
8.0.0 | `genel_anahtar` artık OpenSSLAsymmetricKey veya OpenSSLCertificate örneği kabul ediyor; evvelce, `OpenSSL key` veya `OpenSSL X.509` özkaynağı kabul edilirdi.

# openssl_x509_verify

(PHP 7 >= 7.4.0, PHP 8)

openssl_x509_verify — Verifies digital signature of x509 certificate against a public key

### Açıklama

function openssl_x509_verify(OpenSSLCertificate|string `$certificate`, OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$public_key`): int

openssl_x509_verify() verifies that the `certificate` certificate was signed by the private key corresponding to public key `public_key`.

### Bağımsız Değişkenler

`sertifika`

  Geçerli değerler Anahtar/Sertifika Bağımsız değişkenleri sayfasında bulunabilir.

`public_key`

  OpenSSLAsymmetricKey - a key, returned by openssl_get_publickey()

  string - a PEM formatted key (e.g. `-----BEGIN PUBLIC KEY----- MIIBCgK...`)

### Dönen Değerler

Returns 1 if the signature is correct, 0 if it is incorrect, and -1 on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `certificate` accepts an OpenSSLCertificate instance now; previously, a resource of type `OpenSSL X.509` was accepted.
8.0.0 | `public_key` accepts an OpenSSLAsymmetricKey or OpenSSLCertificate instance now; previously, a resource of type `OpenSSL key` or `OpenSSL X.509` was accepted.

### Örnekler

Örnek 1 openssl_x509_verify() example

    <?php
    $hostname = "news.php.net";
    $ssloptions = array(
        "capture_peer_cert" => true,
        "capture_peer_cert_chain" => true,
        "allow_self_signed"=> false,
        "CN_match" => $hostname,
        "verify_peer" => true,
        "SNI_enabled" => true,
        "SNI_server_name" => $hostname,
    );

    $ctx = stream_context_create( array("ssl" => $ssloptions) );
    $result = stream_socket_client("ssl://$hostname:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx);
    $cont = stream_context_get_params($result);
    $x509 = $cont["options"]["ssl"]["peer_certificate"];
    $certparsed = openssl_x509_parse($x509);

    foreach($cont["options"]["ssl"]["peer_certificate_chain"] as $chaincert)
    {
        $chainparsed = openssl_x509_parse($chaincert);
        $chain_public_key = openssl_get_publickey($chaincert);
        $r = openssl_x509_verify($x509, $chain_public_key);
        if ($r==1)
        {
            echo $certparsed['subject']['CN'];
            echo " was digitally signed by ";
            echo $chainparsed['subject']['CN']."\n";
        }
    }
    ?>

### Ayrıca Bakınız

- openssl_verify() - İmzayı doğrular
- openssl_get_publickey() - openssl_pkey_get_public işlevinin takma adıdır

## İçindekiler

- openssl_cipher_iv_length — Gets the cipher iv length
- openssl_cipher_key_length — Gets the cipher key length
- openssl_cms_decrypt — Decrypt a CMS message
- openssl_cms_encrypt — Encrypt a CMS message
- openssl_cms_read — Export the CMS file to an array of PEM certificates
- openssl_cms_sign — Bir dosyayı imzalar
- openssl_cms_verify — Belirtilen CMS imzasını doğrular
- openssl_csr_export — Belirtilen CSR'yi bir dizge olarak döndürür
- openssl_csr_export_to_file — Belirtilen CSR'yi bir dosyaya kaydeder
- openssl_csr_get_public_key — Bir CSR'nin açık anahtarını döndürür
- openssl_csr_get_subject — Bir CSR'nin öznesini döndürür
- openssl_csr_new — Bir sertifika imzalama isteği (CSR) üretir
- openssl_csr_sign — Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir
- openssl_decrypt — Verinin şifresini çözer
- openssl_dh_compute_key — Uzak DH genel anahtarının ve yerel DH anahtarının genel değeri için paylaşılan gizi hesaplar
- openssl_digest — Bir özet hesaplar
- openssl_encrypt — Veriyi şifreler
- openssl_error_string — OpenSSL hata iletisini döndürür
- openssl_free_key — Anahtar özkaynağını serbest bırakır
- openssl_get_cert_locations — Retrieve the available certificate locations
- openssl_get_cipher_methods — Kullanılabilecek şifreleme yöntemlerini döndürür
- openssl_get_curve_names — Gets list of available curve names for ECC
- openssl_get_md_methods — Kullanılabilecek özet yöntemlerini döndürür
- openssl_get_privatekey — openssl_pkey_get_private işlevinin takma adıdır
- openssl_get_publickey — openssl_pkey_get_public işlevinin takma adıdır
- openssl_open — Mühürlü veriyi açar
- openssl_password_hash — Create a password hash using OpenSSL's Argon2 implementation
- openssl_password_verify — Verify a password against a hash using OpenSSL's Argon2 implementation
- openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string
- openssl_pkcs12_export — PKCS#12 uyumlu sertifika deposu dosyasını bir değişkene yerleştirir
- openssl_pkcs12_export_to_file — Bir PKCS#12 uyumlu sertifika deposunu bir dosyaya kaydeder
- openssl_pkcs12_read — Bir PKCS#12 Sertifika Deposunu bir diziye çözümler
- openssl_pkcs7_decrypt — S/MIME şifreli bir iletinin şifresini çözer
- openssl_pkcs7_encrypt — Bir S/MIME iletiyi şifreler
- openssl_pkcs7_read — Export the PKCS7 file to an array of PEM certificates
- openssl_pkcs7_sign — Bir S/MIME iletiyi imzalar
- openssl_pkcs7_verify — S/MIME imzalı bir iletinin imzasını doğrular
- openssl_pkey_derive — Computes shared secret for public value of remote and local DH or ECDH key
- openssl_pkey_export — Bir anahtarın ihraç edilebilir gösterimini bir dizge olarak döndürür
- openssl_pkey_export_to_file — Bir anahtarın ihraç edilebilir gösterimini bir dosyaya kaydeder
- openssl_pkey_free — Bir gizli anahtarı serbest bırakır
- openssl_pkey_get_details — Anahtarla ilgili ayrıntıları bir dizi içinde döndürür
- openssl_pkey_get_private — Gizli anahtarı döndürür
- openssl_pkey_get_public — Genel anahtarı sertifikadan elde edip kullanıma hazırlar
- openssl_pkey_new — Yeni bir gizli anahtar üretir
- openssl_private_decrypt — Genel anahtarla şifrelenmiş verinin şifresini gizli anahtarla çözer
- openssl_private_encrypt — Veriyi gizli anahtarla şifreler
- openssl_public_decrypt — Gizli anahtarla şifrelenmiş verinin şifresini genel anahtarla çözer
- openssl_public_encrypt — Veriyi genel anahtarla şifreler
- openssl_random_pseudo_bytes — Yarı-rasgele bayt dizesi üretir
- openssl_seal — Veriyi mühürler (şifreler)
- openssl_sign — İmza üretir
- openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge
- openssl_spki_export_challenge — Exports the challenge associated with a signed public key and challenge
- openssl_spki_new — Generate a new signed public key and challenge
- openssl_spki_verify — Verifies a signed public key and challenge
- openssl_verify — İmzayı doğrular
- openssl_x509_check_private_key — Bir gizli anahtarın bir sertifikaya karşılık olup olmadığına bakar
- openssl_x509_checkpurpose — Sertifikanın belli bir amaçla kulanılıp kullanılmayacağına bakar
- openssl_x509_export — Belirtilen sertifikayı dizge olarak döndürür
- openssl_x509_export_to_file — Belirtilen sertifikayı bir dosyaya kaydeder
- openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate
- openssl_x509_free — Sertifika özkaynağını serbest bırakır
- openssl_x509_parse — Bir X509 sertifikasını çözümleyip bilgileri bir dizi içinde döndürür
- openssl_x509_read — X.509 sertifikasını çözümleyip sertifika için nesne döndürür
- openssl_x509_verify — Verifies digital signature of x509 certificate against a public key

# The OpenSSLCertificate sınıfı

(PHP 8)

## Giriş

PHP 8.0.0 itibariyle, `OpenSSL X.509` özkaynaklarının yerini alan tamamen kapalı sınıf.

## Sınıf Sözdizimi

final class OpenSSLCertificate {
}

# The OpenSSLCertificateSigningRequest sınıfı

(PHP 8)

## Giriş

PHP 8.0.0 itibariyle, `OpenSSL X.509 CSR` özkaynaklarının yerini alan tamamen kapalı sınıf.

## Sınıf Sözdizimi

final class OpenSSLCertificateSigningRequest {
}

# The OpenSSLAsymmetricKey class

(PHP 8)

## Giriş

PHP 8.0.0 itibariyle, `OpenSSL Key` özkaynaklarının yerini alan tamamen kapalı sınıf.

## Sınıf Sözdizimi

final class OpenSSLAsymmetricKey {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
  - Amaç sınama seçenekleri
  - Asimetrik şifreleme için dolgu seçenekleri
  - Anahtar türleri
  - PKCS7 Seçenekleri/Sabitleri
  - CMS Seçenekleri/Sabitleri
  - İmzalama Algoritmaları
  - Şifreler
  - Sürüm sabitleri
  - Sunucu Adı Gösterge sabitler
  - Diğer sabitler
- Anahtar/Sertifika Bağımsız değişkenleri
- Sertifika Doğrulama
- OpenSSL İşlevleri
  - openssl_cipher_iv_length — Gets the cipher iv length
  - openssl_cipher_key_length — Gets the cipher key length
  - openssl_cms_decrypt — Decrypt a CMS message
  - openssl_cms_encrypt — Encrypt a CMS message
  - openssl_cms_read — Export the CMS file to an array of PEM certificates
  - openssl_cms_sign — Bir dosyayı imzalar
  - openssl_cms_verify — Belirtilen CMS imzasını doğrular
  - openssl_csr_export — Belirtilen CSR'yi bir dizge olarak döndürür
  - openssl_csr_export_to_file — Belirtilen CSR'yi bir dosyaya kaydeder
  - openssl_csr_get_public_key — Bir CSR'nin açık anahtarını döndürür
  - openssl_csr_get_subject — Bir CSR'nin öznesini döndürür
  - openssl_csr_new — Bir sertifika imzalama isteği (CSR) üretir
  - openssl_csr_sign — Bir CSR'yi başka bir sertifika (veya kendisi) ile imzalayıp bir sertifika üretir
  - openssl_decrypt — Verinin şifresini çözer
  - openssl_dh_compute_key — Uzak DH genel anahtarının ve yerel DH anahtarının genel değeri için paylaşılan gizi hesaplar
  - openssl_digest — Bir özet hesaplar
  - openssl_encrypt — Veriyi şifreler
  - openssl_error_string — OpenSSL hata iletisini döndürür
  - openssl_free_key — Anahtar özkaynağını serbest bırakır
  - openssl_get_cert_locations — Retrieve the available certificate locations
  - openssl_get_cipher_methods — Kullanılabilecek şifreleme yöntemlerini döndürür
  - openssl_get_curve_names — Gets list of available curve names for ECC
  - openssl_get_md_methods — Kullanılabilecek özet yöntemlerini döndürür
  - openssl_get_privatekey — openssl_pkey_get_private işlevinin takma adıdır
  - openssl_get_publickey — openssl_pkey_get_public işlevinin takma adıdır
  - openssl_open — Mühürlü veriyi açar
  - openssl_password_hash — Create a password hash using OpenSSL's Argon2 implementation
  - openssl_password_verify — Verify a password against a hash using OpenSSL's Argon2 implementation
  - openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string
  - openssl_pkcs12_export — PKCS#12 uyumlu sertifika deposu dosyasını bir değişkene yerleştirir
  - openssl_pkcs12_export_to_file — Bir PKCS#12 uyumlu sertifika deposunu bir dosyaya kaydeder
  - openssl_pkcs12_read — Bir PKCS#12 Sertifika Deposunu bir diziye çözümler
  - openssl_pkcs7_decrypt — S/MIME şifreli bir iletinin şifresini çözer
  - openssl_pkcs7_encrypt — Bir S/MIME iletiyi şifreler
  - openssl_pkcs7_read — Export the PKCS7 file to an array of PEM certificates
  - openssl_pkcs7_sign — Bir S/MIME iletiyi imzalar
  - openssl_pkcs7_verify — S/MIME imzalı bir iletinin imzasını doğrular
  - openssl_pkey_derive — Computes shared secret for public value of remote and local DH or ECDH key
  - openssl_pkey_export — Bir anahtarın ihraç edilebilir gösterimini bir dizge olarak döndürür
  - openssl_pkey_export_to_file — Bir anahtarın ihraç edilebilir gösterimini bir dosyaya kaydeder
  - openssl_pkey_free — Bir gizli anahtarı serbest bırakır
  - openssl_pkey_get_details — Anahtarla ilgili ayrıntıları bir dizi içinde döndürür
  - openssl_pkey_get_private — Gizli anahtarı döndürür
  - openssl_pkey_get_public — Genel anahtarı sertifikadan elde edip kullanıma hazırlar
  - openssl_pkey_new — Yeni bir gizli anahtar üretir
  - openssl_private_decrypt — Genel anahtarla şifrelenmiş verinin şifresini gizli anahtarla çözer
  - openssl_private_encrypt — Veriyi gizli anahtarla şifreler
  - openssl_public_decrypt — Gizli anahtarla şifrelenmiş verinin şifresini genel anahtarla çözer
  - openssl_public_encrypt — Veriyi genel anahtarla şifreler
  - openssl_random_pseudo_bytes — Yarı-rasgele bayt dizesi üretir
  - openssl_seal — Veriyi mühürler (şifreler)
  - openssl_sign — İmza üretir
  - openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge
  - openssl_spki_export_challenge — Exports the challenge associated with a signed public key and challenge
  - openssl_spki_new — Generate a new signed public key and challenge
  - openssl_spki_verify — Verifies a signed public key and challenge
  - openssl_verify — İmzayı doğrular
  - openssl_x509_check_private_key — Bir gizli anahtarın bir sertifikaya karşılık olup olmadığına bakar
  - openssl_x509_checkpurpose — Sertifikanın belli bir amaçla kulanılıp kullanılmayacağına bakar
  - openssl_x509_export — Belirtilen sertifikayı dizge olarak döndürür
  - openssl_x509_export_to_file — Belirtilen sertifikayı bir dosyaya kaydeder
  - openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate
  - openssl_x509_free — Sertifika özkaynağını serbest bırakır
  - openssl_x509_parse — Bir X509 sertifikasını çözümleyip bilgileri bir dizi içinde döndürür
  - openssl_x509_read — X.509 sertifikasını çözümleyip sertifika için nesne döndürür
  - openssl_x509_verify — Verifies digital signature of x509 certificate against a public key
- OpenSSLCertificate — The OpenSSLCertificate sınıfı
- OpenSSLCertificateSigningRequest — The OpenSSLCertificateSigningRequest sınıfı
- OpenSSLAsymmetricKey — The OpenSSLAsymmetricKey class

# Parola Aşlama

# Giriş

Parola aşlama arayüzü, parolaları güvenli bir şekilde oluşturmayı ve yönetmeyi kolaylaştırmak için crypt() ve diğer bazı parola aşlama algoritmaları etrafında kullanımı kolay bir sarmalayıcı sağlar.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

Bu eklentiyi derlemek için harici kütüphanelere gerek yoktur.

Argon2 parola aşlaması için, » libargon2 gerekir. PHP 7.3.0 ve sonrası için, libargon2'nin 20161029 veya sonraki sürümü gerekir.

## Kurulum

Bu işlevleri kullanmak için hiçbir şey kurmaya gerek yoktur; PHP çekirdeğinin parçasıdırlar.

Argon2 parola aşlamasını etkinleştirmek için, PHP'nin --with-password-argon2 yapılandırma seçeneği kullanılarak libargon2 desteğiyle derlenmesi gerekir.

PHP 8.1.0 öncesinde, argon2 dizini --with-password-argon2[=DiZiN] ile belirtilebiliyordu.

# Öntanımlı Sabitler

Aşağıdaki sabitler PHP çekirdeğinin parçası olarak daima kullanılabilir durumdadır.

`PASSWORD_BCRYPT` (string)

  `CRYPT_BLOWFISH` algoritması ile yeni bir parola aşı üretmekte kullanılır.

  Bu daima, "$2y$" crypt() biçemi kullanılan 60 karakterlik bir aş ile sonuçlanır.

  Desteklenen seçenekler:

  - `salt` (string) - Parola aşlanırken kullanmak üzere elle bir tuz sağlamak için kullanılır. Bunun bir tuzun otomatik olarak oluşturulmasını geçersiz kılıp önleyeceği unutulmamalıdır.

    Belirtilmezse, aşlanan her parola için password_hash() tarafından rasgele bir tuz üretilir. Bu amaçlanan çalışma kipidir.

    Uyarı

    PHP 7.0.0 ve sonrasında `salt` seçeneğinin kullanımı önerilmemektedir. Artık öntanımlı olarak üretilen tuzun kullanımı öneriliyor.

  - `cost` (int) - Kullanılması gereken algoritmik maliyeti belirtir. Bu değerin örnekleri crypt() işlevinde bulunabilir.

    Belirtilmezse, `10` öntanımlı değeri kullanılır. Bu iyi bir temel maliyettir, ancak donanımınıza bağlı olarak arttırılabilir.

`PASSWORD_BCRYPT_DEFAULT_COST` (int)

`PASSWORD_ARGON2I` (string)

  Argon2i algoritması ile yeni bir parola aşı üretmekte kullanılır.

  Desteklenen seçenekler:

  - `memory_cost` (int) - Argon2 aşını hesaplamakta kullanılabilecek kilobibayt cinsinden azami bellek. `PASSWORD_ARGON2_DEFAULT_MEMORY_COST` öntanımlıdır.

  - `time_cost` (int) - Argon2 aşını hesaplamak için gerekebilecek azami süre. `PASSWORD_ARGON2_DEFAULT_TIME_COST` öntanımlıdır.

  - `threads` (int) - Argon2 aşını hesaplamak için kullanılacak evre sayısı. `PASSWORD_ARGON2_DEFAULT_THREADS` öntanımlıdır.

  PHP 7.2.0 ve sonrasında kullanılabilir.

`PASSWORD_ARGON2ID` (string)

  Argon2id algoritması ile yeni bir parola aşı üretmekte kullanılır. `PASSWORD_ARGON2I` için gereken seçenekler kullanılır.

  PHP 7.3.0 ve sonrasında kullanılabilir.

`PASSWORD_ARGON2_DEFAULT_MEMORY_COST` (int)

  Bir aş hesaplamaya çalışılırken kullanılacak bayt cinsinden öntanımlı bellek miktarı.

  PHP 7.2.0 ve sonrasında kullanılabilir.

`PASSWORD_ARGON2_DEFAULT_TIME_COST` (int)

  Bir aş hesaplamaya çalışılırken kullanılacak öntanımlı süre.

  PHP 7.2.0 ve sonrasında kullanılabilir.

`PASSWORD_ARGON2_DEFAULT_THREADS` (int)

  Argon2lib tarafından kullanılacak öntanımlı evre sayısı. libsodium eklentisi ile kullanılamaz.

  PHP 7.2.0 ve sonrasında kullanılabilir.

`PASSWORD_ARGON2_PROVIDER` (string)

  PHP 7.4.0 ve sonrasında kullanılabilir.

`PASSWORD_DEFAULT` (mixed)

  Bir algoritma sağlanmazsa aşlama için kullanılacak öntanımlı algoritma. Desteklenebilecek daha yeni ve daha güçlü algoritmalar çıktıkça PHP'nin yeni sürümlerinde öntanımlı algoritma değişebilir.

  Bu sabit, PHP'ye yeni ve daha güçlü algoritmalar eklendikçe zamanla değişmek üzere tasarlanmıştır. Bu sebeple, bu sabitin kullanımından kaynaklanan sonucun uzunluğu zamanla değişebilir. Bu bakımdan, sonucun 60 karakterden fazla genişleyebilen bir veritabanı sütununda saklanması önerilir (255 önerilen genişliktir).

  Bu sabit için değerler:

  - PHP 5.5.0 - `PASSWORD_BCRYPT`

##### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Parola algoritma kimlikleri (`PASSWORD_BCRYPT`, `PASSWORD_ARGON2I`, `PASSWORD_ARGON2ID` ve `PASSWORD_DEFAULT`) artık dizge olabiliyor. Evvelce tamsayılar kullanılırdı.

# Parola Aşlama İşlevleri

# password_algos

(PHP 7 >= 7.4.0, PHP 8)

password_algos — Kullanılabilen parola aşlama algortimalarının kimliklerini döndürür

### Açıklama

function password_algos(): array

Kayıtlı parola aşlama algoritma kimliklerinin tümünü bir dizgeler dizisi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kullanılabilen parola aşlama algortimalarının kimliklerini döndürür.

### Örnekler

Örnek 1 - password_algos() temel kullanım örneği

    <?php
    print_r(password_algos());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 2y
        [1] => argon2i
        [2] => argon2id
    )

# password_get_info

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_get_info — Belirtilen aş hakkında bilgi döndürür

### Açıklama

function password_get_info(string `$aş`): array

password_hash() tarafından desteklenen bir algoritma kullanılarak oluşturulan geçerli bir aş aktarıldığı takdirde, bu işlev bu aş hakkında bir bilgi dizisi döndürür.

### Bağımsız Değişkenler

`aş`

  password_hash() işleviyle oluşturulan aş.

### Dönen Değerler

3 elemanlı ilişkisel bir dizi döndürür:

- `algo`: Bir parola algoritma sabiti ile eşleşir.
- `algoName`: algoritmanın insanlarca okuyabilen adı.
- `options`: password_hash() çağrılırken belirtilen seçenekler.

# password_hash

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_hash — Parola aşı oluşturur

### Açıklama

function password_hash(#[\SensitiveParameter]string `$parola`, string|int|null `$algo`, array `$seçenekler` = []): string

password_hash() işlevi güçlü ve tek yönlü bir aşlama algoritması kullanarak yeni bir parola aşı oluşturur.

Desteklenen algoritmalar:

- `PASSWORD_DEFAULT` - Bcrypt algoritması kullanılır (PHP 5.5.0'dan itibaren öntanımlıdır). Bu sabitin, PHP'ye yeni ve daha güçlü algoritmalar eklendikçe zamanla değişmek üzere tasarlandığı unutulmamalıdır. Bu sebeple, bu tanımlayıcının kullanımından kaynaklanan sonucun uzunluğu zamanla değişebilir. Bu bakımdan, sonucun 60 karakterden fazla genişleyebilen bir veritabanı sütununda saklanması önerilir (255 karakter iyi bir seçim olacaktır).
- `PASSWORD_BCRYPT` - Aş oluşturmak için `CRYPT_BLOWFISH` algoritması kullanılır. Bu, "$2y$" belirtecini kullanarak crypt() uyumlu standart bir aş oluşturacaktır. Sonuç her zaman 60 karakterlik bir dizge olacaktır, başarısızlık durumunda `false` döner.
- `PASSWORD_ARGON2I` - Aş oluşturmak için Argon2i aşlama algoritması kullanılır. Bu algoritma sadece PHP, Argon2 desteği ile derlenmişse kullanılabilir.
- `PASSWORD_ARGON2ID` - Aş oluşturmak için Argon2id aşlama algoritması kullanılır. Bu algoritma sadece PHP, Argon2 desteği ile derlenmişse kullanılabilir.

`PASSWORD_BCRYPT` için desteklenen seçenekler:

- `salt` (string) - Parola aşlanırken kullanmak üzere elle bir tuz sağlamak için kullanılır. Bunun bir tuzun otomatik olarak oluşturulmasını geçersiz kılıp önleyeceği unutulmamalıdır.

  Belirtilmezse, aşlanan her parola için password_hash() tarafından rasgele bir tuz üretilir. Bu amaçlanan çalışma kipidir.

  Uyarı

  `salt` seçeneğinin kullanımı önerilmemektedir. Artık öntanımlı olarak üretilen tuzun kullanımı öneriliyor. PHP 8.0.0 ve sonrasında elle sağlanan tuz yok sayılmaktadır.

- `cost` (int) - Kullanılması gereken algoritmik maliyeti belirtir. Bu değerin örnekleri crypt() işlevinde bulunabilir.

  Belirtilmezse, `10` öntanımlı değeri kullanılır. Bu iyi bir temel maliyettir, ancak donanımınıza bağlı olarak arttırılabilir.

`PASSWORD_ARGON2I` ve `PASSWORD_ARGON2ID` için desteklenen seçenekler:

- `memory_cost` (int) - Argon2 aşını hesaplamakta kullanılabilecek kilobibayt cinsinden azami bellek. `PASSWORD_ARGON2_DEFAULT_MEMORY_COST` öntanımlıdır.

- `time_cost` (int) - Argon2 aşını hesaplamak için gerekebilecek azami süre. `PASSWORD_ARGON2_DEFAULT_TIME_COST` öntanımlıdır.

- `threads` (int) - Argon2 aşını hesaplamak için kullanılacak evre sayısı. `PASSWORD_ARGON2_DEFAULT_THREADS` öntanımlıdır.

  Uyarı

  Sadece PHP libargon2 kullanıyorsa, libsodium gerçeklenimini kullanmıyorsa, kullanılabilir.

### Bağımsız Değişkenler

`parola`

  Kullanıcı parolası.

  Dikkat

  Algoritma olarak `PASSWORD_BCRYPT` kullanımı `parola` bağımsız değişkeninin 72 bayttan kırpılmasına sebep olur.

`algo`

  Parolaya karıştırma uygulamak için kullanılacak algoritmayı belirten parola algoritması sabiti.

`seçenekler`

  Seçenekleri içeren ilişkisel bir dizi. Her algoritma için desteklenen seçenekler parola algoritması sabitleri bölümünde bulunabilir.

  Belirtilmezse, rasgele bir tuz oluşturulur ve öntanımlı maliyet kullanılır.

### Dönen Değerler

Başarılı olursa aşlanmış parola döner.

Kullanılan algoritma, maliyet ve tuz aşın parçası olarak döndürülür. Bu bakımdan aş, doğrulanması için gereken tüm bilgiyi içermiş olur. Böylece, password_verify() işlevinin aşı doğrulamak için ayrı bir yerde saklanmış tuz ve algoritma bilgisine ihtiyacı olmaz.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | password_hash() başarısız olduğunda artık `false` döndürmüyor, onun yerine parola aşlama algoritması geçersizse ValueError, bilinmeyen bir hatadan dolayı parola aşlanamazsa Error istisnası oluşuyor.
8.0.0 | `algo` bağımsız değişkeni artık `null` olabiliyor.
7.4.0 | `algo` için artık bir dizge gerekiyor, ancak geriye uyumluluk için hala tamsayılar kabul ediliyor.
7.4.0 | Argon2 parolalar için artık sodium eklentisi de bir diğer gerçeklenim olarak kullanılabiliyor.
7.3.0 | `PASSWORD_ARGON2ID` kullanan Argon2id parolaları için destek eklendi.
7.2.0 | `PASSWORD_ARGON2I` kullanan Argon2i parolaları için destek eklendi.

### Örnekler

Örnek 1 - password_hash() örneği

    <?php
    /**
     * Sadece mevcut öntanımlı algoritmayı kullanarak parolayı aşla.
     * Bu şu anda BCRYPT'dir ve 60 karakterlik bir sonuç üretecektir.
     *
     * Öntanımlının zamanla değişebileceğine dikkat.
     * Saklama alanı 60 karakterden fazlasını alabilmeli (255 iyidir)
     */
    echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Örnek 2 - Maliyet belirtilen password_hash() örneği

    <?php
    /**
     * BCRYPT için öntanımlı maliyet 12'ye çıkarılmak isteniyor.
     * BCRYPT için 60 karakter gerektiğine dikkat.
     */
    $seçenekler = [
        'cost' => 12,
    ];
    echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $seçenekler);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Örnek 3 - password_hash() iyi bir maliyet bulma örneği

    <?php
    /**
     * Bu kod, karşılanabilir maliyetin ne kadar yüksek olduğunu
     * belirlemek için sunucuyu sınayacaktır. Sunucuyu çok yavaşlatmadan
     * atanabilecek en yüksek maliyetin belirlenmesi isteniyor. 10 iyi
     * bir başlangıçtır ve sunucular yeterince hızlıysa fazlası daha iyidir.
     * Aşağıdaki kod, etkileşimli oturum açılabilen sistemler için iyi bir sınır
     * olarak ≤ 350 milisaniyelik süreyi hedeflemektedir.
     */
    $süreHedefi = 0.35; // 350 milisaniye

    $maliyet = 10;
    do {
        $maliyet++;
        $ilk = microtime(true);
        password_hash("test", PASSWORD_BCRYPT, ["cost" => $maliyet]);
        $son = microtime(true);
    } while (($son - $ilk) < $süreHedefi);

    echo "Yaklaşık maliyet bulundu: " . $maliyet;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yaklaşık maliyet bulundu: 12

Örnek 4 - Argon2i kullanılan password_hash() örneği

    <?php
    echo 'Argon2i aş: ' . password_hash('rasmuslerdorf', PASSWORD_ARGON2I);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Argon2i aş: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0

### Notlar

Dikkat

Bu işlev için kendi tuzunuzu oluşturmamanız şiddetle tavsiye edilir. Tuz belirtilmezse, otomatik olarak güvenli bir tuz oluşturulur.

Yukarıda belirtildiği gibi, PHP 7.0'da `salt` seçeneğinin belirtilmesi, bir kullanımdan kaldırma uyarısı üretecektir. El ile tuz sağlama desteği, PHP 8.0'da kaldırıldı.

> Bilginize:

> Bu işlevin sunucularda sınanması ve `cost` bağımsız değişkeninin, işlevin etkileşimli sistemlerdeki çalışma süresinin 350 milisaniyeden daha az olmasını sağlayacak şekilde ayarlanması önerilir. Yukarıdaki örnek kod, donanım için iyi bir maliyet değeri seçilmesine yardımcı olacaktır.

> Bilginize: Bu işlev tarafından desteklenen algoritmalarda yapılan güncellemeler (veya öntanımlı algoritmada yapılan değişiklikler) aşağıdaki kurallara uymalıdır:

> - Herhangi bir yeni algoritma, öntanımlı duruma gelmeden önce PHP'nin en az 1 tam sürümü için çekirdek kodda olmalıdır. Dolayısıyla, örneğin 7.5.5'te yeni bir algoritma eklenirse, 7.7'ye kadar öntanımlı olması uygun olmayacaktır (çünkü 7.6 ilk tam sürüm olacaktır). Ancak 7.6.0'da farklı bir algoritma eklenmişse, 7.7.0 öntanımlılık için uygun olacaktır.
> - Öntanımlı, düzeltme sürümünde değil, yalnızca tam sürümde (7.3.0, 8.0.0 vb.) değişmelidir. Bunun tek istisnası, geçerli öntanımlıda kritik bir güvenlik açığı bulunduğunda ortaya çıkan aciliyet durumudur.

### Ayrıca Bakınız

- password_verify() - Parola ile aş eşleşmesini doğrular
- password_needs_rehash() - Belirtilen aş ile belirtilen seçeneklerin eşleşmesini doğrular
- crypt() - Tek yönlü dizge aşlama
- sodium_crypto_pwhash_str() - Get an ASCII-encoded hash

# password_needs_rehash

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_needs_rehash — Belirtilen aş ile belirtilen seçeneklerin eşleşmesini doğrular

### Açıklama

function password_needs_rehash(string `$aş`, string|int|null `$algo`, array `$seçenekler` = []): bool

Bu işlev, belirtilen aşın belirtilen algoritma ve seçeneklerle yeniden aşlanması gerekip gerekmediğine bakar. Gerekliyse, aşın yeniden aşlanması gerektiği varsayılır.

### Bağımsız Değişkenler

`aş`

  password_hash() işleviyle oluşturulan aş.

`algo`

  Parolaya karıştırma uygulamak için kullanılacak algoritmayı belirten parola algoritması sabiti.

`seçenekler`

  Seçenekleri içeren ilişkisel bir dizi. Her algoritma için desteklenen seçenekler parola algoritması sabitleri bölümünde bulunabilir.

### Dönen Değerler

Aş, verilen `algo` ve `seçenekler`le eşleşecek şekilde yeniden aşlanmalıysa `true`, aksi takdirde `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `algo` için artık bir dizge gerekiyor, ancak geriye uyumluluk için hala tamsayılar kabul ediliyor.

### Örnekler

Örnek 1 - password_needs_rehash() kullanımı

    <?php

    $parola = 'rasmuslerdorf';
    $aş = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';

    $algorithm = PASSWORD_BCRYPT;
    // bcrypt'in cost (maliyeti), donanımın geliştirilmesine bağlı olarak
    // zamanla değişebilir
    $sçnkler = array('cost' => 12);

    // Saklı aşı düz metin parola ile doğrula
    if (password_verify($parola, $aş)) {
        // Aşlama algoritmasının veya seçeneklerin değişip değişmediğine bak
        if (password_needs_rehash($aş, $algorithm, $sçnkler)) {
            // Gerekliyse, yeni bir aş oluştur ve eskisinin yerine koy
            $yeniAş = password_hash($parola, $algorithm, $sçnkler);

            // Kullanıcı kaydını $yeniAş ile güncelle
        }

        // Kullanıcıya oturum aç
    }
    ?>

# password_verify

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

password_verify — Parola ile aş eşleşmesini doğrular

### Açıklama

function password_verify(#[\SensitiveParameter]string `$parola`, string `$aş`): bool

Belirtilen aş ile belirtilen parolanın eşleşmesini doğrular. password_verify() işlevi crypt() işlevi ile uyumludur. Bu bakımdan crypt() ile oluşturulan parola aşları password_verify() ile kullanılabilir.

password_hash() işlevinin döndürdüğü aşın içinde algoritma, maliyet ve tuz bulunduğuna dikkat edilmelidir. Bu bakımdan, bir aşı doğrulamak için gereken tüm bilgi içinde olur. Bu, tuz veya algoritma bilgisinin ayrı bir depoda saklanmasını gerektirmeden doğrulama işlevinin aşı doğrulamasını sağlar.

Bu işlev zamanlama saldırılarına karşı güvenlidir.

### Bağımsız Değişkenler

`parola`

  Kullanıcı parolası.

`aş`

  password_hash() işleviyle oluşturulan aş.

### Dönen Değerler

Parola ve aş eşleşirse `true`, aksi takdirde `false` döner.

### Örnekler

Örnek 1 - password_verify() örneği

Bu basit bir örnek olup gerekirse doğu parolanın yeniden aşlanması önerilir; password_needs_rehash() işlevinde bunun yapılış örneği vardır.

    <?php
    // Bunun nereden geldiğini öğrenmek için password_hash() örneğine bak
    $aş = '$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a';

    if (password_verify('rasmuslerdorf', $aş)) {
        echo 'Parola geçerli!';
    } else {
        echo 'Geçersiz parola.';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Parola geçerli!

### Ayrıca Bakınız

- password_needs_rehash() - Belirtilen aş ile belirtilen seçeneklerin eşleşmesini doğrular
- password_hash() - Parola aşı oluşturur
- » kullanıcının gerçeklenimi
- sodium_crypto_pwhash_str_verify() - Verifies that a password matches a hash

## İçindekiler

- password_algos — Kullanılabilen parola aşlama algortimalarının kimliklerini döndürür
- password_get_info — Belirtilen aş hakkında bilgi döndürür
- password_hash — Parola aşı oluşturur
- password_needs_rehash — Belirtilen aş ile belirtilen seçeneklerin eşleşmesini doğrular
- password_verify — Parola ile aş eşleşmesini doğrular

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Parola Aşlama İşlevleri
  - password_algos — Kullanılabilen parola aşlama algortimalarının kimliklerini döndürür
  - password_get_info — Belirtilen aş hakkında bilgi döndürür
  - password_hash — Parola aşı oluşturur
  - password_needs_rehash — Belirtilen aş ile belirtilen seçeneklerin eşleşmesini doğrular
  - password_verify — Parola ile aş eşleşmesini doğrular

# Rnp

# Giriş

Uyarı

Bu eklenti DENEYSELDİR. Bu eklentinin davranışı, işlev isimleri ve tüm belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu risk göze alınamayacaksa bu eklenti kullanılmamalıdır.

This module allows you to use » RNP library. RNP is a high performance C++ OpenPGP library used by Mozilla Thunderbird.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

In order to use RNP library functions you need to install the» RNP library. RNP library version >= 0.16.2 is required.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/rnp

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`RNP_KEYSTORE_GPG` (string)
  Keystore format "GPG".
`RNP_KEYSTORE_KBX` (string)
  Keystore format "KBX". For public keys only. A keybox is a file format used to store public keys along with meta information and indices.
`RNP_KEYSTORE_G10` (string)
  Keystore format "G10". For private keys.
`RNP_LOAD_SAVE_PUBLIC_KEYS` (integer)
  Load or save public keys only. Can be OR-ed with `RNP_LOAD_SAVE_SECRET_KEYS` to load both public and private keys to the FFI context or save them from the context.
`RNP_LOAD_SAVE_SECRET_KEYS` (integer)
  Load or save secret keys only. Can be OR-ed with `RNP_LOAD_SAVE_PUBLIC_KEYS` to load both public and private keys to the FFI context or save them from the context.
`RNP_LOAD_SAVE_PERMISSIVE` (integer)
  Allows to ignore bad signature/key/subkey packets during key import.
`RNP_LOAD_SAVE_SINGLE` (integer)
  If set, only the first key will be loaded.
`RNP_LOAD_SAVE_BASE64` (integer)
  Allow import of base64-encoded keys (autocrypt ones).
`RNP_FEATURE_SYMM_ALG` (string)
  List available symmetric encryption algorithms.
`RNP_FEATURE_AEAD_ALG` (string)
  List available AEAD algorithms.
`RNP_FEATURE_PROT_MODE` (string)
  List available protection modes.
`RNP_FEATURE_PK_ALG` (string)
  List available public key algorithms.
`RNP_FEATURE_HASH_ALG` (string)
  List available hash algorithms.
`RNP_FEATURE_COMP_ALG` (string)
  List available compression algorithms.
`RNP_FEATURE_CURVE` (string)
  List available elliptic curves.
`RNP_DUMP_MPI` (integer)
  Dump MPI (Multi-precision integer) values.
`RNP_DUMP_RAW` (integer)
  Dump raw packet contents as well.
`RNP_DUMP_GRIP` (integer)
  Dump key fingerprints and grips.
`RNP_JSON_DUMP_MPI` (integer)
  Dump MPI (Multi-precision integer) values.
`RNP_JSON_DUMP_RAW` (integer)
  Dump raw packet contents as well.
`RNP_JSON_DUMP_GRIP` (integer)
  Dump key fingerprints and grips.
`RNP_ENCRYPT_NOWRAP` (integer)
  Allows encryption of signed message. Message is not wrapped into literal data packet.
`RNP_KEY_EXPORT_ARMORED` (integer)
  Enable ASCII-armoring of exported data.
`RNP_KEY_EXPORT_PUBLIC` (integer)
  Export public key.
`RNP_KEY_EXPORT_SECRET` (integer)
  Export secret key.
`RNP_KEY_EXPORT_SUBKEYS` (integer)
  If primary key is being exported, all subkeys will be exported too.
`RNP_KEY_EXPORT_BASE64` (integer)
  Export base64-encoded autocrypt key instead of binary.
`RNP_KEY_REMOVE_PUBLIC` (integer)
  Remove public key.
`RNP_KEY_REMOVE_SECRET` (integer)
  Remove secret key.
`RNP_KEY_REMOVE_SUBKEYS` (integer)
  If primary key is being deleted, all of its subkeys will be removed too.

# Örnekler

## İçindekiler

- Clearsign text

## Clearsign text

This example will clearsign a given text.

Örnek 1 RNP clearsign example

    <?php
    // init FFI object
    $ffi = rnp_ffi_create('GPG', 'GPG');

    // generate RSA key
    $key = rnp_op_generate_key($ffi, 'test@example.com', 'RSA');

    // sign
    $data = "Example text to sign";
    $signature = rnp_op_sign_cleartext($ffi, $data, array($key));

    echo $signature;

    // destroy FFI object
    rnp_ffi_destroy($ffi);
    ?>

# Rnp İşlevleri

# rnp_backend_string

(PECL rnp >= 0.1.1)

rnp_backend_string — Return cryptographic backend library name

### Açıklama

function rnp_backend_string(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Backend name string. Currently supported backends are "Botan" and "OpenSSL".

# rnp_backend_version

(PECL rnp >= 0.1.1)

rnp_backend_version — Return cryptographic backend library version

### Açıklama

function rnp_backend_version(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Version string.

# rnp_decrypt

(PECL rnp >= 0.1.1)

rnp_decrypt — Decrypt PGP message

### Açıklama

function rnp_decrypt(RnpFFI `$ffi`, string `$input`): string|false

Private keys used for decryption should be loaded into the FFI object before calling this function. If password encryption was used, then password provider should be set by calling rnp_ffi_set_pass_provider().

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`input`
  Encrypted message.

### Dönen Değerler

Decrypted message on success başarısızlık durumunda `false` döner.

# rnp_dump_packets

(PECL rnp >= 0.1.1)

rnp_dump_packets — Dump OpenPGP packets stream information in humand-readable format

### Açıklama

function rnp_dump_packets(string `$input`, int `$flags`): string|false

### Bağımsız Değişkenler

`input`
  Input string containing OpenPGP data, either in binary or ASCII-armored format.
`flags`
  See `RNP_DUMP_*` predefined constants.

### Dönen Değerler

Text describing packet sequence başarısızlık durumunda `false` döner.

# rnp_dump_packets_to_json

(PECL rnp >= 0.1.1)

rnp_dump_packets_to_json — Dump OpenPGP packets stream information to the JSON string

### Açıklama

function rnp_dump_packets_to_json(string `$input`, int `$flags`): string|false

### Bağımsız Değişkenler

`input`
  Input string containing OpenPGP data, either in binary or ASCII-armored format.
`flags`
  See `RNP_JSON_DUMP_*` predefined constants.

### Dönen Değerler

JSON string with dump başarısızlık durumunda `false` döner.

# rnp_ffi_create

(PECL rnp >= 0.1.1)

rnp_ffi_create — Create the top-level object used for interacting with the library

### Açıklama

function rnp_ffi_create(string `$pub_format`, string `$sec_format`): RnpFFI|false

### Bağımsız Değişkenler

`pub_format`
  the format of the public keyring, RNP_KEYSTORE_GPG or other RNP_KEYSTORE_* constant.
`sec_format`
  the format of the secret keyring, RNP_KEYSTORE_GPG or other RNP_KEYSTORE_* constant

### Dönen Değerler

Returns RnpFFI object on success başarısızlık durumunda `false` döner.

# rnp_ffi_destroy

(PECL rnp >= 0.1.1)

rnp_ffi_destroy — Destroy the top-level object used for interacting with the library

### Açıklama

function rnp_ffi_destroy(RnpFFI `$ffi`): void

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.

### Dönen Değerler

# rnp_ffi_set_pass_provider

(PECL rnp >= 0.1.1)

rnp_ffi_set_pass_provider — Set password provider callback function

### Açıklama

function rnp_ffi_set_pass_provider(RnpFFI `$ffi`, callable `$password_callback`): bool

Sets password provider function. This function can ask for the password on a standard input (if PHP script is executed in a command line environment), display GUI dialog or provide password in any other possible ways. Requested passwords are used to encrypt or decrypt secret keys or perform symmetric encryption/decryption operations.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`password_callback`

  The function that is to be called for every password request. It has the following signature:

  function password_callback(string `$key_fp`, string `$pgp_context`, string `&$password`): bool
  - `$key_fp` - The key fingerprint, if any. Can be empty.
  - `$pgp_context` - String describing why the key is being requested.
  - `$password` - Password string reference where provided password should be stored to.
  Callback function should return `true` if password was successfully set başarısızlık durumunda `false` döner.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 simple callback function example

    <?php
    function password_callback(string $key_fp, string $pgp_context, string &$password)
    {
        $password = "password";

        return true;
    }

    $ffi = rnp_ffi_create('GPG', 'GPG');

    rnp_ffi_set_pass_provider($ffi, 'password_callback');

# rnp_import_keys

(PECL rnp >= 0.1.1)

rnp_import_keys — Import keys from PHP string to the keyring and receive JSON describing new/updated keys

### Açıklama

function rnp_import_keys(RnpFFI `$ffi`, string `$input`, int `$flags`): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`input`
  OpenPGP packets containing key(s) to be loaded. Can be either binary or ASCII armored.
`flags`
  See `RNP_LOAD_SAVE_*` predefined constants.

### Dönen Değerler

JSON string with information about new and updated keys on success başarısızlık durumunda `false` döner.

# rnp_import_signatures

(PECL rnp >= 0.1.1)

rnp_import_signatures — Import standalone signatures to the keyring and receive JSON describing updated keys

### Açıklama

function rnp_import_signatures(RnpFFI `$ffi`, string `$input`, int `$flags`): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`input`
  OpenPGP packets containing signatures to be imported. Can be either binary or ASCII armored.
`flags`
  Currently must be 0.

### Dönen Değerler

JSON string with information about updated keys on success başarısızlık durumunda `false` döner.

# rnp_key_export

(PECL rnp >= 0.1.1)

rnp_key_export — Export a key

### Açıklama

function rnp_key_export(RnpFFI `$ffi`, string `$key_fp`, int `$flags`): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Key fingerprint.
`flags`
  See `RNP_KEY_EXPORT_*` predefined constants (except `RNP_KEY_EXPORT_BASE64`).

### Dönen Değerler

OpenPGP packets of exported key (binary or ASCII-armored) on success başarısızlık durumunda `false` döner.

# rnp_key_export_autocrypt

(PECL rnp >= 0.1.1)

rnp_key_export_autocrypt — Export minimal key for autocrypt feature (just 5 packets: key, uid, signature, encryption subkey, signature)

### Açıklama

function rnp_key_export_autocrypt(
RnpFFI `$ffi`,
string `$key_fp`,
string `$subkey_fp`,
string `$uid`,
int `$flags`
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Primary key fingerprint.
`subkey_fp`
  Subkey to export. Can be an empty string to pick the first suitable subkey.
`uid`
  User ID to export. Can be an empty string if exported key has only one uid.
`flags`
  Only `RNP_KEY_EXPORT_BASE64` is currently supported. Enabling it would export base64-encoded key data instead of binary.

### Dönen Değerler

OpenPGP packets of exported key on success başarısızlık durumunda `false` döner.

# rnp_key_export_revocation

(PECL rnp >= 0.1.1)

rnp_key_export_revocation — Generate and export primary key revocation signature

### Açıklama

function rnp_key_export_revocation(
RnpFFI `$ffi`,
string `$key_fp`,
int `$flags`,
array `$options` = ?
): string|false

Note: to revoke a key you'll need to import this signature into the keystore or use rnp_key_revoke() function.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Key fingerprint of the primary key to be revoked.
`flags`
  `RNP_KEY_EXPORT_ARMORED` or 0.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"hash"` | string | Set hash algorithm used during signature calculation.
  `"code"` | string | Code reason for revocation code. Possible values: 'no', 'superseded', 'compromised', 'retired'. If not defined, then value 'no' will be used by default.
  `"reason"` | string | Textual representation of the reason for revocation.

### Dönen Değerler

Exported revocation signature on success başarısızlık durumunda `false` döner.

# rnp_key_get_info

(PECL rnp >= 0.1.1)

rnp_key_get_info — Get information about the key

### Açıklama

function rnp_key_get_info(RnpFFI `$ffi`, string `$key_fp`): array|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Key fingerprint.

### Dönen Değerler

An associative array with information about the key başarısızlık durumunda `false` döner.

Key | Data type | Açıklama
--- | --- | ---
`"is_primary"` | boolean | `true` if this key is the primary key.
`"is_sub"` | boolean | `true` if this key is a subkey.
`"is_valid"` | boolean | `true` if public key is valid. This includes checks of the self-signatures, expiration times, revocations and so on.
`"is_revoked"` | boolean | `true` if this key is revoked.
`"is_superseded"` | boolean | `true` if this key is superseded. Present only if the key is revoked.
`"is_compromised"` | boolean | `true` if this key is compromised. Present only if the key is revoked.
`"is_retired"` | boolean | `true` if this key is retired. Present only if the key is revoked.
`"is_expired"` | boolean | `true` if this key is expired.
`"have_secret"` | boolean | `true` if this key has secret part.
`"is_locked"` | boolean | `true` if this key is currently locked. Only present for secret keys.
`"is_protected"` | boolean | `true` if this key is protected. Only present for secret keys. A protected key is one that is encrypted and can be safely held in memory and locked/unlocked as needed.
`"have_public"` | boolean | `true` if this key has public part. Generally all keys would have public part.
`"valid_till"` | integer | The timestamp till which key can be considered as valid. Note: this will take into account not only key's expiration, but revocations as well. For the subkey primary key's validity time will be also checked.
`"bits"` | integer | Number of bits in the key. For EC-based keys it will contain size of the curve.
`"alg"` | string | Key algorithm name.
`"subkeys"` | array | An indexed array containing fingerprint strings of subkeys. Only present for primary keys. Could be empty if primary key has no subkeys.
`"uids"` | array | An indexed array containing user ID strings. Only present for primary keys. Could be empty if primary key has no user ID-s.

# rnp_key_remove

(PECL rnp >= 0.1.1)

rnp_key_remove — Remove a key from keyring(s)

### Açıklama

function rnp_key_remove(RnpFFI `$ffi`, string `$key_fp`, int `$flags`): bool

Note: you need to call rnp_save_keys() to write updated keyring(s) out.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Key fingerprint.
`flags`
  See `RNP_KEY_REMOVE_*` constants. Flag `RNP_KEY_REMOVE_SUBKEYS` will work only for the primary key and will remove all of its subkeys as well.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_key_revoke

(PECL rnp >= 0.1.1)

rnp_key_revoke — Revoke a key or subkey by generating and adding revocation signature

### Açıklama

function rnp_key_revoke(
RnpFFI `$ffi`,
string `$key_fp`,
int `$flags`,
array `$options` = ?
): bool

Note: you need to call rnp_save_keys() to write updated keyring(s) out.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`key_fp`
  Key fingerprint.
`flags`
  Currently must be 0.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"hash"` | string | Set hash algorithm used during signature calculation.
  `"code"` | string | Code reason for revocation code. Possible values: 'no', 'superseded', 'compromised', 'retired'. If not defined, then value 'no' will be used by default.
  `"reason"` | string | Textual representation of the reason for revocation.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_list_keys

(PECL rnp >= 0.1.1)

rnp_list_keys — Enumerate all keys present in a keyring by specified identifer type

### Açıklama

function rnp_list_keys(RnpFFI `$ffi`, string `$identifier_type`): array|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`identifier_type`
  Key identifier type ("userid", "keyid", "grip", "fingerprint").

### Dönen Değerler

An associative array where key is an identifier string and value is a PGP key fingerprint başarısızlık durumunda `false` döner.

# rnp_load_keys

(PECL rnp >= 0.1.1)

rnp_load_keys — Load keys from PHP string

### Açıklama

function rnp_load_keys(
RnpFFI `$ffi`,
string `$format`,
string `$input`,
int `$flags`
): bool

Note that for G10, the input must be a directory (which must already exist).

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`format`
  Veri anahtarının biçimi (GPG, KBX, G10).
`input`
  OpenPGP packets containing key(s) to be loaded. Can be either binary or ASCII armored.
`flags`
  RNP_LOAD_SAVE_* seçeneklerinin açıklamalarına bakılabilir.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_load_keys_from_path

(PECL rnp >= 0.1.1)

rnp_load_keys_from_path — Load keys from specified path

### Açıklama

function rnp_load_keys_from_path(
RnpFFI `$ffi`,
string `$format`,
string `$input_path`,
int `$flags`
): bool

Note that for G10, the input must be a directory (which must already exist).

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`format`
  Veri anahtarının biçimi (GPG, KBX, G10).
`input_path`
  file or directory containing the keys.
`flags`
  RNP_LOAD_SAVE_* seçeneklerinin açıklamalarına bakılabilir.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_locate_key

(PECL rnp >= 0.1.1)

rnp_locate_key — Search for the key

### Açıklama

function rnp_locate_key(RnpFFI `$ffi`, string `$identifier_type`, string `$identifier`): string|false

Note: only valid userids are checked while searching by userid.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`identifier_type`
  Identifier type string: "userid", "keyid", "fingerprint", "grip".
`identifier`
  PGP User ID (name and email) for "userid" type, hexadecimal string that represents key id, fingerprint or key grip correspondingly.

### Dönen Değerler

Returns hexadecimal fingerprint of the key found on success başarısızlık durumunda `false` döner.

# rnp_op_encrypt

(PECL rnp >= 0.1.1)

rnp_op_encrypt — Encrypt message

### Açıklama

function rnp_op_encrypt(
RnpFFI `$ffi`,
string `$message`,
array `$recipient_keys_fp`,
array `$options` = ?
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`message`
  Message to be encrypted.
`recipient_keys_fp`
  Array with fingerprints of recipient's keys. At least one key must be present.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"compression_alg"` | string | Compression algorithm. Both `"compression_alg"` and `"compression_level"` must be set in order to enable data compression.
  `"compression_level"` | integer | Compression level, 0-9. 0 disables compression.
  `"armor"` | boolean | Enable ASCII-armored output. Disabled by default.
  `"add_signature"` | boolean | Encrypted message will be also signed.
  `"hash"` | string | Set hash algorithm used during signature calculation. "add_signature" option should be set to `true`
  `"creation_time"` | integer | Set signature creation time in seconds since Jan, 1 1970 UTC. By default current time is used.
  `"expiration_time"` | integer | Set signature expiration time in seconds since the creation time. 0 value is used to mark signature as non-expiring (default value).
  `"password"` | string | Add password which is used to encrypt data.
  `"cipher"` | string | Set symmetric encryption algorithm. Possible values are "IDEA", "TRIPLEDES", "CAST5", "BLOWFISH", "AES128", "AES192", "AES256", "TWOFISH", "CAMELLIA128", "CAMELLIA192", "CAMELLIA256", "SM4".
  `"aead"` | string | Set AEAD mode algorithm. Possible values are "None" to disable AEAD, "EAX", "OCB".
  `"aead_bits"` | integer | Set chunk length for AEAD mode via number of chunk size bits. Must be between 0 to 56.
  `"flags"` | integer | Set additional encryption flags. Supported flags: RNP_ENCRYPT_NOWRAP - do not wrap the data in a literal data packet. This would allow to encrypt already signed data.
  `"file_name"` | string | Set the internally stored file name for the data being encrypted. Special value _CONSOLE may be used to mark message as 'for your eyes only', i.e. it should not be stored anywhere but only displayed to the receiver. Default is the empty string.
  `"file_mtime"` | integer | Set input file modification date in seconds since Jan, 1 1970 UTC.

### Dönen Değerler

Encrypted data on success başarısızlık durumunda `false` döner.

# rnp_op_generate_key

(PECL rnp >= 0.1.1)

rnp_op_generate_key — Generate key

### Açıklama

function rnp_op_generate_key(
RnpFFI `$ffi`,
string `$userid`,
string `$key_alg`,
string `$sub_alg` = ?,
array `$options` = ?
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`userid`
  PGP User ID - text that is intended to represent the name and email address of the key holder.
`key_alg`
  Primary key algorithm (i.e. 'RSA', 'DSA', etc).
`sub_alg`
  Subkey algorithm. If not set, subkey will not be generated.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"bits"` | integer | Primary key size in bits. Applicable only to RSA, DSA and El-Gamal keys.
  `"hash"` | string | Hash algorithm used in self signature or subkey binding signature.
  `"dsa_qbits"` | integer | Set size of a `q` parameter for DSA key. Note: appropriate default value will be set, depending on key bits. However you may override it if needed.
  `"curve"` | string | Set the curve used for ECC key. Note: this is only applicable for ECDSA, ECDH and SM2 keys.
  `"request_password"` | boolean | Enable requesting password via password provider. This password will be used for key encryption. Password provider callback function should be set in advance by calling rnp_ffi_set_pass_provider(). Note: this setting will be ignored if password was set via`"password"`
  `"password"` | string | Set the password used to encrypt the secret key data.
  `"expiration"` | integer | Set the key and subkey expiration time in seconds.
  `"sub_bits"` | integer | Subkey size in bits. Applicable only to RSA, DSA and El-Gamal keys.
  `"sub_hash"` | string | Hash algorithm used in subkey self signature or subkey binding signature.
  `"sub_curve"` | string | Set the curve used for ECC subkey. Note: this is only applicable for ECDSA, ECDH and SM2 keys.

### Dönen Değerler

Fingerprint of the generated primary key başarısızlık durumunda `false` döner. This fingerprint can be used later to reference the key in sign and encrypt operations. The key data is stored in FFI memory context and can be saved using rnp_save_keys() or rnp_save_keys_to_path().

# rnp_op_sign

(PECL rnp >= 0.1.1)

rnp_op_sign — Perform signing operation on a binary data, return embedded signature(s)

### Açıklama

function rnp_op_sign(
RnpFFI `$ffi`,
string `$data`,
array `$keys_fp`,
array `$options` = ?
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`data`
  Data to be signed.
`keys_fp`
  Array with key fingerprints. At least one key must be provided. Keys should be present in `ffi`.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"compression_alg"` | string | Compression algorithm. Both `"compression_alg"` and `"compression_level"` must be set in order to enable data compression.
  `"compression_level"` | integer | Compression level, 0-9. 0 disables compression.
  `"armor"` | boolean | Enable ASCII-armored output. Disabled by default.
  `"hash"` | string | Set hash algorithm used during signature calculation.
  `"creation_time"` | integer | Set signature creation time in seconds since Jan, 1 1970 UTC. By default current time is used.
  `"expiration_time"` | integer | Set signature expiration time in seconds since the creation time. 0 value is used to mark signature as non-expiring (default value).
  `"file_name"` | string | Set input file name.Special value _CONSOLE may be used to mark message as 'for your eyes only', i.e. it should not be stored anywhere but only displayed to the receiver. Default is the empty string.
  `"file_mtime"` | integer | Set input file modification date in seconds since Jan, 1 1970 UTC.

### Dönen Değerler

Data with embedded signature(s) on success başarısızlık durumunda `false` döner.

# rnp_op_sign_cleartext

(PECL rnp >= 0.1.1)

rnp_op_sign_cleartext — Perform signing operation on a textual data, return cleartext signed message

### Açıklama

function rnp_op_sign_cleartext(
RnpFFI `$ffi`,
string `$data`,
array `$keys_fp`,
array `$options` = ?
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`data`
  Data to be signed.
`keys_fp`
  Array with key fingerprints. At least one key must be provided. Keys should be present in `ffi`.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"armor"` | boolean | Enable ASCII-armored output. Disabled by default.
  `"hash"` | string | Set hash algorithm used during signature calculation.
  `"creation_time"` | integer | Set signature creation time in seconds since Jan, 1 1970 UTC. By default current time is used.
  `"expiration_time"` | integer | Set signature expiration time in seconds since the creation time. 0 value is used to mark signature as non-expiring (default value).

### Dönen Değerler

Cleartext signed message containing source data with additional headers and ASCII-armored signature on success başarısızlık durumunda `false` döner.

# rnp_op_sign_detached

(PECL rnp >= 0.1.1)

rnp_op_sign_detached — Perform signing operation, return detached signature(s)

### Açıklama

function rnp_op_sign_detached(
RnpFFI `$ffi`,
string `$data`,
array `$keys_fp`,
array `$options` = ?
): string|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`data`
  Data to be signed.
`keys_fp`
  Array with key fingerprints. At least one key must be provided. Keys should be present in `ffi`.
`options`
  An associative array with options.

  Key | Data type | Açıklama
  --- | --- | ---
  `"armor"` | boolean | Enable ASCII-armored output. Disabled by default.
  `"hash"` | string | Set hash algorithm used during signature calculation.
  `"creation_time"` | integer | Set signature creation time in seconds since Jan, 1 1970 UTC. By default current time is used.
  `"expiration_time"` | integer | Set signature expiration time in seconds since the creation time. 0 value is used to mark signature as non-expiring (default value).

### Dönen Değerler

Detached signature(s) data on success başarısızlık durumunda `false` döner.

# rnp_op_verify

(PECL rnp >= 0.1.1)

rnp_op_verify — Verify embedded or cleartext signatures

### Açıklama

function rnp_op_verify(RnpFFI `$ffi`, string `$data`): array|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`data`
  Signed data.

### Dönen Değerler

An associative array with information about verification results başarısızlık durumunda `false` döner.

Key | Data type | Açıklama
--- | --- | ---
`"verification_status"` | string | Overall verification result, either "Success" string or appropriate error message. "Success" result is set when at least one signature is valid and successfully verified. Individual verification results for each signature can be checked in the "signatures" array.
`"file_name"` | string | File name.
`"file_mtime"` | integer | File modification time.
`"mode"` | string | Data protection (encryption) mode used in processed message. Currently defined values are "none", "cfb", "cfb-mdc", "aead-ocb", "aead-eax".
`"cipher"` | string | Symmetric cipher used for data encryption.
`"valid_integrity"` | boolean | `true` if message integrity protection was used (i.e. MDC or AEAD) and it was validated successfully.
`"signatures"` | array | An associative array describing each signature found. See description below.

"signatures" sub-array.

Key | Data type | Açıklama
--- | --- | ---
"verification_status" | string | Signature verification status, either "Success" string or appropriate error message.
"creation_time" | integer | Signature creation time in seconds since Jan, 1 1970 UTC.
"expiration_time" | integer | Signature expiration time in seconds since the creation time or 0 if signature never expires.
"hash" | string | Hash function algorithm used to calculate the signature.
"signing_key" | string | Fingerprint of the key used for signing. Could be "Not found" if corresponding public key is not loaded to the FFI object.
"signature_type" | string | Signature type. Currently defined values are: 'binary', 'text', 'standalone', 'certification (generic)', 'certification (persona)', 'certification (casual)', 'certification (positive)', 'subkey binding', 'primary key binding', 'direct', 'key revocation', 'subkey revocation', 'certification revocation', 'timestamp', 'uknown: 0..255'.

# rnp_op_verify_detached

(PECL rnp >= 0.1.1)

rnp_op_verify_detached — Verify detached signatures

### Açıklama

function rnp_op_verify_detached(RnpFFI `$ffi`, string `$data`, string `$signature`): array|false

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`data`
  Source data.
`signature`
  Detached signature data.

### Dönen Değerler

An associative array with information about verification results başarısızlık durumunda `false` döner.

Key | Data type | Açıklama
--- | --- | ---
`"verification_status"` | string | Overall verification result, either "Success" string or appropriate error message. "Success" result is set when at least one signature is valid and successfully verified. Individual verification results for each signature can be checked in the "signatures" array.
`"file_name"` | string | File name.
`"file_mtime"` | integer | File modification time.
`"mode"` | string | Data protection (encryption) mode used in processed message. Currently defined values are "none", "cfb", "cfb-mdc", "aead-ocb", "aead-eax".
`"cipher"` | string | Symmetric cipher used for data encryption.
`"valid_integrity"` | boolean | `true` if message integrity protection was used (i.e. MDC or AEAD) and it was validated successfully.
`"signatures"` | array | An associative array describing each signature found. See description below.

"signatures" sub-array.

Key | Data type | Açıklama
--- | --- | ---
"verification_status" | string | Signature verification status, either "Success" string or appropriate error message.
"creation_time" | integer | Signature creation time in seconds since Jan, 1 1970 UTC.
"expiration_time" | integer | Signature expiration time in seconds since the creation time or 0 if signature never expires.
"hash" | string | Hash function algorithm used to calculate the signature.
"signing_key" | string | Fingerprint of the key used for signing. Could be "Not found" if corresponding public key is not loaded to the FFI object.
"signature_type" | string | Signature type. Currently defined values are: 'binary', 'text', 'standalone', 'certification (generic)', 'certification (persona)', 'certification (casual)', 'certification (positive)', 'subkey binding', 'primary key binding', 'direct', 'key revocation', 'subkey revocation', 'certification revocation', 'timestamp', 'uknown: 0..255'.

# rnp_save_keys

(PECL rnp >= 0.1.1)

rnp_save_keys — Save keys to PHP string

### Açıklama

function rnp_save_keys(
RnpFFI `$ffi`,
string `$format`,
string `&$output`,
int `$flags`
): bool

Note that for G10, the output must be a directory (which must already exist).

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`format`
  Veri anahtarının biçimi (GPG, KBX, G10).
`output`
  key packets will be saved to the string referenced by `output`.
`flags`
  RNP_LOAD_SAVE_* seçeneklerinin açıklamalarına bakılabilir.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_save_keys_to_path

(PECL rnp >= 0.1.1)

rnp_save_keys_to_path — Save keys to specified path

### Açıklama

function rnp_save_keys_to_path(
RnpFFI `$ffi`,
string `$format`,
string `$output_path`,
int `$flags`
): bool

Saves keys present in the FFI object (loaded or generated) to the specified file or directory.

### Bağımsız Değişkenler

`ffi`
  rnp_ffi_create tarafından döndürülen FFI nesnesi.
`format`
  Veri anahtarının biçimi (GPG, KBX, G10).
`output_path`
  File or directory path where keys should be saved to.
`flags`
  RNP_LOAD_SAVE_* seçeneklerinin açıklamalarına bakılabilir.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

# rnp_supported_features

(PECL rnp >= 0.1.1)

rnp_supported_features — Get supported features in JSON format

### Açıklama

function rnp_supported_features(string `$type`): string|false

Get the JSON formatted string containing array of supported rnp feature values (algorithms, curves, etc) by type.

### Bağımsız Değişkenler

`type`
  See RNP_FEATURE_* constants for supported values.

### Dönen Değerler

String containing JSON formatted array of supported algorithms, curves, etc başarısızlık durumunda `false` döner.

# rnp_version_string

(PECL rnp >= 0.1.1)

rnp_version_string — RNP library version

### Açıklama

function rnp_version_string(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns RNP library version string.

# rnp_version_string_full

(PECL rnp >= 0.1.1)

rnp_version_string_full — Full version string of RNP library

### Açıklama

function rnp_version_string_full(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns full version string of RNP library.

## İçindekiler

- rnp_backend_string — Return cryptographic backend library name
- rnp_backend_version — Return cryptographic backend library version
- rnp_decrypt — Decrypt PGP message
- rnp_dump_packets — Dump OpenPGP packets stream information in humand-readable format
- rnp_dump_packets_to_json — Dump OpenPGP packets stream information to the JSON string
- rnp_ffi_create — Create the top-level object used for interacting with the library
- rnp_ffi_destroy — Destroy the top-level object used for interacting with the library
- rnp_ffi_set_pass_provider — Set password provider callback function
- rnp_import_keys — Import keys from PHP string to the keyring and receive JSON describing new/updated keys
- rnp_import_signatures — Import standalone signatures to the keyring and receive JSON describing updated keys
- rnp_key_export — Export a key
- rnp_key_export_autocrypt — Export minimal key for autocrypt feature (just 5 packets: key, uid, signature, encryption subkey, signature)
- rnp_key_export_revocation — Generate and export primary key revocation signature
- rnp_key_get_info — Get information about the key
- rnp_key_remove — Remove a key from keyring(s)
- rnp_key_revoke — Revoke a key or subkey by generating and adding revocation signature
- rnp_list_keys — Enumerate all keys present in a keyring by specified identifer type
- rnp_load_keys — Load keys from PHP string
- rnp_load_keys_from_path — Load keys from specified path
- rnp_locate_key — Search for the key
- rnp_op_encrypt — Encrypt message
- rnp_op_generate_key — Generate key
- rnp_op_sign — Perform signing operation on a binary data, return embedded signature(s)
- rnp_op_sign_cleartext — Perform signing operation on a textual data, return cleartext signed message
- rnp_op_sign_detached — Perform signing operation, return detached signature(s)
- rnp_op_verify — Verify embedded or cleartext signatures
- rnp_op_verify_detached — Verify detached signatures
- rnp_save_keys — Save keys to PHP string
- rnp_save_keys_to_path — Save keys to specified path
- rnp_supported_features — Get supported features in JSON format
- rnp_version_string — RNP library version
- rnp_version_string_full — Full version string of RNP library

# The RnpFFI class

(PECL rnp >= 0.1.1)

## Giriş

## Sınıf Sözdizimi

class RnpFFI {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Örnekler
  - Clearsign text
- Rnp İşlevleri
  - rnp_backend_string — Return cryptographic backend library name
  - rnp_backend_version — Return cryptographic backend library version
  - rnp_decrypt — Decrypt PGP message
  - rnp_dump_packets — Dump OpenPGP packets stream information in humand-readable format
  - rnp_dump_packets_to_json — Dump OpenPGP packets stream information to the JSON string
  - rnp_ffi_create — Create the top-level object used for interacting with the library
  - rnp_ffi_destroy — Destroy the top-level object used for interacting with the library
  - rnp_ffi_set_pass_provider — Set password provider callback function
  - rnp_import_keys — Import keys from PHP string to the keyring and receive JSON describing new/updated keys
  - rnp_import_signatures — Import standalone signatures to the keyring and receive JSON describing updated keys
  - rnp_key_export — Export a key
  - rnp_key_export_autocrypt — Export minimal key for autocrypt feature (just 5 packets: key, uid, signature, encryption subkey, signature)
  - rnp_key_export_revocation — Generate and export primary key revocation signature
  - rnp_key_get_info — Get information about the key
  - rnp_key_remove — Remove a key from keyring(s)
  - rnp_key_revoke — Revoke a key or subkey by generating and adding revocation signature
  - rnp_list_keys — Enumerate all keys present in a keyring by specified identifer type
  - rnp_load_keys — Load keys from PHP string
  - rnp_load_keys_from_path — Load keys from specified path
  - rnp_locate_key — Search for the key
  - rnp_op_encrypt — Encrypt message
  - rnp_op_generate_key — Generate key
  - rnp_op_sign — Perform signing operation on a binary data, return embedded signature(s)
  - rnp_op_sign_cleartext — Perform signing operation on a textual data, return cleartext signed message
  - rnp_op_sign_detached — Perform signing operation, return detached signature(s)
  - rnp_op_verify — Verify embedded or cleartext signatures
  - rnp_op_verify_detached — Verify detached signatures
  - rnp_save_keys — Save keys to PHP string
  - rnp_save_keys_to_path — Save keys to specified path
  - rnp_supported_features — Get supported features in JSON format
  - rnp_version_string — RNP library version
  - rnp_version_string_full — Full version string of RNP library
- RnpFFI — The RnpFFI class

# Sodium

# Giriş

Sodium is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more. Its goal is to provide all of the core operations needed to build higher-level cryptographic tools.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

This extension requires » libsodium ≥ 1.0.8.

## Kurulum

As of PHP 7.2.0 this extension is bundled with PHP. For older PHP versions this extension is available via PECL.

## Linux Systems

In order to use this extension you must compile PHP with sodium support by using the --with-sodium[=DIR] configure option.

## Windows

In order to use this extension you have to add `extension=php_sodium.dll` to php.ini.

## Installation via PECL

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/libsodium

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`SODIUM_LIBRARY_VERSION` (string)
`SODIUM_LIBRARY_MAJOR_VERSION` (int)
`SODIUM_LIBRARY_MINOR_VERSION` (int)
`SODIUM_BASE64_VARIANT_ORIGINAL` (int)
`SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING` (int)
`SODIUM_BASE64_VARIANT_URLSAFE` (int)
`SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING` (int)
`SODIUM_CRYPTO_AEAD_AEGIS128L_KEYBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS128L_NSECBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS128L_NPUBBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS128L_ABYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS256_NSECBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AEGIS256_ABYTES` (int)
  Available as of PHP 8.4.0.
`SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES` (int)
`SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES` (int)
`SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES` (int)
`SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES` (int)
`SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES` (int)
`SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES` (int)
`SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES` (int)
`SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES` (int)
`SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES` (int)
`SODIUM_CRYPTO_AUTH_BYTES` (int)
`SODIUM_CRYPTO_AUTH_KEYBYTES` (int)
`SODIUM_CRYPTO_BOX_SEALBYTES` (int)
`SODIUM_CRYPTO_BOX_SECRETKEYBYTES` (int)
`SODIUM_CRYPTO_BOX_PUBLICKEYBYTES` (int)
`SODIUM_CRYPTO_BOX_KEYPAIRBYTES` (int)
`SODIUM_CRYPTO_BOX_MACBYTES` (int)
`SODIUM_CRYPTO_BOX_NONCEBYTES` (int)
`SODIUM_CRYPTO_BOX_SEEDBYTES` (int)
`SODIUM_CRYPTO_KDF_BYTES_MIN` (int)
`SODIUM_CRYPTO_KDF_BYTES_MAX` (int)
`SODIUM_CRYPTO_KDF_CONTEXTBYTES` (int)
`SODIUM_CRYPTO_KDF_KEYBYTES` (int)
`SODIUM_CRYPTO_KX_SEEDBYTES` (int)
`SODIUM_CRYPTO_KX_SESSIONKEYBYTES` (int)
`SODIUM_CRYPTO_KX_PUBLICKEYBYTES` (int)
`SODIUM_CRYPTO_KX_SECRETKEYBYTES` (int)
`SODIUM_CRYPTO_KX_KEYPAIRBYTES` (int)
`SODIUM_CRYPTO_GENERICHASH_BYTES` (int)
`SODIUM_CRYPTO_GENERICHASH_BYTES_MIN` (int)
`SODIUM_CRYPTO_GENERICHASH_BYTES_MAX` (int)
`SODIUM_CRYPTO_GENERICHASH_KEYBYTES` (int)
`SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN` (int)
`SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX` (int)
`SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13` (int)
`SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13` (int)
`SODIUM_CRYPTO_PWHASH_ALG_DEFAULT` (int)
`SODIUM_CRYPTO_PWHASH_SALTBYTES` (int)
`SODIUM_CRYPTO_PWHASH_STRPREFIX` (string)
`SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE` (int)
`SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE` (int)
`SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE` (int)
`SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE` (int)
`SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE` (int)
`SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE` (int)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES` (int)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX` (string)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE` (int)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE` (int)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE` (int)
`SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE` (int)
`SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_SCALARMULT_BYTES` (int)
`SODIUM_CRYPTO_SCALARMULT_SCALARBYTES` (int)
`SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_SHORTHASH_BYTES` (int)
`SODIUM_CRYPTO_SHORTHASH_KEYBYTES` (int)
`SODIUM_CRYPTO_SECRETBOX_KEYBYTES` (int)
`SODIUM_CRYPTO_SECRETBOX_MACBYTES` (int)
`SODIUM_CRYPTO_SECRETBOX_NONCEBYTES` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH` (int)
`SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY` (int)
`SODIUM_CRYPTO_SIGN_BYTES` (int)
`SODIUM_CRYPTO_SIGN_SEEDBYTES` (int)
`SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES` (int)
`SODIUM_CRYPTO_SIGN_SECRETKEYBYTES` (int)
`SODIUM_CRYPTO_SIGN_KEYPAIRBYTES` (int)
`SODIUM_CRYPTO_STREAM_NONCEBYTES` (int)
`SODIUM_CRYPTO_STREAM_KEYBYTES` (int)
`SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES` (int)
  Available as of PHP 8.1.0.
`SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES` (int)
  Available as of PHP 8.1.0.

# Sodium İşlevleri

# sodium_add

(PHP 7 >= 7.2.0, PHP 8)

sodium_add — Add large numbers

### Açıklama

function sodium_add(string `&$string1`, string `$string2`): void

This adds the parameter `string2` to `string1`, overwriting the value stored in `string1`. This function assumes both parameters are binary strings that represent unsigned integers in little-endian byte order.

### Bağımsız Değişkenler

`string1`
  String representing an arbitrary-length unsigned integer in little-endian byte order. This parameter is passed by reference and will hold the sum of the two parameters.
`string2`
  String representing an arbitrary-length unsigned integer in little-endian byte order.

### Dönen Değerler

Hiçbir değer dönmez.

# sodium_base642bin

(PHP 7 >= 7.2.0, PHP 8)

sodium_base642bin — Decodes a base64-encoded string into raw binary.

### Açıklama

function sodium_base642bin(#[\SensitiveParameter]string `$string`, int `$id`, string `$ignore` = ""): string

Converts a base64 encoded string into raw binary. Unlike base64_decode(), sodium_base642bin() is constant-time (a property that is important for any code that touches cryptographic inputs, such as plaintexts or keys) and supports multiple character sets.

### Bağımsız Değişkenler

`string`
  string; Encoded string.
`id`
  - `SODIUM_BASE64_VARIANT_ORIGINAL` for standard (`A-Za-z0-9/\+`) Base64 encoding.
  - `SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING` for standard (`A-Za-z0-9/\+`) Base64 encoding, without `=` padding characters.
  - `SODIUM_BASE64_VARIANT_URLSAFE` for URL-safe (`A-Za-z0-9\-_`) Base64 encoding.
  - `SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING` for URL-safe (`A-Za-z0-9\-_`) Base64 encoding, without `=` padding characters.
`ignore`
  Characters to ignore when decoding (e.g. whitespace characters).

### Dönen Değerler

Decoded string.

# sodium_bin2base64

(PHP 7 >= 7.2.0, PHP 8)

sodium_bin2base64 — Encodes a raw binary string with base64.

### Açıklama

function sodium_bin2base64(#[\SensitiveParameter]string `$string`, int `$id`): string

Converts a raw binary string into a base64-encoded string. Unlike base64_encode(), sodium_bin2base64() is constant-time (a property that is important for any code that touches cryptographic inputs, such as plaintexts or keys) and supports multiple character sets.

### Bağımsız Değişkenler

`string`
  Raw binary string.
`id`
  - `SODIUM_BASE64_VARIANT_ORIGINAL` for standard (`A-Za-z0-9/\+`) Base64 encoding.
  - `SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING` for standard (`A-Za-z0-9/\+`) Base64 encoding, without `=` padding characters.
  - `SODIUM_BASE64_VARIANT_URLSAFE` for URL-safe (`A-Za-z0-9\-_`) Base64 encoding.
  - `SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING` for URL-safe (`A-Za-z0-9\-_`) Base64 encoding, without `=` padding characters.

### Dönen Değerler

Base64-encoded string.

# sodium_bin2hex

(PHP 7 >= 7.2.0, PHP 8)

sodium_bin2hex — Encode to hexadecimal

### Açıklama

function sodium_bin2hex(#[\SensitiveParameter]string `$string`): string

Converts a raw binary string into a hex-encoded string. Unlike the standard hex-encoding function, sodium_bin2hex() is constant-time (a property that is important for any code that touches cryptographic inputs, such as plaintexts or keys).

### Bağımsız Değişkenler

`string`
  Raw binary string.

### Dönen Değerler

Hex encoded string.

# sodium_compare

(PHP 7 >= 7.2.0, PHP 8)

sodium_compare — Compare large numbers

### Açıklama

function sodium_compare(#[\SensitiveParameter]string `$string1`, #[\SensitiveParameter]string `$string2`): int

Compare two strings as if they were arbitrary-length, unsigned little-endian integers, without side-channel leakage.

### Bağımsız Değişkenler

`string1`
  Left operand
`string2`
  Right operand

### Dönen Değerler

Returns `-1` if `string1` is less than `string2`.

Returns `1` if `string1` is greater than `string2`.

Returns `0` if both strings are equal.

# sodium_crypto_aead_aegis128l_decrypt

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis128l_decrypt — Verify then decrypt a message with AEGIS-128L

### Açıklama

function sodium_crypto_aead_aegis128l_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt a message with AEGIS-128L.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_aegis128l_encrypt().
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message.
`key`
  Encryption key (128-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis128l_encrypt() - Encrypt then authenticate a message with AEGIS-128L
- sodium_crypto_aead_aegis128l_keygen() - Generate a random AEGIS-128L key

# sodium_crypto_aead_aegis128l_encrypt

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis128l_encrypt — Encrypt then authenticate a message with AEGIS-128L

### Açıklama

function sodium_crypto_aead_aegis128l_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate a message with AEGIS-128L.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message.
`key`
  Encryption key (128-bit).

### Dönen Değerler

Returns the ciphertext and authentication tag as a string of raw binary bytes.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis128l_decrypt() - Verify then decrypt a message with AEGIS-128L
- sodium_crypto_aead_aegis128l_keygen() - Generate a random AEGIS-128L key

# sodium_crypto_aead_aegis128l_keygen

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis128l_keygen — Generate a random AEGIS-128L key

### Açıklama

function sodium_crypto_aead_aegis128l_keygen(): string

Generate a random key for use with sodium_crypto_aead_aegis128l_encrypt() and sodium_crypto_aead_aegis128l_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 128-bit random key.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis128l_decrypt() - Verify then decrypt a message with AEGIS-128L
- sodium_crypto_aead_aegis128l_encrypt() - Encrypt then authenticate a message with AEGIS-128L

# sodium_crypto_aead_aegis256_decrypt

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis256_decrypt — Verify then decrypt a message with AEGIS-256

### Açıklama

function sodium_crypto_aead_aegis256_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt a message with AEGIS-256.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_aegis256_encrypt().
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis256_encrypt() - Encrypt then authenticate a message with AEGIS-256
- sodium_crypto_aead_aegis256_keygen() - Generate a random AEGIS-256 key

# sodium_crypto_aead_aegis256_encrypt

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis256_encrypt — Encrypt then authenticate a message with AEGIS-256

### Açıklama

function sodium_crypto_aead_aegis256_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate a message with AEGIS-256.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the ciphertext and authentication tag as a string of raw binary bytes.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis256_decrypt() - Verify then decrypt a message with AEGIS-256
- sodium_crypto_aead_aegis256_keygen() - Generate a random AEGIS-256 key

# sodium_crypto_aead_aegis256_keygen

(PHP 8 >= 8.4.0)

sodium_crypto_aead_aegis256_keygen — Generate a random AEGIS-256 key

### Açıklama

function sodium_crypto_aead_aegis256_keygen(): string

Generate a random key for use with sodium_crypto_aead_aegis256_encrypt() and sodium_crypto_aead_aegis256_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

### Ayrıca Bakınız

- sodium_crypto_aead_aegis256_decrypt() - Verify then decrypt a message with AEGIS-256
- sodium_crypto_aead_aegis256_encrypt() - Encrypt then authenticate a message with AEGIS-256

# sodium_crypto_aead_aes256gcm_decrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_aes256gcm_decrypt — Verify then decrypt a message with AES-256-GCM

### Açıklama

function sodium_crypto_aead_aes256gcm_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt with AES-256-GCM. Only available if sodium_crypto_aead_aes256gcm_is_available() returns `true`.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_aes256gcm_encrypt() (ciphertext and tag, concatenated).
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 12 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_aes256gcm_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_aes256gcm_encrypt — Encrypt then authenticate with AES-256-GCM

### Açıklama

function sodium_crypto_aead_aes256gcm_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate with AES-256-GCM. Only available if sodium_crypto_aead_aes256gcm_is_available() returns `true`.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 12 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the ciphertext and authentication tag as a string of raw binary bytes. (Format: ciphertext, then tag.)

# sodium_crypto_aead_aes256gcm_is_available

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_aes256gcm_is_available — Check if hardware supports AES256-GCM

### Açıklama

function sodium_crypto_aead_aes256gcm_is_available(): bool

The return value of this function depends on whether or not the hardware supports hardware-accelerated AES.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if it is safe to encrypt with AES-256-GCM, and `false` otherwise.

# sodium_crypto_aead_aes256gcm_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_aes256gcm_keygen — Generate a random AES-256-GCM key

### Açıklama

function sodium_crypto_aead_aes256gcm_keygen(): string

Generate a random key for use with sodium_crypto_aead_aes256gcm_encrypt() and sodium_crypto_aead_aes256gcm_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

# sodium_crypto_aead_chacha20poly1305_decrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_decrypt — Verify then decrypt with ChaCha20-Poly1305

### Açıklama

function sodium_crypto_aead_chacha20poly1305_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt with ChaCha20-Poly1305.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_chacha20poly1305_encrypt() (ciphertext and tag, concatenated).
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 8 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_chacha20poly1305_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_encrypt — Encrypt then authenticate with ChaCha20-Poly1305

### Açıklama

function sodium_crypto_aead_chacha20poly1305_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate with ChaCha20-Poly1305.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 8 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the ciphertext and tag on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_chacha20poly1305_ietf_decrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_decrypt — Verify that the ciphertext includes a valid tag

### Açıklama

function sodium_crypto_aead_chacha20poly1305_ietf_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt with ChaCha20-Poly1305 (IETF variant).

The IETF variant uses 96-bit nonces and 32-bit internal counters, instead of 64-bit for both.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_chacha20poly1305_ietf_encrypt() (ciphertext and tag, concatenated).
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 12 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_chacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_encrypt — Encrypt a message

### Açıklama

function sodium_crypto_aead_chacha20poly1305_ietf_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate with ChaCha20-Poly1305 (IETF variant).

The IETF variant uses 96-bit nonces and 32-bit internal counters, instead of 64-bit for both.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 12 bytes long.
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the ciphertext and tag on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_chacha20poly1305_ietf_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_ietf_keygen — Generate a random ChaCha20-Poly1305 (IETF) key.

### Açıklama

function sodium_crypto_aead_chacha20poly1305_ietf_keygen(): string

Generate a random key for use with sodium_crypto_aead_chacha20poly1305_ietf_encrypt() and sodium_crypto_aead_chacha20poly1305_ietf_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

# sodium_crypto_aead_chacha20poly1305_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_chacha20poly1305_keygen — Generate a random ChaCha20-Poly1305 key.

### Açıklama

function sodium_crypto_aead_chacha20poly1305_keygen(): string

Generate a random key for use with sodium_crypto_aead_chacha20poly1305_encrypt() and sodium_crypto_aead_chacha20poly1305_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

# sodium_crypto_aead_xchacha20poly1305_ietf_decrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_xchacha20poly1305_ietf_decrypt — (Preferred) Verify then decrypt with XChaCha20-Poly1305

### Açıklama

function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt(
string `$ciphertext`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string|false

Verify then decrypt with ChaCha20-Poly1305 (eXtended-nonce variant).

Generally, XChaCha20-Poly1305 is the best of the provided AEAD modes to use.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_aead_xchacha20poly1305_ietf_encrypt() (ciphertext and tag, concatenated).
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the plaintext on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_xchacha20poly1305_ietf_encrypt

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_xchacha20poly1305_ietf_encrypt — (Preferred) Encrypt then authenticate with XChaCha20-Poly1305

### Açıklama

function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(
#[\SensitiveParameter]string `$message`,
string `$additional_data`,
string `$nonce`,
#[\SensitiveParameter]string `$key`
): string

Encrypt then authenticate with XChaCha20-Poly1305 (eXtended-nonce variant).

Generally, XChaCha20-Poly1305 is the best of the provided AEAD modes to use.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`additional_data`
  Additional, authenticated data. This is used in the verification of the authentication tag appended to the ciphertext, but it is not encrypted or stored in the ciphertext.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the ciphertext and tag on success, başarısızlık durumunda `false` döner.

# sodium_crypto_aead_xchacha20poly1305_ietf_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_aead_xchacha20poly1305_ietf_keygen — Generate a random XChaCha20-Poly1305 key.

### Açıklama

function sodium_crypto_aead_xchacha20poly1305_ietf_keygen(): string

Generate a random key for use with sodium_crypto_aead_xchacha20poly1305_ietf_encrypt() and sodium_crypto_aead_xchacha20poly1305_ietf_decrypt().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

# sodium_crypto_auth

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_auth — Compute a tag for the message

### Açıklama

function sodium_crypto_auth(string `$message`, #[\SensitiveParameter]string `$key`): string

Symmetric message authentication via sodium_crypto_auth() provides integrity, but not confidentiality.

Unlike with digital signatures (e.g. sodium_crypto_sign_detached()), any party capable of verifying a message is also capable of authenticating their own messages. (Hence, symmetric authentication.)

### Bağımsız Değişkenler

`message`
  The message you intend to authenticate
`key`
  Authentication key

### Dönen Değerler

Authentication tag

# sodium_crypto_auth_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_auth_keygen — Generate a random key for sodium_crypto_auth

### Açıklama

function sodium_crypto_auth_keygen(): string

Generate a key for use with sodium_crypto_auth() and sodium_crypto_auth_verify().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 256-bit random key.

# sodium_crypto_auth_verify

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_auth_verify — Verifies that the tag is valid for the message

### Açıklama

function sodium_crypto_auth_verify(string `$mac`, string `$message`, #[\SensitiveParameter]string `$key`): bool

Verify the authentication tag is valid for a given message and key.

Unlike with digital signatures (e.g. sodium_crypto_sign_verify_detached()), any party capable of verifying a message is also capable of authenticating their own messages. (Hence, symmetric authentication.)

### Bağımsız Değişkenler

`mac`
  Authentication tag produced by sodium_crypto_auth()
`message`
  Message
`key`
  Authentication key

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# sodium_crypto_box

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box — Authenticated public-key encryption

### Açıklama

function sodium_crypto_box(#[\SensitiveParameter]string `$message`, string `$nonce`, #[\SensitiveParameter]string `$key_pair`): string

Encrypt a message using asymmetric (public key) cryptography.

The algorithm used by functions prefixed with sodium_crypto_box() are Elliptic Curve Diffie-Hellman over the Montgomery curve, Curve25519; usually abbreviated as X25519.

### Bağımsız Değişkenler

`message`
  The message to be encrypted.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key_pair`
  See sodium_crypto_box_keypair_from_secretkey_and_publickey(). This should include the sender's X25519 secret key and the recipient's X25519 public key.

### Dönen Değerler

Returns the encrypted message (ciphertext plus authentication tag). The ciphertext will be 16 bytes longer than the plaintext, and a raw binary string. See sodium_bin2base64() for safe encoding for storage.

# sodium_crypto_box_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_keypair — Randomly generate a secret key and a corresponding public key

### Açıklama

function sodium_crypto_box_keypair(): string

Generates a secret key and a public key as one string.

To get the secret key out of this unified keypair string, see sodium_crypto_box_secretkey(). To get the public key out of this unified keypair string, see sodium_crypto_box_publickey().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

One string containing both the X25519 secret key and corresponding X25519 public key.

# sodium_crypto_box_keypair_from_secretkey_and_publickey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_keypair_from_secretkey_and_publickey — Create a unified keypair string from a secret key and public key

### Açıklama

function sodium_crypto_box_keypair_from_secretkey_and_publickey(#[\SensitiveParameter]string `$secret_key`, string `$public_key`): string

This function exists to satisfy the API requirements of e.g. crypto_box(). Pass in one party's secret key and the other's public key, and you will obtain a "keypair" for your conversation.

### Bağımsız Değişkenler

`secret_key`
  Secret key.
`public_key`
  Public key.

### Dönen Değerler

X25519 Keypair.

# sodium_crypto_box_open

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_open — Authenticated public-key decryption

### Açıklama

function sodium_crypto_box_open(string `$ciphertext`, string `$nonce`, #[\SensitiveParameter]string `$key_pair`): string|false

Decrypt a message using asymmetric (public key) cryptography.

### Bağımsız Değişkenler

`ciphertext`
  The encrypted message to attempt to decrypt.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key_pair`
  See sodium_crypto_box_keypair_from_secretkey_and_publickey(). This should include the sender's public key and the recipient's secret key.

### Dönen Değerler

Returns the plaintext message on success, başarısızlık durumunda `false` döner.

# sodium_crypto_box_publickey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_publickey — Extract the public key from a crypto_box keypair

### Açıklama

function sodium_crypto_box_publickey(#[\SensitiveParameter]string `$key_pair`): string

Given a keypair, fetch only the public key.

### Bağımsız Değişkenler

`key_pair`
  A keypair, such as one generated by sodium_crypto_box_keypair() or sodium_crypto_box_seed_keypair()

### Dönen Değerler

X25519 public key.

# sodium_crypto_box_publickey_from_secretkey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_publickey_from_secretkey — Calculate the public key from a secret key

### Açıklama

function sodium_crypto_box_publickey_from_secretkey(#[\SensitiveParameter]string `$secret_key`): string

Given a secret key, calculate the corresponding public key.

This only works with the type of keys intended for use with crypto_box() (which uses Elliptic Curve Diffie-Hellman over the Montgomery curve, Curve25519; abbreviated as X25519), not crypto_sign() (which uses Edwards Digital Signature Algorithm over the Edwards Curve with the corresponding parameters; abbreviated Ed25519).

### Bağımsız Değişkenler

`secret_key`
  X25519 secret key

### Dönen Değerler

X25519 public key.

# sodium_crypto_box_seal

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_seal — Anonymous public-key encryption

### Açıklama

function sodium_crypto_box_seal(#[\SensitiveParameter]string `$message`, string `$public_key`): string

Encrypt a message such that only the recipient can decrypt it.

Unlike with sodium_crypto_box(), you only need to know the recipient's public key to use sodium_crypto_box_seal(). One consequence of this convenience, however, is that the ciphertext isn't bound to a static public key, and is therefore not authenticated. Hence, anonymous public-key encryption.

sodium_crypto_box_seal() still provides ciphertext integrity. Just not sender identity authentication.

If you also need sender authentication, the sodium_crypto_sign() functions are likely the best place to start.

### Bağımsız Değişkenler

`message`
  The message to encrypt.
`public_key`
  The public key that corresponds to the only key that can decrypt the message.

### Dönen Değerler

A ciphertext string in the format of (one-time public key, encrypted message, authentication tag).

### Örnekler

Örnek 1 sodium_crypto_box_seal() example

    <?php
    $keypair = sodium_crypto_box_keypair();
    $public_key = sodium_crypto_box_publickey($keypair);

    // Obfuscated plaintext to make the example more fun
    $plaintext_b64 = "V3JpdGluZyBzb2Z0d2FyZSBpbiBQSFAgY2FuIGJlIGEgZGVsaWdodCE=";
    $decoded_plaintext = sodium_base642bin($plaintext_b64, SODIUM_BASE64_VARIANT_ORIGINAL);

    $sealed = sodium_crypto_box_seal($decoded_plaintext, $public_key);
    var_dump(base64_encode($sealed));

    $opened = sodium_crypto_box_seal_open($sealed, $keypair);
    var_dump($opened);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(120) "oRBXXAV4iQBrxlV4A21Bord8Yo/D8ZlrIIGNyaRCcGBfpz0map52I3xq6l+CST+1NSgQkbV+HiYyFjXWiWiaCGupGf+zl4bgWj/A9Adtem7Jt3h3emrMsLw="
    string(41) "Writing software in PHP can be a delight!"

# sodium_crypto_box_seal_open

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_seal_open — Anonymous public-key decryption

### Açıklama

function sodium_crypto_box_seal_open(string `$ciphertext`, #[\SensitiveParameter]string `$key_pair`): string|false

Decrypt a message that was encrypted with sodium_crypto_box_seal()

### Bağımsız Değişkenler

`ciphertext`
  The encrypted message
`key_pair`
  The keypair of the recipient. Must include the secret key.

### Dönen Değerler

The plaintext on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sodium_crypto_box_seal_open() example

    <?php
    // Ciphertext is not sensitive; base64_decode is fine
    $sealed_b64 = "oRBXXAV4iQBrxlV4A21Bord8Yo/D8ZlrIIGNyaRCcGBfpz0map52I3xq6l+CST+1NSgQkbV+HiYyFjXWiWiaCGupGf+zl4bgWj/A9Adtem7Jt3h3emrMsLw=";
    $sealed = base64_decode($sealed_b64);

    // Keypair contains a cryptographic secret; use a timing-safe decoder
    $keypair_b64 = "KZkF8wnB7bnC2aXB3lFOqCTc0Z6MllvaQb9ASVG8o2/MsewkuE4u1uaEgTzSakeiYyIW8DGj+02/L3cWIbs9bQ==";
    $keypair = sodium_base642bin($keypair_b64, SODIUM_BASE64_VARIANT_ORIGINAL);

    $opened = sodium_crypto_box_seal_open($sealed, $keypair);
    var_dump($opened);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(41) "Writing software in PHP can be a delight!"

# sodium_crypto_box_secretkey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_secretkey — Extracts the secret key from a crypto_box keypair

### Açıklama

function sodium_crypto_box_secretkey(#[\SensitiveParameter]string `$key_pair`): string

Given a keypair, fetch only the secret key.

### Bağımsız Değişkenler

`key_pair`
  A keypair, such as one generated by sodium_crypto_box_keypair() or sodium_crypto_box_seed_keypair()

### Dönen Değerler

X25519 secret key.

# sodium_crypto_box_seed_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box_seed_keypair — Deterministically derive the key pair from a single key

### Açıklama

function sodium_crypto_box_seed_keypair(#[\SensitiveParameter]string `$seed`): string

Clamps the seed to form a secret key, derives the public key, and returns the two as a keypair.

The `*_seed_keypair` functions are ideal for generating a keypair from a password and salt. Use the result as a `seed` to generate the desired keys.

### Bağımsız Değişkenler

`seed`
  Some cryptographic input. Must be 32 bytes.

### Dönen Değerler

X25519 Keypair (secret key and public key).

# sodium_crypto_core_ristretto255_add

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_add — Adds an element

### Açıklama

function sodium_crypto_core_ristretto255_add(string `$p`, string `$q`): string

Adds an element `q` to `p`. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`p`
  An element.
`q`
  An element.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_add() example

    <?php

    $foo = sodium_crypto_core_ristretto255_random();
    $bar = sodium_crypto_core_ristretto255_random();

    $value = sodium_crypto_core_ristretto255_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_random() - Generates a random key
- sodium_crypto_core_ristretto255_sub() - Subtracts an element

# sodium_crypto_core_ristretto255_from_hash

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_from_hash — Maps a vector

### Açıklama

function sodium_crypto_core_ristretto255_from_hash(string `$s`): string

Maps a 64-bytes vector `s` to a group element. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  A 64-bytes vector.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_from_hash() example

    <?php

    $hashes = sodium_hex2bin(
        '5d1be09e3d0c82fc538112490e35701979d99e06ca3e2b5b54bffe8b4dc772c1' .
        '4d98b696a1bbfb5ca32c436cc61c16563790306c79eaca7705668b47dffe5bb6'
    );
    var_dump(sodium_bin2hex(sodium_crypto_core_ristretto255_from_hash($hashes)));
    ?>

Yukarıdaki örneğin çıktısı:

    string(64) "3066f82a1a747d45120d1740f14358531a8f04bbffe6a819f86dfe50f44a0a46"

### Ayrıca Bakınız

- sodium_hex2bin() - Decodes a hexadecimally encoded binary string
- sodium_bin2hex() - Encode to hexadecimal
- sodium_crypto_core_ristretto255_from_hash()

# sodium_crypto_core_ristretto255_is_valid_point

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_is_valid_point — Determines if a point on the ristretto255 curve

### Açıklama

function sodium_crypto_core_ristretto255_is_valid_point(string `$s`): bool

Determines if a point on the ristretto255 curve, in canonical form, on the main subgroup, and that the point doesn't have a small order. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  An Elliptic-curve point.

### Dönen Değerler

Returns `true` if `s` is on the ristretto255 curve, `false` otherwise.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_is_valid_point() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();
    $bar = sodium_crypto_scalarmult_ristretto255_base($foo);

    var_dump(sodium_crypto_core_ristretto255_is_valid_point($bar));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key
- sodium_crypto_scalarmult_ristretto255_base() - Calculates the public key from a secret key

# sodium_crypto_core_ristretto255_random

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_random — Generates a random key

### Açıklama

function sodium_crypto_core_ristretto255_random(): string

Generates a random key. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_random() example

    <?php

    $foo = sodium_crypto_core_ristretto255_random();
    $bar = sodium_crypto_core_ristretto255_random();

    $value = sodium_crypto_core_ristretto255_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_add() - Adds an element
- sodium_crypto_core_ristretto255_sub() - Subtracts an element

# sodium_crypto_core_ristretto255_scalar_add

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_add — Adds a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_add(string `$x`, string `$y`): string

Adds an element `y` to `x`. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`x`
  Scalar, representing the X coordinate.
`y`
  Scalar, representing the Y coordinate.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_scalar_add() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();
    $bar = sodium_crypto_core_ristretto255_scalar_random();

    $value = sodium_crypto_core_ristretto255_scalar_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_scalar_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key
- sodium_crypto_core_ristretto255_scalar_sub() - Subtracts a scalar value

# sodium_crypto_core_ristretto255_scalar_complement

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_complement — The sodium_crypto_core_ristretto255_scalar_complement purpose

### Açıklama

function sodium_crypto_core_ristretto255_scalar_complement(string `$s`): string

Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  Scalar value.

### Dönen Değerler

Returns a 32-byte random string.

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key

# sodium_crypto_core_ristretto255_scalar_invert

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_invert — Inverts a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_invert(string `$s`): string

Inverts a scalar value. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  Scalar value.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_scalar_invert() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();

    $inverted = sodium_crypto_core_ristretto255_scalar_invert($foo);
    $reInverted = sodium_crypto_core_ristretto255_scalar_invert($inverted);

    var_dump(hash_equals($foo, $reInverted));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key

# sodium_crypto_core_ristretto255_scalar_mul

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_mul — Multiplies a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_mul(string `$x`, string `$y`): string

Multiplies a scalar value. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`x`
  Scalar, representing the X coordinate.
`y`
  Scalar, representing the Y coordinate.

### Dönen Değerler

Returns a 32-byte random string.

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key

# sodium_crypto_core_ristretto255_scalar_negate

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_negate — Negates a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_negate(string `$s`): string

Negates a scalar value. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  Scalar value.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_scalar_negate() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();

    $negate = sodium_crypto_core_ristretto255_scalar_negate($foo);
    $reNegate = sodium_crypto_core_ristretto255_scalar_negate($negate);

    var_dump(hash_equals($foo, $reNegate));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key

# sodium_crypto_core_ristretto255_scalar_random

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_random — Generates a random key

### Açıklama

function sodium_crypto_core_ristretto255_scalar_random(): string

Generates a random key. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_scalar_random() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();
    $bar = sodium_crypto_core_ristretto255_scalar_random();

    $value = sodium_crypto_core_ristretto255_scalar_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_scalar_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_add() - Adds a scalar value
- sodium_crypto_core_ristretto255_scalar_sub() - Subtracts a scalar value

# sodium_crypto_core_ristretto255_scalar_reduce

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_reduce — Reduces a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_reduce(string `$s`): string

Reduces a scalar value. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`s`
  Scalar value.

### Dönen Değerler

Returns a 32-byte random string.

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key

# sodium_crypto_core_ristretto255_scalar_sub

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_scalar_sub — Subtracts a scalar value

### Açıklama

function sodium_crypto_core_ristretto255_scalar_sub(string `$x`, string `$y`): string

Subtracts a scalar `y` from `x`. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`x`
  Scalar, representing the X coordinate.
`y`
  Scalar, representing the Y coordinate.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_scalar_sub() example

    <?php

    $foo = sodium_crypto_core_ristretto255_scalar_random();
    $bar = sodium_crypto_core_ristretto255_scalar_random();

    $value = sodium_crypto_core_ristretto255_scalar_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_scalar_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_scalar_random() - Generates a random key
- sodium_crypto_core_ristretto255_scalar_add() - Adds a scalar value

# sodium_crypto_core_ristretto255_sub

(PHP 8 >= 8.1.0)

sodium_crypto_core_ristretto255_sub — Subtracts an element

### Açıklama

function sodium_crypto_core_ristretto255_sub(string `$p`, string `$q`): string

Subtracts an element `q` from `p`. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`p`
  An element.
`q`
  An element.

### Dönen Değerler

Returns a 32-byte random string.

### Örnekler

Örnek 1 sodium_crypto_core_ristretto255_sub() example

    <?php

    $foo = sodium_crypto_core_ristretto255_random();
    $bar = sodium_crypto_core_ristretto255_random();

    $value = sodium_crypto_core_ristretto255_add($foo, $bar);
    $value = sodium_crypto_core_ristretto255_sub($value, $bar);

    var_dump(hash_equals($foo, $value));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_crypto_core_ristretto255_random() - Generates a random key
- sodium_crypto_core_ristretto255_add() - Adds an element

# sodium_crypto_generichash

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_generichash — Get a hash of the message

### Açıklama

function sodium_crypto_generichash(string `$message`, #[\SensitiveParameter]string `$key` = "", int `$length` = `SODIUM_CRYPTO_GENERICHASH_BYTES`): string

Hash a message with BLAKE2b.

### Bağımsız Değişkenler

`message`
  The message being hashed.
`key`
  (Optional) cryptographic key. This serves the same function as a HMAC key, but it's utilized as a reserved section of the internal BLAKE2 state.
`length`
  Output size.

### Dönen Değerler

The cryptographic hash as raw bytes. If a hex-encoded output is desired, the result can be passed to sodium_bin2hex().

# sodium_crypto_generichash_final

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_generichash_final — Complete the hash

### Açıklama

function sodium_crypto_generichash_final(string `&$state`, int `$length` = `SODIUM_CRYPTO_GENERICHASH_BYTES`): string

The finalization method for the streaming generichash API.

### Bağımsız Değişkenler

`state`
  Hash state returned from sodium_crypto_generichash_init()
`length`
  Output length.

### Dönen Değerler

Cryptographic hash.

### Örnekler

Örnek 1 sodium_crypto_generichash_final() example

    <?php
    $messages = [random_bytes(32), random_bytes(32), random_bytes(16)];
    $state = sodium_crypto_generichash_init('', 32);
    foreach ($messages as $message) {
        sodium_crypto_generichash_update($state, $message);
    }

    $final = sodium_crypto_generichash_final($state, 32);
    var_dump(sodium_bin2hex($final));

    $allAtOnce = sodium_crypto_generichash(implode('', $messages));
    var_dump(sodium_bin2hex($allAtOnce));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"
    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"

# sodium_crypto_generichash_init

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_generichash_init — Initialize a hash for streaming

### Açıklama

function sodium_crypto_generichash_init(#[\SensitiveParameter]string `$key` = "", int `$length` = `SODIUM_CRYPTO_GENERICHASH_BYTES`): string

The initialization method for the streaming generichash API.

### Bağımsız Değişkenler

`key`
  The generichash key.
`length`
  The expected output length of the hash function.

### Dönen Değerler

Returns a hash state, serialized as a raw binary string.

### Örnekler

Örnek 1 sodium_crypto_generichash_init() example

    <?php
    $messages = [random_bytes(32), random_bytes(32), random_bytes(16)];
    $state = sodium_crypto_generichash_init('', 32);
    foreach ($messages as $message) {
        sodium_crypto_generichash_update($state, $message);
    }
    $final = sodium_crypto_generichash_final($state, 32);
    var_dump(sodium_bin2hex($final));
    $allAtOnce = sodium_crypto_generichash(implode('', $messages));
    var_dump(sodium_bin2hex($allAtOnce));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"
    string(64) "a2939a9163cb7c796ec28e01028489e72475c136b2697ea59e3e760ab4a8ab20"

# sodium_crypto_generichash_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_generichash_keygen — Generate a random generichash key

### Açıklama

function sodium_crypto_generichash_keygen(): string

Generate a random key for use with the generichash API.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A random 256-bit key.

# sodium_crypto_generichash_update

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_generichash_update — Add message to a hash

### Açıklama

function sodium_crypto_generichash_update(string `&$state`, string `$message`): true

Appends a message to the internal hash state.

### Bağımsız Değişkenler

`state`
  The return value of sodium_crypto_generichash_init().
`message`
  Data to append to the hashing state.

### Dönen Değerler

Daima `true` döndürür.

### Örnekler

Örnek 1 sodium_crypto_generichash_update() example

    <?php
    $messages = [random_bytes(32), random_bytes(32), random_bytes(16)];
    $state = sodium_crypto_generichash_init();
    foreach ($messages as $message) {
        sodium_crypto_generichash_update($state, $message);
    }
    $final = sodium_crypto_generichash_final($state);
    var_dump(sodium_bin2hex($final));

    $allAtOnce = sodium_crypto_generichash(implode('', $messages));
    var_dump(sodium_bin2hex($allAtOnce));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(64) "e16e28bbbbcc39d9f5b1cbc33c41f1d217808640103e57a41f24870f79831e04"
    string(64) "e16e28bbbbcc39d9f5b1cbc33c41f1d217808640103e57a41f24870f79831e04"

# sodium_crypto_kdf_derive_from_key

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kdf_derive_from_key — Derive a subkey

### Açıklama

function sodium_crypto_kdf_derive_from_key(
int `$subkey_length`,
int `$subkey_id`,
string `$context`,
#[\SensitiveParameter]string `$key`
): string

Derive a subkey from a root key and additional context.

Similar to hash_hkdf().

### Bağımsız Değişkenler

`subkey_length`
  Length of the key to return (in bytes)
`subkey_id`
  Return the Nth subkey from a given root key. Useful for seeking.
`context`
  Application-specific context.
`key`
  The root key from which the subkey is derived.

### Dönen Değerler

A string of pseudorandom (raw binary) bytes.

# sodium_crypto_kdf_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kdf_keygen — Generate a random root key for the KDF interface

### Açıklama

function sodium_crypto_kdf_keygen(): string

Generates a random key suitable for serving as the root key for sodium_crypto_kdf_derive_from_key().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A random 256-bit key.

# sodium_crypto_kx_client_session_keys

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_client_session_keys — Calculate the client-side session keys.

### Açıklama

function sodium_crypto_kx_client_session_keys(#[\SensitiveParameter]string `$client_key_pair`, string `$server_key`): array

Calculate the client-side session keys, using the X25519 + BLAKE2b key-exchange method.

### Bağımsız Değişkenler

`client_key_pair`
  A crypto_kx keypair, such as one generated by sodium_crypto_kx_keypair().
`server_key`
  A crypto_kx public key.

### Dönen Değerler

An array consisting of two strings. The first should be used for receiving data from the server. The second should be used for sending data to the server.

# sodium_crypto_kx_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_keypair — Creates a new sodium keypair

### Açıklama

function sodium_crypto_kx_keypair(): string

Create a new sodium keypair consisting of the secret key (32 bytes) followed by the public key (32 bytes). The keys can be retrieved by calling sodium_crypto_kx_secretkey() and sodium_crypto_kx_publickey(), respectively.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the new keypair on success; throws an exception otherwise.

### Örnekler

Örnek 1 sodium_crypto_kx_keypair() usage

Create a new keypair and retrieve the secret and the public key from it.

    <?php
    $keypair = sodium_crypto_kx_keypair();
    $secret = sodium_crypto_kx_secretkey($keypair);
    $public = sodium_crypto_kx_publickey($keypair);
    printf("secret: %s\npublic: %s", sodium_bin2hex($secret), sodium_bin2hex($public));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    secret: e7c5c918fdc40762e6000542c0118f4368ce8fd242b0e48c1e17202797a25daf
    public: d1f59fda8652caf40ed1a01d2b6f3802b60846986372cd8fa337b7c12c428b18

# sodium_crypto_kx_publickey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_publickey — Extract the public key from a crypto_kx keypair

### Açıklama

function sodium_crypto_kx_publickey(#[\SensitiveParameter]string `$key_pair`): string

Extract the public key from a crypto_kx keypair.

### Bağımsız Değişkenler

`key_pair`
  X25519 keypair, such as one generated by sodium_crypto_kx_keypair().

### Dönen Değerler

X25519 public key.

# sodium_crypto_kx_secretkey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_secretkey — Extract the secret key from a crypto_kx keypair.

### Açıklama

function sodium_crypto_kx_secretkey(#[\SensitiveParameter]string `$key_pair`): string

Extract the secret key from a crypto_kx keypair.

### Bağımsız Değişkenler

`key_pair`
  X25519 keypair, such as one generated by sodium_crypto_kx_keypair().

### Dönen Değerler

X25519 secret key.

# sodium_crypto_kx_seed_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_seed_keypair — Description

### Açıklama

function sodium_crypto_kx_seed_keypair(#[\SensitiveParameter]string `$seed`): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`seed`

### Dönen Değerler

# sodium_crypto_kx_server_session_keys

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_kx_server_session_keys — Calculate the server-side session keys.

### Açıklama

function sodium_crypto_kx_server_session_keys(#[\SensitiveParameter]string `$server_key_pair`, string `$client_key`): array

Calculate the server-side session keys, using the X25519 + BLAKE2b key-exchange method.

### Bağımsız Değişkenler

`server_key_pair`
  A crypto_kx keypair, such as one generated by sodium_crypto_kx_keypair().
`client_key`
  A crypto_kx public key.

### Dönen Değerler

An array consisting of two strings. The first should be used for receiving data from the client. The second should be used for sending data to the client.

# sodium_crypto_pwhash

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash — Derive a key from a password, using Argon2

### Açıklama

function sodium_crypto_pwhash(
int `$length`,
#[\SensitiveParameter]string `$password`,
string `$salt`,
int `$opslimit`,
int `$memlimit`,
int `$algo` = `SODIUM_CRYPTO_PWHASH_ALG_DEFAULT`
): string

This function provides low-level access to libsodium's crypto_pwhash key derivation function. Unless you have specific reason to use this function, you should use sodium_crypto_pwhash_str() or password_hash() functions instead.

A common reason to use this particular function is to derive the seeds for cryptographic keys from a password and salt, and then use these seeds to generate the actual keys needed for some purpose (e.g. sodium_crypto_sign_detached()).

### Bağımsız Değişkenler

`length`
  int; The length of the password hash to generate, in bytes.
`password`
  string; The password to generate a hash for.
`salt`
  A salt to add to the password before hashing. The salt should be unpredictable, ideally generated from a good random number source such as random_bytes(), and have a length of exactly `SODIUM_CRYPTO_PWHASH_SALTBYTES` bytes.
`opslimit`
  Represents a maximum amount of computations to perform. Raising this number will make the function require more CPU cycles to compute a key. There are some constants available to set the operations limit to appropriate values depending on intended use, in order of strength: `SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE`, `SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE` and `SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE`.
`memlimit`
  The maximum amount of RAM that the function will use, in bytes. There are constants to help you choose an appropriate value, in order of size: `SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE`, `SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE`, and `SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE`. Typically these should be paired with the matching `opslimit` values.
`algo`
  int A number indicating the hash algorithm to use. By default `SODIUM_CRYPTO_PWHASH_ALG_DEFAULT` (the currently recommended algorithm, which can change from one version of libsodium to another), or explicitly using `SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13`, representing the Argon2id algorithm version 1.3.

### Dönen Değerler

Returns the derived key. The return value is a binary string of the hash, not an ASCII-encoded representation, and does not contain additional information about the parameters used to create the hash, so you will need to keep that information if you are ever going to verify the password in future. Use sodium_crypto_pwhash_str() to avoid needing to do all that.

### Örnekler

Örnek 1 sodium_crypto_pwhash() example

    <?php
    //Need to keep the salt if we're ever going to be able to check this password
    $salt = random_bytes(SODIUM_CRYPTO_PWHASH_SALTBYTES);
    //Using bin2hex to keep output readable
    echo bin2hex(
        sodium_crypto_pwhash(
            16, // == 128 bits
            'password',
            $salt,
            SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
            SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE,
            SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13
        )
    );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    a18f346ba57992eb7e4ae6abf3fd30ee

# sodium_crypto_pwhash_scryptsalsa208sha256

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_scryptsalsa208sha256 — Derives a key from a password, using scrypt

### Açıklama

function sodium_crypto_pwhash_scryptsalsa208sha256(
int `$length`,
#[\SensitiveParameter]string `$password`,
string `$salt`,
int `$opslimit`,
int `$memlimit`
): string

This is the scrypt counterpart to sodium_crypto_pwhash().

A common reason to use this particular function is to derive the seeds for cryptographic keys from a password and salt, and then use these seeds to generate the actual keys needed for some purpose (e.g. sodium_crypto_sign_detached()).

### Bağımsız Değişkenler

`length`
  The length of the password hash to generate, in bytes.
`password`
  The password to generate a hash for.
`salt`
  A salt to add to the password before hashing. The salt should be unpredictable, ideally generated from a good random number source such as random_bytes(), and have a length of at least `SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES` bytes.
`opslimit`
  Represents a maximum amount of computations to perform. Raising this number will make the function require more CPU cycles to compute a key. There are some constants available to set the operations limit to appropriate values depending on intended use, in order of strength: `SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE` and `SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE`.
`memlimit`
  The maximum amount of RAM that the function will use, in bytes. There are constants to help you choose an appropriate value, in order of size: `SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE` and `SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE`. Typically these should be paired with the matching `opslimit` values.

### Dönen Değerler

A string of bytes of the desired length.

# sodium_crypto_pwhash_scryptsalsa208sha256_str

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_scryptsalsa208sha256_str — Get an ASCII encoded hash

### Açıklama

function sodium_crypto_pwhash_scryptsalsa208sha256_str(#[\SensitiveParameter]string `$password`, int `$opslimit`, int `$memlimit`): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`password`
`opslimit`
`memlimit`

### Dönen Değerler

# sodium_crypto_pwhash_scryptsalsa208sha256_str_verify

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_scryptsalsa208sha256_str_verify — Verify that the password is a valid password verification string

### Açıklama

function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify(string `$hash`, #[\SensitiveParameter]string `$password`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`hash`
`password`

### Dönen Değerler

# sodium_crypto_pwhash_str

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_str — Get an ASCII-encoded hash

### Açıklama

function sodium_crypto_pwhash_str(#[\SensitiveParameter]string `$password`, int `$opslimit`, int `$memlimit`): string

Uses a CPU- and memory-hard hash algorithm along with a randomly-generated salt, and memory and CPU limits to generate an ASCII-encoded hash suitable for password storage.

### Bağımsız Değişkenler

`password`
  string; The password to generate a hash for.
`opslimit`
  Represents a maximum amount of computations to perform. Raising this number will make the function require more CPU cycles to compute a key. There are constants available to set the operations limit to appropriate values depending on intended use, in order of strength: `SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE`, `SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE` and `SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE`.
`memlimit`
  The maximum amount of RAM that the function will use, in bytes. There are constants to help you choose an appropriate value, in order of size: `SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE`, `SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE`, and `SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE`. Typically these should be paired with the matching opslimit values.

### Dönen Değerler

Returns the hashed password.

In order to produce the same password hash from the same password, the same values for `opslimit` and `memlimit` must be used. These are embedded within the generated hash, so everything that's needed to verify the hash is included. This allows the sodium_crypto_pwhash_str_verify() function to verify the hash without needing separate storage for the other parameters.

### Örnekler

Örnek 1 sodium_crypto_pwhash_str() example

    <?php
    $password = 'password';
    echo sodium_crypto_pwhash_str(
        $password,
        SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
        SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
    );

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    $argon2id$v=19$m=65536,t=2,p=1$oWIfdaXwWwhVmovOBc2NAQ$EbsZ+JnZyyavkafS0hoc4HdaOB0ILWZESAZ7kVGa+Iw

### Notlar

> Bilginize: Hashes are calculated using the Argon2ID algorithm, providing resistance to both GPU and side-channel attacks. In contrast to the password_hash() function, there is no salt parameter (a salt is generated automatically), and the `opslimit` and `memlimit` parameters are not optional.

### Ayrıca Bakınız

- sodium_crypto_pwhash_str_verify() - Verifies that a password matches a hash
- sodium_crypto_pwhash() - Derive a key from a password, using Argon2
- password_hash() - Parola aşı oluşturur
- password_verify() - Parola ile aş eşleşmesini doğrular
- » Libsodium Argon2 docs

# sodium_crypto_pwhash_str_needs_rehash

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_str_needs_rehash — Determine whether or not to rehash a password

### Açıklama

function sodium_crypto_pwhash_str_needs_rehash(string `$password`, int `$opslimit`, int `$memlimit`): bool

Determine whether or not to rehash a password, based on the current hash `opslimit` and `memlimit`.

### Bağımsız Değişkenler

`password`
  Password hash
`opslimit`
  Configured opslimit; see sodium_crypto_pwhash_str()
`memlimit`
  Configured memlimit; see sodium_crypto_pwhash_str()

### Dönen Değerler

Returns `true` if the provided memlimit/opslimit do not match what's stored in the hash. Returns `false` if they match.

# sodium_crypto_pwhash_str_verify

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_pwhash_str_verify — Verifies that a password matches a hash

### Açıklama

function sodium_crypto_pwhash_str_verify(string `$hash`, #[\SensitiveParameter]string `$password`): bool

Checks that a password hash created using sodium_crypto_pwhash_str() matches a given plain-text password. Note that the parameters are in the opposite order to the same parameters in the similar password_verify() function.

### Bağımsız Değişkenler

`hash`
  password_hash() işleviyle oluşturulan aş.
`password`
  Kullanıcı parolası.

### Dönen Değerler

Returns `true` if the password and hash match, or `false` otherwise.

### Notlar

> Bilginize: Hashes are calculated using the Argon2ID algorithm, providing resistance to both GPU and side-channel attacks.

### Ayrıca Bakınız

- sodium_crypto_pwhash_str() - Get an ASCII-encoded hash
- password_hash() - Parola aşı oluşturur
- password_verify() - Parola ile aş eşleşmesini doğrular

# sodium_crypto_scalarmult

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_scalarmult — Compute a shared secret given a user's secret key and another user's public key

### Açıklama

function sodium_crypto_scalarmult(string `$n`, string `$p`): string

Elliptic Curve Diffie-Hellman. Calculates scalar n times point p, on an elliptic curve.

### Bağımsız Değişkenler

`n`
  scalar, which is typically a secret key
`p`
  point (x-coordinate), which is typically a public key

### Dönen Değerler

A 32-byte random string.

# sodium_crypto_scalarmult_base

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_scalarmult_base — Takma Adı: sodium_crypto_box_publickey_from_secretkey()

### Açıklama

Bu işlev şu işlevin takma adıdır: sodium_crypto_box_publickey_from_secretkey().

# sodium_crypto_scalarmult_ristretto255

(PHP 8 >= 8.1.1)

sodium_crypto_scalarmult_ristretto255 — Computes a shared secret

### Açıklama

function sodium_crypto_scalarmult_ristretto255(string `$n`, string `$p`): string

Calculates scalar `n` times point `p`. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`n`
  A scalar, which is typically a secret key.
`p`
  A point (x-coordinate), which is typically a public key.

### Dönen Değerler

Returns a 32-byte random string.

### Ayrıca Bakınız

- sodium_crypto_scalarmult_ristretto255_base() - Calculates the public key from a secret key

# sodium_crypto_scalarmult_ristretto255_base

(PHP 8 >= 8.1.1)

sodium_crypto_scalarmult_ristretto255_base — Calculates the public key from a secret key

### Açıklama

function sodium_crypto_scalarmult_ristretto255_base(string `$n`): string

Given a secret key, calculates the corresponding public key. Available as of libsodium 1.0.18.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`n`
  A secret key.

### Dönen Değerler

Returns a 32-byte random string.

### Ayrıca Bakınız

- sodium_crypto_scalarmult_ristretto255() - Computes a shared secret

# sodium_crypto_secretbox

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretbox — Authenticated shared-key encryption

### Açıklama

function sodium_crypto_secretbox(#[\SensitiveParameter]string `$message`, string `$nonce`, #[\SensitiveParameter]string `$key`): string

Encrypt a message with a symmetric (shared) key.

### Bağımsız Değişkenler

`message`
  The plaintext message to encrypt.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

Returns the encrypted string.

### Hatalar/İstisnalar

- If `nonce` has a length of bytes different than `SODIUM_CRYPTO_SECRETBOX_NONCEBYTES` (24 bytes), a SodiumException will be thrown.
- If `key` has a length of bytes different than `SODIUM_CRYPTO_SECRETBOX_KEYBYTES` (32 bytes), a SodiumException will be thrown.
- Throws a SodiumException on failure.

### Örnekler

Örnek 1 sodium_crypto_secretbox() example

    <?php
    // The $key must be kept confidential
    $key = sodium_crypto_secretbox_keygen();
    // Do not reuse $nonce with the same key
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $plaintext = "message to be encrypted";
    $ciphertext = sodium_crypto_secretbox($plaintext, $nonce, $key);

    var_dump(bin2hex($ciphertext));
    // The same nonce and key are required to decrypt the $ciphertext
    var_dump(sodium_crypto_secretbox_open($ciphertext, $nonce, $key));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(78) "3a1fa3e9f7b72ef8be51d40abf8e296c6899c185d07b18b4c93e7f26aa776d24c50852cd6b1076"
    string(23) "message to be encrypted"

### Ayrıca Bakınız

- sodium_crypto_secretbox_open() - Authenticated shared-key decryption
- sodium_crypto_secretbox_keygen() - Generate random key for sodium_crypto_secretbox
- random_bytes() - Get cryptographically secure random bytes

# sodium_crypto_secretbox_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretbox_keygen — Generate random key for sodium_crypto_secretbox

### Açıklama

function sodium_crypto_secretbox_keygen(): string

Generate a key for use with sodium_crypto_secretbox() and sodium_crypto_secretbox_open().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the generated string of cryptographically secure random bytes.

### Örnekler

Örnek 1 sodium_crypto_secretbox_keygen() example

    <?php
    $key = sodium_crypto_secretbox_keygen();
    var_dump( sodium_bin2hex( $key ) );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(64) "88bd1dc51ec81984f3ddc5a8f59a3d95b647e2da3e879f1b9ceb0abd89e7286c"

Örnek 2 Comparing sodium_crypto_secretbox_keygen() with random_bytes()

    <?php
    $key = sodium_crypto_secretbox_keygen();
    $bytes = random_bytes( SODIUM_CRYPTO_SECRETBOX_KEYBYTES );
    var_dump( mb_strlen( $key, '8bit' ) === mb_strlen( $bytes, '8bit' ) );
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- sodium_bin2hex() - Encode to hexadecimal
- random_bytes() - Get cryptographically secure random bytes

# sodium_crypto_secretbox_open

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretbox_open — Authenticated shared-key decryption

### Açıklama

function sodium_crypto_secretbox_open(string `$ciphertext`, string `$nonce`, #[\SensitiveParameter]string `$key`): string|false

Decrypt an encrypted message with a symmetric (shared) key.

### Bağımsız Değişkenler

`ciphertext`
  Must be in the format provided by sodium_crypto_secretbox() (ciphertext and tag, concatenated).
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

The decrypted string on success başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

- If `nonce` has a length of bytes different than `SODIUM_CRYPTO_SECRETBOX_NONCEBYTES` (24 bytes), a SodiumException will be thrown.
- If `key` has a length of bytes different than `SODIUM_CRYPTO_SECRETBOX_KEYBYTES` (32 bytes), a SodiumException will be thrown.

### Örnekler

Örnek 1 sodium_crypto_secretbox_open() example

    <?php
    // The $key must be kept confidential
    $key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
    // Do not reuse $nonce with the same key
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $ciphertext = sodium_crypto_secretbox('message to be encrypted', $nonce, $key);

    // The same nonce and key are required to decrypt the $ciphertext
    $plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
    if ($plaintext !== false) {
        echo $plaintext . PHP_EOL;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    message to be encrypted

### Ayrıca Bakınız

- sodium_crypto_secretbox() - Authenticated shared-key encryption
- sodium_crypto_secretbox_keygen() - Generate random key for sodium_crypto_secretbox
- random_bytes() - Get cryptographically secure random bytes

# sodium_crypto_secretstream_xchacha20poly1305_init_pull

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_init_pull — Initialize a secretstream context for decryption

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_init_pull(string `$header`, #[\SensitiveParameter]string `$key`): string

Initialize a secretstream context for decryption.

### Bağımsız Değişkenler

`header`
  The header of the secretstream. This should be one of the values produced by sodium_crypto_secretstream_xchacha20poly1305_init_push().
`key`
  Encryption key (256-bit).

### Dönen Değerler

Secretstream state.

### Örnekler

Örnek 1 sodium_crypto_secretstream_xchacha20poly1305_init_pull() example

    <?php
    function decrypt_file(string $inputFilePath, string $outputFilePath, string $key): void
    {
        $inputFile = fopen($inputFilePath, 'rb');
        $outputFile = fopen($outputFilePath, 'wb');
        $header = fread($inputFile, 24);

        $state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
        $inputFileSize = fstat($inputFile)['size'];

        // Decrypt the file and write its contents to the output file:
        for ($i = 24; $i < $inputFileSize; $i += 8192) {
            $ctxt_chunk = fread($inputFile, 8192);

            // We're not using $tag, but in real protocols you can use this on encrypt to e.g.
            // trigger a re-key or indicate the end of file. Then, on decrypt, you can assert
            // this behavior.
            [$ptxt_chunk, $tag] = sodium_crypto_secretstream_xchacha20poly1305_pull($state, $ctxt_chunk);
            fwrite($outputFile, $ptxt_chunk);
        }

        sodium_memzero($state);
        fclose($inputFile);
        fclose($outputFile);
    }

    // sodium_crypto_secretstream_xchacha20poly1305_keygen()
    $key = sodium_base642bin('MS0lzb7HC+thY6jY01pkTE/cwsQxnRq0/2L1eL4Hxn8=', SODIUM_BASE64_VARIANT_ORIGINAL);

    $example = sodium_hex2bin('971e33b255f0990ef3931caf761c59136efa77b434832f28ec719e3ff73f5aec38b3bba1574ab5b70a8844d8da36a668e802cfea2c');
    file_put_contents('hello.enc', $example);
    decrypt_file('hello.enc', 'hello.txt.decrypted', $key);
    var_dump(file_get_contents('hello.txt.decrypted'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(12) "Hello world!"

# sodium_crypto_secretstream_xchacha20poly1305_init_push

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_init_push — Initialize a secretstream context for encryption

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_init_push(#[\SensitiveParameter]string `$key`): array

Initialize a secretstream context for encryption.

### Bağımsız Değişkenler

`key`
  Cryptography key. See sodium_crypto_secretstream_xchacha20poly1305_keygen().

### Dönen Değerler

An array with two string values:

- The secretstream state, needed for further pushes
- The secretstream header, which needs to be provided to the recipient so they can pull data

### Örnekler

Örnek 1 sodium_crypto_secretstream_xchacha20poly1305_init_push() example

    <?php
    function encrypt_file(string $inputFilePath, string $outputFilePath, string $key): void
    {
        [$state, $header] = sodium_crypto_secretstream_xchacha20poly1305_init_push($key);

        $inputFile = fopen($inputFilePath, 'rb');
        $outputFile = fopen($outputFilePath, 'wb');
        // Write the header:
        fwrite($outputFile, $header);
        $inputFileSize = fstat($inputFile)['size'];

        // Encrypt the file and write its contents to the output file:
        for ($i = 0; $i < $inputFileSize; $i += 8175) {
            $ptxt_chunk = fread($inputFile, 8175);
            $ctxt_chunk = sodium_crypto_secretstream_xchacha20poly1305_push($state, $ptxt_chunk);
            fwrite($outputFile, $ctxt_chunk);
        }

        sodium_memzero($state);
        fclose($inputFile);
        fclose($outputFile);
    }

    // sodium_crypto_secretstream_xchacha20poly1305_keygen()
    $key = sodium_base642bin('MS0lzb7HC+thY6jY01pkTE/cwsQxnRq0/2L1eL4Hxn8=', SODIUM_BASE64_VARIANT_ORIGINAL);

    file_put_contents('hello.txt', 'Hello world!');
    encrypt_file('hello.txt', 'hello.txt.encrypted', $key);
    var_dump(sodium_bin2hex(file_get_contents('hello.txt.encrypted')));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(106) "971e33b255f0990ef3931caf761c59136efa77b434832f28ec719e3ff73f5aec38b3bba1574ab5b70a8844d8da36a668e802cfea2c"

# sodium_crypto_secretstream_xchacha20poly1305_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_keygen — Generate a random secretstream key.

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_keygen(): string

Generate a random secretstream key.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string of random bytes.

# sodium_crypto_secretstream_xchacha20poly1305_pull

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_pull — Decrypt a chunk of data from an encrypted stream

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_pull(string `&$state`, string `$ciphertext`, string `$additional_data` = ""): array|false

Decrypt a chunk of data from an encrypted stream.

### Bağımsız Değişkenler

`state`
  See sodium_crypto_secretstream_xchacha20poly1305_init_pull() and sodium_crypto_secretstream_xchacha20poly1305_init_push()
`ciphertext`
  The ciphertext chunk to decrypt.
`additional_data`
  Optional additional data to include in the authentication tag.

### Dönen Değerler

An array with two values:

- string; The decrypted chunk

- int; An optional tag (if provided during push). Possible values:

  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE`: the most common tag, that doesn't add any information about the nature of the message.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL`: indicates that the message marks the end of the stream, and erases the secret key used to encrypt the previous sequence.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH`: indicates that the message marks the end of a set of messages, but not the end of the stream. For example, a huge JSON string sent as multiple chunks can use this tag to indicate to the application that the string is complete and that it can be decoded. But the stream itself is not closed, and more data may follow.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY`: "forget" the key used to encrypt this message and the previous ones, and derive a new secret key.

# sodium_crypto_secretstream_xchacha20poly1305_push

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_push — Encrypt a chunk of data so that it can safely be decrypted in a streaming API

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_push(
string `&$state`,
#[\SensitiveParameter]string `$message`,
string `$additional_data` = "",
int `$tag` = `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE`
): string

Encrypt a chunk of data so that it can safely be decrypted in a streaming API.

### Bağımsız Değişkenler

`state`
  See sodium_crypto_secretstream_xchacha20poly1305_init_pull() and sodium_crypto_secretstream_xchacha20poly1305_init_push()
`message`
`additional_data`
`tag`
  Optional. Can be used to assert decryption behavior (i.e. re-keying or indicating the final chunk in a stream).
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE`: the most common tag, that doesn't add any information about the nature of the message.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL`: indicates that the message marks the end of the stream, and erases the secret key used to encrypt the previous sequence.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH`: indicates that the message marks the end of a set of messages, but not the end of the stream. For example, a huge JSON string sent as multiple chunks can use this tag to indicate to the application that the string is complete and that it can be decoded. But the stream itself is not closed, and more data may follow.
  - `SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY`: "forget" the key used to encrypt this message and the previous ones, and derive a new secret key.

### Dönen Değerler

Returns the encrypted ciphertext.

# sodium_crypto_secretstream_xchacha20poly1305_rekey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_secretstream_xchacha20poly1305_rekey — Explicitly rotate the key in the secretstream state

### Açıklama

function sodium_crypto_secretstream_xchacha20poly1305_rekey(string `&$state`): void

Explicitly rotate the key in the secretstream state. Overwrites the value passed in.

### Bağımsız Değişkenler

`state`
  Secretstream state.

### Dönen Değerler

Hiçbir değer dönmez.

# sodium_crypto_shorthash

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_shorthash — Compute a short hash of a message and key

### Açıklama

function sodium_crypto_shorthash(string `$message`, #[\SensitiveParameter]string `$key`): string

sodium_crypto_shorthash() wraps a hash function called SipHash-2-4, which is ideal for implementing hash tables that are not susceptible to hash collision denial of service attacks (Hash-DoS).

SipHash-2-4 isn't a general purpose cryptographic hash function.

### Bağımsız Değişkenler

`message`
  The message to hash.
`key`
  The hash key.

### Dönen Değerler

# sodium_crypto_shorthash_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_shorthash_keygen — Get random bytes for key

### Açıklama

function sodium_crypto_shorthash_keygen(): string

Generate a key for use with sodium_crypto_shorthash().

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# sodium_crypto_sign

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign — Sign a message

### Açıklama

function sodium_crypto_sign(string `$message`, #[\SensitiveParameter]string `$secret_key`): string

Sign a message with a secret key, that can be verified by the corresponding public key. This function attaches the signature to the message. See sodium_crypto_sign_detached() for detached signatures.

### Bağımsız Değişkenler

`message`
  Message to sign.
`secret_key`
  Secret key. See sodium_crypto_sign_secretkey()

### Dönen Değerler

Signed message (not encrypted).

# sodium_crypto_sign_detached

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_detached — Sign the message

### Açıklama

function sodium_crypto_sign_detached(string `$message`, #[\SensitiveParameter]string `$secret_key`): string

Sign a message with a secret key, that can be verified by the corresponding public key. This function returns a detached signature.

### Bağımsız Değişkenler

`message`
  Message to sign.
`secret_key`
  Secret key. See sodium_crypto_sign_secretkey()

### Dönen Değerler

Cryptographic signature.

# sodium_crypto_sign_ed25519_pk_to_curve25519

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_ed25519_pk_to_curve25519 — Convert an Ed25519 public key to a Curve25519 public key

### Açıklama

function sodium_crypto_sign_ed25519_pk_to_curve25519(string `$public_key`): string

Given an Ed25519 public key, calculate the birationally equivalent X25519 public key.

### Bağımsız Değişkenler

`public_key`
  Public key suitable for the crypto_sign functions.

### Dönen Değerler

Public key suitable for the crypto_box functions.

# sodium_crypto_sign_ed25519_sk_to_curve25519

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_ed25519_sk_to_curve25519 — Convert an Ed25519 secret key to a Curve25519 secret key

### Açıklama

function sodium_crypto_sign_ed25519_sk_to_curve25519(#[\SensitiveParameter]string `$secret_key`): string

Given an Ed25519 secret key, calculate the birationally equivalent X25519 secret key.

### Bağımsız Değişkenler

`secret_key`
  Secret key suitable for the crypto_sign functions.

### Dönen Değerler

Secret key suitable for the crypto_box functions.

# sodium_crypto_sign_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_keypair — Randomly generate a secret key and a corresponding public key

### Açıklama

function sodium_crypto_sign_keypair(): string

Generate a random Ed25519 keypair as one string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Ed25519 keypair.

# sodium_crypto_sign_keypair_from_secretkey_and_publickey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_keypair_from_secretkey_and_publickey — Join a secret key and public key together

### Açıklama

function sodium_crypto_sign_keypair_from_secretkey_and_publickey(#[\SensitiveParameter]string `$secret_key`, string `$public_key`): string

Join a secret key and public key together.

### Bağımsız Değişkenler

`secret_key`
  Ed25519 secret key
`public_key`
  Ed25519 public key

### Dönen Değerler

Keypair

# sodium_crypto_sign_open

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_open — Check that the signed message has a valid signature

### Açıklama

function sodium_crypto_sign_open(string `$signed_message`, string `$public_key`): string|false

Verify the signature attached to a message and return the message

### Bağımsız Değişkenler

`signed_message`
  A message signed with sodium_crypto_sign()
`public_key`
  An Ed25519 public key

### Dönen Değerler

Returns the original signed message on success, başarısızlık durumunda `false` döner.

# sodium_crypto_sign_publickey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_publickey — Extract the Ed25519 public key from a keypair

### Açıklama

function sodium_crypto_sign_publickey(#[\SensitiveParameter]string `$key_pair`): string

Extract the Ed25519 public key from a keypair

### Bağımsız Değişkenler

`key_pair`
  Ed25519 keypair (see: sodium_crypto_sign_keypair())

### Dönen Değerler

Ed25519 public key

# sodium_crypto_sign_publickey_from_secretkey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_publickey_from_secretkey — Extract the Ed25519 public key from the secret key

### Açıklama

function sodium_crypto_sign_publickey_from_secretkey(#[\SensitiveParameter]string `$secret_key`): string

Extract the Ed25519 public key from the secret key

### Bağımsız Değişkenler

`secret_key`
  Ed25519 secret key

### Dönen Değerler

Ed25519 public key

# sodium_crypto_sign_secretkey

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_secretkey — Extract the Ed25519 secret key from a keypair

### Açıklama

function sodium_crypto_sign_secretkey(#[\SensitiveParameter]string `$key_pair`): string

Extract the Ed25519 secret key from a keypair

### Bağımsız Değişkenler

`key_pair`
  Ed25519 keypair (see: sodium_crypto_sign_keypair())

### Dönen Değerler

Ed25519 secret key

# sodium_crypto_sign_seed_keypair

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_seed_keypair — Deterministically derive the key pair from a single key

### Açıklama

function sodium_crypto_sign_seed_keypair(#[\SensitiveParameter]string `$seed`): string

Clamps the seed to form a secret key, derives the public key, and returns the two as a keypair.

The `*_seed_keypair` functions are ideal for generating a keypair from a password and salt. Use the result as a `seed` to generate the desired keys.

### Bağımsız Değişkenler

`seed`
  Some cryptographic input. Must be 32 bytes.

### Dönen Değerler

Keypair (secret key and public key)

# sodium_crypto_sign_verify_detached

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_sign_verify_detached — Verify signature for the message

### Açıklama

function sodium_crypto_sign_verify_detached(string `$signature`, string `$message`, string `$public_key`): bool

Verify signature for the message

### Bağımsız Değişkenler

`signature`
  The cryptographic signature obtained from sodium_crypto_sign_detached()
`message`
  The message being verified
`public_key`
  Ed25519 public key

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# sodium_crypto_stream

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_stream — Generate a deterministic sequence of bytes from a seed

### Açıklama

function sodium_crypto_stream(int `$length`, string `$nonce`, #[\SensitiveParameter]string `$key`): string

Generate a deterministic sequence of bytes from a seed, using the XSalsa20 stream cipher.

### Bağımsız Değişkenler

`length`
  The number of bytes to return.
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

String of pseudorandom bytes.

# sodium_crypto_stream_keygen

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_stream_keygen — Generate a random sodium_crypto_stream key.

### Açıklama

function sodium_crypto_stream_keygen(): string

Generate a key for use with sodium_crypto_stream() and sodium_crypto_stream_xor().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Encryption key (256-bit).

# sodium_crypto_stream_xchacha20

(PHP 8 >= 8.1.0)

sodium_crypto_stream_xchacha20 — Expands the key and nonce into a keystream of pseudorandom bytes

### Açıklama

function sodium_crypto_stream_xchacha20(int `$length`, string `$nonce`, #[\SensitiveParameter]string `$key`): string

Expands the `key` and `nonce` into a keystream of pseudorandom bytes.

### Bağımsız Değişkenler

`length`
  Number of bytes desired.
`nonce`
  24-byte nonce.
`key`
  Key, possibly generated from sodium_crypto_stream_xchacha20_keygen().

### Dönen Değerler

Returns a pseudorandom stream that can be used with sodium_crypto_stream_xchacha20_xor().

# sodium_crypto_stream_xchacha20_keygen

(PHP 8 >= 8.1.0)

sodium_crypto_stream_xchacha20_keygen — Returns a secure random key

### Açıklama

function sodium_crypto_stream_xchacha20_keygen(): string

Returns a secure random key for use with sodium_crypto_stream_xchacha20().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a 32-byte secure random key for use with sodium_crypto_stream_xchacha20().

# sodium_crypto_stream_xchacha20_xor

(PHP 8 >= 8.1.0)

sodium_crypto_stream_xchacha20_xor — Encrypts a message using a nonce and a secret key (no authentication)

### Açıklama

function sodium_crypto_stream_xchacha20_xor(#[\SensitiveParameter]string `$message`, string `$nonce`, #[\SensitiveParameter]string `$key`): string

Encrypts a `message` using a `nonce` and a secret `key` (no authentication).

Dikkat

This encryption is unauthenticated, and does not prevent chosen-ciphertext attacks. Make sure to combine the ciphertext with a Message Authentication Code, for example with sodium_crypto_aead_xchacha20poly1305_ietf_encrypt() function, or sodium_crypto_auth().

### Bağımsız Değişkenler

`message`
  The message to encrypt.
`nonce`
  24-byte nonce.
`key`
  Key, possibly generated from sodium_crypto_stream_xchacha20_keygen().

### Dönen Değerler

Encrypted message.

### Ayrıca Bakınız

- sodium_crypto_stream_xchacha20_xor_ic() - Encrypts a message using a nonce and a secret key (no authentication)

# sodium_crypto_stream_xchacha20_xor_ic

(PHP 8 >= 8.2.0)

sodium_crypto_stream_xchacha20_xor_ic — Encrypts a message using a nonce and a secret key (no authentication)

### Açıklama

function sodium_crypto_stream_xchacha20_xor_ic(
#[\SensitiveParameter]string `$message`,
string `$nonce`,
int `$counter`,
#[\SensitiveParameter]string `$key`
): string

The function is similar to sodium_crypto_stream_xchacha20_xor() but adds the ability to set the initial value of the block counter to a non-zero value. This permits direct access to any block without having to compute the previous ones.

Dikkat

This encryption is unauthenticated, and does not prevent chosen-ciphertext attacks. Make sure to combine the ciphertext with a Message Authentication Code, for example with sodium_crypto_aead_xchacha20poly1305_ietf_encrypt() function, or sodium_crypto_auth().

### Bağımsız Değişkenler

`message`
  The message to encrypt.
`nonce`
  24-byte nonce.
`counter`
  The initial value of the block counter.
`key`
  Key, possibly generated from sodium_crypto_stream_xchacha20_keygen().

### Dönen Değerler

Encrypted message, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sodium_crypto_stream_xchacha20_xor_ic() example

    <?php
    $n2 = random_bytes(SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES);
    $left  = str_repeat("\x01", 64);
    $right = str_repeat("\xfe", 64);

    // All at once:
    $stream7_unified = sodium_crypto_stream_xchacha20_xor($left . $right, $n2, $key);

    // Piecewise, with initial counter:
    $stream7_left  = sodium_crypto_stream_xchacha20_xor_ic($left, $n2, 0, $key);
    $stream7_right = sodium_crypto_stream_xchacha20_xor_ic($right, $n2, 1, $key);
    $stream7_concat = $stream7_left . $stream7_right;

    var_dump(strlen($stream7_concat));
    var_dump($stream7_unified === $stream7_concat);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(128)
    bool(true)

### Ayrıca Bakınız

- sodium_crypto_stream_xchacha20_xor() - Encrypts a message using a nonce and a secret key (no authentication)

# sodium_crypto_stream_xor

(PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_stream_xor — Encrypt a message without authentication

### Açıklama

function sodium_crypto_stream_xor(#[\SensitiveParameter]string `$message`, string `$nonce`, #[\SensitiveParameter]string `$key`): string

This function encrypts a message with XSalsa20, but does not provide any ciphertext guarantees about the plaintext.

### Bağımsız Değişkenler

`message`
  The message to encrypt
`nonce`
  A number that must be only used once, per message. 24 bytes long. This is a large enough bound to generate randomly (i.e. random_bytes()).
`key`
  Encryption key (256-bit).

### Dönen Değerler

Encrypted message.

# sodium_hex2bin

(PHP 7 >= 7.2.0, PHP 8)

sodium_hex2bin — Decodes a hexadecimally encoded binary string

### Açıklama

function sodium_hex2bin(#[\SensitiveParameter]string `$string`, string `$ignore` = ""): string

Decodes a hexadecimally encoded binary string.

Like sodium_bin2hex(), sodium_hex2bin() is resistant to side-channel attacks while hex2bin() is not.

### Bağımsız Değişkenler

`string`
  Hexadecimal representation of data.
`ignore`
  Optional string argument for characters to ignore.

### Dönen Değerler

Returns the binary representation of the given `string` data.

# sodium_increment

(PHP 7 >= 7.2.0, PHP 8)

sodium_increment — Increment large number

### Açıklama

function sodium_increment(string `&$string`): void

Treat the string as a little-endian unsigned integer, then increase it by 1. Constant-time.

### Bağımsız Değişkenler

`string`
  String to increment.

### Dönen Değerler

Hiçbir değer dönmez.

# sodium_memcmp

(PHP 7 >= 7.2.0, PHP 8)

sodium_memcmp — Test for equality in constant-time

### Açıklama

function sodium_memcmp(#[\SensitiveParameter]string `$string1`, #[\SensitiveParameter]string `$string2`): int

Compare two strings in constant-time.

In practice, you almost always want to use hash_equals() instead, since it provides the same logic but returns a bool instead of an int. However, if you're using the return value of a comparison in a calculation that's timing-sensitive, and worried about timing leaks with bool-to-int conversions, sodium_memcmp() is an ideal replacement.

### Bağımsız Değişkenler

`string1`
  String to compare
`string2`
  Other string to compare

### Dönen Değerler

Returns `0` if both strings are equal; `-1` otherwise.

# sodium_memzero

(PHP 7 >= 7.2.0, PHP 8)

sodium_memzero — Overwrite a string with NUL characters

### Açıklama

function sodium_memzero(#[\SensitiveParameter]string `&$string`): void

sodium_memzero() zeroes out the string that is passed by reference.

### Bağımsız Değişkenler

`string`
  String.

### Dönen Değerler

Hiçbir değer dönmez.

# sodium_pad

(PHP 7 >= 7.2.0, PHP 8)

sodium_pad — Add padding data

### Açıklama

function sodium_pad(#[\SensitiveParameter]string `$string`, int `$block_size`): string

Right-pad a string to a desired length. Timing-safe.

### Bağımsız Değişkenler

`string`
  Unpadded string.
`block_size`
  The string will be padded until it is an even multiple of the block size.

### Dönen Değerler

Padded string.

# sodium_unpad

(PHP 7 >= 7.2.0, PHP 8)

sodium_unpad — Remove padding data

### Açıklama

function sodium_unpad(#[\SensitiveParameter]string `$string`, int `$block_size`): string

Unpad a padded string. Timing-safe.

### Bağımsız Değişkenler

`string`
  Padded string.
`block_size`
  The block size for padding.

### Dönen Değerler

Unpadded string.

## İçindekiler

- sodium_add — Add large numbers
- sodium_base642bin — Decodes a base64-encoded string into raw binary.
- sodium_bin2base64 — Encodes a raw binary string with base64.
- sodium_bin2hex — Encode to hexadecimal
- sodium_compare — Compare large numbers
- sodium_crypto_aead_aegis128l_decrypt — Verify then decrypt a message with AEGIS-128L
- sodium_crypto_aead_aegis128l_encrypt — Encrypt then authenticate a message with AEGIS-128L
- sodium_crypto_aead_aegis128l_keygen — Generate a random AEGIS-128L key
- sodium_crypto_aead_aegis256_decrypt — Verify then decrypt a message with AEGIS-256
- sodium_crypto_aead_aegis256_encrypt — Encrypt then authenticate a message with AEGIS-256
- sodium_crypto_aead_aegis256_keygen — Generate a random AEGIS-256 key
- sodium_crypto_aead_aes256gcm_decrypt — Verify then decrypt a message with AES-256-GCM
- sodium_crypto_aead_aes256gcm_encrypt — Encrypt then authenticate with AES-256-GCM
- sodium_crypto_aead_aes256gcm_is_available — Check if hardware supports AES256-GCM
- sodium_crypto_aead_aes256gcm_keygen — Generate a random AES-256-GCM key
- sodium_crypto_aead_chacha20poly1305_decrypt — Verify then decrypt with ChaCha20-Poly1305
- sodium_crypto_aead_chacha20poly1305_encrypt — Encrypt then authenticate with ChaCha20-Poly1305
- sodium_crypto_aead_chacha20poly1305_ietf_decrypt — Verify that the ciphertext includes a valid tag
- sodium_crypto_aead_chacha20poly1305_ietf_encrypt — Encrypt a message
- sodium_crypto_aead_chacha20poly1305_ietf_keygen — Generate a random ChaCha20-Poly1305 (IETF) key.
- sodium_crypto_aead_chacha20poly1305_keygen — Generate a random ChaCha20-Poly1305 key.
- sodium_crypto_aead_xchacha20poly1305_ietf_decrypt — (Preferred) Verify then decrypt with XChaCha20-Poly1305
- sodium_crypto_aead_xchacha20poly1305_ietf_encrypt — (Preferred) Encrypt then authenticate with XChaCha20-Poly1305
- sodium_crypto_aead_xchacha20poly1305_ietf_keygen — Generate a random XChaCha20-Poly1305 key.
- sodium_crypto_auth — Compute a tag for the message
- sodium_crypto_auth_keygen — Generate a random key for sodium_crypto_auth
- sodium_crypto_auth_verify — Verifies that the tag is valid for the message
- sodium_crypto_box — Authenticated public-key encryption
- sodium_crypto_box_keypair — Randomly generate a secret key and a corresponding public key
- sodium_crypto_box_keypair_from_secretkey_and_publickey — Create a unified keypair string from a secret key and public key
- sodium_crypto_box_open — Authenticated public-key decryption
- sodium_crypto_box_publickey — Extract the public key from a crypto_box keypair
- sodium_crypto_box_publickey_from_secretkey — Calculate the public key from a secret key
- sodium_crypto_box_seal — Anonymous public-key encryption
- sodium_crypto_box_seal_open — Anonymous public-key decryption
- sodium_crypto_box_secretkey — Extracts the secret key from a crypto_box keypair
- sodium_crypto_box_seed_keypair — Deterministically derive the key pair from a single key
- sodium_crypto_core_ristretto255_add — Adds an element
- sodium_crypto_core_ristretto255_from_hash — Maps a vector
- sodium_crypto_core_ristretto255_is_valid_point — Determines if a point on the ristretto255 curve
- sodium_crypto_core_ristretto255_random — Generates a random key
- sodium_crypto_core_ristretto255_scalar_add — Adds a scalar value
- sodium_crypto_core_ristretto255_scalar_complement — The sodium_crypto_core_ristretto255_scalar_complement purpose
- sodium_crypto_core_ristretto255_scalar_invert — Inverts a scalar value
- sodium_crypto_core_ristretto255_scalar_mul — Multiplies a scalar value
- sodium_crypto_core_ristretto255_scalar_negate — Negates a scalar value
- sodium_crypto_core_ristretto255_scalar_random — Generates a random key
- sodium_crypto_core_ristretto255_scalar_reduce — Reduces a scalar value
- sodium_crypto_core_ristretto255_scalar_sub — Subtracts a scalar value
- sodium_crypto_core_ristretto255_sub — Subtracts an element
- sodium_crypto_generichash — Get a hash of the message
- sodium_crypto_generichash_final — Complete the hash
- sodium_crypto_generichash_init — Initialize a hash for streaming
- sodium_crypto_generichash_keygen — Generate a random generichash key
- sodium_crypto_generichash_update — Add message to a hash
- sodium_crypto_kdf_derive_from_key — Derive a subkey
- sodium_crypto_kdf_keygen — Generate a random root key for the KDF interface
- sodium_crypto_kx_client_session_keys — Calculate the client-side session keys.
- sodium_crypto_kx_keypair — Creates a new sodium keypair
- sodium_crypto_kx_publickey — Extract the public key from a crypto_kx keypair
- sodium_crypto_kx_secretkey — Extract the secret key from a crypto_kx keypair.
- sodium_crypto_kx_seed_keypair — Description
- sodium_crypto_kx_server_session_keys — Calculate the server-side session keys.
- sodium_crypto_pwhash — Derive a key from a password, using Argon2
- sodium_crypto_pwhash_scryptsalsa208sha256 — Derives a key from a password, using scrypt
- sodium_crypto_pwhash_scryptsalsa208sha256_str — Get an ASCII encoded hash
- sodium_crypto_pwhash_scryptsalsa208sha256_str_verify — Verify that the password is a valid password verification string
- sodium_crypto_pwhash_str — Get an ASCII-encoded hash
- sodium_crypto_pwhash_str_needs_rehash — Determine whether or not to rehash a password
- sodium_crypto_pwhash_str_verify — Verifies that a password matches a hash
- sodium_crypto_scalarmult — Compute a shared secret given a user's secret key and another user's public key
- sodium_crypto_scalarmult_base — Takma Adı: sodium_crypto_box_publickey_from_secretkey
- sodium_crypto_scalarmult_ristretto255 — Computes a shared secret
- sodium_crypto_scalarmult_ristretto255_base — Calculates the public key from a secret key
- sodium_crypto_secretbox — Authenticated shared-key encryption
- sodium_crypto_secretbox_keygen — Generate random key for sodium_crypto_secretbox
- sodium_crypto_secretbox_open — Authenticated shared-key decryption
- sodium_crypto_secretstream_xchacha20poly1305_init_pull — Initialize a secretstream context for decryption
- sodium_crypto_secretstream_xchacha20poly1305_init_push — Initialize a secretstream context for encryption
- sodium_crypto_secretstream_xchacha20poly1305_keygen — Generate a random secretstream key.
- sodium_crypto_secretstream_xchacha20poly1305_pull — Decrypt a chunk of data from an encrypted stream
- sodium_crypto_secretstream_xchacha20poly1305_push — Encrypt a chunk of data so that it can safely be decrypted in a streaming API
- sodium_crypto_secretstream_xchacha20poly1305_rekey — Explicitly rotate the key in the secretstream state
- sodium_crypto_shorthash — Compute a short hash of a message and key
- sodium_crypto_shorthash_keygen — Get random bytes for key
- sodium_crypto_sign — Sign a message
- sodium_crypto_sign_detached — Sign the message
- sodium_crypto_sign_ed25519_pk_to_curve25519 — Convert an Ed25519 public key to a Curve25519 public key
- sodium_crypto_sign_ed25519_sk_to_curve25519 — Convert an Ed25519 secret key to a Curve25519 secret key
- sodium_crypto_sign_keypair — Randomly generate a secret key and a corresponding public key
- sodium_crypto_sign_keypair_from_secretkey_and_publickey — Join a secret key and public key together
- sodium_crypto_sign_open — Check that the signed message has a valid signature
- sodium_crypto_sign_publickey — Extract the Ed25519 public key from a keypair
- sodium_crypto_sign_publickey_from_secretkey — Extract the Ed25519 public key from the secret key
- sodium_crypto_sign_secretkey — Extract the Ed25519 secret key from a keypair
- sodium_crypto_sign_seed_keypair — Deterministically derive the key pair from a single key
- sodium_crypto_sign_verify_detached — Verify signature for the message
- sodium_crypto_stream — Generate a deterministic sequence of bytes from a seed
- sodium_crypto_stream_keygen — Generate a random sodium_crypto_stream key.
- sodium_crypto_stream_xchacha20 — Expands the key and nonce into a keystream of pseudorandom bytes
- sodium_crypto_stream_xchacha20_keygen — Returns a secure random key
- sodium_crypto_stream_xchacha20_xor — Encrypts a message using a nonce and a secret key (no authentication)
- sodium_crypto_stream_xchacha20_xor_ic — Encrypts a message using a nonce and a secret key (no authentication)
- sodium_crypto_stream_xor — Encrypt a message without authentication
- sodium_hex2bin — Decodes a hexadecimally encoded binary string
- sodium_increment — Increment large number
- sodium_memcmp — Test for equality in constant-time
- sodium_memzero — Overwrite a string with NUL characters
- sodium_pad — Add padding data
- sodium_unpad — Remove padding data

# The SodiumException class

(PHP 7 >= 7.2.0, PHP 8)

## Giriş

Exceptions thrown by the sodium functions.

## Sınıf Sözdizimi

class SodiumException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Sodium İşlevleri
  - sodium_add — Add large numbers
  - sodium_base642bin — Decodes a base64-encoded string into raw binary.
  - sodium_bin2base64 — Encodes a raw binary string with base64.
  - sodium_bin2hex — Encode to hexadecimal
  - sodium_compare — Compare large numbers
  - sodium_crypto_aead_aegis128l_decrypt — Verify then decrypt a message with AEGIS-128L
  - sodium_crypto_aead_aegis128l_encrypt — Encrypt then authenticate a message with AEGIS-128L
  - sodium_crypto_aead_aegis128l_keygen — Generate a random AEGIS-128L key
  - sodium_crypto_aead_aegis256_decrypt — Verify then decrypt a message with AEGIS-256
  - sodium_crypto_aead_aegis256_encrypt — Encrypt then authenticate a message with AEGIS-256
  - sodium_crypto_aead_aegis256_keygen — Generate a random AEGIS-256 key
  - sodium_crypto_aead_aes256gcm_decrypt — Verify then decrypt a message with AES-256-GCM
  - sodium_crypto_aead_aes256gcm_encrypt — Encrypt then authenticate with AES-256-GCM
  - sodium_crypto_aead_aes256gcm_is_available — Check if hardware supports AES256-GCM
  - sodium_crypto_aead_aes256gcm_keygen — Generate a random AES-256-GCM key
  - sodium_crypto_aead_chacha20poly1305_decrypt — Verify then decrypt with ChaCha20-Poly1305
  - sodium_crypto_aead_chacha20poly1305_encrypt — Encrypt then authenticate with ChaCha20-Poly1305
  - sodium_crypto_aead_chacha20poly1305_ietf_decrypt — Verify that the ciphertext includes a valid tag
  - sodium_crypto_aead_chacha20poly1305_ietf_encrypt — Encrypt a message
  - sodium_crypto_aead_chacha20poly1305_ietf_keygen — Generate a random ChaCha20-Poly1305 (IETF) key.
  - sodium_crypto_aead_chacha20poly1305_keygen — Generate a random ChaCha20-Poly1305 key.
  - sodium_crypto_aead_xchacha20poly1305_ietf_decrypt — (Preferred) Verify then decrypt with XChaCha20-Poly1305
  - sodium_crypto_aead_xchacha20poly1305_ietf_encrypt — (Preferred) Encrypt then authenticate with XChaCha20-Poly1305
  - sodium_crypto_aead_xchacha20poly1305_ietf_keygen — Generate a random XChaCha20-Poly1305 key.
  - sodium_crypto_auth — Compute a tag for the message
  - sodium_crypto_auth_keygen — Generate a random key for sodium_crypto_auth
  - sodium_crypto_auth_verify — Verifies that the tag is valid for the message
  - sodium_crypto_box — Authenticated public-key encryption
  - sodium_crypto_box_keypair — Randomly generate a secret key and a corresponding public key
  - sodium_crypto_box_keypair_from_secretkey_and_publickey — Create a unified keypair string from a secret key and public key
  - sodium_crypto_box_open — Authenticated public-key decryption
  - sodium_crypto_box_publickey — Extract the public key from a crypto_box keypair
  - sodium_crypto_box_publickey_from_secretkey — Calculate the public key from a secret key
  - sodium_crypto_box_seal — Anonymous public-key encryption
  - sodium_crypto_box_seal_open — Anonymous public-key decryption
  - sodium_crypto_box_secretkey — Extracts the secret key from a crypto_box keypair
  - sodium_crypto_box_seed_keypair — Deterministically derive the key pair from a single key
  - sodium_crypto_core_ristretto255_add — Adds an element
  - sodium_crypto_core_ristretto255_from_hash — Maps a vector
  - sodium_crypto_core_ristretto255_is_valid_point — Determines if a point on the ristretto255 curve
  - sodium_crypto_core_ristretto255_random — Generates a random key
  - sodium_crypto_core_ristretto255_scalar_add — Adds a scalar value
  - sodium_crypto_core_ristretto255_scalar_complement — The sodium_crypto_core_ristretto255_scalar_complement purpose
  - sodium_crypto_core_ristretto255_scalar_invert — Inverts a scalar value
  - sodium_crypto_core_ristretto255_scalar_mul — Multiplies a scalar value
  - sodium_crypto_core_ristretto255_scalar_negate — Negates a scalar value
  - sodium_crypto_core_ristretto255_scalar_random — Generates a random key
  - sodium_crypto_core_ristretto255_scalar_reduce — Reduces a scalar value
  - sodium_crypto_core_ristretto255_scalar_sub — Subtracts a scalar value
  - sodium_crypto_core_ristretto255_sub — Subtracts an element
  - sodium_crypto_generichash — Get a hash of the message
  - sodium_crypto_generichash_final — Complete the hash
  - sodium_crypto_generichash_init — Initialize a hash for streaming
  - sodium_crypto_generichash_keygen — Generate a random generichash key
  - sodium_crypto_generichash_update — Add message to a hash
  - sodium_crypto_kdf_derive_from_key — Derive a subkey
  - sodium_crypto_kdf_keygen — Generate a random root key for the KDF interface
  - sodium_crypto_kx_client_session_keys — Calculate the client-side session keys.
  - sodium_crypto_kx_keypair — Creates a new sodium keypair
  - sodium_crypto_kx_publickey — Extract the public key from a crypto_kx keypair
  - sodium_crypto_kx_secretkey — Extract the secret key from a crypto_kx keypair.
  - sodium_crypto_kx_seed_keypair — Description
  - sodium_crypto_kx_server_session_keys — Calculate the server-side session keys.
  - sodium_crypto_pwhash — Derive a key from a password, using Argon2
  - sodium_crypto_pwhash_scryptsalsa208sha256 — Derives a key from a password, using scrypt
  - sodium_crypto_pwhash_scryptsalsa208sha256_str — Get an ASCII encoded hash
  - sodium_crypto_pwhash_scryptsalsa208sha256_str_verify — Verify that the password is a valid password verification string
  - sodium_crypto_pwhash_str — Get an ASCII-encoded hash
  - sodium_crypto_pwhash_str_needs_rehash — Determine whether or not to rehash a password
  - sodium_crypto_pwhash_str_verify — Verifies that a password matches a hash
  - sodium_crypto_scalarmult — Compute a shared secret given a user's secret key and another user's public key
  - sodium_crypto_scalarmult_base — Takma Adı: sodium_crypto_box_publickey_from_secretkey
  - sodium_crypto_scalarmult_ristretto255 — Computes a shared secret
  - sodium_crypto_scalarmult_ristretto255_base — Calculates the public key from a secret key
  - sodium_crypto_secretbox — Authenticated shared-key encryption
  - sodium_crypto_secretbox_keygen — Generate random key for sodium_crypto_secretbox
  - sodium_crypto_secretbox_open — Authenticated shared-key decryption
  - sodium_crypto_secretstream_xchacha20poly1305_init_pull — Initialize a secretstream context for decryption
  - sodium_crypto_secretstream_xchacha20poly1305_init_push — Initialize a secretstream context for encryption
  - sodium_crypto_secretstream_xchacha20poly1305_keygen — Generate a random secretstream key.
  - sodium_crypto_secretstream_xchacha20poly1305_pull — Decrypt a chunk of data from an encrypted stream
  - sodium_crypto_secretstream_xchacha20poly1305_push — Encrypt a chunk of data so that it can safely be decrypted in a streaming API
  - sodium_crypto_secretstream_xchacha20poly1305_rekey — Explicitly rotate the key in the secretstream state
  - sodium_crypto_shorthash — Compute a short hash of a message and key
  - sodium_crypto_shorthash_keygen — Get random bytes for key
  - sodium_crypto_sign — Sign a message
  - sodium_crypto_sign_detached — Sign the message
  - sodium_crypto_sign_ed25519_pk_to_curve25519 — Convert an Ed25519 public key to a Curve25519 public key
  - sodium_crypto_sign_ed25519_sk_to_curve25519 — Convert an Ed25519 secret key to a Curve25519 secret key
  - sodium_crypto_sign_keypair — Randomly generate a secret key and a corresponding public key
  - sodium_crypto_sign_keypair_from_secretkey_and_publickey — Join a secret key and public key together
  - sodium_crypto_sign_open — Check that the signed message has a valid signature
  - sodium_crypto_sign_publickey — Extract the Ed25519 public key from a keypair
  - sodium_crypto_sign_publickey_from_secretkey — Extract the Ed25519 public key from the secret key
  - sodium_crypto_sign_secretkey — Extract the Ed25519 secret key from a keypair
  - sodium_crypto_sign_seed_keypair — Deterministically derive the key pair from a single key
  - sodium_crypto_sign_verify_detached — Verify signature for the message
  - sodium_crypto_stream — Generate a deterministic sequence of bytes from a seed
  - sodium_crypto_stream_keygen — Generate a random sodium_crypto_stream key.
  - sodium_crypto_stream_xchacha20 — Expands the key and nonce into a keystream of pseudorandom bytes
  - sodium_crypto_stream_xchacha20_keygen — Returns a secure random key
  - sodium_crypto_stream_xchacha20_xor — Encrypts a message using a nonce and a secret key (no authentication)
  - sodium_crypto_stream_xchacha20_xor_ic — Encrypts a message using a nonce and a secret key (no authentication)
  - sodium_crypto_stream_xor — Encrypt a message without authentication
  - sodium_hex2bin — Decodes a hexadecimally encoded binary string
  - sodium_increment — Increment large number
  - sodium_memcmp — Test for equality in constant-time
  - sodium_memzero — Overwrite a string with NUL characters
  - sodium_pad — Add padding data
  - sodium_unpad — Remove padding data
- SodiumException — The SodiumException class

# Xpass

# Giriş

This extension provides password hashing algorithms used by Linux distributions, using extended crypt library.

It also provides additional functions from libxcrypt missing in core PHP.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Installation via PECL

## Gereksinimler

This extension requires » libxcrypt version 4.4 or higher.

## Installation via PECL

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/xpass.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Xpass extension provides various set of constants. Hash methods (`CRYPT_PREFIX_*`) for crypt_gensalt() prefix parameter. Error codes (`CRYPT_SALT_*`) returned by crypt_checksalt(). Password algorithms (`PASSWORD_*`) for password_hash() algo parameter.

Hashing methods
`CRYPT_PREFIX_STD_DES` (string)
  The original hashing method from Unix V7, based on the DES block cipher. Because DES is cheap on modern hardware, because there are only `4096` possible salts and 2**56 distinct passphrases, which it truncates to 8 characters, it is feasible to discover any passphrase hashed with this method. It should only be used when supporting old operating systems that support no other hash generation algorithm, due to how weak DES hashes are.
`CRYPT_PREFIX_EXT_DES` (string)
  An extension of traditional DES, which eliminates the length limit, increases the salt size, and makes the time cost tunable. It originates with BSDI BSD/OS and is also available on at least NetBSD, OpenBSD, and FreeBSD due to the use of David Burren's FreeSec library. It is much better than traditional DES and bigcrypt, but still should not be used for new hashes.
`CRYPT_PREFIX_MD5` (string)
  A hash based on the MD5 algorithm, originally developed by Poul-Henning Kamp for FreeBSD. Supported on most free Unixes and newer versions of Solaris. Not as weak as the DES-based hashes below, but MD5 is so cheap on modern hardware that it should not be used for new hashes. Processing cost is not adjustable.
`CRYPT_PREFIX_BLOWFISH` (string)
  A hash based on the Blowfish block cipher, modified to have an extra-expensive key schedule. Originally developed by Niels Provos and David Mazieres for OpenBSD and also supported on recent versions of FreeBSD and NetBSD, on Solaris 10 and newer, and on several GNU/*/Linux distributions.
`CRYPT_PREFIX_SHA256` (string)
  A hash based on SHA-2 with 256-bit output, originally developed by Ulrich Drepper for GNU libc. Supported on Linux but not common elsewhere. Acceptable for new hashes. The default processing cost parameter is `5000`, which is too low for modern hardware.
`CRYPT_PREFIX_SHA512` (string)
  A hash based on SHA-2 with 512-bit output, originally developed by Ulrich Drepper for GNU libc. Supported on Linux but not common elsewhere. Acceptable for new hashes. The default processing cost parameter is `5000`, which is too low for modern hardware.
`CRYPT_PREFIX_SCRYPT` (string)
  Scrypt is a password-based key derivation function created by Colin Percival, originally for the Tarsnap online backup service. The algorithm was specifically designed to make it costly to perform large-scale custom hardware attacks by requiring large amounts of memory. In 2016, the scrypt algorithm was published by IETF as RFC 7914.
`CRYPT_PREFIX_GOST_YESCRYPT` (string)
  Gost-yescrypt uses the output from yescrypt as an input message to HMAC with the GOST R 34.11-2012 (Streebog) hash function with a 256-bit digest. Thus, yescrypt's cryptographic properties are superseded by those of the GOST hash function. This hashing method is useful in applications that need modern passphrase hashing, but have to rely on GOST algorithms. The GOST R 34.11-2012 (Streebog) hash function has been published by the IETF as RFC 6986. Acceptable for new hashes where required.
`CRYPT_PREFIX_YESCRYPT` (string)
  Yescrypt is a scalable passphrase hashing scheme designed by Solar Designer, which is based on Colin Percival's scrypt. While yescrypt's strength against password guessing attacks comes from its algorithm design, its cryptographic security is guaranteed by its use of SHA-256 on the outer layer. The SHA-256 hash function has been published by NIST in FIPS PUB 180-2 (and its subsequent revisions such as FIPS PUB 180-4) and by the IETF as RFC 4634 (and subsequently RFC 6234). Recommended for new hashes.
`CRYPT_PREFIX_SM3CRYPT` (string)
  A hash based on the ShangMi 3 hash function with 256-bit output, that uses the same design as sha256crypt and/or sha512crypt. Supported on EulerOS, Kylin, openEuler, and openKylin, but not common elsewhere. Acceptable for new hashes where required. The default processing cost parameter is 5000, which is too low for modern hardware. Available as of 1.2.0 with libcxcrypt >= 4.5.0.
`CRYPT_PREFIX_SM3_YESCRYPT` (string)
  Sm3-yescrypt uses the output from yescrypt as an input message to HMAC with the ShangMi 3 hash function with a 256-bit digest. Thus, yescrypt's cryptographic properties are superseded by those of the ShangMi 3 hash function. This hashing method is useful in applications that need modern passphrase hashing, but have to rely on algorithms approved by the Chinese Office of State Commercial Cryptography Administration (OSCCA). The ShangMi 3 hash function has been published in Part 3: "Dedicated hash-functions" of the ISO/IEC 10118-3:2018. Acceptable for new hashes where required. Available as of 1.2.0 with libcxcrypt >= 4.5.0.

Error codes
`CRYPT_SALT_OK` (int)
  No error.
`CRYPT_SALT_INVALID` (int)
  Unknown hashing method or invalid parameters.
`CRYPT_SALT_METHOD_DISABLED` (int)
  Hashing method is no longer allowed to be used.
`CRYPT_SALT_METHOD_LEGACY` (int)
  Hashing method is no longer considered strong enough.
`CRYPT_SALT_TOO_CHEAP` (int)
  Cost parameters are considered too cheap.

Password algorithms
`PASSWORD_SHA512` (string)
  `PASSWORD_SHA512` is used to create new password hashes using the `CRYPT_PREFIX_SHA512` algorithm.
`PASSWORD_YESCRYPT` (string)
  `PASSWORD_YESCRYPT` is used to create new password hashes using the `CRYPT_PREFIX_YESCRYPT` algorithm.
`PASSWORD_SM3CRYPT` (string)
  `PASSWORD_SM3CRYPT` is used to create new password hashes using the `CRYPT_PREFIX_SM3CRYPT` algorithm. Available as of 1.2.0 with libcxcrypt >= 4.5.0.
`PASSWORD_SM3_YESCRYPT` (string)
  `PASSWORD_SM3_YESCRYPT` is used to create new password hashes using the `CRYPT_PREFIX_SM3_YESCRYPT` algorithm. Available as of 1.2.0 with libcxcrypt >= 4.5.0.

# Xpass İşlevleri

# crypt_checksalt

(PECL xpass >= 1.1.0)

crypt_checksalt — Validate a crypt setting string

### Açıklama

function crypt_checksalt(string `$salt`): ?string

Checks the salt string against the system configuration and reports whether the hashing method and parameters it specifies are acceptable. It is intended to be used to determine whether the user's passphrase should be re-hashed using the currently preferred hashing method.

### Bağımsız Değişkenler

`salt`
  Salt string to check.

### Dönen Değerler

Returns one of the `CRYPT_SALT_*` as an int.

### Örnekler

Örnek 1 A crypt_checksalt() example

    <?php
    // Generate a salt for a legacy method
    $salt = crypt_gensalt(CRYPT_PREFIX_STD_DES);
    // Check the salt
    $test = crypt_checksalt($salt);
    var_dump($test === CRYPT_SALT_METHOD_LEGACY);

    // Generate a salt for default method
    $salt = crypt_gensalt();
    // Check the salt
    $test = crypt_checksalt($salt);
    var_dump($test === CRYPT_SALT_OK);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)

### Ayrıca Bakınız

- crypt_gensalt() - Compile a string for use as the salt argument to crypt

# crypt_gensalt

(PECL xpass >= 1.1.0)

crypt_gensalt — Compile a string for use as the salt argument to crypt

### Açıklama

function crypt_gensalt(string `$prefix` = `null`, int `$count` = 0): ?string

Compile a string for use as the salt argument to crypt().

### Bağımsız Değişkenler

`prefix`
  Hashing method. One of the `CRYPT_PREFIX_*` constant. If `null`, the best available hashing method will be selected.
`count`
  Controls the processing cost of the hash; the valid range and exact meaning of count depend on the hashing method, but larger numbers correspond to more costly hashes in terms of CPU time and possibly memory usage. If count is `0`, a low default cost will be selected.

### Dönen Değerler

Returns a string with the setting, or `null` in case of an error.

### Örnekler

Örnek 1 A crypt_gensalt() example

    <?php
    // Generate the salt
    $salt = crypt_gensalt(CRYPT_PREFIX_BLOWFISH);
    // Hash the password
    $hash = crypt("secret", $salt);
    // Check the hash
    $test = hash_equals(crypt("secret", $hash), $hash);
    var_dump($salt, $hash, $test);
    ?>

Yukarıdaki örneğin çıktısı:

    string(29) "$2y$05$GcPykP.Am8C1.dGamdpwW."
    string(60) "$2y$05$GcPykP.Am8C1.dGamdpwW.1RR.7uicWvJPZfJfCEizZHqVWwuaJLm"
    bool(true)

### Ayrıca Bakınız

- crypt_preferred_method() - Get the prefix of the preferred hash method
- crypt() - Tek yönlü dizge aşlama
- hash_equals() - Zamanlama saldırısı güvenli dize karşılaştırması

# crypt_preferred_method

(PECL xpass >= 1.1.0)

crypt_preferred_method — Get the prefix of the preferred hash method

### Açıklama

function crypt_preferred_method(): ?string

Get the prefix of the preferred hash method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string with the prefix, or `null` in case of an error.

### Örnekler

Örnek 1 A crypt_preferred_method() example

    <?php
    var_dump(crypt_preferred_method());
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "$y$"

### Ayrıca Bakınız

- crypt_gensalt() - Compile a string for use as the salt argument to crypt

## İçindekiler

- crypt_checksalt — Validate a crypt setting string
- crypt_gensalt — Compile a string for use as the salt argument to crypt
- crypt_preferred_method — Get the prefix of the preferred hash method

- Yapılandırma/Kurulum
  - Gereksinimler
  - Installation via PECL
- Öntanımlı Sabitler
- Xpass İşlevleri
  - crypt_checksalt — Validate a crypt setting string
  - crypt_gensalt — Compile a string for use as the salt argument to crypt
  - crypt_preferred_method — Get the prefix of the preferred hash method

- Hash — HASH İleti Aşı Çerçevesi
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - HashContext — HashContext sınıfı
  - Hash İşlevleri
- Mcrypt
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Mcrypt şifreleri
  - Mcrypt İşlevleri
- Mhash
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Mhash İşlevleri
- OpenSSL
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Anahtar/Sertifika Bağımsız değişkenleri
  - Sertifika Doğrulama
  - OpenSSL İşlevleri
  - OpenSSLCertificate — The OpenSSLCertificate sınıfı
  - OpenSSLCertificateSigningRequest — The OpenSSLCertificateSigningRequest sınıfı
  - OpenSSLAsymmetricKey — The OpenSSLAsymmetricKey class
- Password — Parola Aşlama
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Parola Aşlama İşlevleri
- Rnp
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Rnp İşlevleri
  - RnpFFI — The RnpFFI class
- Sodium
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Sodium İşlevleri
  - SodiumException — The SodiumException class
- Xpass
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Xpass İşlevleri

# Veritabanı Eklentileri

# Soyutlama Katmanları

# Database (dbm-style) Abstraction Layer

# Giriş

These functions build the foundation for accessing Berkeley DB style databases.

This is a general abstraction layer for several file-based databases. As such, functionality is limited to a common subset of features supported by modern databases such as » Oracle Berkeley DB.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

The behaviour of various aspects depends on the implementation of the underlying database. Functions such as dba_optimize() and dba_sync() will do what they promise for one database and will do nothing for others. You have to download and install supported dba-Handlers.

List of DBA handlers
Handler | Notes
--- | ---
`dbm` | Dbm is the oldest (original) type of Berkeley DB style databases. You should avoid it, if possible. We do not support the compatibility functions built into DB2 and gdbm, because they are only compatible on the source code level, but cannot handle the original dbm format.
`ndbm` | Ndbm is a newer type and more flexible than dbm. It still has most of the arbitrary limits of dbm (therefore it is deprecated).
`gdbm` | Gdbm is the » GNU database manager.
`db2` | DB2 is for » Oracle Berkeley DB 2. It is described as "a programmatic toolkit that provides high-performance built-in database support for both standalone and client/server applications."
`db3` | DB3 is for » Oracle Berkeley DB 3.
`db4` | DB4 is for » Oracle Berkeley DB 4 or 5. This option can be used with BDB 5 as of PHP 5.3.3.
`cdb` | Cdb is "a fast, reliable, lightweight package for creating and reading constant databases." It is from the author of qmail and can be found at » http://cr.yp.to/cdb.html. Since it is constant, we support only reading operations. We support writing (not updating) through the internal cdb library.
`cdb_make` | We support creation (not updating) of cdb files when the bundled cdb library is used.
`flatfile` | This is available for compatibility with the deprecated `dbm` extension only and should be avoided. However you may use this where files were created in this format. That happens when configure could not find any external library.
`inifile` | This is available to be able to modify php.ini files from within PHP scripts. When working with ini files you can pass arrays of the form array(0=>group,1=>value_name) or strings of the form "[group]value_name" where group is optional. As the functions dba_firstkey() and dba_nextkey() return string representations of the key there is the function dba_key_split() which allows to convert the string keys into array keys without losing `false`.
`qdbm` | The qdbm library can be downloaded from » http://fallabs.com/qdbm/index.html.
`tcadb` | The Tokyo Cabinet library can be downloaded from » http://fallabs.com/tokyocabinet/.
`lmdb` | This is available since PHP 7.2.0. The Lightning Memory-Mapped Database library can be downloaded from » https://symas.com/lmdb/.

When invoking the dba_open() or dba_popen() functions, one of the handler names must be supplied as an argument. The actually available list of handlers is displayed by invoking phpinfo() or dba_handlers().

## Kurulum

By using the --enable-dba=shared configuration option you can build a dynamic loadable module to enable PHP for basic support of dbm-style databases. You also have to add support for at least one of the following handlers by specifying the --with-XXXX or --enable-XXXX configure switch to your PHP configure line.

Uyarı

After configuring and compiling PHP you must execute the following test from commandline: `php run-tests.php ext/dba`. This shows whether your combination of handlers works. Most problematic are `dbm` and `ndbm` which conflict with many installations. The reason for this is that on several systems these libraries are part of more than one other library. The configuration test only prevents you from configuring malfunctioning single handlers but not combinations.

Supported DBA handlers
Handler | Configure Switch
--- | ---
`dbm` | To enable support for dbm add --with-dbm[=DIR]. Bilginize: dbm normally is a wrapper which often results in failures. This means you should only use dbm if you are sure it works and if you really need this format.
`ndbm` | To enable support for ndbm add --with-ndbm[=DIR]. Bilginize: ndbm normally is a wrapper which often results in failures. This means you should only use ndbm if you are sure it works and if you really need this format.
`gdbm` | To enable support for gdbm add --with-gdbm[=DIR].
`db2` | To enable support for Oracle Berkeley DB 2 add --with-db2[=DIR]. Bilginize: db2 conflicts with db3 and db4.
`db3` | To enable support for Oracle Berkeley DB 3 add --with-db3[=DIR]. Bilginize: db3 conflicts with db2 and db4.
`db4` | To enable support for Oracle Berkeley DB 4 or 5 add --with-db4[=DIR]. Bilginize: db4 conflicts with db2 and db3. Bilginize: The db libraries with versions 4.1 through 4.1.24 cannot be used in any PHP version. Support for BDB 5 was added in PHP 5.3.3.
`cdb` | To enable support for cdb add --with-cdb[=DIR]. Bilginize: You can omit DIR to use the bundled cdb library that adds the cdb_make handler which allows creation of cdb files and allows to access cdb files on the network using PHP's streams.
`flatfile` | To enable support for flatfile add --enable-flatfile. Before PHP 5.2.1 the --with-flatfile had to be used instead. Bilginize: This was added to add compatibility with deprecated `dbm` extension. Use this handler only when you cannot install one of the libraries required by the other handlers and when you cannot use bundled cdb handler.
`inifile` | To enable support for `inifile` add --enable-inifile. Before PHP 5.2.1 the --with-inifile had to be used instead. Bilginize: This was added to allow to read and set microsoft style .ini files (like the php.ini file).
`qdbm` | To enable support for qdbm add --with-qdbm[=DIR]. Bilginize: qdbm conflicts with dbm and gdbm. Bilginize: The qdbm library can be downloaded from » http://fallabs.com/qdbm/index.html.
`tcadb` | To enable support for Tokyo Cabinet add --with-tcadb[=DIR]. Bilginize: The Tokyo Cabinet library can be downloaded from » http://fallabs.com/tokyocabinet/.
`lmdb` | To enable support for the Lightning Memory-Mapped Database add --with-lmdb[=DIR]. Bilginize: This was added in PHP 7.2.0. The Lightning Memory-Mapped Database library can be downloaded from » https://symas.com/lmdb/.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

DBA Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
dba.default_handler | DBA_DEFAULT | `INI_ALL` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`dba.default_handler` string
  The name of the default handler

## Özkaynak Türleri

Prior to PHP 8.4.0, most DBA functions operate on or return resources (e.g. dba_open() returns a positive DBA link identifier required by most DBA functions).

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`DBA_LMDB_USE_SUB_DIR` (int)
  LMDB Driver flag to allow the creation of a subdirectory for the database files. Available as of PHP 8.2.0.
`DBA_LMDB_NO_SUB_DIR` (int)
  LMDB Driver flag to disallow the creation of a subdirectory for the database files. Available as of PHP 8.2.0.

# Örnekler

## İçindekiler

- Basic usage

## Basic usage

Örnek 1 DBA example

    <?php

    $id = dba_open("/tmp/test.db", "n", "db2");

    if (!$id) {
        echo "dba_open failed\n";
        exit;
    }

    dba_replace("key", "This is an example!", $id);

    if (dba_exists("key", $id)) {
        echo dba_fetch("key", $id);
        dba_delete("key", $id);
    }

    dba_close($id);
    ?>

DBA is binary safe and does not have any arbitrary limits. However, it inherits all limits set by the underlying database implementation.

All file-based databases must provide a way of setting the file mode of a new created database, if that is possible at all. The file mode is commonly passed as the fourth argument to dba_open() or dba_popen().

You can access all entries of a database in a linear way by using the dba_firstkey() and dba_nextkey() functions. You may not change the database while traversing it.

Örnek 2 Traversing a database

    <?php

    // ...open database...

    $key = dba_firstkey($id);

    while ($key !== false) {
        if (true) {          // remember the key to perform some action later
            $handle_later[] = $key;
        }
        $key = dba_nextkey($id);
    }

    foreach ($handle_later as $val) {
        dba_delete($val, $id);
    }

    ?>

# The Dba\Connection class

(PHP 8 >= 8.4.0)

## Giriş

A fully opaque class which replaces a `dba` resource as of PHP 8.4.0.

## Sınıf Sözdizimi

namespace Dba;
final class Connection {
}

# DBA İşlevleri

# dba_close

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_close — Close a DBA database

### Açıklama

function dba_close(Dba\Connection `$dba`): void

dba_close() closes the established database and frees all resources of the specified database handle.

### Bağımsız Değişkenler

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_open() - Open database
- dba_popen() - Open database persistently

# dba_delete

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_delete — Delete DBA entry specified by key

### Açıklama

function dba_delete(string|array `$key`, Dba\Connection `$dba`): bool

dba_delete() deletes the specified entry from the database.

### Bağımsız Değişkenler

`key`
  The key of the entry which is deleted.
`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_exists() - Check whether key exists
- dba_fetch() - Fetch data specified by key
- dba_insert() - Insert entry
- dba_replace() - Replace or insert entry

# dba_exists

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_exists — Check whether key exists

### Açıklama

function dba_exists(string|array `$key`, Dba\Connection `$dba`): bool

dba_exists() checks whether the specified `key` exists in the database.

### Bağımsız Değişkenler

`key`
  The key the check is performed for.
`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Returns `true` if the key exists, `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_delete() - Delete DBA entry specified by key
- dba_fetch() - Fetch data specified by key
- dba_insert() - Insert entry
- dba_replace() - Replace or insert entry

# dba_fetch

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_fetch — Fetch data specified by key

### Açıklama

function dba_fetch(string|array `$key`, Dba\Connection `$dba`, int `$skip` = 0): string|false

Overloaded signature deprecated as of 8.3.0:

function dba_fetch(string|array `$key`, int `$skip`, resource `$dba`): string

dba_fetch() fetches the data specified by `key` from the database specified with `dba`.

### Bağımsız Değişkenler

`key`
  The key the data is specified by.

  > Bilginize: When working with inifiles this function accepts arrays as keys where index 0 is the group and index 1 is the value name. See: dba_key_split().

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().
`skip`
  The number of key-value pairs to ignore when using cdb databases. This value is ignored for all other databases which do not support multiple keys with the same name.

### Dönen Değerler

Returns the associated string if the key/data pair is found, `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.
8.3.0 | Calling dba_fetch() with `dba` as the 3rd argument is now deprecated.
8.2.0 | dba_fetch()'s optional skip argument is now at the end in line with PHP userland semantics. The previously overloaded signature is still accepted but discouraged.

### Ayrıca Bakınız

- dba_exists() - Check whether key exists
- dba_delete() - Delete DBA entry specified by key
- dba_insert() - Insert entry
- dba_replace() - Replace or insert entry
- dba_key_split() - Splits a key in string representation into array representation

# dba_firstkey

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_firstkey — Fetch first key

### Açıklama

function dba_firstkey(Dba\Connection `$dba`): string|false

dba_firstkey() returns the first key of the database and resets the internal key pointer. This permits a linear search through the whole database.

### Bağımsız Değişkenler

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Returns the key on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_nextkey() - Fetch next key
- dba_key_split() - Splits a key in string representation into array representation
- Example 2 in the DBA examples

# dba_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

dba_handlers — List all the handlers available

### Açıklama

function dba_handlers(bool `$full_info` = `false`): array

dba_handlers() list all the handlers supported by this extension.

### Bağımsız Değişkenler

`full_info`
  Turns on/off full information display in the result.

### Dönen Değerler

Returns an array of database handlers. If `full_info` is set to `true`, the array will be associative with the handlers names as keys, and their version information as value. Otherwise, the result will be an indexed array of handlers names.

> Bilginize: When the internal cdb library is used you will see `cdb` and `cdb_make`.

### Örnekler

Örnek 1 dba_handlers() Example

    <?php

    echo "Available DBA handlers:\n";
    foreach (dba_handlers(true) as $handler_name => $handler_version) {
      // clean the versions
      $handler_version = str_replace('$', '', $handler_version);
      echo " - $handler_name: $handler_version\n";
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Available DBA handlers:
     - cdb: 0.75, Revision: 1.3.2.3
     - cdb_make: 0.75, Revision: 1.2.2.4
     - db2: Sleepycat Software: Berkeley DB 2.7.7: (08/20/99)
     - inifile: 1.0, Revision: 1.6.2.3
     - flatfile: 1.0, Revision: 1.5.2.4

# dba_insert

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_insert — Insert entry

### Açıklama

function dba_insert(string|array `$key`, string `$value`, Dba\Connection `$dba`): bool

dba_insert() inserts the entry described with `key` and `value` into the database.

### Bağımsız Değişkenler

`key`
  The key of the entry to be inserted. If this key already exist in the database, this function will fail. Use dba_replace() if you need to replace an existent key.
`value`
  The value to be inserted.
`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_exists() - Check whether key exists
- dba_delete() - Delete DBA entry specified by key
- dba_fetch() - Fetch data specified by key
- dba_replace() - Replace or insert entry

# dba_key_split

(PHP 5, PHP 7, PHP 8)

dba_key_split — Splits a key in string representation into array representation

### Açıklama

function dba_key_split(string|false|null `$key`): array|false

dba_key_split() splits a key (string representation) into an array representation.

### Bağımsız Değişkenler

`key`
  The key in string representation.

### Dönen Değerler

Returns an array of the form `array(0 => group, 1 => value_name)`. This function will return `false` if `key` is `null` or `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Passing `null` or `false` to `key` is now deprecated.

### Ayrıca Bakınız

- dba_firstkey() - Fetch first key
- dba_nextkey() - Fetch next key
- dba_fetch() - Fetch data specified by key

# dba_list

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

dba_list — List all open database files

### Açıklama

function dba_list(): array

dba_list() list all open database files.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An associative array, in the form `resourceid => filename`.

# dba_nextkey

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_nextkey — Fetch next key

### Açıklama

function dba_nextkey(Dba\Connection `$dba`): string|false

dba_nextkey() returns the next key of the database and advances the internal key pointer.

### Bağımsız Değişkenler

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Returns the key on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_firstkey() - Fetch first key
- dba_key_split() - Splits a key in string representation into array representation
- Example 2 in the DBA examples

# dba_open

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_open — Open database

### Açıklama

function dba_open(
string `$path`,
string `$mode`,
?string `$handler` = `null`,
int `$permission` = 0644,
int `$map_size` = 0,
?int `$flags` = `null`
): Dba\Connection|false

dba_open() establishes a database instance for `path` with `mode` using `handler`.

### Bağımsız Değişkenler

`path`
  Commonly a regular path in your filesystem.
`mode`
  It is `r` for read access, `w` for read/write access to an already existing database, `c` for read/write access and database creation if it doesn't currently exist, and `n` for create, truncate and read/write access. The database is created in BTree mode, other modes (like Hash or Queue) are not supported. Additionally you can set the database lock method with the next char. Use `l` to lock the database with a .lck file or `d` to lock the databasefile itself. It is important that all of your applications do this consistently. If you want to test the access and do not want to wait for the lock you can add `t` as third character. When you are absolutely sure that you do not require database locking you can do so by using `-` instead of `l` or `d`. When none of `d`, `l` or `-` is used, dba will lock on the database file as it would with `d`.

  > Bilginize:

  > There can only be one writer for one database file. When you use dba on a web server and more than one request requires write operations they can only be done one after another. Also read during write is not allowed. The dba extension uses locks to prevent this. See the following table:

  > DBA locking
  > already open | `mode` = "rl" | `mode` = "rlt" | `mode` = "wl" | `mode` = "wlt" | `mode` = "rd" | `mode` = "rdt" | `mode` = "wd" | `mode` = "wdt"
  > --- | --- | --- | --- | --- | --- | --- | --- | ---
  > not open | ok | ok | ok | ok | ok | ok | ok | ok
  > `mode` = "rl" | ok | ok | wait | false | illegal | illegal | illegal | illegal
  > `mode` = "wl" | wait | false | wait | false | illegal | illegal | illegal | illegal
  > `mode` = "rd" | illegal | illegal | illegal | illegal | ok | ok | wait | false
  > `mode` = "wd" | illegal | illegal | illegal | illegal | wait | false | wait | false

  > - ok: the second call will be successful.
  > - wait: the second call waits until dba_close() is called for the first.
  > - false: the second call returns false.
  > - illegal: you must not mix `"l"` and `"d"` modifiers for `mode` parameter.

`handler`
  The name of the handler which shall be used for accessing `path`. It is passed all optional parameters given to dba_open() and can act on behalf of them. If `handler` is `null`, then the default handler is invoked.
`permission`
  Optional int parameter which is passed to the driver. It has the same meaning as the `permissions` parameter of chmod(), and defaults to `0644`. The `db1`, `db2`, `db3`, `db4`, `dbm`, `gdbm`, `ndbm`, and `lmdb` drivers support the `permission` parameter.
`map_size`
  Optional int parameter which is passed to the driver. Its value should be a multiple of the page size of the OS, or zero, to use the default map size. Only the `lmdb` driver accepts the `map_size` parameter.
`flags`
  Flags to pass to the database drivers. If `null` the default flags will be provided. Currently, only the LMDB driver supports the following flags `DBA_LMDB_USE_SUB_DIR` and `DBA_LMDB_NO_SUB_DIR`.

### Dönen Değerler

Returns a Dba\Connection instance on success başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`false` is returned and an `E_WARNING` level error is issued when `handler` is `null`, but there is no default handler.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Returns a Dba\Connection instance now; previously, a resource was returned.
8.2.0 | `flags` is added.
8.2.0 | `handler` is now nullable.
7.3.14, 7.4.2 | The `lmdb` driver now supports an additional `map_size` parameter.

### Ayrıca Bakınız

- dba_popen() - Open database persistently
- dba_close() - Close a DBA database

# dba_optimize

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_optimize — Optimize database

### Açıklama

function dba_optimize(Dba\Connection `$dba`): bool

dba_optimize() optimizes the underlying database.

### Bağımsız Değişkenler

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_sync() - Synchronize database

# dba_popen

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_popen — Open database persistently

### Açıklama

function dba_popen(
string `$path`,
string `$mode`,
?string `$handler` = `null`,
int `$permission` = 0644,
int `$map_size` = 0,
?int `$flags` = `null`
): Dba\Connection|false

dba_popen() establishes a persistent database instance for `path` with `mode` using `handler`.

### Bağımsız Değişkenler

`path`
  Commonly a regular path in your filesystem.
`mode`
  It is `r` for read access, `w` for read/write access to an already existing database, `c` for read/write access and database creation if it doesn't currently exist, and `n` for create, truncate and read/write access.
`handler`
  The name of the handler which shall be used for accessing `path`. It is passed all optional parameters given to dba_popen() and can act on behalf of them. If `handler` is `null`, then the default handler is invoked.
`permission`
  Optional int parameter which is passed to the driver. It has the same meaning as the `permissions` parameter of chmod(), and defaults to `0644`. The `db1`, `db2`, `db3`, `db4`, `dbm`, `gdbm`, `ndbm`, and `lmdb` drivers support the `permission` parameter.
`map_size`
  Optional int parameter which is passed to the driver. Its value should be a multiple of the page size of the OS, or zero, to use the default mapsize. The `lmdb` driver accepts the `map_size` parameter.
`flags`
  Allows to pass flags to the DB drivers. Currently, only LMDB with `DBA_LMDB_USE_SUB_DIR` and `DBA_LMDB_NO_SUB_DIR` are supported.

### Dönen Değerler

Returns a Dba\Connection instance on success başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`false` is returned and an `E_WARNING` level error is issued when `handler` is `null`, but there is no default handler.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Returns a Dba\Connection instance now; previously, a resource was returned.
8.2.0 | `flags` is added.
8.1.0 | `handler` is now nullable.
7.3.14, 7.4.2 | The `lmdb` driver now supports an additional `map_size` parameter.

### Ayrıca Bakınız

- dba_open() - Open database
- dba_close() - Close a DBA database

# dba_replace

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_replace — Replace or insert entry

### Açıklama

function dba_replace(string|array `$key`, string `$value`, Dba\Connection `$dba`): bool

dba_replace() replaces or inserts the entry described with `key` and `value` into the database specified by `dba`.

### Bağımsız Değişkenler

`key`
  The key of the entry to be replaced.
`value`
  The value to be replaced.
`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_exists() - Check whether key exists
- dba_delete() - Delete DBA entry specified by key
- dba_fetch() - Fetch data specified by key
- dba_insert() - Insert entry

# dba_sync

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_sync — Synchronize database

### Açıklama

function dba_sync(Dba\Connection `$dba`): bool

dba_sync() synchronizes the database. This will probably trigger a physical write to the disk, if supported.

### Bağımsız Değişkenler

`dba`
  A Dba\Connection instance, returned by dba_open() or dba_popen().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The `dba` parameter expects a Dba\Connection instance now; previously, a valid `dba` resource was expected.

### Ayrıca Bakınız

- dba_optimize() - Optimize database

## İçindekiler

- dba_close — Close a DBA database
- dba_delete — Delete DBA entry specified by key
- dba_exists — Check whether key exists
- dba_fetch — Fetch data specified by key
- dba_firstkey — Fetch first key
- dba_handlers — List all the handlers available
- dba_insert — Insert entry
- dba_key_split — Splits a key in string representation into array representation
- dba_list — List all open database files
- dba_nextkey — Fetch next key
- dba_open — Open database
- dba_optimize — Optimize database
- dba_popen — Open database persistently
- dba_replace — Replace or insert entry
- dba_sync — Synchronize database

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
  - Basic usage
- Dba\Connection — The Dba\Connection class
- DBA İşlevleri
  - dba_close — Close a DBA database
  - dba_delete — Delete DBA entry specified by key
  - dba_exists — Check whether key exists
  - dba_fetch — Fetch data specified by key
  - dba_firstkey — Fetch first key
  - dba_handlers — List all the handlers available
  - dba_insert — Insert entry
  - dba_key_split — Splits a key in string representation into array representation
  - dba_list — List all open database files
  - dba_nextkey — Fetch next key
  - dba_open — Open database
  - dba_optimize — Optimize database
  - dba_popen — Open database persistently
  - dba_replace — Replace or insert entry
  - dba_sync — Synchronize database

# ODBC (Tekilleştirilmiş)

# Giriş

Normal ODBC desteğine ek olarak, PHP'nin çeşitli veritabanlarına erişimini mümkün kılmak için Tekilleştirilmiş ODBC desteği de sağlanmıştır. uODBC kendi programlama arayüzünü gerçeklemek için anlamsallığı ODBC programlama arayüzünden alır. Neredeyse birbirinin aynı bir sürü veritabanı sürücüsü yapmak yerine bu sürücüler tek bir ODBC işlevleri kümesiyle gerçeklenmiştir.

Tekilleştirilmiş ODBC işlevlerince desteklenen veritabanları: » Adabas D, » IBM DB2, » iODBC, » Solid, ve » Sybase SQL Anywhere.

> Bilginize:

> iODBC dışında, bu veritabanlarına bağlanırken başka ODBC gerekmez. Bunlarla çalışırken kullandığınız işlevler ODBC işlevleriyle aynı isimleri ve sözdizimini paylaşırlar. Bununla birlikte, PHP'yi iODBC desteğiyle derleyerek PHP uygulamalarınızda ODBC uyumlu sürücüleri de kullanabilirsiniz. iODBC hakkında ayrıntılı bilgi için » http://www.iodbc.org/ adresine unixODBC için ise » http://www.iodbc.org/ adresine bakınız.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

Desteklenen veritabanlarına erişmek için gerekli kütüphanelerin sisteminizde kurulu olması gerekir.

## Kurulum

Derleme seçenekleri:

--with-adabas[=DiZiN]

  PHP, Adabas D desteğiyle derlenir. DiZiN, Adabas ana kurulum dizini olup, /usr/local öntanımlıdır.

--with-sapdb[=DiZiN]

  PHP, SAP DB desteğiyle derlenir. DiZiN, SAP DB ana kurulum dizini olup, /usr/local öntanımlıdır.

--with-solid[=DiZiN]

  PHP, Solid desteğiyle derlenir. DiZiN, Solid ana kurulum dizini olup, /usr/local/solid öntanımlıdır.

--with-ibm-db2[=DiZiN]

  PHP, IBM DB2 desteğiyle derlenir. DiZiN, DB2 ana kurulum dizini olup, /home/db2inst1/sqllib öntanımlıdır.

--with-empress[=DiZiN]

  PHP, Empress desteğiyle derlenir. DiZiN, Empress ana kurulum dizini olup, $EMPRESSPATH öntanımlıdır. Bu seçenek Empress 8.60 ve üstünü gerektirir.

--with-empress-bcs[=DiZiN]

  PHP, `"Empress Local Access"` desteğiyle derlenir. DiZiN, Empress ana kurulum dizini olup, $EMPRESSPATH öntanımlıdır. Bu seçenek Empress 8.60 ve üstünü gerektirir.

--with-birdstep[=DiZiN]

  PHP, Birdstep desteğiyle derlenir. DiZiN, Birdstep ana kurulum dizini olup, /usr/local/birdstep öntanımlıdır.

--with-custom-odbc[=DiZiN]

  PHP, kullanıcı tanımlı ODBC desteğiyle derlenir. DiZiN, ODBC ana kurulum dizini olup, /usr/local öntanımlıdır. CUSTOM_ODBC_LIBS ortam değişkenini tanımlamayı ve odbc.h dosyasını include dizinizde bulundurmayı unutmayın. Örneğin, QNX üzerinde Sybase SQL Anywhere 5.5.00 için configure betiğini çalıştırmadan önce şu tanımları yapmalısınız:

         CPPFLAGS="-DODBC_QNX -DSQLANY_BUG"
         LDFLAGS=-lunix
         CUSTOM_ODBC_LIBS="-ldblib -lodbc".

--with-iodbc[=DiZiN]

  PHP, iODBC desteğiyle derlenir. DiZiN, iODBC ana kurulum dizini olup, /usr/local öntanımlıdır.

--with-esoob[=DiZiN]

  PHP, Easysoft desteğiyle derlenir. DiZiN, OOB ana kurulum dizini olup, /usr/local/easysoft/oob/client öntanımlıdır.

--with-unixODBC[=DiZiN]

  PHP, unixODBC desteğiyle derlenir. DiZiN, unixODBC ana kurulum dizini olup, /usr/local öntanımlıdır.

--with-openlink[=DiZiN]

  PHP, OpenLink ODBC desteğiyle derlenir. DiZiN, OpenLink ana kurulum dizini olup, /usr/local öntanımlıdır. Bu, iODBC için de böyledir.

--with-dbmaker[=DiZiN]

  PHP, DBMaker desteğiyle derlenir. DiZiN, DBMaker ana kurulum dizini olup, DBMaker'ın son kurulu olduğu yer öntanımlıdır (örneğin, /home/dbmaker/3.6).

Windows kullanıcıları bu eklentiyi kullanmadan önce php_odbc.dll kütüphanesini etkinleştirmelidir.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Tekilleştirilmiş ODBC Yapılandırma Yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
odbc.allow_persistent | "1" | `INI_SYSTEM` |
odbc.check_persistent | "1" | `INI_SYSTEM` |
odbc.max_persistent | "-1" | `INI_SYSTEM` |
odbc.max_links | "-1" | `INI_SYSTEM` |
odbc.defaultlrl | "4096" | `INI_ALL` |
odbc.defaultbinmode | "1" | `INI_ALL` |
odbc.default_cursortype | "3" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`odbc.default_db` string

  odbc_connect() veya odbc_pconnect() işlevinde belirtilmediği takdirde kullanılacak ODBC veri kaynağı.

`odbc.default_user` string

  odbc_connect() veya odbc_pconnect() işlevinde belirtilmediği takdirde kullanılacak kullanıcı ismi.

`odbc.default_pw` string

  odbc_connect() veya odbc_pconnect() işlevinde belirtilmediği takdirde kullanılacak parola.

`odbc.allow_persistent` bool

  Kalıcı ODBC bağlantılarına izin verilecekse: On.

`odbc.check_persistent` bool

  Tekrar kullanmadan önce bağlantı geçerli mi diye bakılacaksa: On

`odbc.max_persistent` int

  Süreç başına azami kalıcı ODBC bağlantı sayısı.

`odbc.max_links` int

  Kalıcı bağlantılar dahil, süreç başına azami ODBC bağlantı sayısı.

`odbc.defaultlrl` int

  LONG alanlar için değişkende döndürülen bayt sayısı. Ayrıntılar için odbc_longreadlen() işlevine bakınız.

  int türünde bir değer kullanıldığında değer baytların sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri hakkında bilgiyi bu SSS altında bulabilirsiniz.
`odbc.defaultbinmode` int

  İkil verilerin ele alınış tarzı. Ayrıntılar için odbc_binmode() işlevine bakınız.

`odbc.default_cursortype` int

  ODBC imleç türü. Olası değerler: `SQL_CURSOR_FORWARD_ONLY`, `SQL_CURSOR_KEYSET_DRIVEN`, `SQL_CURSOR_DYNAMIC` ve `SQL_CURSOR_STATIC` (öntanımlı).

## Özkaynak Türleri

Bu eklenti iki özkaynak türü tanımlar: ODBC bağlantı tanıtıcısı ve ODBC sonuç tanıtıcısı.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`ODBC_TYPE` (int)
`ODBC_BINMODE_PASSTHRU` (int)
`ODBC_BINMODE_RETURN` (int)
`ODBC_BINMODE_CONVERT` (int)
`SQL_ODBC_CURSORS` (int)
`SQL_CUR_USE_DRIVER` (int)
`SQL_CUR_USE_IF_NEEDED` (int)
`SQL_CUR_USE_ODBC` (int)
`SQL_CONCURRENCY` (int)
`SQL_CONCUR_READ_ONLY` (int)
`SQL_CONCUR_LOCK` (int)
`SQL_CONCUR_ROWVER` (int)
`SQL_CONCUR_VALUES` (int)
`SQL_CURSOR_TYPE` (int)
`SQL_CURSOR_FORWARD_ONLY` (int)
`SQL_CURSOR_KEYSET_DRIVEN` (int)
`SQL_CURSOR_DYNAMIC` (int)
`SQL_CURSOR_STATIC` (int)
`SQL_KEYSET_SIZE` (int)
`SQL_CHAR` (int)
`SQL_VARCHAR` (int)
`SQL_LONGVARCHAR` (int)
`SQL_WCHAR` (int)
  Sabit uzunluktaki Unicode karakter dizisi.
`SQL_WVARCHAR` (int)
  Değişken uzunluktaki Unicode karakter dizisi.
`SQL_WLONGVARCHAR` (int)
  Değişken uzunluktaki Unicode karakter dizisi. Azami uzunluk veri kaynağına bağlıdır.
`SQL_DECIMAL` (int)
`SQL_NUMERIC` (int)
`SQL_BIT` (int)
`SQL_TINYINT` (int)
`SQL_SMALLINT` (int)
`SQL_INTEGER` (int)
`SQL_BIGINT` (int)
`SQL_REAL` (int)
`SQL_FLOAT` (int)
`SQL_DOUBLE` (int)
`SQL_BINARY` (int)
`SQL_VARBINARY` (int)
`SQL_LONGVARBINARY` (int)
`SQL_DATE` (int)
`SQL_TIME` (int)
`SQL_TIMESTAMP` (int)
`SQL_TYPE_DATE` (int)
`SQL_TYPE_TIME` (int)
`SQL_TYPE_TIMESTAMP` (int)
`SQL_BEST_ROWID` (int)
`SQL_ROWVER` (int)
`SQL_SCOPE_CURROW` (int)
`SQL_SCOPE_TRANSACTION` (int)
`SQL_SCOPE_SESSION` (int)
`SQL_NO_NULLS` (int)
`SQL_NULLABLE` (int)
`SQL_INDEX_UNIQUE` (int)
`SQL_INDEX_ALL` (int)
`SQL_ENSURE` (int)
`SQL_QUICK` (int)
`SQL_FETCH_FIRST` (int)
  İlk satır kümesini döndür.
`SQL_FETCH_NEXT` (int)
  Sonraki satır kümesini döndür.

# ODBC İşlevleri

# odbc_autocommit

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_autocommit — Ototeslim kipini açıp kapar

### Açıklama

function odbc_autocommit(resource `$bağlantı_kimliği`, ?bool `$etkin` = `null`): int|bool

Ototeslim kipini açıp kapar.

Bir bağlantı üzerinde öntanımlı olarak ototeslim kipi etkindir. İptal edilmesi bir hareket (transaction) başlatmaya eşdeğerdir.

### Bağımsız Değişkenler

`bağlantı_kimliği`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`etkin`

  `etkin` `true` ise ototeslim kipi etkin olur, `false` ise iptal edilir. `null` aktarılırsa `odbc` için ototeslim kipinin durumu döner.

### Dönen Değerler

`etkin` bağımsız değişkenine `null` belirtilirse, ototeslim kipinin durumu döner. Ototeslim kipi etkin değilse veya bir hata oluşmuşsa `false` yoksa 0 döner.

`etkin` `null` değilse işlev başarı durumunda `true`, yoksa `false` döndürür.

### Ayrıca Bakınız

- odbc_commit() - Bir ODBC hareket listesi gönderir
- odbc_rollback() - Bir hareketi başa döndürür

# odbc_binmode

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_binmode — İkil sütun verileri ile çalışmayı etkin kılar

### Açıklama

function odbc_binmode(resource `$deyim`, int `$kip`): true

İkil sütun verileri ile çalışmayı denetler. Etkilenen ODBC SQL türleri: `BINARY`, `VARBINARY` ve `LONGVARBINARY`. Öntanımlı kip uodbc.defaultbinmode php.ini yönergesi kullanılarak atanabilir.

İkil SQL veri, karakter C verisine (`ODBC_BINMODE_CONVERT`) dönüştürüldüğünde kaynak verisinin her baytı (8 biti) iki ASCII karakteri ile temsil edilir. Bu karakterler sayının onaltılık tabandaki ASCII karakter gösterimidir. Örneğin, `00000001` sayısı `"01"` dizgesine dönüştürülürken `11111111` sayısı, `"FF"` dizgesine dönüştürülür.

`BINARY` ve `VARBINARY` sütunlarla ilgili işlemler sadece odbc_binmode() işlevinden etkilenirken `LONGVARBINARY` sütunlarla ilgili işlemler odbc_longreadlen() işlevinden de etkilenir:

LONGVARBINARY işlemi
odbc_binmode() | odbc_longreadlen() | sonuç
--- | --- | ---
`ODBC_BINMODE_PASSTHRU` | 0 | düzgeçer
`ODBC_BINMODE_RETURN` | 0 | düzgeçer
`ODBC_BINMODE_CONVERT` | 0 | düzgeçer
`ODBC_BINMODE_PASSTHRU` | >0 | düzgeçer
`ODBC_BINMODE_RETURN` | >>0 | olduğu gibi döner
`ODBC_BINMODE_CONVERT` | >>0 | karakter olarak döner

odbc_fetch_into() kullanıldığında, düzgeçer, bu sütunlar için boş dizge döneceği anlamına gelir. odbc_result() kullanıldığında, düzgeçer, verinin doğrudan istemciye gönderildiği (yani basıldığı) anlamına gelir.

### Bağımsız Değişkenler

`deyim`

  Sonuç kimliği.

  `deyim` = `0` ise ayarlar öntanımlı olarak yeni sonuçlara uygulanır.

`kip`

  Olası `kip` değerleri:

  - `ODBC_BINMODE_PASSTHRU`: İkil veri düzgeçer.
  - `ODBC_BINMODE_RETURN`: Olduğu gibi döner.
  - `ODBC_BINMODE_CONVERT`: Karaktere dönüştürülüp döndürülür.

  > Bilginize: `LONGVARBINARY` sütunlarla ilgili işlemler ayrıca odbc_longreadlen() işlevinden de etkilenir.

### Dönen Değerler

Daima `true` döndürür.

# odbc_close

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_close — Bir ODBC bağlantısını kapatır

### Açıklama

function odbc_close(resource `$odbc`): void

Veritabanı sunucusuyla bağlantıyı sonlandırır.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

Hiçbir değer dönmez.

### Notlar

> Bilginize:

> Bağlantıda henüz tamamlanmamış bir hareket kalmışsa işlev başarısız olur. Böyle bir durumda bağlantı açık kalır.

# odbc_close_all

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_close_all — Tüm ODBC bağlantılarını kapatır

### Açıklama

function odbc_close_all(): void

odbc_close_all() işlevi tüm veritabanı sunucularıyla kurulmuş bağlantıları sonlandırır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Notlar

> Bilginize:

> Bir bağlantıda henüz tamamlanmamış bir hareket kalmışsa işlev başarısız olur. Böyle bir durumda o bağlantı açık kalır.

# odbc_columnprivileges

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_columnprivileges — Belirtilen tablo ile ilgili izinleri ve sütunları listeler

### Açıklama

function odbc_columnprivileges(
resource `$odbc`,
?string `$katalog`,
string `$şema`,
string `$tablo`,
string `$sütun`
): resource|false

Belirtilen tablo ile ilgili izinleri ve sütunları listeler.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`tablo`

  Tablo ismi. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`sütun`

  Sütun adı. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

### Dönen Değerler

Başarısızlık durumunda `false`, yoksa bir ODBC sonuç tanıtıcısı döner. Bu sonuç tanıtıcısı ilgili izinlerin ve sütun listelerinin döndürülmesi için kullanılabilir.

Sonuç kümesi şu sütunlardan oluşur:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `COLUMN_NAME`
- `GRANTOR`
- `GRANTEE`
- `PRIVILEGE`
- `IS_GRANTABLE`

Drivers can report additional columns.

Sonuç kümesi `TABLE_CAT`, `TABLE_SCHEM`, `TABLE_NAME`, `COLUMN_NAME` ve `PRIVILEGE` sütunlarına göre sıralıdır.

### Örnekler

Örnek 1 - Sütunlar için Liste Ayrıcalıkları

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $privileges = odbc_columnprivileges($conn, 'TutorialDB', 'dbo', 'test', 'id');
    while (($row = odbc_fetch_array($privileges))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => TutorialDB
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => test
        [COLUMN_NAME] => id
        [GRANTOR] => dbo
        [GRANTEE] => dbo
        [PRIVILEGE] => INSERT
        [IS_GRANTABLE] => YES
    )

# odbc_columns

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_columns — Belirtilen tablolardaki sütun isimlerini listeler

### Açıklama

function odbc_columns(
resource `$odbc`,
?string `$katalog` = ?,
?string `$şema` = ?,
?string `$tablo` = ?,
?string `$sütun` = ?
): resource|false

Belirtilen aralıktaki tüm sütunları listeler.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`tablo`

  Tablo ismi. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`sütun`

  Sütun ismi. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

### Dönen Değerler

Başarısızlık durumunda `false`, yoksa bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlara sahiptir:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `COLUMN_NAME`
- `DATA_TYPE`
- `TYPE_NAME`
- `COLUMN_SIZE`
- `BUFFER_LENGTH`
- `DECIMAL_DIGITS`
- `NUM_PREC_RADIX`
- `NULLABLE`
- `REMARKS`
- `COLUMN_DEF`
- `SQL_DATA_TYPE`
- `SQL_DATETIME_SUB`
- `CHAR_OCTET_LENGTH`
- `ORDINAL_POSITION`
- `IS_NULLABLE`

Drivers can report additional columns.

Sonuç, `TABLE_CAT`, `TABLE_SCHEM`, `TABLE_NAME` ve `ORDINAL_POSITION` sütunlarına göre sıralanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `şema`, `tablo` ve `sütun` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Tablo sütunlarının listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $columns = odbc_columns($conn, 'TutorialDB', 'dbo', 'test', '%');
    while (($row = odbc_fetch_array($columns))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => TutorialDB
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => TEST
        [COLUMN_NAME] => id
        [DATA_TYPE] => 4
        [TYPE_NAME] => int
        [COLUMN_SIZE] => 10
        [BUFFER_LENGTH] => 4
        [DECIMAL_DIGITS] => 0
        [NUM_PREC_RADIX] => 10
        [NULLABLE] => 0
        [REMARKS] =>
        [COLUMN_DEF] =>
        [SQL_DATA_TYPE] => 4
        [SQL_DATETIME_SUB] =>
        [CHAR_OCTET_LENGTH] =>
        [ORDINAL_POSITION] => 1
        [IS_NULLABLE] => NO
    )

### Ayrıca Bakınız

- odbc_columnprivileges() - Belirtilen tablo ile ilgili izinleri ve sütunları listeler
- odbc_procedurecolumns() - Yordamların bağımsız değişkenleri hakkında bilgi döndürür

# odbc_commit

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_commit — Bir ODBC hareket listesi gönderir

### Açıklama

function odbc_commit(resource `$odbc`): bool

Bağlantıda bekleyen tüm hareketleri işleme sokar.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# odbc_connect

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_connect — Bir veri kaynağına bağlanır

### Açıklama

function odbc_connect(
string `$dsn`,
string `$kullanıcı`,
string `$parola`,
int `$imleç_türü` = `SQL_CUR_USE_DRIVER`
): resource|false

Diğer ODBC işlevleri tarafından kullanılmak üzere bir bağlantı tanıtıcısı döndürür. Farklı kullanıcı ve parola veya farklı veritabanları belirterek aynı anda birden fazla veri kaynağına bağlı olabilirsiniz.

Bazı ODBC sürücülerinde, karmaşık bir saklanmış yordamın çalıştırılması şuna benzer bir hata üretebilir: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it" (Türkçesi: tek bir 'select' deyiminden başka hiçbir şey için saklanmış yordam üzerinde imleç açılamaz). SQL_CUR_USE_ODBC kullanarak bu hatadan kurtulabilirsiniz. Ayrıca bazı sürücüler, odbc_fetch_row() işlevindeki `satır` bağımsız değişkenini de desteklemezler. Böyle bir durumda SQL_CUR_USE_ODBC sabitinin yardımı olabilir.

### Bağımsız Değişkenler

`dsn`

  Bağlanılacak veritabanı kaynağının ismi. Bir DSN'siz bağlantı dizgesi de belirtilebilir.

`kullanıcı`

  Kullanıcı ismi.

`parola`

  Parola.

`imleç_türü`

  Bağlantı için kullanılacak imleç türü. Normalde bu bağımsız değişkene gerek yoktur, fakat bazı ODBC sürücüleriyle ilgili sorunlardan kurtulmak için yararlı olabilir.

  İmleç türü olarak belirtilebilecek sabitler:

  - SQL_CUR_USE_IF_NEEDED
  - SQL_CUR_USE_ODBC
  - SQL_CUR_USE_DRIVER

### Dönen Değerler

ODBC Bağlantısı, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 DSN'siz bağlantı

    <?php
    // SQL Native Client 10.0 ODBC Sürücüsü kullanan Microsoft SQL Sunucusu
    // SQL 7, 2000, 2005 ve 2008'e bağlantıya izin verir.
    $connection = odbc_connect(
      "Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;",
      $user, $password);

    // Microsoft Access
    $connection = odbc_connect(
        "Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename",
        $user, $password);

    // Microsoft Excel
    $excelFile = realpath('C:/ExcelData.xls');
    $excelDir = dirname($excelFile);
    $connection = odbc_connect("Driver={Microsoft Excel Driver (*.xls)};
          DriverId=790;Dbq=$excelFile;DefaultDir=$excelDir" , '', '');
    ?>

### Ayrıca Bakınız

- odbc_pconnect() - Bir kalıcı veritabanı bağlantısı açar

# odbc_connection_string_is_quoted

(PHP 8 >= 8.2.0)

odbc_connection_string_is_quoted — Determines if an ODBC connection string value is quoted

### Açıklama

function odbc_connection_string_is_quoted(string `$str`): bool

Determines if a string is properly quoted for an ODBC connection string value. ODBC connection string quoting is performed using curly braces, and ending braces within a string must be escaped through repeating them twice, similar to SQL quoting.

### Bağımsız Değişkenler

`str`

  The string to check for quoting.

### Dönen Değerler

`true` if quoted properly, `false` if not.

### Ayrıca Bakınız

- odbc_connection_string_quote() - Quotes an ODBC connection string value
- odbc_connection_string_should_quote() - Determines if an ODBC connection string value should be quoted

# odbc_connection_string_quote

(PHP 8 >= 8.2.0)

odbc_connection_string_quote — Quotes an ODBC connection string value

### Açıklama

function odbc_connection_string_quote(string `$str`): string

Quotes a value for a connection string, according to ODBC rules. That is, it will be surrounded by quotes, and any ending curly braces will be escaped. This should be done for any connection string values that come from user input. Not doing so can lead to issues with parsing the connection string, or values being injected into the connection string.

Note that this function does not check if the string is already quoted, nor if the string needs quoting. For that, call odbc_connection_string_is_quoted() and odbc_connection_string_should_quote().

### Bağımsız Değişkenler

`str`

  The unquoted string.

### Dönen Değerler

A quoted string, surrounded by curly braces, and properly escaped.

### Örnekler

Örnek 1 odbc_connection_string_quote() example

This example quotes a string, then puts it in a connection string. Note that the string is quoted, and the ending quote character in the middle of the string has been escaped.

    <?php
    $value = odbc_connection_string_quote("foo}bar");
    $connection_string = "DSN=PHP;UserValue=$value";
    echo $connection_string;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    DSN=PHP;UserValue={foo}}bar}

### Ayrıca Bakınız

- odbc_connection_string_is_quoted() - Determines if an ODBC connection string value is quoted
- odbc_connection_string_should_quote() - Determines if an ODBC connection string value should be quoted

# odbc_connection_string_should_quote

(PHP 8 >= 8.2.0)

odbc_connection_string_should_quote — Determines if an ODBC connection string value should be quoted

### Açıklama

function odbc_connection_string_should_quote(string `$str`): bool

Determines if a string needs to be quoted for an ODBC connection string value; that is, if it contains special characters.

Note that this does not check if the string is already quoted; an already quoted string will contain characters that will make this function return true. You should call odbc_connection_string_is_quoted() to check.

### Bağımsız Değişkenler

`str`

  The string to check for.

### Dönen Değerler

`true` if the string should be quoted; `false` otherwise.

### Ayrıca Bakınız

- odbc_connection_string_quote() - Quotes an ODBC connection string value
- odbc_connection_string_is_quoted() - Determines if an ODBC connection string value is quoted

# odbc_cursor

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_cursor — İmleç ismini döndürür

### Açıklama

function odbc_cursor(resource `$deyim`): string|false

Belirtilen sonuç kimliği ile ilgili imleç ismini döndürür.

### Bağımsız Değişkenler

`deyim`

  Sonuç tanıtıcısı.

### Dönen Değerler

Dizge olarak imleç ismi, başarısızlık durumunda `false` döner.

# odbc_data_source

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

odbc_data_source — Kullanılabilir DSN'ler hakkında bilgi döndürür

### Açıklama

function odbc_data_source(resource `$odbc`, int `$alım_türü`): array|null|false

(Defalarca çağırdıktan sonra) Kullanılabilir DSN'lerin listesini döndürür.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`alım_türü`

  Şu iki sabitten biri olabilir: `SQL_FETCH_FIRST` ve `SQL_FETCH_NEXT`. İşlevi ilk çağırışınızda `SQL_FETCH_FIRST`, sonrakilerde `SQL_FETCH_NEXT` sabitini kullanın.

### Dönen Değerler

Başarı durumunda bir dizi, kullanılabilir son DSN'yi alıp getirdikten sonra `null`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Kulanılabilir DSN'lerin listesi'

    <?php
    $conn = odbc_connect('dsn', 'user', 'pass');
    $dsn_info = odbc_data_source($conn, SQL_FETCH_FIRST);
    while ($dsn_info) {
        print_r($dsn_info);
        $dsn_info = odbc_data_source($conn, SQL_FETCH_NEXT);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [server] => dsn
        [description] => ODBC Driver 17 for SQL Server
    )
    Array
    (
        [server] => other_dsn
        [description] => Microsoft Access Driver (*.mdb, *.accdb)
    )

# odbc_do

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_do — odbc_exec() işlevinin takma adıdır

### Açıklama

Bu işlev, odbc_exec() işlevinin takma adıdır.

# odbc_error

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

odbc_error — Son hata kodunu döndürür

### Açıklama

function odbc_error(?resource `$odbc` = `null`): string

Hata oluşmuşsa altı haneli bir ODBC durum kodu yoksa boş bir dizge döner.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

`odbc` belirtilmişse bağlantının son durumu, yoksa herhangi bir bağlantının son durumu döner.

Bu işlev sadece son ODBC sorgusu başarısız olmuşsa anlamlı bir değer döndürür (odbc_exec() işlevinin `false` döndürmesi gibi).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `odbc` artık `null` olabiliyor.

### Ayrıca Bakınız

- odbc_errormsg() - Son hata iletisini döndürür
- odbc_exec() - SQL deyimini doğrudan çalıştırır

# odbc_errormsg

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

odbc_errormsg — Son hata iletisini döndürür

### Açıklama

function odbc_errormsg(?resource `$odbc` = `null`): string

Son ODBC hata iletisini içeren bir dizge veya hata oluşmamışsa boş bir dizge döner.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

Bir `odbc` belirtilmişse bu bağlantının son durumu ile aksi takdirde herhangi bir bağlantının son durumu ile ilgili bir hata iletisi dizgesi döner.

Bu işlevin döndürdüğü dizge sadece son ODBC sorgusu başarısız olmuşsa anlamlıdır (odbc_exec() işlevinin `false` döndürmesi gibi).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `odbc` artık `null` olabiliyor.

### Ayrıca Bakınız

- odbc_error() - Son hata kodunu döndürür
- odbc_exec() - SQL deyimini doğrudan çalıştırır

# odbc_exec

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_exec — SQL deyimini doğrudan çalıştırır

### Açıklama

function odbc_exec(resource `$odbc`, string `$sorgu`): resource|false

Veritabanı sunucusuna bir SQL deyimi gönderir.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`sorgu`

  SQL deyimi.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` bağımsız değişkeni kaldırıldı.

### Dönen Değerler

SQL deyimi çalıştırılabilmişse bir ODBC sonuç tanıtıcısı, yoksa `false` döner.

### Ayrıca Bakınız

- odbc_prepare() - Çalıştırılmak üzere bir deyim hazırlar
- odbc_execute() - Bir hazır deyimi çalıştırır

# odbc_execute

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_execute — Bir hazır deyimi çalıştırır

### Açıklama

function odbc_execute(resource `$deyim`, array `$bağımsız_değişkenler` = []): bool

odbc_prepare() ile hazırlanmış bir deyimi çalıştırır.

### Bağımsız Değişkenler

`deyim`

  odbc_prepare() işlevinden dönen bir sonuç tanıtıcısı.

`bağımsız_değişkenler`

  `bağımsız_değişkenler` dizisindeki bağımsız değişkenlerin hazırlanmış deyimler için birer yer tutucu olduğu varsayılır. Bu dizideki elemanlar bu işlev çağrılarak dizgelere dönüştürülürler.

  `bağımsız_değişkenler` dizisindeki isimlerden tek tırnak içine alınmış olanlar veritabanı sunucusuna gönderilecek veya alınacak verileri tutan dosya isimleri olarak ele alınır.

  Belirttiğiniz dizgenin bir dosya değil de tek tırnak içine alınmış bir dizge olarak ele alınmasını isterseniz tek tırnaklı dizgenin başına ve sonuna bir boşluk veya tek tırnak dışında bir karakter ekleyin. Bu uygulanabilir değilse, dizgeyi saklamak için başka bir mekanizma kullanmalısınız (sorguyu doğrudan odbc_exec() ile çalıştırmak gibi).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - odbc_execute() ve odbc_prepare() örneği

Aşağıdaki kodda, myproc'un üç bağımsız değişkeni de IN bağımsız değişkeni ise $success daima `true` olacaktır:

    <?php
    $a = 1;
    $b = 2;
    $c = 3;
    $stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
    $success = odbc_execute($stmt, array($a, $b, $c));
    ?>

Saklanmış bir yordamı INOUT veya OUT bağımsız değişkenleri ile çağırmanız gerekirse bunun için veritabanınızın kendi eklentisini kullanmanızı öneririz (Oracle için oci8 gibi).

### Ayrıca Bakınız

- odbc_prepare() - Çalıştırılmak üzere bir deyim hazırlar

# odbc_fetch_array

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

odbc_fetch_array — Sonuç satırını bir ilişkisel dizi olarak döndürür

### Açıklama

function odbc_fetch_array(resource `$deyim`, int `$satır` = -1): array|false

Bir ODBC sorgusunun sonucunu bir ilişkisel dizi olarak döndürür

### Bağımsız Değişkenler

`deyim`

  odbc_exec() işlevinden dönen bir sonuç tanıtıcısı.

`satır`

  Döndürülecek satır numarası; isteğe bağlıdır.

### Dönen Değerler

Döndürülecek bir satır yoksa `false`, aksi takdirde bir dizi döner.

### Notlar

> Bilginize: DBMaker, IBM DB2 veya UnixODBC desteğiyle derleme durumunda bu işlev mevcuttur.

### Ayrıca Bakınız

- odbc_fetch_row() - Bir satır döndürür
- odbc_fetch_object() - Sonuç satırını bir nesne olarak döndürür
- odbc_num_rows() - Bir sonuçtaki satır sayısını döndürür

# odbc_fetch_into

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_fetch_into — Sonuç satırını bir dizi olarak döndürür

### Açıklama

function odbc_fetch_into(resource `$deyim`, array `&$dizi`, int `$satır` = 0): int|false

Sonuç satırını bir dizi olarak döndürür.

### Bağımsız Değişkenler

`deyim`

  resource türünde sonuç.

`dizi`

  array türünde sonuç. Döndürülecek sonuç satırını içerecek dizi. İşlev tarafından bir diziye dönüştürüleceğinden herhangi bir değişken belirtmek yeterlidir. Dizideki sütunların numaraları 0'dan başlar.

`satır`

  Satır numarası.

### Dönen Değerler

Sonuçtaki sütun sayısı, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - odbc_fetch_into() örnekleri

    <?php
    $rc = odbc_fetch_into($res_id, $my_array);
    ?>

veya

    <?php
    $rc = odbc_fetch_into($res_id, $my_array, 2);
    ?>

# odbc_fetch_object

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

odbc_fetch_object — Sonuç satırını bir nesne olarak döndürür

### Açıklama

function odbc_fetch_object(resource `$deyim`, int `$satır` = -1): stdClass|false

Bir ODBC sonuç kümesindeki bir satırı stdClass örneği olarak döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`satır`

  Döndürülecek satırın numarası; belirtilmesi isteğe bağlıdır.

### Dönen Değerler

İstenen satırı içeren bir nesne döner. Satır kalmamışsa `false` döner.

### Notlar

> Bilginize: DBMaker, IBM DB2 veya UnixODBC desteğiyle derleme durumunda bu işlev mevcuttur.

### Ayrıca Bakınız

- odbc_fetch_row() - Bir satır döndürür
- odbc_fetch_array() - Sonuç satırını bir ilişkisel dizi olarak döndürür
- odbc_num_rows() - Bir sonuçtaki satır sayısını döndürür

# odbc_fetch_row

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_fetch_row — Bir satır döndürür

### Açıklama

function odbc_fetch_row(resource `$deyim`, ?int `$satır` = `null`): bool

Sonuç kümesindeki bir satırı döndürür. odbc_fetch_row() çağrısından sonra bu satırın alanlarına odbc_result() ile ulaşılabilir.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`satır`

  `satır` belirtilmişse, işlev sonuç kümesindeki sonraki satırı döndürmeye çalışır. `satır` belirtilmeden yapılan ilk çağrının sonucu karmaşık olabilir.

  Sonuç üzerinde satır satır ilerlemek için ilk çağrı `satır` bağımsız değişkenine 1 belirterek, sonraki çağrılar `satır` belirtilmeksizin yapılır. Eğer sürücü satır numarası ile satır döndürmeyi desteklemiyorsa `satır` sürücü tarafından yok sayılır.

### Dönen Değerler

Bir satır varsa `true`, aksi takdirde `false` döner

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `satır` artık `null` olabiliyor.

# odbc_field_len

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_field_len — Bir alanın uzunluğunu (hassasiyetini) döndürür

### Açıklama

function odbc_field_len(resource `$deyim`, int `$alan`): int|false

Sonuç kümesindeki numarası belirtilen alanın uzunluğunu döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`alan`

  Alan numarası. Alan numaraları 1'den başlar.

### Dönen Değerler

Hata durumunda `false`, yoksa alan uzunluğunu bir tamsayı olarak döndürür.

### Ayrıca Bakınız

- odbc_field_scale() - Bir alanın skalasını döndürür

# odbc_alan_adı

(No version information available, might only be in Git)

odbc_alan_adı — Sütun ismini döndürür

### Açıklama

function odbc_field_name(resource `$deyim`, int `$alan`): string|false

Sütun kümesindeki sütun numarası belirtilen alanın adını döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`alan`

  Alan numarası. Alan numaraları 1'den başlar.

### Dönen Değerler

Hata durumunda `false`, yoksa alan adını bir dizge olarak döndürür.

# odbc_field_num

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_field_num — Sütun numarasını döndürür

### Açıklama

function odbc_field_num(resource `$deyim`, string `$alan`): int|false

İsmi belirtilen alanın sonuç kümesindeki sütun numarasını döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`alan`

  Alan adı.

### Dönen Değerler

Hata durumunda `false`, yoksa alan (sütun) numarasını bir tamsayı olarak döndürür. Sütun numaraları 1'den başlar.

# odbc_field_precision

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_field_precision — odbc_field_len() işlevinin takma adıdır

### Açıklama

Bu işlev odbc_field_len() işlevinin takma adıdır.

### Ayrıca Bakınız

- odbc_field_scale() - Bir alanın skalasını döndürür

# odbc_field_scale

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_field_scale — Bir alanın skalasını döndürür

### Açıklama

function odbc_field_scale(resource `$deyim`, int `$alan`): int|false

Sonuç içinde numarası belirtilen alanın skalasını döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`alan`

  Alan (sütun) numarası. Sütun numaraları 1'den başlar.

### Dönen Değerler

Hata durumunda `false`, yoksa alan skalasını bir tamsayı olarak döndürür.

# odbc_field_type

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_field_type — Bir alanın veri türünü döndürür

### Açıklama

function odbc_field_type(resource `$deyim`, int `$alan`): string|false

Sonuç içindeki, numarası belirtilen sütunun SQL türünü döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`alan`

  Alan numarası. Alan numaraları 1'den başlar.

### Dönen Değerler

Hata durumunda `false`, yoksa alan türünü bir dizge olarak döndürür.

# odbc_foreignkeys

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_foreignkeys — Bir tablonun yabancı anahtarlarını listeler

### Açıklama

function odbc_foreignkeys(
resource `$odbc`,
string `$ba_katalog`,
string `$ba_şema`,
string `$ba_tablo`,
string `$ya_katalog`,
string `$ya_şema`,
string `$ya_tablo`
): resource|false

Belirtilen tablodaki yabancı anahtarları veya belirtilen tablodaki birincil anahtarlara atıf yapan başka bir tablonun yabancı anahtarlarını listeler.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`ba_katalog`

  Birincil anahtar için Katalog (ODBC 2 argosunda 'qualifier' ).

`ba_şema`

  Birincil anahtar için Şema (ODBC 2 argosunda 'owner').

`ba_tablo`

  Birincil anahtar tablosu.

`ya_katalog`

  Yabancı anahtar için Katalog (ODBC 2 argosunda 'qualifier' ).

`ya_şema`

  Yabancı anahtar Şema (ODBC 2 argosunda 'owner').

`ya_tablo`

  Yabancı anahtar tablosu.

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `PKTABLE_CAT`
- `PKTABLE_SCHEM`
- `PKTABLE_NAME`
- `PKCOLUMN_NAME`
- `FKTABLE_CAT`
- `FKTABLE_SCHEM`
- `FKTABLE_NAME`
- `FKCOLUMN_NAME`
- `KEY_SEQ`
- `UPDATE_RULE`
- `DELETE_RULE`
- `FK_NAME`
- `PK_NAME`
- `DEFERRABILITY`

Drivers can report additional columns.

Birincil anahtarla ilişkili yabancı anahtarlar isteniyorsa, sonuç kümesi `FKTABLE_CAT`, `FKTABLE_SCHEM`, `FKTABLE_NAME` ve `KEY_SEQ` alanlarına göre sıralanır. Yabancı anahtarla ilişkili birincil anahtar isteniyorsa, sonuç kümesi `PKTABLE_CAT`, `PKTABLE_SCHEM`, `PKTABLE_NAME` ve `KEY_SEQ` alanlarına göre sıralanır.

`ba_tablo` bir tablo ismi içeriyorsa, işlev bu tablonun birincil anahtarını ve ona atıf yapan tüm yabancı anahtarları içeren bir sonuç kümesi döndürür.

`ya_tablo` bir tablo ismi içeriyorsa, işlev bu tablodaki tüm yabancı anahtarları ve bunların atıfta bulunduğu (diğer tablodaki) birincil anahtarları içeren bir sonuç kümesi döndürür.

Hem `ba_tablo` hem de `ya_tablo` birer tablo ismi içeriyorsa, işlev `ba_tablo`'nun birincil anahtarlarına atıf yapan `ya_tablo`'daki yabancı anahtarları içeren bir sonuç kümesi döndürür. Bunu tek bir anahtardan ibaret olması gerekir.

### Ayrıca Bakınız

- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür
- odbc_primarykeys() - Bir tablonun birincil anahtarlarını döndürür

# odbc_free_result

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_free_result — Bir sonuç ile ilgili özkaynakları serbest bırakır

### Açıklama

function odbc_free_result(resource `$sonuç_kimliği`): true

Bir sonuç ile ilgili özkaynakları serbest bırakır.

Sadece, betiğiniz çalışırken çok fazla bellek ayrıldığından endişeleniyorsanız bu işlevi kullanın. Betiğin işi bittiğinde zaten ayrılan tüm bellek serbest bırakılacaktır.

### Bağımsız Değişkenler

`sonuç_kimliği`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

### Dönen Değerler

Daima `true` döndürür.

### Notlar

> Bilginize:

> Ototeslim kipi etkin değilse (bak: odbc_autocommit()) ve teslimat öncesi odbc_free_result() çağrısı yaparsanız bekleyen tüm hareketler başa sarılır.

# odbc_gettypeinfo

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_gettypeinfo — Veri kaynağınca desteklenen veri türleri hakkında bilgi döndürür

### Açıklama

function odbc_gettypeinfo(resource `$odbc`, int `$veri_türü` = 0): resource|false

Veri kaynağınca desteklenen veri türleri hakkında bilgi döndürür.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`veri_türü`

  Bilgi döndürülecek veri türü. Dönen bilgiyi tek bir veri türü ile sınırlamak için kullanılır.

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- TYPE_NAME
- DATA_TYPE
- PRECISION
- LITERAL_PREFIX
- LITERAL_SUFFIX
- CREATE_PARAMS
- NULLABLE
- CASE_SENSITIVE
- SEARCHABLE
- UNSIGNED_ATTRIBUTE
- MONEY
- AUTO_INCREMENT
- LOCAL_TYPE_NAME
- MINIMUM_SCALE
- MAXIMUM_SCALE

Sonuç kümesi şu sütunlara göre sıralanır: DATA_TYPE ve TYPE_NAME.

# odbc_longreadlen

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_longreadlen — LONG sütunlarla çalışmayı etkin kılar

### Açıklama

function odbc_longreadlen(resource `$deyim`, int `$uzunluk`): true

`LONG`, `LONGVARCHAR` ve `LONGVARBINARY` sütunlarla çalışmayı denetler. Öntanımlı uzunluk uodbc.defaultlrl php.ini yönergesi ile atanabilir.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

`uzunluk`

  PHP'ye döndürülecek bayt sayısı. `0` belirtilirse istemciye odbc_result() ile alınan LONG sütun verisinin tamamı aktarılır.

### Dönen Değerler

Daima `true` döndürür.

### Notlar

> Bilginize:

> `LONGVARBINARY` sütunlarla çalışma odbc_binmode() işlevinden de etkilenir.

# odbc_next_result

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

odbc_next_result — Kullanılabilecek çok sayıda sonuç var mı diye bakar

### Açıklama

function odbc_next_result(resource `$deyim`): bool

odbc_fetch_array(), odbc_fetch_row(), odbc_result() ve benzerleri üzerinden erişilebilecek başka sonuç kümesi varsa `true` döner.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

### Dönen Değerler

Başka sonuç kümesi varsa `true`, yoksa `false` döner.

### Örnekler

Örnek 1 - odbc_next_result() örneği

    <?php
    $r_Connection = odbc_connect($dsn, $username, $password);

    $s_SQL = <<<END_SQL
    SELECT 'A'
    SELECT 'B'
    SELECT 'C'
    END_SQL;

    $r_Results = odbc_exec($r_Connection, $s_SQL);

    $a_Row1 = odbc_fetch_array($r_Results);
    $a_Row2 = odbc_fetch_array($r_Results);
    echo "İlk sonuç kümesinin dökümü: ";
    var_dump($a_Row1, $a_Row2);

    echo "Başka sonuç kümesi var mı? ";
    var_dump(odbc_next_result($r_Results));

    $a_Row1 = odbc_fetch_array($r_Results);
    $a_Row2 = odbc_fetch_array($r_Results);
    echo "İkinci sonuç kümesinin dökümü: ";
    var_dump($a_Row1, $a_Row2);

    echo "Başka sonuç kümesi var mı? ";
    var_dump(odbc_next_result($r_Results));

    $a_Row1 = odbc_fetch_array($r_Results);
    $a_Row2 = odbc_fetch_array($r_Results);
    echo "Üçüncü sonuç kümesinin dökümü: ";
    var_dump($a_Row1, $a_Row2);

    echo "Başka sonuç kümesi var mı? ";
    var_dump(odbc_next_result($r_Results));
    ?>

Yukarıdaki örneğin çıktısı:

    İlk sonuç kümesinin dökümü: array(1) {
      ["A"]=>
      string(1) "A"
    }
    bool(false)
    Başka sonuç kümesi var mı? bool(true)
    İkinci sonuç kümesinin dökümü: array(1) {
      ["B"]=>
      string(1) "B"
    }
    bool(false)
    Başka sonuç kümesi var mı? bool(true)
    Üçüncü sonuç kümesinin dökümü: array(1) {
      ["C"]=>
      string(1) "C"
    }
    bool(false)
    Başka sonuç kümesi var mı? bool(false)

# odbc_num_fields

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_num_fields — Bir sonuçtaki sütun sayısını döndürür

### Açıklama

function odbc_num_fields(resource `$deyim`): int

Belirtilen ODBC sonucundaki sütun (alan) sayısını döndürür.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

### Dönen Değerler

Belirtilen ODBC sonucundaki satırların sayısını döndürür. Bir hata oluşursa `-1` döner.

# odbc_num_rows

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_num_rows — Bir sonuçtaki satır sayısını döndürür

### Açıklama

function odbc_num_rows(resource `$deyim`): int

Bir sonuçtaki satır sayısını döndürür. INSERT, UPDATE ve DELETE deyimleri için odbc_num_rows() etkilenen satır sayısını döndürür. SELECT için ise dönen değer kullanılabilir satır sayısı olabilir.

### Bağımsız Değişkenler

`deyim`

  odbc_exec() ile döndürülmüş bir sonuç tanıtıcısı.

### Dönen Değerler

Belirtilen ODBC sonucundakı satırların sayısını döndürür. Bir hata oluşursa `-1` döner.

### Notlar

> Bilginize:

> İşlevin, bir SELECT sonrası kullanılabilir satırların sayısını saptamak için kullanımı durumunda çoğu sürücü `-1` döndürür.

# odbc_pconnect

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_pconnect — Bir kalıcı veritabanı bağlantısı açar

### Açıklama

function odbc_pconnect(
string `$dsn`,
string `$kullanıcı`,
string `$parola`,
int `$imleç_türü` = `SQL_CUR_USE_DRIVER`
): resource|false

Bir kalıcı veritabanı bağlantısı açar.

Betiğin işi bettiğinde bağlantının kapanmaması dışında odbc_connect() işlevi gibidir. Aynı `dsn`, `kullanıcı` ve `parola` ile (odbc_connect() ve odbc_pconnect() üzerinden) istenen bağlantılar için aynı kalıcı bağlantı kullanılabilir.

### Bağımsız Değişkenler

Ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

İstenen bilgiyi içeren bir ODBC sonuç tanıtıcısı, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: PHP bir CGI programı olarak kullanılıyorsa kalıcı bağlantıların hiçbir etkisi yoktur.

### Ayrıca Bakınız

- odbc_connect() - Bir veri kaynağına bağlanır
- Kalıcı Veritabanı Bağlantıları

# odbc_prepare

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_prepare — Çalıştırılmak üzere bir deyim hazırlar

### Açıklama

function odbc_prepare(resource `$odbc`, string `$sorgu`): resource|false

Çalıştırılmak üzere bir deyim hazırlar. Elde edilen sonuç tanıtıcısı odbc_execute() işlevinde kullanılarak deyim daha sonra çalıştırılabilir.

Bazı veritabanları (IBM DB2, MS SQL Server ve Oracle gibi), ODBC belirtiminde belirtildiği gibi IN, INOUT ve OUT türünde bağımsız değişkenler kabul eden saklanmış yordamları destekler. Ancak, Tekilleştirilmiş ODBC sadece IN türündeki bağımsız değişkenleri desteklemektedir.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`sorgu`

  Hazırlanan deyimi içeren sorgu dizgesi.

### Dönen Değerler

Hata durumunda `false` yoksa SQL komutu hazırlanabilmişse istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

### Örnekler

Örnek 1 - odbc_execute() ve odbc_prepare() örneği

Aşağıdaki örnekte, myproc'un üç bağımsız değişkeni de IN türünde olduğu takdirde $success daima `true` olacaktır:

    <?php
    $a = 1;
    $b = 2;
    $c = 3;
    $stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
    $success = odbc_execute($stmt, array($a, $b, $c));
    ?>

INOUT veya OUT türünde bağımsız değişkenler kullanan saklanmış yordamlara ihtiyacınız varsa veritabanınızın kendi eklentisini kullanınız (örneğin, Oracle için oci8 gibi).

### Ayrıca Bakınız

- odbc_execute() - Bir hazır deyimi çalıştırır

# odbc_primarykeys

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_primarykeys — Bir tablonun birincil anahtarlarını döndürür

### Açıklama

function odbc_primarykeys(
resource `$odbc`,
?string `$katalog`,
string `$şema`,
string `$tablo`
): resource|false

Bir tablonun birincil anahtarlarını içeren sütunlardan oluşan sonuç için bir sonuç tanıtıcısı döndürür.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner').

`tablo`

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `COLUMN_NAME`
- `KEY_SEQ`
- `PK_NAME`

Drivers can report additional columns.

Sonuç kümesi `TABLE_CAT`, `TABLE_SCHEM`, `TABLE_NAME` ve `KEY_SEQ` alanlarına göre sıralanır.

### Örnekler

Örnek 1 - Sütundaki birincil anahtarların listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $primarykeys = odbc_primarykeys($conn, 'TutorialDB', 'dbo', 'TEST');
    while (($row = odbc_fetch_array($primarykeys))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => TutorialDB
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => TEST
        [COLUMN_NAME] => id
        [KEY_SEQ] => 1
        [PK_NAME] => PK__TEST__3213E83FE141F843
    )

### Ayrıca Bakınız

- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür
- odbc_foreignkeys() - Bir tablonun yabancı anahtarlarını listeler

# odbc_procedurecolumns

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_procedurecolumns — Yordamların bağımsız değişkenleri hakkında bilgi döndürür

### Açıklama

function odbc_procedurecolumns(
resource `$odbc`,
?string `$katalog` = `null`,
?string `$şema` = `null`,
?string `$yordam` = `null`,
?string `$sütun` = `null`
): resource|false

Belirtilen yordamların bağımsız değişkenleri hakkında bilgi döndürür.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`yordam`

  Yordam. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`sütun`

  Sütun. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

### Dönen Değerler

Belirtilen yordamlar için sonuç kümesini oluşturan girdi ve çıktı bağımsız değişkenleriyle birlikte sütunları da döndürür. Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `PROCEDURE_CAT`
- `PROCEDURE_SCHEM`
- `PROCEDURE_NAME`
- `COLUMN_NAME`
- `COLUMN_TYPE`
- `DATA_TYPE`
- `TYPE_NAME`
- `COLUMN_SIZE`
- `BUFFER_LENGTH`
- `DECIMAL_DIGITS`
- `NUM_PREC_RADIX`
- `NULLABLE`
- `REMARKS`
- `COLUMN_DEF`
- `SQL_DATA_TYPE`
- `SQL_DATETIME_SUB`
- `CHAR_OCTET_LENGTH`
- `ORDINAL_POSITION`
- `IS_NULLABLE`

Drivers can report additional columns.

Sonuç kümesi şu sütunlara göre sıralanır: `PROCEDURE_CAT`, `PROCEDURE_SCHEM`, `PROCEDURE_NAME` ve `COLUMN_TYPE`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu sürümden önce, işlev ya bir ya da beş bağımsız değişken ile çağrılabiliyordu.

### Örnekler

Örnek 1 - Saklı bir yordamın sütun listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $columns = odbc_procedurecolumns($conn, 'TutorialDB', 'dbo', 'GetEmployeeSalesYTD;1', '%');
    while (($row = odbc_fetch_array($columns))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [PROCEDURE_CAT] => TutorialDB
        [PROCEDURE_SCHEM] => dbo
        [PROCEDURE_NAME] => GetEmployeeSalesYTD;1
        [COLUMN_NAME] => @SalesPerson
        [COLUMN_TYPE] => 1
        [DATA_TYPE] => -9
        [TYPE_NAME] => nvarchar
        [COLUMN_SIZE] => 50
        [BUFFER_LENGTH] => 100
        [DECIMAL_DIGITS] =>
        [NUM_PREC_RADIX] =>
        [NULLABLE] => 1
        [REMARKS] =>
        [COLUMN_DEF] =>
        [SQL_DATA_TYPE] => -9
        [SQL_DATETIME_SUB] =>
        [CHAR_OCTET_LENGTH] => 100
        [ORDINAL_POSITION] => 1
        [IS_NULLABLE] => YES
    )

### Ayrıca Bakınız

- odbc_columns() - Belirtilen tablolardaki sütun isimlerini listeler

# odbc_procedures

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_procedures — Belirtilen veri kaynağında saklı yordamların listesini döndürür

### Açıklama

function odbc_procedures(
resource `$odbc`,
?string `$katalog` = `null`,
?string `$şema` = `null`,
?string `$yordam` = `null`
): resource|false

Belirtilen aralıktaki tüm yordamları listeler.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`yordam`

  İsim. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `PROCEDURE_CAT`
- `PROCEDURE_SCHEM`
- `PROCEDURE_NAME`
- `NUM_INPUT_PARAMS`
- `NUM_OUTPUT_PARAMS`
- `NUM_RESULT_SETS`
- `REMARKS`
- `PROCEDURE_TYPE`

Drivers can report additional columns.

Sonuç kümesi şu alanlara göre sıralanır: `PROCEDURE_CAT`, `PROCEDURE_SCHEMA` ve `PROCEDURE_NAME`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu sürümden önce, işlev ya bir ya da beş bağımsız değişken ile çağrılabiliyordu.

### Örnekler

Örnek 1 - Veritabanındaki saklı yordamların listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $procedures = odbc_procedures($conn, $catalog, $schema, '%');
    while (($row = odbc_fetch_array($procedures))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [PROCEDURE_CAT] => TutorialDB
        [PROCEDURE_SCHEM] => dbo
        [PROCEDURE_NAME] => GetEmployeeSalesYTD;1
        [NUM_INPUT_PARAMS] => -1
        [NUM_OUTPUT_PARAMS] => -1
        [NUM_RESULT_SETS] => -1
        [REMARKS] =>
        [PROCEDURE_TYPE] => 2
    )

### Ayrıca Bakınız

- odbc_procedurecolumns() - Yordamların bağımsız değişkenleri hakkında bilgi döndürür
- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür

# odbc_result

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_result — Sonuçtan veri döndürür

### Açıklama

function odbc_result(resource `$deyim`, string|int `$alan`): string|bool|null

Sonuçtan veri döndürür.

### Bağımsız Değişkenler

`deyim`

  Bir ODBC sonuç tanıtıcısı.

`alan`

  Veri döndürülecek alan ismi. Alan numarası olarak bir sayı veya alan ismi olarak bir dizi olabilir.

### Dönen Değerler

Hata durumunda `false`, `null` veri için `null` ikil veri için `true` aksi takdirde alanı içeren bir dizge döner.

### Örnekler

İlk odbc_result() çağrısında sorgu sonucundaki kaydın üçüncü alanının değeri, ikincisinde ise "miktar" alanının değeri dönmektedir. Belirtilen sütun numarası birden küçük veya kayıttaki alan sayısından büyükse bir hata oluşur. Benzer şekilde, belirtilen alan ismi, kayıtta bulunan alan isimlerinden biri değilse de bir hata oluşacaktır.

Örnek 1 - odbc_result() örnekleri

    <?php
    $öğe_3   = odbc_result($sorgum, 3);
    $öğe_miktar = odbc_result($sorgum, "miktar");
    ?>

### Notlar

Alan numaraları 1'den başlar. İkil ve uzun ikil veriler hakkında bilgi için odbc_binmode() ve odbc_longreadlen() işlevine bakınız.

# odbc_result_all

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_result_all — Sonucu bir HTML tablosu olarak basar

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function odbc_result_all(resource `$deyim`, string `$biçem` = ""): int|false

odbc_exec() tarafından üretilen bir sonuç tanıtıcısındaki tüm satırları HTML tablosu biçeminde basar. Veri öncelenmez.

Bu işlev üretim ortamında kullanmak için tasarlanmamıştır. Geliştime amaçları doğrultusunda sonuç kümesi daha çabuk elde edilmeye çalışılmıştır.

### Bağımsız Değişkenler

`deyim`

  Sonuç tanıtıcısı.

`biçem`

  Tablo biçemi.

### Dönen Değerler

Bir hata durumunda `false` yoksa satır sayısı döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor.

# odbc_rollback

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_rollback — Bir hareketi başa döndürür

### Açıklama

function odbc_rollback(resource `$odbc`): bool

Bağlantıda bekleyen tüm sorguların en baştan ele alınmasını sağlar.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# odbc_setoption

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_setoption — ODBC ayarlarını yapar

### Açıklama

function odbc_setoption(
resource `$odbc`,
int `$işlev`,
int `$seçenek`,
int `$değer`
): bool

Bu işlevle ODBC seçenekleri, belli bir bağlantı veya sonuç kümesine uygun olarak ayarlanır. Çok oyuncaklı ODBC sürücülerinye ilgili sorunların üstesinden gelmek için tasarlanmıştır. Sadece bir ODBC programcısı iseniz veya çeşitli seçeneklerin ne anlama geldiğini öğrenmek isterseniz işe yarar. Farklı seçenekleri ve değerleri açıklayan iyi bir ODBC kılavuzuna mutlaka ihtiyacınız olacaktır. Farklı sürücü sürümleri farklı seçenekler sunar.

ODBC sürücüsüne bağlı olarak işlevin etkileri değişebildiğinden halka açık betiklerde bu işlevi kesinlikle kullanmamalısınız. Ayrıca, bağlantı kurulmadan veya sorgu hazırlanmadan önce atanması gereken bazı ODBC seçenekleri de bu işlevle kullanılamamaktadır. Bununla birlikte, belli bir işi PHP ile yapmanız mümkünse, açıktır ki, patronunuz bunların hepsini yapabilen bir ticari ürünü kullanmanızı istemeyecektir.

### Bağımsız Değişkenler

`odbc`

  Ayar değişikliği yapılacak bağlantı veya sonuç kimliği. Bu, SQLSetConnectOption() için bir bağlantı kimliği, SQLSetStmtOption(), için ise bir sonuç kimliğidir.

`işlev`

  ODBC işlevi kullanılacak mı?. Değer, SQLSetConnectOption() için 1, SQLSetStmtOption() için 2 olmalıdır.

`seçenek`

  Değeri ayarlanacak seçenek.

`değer`

  Ayarlanacak seçeneğin değeri.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - odbc_setoption() örnekleri

    <?php
    // 1. SQLSetConnectOption() için 102. seçenek: SQL_AUTOCOMMIT.
    //    SQL_AUTOCOMMIT için 1. değer: SQL_AUTOCOMMIT_ON.
    //    Bu örnek, odbc_autocommit($conn, true); işlevinin yaptığını yapar

    odbc_setoption($conn, 1, 102, 1);

    // 2. SQLSetStmtOption() için 0. seçenek: SQL_QUERY_TIMEOUT.
    //    Bu örnek, sorgunun 30 saniyede zaman aşımına uğramasını sağlar.

    $result = odbc_prepare($conn, $sql);
    odbc_setoption($result, 2, 0, 30);
    odbc_execute($result);
    ?>

# odbc_specialcolumns

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_specialcolumns — Özel sütunları döndürür

### Açıklama

function odbc_specialcolumns(
resource `$bağlantı_kimliği`,
int `$türü`,
?string `$katalog`,
string `$şema`,
string `$tablo`,
int `$kapsam`,
int `$boş`
): resource|false

Tablo içindeki bir satırı eşsiz olarak betimleyen en uygun sütunların veya bir satırın bir hareket sonucunda güncellenmesi durumunda otomatik olarak güncellenen sütünların listesini döndürür.

### Bağımsız Değişkenler

`bağlantı_kimliği`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`türü`
  `SQL_BEST_ROWID` belirtilirse, tablodaki her satırı eşsiz olarak betimleyin sütun veya sütunlar döner. `SQL_ROWVER` belirtilirse, bir satırın bir hareket sonucunda güncellenmesi durumunda otomatik olarak güncellenen sütunların listesini döndürür.
`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner').

`tablo`

  Tablo.

`kapsam`

  `SQL_SCOPE_CURROW`, `SQL_SCOPE_TRANSACTION` veya `SQL_SCOPE_SESSION` sabitlerinden biri.

`boş`

  Döndürülecek özel sütunun NULL değer alıp alamayacağını belirler. `SQL_NO_NULLS` veya `SQL_NULLABLE` sabitlerinden biri.

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `SCOPE`
- `COLUMN_NAME`
- `DATA_TYPE`
- `TYPE_NAME`
- `COLUMN_SIZE`
- `BUFFER_LENGTH`
- `DECIMAL_DIGITS`
- `PSEUDO_COLUMN`

Drivers can report additional columns.

Sonuç kümesi `SCOPE`'a göre sıralanır.

### Ayrıca Bakınız

- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür

# odbc_statistics

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_statistics — Bir tablo hakkındaki istatistikleri döndürür

### Açıklama

function odbc_statistics(
resource `$odbc`,
?string `$katalog`,
string `$şema`,
string `$tablo`,
int `$eşsiz`,
int `$doğruluk`
): resource|false

Bir tablo ve indisleri hakkında istatistiksel bilgi döndürür.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner').

`tablo`

  Tablo ismi.

`eşsiz`

  Sıralama türü. `SQL_INDEX_UNIQUE` ya da `SQL_INDEX_ALL`.

`doğruluk`

  `SQL_ENSURE` ya da `SQL_QUICK`. İkncisi, sadece kolayca sunucudan alınabilecekse, sürücünün `CARDINALITY` ve `PAGES` alanlarını almasını ister.

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `NON_UNIQUE`
- `INDEX_QUALIFIER`
- `INDEX_NAME`
- `TYPE`
- `ORDINAL_POSITION`
- `COLUMN_NAME`
- `ASC_OR_DESC`
- `CARDINALITY`
- `PAGES`
- `FILTER_CONDITION`

Drivers can report additional columns.

Sonuç kümesi şu sütunlara göre sıralanır: `NON_UNIQUE`, `TYPE`, `INDEX_QUALIFIER`, `INDEX_NAME` ve `ORDINAL_POSITION`

### Örnekler

Örnek 1 - Tablo istatistikleri listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $statistics = odbc_statistics($conn, 'TutorialDB', 'dbo', 'TEST', SQL_INDEX_UNIQUE, SQL_QUICK);
    while (($row = odbc_fetch_array($statistics))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => TutorialDB
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => TEST
        [NON_UNIQUE] =>
        [INDEX_QUALIFIER] =>
        [INDEX_NAME] =>
        [TYPE] => 0
        [ORDINAL_POSITION] =>
        [COLUMN_NAME] =>
        [ASC_OR_DESC] =>
        [CARDINALITY] => 15
        [PAGES] => 3
        [FILTER_CONDITION] =>
    )

### Ayrıca Bakınız

- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür

# odbc_tableprivileges

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_tableprivileges — Tabloları izinleriyle birlikte listeler

### Açıklama

function odbc_tableprivileges(
resource `$odbc`,
?string `$katalog`,
string `$şema`,
string `$tablo`
): resource|false

Belirtilen aralıktaki tabloların izinlerini isimlerine göre listeler.

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`tablo`

  İsim. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

### Dönen Değerler

Hata durumunda `false` yoksa istenen bilgiyi içeren bir ODBC sonuç tanıtıcısı döner.

Sonuç kümesi şu sütunlardan oluşur:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `GRANTOR`
- `GRANTEE`
- `PRIVILEGE`
- `IS_GRANTABLE`

Drivers can report additional columns.

Sonuç kümesi `TABLE_CAT`, `TABLE_SCHEM`, `TABLE_NAME`, `PRIVILEGE` ve `GRANTEE` sütunlarına göre sıralanır.

### Örnekler

Örnek 1 Tablo ayrıcalıkları listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $privileges = odbc_tableprivileges($conn, 'SalesOrders', 'dbo', 'Orders');
    while (($row = odbc_fetch_array($privileges))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => SalesOrders
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => Orders
        [GRANTOR] => dbo
        [GRANTEE] => dbo
        [PRIVILEGE] => DELETE
        [IS_GRANTABLE] => YES
    )

### Ayrıca Bakınız

- odbc_tables() - Belli bir veri kaynağında bulunan tablo isimlerini döndürür

# odbc_tables

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_tables — Belli bir veri kaynağında bulunan tablo isimlerini döndürür

### Açıklama

function odbc_tables(
resource `$odbc`,
?string `$katalog` = `null`,
?string `$şema` = `null`,
?string `$tablo` = `null`,
?string `$türler` = `null`
): resource|false

Belitilen aralıktaki tüm tablo isimlerini listeler.

`katalog`, `şema`, `tablo` ve `türler` bağımsız değişkenleri ile seçim şöyle yapılır:

- `katalog` tek bir yüzde iminden (%) ibaretse ve, `şema` ve `tablo` birer boş dizgeyse sonuç, veri kaynağındaki geçerli niteleyicileri içerir. (TABLE_QUALIFIER sütunu dışında tüm sütunlar `null` içerir.)
- `şema` tek bir yüzde iminden (%) ibaretse ve, `katalog` ve `tablo` birer boş dizgeyse sonuç, veri kaynağındaki geçerli sahipleri içerir. (TABLE_OWNER sütunu dışında tüm sütunlar `null` içerir.)
- `tablo_türü` tek bir yüzde iminden (%) ibaretse ve, `katalog`, `şema` ve `tablo` birer boş dizgeyse sonuç, veri kaynağındaki geçerli tablo türlerini içerir. (TABLE_TYPE sütunu dışında tüm sütunlar `null` içerir.)

### Bağımsız Değişkenler

`odbc`

  ODBC bağlantı tanıtıcısı; ayrıntılar için odbc_connect() işlevine bakınız.

`katalog`

  Katalog (ODBC 2 argosunda 'qualifier' ).

`şema`

  Şema (ODBC 2 argosunda 'owner'). Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`tablo`

  İsim. Arama şablonları belirtilebilir (sıfır veya daha fazla karakterle eşleşmek üzere "%" ve tek bir karakterle eşleşmek üzere "_".

`türler`

  `türler` boş bir dizge değilse tablo türlerinden oluşan virgül ayraçlı bir liste olmalıdır. Her değer ya tek tırnaklar (') arasına alınmalı ya da hiç tırnak içine alınmamalıdır. Örnek: `'TABLE','VIEW'` veya `TABLE, VIEW`. Eğer veri kaynağı belirtilen tablo türlerini desteklemiyorsa, işlev, bu tablo türlerinde hiçbir sonuç döndürmez.

### Dönen Değerler

İstenen bilgiyi içeren bir ODBC sonuç tanıtıcısı, başarısızlık durumunda `false` döner.

Sonuç kümesi şu sütunlardan oluşur:

- `TABLE_CAT`
- `TABLE_SCHEM`
- `TABLE_NAME`
- `TABLE_TYPE`
- `REMARKS`

Drivers can report additional columns.

Sonuç kümesi `TABLE_TYPE`, `TABLE_CAT`, `TABLE_SCHEM` ve `TABLE_NAME` sütunlarına göre sıralanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `şema`, `tablo` ve `türler` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Katalogdaki tabloların listesi

    <?php
    $conn = odbc_connect($dsn, $user, $pass);
    $tables = odbc_tables($conn, 'SalesOrders', 'dbo', '%', 'TABLE');
    while (($row = odbc_fetch_array($tables))) {
        print_r($row);
        break;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [TABLE_CAT] => SalesOrders
        [TABLE_SCHEM] => dbo
        [TABLE_NAME] => Orders
        [TABLE_TYPE] => TABLE
        [REMARKS] =>
    )

### Ayrıca Bakınız

- odbc_tableprivileges() - Tabloları izinleriyle birlikte listeler
- odbc_columns() - Belirtilen tablolardaki sütun isimlerini listeler
- odbc_specialcolumns() - Özel sütunları döndürür
- odbc_statistics() - Bir tablo hakkındaki istatistikleri döndürür
- odbc_procedures() - Belirtilen veri kaynağında saklı yordamların listesini döndürür

## İçindekiler

- odbc_autocommit — Ototeslim kipini açıp kapar
- odbc_binmode — İkil sütun verileri ile çalışmayı etkin kılar
- odbc_close — Bir ODBC bağlantısını kapatır
- odbc_close_all — Tüm ODBC bağlantılarını kapatır
- odbc_columnprivileges — Belirtilen tablo ile ilgili izinleri ve sütunları listeler
- odbc_columns — Belirtilen tablolardaki sütun isimlerini listeler
- odbc_commit — Bir ODBC hareket listesi gönderir
- odbc_connect — Bir veri kaynağına bağlanır
- odbc_connection_string_is_quoted — Determines if an ODBC connection string value is quoted
- odbc_connection_string_quote — Quotes an ODBC connection string value
- odbc_connection_string_should_quote — Determines if an ODBC connection string value should be quoted
- odbc_cursor — İmleç ismini döndürür
- odbc_data_source — Kullanılabilir DSN'ler hakkında bilgi döndürür
- odbc_do — odbc_exec işlevinin takma adıdır
- odbc_error — Son hata kodunu döndürür
- odbc_errormsg — Son hata iletisini döndürür
- odbc_exec — SQL deyimini doğrudan çalıştırır
- odbc_execute — Bir hazır deyimi çalıştırır
- odbc_fetch_array — Sonuç satırını bir ilişkisel dizi olarak döndürür
- odbc_fetch_into — Sonuç satırını bir dizi olarak döndürür
- odbc_fetch_object — Sonuç satırını bir nesne olarak döndürür
- odbc_fetch_row — Bir satır döndürür
- odbc_field_len — Bir alanın uzunluğunu (hassasiyetini) döndürür
- odbc_alan_adı — Sütun ismini döndürür
- odbc_field_num — Sütun numarasını döndürür
- odbc_field_precision — odbc_field_len işlevinin takma adıdır
- odbc_field_scale — Bir alanın skalasını döndürür
- odbc_field_type — Bir alanın veri türünü döndürür
- odbc_foreignkeys — Bir tablonun yabancı anahtarlarını listeler
- odbc_free_result — Bir sonuç ile ilgili özkaynakları serbest bırakır
- odbc_gettypeinfo — Veri kaynağınca desteklenen veri türleri hakkında bilgi döndürür
- odbc_longreadlen — LONG sütunlarla çalışmayı etkin kılar
- odbc_next_result — Kullanılabilecek çok sayıda sonuç var mı diye bakar
- odbc_num_fields — Bir sonuçtaki sütun sayısını döndürür
- odbc_num_rows — Bir sonuçtaki satır sayısını döndürür
- odbc_pconnect — Bir kalıcı veritabanı bağlantısı açar
- odbc_prepare — Çalıştırılmak üzere bir deyim hazırlar
- odbc_primarykeys — Bir tablonun birincil anahtarlarını döndürür
- odbc_procedurecolumns — Yordamların bağımsız değişkenleri hakkında bilgi döndürür
- odbc_procedures — Belirtilen veri kaynağında saklı yordamların listesini döndürür
- odbc_result — Sonuçtan veri döndürür
- odbc_result_all — Sonucu bir HTML tablosu olarak basar
- odbc_rollback — Bir hareketi başa döndürür
- odbc_setoption — ODBC ayarlarını yapar
- odbc_specialcolumns — Özel sütunları döndürür
- odbc_statistics — Bir tablo hakkındaki istatistikleri döndürür
- odbc_tableprivileges — Tabloları izinleriyle birlikte listeler
- odbc_tables — Belli bir veri kaynağında bulunan tablo isimlerini döndürür

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- ODBC İşlevleri
  - odbc_autocommit — Ototeslim kipini açıp kapar
  - odbc_binmode — İkil sütun verileri ile çalışmayı etkin kılar
  - odbc_close — Bir ODBC bağlantısını kapatır
  - odbc_close_all — Tüm ODBC bağlantılarını kapatır
  - odbc_columnprivileges — Belirtilen tablo ile ilgili izinleri ve sütunları listeler
  - odbc_columns — Belirtilen tablolardaki sütun isimlerini listeler
  - odbc_commit — Bir ODBC hareket listesi gönderir
  - odbc_connect — Bir veri kaynağına bağlanır
  - odbc_connection_string_is_quoted — Determines if an ODBC connection string value is quoted
  - odbc_connection_string_quote — Quotes an ODBC connection string value
  - odbc_connection_string_should_quote — Determines if an ODBC connection string value should be quoted
  - odbc_cursor — İmleç ismini döndürür
  - odbc_data_source — Kullanılabilir DSN'ler hakkında bilgi döndürür
  - odbc_do — odbc_exec işlevinin takma adıdır
  - odbc_error — Son hata kodunu döndürür
  - odbc_errormsg — Son hata iletisini döndürür
  - odbc_exec — SQL deyimini doğrudan çalıştırır
  - odbc_execute — Bir hazır deyimi çalıştırır
  - odbc_fetch_array — Sonuç satırını bir ilişkisel dizi olarak döndürür
  - odbc_fetch_into — Sonuç satırını bir dizi olarak döndürür
  - odbc_fetch_object — Sonuç satırını bir nesne olarak döndürür
  - odbc_fetch_row — Bir satır döndürür
  - odbc_field_len — Bir alanın uzunluğunu (hassasiyetini) döndürür
  - odbc_alan_adı — Sütun ismini döndürür
  - odbc_field_num — Sütun numarasını döndürür
  - odbc_field_precision — odbc_field_len işlevinin takma adıdır
  - odbc_field_scale — Bir alanın skalasını döndürür
  - odbc_field_type — Bir alanın veri türünü döndürür
  - odbc_foreignkeys — Bir tablonun yabancı anahtarlarını listeler
  - odbc_free_result — Bir sonuç ile ilgili özkaynakları serbest bırakır
  - odbc_gettypeinfo — Veri kaynağınca desteklenen veri türleri hakkında bilgi döndürür
  - odbc_longreadlen — LONG sütunlarla çalışmayı etkin kılar
  - odbc_next_result — Kullanılabilecek çok sayıda sonuç var mı diye bakar
  - odbc_num_fields — Bir sonuçtaki sütun sayısını döndürür
  - odbc_num_rows — Bir sonuçtaki satır sayısını döndürür
  - odbc_pconnect — Bir kalıcı veritabanı bağlantısı açar
  - odbc_prepare — Çalıştırılmak üzere bir deyim hazırlar
  - odbc_primarykeys — Bir tablonun birincil anahtarlarını döndürür
  - odbc_procedurecolumns — Yordamların bağımsız değişkenleri hakkında bilgi döndürür
  - odbc_procedures — Belirtilen veri kaynağında saklı yordamların listesini döndürür
  - odbc_result — Sonuçtan veri döndürür
  - odbc_result_all — Sonucu bir HTML tablosu olarak basar
  - odbc_rollback — Bir hareketi başa döndürür
  - odbc_setoption — ODBC ayarlarını yapar
  - odbc_specialcolumns — Özel sütunları döndürür
  - odbc_statistics — Bir tablo hakkındaki istatistikleri döndürür
  - odbc_tableprivileges — Tabloları izinleriyle birlikte listeler
  - odbc_tables — Belli bir veri kaynağında bulunan tablo isimlerini döndürür

# PHP Veri Nesneleri

# Giriş

PHP Veri Nesneleri (PDO) eklentisi, PHP'deki veritabanlarına erişmek için hafif ve tutarlı bir arayüz tanımlar. PDO arayüzü tanımı bulunan her veritabanı sürücüsü, veritabanına özgü özellikleri sıradan eklenti işlevleri olarak ifade edebilir. Yalnız dikkat edin, PDO eklentisinin kendisini her veritabanı işlevi için kullanamazsınız; bir veritabanı sunucusuna erişmek için veritabanına özgü PDO sürücüsünü kullanmalısınız.

PDO bir veri erişimli soyutlama katmanı sağlar, yani, kullandığınız veritabanından bağımsız olarak sorguları çalıştırmak ve sonuçları döndürmek için aynı işlevleri kullanabilirsiniz. PDO bir veritabanı soyutlaması yapmaz; SQL deyimini yeniden yazmaz ya da olmayan özellikleri taklit etmez. Bu özellikleri istiyorsanız tam gelişmiş soyutlama katmanını kullanmalısınız.

PDO, PHP ile birlikte gelir.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

Unix sistemlere PDO Kurulumu

1. PDO ve PDO_SQLITE sürücüsü öntanımlı olarak etkindir. Başka bir veritabanının PDO sürücüsünü etkinleştirmek isterseniz bunun nasıl yapılacağını veritabanlarına özgü PDO sürücüleri sayfasından öğrenebilirsiniz.

   > Bilginize:

   > PDO eklentisini bir paylaşımlı eklenti olarak (bu önerilmez) derliyorsanız tüm PDO sürücülerinin PDO'nun kendisinden sonra yüklenmesine dikkat etmelisiniz.

2. PDO eklentisini bir paylaşımlı eklenti olarak kuruyorsanız, PHP çalıştığı zaman PDO eklentisinin otomatik olarak yüklenmesi için php.ini dosyasını buna göre düzenlemeniz gerekir. Ayrıca kullanacağınız veritabanına özgü sürücülerinde dosyada etkin kılınması gerekir. Bunu yaparken bunların pdo.so satırından sonra listelenmesine dikkat etmelisiniz. Çünkü, PDO eklentisinin veritabanlarına özgü eklentiler yüklenmeden önce ilklendirilmesi gerekir. PDO'yu ve veritabanlarına özgü eklentileri statik olarak derliyorsanız php.ini adımını atlayabilirsiniz.

       extension=pdo.so

Windows kullanıcıları

1. Veritabanlarına özgü eklentilerin DLL dosyalarını aşağıdaki gibi ekleyebilir veya dl() ile çalışma anında da yükleyebilirsiniz.

       extension=php_pdo.dll
       extension=php_pdo_firebird.dll
       extension=php_pdo_informix.dll
       extension=php_pdo_mssql.dll
       extension=php_pdo_mysql.dll
       extension=php_pdo_oci.dll
       extension=php_pdo_oci8.dll
       extension=php_pdo_odbc.dll
       extension=php_pdo_pgsql.dll
       extension=php_pdo_sqlite.dll

   Bu DLL'lerin hepsinin extension_dir yönergesinde belirtilen dizinde bulunması gerektiğini unutmayın.

> Bilginize:

> Yeni yapılandırma yönergelerinin etkin olabilmesi için php.ini dosyanızda değişiklik yaptıktan sonra PHP'yi yeniden başlatmayı unutmayın.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PDO Yapılandırma Yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
pdo.dsn.* |  | sadece php.ini dosyasında |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`pdo.dsn.*` string

  DSN için rumuz tanımları. Ayrıntılar için PDO::__construct() yönteminin açıklamasına bakınız.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`PDO::PARAM_BOOL` (int)
  Mantıksal veri türünü ifade eder.
`PDO::PARAM_NULL` (int)
  SQL NULL veri türünü ifade eder.
`PDO::PARAM_INT` (int)
  SQL INTEGER veri türünü ifade eder.
`PDO::PARAM_STR` (int)
  SQL CHAR, VARCHAR ve benzeri dizge veri türlerini ifade eder.
`PDO::PARAM_STR_NATL` (int)
  Dizgenin ulusal karakter kümesini kullanacağını belirtir. PHP 7.2.0'dan beri kullanılabilir.
`PDO::PARAM_STR_CHAR` (int)
  Dizgenin normal karakter kümesini kullanacağını belirtir. PHP 7.2.0'dan beri kullanılabilir.
`PDO::PARAM_LOB` (int)
  SQL büyük nesne veri türünü ifade eder.
`PDO::PARAM_STMT` (int)
  Kayıt kümesi (recordset) türünü ifade eder. Her sürücü desteklemez.
`PDO::PARAM_INPUT_OUTPUT` (int)
  Bağımsız değişkenin bir saklı yordam için bir girdi/çıktı bağımsız değişkeni olduğunu gösterir. Bu değeri bir PDO::PARAM_* veri türü ile bit seviyesinde VEYAlamanız gerekir.
`PDO::FETCH_DEFAULT` (int)
  Kullanılacak öntanımlı fetch kipini belirtir. PHP 8.0.7 ve sonrasında kullanılabilir.
`PDO::FETCH_LAZY` (int)
  Yöntemin, sonuç kümesindeki her satırı, özellik isimlerinin sütun isimlerine karşılık geldiği bir nesne olarak döndüreceğini belirtir. `PDO::FETCH_LAZY` erişildikçe nesne özellik adlarını oluşturan bir PDORow nesnesi döndürür. PDOStatement::fetchAll() içinde geçersizdir.
`PDO::FETCH_ASSOC` (int)
  Yöntemin, sonuç kümesindeki her satırının, sütun isimleriyle indislenmiş bir dizi olarak döndürüleceğini belirtir. Eğer sonuç kümesi aynı isimde birden fazla sütun içeriyorsa her sütun için tek bir değer döner.
`PDO::FETCH_NAMED` (int)
  Yöntemin, sonuç kümesindeki her satırının, sütun isimleriyle indislenmiş bir dizi olarak olarak döndüreleceğini belirtir. Eğer sonuç kümesi aynı isimde birden fazla sütun içeriyorsa her sütun için bir değerler dizisi döner.
`PDO::FETCH_NUM` (int)
  Yöntemin, sonuç kümesindeki her satırının, sütun numaralarıyla indislenmiş bir dizi olarak olarak döndüreleceğini belirtir. İlk sütunun indisi 0'dır.
`PDO::FETCH_BOTH` (int)
  Yöntemin, sonuç kümesindeki her satırının, hem sütun isimleriyle hem de sütun numaralarıyla indislenmiş bir dizi olarak olarak döndürüleceğini belirtir. İlk sütunun indisi 0'dır.
`PDO::FETCH_OBJ` (int)
  Yöntemin, sonuç kümesindeki her satırının, özellik isimlerinin sütun isimlerine karşılık geldiği bir nesne olarak döndüreceğini belirtir.
`PDO::FETCH_BOUND` (int)
  Yöntemin, sonuç kümesindeki sütun değerlerini PDOStatement::bindParam() veya PDOStatement::bindColumn() yönteminde SQL bağımsız değişkenleri ile ilişkilendirilip PHP değişkenlerine atanacağını ve `true` döndürüleceğini belirtir.
`PDO::FETCH_COLUMN` (int)
  Yöntemin, sonuç kümesindeki sonraki satırdan istenen tek bir sütunu döndüreceğini belirtir.
`PDO::FETCH_CLASS` (int)
  Yöntemin, sınıf özellikleri sütun isimleriyle eşlenerek elde edilen sınıfın yeni bir örneğini döndüreceğini belirtir.

  > Bilginize: İstenen sınıf içinde özellik mevcut değilse sihirli __set() yöntemi çağrılır.

`PDO::FETCH_INTO` (int)
  Yöntemin, sınıf özellikleri sütun isimleriyle eşlenerek elde edilen sınıfın mevcut bir örneğini güncelleyeceğini belirtir.
`PDO::FETCH_FUNC` (int)
  Verinin anında işlenmesi yoluyla tamamen özelleştirmeye izin verir (sadece PDOStatement::fetchAll() içinde geçerlidir).
`PDO::FETCH_GROUP` (int)
  Grup değer olarak döner. Normal olarak `PDO::FETCH_COLUMN` veya `PDO::FETCH_KEY_PAIR` ile birlikte.
`PDO::FETCH_UNIQUE` (int)
  Sadece eşsiz değerleri getirir.
`PDO::FETCH_KEY_PAIR` (int)
  İlk sütunun anahtar diğer sütunların ise birer değer olduğu bir dizi döner.
`PDO::FETCH_CLASSTYPE` (int)
  Sütun ismini ilk sütunun değerinden belirler.
`PDO::FETCH_SERIALIZE` (int)
  Nesnenin dizgeleştirilmiş olarak döndürülmesi dışında `PDO::FETCH_INTO` gibidir. Bu seçenek etkinken sınıf kurucusu asla çağrılmamaktadır. PHP 8.1.0 ve sonrasında kullanımı önerilmiyor.
`PDO::FETCH_PROPS_LATE` (int)
  Özellikler değiştirilmeden önce kurucuyu çağırır.
`PDO::ATTR_AUTOCOMMIT` (int)
  `false` olduğu takdirde, PDO otomatik veri gönderimini iptal eder, böylece bağlantı bir veri hareketi (transaction) başlatır.
`PDO::ATTR_PREFETCH` (int)
  Önalım boyutunun ayarlanması uygulamanızın bellek kullanım hızını dengeleyebilmenizi sağlar. Her veritabanı/sürücü önalım boyutunun ayarlanmasına izin vermez. Önalım boyutu ne kadar büyük seçilirse yüksek bellek kullanımı pahasına başarım o kadar artar.
`PDO::ATTR_TIMEOUT` (int)
  Veritabanıyla iletişim zaman aşımını belirlemek için kullanılır.
`PDO::ATTR_ERRMODE` (int)
  Bu sabit ile ilgili bilgi için Hatalar ve Ele Alınışları bölümüne bakınız.
`PDO::ATTR_SERVER_VERSION` (int)
  Bu salt okunur bir özelliktir. PDO'nun bağlı olduğu veritabanı sunucusunun sürüm bilgisini döndürür.
`PDO::ATTR_CLIENT_VERSION` (int)
  Bu salt okunur bir özelliktir. PDO sürücüsünün kullandığı istemci kütüphanesinin sürüm bilgisini döndürür.
`PDO::ATTR_SERVER_INFO` (int)
  Bu salt okunur bir özelliktir. PDO'nun bağlı olduğu veritabanı sunucusu hakkında bazı temel bilgileri döndürür.
`PDO::ATTR_CONNECTION_STATUS` (int)
`PDO::ATTR_CASE` (int)
  Sütun isimlerindeki harflerin `PDO::CASE_*` sabitlerine göre belirtilmesini sağlar.
`PDO::ATTR_CURSOR_NAME` (int)
  Bir gösterici için kullanılacak ismi tanımlar veya döndürür. Kaydırılabilir göstericiler ve konum belirterek yapılan güncelemeler için çok kullanışlıdır.
`PDO::ATTR_CURSOR` (int)
  Gösterici türünü seçer. Desteklenen gösterici türleri: `PDO::CURSOR_FWDONLY` ve `PDO::CURSOR_SCROLL`. İhtiyacınızın kaydırılabilir bir gösterici olup olmadığına dair bir fikriniz yoksa seçiminizi `PDO::CURSOR_FWDONLY` sabitinden yana kullanın.
`PDO::ATTR_DRIVER_NAME` (int)
  Sürücü ismini döndürür.

  Örnek 1 - `PDO::ATTR_DRIVER_NAME` kullanımı

      <?php
      if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
        echo "Burada mysql üzerinde mysql'e özgü bir şeyler yapılıyor\n";
      }
      ?>

`PDO::ATTR_ORACLE_NULLS` (int)
  Veri alınırken SQL NULL değerleri boş dizgelere dönüştürür.
`PDO::ATTR_PERSISTENT` (int)
  Yeni bir bağlantı oluşturmak yerine kalıcı bir bağlantı ister. Ayrıntılı bilgi için Bağlantılar ve Bağlantı Yönetimi sayfasına bakınız.
`PDO::ATTR_STATEMENT_CLASS` (int)
  Deyimlerin döndürüleceği sınıf adını tanımlar.
`PDO::ATTR_FETCH_CATALOG_NAMES` (int)
  Sonuç kümesinde döndürülen her sütun isminin başına katalog ismini yerleştirir. Katalog ismi ile sütun ismi arasına bir nokta konur. Bu özellik sürücü seviyesinde desteklenir; kullandığınız sürücü bu özelliği desteklemeyebilir.
`PDO::ATTR_FETCH_TABLE_NAMES` (int)
  Sonuç kümesinde döndürülen her sütun isminin başına tablo ismini yerleştirir.Tablo ismi ile sütun ismi arasına bir nokta konur. Bu özellik sürücü seviyesinde desteklenir; kullandığınız sürücü bu özelliği desteklemeyebilir.
`PDO::ATTR_STRINGIFY_FETCHES` (int)
  Getirilen tüm değerlerin dizge olarak değerlendirilmesini sağlar.
`PDO::ATTR_MAX_COLUMN_LEN` (int)
  Azami sütun uzunluğunu belirler.
`PDO::ATTR_DEFAULT_FETCH_MODE` (int)
`PDO::ATTR_EMULATE_PREPARES` (int)
`PDO::ATTR_DEFAULT_STR_PARAM` (int)
  Dizge bağımsız değişkenin öntanımlı türünü belirler. Değer olarak sadece `PDO::PARAM_STR_NATL` veya `PDO::PARAM_STR_CHAR` atanabilir. PHP 7.2.0'dan beri kullanılabilir..
`PDO::ERRMODE_SILENT` (int)
  Bir hata oluştuğunda bir istisna veya bir hata döndürülmez. Geliştiricinin hataları yakalayıp gereğini yapacağı varsayılır. Bu öntanımlı kiptir. Bu özellik ile ilgili ayrıntılı bilgi için Hatalar ve Ele Alınışları sayfasına bakınız.
`PDO::ERRMODE_WARNING` (int)
  Bir hata oluştuğunda bir PHP `E_WARNING` iletisi çıktılanır. Bu özellik ile ilgili ayrıntılı bilgi için Hatalar ve Ele Alınışları sayfasına bakınız.
`PDO::ERRMODE_EXCEPTION` (int)
  Bir hatanın oluşması bir PDOException istisnası ile sonuçlanır. Bu özellik ile ilgili ayrıntılı bilgi için Hatalar ve Ele Alınışları sayfasına bakınız.
`PDO::CASE_NATURAL` (int)
  Sütun isimleri veritabanı sürücüsünün döndürdüğü haliyle bırakılır.
`PDO::CASE_LOWER` (int)
  Sütun isimlerinin küçük harflerle yazılmasına sebep olur.
`PDO::CASE_UPPER` (int)
  Sütun isimlerinin büyük harflerle yazılmasına sebep olur.
`PDO::NULL_NATURAL` (int)
`PDO::NULL_EMPTY_STRING` (int)
`PDO::NULL_TO_STRING` (int)
`PDO::FETCH_ORI_NEXT` (int)
  Sonuç kümesindeki sonraki satırı döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::FETCH_ORI_PRIOR` (int)
  Sonuç kümesindeki önceki satırı döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::FETCH_ORI_FIRST` (int)
  Sonuç kümesindeki ilk satırı döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::FETCH_ORI_LAST` (int)
  Sonuç kümesindeki son satırı döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::FETCH_ORI_ABS` (int)
  İstenen satırı sonuç kümesindeki satır numarasına göre döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::FETCH_ORI_REL` (int)
  İstenen satırı, göstericinin sonuç kümesindeki konumuna göreli olarak döndürür. Sadece kaydırılabilir göstericiler için geçerlidir.
`PDO::CURSOR_FWDONLY` (int)
  Sadece ileri yönde hareket eden bir göstericiye sahip bir PDOStatement nesnesi oluşturur. PHP'deki en hızlı ve en çok kullanılan veriye erişim yöntemi olarak bu gösterici öntanımlı göstericidir.
`PDO::CURSOR_SCROLL` (int)
  Kaydırılabilir göstericili bir PDOStatement nesnesi oluşturur. Satırların sonuç kümesinden nasıl döndürüleceğini belirtmek için `PDO::FETCH_ORI_*` sabitlerini kullanın.
`PDO::ERR_NONE` (string)
  SQL deyiminin hatasız ve uyarısız başarıyla çalıştırıldığı anlamına gelen SQLSTATE '00000' karşılığıdır. Bir hata oluştuğunda hatayı PDO::errorCode() veya PDOStatement::errorCode() ile saptarken kolaylık olsun diye bu sabit vardır. Bunu normal olarak yöntemden dönen kodu inceleyerek saptayabilirsiniz.
`PDO::PARAM_EVT_ALLOC` (int)
  Kaynak ayırma olayı.
`PDO::PARAM_EVT_FREE` (int)
  Ayrılan kaynağı serbest bırakma olayı.
`PDO::PARAM_EVT_EXEC_PRE` (int)
  Bir hazır deyimi çalıştırmadan önce tetiklenen olay.
`PDO::PARAM_EVT_EXEC_POST` (int)
  Bir hazır deyimi çalıştırıldıktan hemen sonra tetiklenen olay.
`PDO::PARAM_EVT_FETCH_PRE` (int)
  Bir sonuç kümesinden bir sonucun alınmasından önce tetiklenen olay.
`PDO::PARAM_EVT_FETCH_POST` (int)
  Bir sonuç kümesinden bir sonucun alınmasının ardından tetiklenen olay.
`PDO::PARAM_EVT_NORMALIZE` (int)
  Sürücünün bağımsız değişken isminin normalleştirilmesini sağlamak için ilişkili bağımsız değişkenin kayda geçirilmesi sırasında tetiklenen olay.
`PDO::SQLITE_DETERMINISTIC` (int)
  PDO::sqliteCreateFunction() ile oluşturulan işlevin belirlenimsel olduğunu belirtir. Yani SQL deyiminin belli bir girdi için daima belli bir sonucu döndüreceğini belirtir. (PHP 7.1.4 ve sonrasında mevcuttur.)

# Bağlantılar ve Bağlantı Yönetimi

Bağlantılar temel PDO sınıfının örneklenmesiyle kurulur. Hangi sürücünün kullanılacağının bir önemi yoktur; daima PDO sınıf isminin kullanılması gerekir. Veritabanı kaynağı (diğer bir deyişle DSN) ve isteğe bağlı olarak kullanıcı ismi ve parolası belirtmek için kurucu kullanılabilir.

Örnek 1 - MySQL'e bağlanma

    <?php
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    ?>

Bir hata oluşursa bu bir PDOException istisnasına sebep olur. Hatayı ele almak için istisna yakalanabilir veya işlem set_exception_handler() üzerinden ayarlanmış bir küresel hata işleme uygulamasına bırakılabilir.

Örnek 2 - Bağlantı hatalarının ele alınışı

    <?php
    try {
        $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    } catch (PDOException $e) {
    // örneğin zaman aşımını bekledikten sonra yediden bağlanmaya çalış
    }
    ?>

Uyarı

Tıpkı diğer herhangi bir istisna gibi, PDOException da bir `catch` deyimi aracılığıyla açıkça veya set_exception_handler() aracılığıyla dolaylı olarak yakalanabilir. Aksi takdirde varsayılan olarak, yakalanmamış bir istisnayı `E_FATAL_ERROR` ölümcül hatasına dönüştürme davranışı gerçekleşir. Ölümcül hata, bağlantı ayrıntılarını sızdırabilecek bir geri izleme içerecektir. Bu nedenle, bir üretim sunucusunda php.ini `display_errors` seçeneğine `0` atanmalıdır.

Veritabanı bağlantısının başarıyla kurulmasıyla betiğinize PDO sınıfının bir örneği döner. PDO nesnesinin ömrü boyunca bağlantı etkin kalır. Bağlantıyı kapatmak için, nesneye gönderimli herşeyin silindiğinden emin olarak nesneyi yok etmek gerekir; nesneyi tutan değişkene `null` atanarak bu yapılabilir. Bu yapılmazsa, PHP betiği sonlandığında nesne kendiliğinden yok edilir.

> Bilginize: Bu PDO örneğine hala başka gönderimler varsa (örneğin bir PDOStatement örneğinden veya aynı PDO örneğine gönderimli diğer değişkenlerden), bunların da kaldırılması gerekir (örneğin, PDOStatement'a başvuran değişkene `null` atanarak).

Örnek 3 - Bir bağlantının kapatılışı

    <?php
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    // burada bağlantıyı kullanıyoruz

    $sth = $dbh->query('SELECT * FROM foo');

    // İşimiz bittiğine göre bağlantıyı kapatabiliriz.
    $sth = null;
    $dbh = null;
    ?>

Çoğu HTTP uygulaması veritabanı sunucularına kalıcı bağlantılardan medet umar. Kalıcı bağlantılar betiğin işi bittiğinde kapatılmaz, önbelleğe alınıp aynı kimlik kanıtlarıyla bağlantı kurmak isteyen başka betiklerce kullanılır. Kalıcı bağlantı önbelleği, bir betiğin bir veritabanı ile her iletişime geçme isteğinde yeni bir bağlantı kurma maliyetini ortadan kaldırır ve uygulamanın daha hızlı çalışmasını sağlar.

Örnek 4 - Kalıcı bağlantılar

    <?php
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
        PDO::ATTR_PERSISTENT => true
    ));
    ?>

`PDO::ATTR_PERSISTENT` seçeneğinin değeri, sayısal olmayan bir dizge olmadığı sürece bool'a (kalıcı bağlantıları etkinleştir/devre dışı bırak) dönüştürülür, bu durumda çok sayıda kalıcı bağlantı havuzunun kullanımına izin verilir. Bu, farklı bağlantılar uyumsuz ayarlar kullanıyorsa, örneğin farklı `PDO::MYSQL_ATTR_USE_BUFFERED_QUERY` değerleri kullanılıyorsa yararlıdır.

> Bilginize:

> Kalıcı bağlantı kullanmak için PDO kurucusuna aktarılan sürücü seçenekleri dizisinde `PDO::ATTR_PERSISTENT` sabitine `true` atanmalıdır. Nesne ilklendirildikten sonra bu özelliğin PDO::setAttribute() ile etkin kılınması istenirse sürücü kalıcı bağlantıları kullanmayacaktır.

> Bilginize:

> PDO ODBC sürücüsü kullanılıyorsa ve ODBC kütüphaneleri ODBC Bağlantı Havuzlarını destekliyorsa (hem unixODBC hem de Windows bunu yapar; başkaları da olabilir) kalıcı PDO bağlantılarının kullanılması önerilmez; bağlantı önbelleklemesini ODBC Bağlantı Havuzlama katmanına bırakmak daha iyidir. ODBC Bağlantı Havuzu bağlantıyı süreçteki diğer modüllerle paylaşır; eğer PDO bağlantıyı önbelleklemeye çalışırsa bu bağlantı asla ODBC bağlantı havuzuna dönmez ve sonuçta diğer modüllere hizmet vermek için ek bağlantılar oluşur.

# Hareketler ve Ototeslim

Bir veritabanına PDO üzerinden bağlantı kuracaksanız, sorgulara başlamadan PDO'nun toplu hareketleri nasıl yönettiğini bilmek zorundasınız. Daha önce toplu hareketler (transactions) ile çalışmadıysanız şu dört ana özelliği bilmenizde yarar var: Dayanıklılık, Atomsallık, Yalıtım ve Tutarlılık (DAYT). Layman kuralları gereğince, bir toplu hareket olarak yürütülen bir işleme başlanıldığı takdirde, aşamalar halinde bile yürütülse, diğer bağlantılarla etkileşime girmeksizin veritabanına güvenle uygulanacağı garanti edilir. Ayrıca, toplu hareketler, istediğiniz taktirde (sanki işleme hiç başlamamışsınız gibi) otomatik olarak geri alınır ve betiğinizin hatalarla daha kolay başa çıkmasını sağlar.

Toplu hareketler genellikle bir defada uygulanacak işlemlerin bir betik (bir SQL deyimleri betiği) haline getirilmesiyle oluşur. Bunun bu güncellemelerin verimliliğini esaslı bir şekilde arttırmak gibi bir yan etkisi de vardır. Başka bir deyişle, toplu hareketler betiğinizin daha hızlı ve daha tutarlı çalışmasını sağlar (ancak, bunu sağlamak için toplu hareketleri doğru yerde kullanmanız gerekir).

Talihsizliğe bakın ki, her veritabanı toplu hareketleri desteklemez, bu yüzden PDO, önce bağlantı açılmasını gerektiren ve ototeslim kipi denen kipte çalışmak zorunda kalır. Ototeslim kipinde, çalıştırdığınız her sorgu veritabanı hareketleri destekliyorsa dolaylı olarak bir harekettir, desteklemiyorsa değildir. İhtiyacınız toplu hareketleri kullanmaksa hareketleri ilklendirmek için PDO::beginTransaction() yöntemini kullanmalısınız. Eğer kullanmaya çalıştığınız veritabanı toplu hareketleri desteklemiyorsa bir PDOException istisnası yavrulanır (hata işleme ayarlarınızdan bağımsız olarak: bu daima bir dizi hata durumundan oluşur). Bir toplu hareketi ilklendirdikten sonra hareketi başlatmak için PDO::commit(), hareketler yerine getirilirken çalıştırdığınız kodun başarı durumuna bağlı olarak hareketleri geri almak için PDO::rollBack() yöntemini kullanabilirsiniz.

Uyarı

PDO, yalnızca sürücü düzeyinde işlem yeteneklerini denetler. Belirli çalışma zamanı koşulları hareketlerin kullanılamaz olduğu anlamına geliyorsa, fakat veritabanı sunucusu bir hareket başlatmak üzere isteği kabul ederse PDO::beginTransaction() yine de hata vermeksizin `true` döndürecektir.

Buna bir örnek, bir MySQL veritabanında MyISAM tabloları üzerinde hareketleri kullanmaya çalışmak olurdu.

Bir toplu hareket veritabanına gönderilmişken bir nedenle betiğiniz sonlanırsa veya bağlantı kapatılmaya çalışılırsa PDO otomatik olarak hareketleri geri alır. Bu, betiğin beklenmedik durumlarda sonlanmasına karşı veritabanındaki verilerin tutarsız hale gelmesini önleyecek bir güvenlik önlemidir. Ancak toplu hareketleri doğrudan siz başlatmadıysanız bir şeyler zaten yolunda gitmemiş demektir, dolayısıyla verilerinizin güvenliği için hareketlere başa sarma işlemi uygulanır.

Uyarı

Otomatik başa sarma işlemi sadece toplu hareketler PDO::beginTransaction() üzerinden ilklendirildiğinde uygulanır. Bir toplu hareket PDO'sunu başlatan bir sorguyu el yordamıyla kendiniz başlatırsanız, neler olacağı bilinemez ve yanlış giden bir şeyler olursa bunlar geri alınamaz.

Örnek 1 - Bir toplu hareket betiğinin çalıştırılması

Aşağıdaki örnekte, yeni bir çalışan için 23 numaralı bir girdi kümesi oluşturduğumuzu varsayıyoruz. Şahıs için girilen temel bilgilere ilaveten ücretini de kaydedeceğiz. Bu basit işlemi iki ayrı güncelleme ile yapmak mümkünse de bu iki deyimi PDO::beginTransaction() ve PDO::commit() çağrılarının arasına alıp bir sebeple işlem tamamlanamazsa yapılanların geri alınmasını garantilemiş olacağız. Eğer bir şeyler yolunda gitmezse `catch` kümesi haraket başladığından beri yapılan işlemleri geri alır ve bir hata iletisi basar.

    <?php
    try {
      $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
          array(PDO::ATTR_PERSISTENT => true));
      echo "Bağlantı kuruldu\n";
    } catch (Exception $e) {
      die("Bağlanılamadı: " . $e->getMessage());
    }

    try {
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      $dbh->beginTransaction();
      $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
      $dbh->exec("insert into salarychange (id, amount, changedate)
          values (23, 50000, NOW())");
      $dbh->commit();

    } catch (Exception $e) {
      $dbh->rollBack();
      echo "İşlem başarısız oldu: " . $e->getMessage();
    }
    ?>

Güncellemeleri birer toplu hareket olarak yapmak zorunda değilsiniz. Almak istediğiniz veriler için karmaşık sorgular yapabileceğiniz gibi elde ettiğiniz verilerle başka sorgular ve güncellemeler yapmanızda da mümkündür. Ancak, bu arada bir toplu hareket işlemi yürütülüyorsa, bu çalışmanın ortasında kimsenin hiçbir veriyi değiştiremeyeceği garanti altındadır. Toplu hareketlerle ilgili daha ayrıntılı bilgi için veritabanı sunucunuzun belgelerine bakınız.

# Hazır deyimler ve Saklı Yordamlar

Genellikle gelişkin veritabanlarınca desteklenen, hazır deyimler diye bilinen bir kavram vardır. Bunlar nedir? Bunları bir takım bağımsız değişkenlerle özelleştirilebilen, SQL için derlenmiş şablonlar olarak düşünebilirsiniz. Hazır deyimlerin başlıca iki yararı vardır:

- Sorgunun tek bir defa çözümlenmesi (veya hazırlanması) gerekir fakat aynı veya farklı bağımsız değişkenlerle defalarca çalıştırılabilir. Sorgu hazır olduğunda veritabanınca incelenir, derlenip sorgunun amacına uygun olarak en iyilenir. Karmaşık sorgularda aynı sorguyu farklı bağımsız değişkenlerle defalarca yineleyecekseniz işlemler, uygulamanızı farkedilir şekilde yavaşlatacak kadar uzun sürebilir. Hazır deyimleri kullanarak her yinelemede tekrarlanan inceleme/derleme/eniyileme döngüsünden kurtulabilirsiniz. Özetle, hazır deyimler daha az özkaynak kullandığından daha hızlı çalışır.
- Hazır deyim bağımsız değişkenlerinin öncelenmesi gerekmez. Bu işlemi sürücüler sizin yerinize yapar. Uygulamanız özellikle hazır deyimleri kullanıyorsa hiçbir SQL zerkinin olmayacağından emin olabilirsiniz. (Ancak, sorgunun diğer parçaları öncelenmemiş girdiler içeriyorsa hala risk altındasınız demektir.)

Hazır deyimleri kullanmanın bir başka yararı da bunları desteklemeyen sürücüler için PDO'nun bu özelliği taklit etmesidir (PDO'nun taklit ettiği tek özellik budur). Böylece aynı veri erişim uygulamasını veritabanınızın yeteneklerinden bağımsız olarak kullanabilirsiniz.

Örnek 1 - Hazır deyimlerle bağımsız değişken ismine göre veri girişi

Bu örnekte `isim` ve `deger` alanlarına bağımsız değişkenlerin isimlerine göre bir INSERT sorgusu ile defalarca veri girilmektedir.

    <?php
    $deyim = $dbh->prepare(
              "INSERT INTO KUTUK (isim, deger) VALUES (:isim, :deger)");
    $deyim->bindParam(':isim', $isim);
    $deyim->bindParam(':değer', $değer);

    // bir satıra veri girelim
    $isim = 'bir';
    $değer = 1;
    $deyim->execute();

    // farklı değerlerle bir satır daha girelim
    $isim = 'iki';
    $değer = 2;
    $deyim->execute();
    ?>

Örnek 2 - Hazır deyimlerle bağımsız değişken indisine göre veri girişi

Bu örnekte `isim` ve `deger` alanlarına bağımsız değişkenlerin indislerine göre bir INSERT sorgusu ile defalarca veri girilmektedir.

    <?php
    $deyim = $dbh->prepare("INSERT INTO KUTUK (isim, değer) VALUES (?, ?)");
    $deyim->bindParam(1, $isim);
    $deyim->bindParam(2, $değer);

    // bir satıra veri girelim
    $isim = 'bir';
    $değer = 1;
    $deyim->execute();

    // farklı değerlerle bir satır daha girelim
    $isim = 'iki';
    $değer = 2;
    $deyim->execute();
    ?>

Örnek 3 - Hazır deyimle veri almak

Bu örnekte bir formdan sağlanan bir anahtar değere dayanarak veritabanından veri alınmaktadır. Kullanıcı girdisi otomatik olarak öncelenmekte, dolayısıya bir SQL zerki riski ortaya çıkmamaktadır.

    <?php
    $deyim = $dbh->prepare("SELECT * FROM KUTUK where isim = ?");
    $deyim->execute([$_GET['isim']]);
    foreach ($deyim as $satır) {
        print_r($satır);
    }
    ?>

Örnek 4 - Bir saklı yordamın çıktı bağımsız değişkeni ile kullanımı

Eğer veritabanı sürücüsü bağımsız değişken ilişkilendirmeyi destekiyorsa bağımsız değişkenleri sadece girdide değil çıktıda da bağımsız değişkenlerle ilişkilendirebilirsiniz. Çıktı bağımsız değişkenlerinin kullanımı girdi bağımsız değişkenlerine göre daha karmaşıktır. Böyle bir durumda ilişkilendirdiğiniz bağımsız değişken sayısını bilmeniz gerekir. Eğer dönen değer önerdiğinizden daha büyükse bir hata oluşur.

    <?php
    $deyim = $dbh->prepare("CALL sy_dizge_döndürür(?)");
    $deyim->bindParam(1, $dönen_değer, PDO::PARAM_STR, 4000);

    // saklı yordamı çağıralım
    $deyim->execute();

    print "dönen değer: $dönen_değer\n";
    ?>

Örnek 5 - Bir saklı yordamın girdi/çıktı bağımsız değişkeni ile kullanımı

Ayrıca, değerleri tutan bağımsız değişkenleri hem girdi hem de çıktı için kullanabilirsiniz. Sonraki örnekte, saklı yordama 'merhaba' dizgesi aktarılmakta, yordam döndüğünde 'merhaba' yerine yordamın dönüş değeri yerleştirilmektedir.

    <?php
    $deyim = $dbh->prepare("CALL sy_dizge_alır_dizge_döndürür(?)");
    $değer = 'merhaba';
    $deyim->bindParam(1, $değer, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

    // saklı yordamı çağıralım
    $deyim->execute();

    print "dönen değer: $değer\n";
    ?>

Örnek 6 - Geçersiz bağımsız değişken kullanımı

    <?php
    $deyim = $dbh->prepare("SELECT * FROM KUTUK where isim LIKE '%?%'");
    $deyim->execute([$_GET['isim']]);

    // bağımsız değişken değerin bütünün yerine kullanılmalı
    $deyim = $dbh->prepare("SELECT * FROM KUTUK where isim LIKE ?");
    $deyim->execute(["%$_GET[isim]%"]);
    ?>

# Hatalar ve Ele Alınışları

PDO eklentisi uygulama geliştirme tarzınıza uygun olarak üç farklı hata işleme yönteminden birini seçmenize olanak verir.

- `PDO::ERRMODE_SILENT`

  PHP 8.0.0 öncesinde bu öntanımlı kipti. PDO, gerek veritabanı gerekse deyim nesneleri üzerinde PDO::errorCode() ve PDO::errorInfo() işlevlerini kullanarak hata kodunu sizin için hazır hale getirir. Eğer hata bir deyim nesnesiyle ilgili bir işlev veya yöntem çağrısından kaynaklanmışsa bu nesne üzerinde PDOStatement::errorCode() veya PDOStatement::errorInfo() işlevini kendiniz çağırmalısınız. Eğer hata bir veritabanı nesnesiyle ilgili bir işlev veya yöntem çağrısından kaynaklanmışsa bu işlevleri bu kez veritabanı nesnesi üzerinde çağırmalısınız.

- `PDO::ERRMODE_WARNING`

  Hata kodu ayarlarına ek olarak, PDO geleneksel bir E_WARNING uyarısı da verir. Bu kip, hata ayıklama ve denemeler sırasında uygulama akışının kesilmeden oluşan sorunları görmek için kullanışlıdır.

- `PDO::ERRMODE_EXCEPTION`

  PHP 8.0.0 öncesinde bu öntanımlı kipti. Hata kodu ayarlarına ek olarak, PDO bir PDOException istisnası yavrulayıp hata kodunu ve iletisini nesnenin özelliklerine yerleştirir. Bu kip de hata ayıklama sırasında uygulama akışının kesilmeden oluşan sorunları çabucak görüp müdahale etmek için kullanışlıdır. (Dikkat: Eğer istisna betiğin sonlanmasına sebep olursa veri hareketleri (transactions) otomatik olarak başa sarılır.)

  Bu kip bir istisna nesnesi ile çalıştığından, hataların, her veritabanı çağrısında dönen değere bakmaktan, sessiz kipi kullanmaktan ve geleneksel PHP tarzı uyarılardan daha iyi ve daha kolay işleme sokulmasını sağlar.

  PHP'deki istisna nesneleri hakkında bilgi edinmek için İstisnalar bölümüne bakınız.

PDO SQL-92 SQLSTATE hata kodu dizgelerinin kulanımını standartlaştırmıştır; her PDO sürücüsü kendi kodunu SQLSTATE kodlarına uydurmakla yükümlüdür. PDO::errorCode() yöntemi tek bir SQLSTATE kodu döndürür. Bir hata ile ilgili daha özel bilgiye gerek duyulursa, SQLSTATE kodundan başka sürücüye özgü hata kodunu ve iletisini içeren bir dizi döndüren PDO::errorInfo() yöntemi kullanılabilir.

Örnek 1 - PDO örneği oluşturup hata kipini atamak

    <?php
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';

    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // BU PDO'un  PDOException yavrulamasına sebep olur (tablo yoksa)
    $dbh->query("SELECT wrongcolumn FROM wrongtable");

    ?>

Yukarıdaki örneğin çıktısı:

    Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.wrongtable' doesn't exist in /tmp/pdo_test.php:10
    Stack trace:
    #0 /tmp/pdo_test.php(10): PDO->query('SELECT wrongcol...')
    #1 {main}
      thrown in /tmp/pdo_test.php on line 10

> Bilginize:

> Eğer bağlantı başarısız olursa, hangi `PDO::ATTR_ERRMODE` hata kipinin atanmış olduğuna bakmaksızın PDO::__construct() daima bir PDOException yavrular.

Örnek 2 - PDO örneği oluşturup kurucudaki hata kipini atamak

    <?php
    $dsn = 'mysql:dbname=test;host=127.0.0.1';
    $user = 'googleguy';
    $password = 'googleguy';

    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

    // Bu, PDO'nun bir istisna yerine E_WARNING seviyesinde bir hata
    // yavrulamasına sebep olur (tablo mevcut olmadığında)
    $dbh->query("SELECT wrongcolumn FROM wrongtable");
    ?>

Yukarıdaki örneğin çıktısı:

    Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.wrongtable' doesn't exist in
    /tmp/pdo_test.php on line 9

# Büyük Veri Nesneleri (LOB'lar)

Uygulamanızın bir yerinde veritabanınızda büyük müktarda veri saklamanız gerekebilir. Burada büyük veriden kasıt 4kB civarı olsa da bazı veritabanları için büyük veri 32kB'tan başlar. Büyük veriler ikil veya dizgesel olabilir. PDOStatement::bindParam() ve PDOStatement::bindColumn() çağrılarında büyük verilerlerle çalışmak için `PDO::PARAM_LOB` veri türünü kullanabilirsiniz. `PDO::PARAM_LOB`, verinin bir akım olarak eşleneceği anlamına gelir. Dolayısıyla, bu veriler üzerinde PHP Akım işlevleri ile işlem yapabilirsiniz.

Örnek 1 - Veritabanındaki bir resmin gösterilmesi

Bu örnekte bir LOB, $lob değişkeni ile ilişkilendirilmekte ve fpassthru() üzerinden tarayıcıya gönderilmektedir. LOB bir akımla temsil edildiğinden fgets(), fread() ve stream_get_contents() gibi işlevlerle üzerinde işlem yapabilirsiniz.

    <?php
    $db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
    $stmt = $db->prepare("select contenttype, imagedata from images where id=?");
    $stmt->execute(array($_GET['id']));
    $stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
    $stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
    $stmt->fetch(PDO::FETCH_BOUND);

    header("Content-Type: $type");
    fpassthru($lob);
    ?>

Örnek 2 - Bir resmin veritabanına yerleştirilmesi

Bu örnekte bir dosya açılıp, bir LOB olarak veritabanına yerleştirilmek üzere, dosya tanıtıcısı PDO'ya aktarılmaktadır. PDO, dosya içeriğini veritabanına yerleştirme işlemini en verimli şekilde yapacaktır.

    <?php
    $db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
    $stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
    $id = get_new_id(); // Yeni bir kimlik ayıran bir işlev

    // Resmin bir dosya yükleme formundan geldiğini varsayıyoruz
    // PHP belgelerinde  bu konuda ayrıntılı bilgi bulabilirsiniz

    $fp = fopen($_FILES['file']['tmp_name'], 'rb');

    $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $_FILES['file']['type']);
    $stmt->bindParam(3, $fp, PDO::PARAM_LOB);

    $db->beginTransaction();
    $stmt->execute();
    $db->commit();
    ?>

Örnek 3 - Oracle'da bir resmi veritabanına yerleştirmek

Oracle, bir LOB'u bir dosyadan alıp veritabanına yerleştirirken farklı bir sözdizimi kullanımını gerektirir. Esas olarak, yerleştirme işlemi bir toplu hareket olarak gerçekleştirilir. Böyle yapılmazsa oluşturulan LOB, sorgu çalıştırıldığında örtük olarak sıfır uzunluklu bir veri girişinin parçası haline gelir.

    <?php
    $db = new PDO('oci:', 'scott', 'tiger');
    $stmt = $db->prepare("insert into images (id, contenttype, imagedata) " .
    "VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");

    $id = get_new_id(); // Yeni bir kimlik ayıran bir işlev

    // Resmin bir dosya yükleme formundan geldiğini varsayıyoruz
    // PHP belgelerinde  bu konuda ayrıntılı bilgi bulabilirsiniz
    $fp = fopen($_FILES['file']['tmp_name'], 'rb');

    $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $_FILES['file']['type']);
    $stmt->bindParam(3, $fp, PDO::PARAM_LOB);

    $db->beginTransaction();
    $stmt->execute();
    $db->commit();
    ?>

# PDO sınıfı

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

## Giriş

PHP ile bir veritabanı sunucusu arasındaki bağlantıyı temsil eder.

## Sınıf Sözdizimi

class PDO {
/* Sabitler */
public const int PARAM_NULL;
public const int PARAM_BOOL = 5;
public const int PARAM_INT = 1;
public const int PARAM_STR = 2;
public const int PARAM_LOB = 3;
public const int PARAM_STMT = 4;
public const int PARAM_INPUT_OUTPUT;
public const int PARAM_STR_NATL;
public const int PARAM_STR_CHAR;
public const int PARAM_EVT_ALLOC;
public const int PARAM_EVT_FREE;
public const int PARAM_EVT_EXEC_PRE;
public const int PARAM_EVT_EXEC_POST;
public const int PARAM_EVT_FETCH_PRE;
public const int PARAM_EVT_FETCH_POST;
public const int PARAM_EVT_NORMALIZE;
public const int FETCH_DEFAULT;
public const int FETCH_LAZY;
public const int FETCH_ASSOC;
public const int FETCH_NUM;
public const int FETCH_BOTH;
public const int FETCH_OBJ;
public const int FETCH_BOUND;
public const int FETCH_COLUMN;
public const int FETCH_CLASS;
public const int FETCH_INTO;
public const int FETCH_FUNC;
public const int FETCH_GROUP;
public const int FETCH_UNIQUE;
public const int FETCH_KEY_PAIR;
public const int FETCH_CLASSTYPE;
public const int FETCH_SERIALIZE;
public const int FETCH_PROPS_LATE;
public const int FETCH_NAMED;
public const int ATTR_AUTOCOMMIT;
public const int ATTR_PREFETCH;
public const int ATTR_TIMEOUT;
public const int ATTR_ERRMODE;
public const int ATTR_SERVER_VERSION;
public const int ATTR_CLIENT_VERSION;
public const int ATTR_SERVER_INFO;
public const int ATTR_CONNECTION_STATUS;
public const int ATTR_CASE;
public const int ATTR_CURSOR_NAME;
public const int ATTR_CURSOR;
public const int ATTR_ORACLE_NULLS;
public const int ATTR_PERSISTENT;
public const int ATTR_STATEMENT_CLASS;
public const int ATTR_FETCH_TABLE_NAMES;
public const int ATTR_FETCH_CATALOG_NAMES;
public const int ATTR_DRIVER_NAME;
public const int ATTR_STRINGIFY_FETCHES;
public const int ATTR_MAX_COLUMN_LEN;
public const int ATTR_EMULATE_PREPARES;
public const int ATTR_DEFAULT_FETCH_MODE;
public const int ATTR_DEFAULT_STR_PARAM;
public const int ERRMODE_SILENT;
public const int ERRMODE_WARNING;
public const int ERRMODE_EXCEPTION;
public const int CASE_NATURAL;
public const int CASE_LOWER;
public const int CASE_UPPER;
public const int NULL_NATURAL;
public const int NULL_EMPTY_STRING;
public const int NULL_TO_STRING;
public const string ERR_NONE;
public const int FETCH_ORI_NEXT;
public const int FETCH_ORI_PRIOR;
public const int FETCH_ORI_FIRST;
public const int FETCH_ORI_LAST;
public const int FETCH_ORI_ABS;
public const int FETCH_ORI_REL;
public const int CURSOR_FWDONLY;
public const int CURSOR_SCROLL;
/* Yöntemler */
public function __construct(
string `$dsn`,
?string `$kullanıcı` = `null`,
#[\SensitiveParameter]?string `$parola` = `null`,
?array `$seçenekler` = `null`
)
public function beginTransaction(): bool
public function commit(): bool
public static function connect(
string `$dsn`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?array `$options` = `null`
): static
public function errorCode(): ?string
public function errorInfo(): array
public function exec(string `$deyim`): int|false
public function getAttribute(int `$öznitelik`): mixed
public static function getAvailableDrivers(): array
public function inTransaction(): bool
public function lastInsertId(?string `$isim` = `null`): string|false
public function prepare(string `$deyim`, array `$seçenekler` = []): PDOStatement|false
public function query(string `$deyim`, ?int `$getirme_kipi` = `null`): PDOStatement|false
public function query(string `$deyim`, ?int `$getirme_kipi` = PDO::FETCH_COLUMN, int `$sütun_num`): PDOStatement|false
public function query(
string `$deyim`,
?int `$getirme_kipi` = PDO::FETCH_CLASS,
string `$sınıf_adı`,
array `$kurucu_bağımsız değişkenleri`
): PDOStatement|false
public function query(string `$deyim`, ?int `$getirme_kipi` = PDO::FETCH_INTO, object `$nesne`): PDOStatement|false
public function quote(string `$dizge`, int `$tür` = PDO::PARAM_STR): string|false
public function rollBack(): bool
public function setAttribute(int `$öznitelik`, mixed `$değer`): bool
}

# PDO::beginTransaction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::beginTransaction — Bir toplu hareketi ilklendirir

### Açıklama

public function PDO::beginTransaction(): bool

Ototeslim kipini kapatır. Otomatik kip kapalıyken PDO nesne örneği üzerinden veritabanında yapılan değişiklikler PDO::commit() çağrısı ile toplu hareket tamamlanmadan veritabanında bir değişikliğe yol açmaz. Toplu hareketlerle yapılan değişiklikleri geri almak ve tekrar otomatik kipe dönmek için PDO::rollBack() yöntemini kullanabilirsiniz.

MySQL dahil bazı veritabanları, bir toplu hareketin içinde DROP TABLE veya CREATE TABLE gibi bir veritabanı tanımlama dili deyimi kullanıldığında otomatik olarak örtük bir PDO::commit() yaparlar. Örtük PDO::commit(), toplu hareket içindeki diğer değişikliklerin de geri alınmasına engeller.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Hareket zaten başlatılmışsa veya sürücü hareketleri desteklemiyorsa bir PDOException istisnası yavrulanır.

> Bilginize: `PDO::ATTR_ERRMODE` niteliği `PDO::ERRMODE_EXCEPTION` değilse bile bir istisna yavrulanır.

### Örnekler

Örnek 1 - Bir toplu hareketi geri almak

Aşağıdaki örnekte bir toplu hareket başlatılmakta, değişiklikler geri alınmadan önce iki deyim çalıştırılmaktadır. Ancak, MySQL'de DROP TABLE deyimi otomatik bir PDO::commit() çağrısına sebep olduğundan bu deyimden önce toplu hareket dahilinde yapılan hiçbir hareket geri alınamaz.

    <?php
    /* Ototeslim kipini kapatıp bir toplu hareket başlatalım */
    $dbh->beginTransaction();

    /* Veritabanı şemasını ve verisini değiştirelim */
    $sth = $dbh->exec("DROP TABLE fruit");
    $sth = $dbh->exec("UPDATE dessert
        SET name = 'hamburger'");

    /* Yanlışı farkedip hareketleri geri alıyoruz */
    $dbh->rollBack();

    /* Veritabanı bağlantısı tekrar ototeslim kipinde. */
    ?>

### Ayrıca Bakınız

- PDO::commit() - Bir toplu hareketi veritabanına gönderir
- PDO::rollBack() - Bir toplu hareketi geri alır
- Hareketler ve Ototeslim

# PDO::commit

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::commit — Bir toplu hareketi veritabanına gönderir

### Açıklama

public function PDO::commit(): bool

Bir toplu hareketi veritabanına gönderir ve bir PDO::beginTransaction() çağrısı ile yeni bir toplu hareket başlatılıncaya kadar geçerli olmak üzere bağlantıyı ototeslim kipine sokar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Etkin bir hareket yoksa bir PDOException yavrulanır.

> Bilginize: `PDO::ATTR_ERRMODE` niteliği `PDO::ERRMODE_EXCEPTION` değilse bile bir istisna yavrulanır.

### Örnekler

Örnek 1 - Temel bir hareket teslimatı

    <?php
    /* Ototeslim kipini kapatıp bir hareket başlatalım */
    $dbh->beginTransaction();

    /* Çok sayıda kaydı ya hep ya hiç deyip veritabanına yerleştirelim */
    $sql = 'INSERT INTO fruit
        (name, colour, calories)
        VALUES (?, ?, ?)';

    $sth = $dbh->prepare($sql);

    foreach ($fruits as $fruit) {
        $sth->execute(array(
            $fruit->name,
            $fruit->colour,
            $fruit->calories,
        ));
    }

    /* Değişiklikleri teslim edelim */
    $dbh->commit();

    /* Veritabanı bağlantısı tekrar ototeslim kipinde */
    ?>

Örnek 2 - Bir toplu hareketin teslim edilmesi

    <?php
    /* Ototeslim kipini kapatıp bir toplu hareket başlatalım */
    $dbh->beginTransaction();

    /* Veritabanı şemasını değiştirelim */
    $sth = $dbh->exec("DROP TABLE fruit");

    /* Değişiklikleri etkin kılalım */
    $dbh->commit();

    /* Veritabanı bağlantısı tekrar ototeslim kipinde. */
    ?>

> Bilginize: (VTD: Veri Tanımlama Dili - ing: DDL) Tüm veritabanları hareketlerin VTD deyimleri üzerine işlem yapmasına izin vermez: Bazıları hata üretir, bazıları da (MySQL dahil) ilk VTD deyimine rastladığı anda hareketi otomatikman teslim eder.

### Ayrıca Bakınız

- PDO::beginTransaction() - Bir toplu hareketi ilklendirir
- PDO::rollBack() - Bir toplu hareketi geri alır

# PDO::connect

(PHP 8 >= 8.4.0)

PDO::connect — Connect to a database and return a PDO subclass for drivers that support it

### Açıklama

public static function PDO::connect(
string `$dsn`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?array `$options` = `null`
): static

Creates an instance of a PDO subclass for the database being connected to, if it exists, otherwise return a generic PDO instance.

### Bağımsız Değişkenler

`dsn`

  Veritabanına bağlantı için gerekli bilgiyi içeren veri kaynağının ismi.

  Genellikle bir veri kaynağı ismi, aralarında bir noktalı virgül bulunan sürücü ismi ile PDO sürücüsüne özgü bağlantı sözdiziminden oluşur. Bu konuda daha ayrıntılı bilgiyi PDO Sürücüleri sayfasında bulabilirsiniz.

  `dsn` bağımsız değişkeni, bir veritabanı bağlantısı oluşturmak için gereken üç farklı yöntemi destekler:

  Sürücü isteği

    `dsn` bağımsız değişkeni, veri kaynağı ismi için gereken herşeyi içerir.

  URI isteği

    `dsn` bağımsız değişkeni, `uri:` sözcüğünü takibeden, veri kaynağı isim dizgesini içeren bir dosyanın yerini belirten bir özkaynak betimleyicisi içerir.

    `uri:file:///bir/yol/dsndosyası`

  Takma ad kullanımı

    `dsn` bağımsız değişkeni, php.ini içinde DSN dizgesini tanımlayan `pdo.dsn.`isim`` ile eşleşen `isim` adını içerir.

    > Bilginize:

    > Takma ad, .htaccess veya httpd.conf dosyasında değil php.ini dosyasında tanımlanmış olmalıdır.

`kullanıcı`

  DSN dizgesi için kullanıcı ismi. Bu bağımsız değişkenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

`parola`

  DSN dizgesi için parola. Bu bağımsız değişkenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

`seçenekler`

  Sürücüye özgü bağlantı seçeneklerini içeren bir isim=>değer çiftleri dizisi.

### Dönen Değerler

Returns an instance of a PDO subclass for the corresponding PDO driver if it exists, or a generic PDO instance.

### Hatalar/İstisnalar

PDO::__construct(), istenen veritabanına bağlantı sağlanamazsa, o an hangi `PDO::ATTR_ERRMODE` geçerli bakmaksızın, bir PDOException yavrulanır.

### Ayrıca Bakınız

- Pdo\Dblib
- Pdo\Firebird
- Pdo\Mysql
- Pdo\Odbc
- Pdo\Pgsql
- Pdo\Sqlite
- PDO::__construct() - Bir veritabanı bağlantısını temsil eden bir PDO nesnesi oluşturur

# PDO::__construct

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::__construct — Bir veritabanı bağlantısını temsil eden bir PDO nesnesi oluşturur

### Açıklama

public function PDO::__construct(
string `$dsn`,
?string `$kullanıcı` = `null`,
#[\SensitiveParameter]?string `$parola` = `null`,
?array `$seçenekler` = `null`
)

Belirtilen veritabanına kurulan bağlantıyı temsil eden bir PDO nesnesi oluşturur.

### Bağımsız Değişkenler

`dsn`

  Veritabanına bağlantı için gerekli bilgiyi içeren veri kaynağının ismi.

  Genellikle bir veri kaynağı ismi, aralarında bir noktalı virgül bulunan sürücü ismi ile PDO sürücüsüne özgü bağlantı sözdiziminden oluşur. Bu konuda daha ayrıntılı bilgiyi PDO Sürücüleri sayfasında bulabilirsiniz.

  `dsn` bağımsız değişkeni, bir veritabanı bağlantısı oluşturmak için gereken üç farklı yöntemi destekler:

  Sürücü isteği

    `dsn` bağımsız değişkeni, veri kaynağı ismi için gereken herşeyi içerir.

  URI isteği

    `dsn` bağımsız değişkeni, `uri:` sözcüğünü takibeden, veri kaynağı isim dizgesini içeren bir dosyanın yerini belirten bir özkaynak betimleyicisi içerir.

    `uri:file:///bir/yol/dsndosyası`

  Takma ad kullanımı

    `dsn` bağımsız değişkeni, php.ini içinde DSN dizgesini tanımlayan `pdo.dsn.`isim`` ile eşleşen `isim` adını içerir.

    > Bilginize:

    > Takma ad, .htaccess veya httpd.conf dosyasında değil php.ini dosyasında tanımlanmış olmalıdır.

`kullanıcı`

  DSN dizgesi için kullanıcı ismi. Bu bağımsız değişkenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

`parola`

  DSN dizgesi için parola. Bu bağımsız değişkenin belirtilmesi bazı PDO sürücüleri için isteğe bağlıdır.

`seçenekler`

  Sürücüye özgü bağlantı seçeneklerini içeren bir isim=>değer çiftleri dizisi.

### Hatalar/İstisnalar

PDO::__construct(), istenen veritabanına bağlantı sağlanamazsa, o an hangi `PDO::ATTR_ERRMODE` geçerli bakmaksızın, bir PDOException yavrulanır.

### Örnekler

Örnek 1 - Sürücü isteğiyle PDO örneğinin oluşturulması

    <?php

    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';

    $dbh = new PDO($dsn, $user, $password);

    ?>

Örnek 2 - URI isteğiyle PDO örneğinin oluşturulması

Aşağıdaki örnekte PHP'nin /usr/local/dbconnect dosyasını okuma iznine sahip olduğu varsayılmıştır. Dosya, PDO_ODBC sürücüsü üzerinden bir DB2 veritabanına bağlanmak için gereken şu bilgiyi içermektedir:

    odbc:DSN=SAMPLE;UID=birey;PWD=parola

Bu dosyanın yerini içeren bir `uri:` dizgesi ile veritabanı bağlantısı oluşturulabilir:

    <?php

    $dsn = 'uri:file:///usr/local/dbconnect';
    $user = '';
    $password = '';

    $dbh = new PDO($dsn, $user, $password);
    ?>

Örnek 3 - Bir takma ad kullanarak PDO örneğinin oluşturulması

Aşağıdaki örnekte, php.ini dosyasının bir MySQL veritabanına bağlantı kurmak için `mydb` adını takma ad olarak kullamayı mümkün kılan şöyle bir girdi içerdiği varsayılmıştır:

    [PDO]
    pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

    <?php

    $dsn = 'mydb';
    $user = '';
    $password = '';

    $dbh = new PDO($dsn, $user, $password);
    ?>

# PDO::errorCode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::errorCode — Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür

### Açıklama

public function PDO::errorCode(): ?string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ANSI SQL-92 standardında tanımlanan beş karakterlik abecesayısal bir hata tanıtıcısı (SQLSTATE) döndürür. Bir SQLSTATE iki karakterlik ana hata sınıfı değerinin ardına eklenmiş üç karakterlik alt sınıf değerinden oluşur. 01 ana sınıf değeri bir uyarı belirtir ve SQL_SUCCESS_WITH_INFO dönüş kodu ile birlikte bulunur. '01' ve 'IM' sınıfları dışındaki tüm sınıf değerleri bir hata belirtir. 'IM' sınıfı PDO gerçekleniminden (ve ODBC sürücüsünü kullanıyorsanız ODBC'den) türetilen uyarılar ve hatalar ile ilgilidir. Herhangi bir sınıfın '000' alt sınıf değeri o SQLSTATE için bir alt sınıfın olmadığını belirtir.

PDO::errorCode() sadece doğrudan veritabanı tanıtıcısında yürütülen işlemlerin hata kodlarını döndürür. PDO::prepare() veya PDO::query() ile bir PDOStatement nesnesi oluşturup deyim tanıtıcısı üzerinde oluşan bir hatayla ilgili bilgi alacaksanız PDOStatement::errorInfo() yöntemini kullanmalısınız.

Veritabanı tanıtıcısında yürütülmüş bir işlem yoksa `null` döner.

### Örnekler

Örnek 1 - Bir SQLSTATE kodunun döndürülmesi

    <?php
    /* Bir hata oluşturalım --BONES diye bir tablo olmasın */
    $dbh->exec("INSERT INTO bones(skull) VALUES ('lucy')");

    echo "\nPDO::errorCode(): ", $dbh->errorCode();
    ?>

Yukarıdaki örneğin çıktısı:

    PDO::errorCode(): 42S02

### Ayrıca Bakınız

- PDO::errorInfo() - Veritabanındaki son işlemle ilgili hata bilgisini döndürür
- PDOStatement::errorCode() - Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür
- PDOStatement::errorInfo() - Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür

# PDO::errorInfo

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::errorInfo — Veritabanındaki son işlemle ilgili hata bilgisini döndürür

### Açıklama

public function PDO::errorInfo(): array

Veritabanındaki son işlemle ilgili hata bilgisini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Veritabanındaki son işlemle ilgili hata bilgisini içeren bir dizi döndürür. Dizi en azından şu alanları içerir:

Eleman | Bilgi
--- | ---
0 | SQLSTATE hata kodu (ANSI SQL standardında tanımlanmış beş karakterlik abecesayısal bir tanıtıcı).
1 | Sürücüye özgü hatanın kodu.
2 | Sürücüye özgü hatanın iletisi.

> Bilginize:

> SQLSTATE hata kodu atanmamışsa veya sürücüye özgü hata kodu yoksa 0. eleman hariç bütün elemanlar `null` içerir.

PDO::errorInfo() yöntemi sadece veritabanına doğrudan uygulanan işlemlerin hata bilgisini döndürür. PDO::prepare() veya PDO::query() ile bir PDOStatement nesnesi oluşturup deyim tanıtıcısı üzerinde oluşan bir hatayla ilgili bilgi alacaksanız PDOStatement::errorInfo() yöntemini kullanmalısınız.

### Örnekler

Örnek 1 - Bir DB2 veiitabanına kurulan bir PDO_ODBC bağlantısıyla ilgili hata bilgisinin gösterilmesi

    <?php
    /* Bir hata oluşturalım -- hatalı bir SQL sözdizimi  */
    $stmt = $dbh->prepare('bozuk sql');
    if (!$stmt) {
        echo "\nPDO::errorInfo():\n";
        print_r($dbh->errorInfo());
    }
    ?>

Yukarıdaki örneğin çıktısı:

    PDO::errorInfo():
    Array
    (
        [0] => HY000
        [1] => 1
        [2] => near "bozuk": syntax error
    )

### Ayrıca Bakınız

- PDO::errorCode() - Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür
- PDOStatement::errorCode() - Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür
- PDOStatement::errorInfo() - Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür

# PDO::exec

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::exec — Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür

### Açıklama

public function PDO::exec(string `$deyim`): int|false

PDO::exec() belirtilen SQL deyimini tek bir işlev çağrısıyla çalıştırır ve deyimden etkilenen satırların sayısını döndürür.

PDO::exec() yöntemi bir SELECT deyiminin sonucunu döndürmez. Bir SELECT deyimini uygulamanız boyunca sadece bir defa çalıştıracaksanız PDO::query() yöntemini kullanabilirsiniz. Defalarca çalıştıracaksanız PDO::prepare() ile bir PDOStatement nesnesi hazırlayıp bunu PDOStatement::execute() ile çalıştırabilirsiniz.

### Bağımsız Değişkenler

`deyim`

  Hazırlanıp çalıştırılacak SQL deyimi.

  Sorgunun içindeki verinin gerektiği gibi öncelenmesi gerekir.

### Dönen Değerler

PDO::exec() işlevi çalıştırılan SQL deyimiyle silinen veya değiştirilen satırların sayısını döndürür. Etkilenen satır yoksa PDO::exec() `0` döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

Aşağıda, dönüş değerinin yanlış ele alındığı bir örneğe yer verilmiştir. Etkilenen satır sayısı 0 olduğu halde die() işlevi çağrılmaktadır:

    <?php
    $db->exec() or die(print_r($db->errorInfo(), true));// yanlış
    ?>

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Bir DELETE deyiminin çalıştırılması

Bir DELETE deyimiyle silinen satır sayısının öğrenilmesi.

    <?php
    $dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

    /* FRUIT tablosundaki tüm satırları silelim */
    $count = $dbh->exec("DELETE FROM fruit");

    /* Silinen satır sayısını döndürelim */
    print "$count satır silindi.\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1 satır silindi.

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
- PDOStatement::execute() - Bir hazır deyimi çalıştırır

# PDO::getAttribute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDO::getAttribute — Bir veritabanı bağlantı özniteliğinin değerini döndürür

### Açıklama

public function PDO::getAttribute(int `$öznitelik`): mixed

Bir veritabanı bağlantı özniteliğinin değerini döndürür.

Bazı veritabanı/sürücü çiftlerinin veritabanı bağlantı özniteliklerinin tamamını desteklemeyebileceği unutulmamalıdır.

### Bağımsız Değişkenler

`öznitelik`

  `PDO::ATTR_*` sabitlerinden biri. Sabitlerin açıklamaları için Öntanımlı Sabitler sayfasında bulunabilir. Veritabanı bağlantılarına uygulanabilecek sürücüye özgü sabitler:

  - `PDO::ATTR_AUTOCOMMIT`
  - `PDO::ATTR_CASE`
  - `PDO::ATTR_CLIENT_VERSION`
  - `PDO::ATTR_CONNECTION_STATUS`
  - `PDO::ATTR_DRIVER_NAME`
  - `PDO::ATTR_ERRMODE`
  - `PDO::ATTR_ORACLE_NULLS`
  - `PDO::ATTR_PERSISTENT`
  - `PDO::ATTR_PREFETCH`
  - `PDO::ATTR_SERVER_INFO`
  - `PDO::ATTR_SERVER_VERSION`
  - `PDO::ATTR_TIMEOUT`
  Bazı sürücüler sürücüye özgü "ek" öznitelikleri kullanamayabilir. Sürücüye özgü özniteliklerin başka sürücülerde kullanılmamasına ise özellikle dikkat edilmelidir.

### Dönen Değerler

Başarısızlık durumunda `null` yoksa istenen PDO özniteliğinin değerini döndürür.

### Hatalar/İstisnalar

Belirtilen `öznitelik` ilgili sürücü tarafından desteklenmiyorsa PDO::getAttribute() bir PDOException oluşturur.

### Örnekler

Örnek 1 - Veritabanı bağlantı özniteliklerinin öğrenilmesi

    <?php
    $conn = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');
    $attributes = array(
        "AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS",
        "ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION",
        "TIMEOUT"
    );

    foreach ($attributes as $val) {
        echo "PDO::ATTR_$val: ";
        echo $conn->getAttribute(constant("PDO::ATTR_$val")) . "\n";
    }
    ?>

### Ayrıca Bakınız

- PDO::setAttribute() - Bir öznitelik tanımlar
- PDOStatement::getAttribute() - Bir deyim özniteliğini döndürür
- PDOStatement::setAttribute() - Bir deyim özniteliğini tanımlar

# PDO::getAvailableDrivers

# pdo_drivers

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 1.0.3)

PDO::getAvailableDrivers -- pdo_drivers — Kullanılabilen PDO sürücülerini içeren bir dizi döndürür

### Açıklama

public static function PDO::getAvailableDrivers(): array
function pdo_drivers(): array

PDO::__construct() yönteminin `DSN` bağımsız değişkeninde kullanılabilen PDO sürücülerinin listesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

PDO::getAvailableDrivers() yöntemi PDO sürücü isimlerini içeren bir dizi döndürür. Hiç sürücü yoksa boş bir dizi döner.

### Örnekler

Örnek 1 - PDO::getAvailableDrivers() örneği

    <?php
    print_r(PDO::getAvailableDrivers());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql
        [1] => sqlite
    )

# PDO::inTransaction

(PHP 5 >= 5.3.3, Bundled pdo_pgsql, PHP 7, PHP 8)

PDO::inTransaction — Checks if inside a transaction

### Açıklama

public function PDO::inTransaction(): bool

Checks if a transaction is currently active within the driver. This method only works for database drivers that support transactions.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if a transaction is currently active, and `false` if not.

# PDO::lastInsertId

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::lastInsertId — Son yerleştirilen satırın veya sıradaki değerin kimliğini döndürür

### Açıklama

public function PDO::lastInsertId(?string `$isim` = `null`): string|false

Sürücüye bağlı olarak, yerleştirilen son satırın veya bir sıralama nesnesindeki son değerin kimliğini döndürür. Örneğin, PDO_PGSQL `isim` bağımsız değişkeni için herhangi bir dizi nesnesinin adının belirtilmesine izin verir.

> Bilginize:

> Bu yöntem, sıralı veya otomatik artan alanlarla ilgili desteğin bulunmadığı veritabanları için anlamlı veya tutarlı bir sonuç döndüremeyebilir.

### Bağımsız Değişkenler

`isim`

  Kimliği döndürülecek sırama nesnesinin ismi.

### Dönen Değerler

`isim` bağımsız değişkeninde bir sıralama nesnesi ismi belirtilmezse PDO::lastInsertId(), veritabanına son yerleştirilen satırın satır kimliğini bir dizge olarak döndürür.

`isim` bağımsız değişkeninde bir sıralama nesnesi ismi belirtilmişse PDO::lastInsertId(), sıralama nesnesinden alınan son değeri ifade eden bir dizge döndürür.

PDO sürücüsü bu özelliği desteklemiyorsa PDO::lastInsertId() bir `IM001` durumu (SQLSTATE) tetikler.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

# PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo >= 0.1.0)

PDO::prepare — Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür

### Açıklama

public function PDO::prepare(string `$deyim`, array `$seçenekler` = []): PDOStatement|false

PDOStatement::execute() yöntemi ile çalıştırılmak üzere bir SQL deyimi hazırlar. Deyim şablonu sıfır veya daha fazla sayıda birer isimle (:isim) veya birer soru imi (?) ile ifade edilen bağımsız değişken içerebilir. Deyimin çalıştırılması sırasında bu bağımsız değişkenlere farklı değerler atanarak aynı deyim defalarca kullanılabilir. Aynı deyim şablonunda hem isimli hem de soru imli bağımsız değişkenleri kullanamazsınız. İkisinden birini seçmek zorundasınız. Herhangi bir kullanıcı girişini bağlamak için bu bağımsız değişkenleri kullanın, kullanıcı girişini doğrudan sorguya dahil etmeyin.

PDOStatement::execute() işlevinde aktaracağınız her değer için eşsiz bir bağımsız değişken imleyici belirtmelisiniz. Öykünme kipi açık olmadığı sürece, hazırlanmış bir ifadede aynı ismi birden fazla isimli bağımsız değişken işaretçisinde kullanamazsınız.

> Bilginize:

> Bağımsız değişken işaretçileri yalnızca eksiksiz bir değişmez veriyi temsil edebilir. Ne değişmez parçasının, ne anahtar sözcük, ne tanımlayıcı ne de herhangi bir keyfi sorgu parçasının bağımsız değişken kullanılarak bağlanması mümkün değildir. Örneğin, bir SQL ifadesinin IN() yan tümcesinde tek bir bağımsız değişkene birden çok değer bağlayamazsınız.

Bir SQL deyiminin farklı değerlerle defalarca çalıştırılmak üzere PDO::prepare() ve PDOStatement::execute() yöntemlerine aktarılması, bu SQL deyimiyle ilgili sorgu planının ve temel verilerin müzakere edilmek üzere sürücü tarafından istemci ve/veya sunucu tarafında önbelleklemesiyle uygulamanızın başarımını yükseltecek en iyilemelerin yapılması mümkün olur. Ayrıca, PDO::prepare() ve PDOStatement::execute() işlevlerinin kullanımı, bağımsız değişkenlerin elle öncelenmesi gereğini ortadan kaldırarak SQL zerk saldırılarını engellemeye yardımcı olur.

Bağımsız değişkenli hazır deyimlerin değerlerle ilişkilendirilmesi işlemini desteklemeyen sürücüler için PDO bu işlemi taklit eder. Ayrıca sürücü isimli ve soru imli bağımsız değişken aktarım tarzlarından yalnız birini destekliyorsa PDO diğer tarzı da taklit eder.

> Bilginize: Öykünülmüş hazırlanmış ifadeler ve isimli veya soru işareti tarzı bağımsız değişkenlerinin yeniden yazılması için kullanılan çözümleyici, tek ve çift tırnaklar için standart olmayan tersbölülü öncelemeyi destekler. Bu, bir tersbölü ile öncelenmiş sonlandırma tırnaklarında bu kullanımın desteklenmediği anlamına gelir, bu da bağımsız değişkenlerin yanlış algılanmasına neden olarak hazırlanan ifadenin yürütüldüğünde başarısız olmasına sebep olabilir. Çözüm, bu tür SQL sorguları için öykünülmüş hazırlıklar kullanmamak ve sürücü tarafından yerel olarak desteklenen bir bağımsız değişken tarzı kullanarak bağımsız değişkenlerin yeniden yazılmasını önlemektir.

PHP 7.4.0 ve sonrasında, soru imleri kendileri ile öncelenebiliyor. Yani, `??` dizgesi artık veritabanına `?` dizgesi olartak gönderiliyor.

### Bağımsız Değişkenler

`deyim`

  Hedef veritabanı sunucusu için geçerli bir SQL deyimi şablonu olmalıdır.

`seçenekler`

  Bu yöntemden döndürülen PDOStatement nesnesi için atanacak öznitelik değerlerini isim=>değer çiftleri halinde içeren bir dizi. Çoğunlukla kaydırılabilen bir gösterici isteği için `PDO::CURSOR_SCROLL` özniteliğine `PDO::ATTR_CURSOR` değerini atamakta kullanılır. Bazı sürücülerin deyimin hazırlanması aşamasında atanabilen sürücüye özgü öznitelikleri vardır.

### Dönen Değerler

Veritabanı sunucusu deyimi başarıyla hazırlayabilmişse PDO::prepare() bir PDOStatement nesnesi döndürür; aksi takdirde ya bir PDOException yavrulanır veya işlev `false` döndürür (hata işlemeye bağımlı olarak).

> Bilginize:

> Öykünülmüş hazır deyimler için veritabanı sunucusuyla müzakere yapılmadığından PDO::prepare() deyim üzerinde bir sınama yapmaz.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - İsimli bağımsız değişkenli SQL deyim şablonu

    <?php
    /* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */
    $sql = 'SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour';
    $sth = $dbh->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
    $sth->execute(['calories' => 150, 'colour' => 'red']);
    $red = $sth->fetchAll();
    /* Dizi anahtarları ":" ile de öncelenebiliyor (seçimlik) */
    $sth->execute([':calories' => 175, ':colour' => 'yellow']);
    $yellow = $sth->fetchAll();
    ?>

Örnek 2 - Soru imli SQL deyim şablonu

    <?php
    /* Değerleri bir dizi olarak aktaracağımız bir deyim hazırlayalım */
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->execute([150, 'red']);
    $red = $sth->fetchAll();
    $sth->execute([175, 'yellow']);
    $yellow = $sth->fetchAll();
    ?>

Örnek 3 - Soru imi öncelemeli SQL deyim şablonu

    <?php
    /* Dikkat: Bu sadece PostgreSQL veritabanlarında geçerlidir */
    $sth = $dbh->prepare('SELECT * FROM issues WHERE tag::jsonb ?? ?');
    $sth->execute(['feature']);
    $featureIssues = $sth->fetchAll();
    $sth->execute(['performance']);
    $performanceIssues = $sth->fetchAll();
    ?>

### Ayrıca Bakınız

- PDO::exec() - Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür
- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
- PDOStatement::execute() - Bir hazır deyimi çalıştırır

# PDO::query

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDO::query — Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır

### Açıklama

public function PDO::query(string `$deyim`, ?int `$getirme_kipi` = `null`): PDOStatement|false
public function PDO::query(string `$deyim`, ?int `$getirme_kipi` = PDO::FETCH_COLUMN, int `$sütun_num`): PDOStatement|false
public function PDO::query(
string `$deyim`,
?int `$getirme_kipi` = PDO::FETCH_CLASS,
string `$sınıf_adı`,
array `$kurucu_bağımsız değişkenleri`
): PDOStatement|false
public function PDO::query(string `$deyim`, ?int `$getirme_kipi` = PDO::FETCH_INTO, object `$nesne`): PDOStatement|false

Bir SQL deyimini tek bir işlev çağrısında çalıştırır ve deyimi bir PDOStatement nesnesi olarak döndürür.

Defalarca yineleyeceğiniz bir sorguyu PDO::prepare() yöntemini kullanarak bir PDOStatement nesnesi haline getirip bunu PDOStatement::execute() ile defalarca çalıştırmak başarımı arttıracaktır.

Tekrar bir PDO::query() çağrısı yapmadan önce sonuç kümesindeki veriyi almazsanız çağrınız başarısızlıkla sonuçlanabilir. Yeni bir PDO::query() çağrısını yapmadan önce PDOStatement nesnesi ile ilişkilendirilmiş kaynakları serbest bırakmak için PDOStatement::closeCursor() çağrısı yapmalısınız.

> Bilginize:

> `deyim` yer tutucular içeriyorsa, deyim PDO::prepare() ve PDOStatement::execute() yöntemleri kullanılarak hazırlanıp çalıştırılmalıdır.

### Bağımsız Değişkenler

`deyim`

  Hazırlanacak ve çalıştırılacak SQL deyimi.

  SQL deyimi yer tutucular içeriyorsa, bu yöntem yerine PDO::prepare() ve PDOStatement::execute() yöntemleri kullanılmalıdır. Veya, SQL deyimi PDO::query() çağrılmadan önce elle hazırlanmalı, sürücü destekliyorsa PDO::quote() kullanılarak düzgünce öncelenmelidir.

`getirme_kipi`

  Döndürülen PDOStatement nesnesi için öntanımlı getirme kipi. `PDO::FETCH_*` sabitlerinden biri olmalıdır.

  İşleve fazladan bağımsız değişken aktarılırsa, bunlar sonuç nesnesi üzerinde PDOStatement::setFetchMode() çağrısı yapılmış gibi ele alınır. Sonraki bağımsız değişkenler, seçilen getirme kipine bağlı olarak değişir.

### Dönen Değerler

Başarı durumunda PDOStatement nesnesi, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Yer tutucu içermeyen SQL deyimi kullanılan PDO::query() örneği

    <?php
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    apple   red     150
    banana  yellow  250
    kiwi    brown   75
    lemon   yellow  25
    orange  orange  300
    pear    green   150
    watermelon      pink    90

### Ayrıca Bakınız

- PDO::exec() - Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür
- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır

# PDO::quote

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)

PDO::quote — Bir sorguda kullanılmak üzere bir dizgeyi önceler

### Açıklama

public function PDO::quote(string `$dizge`, int `$tür` = PDO::PARAM_STR): string|false

Girdi dizgesine gerekiyorsa ilgili veritabanı sürücüsüne uygun bir önceleme uygular.

Bu işlevi SQL deyimlerini oluştururken kullanıyorsanız, kullanıcı girdisini bir SQL deyimi haline getirmek için PDO::quote() yerine PDO::prepare() ile bağımsız değişkenleri ilişkilendirilmiş SQL deyimleri hazırlamanızı hararetle öneririz. Bağımsız değişkenlerle ilişkilendirimiş hazır deyimler taşınabilir olmaktan başka daha kullanışlı ve SQL zerkine bağışık olmanın yanında sorgunun derlenmiş hali hem sunucuda hem de istemcide bulunduğundan yorumlanan sorgulardan çok daha hızlıdır.

PDO sürücülerinin hepsi bu yöntemi gerçeklemez. (özellikle PDO_ODBC) Bu bakımdan hazır deyimleri kullanmaya hazır olmalısınız.

Dikkat

# Güvenlik: Öntanımlı karakter kümesi

Karakter kümesi, PDO::quote()'u etkilemesi için ya sunucu seviyesinde ya da (sürücüye bağlı olarak) veritabanı bağlantısının kendisinde ayarlanmalıdır. Daha fazla bilgi için sürücüye özel belgelere bakılabilir.

### Bağımsız Değişkenler

`dizge`

  Öncelenecek dizge.

`tür`

  İkincil bir önceleme tarzı olan sürücülere veri türü olarak bir ipucu sağlar. Örneğin, `PDO_PARAM_LOB` sabiti sürücüye ikil veriyi öncelemesini söyler.

### Dönen Değerler

Bir SQL deyiminde aktarılmak üzere teorik olarak güvenli kabul edilen bir öncelenmiş dizge döndürür. Eğer sürücü bu tarz öncelemeyi desteklemiyorsa `false` döner.

### Örnekler

Örnek 1 - Normal bir dizgeyi öncelemek

    <?php
    $conn = new PDO('sqlite:/home/lynn/music.sql3');

    /*Basit dizge */
    $string = 'Basit';
    print "Öncelenmemiş dizge: $string\n";
    print "Öncelenmiş dizge: " . $conn->quote($string) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Öncelenmemiş dizge: Basit
    Öncelenmiş dizge: 'Basit'

Örnek 2 - Tehlikeli bir dizgeyi öncelemek

    <?php
    $conn = new PDO('sqlite:/home/lynn/music.sql3');

    /* Tehlikeli dizge */
    $string = 'Münasebetsiz \' dizge';
    print "Öncelenmemiş dizge: $string\n";
    print "Öncelenmiş dizge:" . $conn->quote($string) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Öncelenmemiş dizge: Münasebetsiz ' dizge
    Öncelenmiş dizge: 'Münasebetsiz '' dizge'

Örnek 3 - Karmaşık bir dizgeyi öncelemek

    <?php
    $conn = new PDO('sqlite:/home/lynn/music.sql3');

    /* Karmaşık dizge */
    $string = "Co'mpl''ex \"st'\"ring";
    print "Öncelenmemiş dizge: $string\n";
    print "Öncelenmiş dizge:" . $conn->quote($string) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Öncelenmemiş dizge: Co'mpl''ex "st'"ring
    Öncelenmiş dizge: 'Co''mpl''''ex "st''"ring'

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır

# PDO::rollBack

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::rollBack — Bir toplu hareketi geri alır

### Açıklama

public function PDO::rollBack(): bool

PDO::beginTransaction() ile başlatılan toplu hareketi geri alır.

Eğer veritabanı ototeslim kipindeyse, toplu hareket geri alındıktan sonra tekrar ototeslim kipine dönülür.

MySQL dahil bazı veritabanları, bir toplu hareketin içinde DROP TABLE veya CREATE TABLE gibi bir veritabanı tanımlama dili deyimi kullanıldığında otomatikman örtük bir PDO::commit() yaparlar. Örtük PDO::commit(), toplu hareket içindeki diğer değişikliklerin de geri alınmasını engeller.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Etkin bir hareket yoksa bir PDOException yavrulanır.

> Bilginize: `PDO::ATTR_ERRMODE` niteliği `PDO::ERRMODE_EXCEPTION` değilse bile bir istisna yavrulanır.

### Örnekler

Örnek 1 - Bir toplu hareketin geri alınması

Aşağıdaki örnekte bir toplu hareket başlatılmakta, değişiklikleri geri almadan önce veritabanında değişiklik yapan iki deyim gönderilmektedir. Bununla birlikte MySQL'de, DROP TABLE deyimi hareketi otomatik olarak COMMIT ettiğinden toplu harekete dahil hiçbir değişiklik artık geri alınamaz.

    <?php
    /* Ototeslim kipini kapatıp bir hareket başlatalım */
    $dbh->beginTransaction();

    /* Veritabanı şemasını ve verisini değiştirelim */
    $sth = $dbh->exec("DROP TABLE fruit");
    $sth = $dbh->exec("UPDATE dessert
        SET name = 'hamburger'");

    /* Yanlışı farkedip değişiklikleri geri alıyoruz */
    $dbh->rollBack();

    /* Veritabanı bağlantısı tekrar ototeslim kipinde */
    ?>

### Ayrıca Bakınız

- PDO::beginTransaction() - Bir toplu hareketi ilklendirir
- PDO::commit() - Bir toplu hareketi veritabanına gönderir
- Hareketler ve Ototeslim

# PDO::setAttribute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::setAttribute — Bir öznitelik tanımlar

### Açıklama

public function PDO::setAttribute(int `$öznitelik`, mixed `$değer`): bool

Veritabanı için bir öznitelik tanımlar. Bazı temel öznitelikler aşağıda listelenmiştir. Bazı sürücülerin kendilerine özgü öznitelikleri olabilir. Sürücüye özgü özniteliklerin başka sürücülerde kullanılmamasına ise özellikle dikkat edilmelidir.

`PDO::ATTR_CASE`

  Sütun isimlerinin harflerini belli birbüyüklüğe zorlar. Aşağıdaki değerlerden birini alabilir:

  `PDO::CASE_LOWER`
    Sütun isimlerinin harflerini küçük harfe zorlar.
  `PDO::CASE_NATURAL`
    Sütun isimlerinin harfleri veritabanı sürücüsünden döndüğü haliyle kullanılır.
  `PDO::CASE_UPPER`
    Sütun isimlerinin harflerini büyük harfe zorlar.
`PDO::ATTR_ERRMODE`

  PDO hata raporlama kipi. Aşağıdaki değerlerden birini alabilir:

  `PDO::ERRMODE_SILENT`
    Sadece hata kodlarını atar.
  `PDO::ERRMODE_WARNING`
    Bir `E_WARNING` çıktılanır.
  `PDO::ERRMODE_EXCEPTION`
    PDOException istisnası yavrulanır.
`PDO::ATTR_ORACLE_NULLS`

  > Bilginize: Sadece Oracle için değil, bütün sürücüler için kullanılabilir.

  `null`'a ve boş dizgelere dönüşümü belirler. Aşağıdaki değerlerden birini alabilir:

  `PDO::NULL_NATURAL`
    Dönüşüm yok.
  `PDO::NULL_EMPTY_STRING`
    Boş dizge `null`'a dönüştürülür.
  `PDO::NULL_TO_STRING`
    `null` boş dizgeye dönüştürülür.
`PDO::ATTR_STRINGIFY_FETCHES`

  Döndürülürken sayısal değerler dizgeye dönüştürülür. Mantıksal bir değer gerekir: `true` etkinleştirir, `false` iptal eder.

`PDO::ATTR_STATEMENT_CLASS`

  PDOStatement sınıfından türetilmiş kullanıcı tanımlı bir deyim sınıfı tanımlar. `array(string sınıfadı, array(mixed kurucu_bağımsız değişkenler))` gerekir.

  Dikkat

  Kalıcı PDO bağlantılarıyla kullanılamaz.

`PDO::ATTR_TIMEOUT`

  Zaman aşımı süresini saniye cinsinden belirtir. int türünde değer gerektirir.

  > Bilginize:

  > Tüm sürücüler bu seçeneği desteklemez ve anlamı sürücüden sürücüye farklılık gösterebilir. Örneğin, sqlite yazılabilir bir kilit almaktan vazgeçmeden önce bu zaman değerini bekler, ancak diğer sürücüler bunu bir bağlanma veya okuma zaman aşımı aralığı olarak yorumlayabilir.

`PDO::ATTR_AUTOCOMMIT`

  > Bilginize: Sadece OCI, Firebird ve MySQL'de kullanılabilir.

  Her tek deyimin otomatik gönderilip gönderilmeyeceği belirtilir. Mantıksal bir değer gerekir: `true` etkinleştirir, `false` iptal eder.

`PDO::ATTR_EMULATE_PREPARES`

  > Bilginize: Sadece OCI, Firebird ve MySQL'de kullanılabilir.

  Hazırlanmış deyimlerin öykünmesini etkinleştirir veya devre dışı bırakır. Bazı sürücüler yerel olarak hazırlanmış deyimleri desteklemez veya bunlar için sınırlı desteğe sahiptir. Mantıksal bir değer gerekir: PDO'yu ya her zaman hazırlanmış deyimleri öykünmeye (eğer `true` ve öykünmüş hazırlar sürücü tarafından destekleniyorsa) ya da yerel hazırlanmış deyimleri kullanmaya (`false` ise) zorlamak için bu ayar kullanılır. Sürücü mevcut sorguyu başarılı bir şekilde hazırlayamazsa, her zaman hazırlamış deyimi öykünmeye geri dönecektir.

`PDO::MYSQL_ATTR_USE_BUFFERED_QUERY`

  > Bilginize: MySQL'de kullanılır.

  Tamponlu sorgu kullanımı. Mantıksal bir değer gerekir: `true` etkinleştirir, `false` iptal eder. `true` öntanımlıdır.

`PDO::ATTR_DEFAULT_FETCH_MODE`

  Öntanımlı al-getir kipini ayarlar. Kipin açıklaması için PDOStatement::fetch() belgesine bakınız.

### Bağımsız Değişkenler

`öznitelik`

  Değiştirilecek öznitelik.

`değer`

  `öznitelik`'e atanacak değer. Özniteliğe özgü bir tür gerekli olabilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- PDO::getAttribute() - Bir veritabanı bağlantı özniteliğinin değerini döndürür
- PDOStatement::getAttribute() - Bir deyim özniteliğini döndürür
- PDOStatement::setAttribute() - Bir deyim özniteliğini tanımlar

## İçindekiler

- PDO::beginTransaction — Bir toplu hareketi ilklendirir
- PDO::commit — Bir toplu hareketi veritabanına gönderir
- PDO::connect — Connect to a database and return a PDO subclass for drivers that support it
- PDO::__construct — Bir veritabanı bağlantısını temsil eden bir PDO nesnesi oluşturur
- PDO::errorCode — Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür
- PDO::errorInfo — Veritabanındaki son işlemle ilgili hata bilgisini döndürür
- PDO::exec — Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür
- PDO::getAttribute — Bir veritabanı bağlantı özniteliğinin değerini döndürür
- PDO::getAvailableDrivers — Kullanılabilen PDO sürücülerini içeren bir dizi döndürür
- PDO::inTransaction — Checks if inside a transaction
- PDO::lastInsertId — Son yerleştirilen satırın veya sıradaki değerin kimliğini döndürür
- PDO::prepare — Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDO::query — Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
- PDO::quote — Bir sorguda kullanılmak üzere bir dizgeyi önceler
- PDO::rollBack — Bir toplu hareketi geri alır
- PDO::setAttribute — Bir öznitelik tanımlar

# PDOStatement sınıfı

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 1.0.0)

## Giriş

Bir hazır deyimi ve hazır deyim çalıştırıldıktan sonra sonuç kümesini temsil eder.

## Sınıf Sözdizimi

class PDOStatement implements IteratorAggregate {
/* Özellikler */
public string $queryString;
/* Yöntemler */
public function bindColumn(
string|int `$sütun`,
mixed `&$değişken`,
int `$veri_türü` = PDO::PARAM_STR,
int `$uzunluk` = 0,
mixed `$seçenekler` = `null`
): bool
public function bindParam(
string|int `$bağımsız_değişken`,
mixed `&$değişken`,
int `$veri_türü` = PDO::PARAM_STR,
int `$uzunluk` = 0,
mixed `$seçenekler` = `null`
): bool
public function bindValue(string|int `$bağımsız_değişken`, mixed `$değer`, int `$veri_türü` = PDO::PARAM_STR): bool
public function closeCursor(): bool
public function columnCount(): int
public function debugDumpParams(): ?bool
public function errorCode(): ?string
public function errorInfo(): array
public function execute(?array `$girdiler` = `null`): bool
public function fetch(int `$kip` = PDO::FETCH_DEFAULT, int `$göst_yönü` = PDO::FETCH_ORI_NEXT, int `$göst_başlangıcı` = 0): mixed
public function fetchAll(int `$kip` = PDO::FETCH_DEFAULT): array
public function fetchAll(int `$kip` = PDO::FETCH_COLUMN, int `$sütun`): array
public function fetchAll(int `$kip` = PDO::FETCH_CLASS, string `$sınıf`, ?array `$bağımsız_değişkenler`): array
public function fetchAll(int `$kip` = PDO::FETCH_FUNC, callable `$geriçağırım`): array
public function fetchColumn(int `$sütun` = 0): mixed
public function fetchObject(?string `$sınıf` = "stdClass", array `$bağımsız_değişkenler` = []): object|false
public function getAttribute(int `$isim`): mixed
public function getColumnMeta(int `$sütun`): array|false
public function getIterator(): Iterator
public function nextRowset(): bool
public function rowCount(): int
public function setAttribute(int `$öznitelik`, mixed `$değer`): bool
public function setFetchMode(int `$kip`): bool
public function setFetchMode(int `$kip` = PDO::FETCH_COLUMN, int `$sütunnum`): bool
public function setFetchMode(int `$kip` = PDO::FETCH_CLASS, string `$sınıfadı`, ?array `$bağımsız_değişkenler` = `null`): bool
public function setFetchMode(int `$kip` = PDO::FETCH_INTO, object `$nesne`): bool
}

## Özellikler

queryString

  Sorgu dizgesi.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | PDOStatement artık Traversable arayüzünü değil IteratorAggregate arayüzünü gerçekliyor.

# PDOStatement::bindColumn

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::bindColumn — Bir sütunu bir PHP değişkeni ile ilişkilendirir

### Açıklama

public function PDOStatement::bindColumn(
string|int `$sütun`,
mixed `&$değişken`,
int `$veri_türü` = PDO::PARAM_STR,
int `$uzunluk` = 0,
mixed `$seçenekler` = `null`
): bool

Bir sorgunun sonuç kümesindeki belli bir sütunu bir değişken ile ilişkilendirir. Her PDOStatement::fetch() veya PDOStatement::fetchAll() çağrısında sütunlarla ilişkili değişkenler güncellenir.

> Bilginize:

> Deyim çalıştırılana kadar sütun bilgisi PDO'ya görünür olmadığından taşınabilir uygulamaların bu yöntemi bir PDOStatement::execute() çağrısından sonra kullanmaları gerekir.

> Ancak, PgSQL sürücüsü kullanılırken bir LOB sütununu bir akımla ilişkilendirmek için bu yöntemin PDOStatement::execute() çağrısından önce kullanılması gerekir. Aksi takdirde büyük nesnenin nesne kimliği (oid) bir tamsayı olarak döner.

### Bağımsız Değişkenler

`sütun`

  Sütunun numarası veya ismi; sütun numaraları 1'den başlar. Sütun isminin sürücüden dönen isimle aynı harf büyüklüklerine sahip olmasına dikkat edin.

`değişken`

  Sütun ile ilişkilendirilecek PHP değişkeninin ismi.

`veri_türü`

  `PDO::PARAM_*` sabitlerinden biri olarak veri türü.

`uzunluk`

  Yer ayırmak için ipucu olarak kullanılır.

`seçenekler`

  Sürücü için isteğe bağlı bağımsız değişkenler.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Sonuç kümesi çıktısının PHP değişkenleri ile ilişkilendirilmesi

Sütunları birer PHP değişkeni ile ilişkilendirmek, sonuç kümesinin her satırının anında kullanıma hazır olmasını sağlamanın en kolay ve en verimli yoludur. Aşağıdaki örnekte, sütunların alınması ve değişkenlerle ilişkilendirilirken akıllı öntanımlılarla bazı seçeneklerin kullanılışı gösterilmiştir.

    <?php
    $stmt = $dbh->prepare('SELECT name, colour, calories FROM fruit');
    $stmt->execute();

    /* Sütun numarasına göre ilişkilendir */
    $stmt->bindColumn(1, $name);
    $stmt->bindColumn(2, $colour);

    /* Sütun ismine göre ilişkilendir */
    $stmt->bindColumn('calories', $cals);

    while ($stmt->fetch(PDO::FETCH_BOUND)) {
        print $name . "\t" . $colour . "\t" . $cals . "\n";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    apple   red     150
    banana  yellow  175
    kiwi    green   75
    orange  orange  150
    mango   red     200
    strawberry      red     25

### Ayrıca Bakınız

- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::fetch() - Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement::fetchAll() - Sonuç kümesinde kalan satırları döndürür
- PDOStatement::fetchColumn() - Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür

# PDOStatement::bindParam

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::bindParam — Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir

### Açıklama

public function PDOStatement::bindParam(
string|int `$bağımsız_değişken`,
mixed `&$değişken`,
int `$veri_türü` = PDO::PARAM_STR,
int `$uzunluk` = 0,
mixed `$seçenekler` = `null`
): bool

Bir PHP değişkenini hazır SQL deyimindeki bir isimli veya soru imli bağımsız değişkenle ilişkilendirir. PDOStatement::bindValue() yönteminin tersine değişken gönderimli olarak ilişkilendirilir ve sadece PDOStatement::execute() çağrısı sırasında değerlendirmeye alınır.

Bağımsız değişkenler çoğunlukla girdi bağımsız değişkenidir, yani bağımsız değişkenler sadece sorguda salt okunur olarak ele alınır (ancak yine de `veri_türü`ne göre tür dönüşümü olabilir). Bazı sürücüler, veriyi çıktı bağımsız değişkenlerinde döndüren kayıtlı yordamların kullanımını mümkün kılar. Bazıları ise aynı bağımsız değişkenlerin hem girdi hem de çıktı için kullanımını mümkün kılar.

### Bağımsız Değişkenler

`bağımsız_değişken`

  Bağımsız değişken betimleyicisi. İsimli bağımsız değişkenler için :isim biçemindedir. Soru imli bağımsız değişkenler için ise soru iminin konumudur. Konumlar 1'den başlar.

`değişken`

  SQL deyimindeki bağımsız değişken ile ilişkilendirilecek PHP değişkeni.

`veri_türü`

  `PDO::PARAM_*` sabitlerinden biri olarak veri türü. Bağımsız değişkenden değer de döndürmek istiyorsanız `PDO::PARAM_INPUT_OUTPUT` sabitini burada, bit seviyesinde VEYAlayın.

`uzunluk`

  Veri türünün uzunluğu. Bağımsız değişken çıktı almak amacıyla kullanılacaksa veri türü uzunluğu mutlaka belirtilmelidir. Sadece `veri_türü` bağımsız değişkeninde `PDO::PARAM_INPUT_OUTPUT` belirtilmişse anlamlıdır.

`seçenekler`

  Sürücü seçenekleri.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - İsimli bağımsız değişkenlerle PDOStatement::bindParam() örneği

    <?php
    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');
    $sth->bindParam('calories', $calories, PDO::PARAM_INT);
    /* Dizi anahtarları ":" ile öncelenebiliyor (seçimlik) */
    $sth->bindParam(':colour', $colour, PDO::PARAM_STR);
    $sth->execute();
    ?>

Örnek 2 - Soru imli bağımsız değişkenlerle PDOStatement::bindParam() örneği

    <?php
    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->bindParam(1, $calories, PDO::PARAM_INT);
    $sth->bindParam(2, $colour, PDO::PARAM_STR);
    $sth->execute();
    ?>

Örnek 3 - Girdi/Çıktı bağımsız değişkeni kullanımı

    <?php
    /* Girdi/Çıktı bağımsız değişkenli bir kayıtlı yordam çağrısı yapalım */
    $colour = 'red';
    $sth = $dbh->prepare('CALL puree_fruit(?)');
    $sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
    $sth->execute();
    print "Meyvenin posa rengi: $colour";
    ?>

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::bindValue() - Bir değeri bir bağımsız değişken ile ilişkilendirir

# PDOStatement::bindValue

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 1.0.0)

PDOStatement::bindValue — Bir değeri bir bağımsız değişken ile ilişkilendirir

### Açıklama

public function PDOStatement::bindValue(string|int `$bağımsız_değişken`, mixed `$değer`, int `$veri_türü` = PDO::PARAM_STR): bool

Hazır SQL deyimindeki bir isimli veya soru imli bağımsız değişkenle bir değeri ilişkilendirir.

### Bağımsız Değişkenler

`bağımsız_değişken`

  Bağımsız değişken betimleyicisi. İsimli bağımsız değişkenler için :isim biçemindedir. Soru imli bağımsız değişkenler için ise soru iminin konumudur. Konumlar 1'den başlar.

`değer`

  Bağımsız değişken ile ilişkilendirilecek değer.

`veri_türü`

  `PDO::PARAM_*` sabitlerinden biri olarak veri türü.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - İsimli bağımsız değişkenlerle PDOStatement::bindValue() örneği

    <?php
    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');

    /* Bağımsız değişken ismi kullanılarak değer atanıyor */
    $sth->bindValue('calories', $calories, PDO::PARAM_INT);
    /* Seçimlik: Bağımsız değişken adları da ":" ile öncelenebiliyor */
    $sth->bindValue(':colour', $colour, PDO::PARAM_STR);
    $sth->execute();
    ?>

Örnek 2 - Soru imli bağımsız değişkenlerle PDOStatement::bindValue() örneği

    <?php
    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->bindValue(1, $calories, PDO::PARAM_INT);
    $sth->bindValue(2, $colour, PDO::PARAM_STR);
    $sth->execute();
    ?>

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::bindParam() - Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir

# PDOStatement::closeCursor

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::closeCursor — Göstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar

### Açıklama

public function PDOStatement::closeCursor(): bool

PDOStatement::closeCursor() yöntemi sunucu bağlantısını serbest bırakarak, mevcut deyimin durumunu değiştirmeden tekrar çalıştırılabilmesinin yanında başka SQL deyimlerinin çalıştırılabilmesini de mümkün kılar.

Evvelce çalıştırılmış bir PDOStatement nesnesinden henüz alınmamış satırların olduğu durumda bazı sürücüler bir PDOStatement nesnesinin daha çalıştırılmasına izin vermezler. Bu yöntem bu tür sürücülerde yararlıdır. Sürücünüz böyle bir sürücü ise sorun sıra dışı bir hata olarak kendini gösterir.

PDOStatement::closeCursor() yöntemi ya sürücüye özel isteğe bağlı (azami verimlilikte) bir yöntemdir ya da genel amaçlı bir PDO son çare yöntemidir. Genel amaçlı yöntem aşağıdaki PHP koduna eşdeğer bir işlem yürütür:

    <?php
    do {
        while ($stmt->fetch())
            ;
        if (!$stmt->nextRowset())
            break;
    } while (true);
    ?>

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - PDOStatement::closeCursor() örneği

Aşağıdaki örnekte, $stmt PDOStatement nesnesi çok sayıda satır döndürdüğü halde uygulama sadece ilk satırı almakta ve PDOStatement nesnesini satırları henüz alınmamış durumda bırakmaktadır. Uygulamanın tüm veritabanı sürücüleri ile çalışmasını sağlamak için $stmt veya $otherStmt PDOStatement nesnesi çalıştırılmadan önce bir PDOStatement::closeCursor() çağrısı yapması gerekir.

    <?php
    /* Bir PDOStatement nesnesi oluşturalım */
    $stmt = $dbh->prepare('SELECT foo FROM bar');

    /* Bir PDOStatement nesnesi daha oluşturalım*/
    $otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');

    /* İlkini çalıştıralım */
    $stmt->execute();

    /* İlk satırı alalım */
    $stmt->fetch();

    /* Bazı sürücüler bu çağrıyı gerektirir */
    $stmt->closeCursor();

    /* Artık ikinci deyimi çalıştırabiliriz */
    $otherStmt->execute();
    ?>

### Ayrıca Bakınız

- PDOStatement::execute() - Bir hazır deyimi çalıştırır

# PDOStatement::columnCount

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::columnCount — Sonuç kümesindeki sütun sayısını döndürür

### Açıklama

public function PDOStatement::columnCount(): int

PDOStatement nesnesi ile temsil edilen sonuç kümesindeki sütun sayısını döndürür.

Eğer PDOStatement nesnesi PDO::query() yönteminden dönmüşse sütun sayısı hemen alınabilir.

Eğer PDOStatement nesnesi PDO::prepare() yönteminden dönmüşse sütun sayısı ancak PDOStatement::execute() çağrısından sonra alınabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sonuç kümesi boş olsa bile, sütun sayısı bir tamsayı olarak döner. Bir sonuç kümesi yoksa işlev `0` döndürür.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Sütunları saymak

Bu örnekte PDOStatement::columnCount() yönteminin bir sonuç kümesi varken ve yokken kullanımı gösterilmiştir.

    <?php
    $dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

    $sth = $dbh->prepare("SELECT name, colour FROM fruit");

    /* Olmayan sonuç kümesindeki sütunları sayalım */
    $colcount = $sth->columnCount();
    print "execute() öncesi, sonuç kümesinde $colcount sütun var.\n";

    $sth->execute();

    /* Sonuç kümesindeki sütunları sayalım */
    $colcount = $sth->columnCount();
    print "execute() sonrası, sonuç kümesinde $colcount sütun var.\n";

    ?>

Yukarıdaki örneğin çıktısı:

    execute() öncesi, sonuç kümesinde 0 sütun var.
    execute() sonrası, sonuç kümesinde 2 sütun var.

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::rowCount() - Son SQL deyiminden etkilenen satır sayısını döndürür

# PDOStatement::debugDumpParams

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::debugDumpParams — Bir SQL hazır komutunu dökümler

### Açıklama

public function PDOStatement::debugDumpParams(): ?bool

Bir hazır deyimin içerdiği bilgiyi doğrudan çıktıya dökümler. Bu bilgi, kullanımdaki SQL sorgusu (`SQL`), anahtar adı veya konumlarıyla birlikte bağımsız değişkenlerin listesini, adlarını, sorgudaki konumlarını (PDO sürücü destekliyorsa; yoksa -1'dir) tamsayı olarak türünü (`param_type`) ve `is_param` mantıksal değerini içerir.

Bu işlev, veriyi doğrudan çıktıya basan bir hata ayıklama işlevidir.

İpucu

Sonuçlarını doğrudan tarayıcıya çıktılayan her şey gibi, çıktı denetleme işlevleri bu işlevin de çıktısını yakalamak ve (örneğin) string türünde saklamak için kullanılabilir.

İşlev, sadece deyim içindeki bağımsız değişkenleri dökümler. Ek bağımsız değişkenler deyimde saklanmaz ve gösterilmez.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `null`, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | PDOStatement::debugDumpParams() artık veritabanına gönderilen SQL deyimini eksiksiz ve ham (yer tutucuların yerine ilişkili değerler konmuş) olarak döndürüyor. Ancak, bu sadece öykünülmüş hazır deyimler etkin kılınmışsa kullanılabilir.

### Örnekler

Örnek 1 - İsimli bağımsız değişkenlerle PDOStatement::debugDumpParams() örneği

    <?php
    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');
    $sth->bindParam(':calories', $calories, PDO::PARAM_INT);
    $sth->bindValue(':colour', $colour, PDO::PARAM_STR, 12);
    $sth->execute();

    $sth->debugDumpParams();

    ?>

Yukarıdaki örneğin çıktısı:

    SQL: [96] SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour
    Params:  2
    Key: Name: [9] :calories
    paramno=-1
    name=[9] ":calories"
    is_param=1
    param_type=1
    Key: Name: [7] :colour
    paramno=-1
    name=[7] ":colour"
    is_param=1
    param_type=2

Örnek 2 - İsimsiz bağımsız değişkenlerle PDOStatement::debugDumpParams() örneği

    <?php

    /* PHP değişkenleriyle ilişkili bir hazır deyim çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $name = 'apple';

    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->bindParam(1, $calories, PDO::PARAM_INT);
    $sth->bindValue(2, $colour, PDO::PARAM_STR);
    $sth->execute();

    $sth->debugDumpParams();

    ?>

Yukarıdaki örneğin çıktısı:

    SQL: [82] SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?
    Params:  2
    Key: Position #0:
    paramno=0
    name=[0] ""
    is_param=1
    param_type=1
    Key: Position #1:
    paramno=1
    name=[0] ""
    is_param=1
    param_type=2

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::bindParam() - Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir
- PDOStatement::bindValue() - Bir değeri bir bağımsız değişken ile ilişkilendirir

# PDOStatement::errorCode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::errorCode — Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür

### Açıklama

public function PDOStatement::errorCode(): ?string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sadece deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürmesi dışında PDO::errorCode() yöntemiyle aynıdır.

### Örnekler

Örnek 1 - SQLSTATE kodunun döndürülmesi

    <?php
    /* Bir hata oluşmasını sağlayalım -- BONES diye bir tablo olmasın */
    $err = $dbh->prepare('SELECT skull FROM bones');
    $err->execute();

    echo "\nPDOStatement::errorCode(): ";
    print $err->errorCode();
    ?>

Yukarıdaki örneğin çıktısı:

    PDOStatement::errorCode(): 42S02

### Ayrıca Bakınız

- PDO::errorCode() - Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür
- PDO::errorInfo() - Veritabanındaki son işlemle ilgili hata bilgisini döndürür
- PDOStatement::errorInfo() - Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür

# PDOStatement::errorInfo

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::errorInfo — Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür

### Açıklama

public function PDOStatement::errorInfo(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Deyim üzerindeki son işlemle ilgili hata bilgisini bir dizi olarak döndürür. Dizi en azından şu alanları içerir:

Eleman | Bilgi
--- | ---
0 | SQLSTATE hata kodu (ANSI SQL standardında tanımlı 5 abecesayısal karakterli bir betimleyici).
1 | Sürücüye özgü hata kodu.
2 | Sürücüye özgü hata iletisi.

### Örnekler

Örnek 1 - Bir DB2 veritabanına açılan bir ODBC bağlantısından hata bilgisinin alınması

    <?php
    /* Bir hata oluşmasını sağlayalım -- BONES diye bir tablo olmasın */
    $sth = $dbh->prepare('SELECT skull FROM bones');
    $sth->execute();

    echo "\nPDOStatement::errorInfo():\n";
    $arr = $sth->errorInfo();
    print_r($arr);
    ?>

Yukarıdaki örneğin çıktısı:

    PDOStatement::errorInfo():
    Array
    (
        [0] => 42S02
        [1] => -204
        [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an
    undefined name.  SQLSTATE=42704
    )

### Ayrıca Bakınız

- PDO::errorCode() - Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür
- PDO::errorInfo() - Veritabanındaki son işlemle ilgili hata bilgisini döndürür
- PDOStatement::errorCode() - Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür

# PDOStatement::execute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::execute — Bir hazır deyimi çalıştırır

### Açıklama

public function PDOStatement::execute(?array `$girdiler` = `null`): bool

Bir hazır deyimi çalıştırır. Hazır deyim bağımsız değişken içeriyorsa şu ikisinden birini yapmalısınız:

- Bağımsız değişkenleri ve/veya değerleri soru imleri ile ilişkilendirmek için (sırasıyla) PDOStatement::bindParam() ve/veya PDOStatement::bindValue() yöntemi kullanılmalıdır. İlişkili değişkenler, değerlerini girdi olarak iletir ve varsa çıktı değerlerini
- ya da aktarılan salt-girdi bağımsız değişken değerlerini bir dizi olarak alır.

### Bağımsız Değişkenler

`girdiler`

  Çalıştırılacak SQL deyimiyle ilişkilendirilmiş bağımsız değişken sayısı kadar değer içeren bir dizi. Tüm değerler `PDO::PARAM_STR` olarak ele alınır.

  Tek bir bağımsız değişkene birden fazla değer belirtilemez. Örneğin bir IN() yan tümcesindeki tek bir isimli bağımsız değişken iki değerle ilişkilendirilemez.

  Belirtilenden daha fazla değeri ilişkilendirmek mümkün değildir; `girdiler` içinde PDO::prepare() yönteminde belirtilen deyimdekinden daha fazla anahtar mevcutsa, deyim başarısız olur ve bir hata çıktılanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - İlişkili değişken ve değerlerle bir hazır deyimin çalıştırılması

    <?php
    /* PHP değişken ve değerleriyle ilişkilendirilmiş bir hazır deyimi çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour LIKE :colour');
    $sth->bindParam('calories', $calories, PDO::PARAM_INT);
    /* isimler ":" ile öncelenebiliyor (seçimlik) */
    $sth->bindParam(':colour', "%{$colour}%");
    $sth->execute();
    ?>

Örnek 2 - İsimli değerler dizisi ile hazır bir deyimin çalıştırılması

    <?php
    /* Yerleştirilecek değerleri bir dizi olarak aktarmak suretiyle
       bir hazır deyimi çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');
    $sth->execute(array('calories' => $calories, 'colour' => $colour));
    /* Dizi anahtarları da ":" ile öncelenebiliyor (seçimlik) */
    $sth->execute(array(':calories' => $calories, ':colour' => $colour));
    ?>

Örnek 3 - - Konumlu değerler dizisi ile bir hazır deyimin çalıştırılması

    <?php
    /* Yerleştirilecek değerleri bir dizi olarak aktarmak suretiyle
       bir hazır deyimi çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->execute(array($calories, $colour));
    ?>

Örnek 4 Soru imli bir hazır deyimin çalıştırılması

    <?php
    /* PHP değişkenleriyle ilişkilendirilmiş bir hazır deyimi çalıştıralım */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
    $sth->bindParam(1, $calories, PDO::PARAM_INT);
    $sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
    $sth->execute();
    ?>

Örnek 5 - IN yan tümcesi için dizi kullanarak bir hazır deyimin çalıştırılması

    <?php
    /* IN yan tümcesi için dizi kullanarak hazır deyimi çalıştır */
    $params = array(1, 21, 63, 171);
    /* Bağımsız değişken sayısı kadar yer tutucu içeren bir dizge oluştur */
    $place_holders = implode(',', array_fill(0, count($params), '?'));

    /*
        Bu, $params dizimizdeki her değer için yeterli adsız yer tutucuyla
        ifadeyi hazırlar. $params dizisinin değerleri, deyim yürütüldüğünde
        hazırlanan deyimdeki yer tutucularla ilişkilendirilir. Bu, değişkene
        bir başvuru gerektirdiğinden, PDOStatement::bindParam() kullanımıyla
        aynı değildir. PDOStatement::execute() ise yalnızca değere göre
        ilişkilendirme yapar.
    */
    $sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
    $sth->execute($params);
    ?>

### Notlar

> Bilginize:

> Bazı sürücüler sonraki deyimi çalıştırmadan önce göstericiyi kapatmayı gerektirir.

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::bindParam() - Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir
- PDOStatement::fetch() - Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement::fetchAll() - Sonuç kümesinde kalan satırları döndürür
- PDOStatement::fetchColumn() - Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür

# PDOStatement::fetch

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::fetch — Sonuç kümesindeki sonraki satırı döndürür

### Açıklama

public function PDOStatement::fetch(int `$kip` = PDO::FETCH_DEFAULT, int `$göst_yönü` = PDO::FETCH_ORI_NEXT, int `$göst_başlangıcı` = 0): mixed

PDOStatement nesnesi ile ilişkili sonuç kümesinden bir sonraki satırı döndürür. `kip` bağımsız değişkeni ile PDO'nun satırı nasıl döndüreceği belirtilir.

### Bağımsız Değişkenler

`kip`

  Sonrakı satırın nasıl döndürüleceğini belirtmek için kullanılır. `PDO::FETCH_*` sabitlerinden biri olmalıdır. `PDO::FETCH_DEFAULT` öntanımlı değerdir.

  - `PDO::FETCH_ASSOC`: Sütun isimlerine indisli bir dizi döner.

  - `PDO::FETCH_BOTH` (öntanımlı): Hem sütun isimlerine hem de sütun numaralarına göre indislenmiş bir dizi döner. İlk sütunun indisi 0'dır.

  - `PDO::FETCH_BOUND`: Sütun değerlerini PDOStatement::bindColumn() ile ilişkilendirilmiş PHP değişkenlerine atar ve `true` döndürür.

  - `PDO::FETCH_CLASS`: İstenen sınıfın özelliklerini sütun isimlerine eşleyerek sınıfın bir örneğini döndürür ve `PDO::FETCH_PROPS_LATE` ayrıca belirtilmemişse ardından kurucu çağrılır. Eğer `kip` bağımsız değişkeni `PDO::FETCH_CLASSTYPE` sabitini içeriyorsa (örn, `PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE`) sınıf ismi ilk sütunun değerine göre belirlenir.

  - `PDO::FETCH_INTO`: İstenen sınıfın mevcut örneğini sütun isimlerini sınıf özelliklerine eşleyerek günceller.

  - `PDO::FETCH_LAZY`: `PDO::FETCH_BOTH` ve `PDO::FETCH_OBJ` sabitlerinin birleşimidir ve erişildikçe nesne özellik adlarını oluşturan bir PDORow nesnesi döndürür.

  - `PDO::FETCH_NAMED`: Aynı isimde birden fazla sütun olmaması şartıyla `PDO::FETCH_ASSOC` sabitindeki gibi bir dizi döndürür. Bir anahtar tarafından atıfta bulunulan değer, anahtarla aynı isimli sütundaki tüm değerlerin dizisini içerecektir.

  - `PDO::FETCH_NUM`: Sütun numaralarına göre indislenmiş bir dizi döner. İlk sütunun indisi 0'dır.

  - `PDO::FETCH_OBJ`: Özellik isimlerinin sınıf isimlerine denk düştüğü bir anonim nesne örneği döndürür.

  - `PDO::FETCH_PROPS_LATE`: `PDO::FETCH_CLASS` ile birlikte kullanıldığında, özellikler ilgili sütundaki değerlere atanmadan önce sınıf kurucusu çağrılır.

`göst_yönü`

  Kaydırılabilir göstericili bir PDOStatement nesnesi için, bu değer hangi satırın döndürüleceğini belirler. `PDO::FETCH_ORI_*` sabitlerinden biri olmalıdır. `PDO::FETCH_ORI_NEXT` öntanımlı değerdir. PDOStatement nesnenize bir kaydırılabilir gösterici isteği yapmak için SQL deyimini PDO::prepare() ile hazırlarken `PDO::CURSOR_SCROLL` özelliğine `PDO::ATTR_CURSOR` özniteliğini atamalısınız.

`göst_başlangıcı`

  Kaydırılabilir göstericili bir PDOStatement nesnesi için `göst_yönü` bağımsız değişkeninde `PDO::FETCH_ORI_ABS` belirtilirse bu değer sonuç kümesinden alınacak mutlak satır numarasını belirler.

  Kaydırılabilir göstericili bir PDOStatement nesnesi için `göst_yönü` bağımsız değişkeninde `PDO::FETCH_ORI_REL` belirtilirse bu değer alınacak satırı bir önceki PDOStatement::fetch() çağrısındaki gösterici konumuna göreli olarak belirler.

### Dönen Değerler

Bu işlevin dönüş değeri alım türüne bağlıdır. Başarısızlık durumunda veya döndürülecek satır kalmamışsa `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Farklı kiplerle satırların döndürülmesi

    <?php
    $sth = $dbh->prepare("SELECT ad, renk FROM meyveler");
    $sth->execute();

    /* PDOStatement::fetch tarzlarını deneyelim */
    print "PDO::FETCH_ASSOC:\n";
    print "Sütun isimlerine göre indisli bir dizi olarak:\n";
    $result = $sth->fetch(PDO::FETCH_ASSOC);
    print_r($result);
    print("\n");

    print "PDO::FETCH_BOTH:\n";
    print "Sütun isimlerine ve numaralarına göre indisli bir dizi olarak:\n";
    $result = $sth->fetch(PDO::FETCH_BOTH);
    print_r($result);
    print "\n";

    print "PDO::FETCH_LAZY:\n";
    echo "Her özelliğin bir sütun ismine denk düştüğü bir PDORow nesnesi olarak:\n";
    $result = $sth->fetch(PDO::FETCH_LAZY);
    print_r($result);
    print "\n";

    print "PDO::FETCH_OBJ:\n";
    echo "Her özelliğin bir sütun ismine denk düştüğü bir anonim nesne olarak:\n";
    $result = $sth->fetch(PDO::FETCH_OBJ);
    print $result->ad;
    print "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    PDO::FETCH_ASSOC:
    Sütun isimlerine göre indisli bir dizi olarak:
    Array
    (
        [ad] => elma
        [renk] => kırmızı
    )

    PDO::FETCH_BOTH:
    Sütun isimlerine ve numaralarına göre indisli bir dizi olarak:
    Array
    (
        [ad] => muz
        [0] => muz
        [renk] => sarı
        [1] => sarı
    )

    PDO::FETCH_LAZY:
    Her özelliğin bir sütun ismine denk düştüğü bir PDORow nesnesi olarak:
    PDORow Object
    (
        [ad] => portakal
        [renk] => turuncu
    )

    PDO::FETCH_OBJ:
    Her özelliğin bir sütun ismine denk düştüğü bir anonim nesne olarak:
    kivi

Örnek 2 - Satırları bir kaydırılabilir gösterici ile döndürmek

    <?php
    function readDataForwards($dbh) {
        $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
        $stmt = $dbh->prepare($sql,
                  array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
            $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
            print $data;
        }
    }
    function readDataBackwards($dbh) {
       $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
       $stmt = $dbh->prepare($sql,
                  array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
        do {
            $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
            print $data;
        } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
    }

    print "İleriye doğru okuma:\n";
    readDataForwards($conn);

    print "Geriye doğru okuma:\n";
    readDataBackwards($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    İleriye doğru okuma:
    21    10    5
    16    0     5
    19    20    10

    Geriye doğru okuma:
    19    20    10
    16    0     5
    21    10    5

Örnek 3 - Oluşturma sırası

Nesneler `PDO::FETCH_CLASS` üzerinden alındığında, önce nesne özellikleri atanır, ardından sınıf kurucusu çağrılır. Ek olarak `PDO::FETCH_PROPS_LATE` sabiti de belirtilmişse, bu sıra tersine döner, yani önce kurucu çağrılır ardından özellikler atanır.

    <?php
    class Person
    {
        private $name;

        public function __construct()
        {
            $this->tell();
        }

        public function tell()
        {
            if (isset($this->name)) {
                echo "Ben {$this->name}.\n";
            } else {
                echo "Henüz adım yok.\n";
            }
        }
    }

    $sth = $dbh->query("SELECT * FROM people");
    $sth->setFetchMode(PDO::FETCH_CLASS, 'Person');
    $person = $sth->fetch();
    $person->tell();
    $sth->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Person');
    $person = $sth->fetch();
    $person->tell();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Ben Ali.
    Ben Ali.
    Henüz adım yok.
    Ben Veli.

### Ayrıca Bakınız

- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::fetchAll() - Sonuç kümesinde kalan satırları döndürür
- PDOStatement::fetchColumn() - Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
- PDOStatement::fetchObject() - Sonraki satırı alır ve bir nesne olarak döndürür
- PDOStatement::setFetchMode() - Deyim için öntanımlı veri alım kipini belirler

# PDOStatement::fetchAll

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::fetchAll — Sonuç kümesinde kalan satırları döndürür

### Açıklama

public function PDOStatement::fetchAll(int `$kip` = PDO::FETCH_DEFAULT): array
public function PDOStatement::fetchAll(int `$kip` = PDO::FETCH_COLUMN, int `$sütun`): array
public function PDOStatement::fetchAll(int `$kip` = PDO::FETCH_CLASS, string `$sınıf`, ?array `$bağımsız_değişkenler`): array
public function PDOStatement::fetchAll(int `$kip` = PDO::FETCH_FUNC, callable `$geriçağırım`): array

### Bağımsız Değişkenler

`kip`

  PDOStatement::fetch() yönteminde açıklandığı gibi döndürülen dizinin içeriğini belirleyen sabit. `PDO::FETCH_DEFAULT` öntanımlıdır.

  Sonuç kümesindeki tek bir sütunun tüm değerleri içeren bir dizi döndürmek için `PDO::FETCH_COLUMN` belirtin. Bu durumda hangi sütunun içeriğinin alınacağını `sütun` ile belirtin.

  Sonuç kümesindeki tek bir sütunun eşsiz değerleri içeren bir dizi döndürmek için `PDO::FETCH_COLUMN` ile `PDO::FETCH_UNIQUE` sabitini bit seviyesinde VEYAlayın.

  Belirtilen sütunun değerlerine göre gruplanmış bir ilişkisel dizi döndürmek için `PDO::FETCH_COLUMN` ile `PDO::FETCH_GROUP` sabitini bit seviyesinde VEYAlayın.

Aşağıdaki dinamik bağımsız değişkenler kipe bağlı olup isimli bağımsız değişkenlerde kullanılamaz.

`sütun`

  `PDO::FETCH_COLUMN` ile kullanılır. İlk sütunun indisinin `0` olduğu varsayımıyla sütun indisi.

`bağımsız_değişkenler`

  `PDO::FETCH_CLASS` ile kullanılır. Belirtilen sınıfın örnekleri, her sütun sınıfın isimli özellikleriyle eşleştirilerek döndürülür.

`geriçağırım`

  `PDO::FETCH_FUNC` ile kullanılır. Belirtilen işlevin sonuçları, her satırın sütunları çağrıda bağımsız değişken olarak kullanılarak döndürülür.

### Dönen Değerler

Sonuç kümesinde kalan satırların tümünü bir dizi olarak döndürür. Dizinin her elemanı birer satır içerir ve bu satır elemanları sütun değerlerini içeren bir dizi ya da sütun isimlerinin özelliklere karşı düştüğü bir nesne içerir. Sıfır sonuç için boş dizi döner.

Büyük sonuç kümelerini almak için bu yöntemi kullanmak sistem ve muhtemelen ağ kaynaklarından aşırı taleplere yol açar. Tüm veriyi alıp PHP ile işleme tabi tutmak yerine sonuç kümeleri üzerinde işlem yapmak için veritabanı sunucusunu kullanmak daha iyi olabilir. Örneğin, SQL'de WHERE ve ORDER BY yan tümcelerini kullanarak, PHP'de işleme sokmadan önce sonuç kümesini küçültebilirsiniz.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu yöntem artık daima bir dizi döndürüyor, evvelce başarısızlık durumunda `false` dönerdi.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Bir sonuç kümesinde kalan tüm satırları almak

    <?php
    $sth = $dbh->prepare("SELECT ad, renk FROM meyveler");
    $sth->execute();

    /* Sonuç kümesindeki tüm satırları alalım */
    print "Sonuç kümesindeki tüm satırlar:\n";
    $result = $sth->fetchAll();
    print_r($result);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Sonuç kümesindeki tüm satırlar:
    Array
    (
        [0] => Array
            (
                [ad] => armut
                [0] => armut
                [renk] => yeşil
                [1] => yeşil
            )

        [1] => Array
            (
                [ad] => ahududu
                [0] => ahududu
                [renk] => mor
                [1] => mor
            )

    )

Örnek 2 - Sonuç kümesinden tek bir sütunun tüm değerlerini almak

Aşağıdaki örnekte, SQL deyimi her satırda çok sayıda sütun döndürse bile bu sonuç kümesinden tek bir sütunun tüm değerlerinin nasıl alınacağı gösterilmiştir.

    <?php
    $sth = $dbh->prepare("SELECT isim, renk FROM meyveler");
    $sth->execute();

    /* İlk sütunun tüm değerlerini alalım */
    $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
    var_dump($result);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array(3)
    (
        [0] =>
        string(5) => elma
        [1] =>
        string(4) => armut
        [2] =>
        string(10) => ahududu
    )

Örnek 3 - Tüm değerleri tek bir sütuna göre gruplamak

Aşağıdaki örnekte, sonuç kümesindeki belli bir sütunun değerlerine göre gruplanmış bir ilişkisel dizini nasıl döndürüleceği gösterilmiştir. Dizi üç anahtar içerir: Elma ve armut iki farklı renk içeren iki dizi olarak ahududu ise tek renk içeren bir dizi olarak döndürülür.

    <?php
    $insert = $dbh->prepare("INSERT INTO fruit(isim, renk) VALUES (?, ?)");
    $insert->execute(array('elma', 'yeşil'));
    $insert->execute(array('armut', 'sarı'));

    $sth = $dbh->prepare("SELECT isim, renk FROM meyveler");
    $sth->execute();

    /* Değerleri ilk sütuna göre gruplayalım */
    var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(3) {
      ["elma"]=>
      array(2) {
        [0]=>
        string(5) "yeşil"
        [1]=>
        string(7) "kırmızı"
      }
      ["armut"]=>
      array(2) {
        [0]=>
        string(5) "yeşil"
        [1]=>
        string(4) "sarı"
      }
      ["ahududu"]=>
      array(1) {
        [0]=>
        string(3) "mor"
      }
    }

Örnek 4 - Her sonuç için bir sınıf örneklemek

Aşağıda `PDO::FETCH_CLASS` alım kipinin davranışı örneklenmiştir:

    <?php
    class fruit {
        public $name;
        public $colour;
    }

    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();

    $result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
    var_dump($result);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(3) {
      [0]=>
      object(fruit)#1 (2) {
        ["name"]=>
        string(5) "apple"
        ["colour"]=>
        string(5) "green"
      }
      [1]=>
      object(fruit)#2 (2) {
        ["name"]=>
        string(4) "pear"
        ["colour"]=>
        string(6) "yellow"
      }
      [2]=>
      object(fruit)#3 (2) {
        ["name"]=>
        string(10) "watermelon"
        ["colour"]=>
        string(4) "pink"
      }
      [3]=>
      object(fruit)#4 (2) {
        ["name"]=>
        string(5) "apple"
        ["colour"]=>
        string(3) "red"
      }
      [4]=>
      object(fruit)#5 (2) {
        ["name"]=>
        string(4) "pear"
        ["colour"]=>
        string(5) "green"
      }
    }

Örnek 5 - Her sonuç için bir işlev çağırmak

Aşağıda `PDO::FETCH_FUNC` alım kipinin davranışı örneklenmiştir:

    <?php
    function fruit($name, $colour) {
        return "{$name}: {$colour}";
    }

    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();

    $result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
    var_dump($result);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(3) {
      [0]=>
      string(12) "apple: green"
      [1]=>
      string(12) "pear: yellow"
      [2]=>
      string(16) "watermelon: pink"
      [3]=>
      string(10) "apple: red"
      [4]=>
      string(11) "pear: green"
    }

### Ayrıca Bakınız

- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
- PDOStatement::fetch() - Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement::fetchColumn() - Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::setFetchMode() - Deyim için öntanımlı veri alım kipini belirler

# PDOStatement::fetchColumn

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.9.0)

PDOStatement::fetchColumn — Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür

### Açıklama

public function PDOStatement::fetchColumn(int `$sütun` = 0): mixed

Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür; artık satır kalmamışsa `false` döner.

> Bilginize:

> PDOStatement::fetchColumn() mantıksal sütunların alımında kullanılmamalıdır, çünkü sütundaki bir `false` değerini alınacak satır kalmadığında dönen `false` değerinden ayırmak imkansızdır. Böyle bir durumda PDOStatement::fetch() kullanılmalıdır.

### Bağımsız Değişkenler

`sütunnum`

  Sütunun numarası. İlk sütunun indisi 0'dır. Bağımsız değişkende hiçbir değer belirtilmemişse ilk sütunun değeri döner.

### Dönen Değerler

Sonuç kümesinde sonraki satırdan tek bir sütunun değerini bir dizge olarak döndürür. Satırlar tükenince `false` döner.

Uyarı

Veriyi almak için PDOStatement::fetchColumn() yöntemini kullanırsanız aynı satırdan artık başka bir sütun döndüremezsiniz.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Sonraki satırın ilk sütununu döndürmek

    <?php
    $sth = $dbh->prepare("SELECT isim, renk FROM meyveler");
    $sth->execute();

    print "Sonuç kümesindeki sonraki satırın ilk sütunu:\n";
    $result = $sth->fetchColumn();
    print "name = $result\n";

    print "Sonuç kümesindeki sonraki satırın ikinci sütunu:\n";
    $result = $sth->fetchColumn(1);
    print "colour = $result\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Sonuç kümesindeki sonraki satırın ilk sütunu:
    isim = limon
    Sonuç kümesindeki sonraki satırın ikinci sütunu:
    renk = kırmızı

### Ayrıca Bakınız

- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
- PDOStatement::fetch() - Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement::fetchAll() - Sonuç kümesinde kalan satırları döndürür
- PDO::prepare() - Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
- PDOStatement::setFetchMode() - Deyim için öntanımlı veri alım kipini belirler

# PDOStatement::fetchObject

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.4)

PDOStatement::fetchObject — Sonraki satırı alır ve bir nesne olarak döndürür

### Açıklama

public function PDOStatement::fetchObject(?string `$sınıf` = "stdClass", array `$bağımsız_değişkenler` = []): object|false

Sonraki satırı bir nesne olarak döndürür. Bu yöntem PDOStatement::fetch() yönteminin `PDO::FETCH_CLASS` veya `PDO::FETCH_OBJ` kipinde kullanımına denktir.

Bir satır alındığında, sınıfın özelliklerine ilgili sütunun değerleri atanır ve ardından sınıf kurucusu çağrılır.

### Bağımsız Değişkenler

`sınıf`

  Oluşturulan sınıfın ismi; `stdClass` öntanımlıdır.

`bağımsız_değişkenler`

  Bu dizinin elemanları kurucuya bağımsız değişken olarak aktarılır.

### Dönen Değerler

Sütun isimlerinin özellik isimlerine denk düştüğü sınıfın bir örneğini döndürür. İşlem sırasında bir hata oluşursa `false` döner.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Ayrıca Bakınız

- PDOStatement::fetch() - Sonuç kümesindeki sonraki satırı döndürür

# PDOStatement::getAttribute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::getAttribute — Bir deyim özniteliğini döndürür

### Açıklama

public function PDOStatement::getAttribute(int `$isim`): mixed

Bir deyim özniteliğinin değerini döndürür. Henüz tek bir sürücüye özel özniteliğin dışında öznitelik yoktur:

- `PDO::ATTR_CURSOR_NAME` (Firebird ve ODBC'ye özgüdür): `UPDATE ... WHERE CURRENT OF` için gösterici ismini içerir.

Sürücüye özgü özniteliklerin başka sürücülerde kullanılmamasına ise özellikle dikkat edilmelidir.

### Bağımsız Değişkenler

`isim`

  Sorgulanan özniteliğin ismi.

### Dönen Değerler

Özniteliğin değeri.

### Ayrıca Bakınız

- PDO::getAttribute() - Bir veritabanı bağlantı özniteliğinin değerini döndürür
- PDO::setAttribute() - Bir öznitelik tanımlar
- PDOStatement::setAttribute() - Bir deyim özniteliğini tanımlar

# PDOStatement::getColumnMeta

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::getColumnMeta — Sonuç kümesindeki bir sütunla ilgili temel veriyi döndürür

### Açıklama

public function PDOStatement::getColumnMeta(int `$sütun`): array|false

Sütun numarası belirtilen sütunla ilgili temel verileri içeren bir ilişkisel dizi döndürür.

Uyarı

PDOStatement::getColumnMeta() yöntemini seçimlik olarak bazı veritabanı sürücüleri desteklemez. Ancak bu kılavuzda belgelenen tüm PDO sürücüleri bu işlevi gerçekler.

### Bağımsız Değişkenler

`sütun`

  Sütun numarası; ilk sütunun numarası 0'dır.

### Dönen Değerler

Aşağıdaki alanlara sahip bir ilişkisel dizi döner:

Sütun temel verisi
İsim | Değerin açıklaması
--- | ---
`native_type` | Sütun değerinin PHP veri türü.
`driver:decl_type` | Veritabanındaki sütun değerinin SQL veri türü. Eğer sonuç kümesindeki sütun bir işlevin sonucu ise bu değer PDOStatement::getColumnMeta() tarafından döndürülmez.
`flags` | Bu sütun için tanımlı seçenek kümesi.
`isim` | Sütunun ismi.
`table` | Sütunu içeren tablonun ismi.
`len` | Sütunun genişliği. Onluk gerçek sayılar dışındaki türler için normalde `-1`'dir.
`precision` | Sütunun sayısal hassasiyeti. Onluk gerçek sayılar dışındaki türler için normalde `0`'dır.
`pdo_type` | Sütun türünü gösteren `PDO::PARAM_*` sabitlerinden biri.

İstenen sütun sonuç kümesinde yoksa veya hiç sonuç kümesi yoksa `false` döner.

### Örnekler

Örnek 1 - Sütun temel verilerinin alınması

Aşağıdaki örnekte bir PDO_SQLITE sürücüsünde bir işlev (COUNT) tarafından üretilen sonuç kümesindeki tek sütunla ilgili temel verilerin elde edilmesi gösterilmiştir.

    <?php
    $select = $DB->query('SELECT COUNT(*) FROM fruit');
    $meta = $select->getColumnMeta(0);
    var_dump($meta);
    ?>

Yukarıdaki örneğin çıktısı:

    array(6) {
      ["native_type"]=>
      string(7) "integer"
      ["flags"]=>
      array(0) {
      }
      ["name"]=>
      string(8) "COUNT(*)"
      ["len"]=>
      int(-1)
      ["precision"]=>
      int(0)
      ["pdo_type"]=>
      int(2)
    }

### Ayrıca Bakınız

- PDOStatement::columnCount() - Sonuç kümesindeki sütun sayısını döndürür
- PDOStatement::rowCount() - Son SQL deyiminden etkilenen satır sayısını döndürür

# PDOStatement::getIterator

(PHP 8)

PDOStatement::getIterator — Gets result set iterator

### Açıklama

public function PDOStatement::getIterator(): Iterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# PDOStatement::nextRowset

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::nextRowset — Çok satır kümeli bir sonuçtaki sonraki satır kümesini geçerli satır kümesi yapar

### Açıklama

public function PDOStatement::nextRowset(): bool

Bazı veritabanları birden fazla satır kümesi (sonuç kümesi diye de bilinir) döndüren kayıtlı yordamları destekler. PDOStatement::nextRowset() yordamını kullaranak bir PDOStatement nesnesi ile ilişkili satır kümelerinin ikincisine ve sırayla sonraki satır kümelerine erişebilirsiniz. Her satır kümesi diğerlerinden farklı sütunlardan oluşabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir kayıtlı yordamdan dönen çok sayıda satır kümesine erişim

Aşağıdaki örnekte üç satır kümesi döndüren `MULTIPLE_ROWSETS` kayıtlı yordam çağrısının, yapılışı gösterilmiştir. Döndürülecek satır kümesi kalmayınca `false` döndüren PDOStatement::nextRowset() yönteminin bu özelliğini bir do-while döngüsünde kullanabiliriz.

    <?php
    $sql = 'CALL multiple_rowsets()';
    $stmt = $conn->query($sql);
    $i = 1;
    do {
        $rowset = $stmt->fetchAll(PDO::FETCH_NUM);
        if ($rowset) {
            printResultSet($rowset, $i);
        }
        $i++;
    } while ($stmt->nextRowset());

    function printResultSet(&$rowset, $i) {
        print "$i. sonuç kümesi:\n";
        foreach ($rowset as $row) {
            foreach ($row as $col) {
                print $col . "\t";
            }
            print "\n";
        }
        print "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1. sonuç kümesi:
    apple    red
    banana   yellow

    2. sonuç kümesi:
    orange   orange    150
    banana   yellow    175

    3. sonuç kümesi:
    lime     green
    apple    red
    banana   yellow

### Ayrıca Bakınız

- PDOStatement::columnCount() - Sonuç kümesindeki sütun sayısını döndürür
- PDOStatement::execute() - Bir hazır deyimi çalıştırır
- PDOStatement::getColumnMeta() - Sonuç kümesindeki bir sütunla ilgili temel veriyi döndürür
- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır

# PDOStatement::rowCount

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDOStatement::rowCount — Son SQL deyiminden etkilenen satır sayısını döndürür

### Açıklama

public function PDOStatement::rowCount(): int

`PDOStatement` nesnesi tarafından çalıştırılan son DELETE, INSERT veya UPDATE deyiminden etkilenen satır sayısını döndürür.

`SELECT` gibi sonuç kümeleri oluşturan deyimler için davranış belirsizdir ve her sürücü için farklıdır. Bazı veritabanları (örneğin, MySQL tamponlu kipteyken) bu deyim tarafından üretilen satır sayısını döndürebilmektedir. Ancak bu davranış tüm veritabanları için garanti edilmediğinden taşınıbilir bir uygulamada bu davranışa itibar edilmemelidir.

> Bilginize:

> Bu yöntem SQLite sürücü ile ve `PDO::CURSOR_SCROLL` özniteliğine `PDO::ATTR_CURSOR` atandığında PostgreSQL sürücüsü ile daima "0" (sıfır) döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Etkilenen satır sayısı.

### Hatalar/İstisnalar

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_WARNING` atanırsa `E_WARNING` düzeyinde bir hata çıktılanır.

`PDO::ATTR_ERRMODE` özniteliğine `PDO::ERRMODE_EXCEPTION` atanırsa PDOException istisnası oluşur.

### Örnekler

Örnek 1 - Silinen satır sayısının döndürülmesi

PDOStatement::rowCount() bir DELETE, INSERT veya UPDATE deyiminden etkilenen satır sayısını döndürür.

    <?php
    /* FRUIT tablosundaki tüm satırları silelim */
    $del = $dbh->prepare('DELETE FROM fruit');
    $del->execute();

    /* Silinen satır sayısını döndürelim */
    $count = $del->rowCount();
    print "$count satır silindi.\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    9 satır silindi.

Örnek 2 - Bir SELECT deyiminden etkilenen satırların sayılması

Çoğu veritabanında PDOStatement::rowCount() bir SELECT deyiminden etkilenen satır sayısını döndürmez. Bu bakımdan, SELECT deyiminde kullandığınız yüklemlerin kullanıldığı bir SELECT COUNT(*) deyimi ile yapacağınız bir PDO::query() çağrısından sonra bir PDOStatement::fetchColumn() çağrısı ile etkilenen satır sayısını elde edebilirsiniz.

    <?php
    $sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
    $res = $conn->query($sql);
    $count = $res->fetchColumn();

    print "Etkilenen " . $count . " kayıt var.";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Etkilenen 2 kayıt var.

### Ayrıca Bakınız

- PDOStatement::columnCount() - Sonuç kümesindeki sütun sayısını döndürür
- PDOStatement::fetchColumn() - Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
- PDO::query() - Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır

# PDOStatement::setAttribute

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::setAttribute — Bir deyim özniteliğini tanımlar

### Açıklama

public function PDOStatement::setAttribute(int `$öznitelik`, mixed `$değer`): bool

Belirtilen deyim özniteliğine bir değer atar. Şimdilik genele yönelik hiç öznitelik yoktur. Sürücüye özel tek bir öznitelik vardır:

- `PDO::ATTR_CURSOR_NAME` (Firebird ve ODBC'ye özel): `UPDATE ... WHERE CURRENT OF` deyimi için gösterici ismini belirler.

Sürücüye özgü özniteliklerin başka sürücülerde kullanılmamasına ise özellikle dikkat edilmelidir.

### Bağımsız Değişkenler

`öznitelik`

  Tanımlanacak öznitelik.

`değer`

  `öznitelik` için atanacak değer; özniteliğe bağlı olarak belirli bir tür gerekebilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- PDO::getAttribute() - Bir veritabanı bağlantı özniteliğinin değerini döndürür
- PDO::setAttribute() - Bir öznitelik tanımlar
- PDOStatement::getAttribute() - Bir deyim özniteliğini döndürür

# PDOStatement::setFetchMode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.0)

PDOStatement::setFetchMode — Deyim için öntanımlı veri alım kipini belirler

### Açıklama

public function PDOStatement::setFetchMode(int `$kip`): bool
public function PDOStatement::setFetchMode(int `$kip` = PDO::FETCH_COLUMN, int `$sütunnum`): bool
public function PDOStatement::setFetchMode(int `$kip` = PDO::FETCH_CLASS, string `$sınıfadı`, ?array `$bağımsız_değişkenler` = `null`): bool
public function PDOStatement::setFetchMode(int `$kip` = PDO::FETCH_INTO, object `$nesne`): bool

### Bağımsız Değişkenler

`kip`

  `PDO::FETCH_*` sabitlerinden biri olarak veri alım kipi.

`sütunnum`

  Sütun numarası.

`sınıfadı`

  Sınıf adı.

`bağımsız_değişkenler`

  Kurucu bağımsız değişkenleri.

`nesne`

  Nesne.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Veri alım kipinin belirlenmesi

Aşağıdaki örnekte bir PDOStatement nesnesinin veri alım kipinin PDOStatement::setFetchMode() ile nasıl değiştirileceği gösterilmiştir.

    <?php
    $stmt = $dbh->query('SELECT name, colour, calories FROM fruit');
    $stmt->setFetchMode(PDO::FETCH_NUM);
    foreach ($stmt as $row) {
        print $col[0] . "\t" . $col[1] . "\t" . $col[2] . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    elma      kırmızı     150
    muz       sarı        250
    portakal  turuncu     300
    kivi      kahverengi  75
    limon     sarı        25
    armut     yeşil       150

## İçindekiler

- PDOStatement::bindColumn — Bir sütunu bir PHP değişkeni ile ilişkilendirir
- PDOStatement::bindParam — Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir
- PDOStatement::bindValue — Bir değeri bir bağımsız değişken ile ilişkilendirir
- PDOStatement::closeCursor — Göstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar
- PDOStatement::columnCount — Sonuç kümesindeki sütun sayısını döndürür
- PDOStatement::debugDumpParams — Bir SQL hazır komutunu dökümler
- PDOStatement::errorCode — Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür
- PDOStatement::errorInfo — Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür
- PDOStatement::execute — Bir hazır deyimi çalıştırır
- PDOStatement::fetch — Sonuç kümesindeki sonraki satırı döndürür
- PDOStatement::fetchAll — Sonuç kümesinde kalan satırları döndürür
- PDOStatement::fetchColumn — Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
- PDOStatement::fetchObject — Sonraki satırı alır ve bir nesne olarak döndürür
- PDOStatement::getAttribute — Bir deyim özniteliğini döndürür
- PDOStatement::getColumnMeta — Sonuç kümesindeki bir sütunla ilgili temel veriyi döndürür
- PDOStatement::getIterator — Gets result set iterator
- PDOStatement::nextRowset — Çok satır kümeli bir sonuçtaki sonraki satır kümesini geçerli satır kümesi yapar
- PDOStatement::rowCount — Son SQL deyiminden etkilenen satır sayısını döndürür
- PDOStatement::setAttribute — Bir deyim özniteliğini tanımlar
- PDOStatement::setFetchMode — Deyim için öntanımlı veri alım kipini belirler

# The PDORow class

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 1.0.0)

## Giriş

Represents a row from a result set returned by PDOStatement::fetch() called with `PDO::FETCH_LAZY` fetch mode.

Objects of this class cannot be instantiated and are not serializable.

The PDORow object allows access to the returned data as if both `PDO::FETCH_OBJ` and `PDO::FETCH_BOTH` mode was used. This means that the returned data can be accessed as object properties, and as an array both indexed by the column name and a column offset number.

Dikkat

Accessing an undefined property returns `null` without emitting a warning.

## Sınıf Sözdizimi

final class PDORow {
/* Özellikler */
public string $queryString;
}

## Özellikler

queryString

  Query string used by the PDOStatement that returned the PDORow object.

## Hatalar/İstisnalar

Throws an Error when trying to write to or unset() any property.

# PDOException sınıfı

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Giriş

PDO tarafından oluşturulan bir hatayı temsil eder. Kendi kodunuzda bir PDOException oluşturmamalısınız. PHP'deki istisnalar hakkında bilgi edinmek için İstisnalar bölümüne bakınız.

## Sınıf Sözdizimi

class PDOException extends RuntimeException {
/* Özellikler */
protected int|string $code;
public ?array $errorInfo = null;
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

errorInfo

  PDO::errorInfo() veya PDOStatement::errorInfo() yöntemine karşılıktır.

code

  `SQLSTATE` hata kodu. Erişmek için Exception::getCode() yöntemini kullanın.

# PDO Sürücüleri

## İçindekiler

- CUBRID PDO Driver
- MS SQL Sunucusu (PDO)
- Firebird (PDO)
- IBM (PDO)
- Informix (PDO)
- MySQL (PDO)
- MS SQL Server PDO Driver
- Oracle (PDO)
- ODBC ve DB2 (PDO)
- PostgreSQL (PDO)
- SQLite (PDO)

PDO arayüzü tarafından gerçeklenmiş sürücüler:

Sürücü ismi | Desteklenen veritabanları
--- | ---
PDO_CUBRID | Cubrid
PDO_DBLIB | FreeTDS / Microsoft SQL Sunucusu / Sybase
PDO_FIREBIRD | Firebird
PDO_IBM | IBM DB2
PDO_INFORMIX | IBM Informix Devingen Sunucusu
PDO_MYSQL | MySQL 3.x/4.x/5.x/8.x
PDO_OCI | Oracle Çağrı Arayüzü
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC ve win32 ODBC)
PDO_PGSQL | PostgreSQL
PDO_SQLITE | SQLite 3 ve SQLite 2
PDO_SQLSRV | Microsoft SQL Server / SQL Azure

# CUBRID PDO Driver (PDO_CUBRID)

## Giriş

PDO_CUBRID is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to CUBRID databases.

> Bilginize: Current version of PDO_CUBRID doesn't support persistent connection now.

## Kurulum

To build the PDO_CUBRID extension, the CUBRID DBMS must be installed on the same system as PHP. PDO_CUBRID is a » PECL extension, so follow the instructions in PECL eklentilerinin kurulması to install the PDO_CUBRID extension. Issue the configure command to point to the location of the CUBRID base dir as follows:

       $ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]

The configure command defaults to the value of the CUBRID environment variable.

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir. Detailed information about installation on Linux and Windows manually, please read build-guide.html in PECL package CUBRID for reference.

## PDO_CUBRID Features

## Scrollable cursors

PDO_CUBRID supports scrollable cursors. The default cursor type is forward only, and you can use parameter driver_options in PDO::prepare() to change cursor type.

## Timeout

PDO_CUBRID supports sql statement execution timeout setting; You can use PDO::setAttribute() to set timeout value.

## Autocommit_mode and Transaction

PDO_CUBRID supports both autocommit_mode and transaction, and autocommit_mode is enabled by default. You can use PDO::setAttribute() to change its state.

If you use PDO::beginTransaction() to begin a transaction, it will disable autocommit_mode automatically and restore it after PDO::commit() or PDO::rollBack().

> Bilginize: Prior do disabling autocommit_mode any pending work is automatically committed.

## Multiple SQL Statements

PDO_CUBRID supports Multiple SQL statements. Multiple SQL statements are separated by semicolons (`;`).

## Schema Information

PDO_CUBRID implements PDO::cubrid_schema() to get schema information.

## LOBs

PDO_CUBRID supports BLOB/CLOB data type. The LOB in PDO is represented as a stream, so you can insert LOBs by binding a stream, and get LOBs by reading a stream returned by CUBRID PDO. For example:

Örnek 1 Insert LOBs in CUBRID PDO

    <?php
    $fp = fopen('lob_test.png', 'rb');

    $sql_stmt = "INSERT INTO lob_test(name, content) VALUES('lob_test.png', ?)";

    $stmt = $dbh->prepare($sql_stmt);
    $ret = $stmt->bindParam(1, $fp, PDO::PARAM_LOB);
    $ret = $stmt->execute();
    ?>

Örnek 2 Fetch LOBs in CUBRID PDO

    <?php
    $sql_stmt = "SELECT content FROM lob_test WHERE name='lob_test.png'";

    $stmt = $dbh->prepare($sql_stmt);
    $stmt->execute();
    $result = $stmt->fetch(PDO::FETCH_NUM);

    header("Content-Type: image/png");
    fpassthru($result[0]);
    ?>

## Column meta

The PDOStatement::getColumnMeta() in CUBRID PDO will return an associative array containing the following values:

- type
- name
- table
- def
- precision
- scale
- not_null
- auto_increment
- unique_key
- multiple_key
- primary_key
- foreign_key
- reverse_index
- reverse_unique

## Collection Data Type

PDO_CUBRID supports SET/MULTISET/SEQUENCE data type. If you don't specify data type, the default data type is char. For example:

Örnek 3 Insert set in CUBRID PDO with default data type.

    <?php
    $conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
    $cubrid_pdo = new PDO($conn_str, 'dba', '');

    $cubrid_pdo->exec("DROP TABLE if exists test_tbl");
    $cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(VARCHAR))");

    $sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
    $stmt = $cubrid_pdo->prepare($sql_stmt_insert);
    $data = array("abc","def","ghi");
    $ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL);
    $ret = $stmt->execute();
    var_Dump($ret);
    ?>

Örnek 4 Specify data type when insert set in CUBRID PDO

    <?php
    $conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
    $cubrid_pdo = new PDO($conn_str, 'dba', '');

    $cubrid_pdo->exec("DROP TABLE if exists test_tbl");
    $cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(int))");

    $sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
    $stmt = $cubrid_pdo->prepare($sql_stmt_insert);
    $data = array(1,2,3,4);
    $ret = $stmt->bindParam(1, $data, 0,0,"int");
    $ret = $stmt->execute();
    var_Dump($ret);
    ?>

CUBRID Bind Data Types for the fifth parameter of PDOStatement::bindParam():

- CHAR
- STRING
- NCHAR
- VARNCHAR
- BIT
- VARBIT
- NUMERIC
- NUMBER
- INT
- SHORT
- BIGINT
- MONETARY
- FLOAT
- DOUBLE
- DATE
- TIME
- DATETIME
- TIMESTAMP

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

The following constants can be used when setting the database attribute. They can be passed to PDO::getAttribute() or PDO::setAttribute().

PDO::CUBRID attribute flags
Constant | Description
--- | ---
`PDO::CUBRID_ATTR_ISOLATION_LEVEL` | Transaction isolation level for the database connection.
`PDO::CUBRID_ATTR_LOCK_TIMEOUT` | Transaction timeout in seconds.
`PDO::CUBRID_ATTR_MAX_STRING_LENGTH` | Read only. The maximum string length for bit, varbit, char, varchar, nchar, nchar varying data types when using CUBRID PDO API.

The following constants can be used when setting the transaction isolation level. They can be passed to PDO::getAttribute() or returned by PDO::setAttribute().

PDO::CUBRID isolation level flags
Constant | Description
--- | ---
`PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE` | The lowest isolation level (1). A dirty, non-repeatable or phantom read may occur for the tuple and a non-repeatable read may occur for the table as well.
`PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE` | A relatively low isolation level (2). A dirty read does not occur, but non-repeatable or phantom read may occur.
`PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE` | The default isolation of CUBRID (3). A dirty, non-repeatable or phantom read may occur for the tuple, but repeatable read is ensured for the table.
`PDO::TRAN_REP_CLASS_COMMIT_INSTANCE` | A relatively low isolation level (4). A dirty read does not occur, but non-repeatable or phantom read may.
`PDO::TRAN_REP_CLASS_REP_INSTANCE` | A relatively high isolation level (5). A dirty or non-repeatable read does not occur, but a phantom read may.
`PDO::TRAN_SERIALIZABLE` | The highest isolation level (6). Problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.

The following constants can be used when getting schema information. They can be passed to PDO::cubrid_schema().

PDO::CUBRID schema flags
Constant | Description
--- | ---
`PDO::CUBRID_SCH_TABLE` | Get name and type of table in CUBRID.
`PDO::CUBRID_SCH_VIEW` | Get name and type of view in CUBRID.
`PDO::CUBRID_SCH_QUERY_SPEC` | Get the query definition of view.
`PDO::CUBRID_SCH_ATTRIBUTE` | Get the attributes of table column.
`PDO::CUBRID_SCH_TABLE_ATTRIBUTE` | Get the attributes of table.
`PDO::CUBRID_SCH_METHOD` | Get the instance method. The instance method is a method called by a class instance. It is used more often than the class method because most operations are executed in the instance.
`PDO::CUBRID_SCH_TABLE_METHOD` | Get the class method. The class method is a method called by a class object. It is usually used to create a new class instance or to initialize it. It is also used to access or update class attributes.
`PDO::CUBRID_SCH_METHOD_FILE` | Get the information of the file where the method of the table is defined.
`PDO::CUBRID_SCH_SUPER_TABLE` | Get the name and type of table which table inherites attributes from.
`PDO::CUBRID_SCH_SUB_TABLE` | Get the name and type of table which inherites attributes from this table.
`PDO::CUBRID_SCH_CONSTRAINT` | Get the table constraints.
`PDO::CUBRID_SCH_TRIGGER` | Get the table triggers.
`PDO::CUBRID_SCH_TABLE_PRIVILEGE` | Get the privilege information of table.
`PDO::CUBRID_SCH_COL_PRIVILEGE` | Get the privilege information of column.
`PDO::CUBRID_SCH_DIRECT_SUPER_TABLE` | Get the direct super table of table.
`PDO::CUBRID_SCH_PRIMARY_KEY` | Get the table primary key.
`PDO::CUBRID_SCH_IMPORTED_KEYS` | Get imported keys of table.
`PDO::CUBRID_SCH_EXPORTED_KEYS` | Get exported keys of table.
`PDO::CUBRID_SCH_CROSS_REFERENCE` | Get reference relationship of two tables.

# PDO_CUBRID DSN

(PECL PDO_CUBRID >= 8.3.0.0001)

PDO_CUBRID DSN — Connecting to CUBRID databases

### Açıklama

The PDO_CUBRID Data Source Name (DSN) is composed of the following elements, delimited by semicolons:

DSN prefix

  The DSN prefix is `cubrid:`.

`host`
  The hostname on which the database server resides.
`port`
  The port on which the database server is running.
`dbname`
  The name of the database.

### Notlar

> Bilginize: When you establish the connection to CUBRID, you should give username and password except DSN.

### Örnekler

Örnek 1 PDO_CUBRID DSN examples

The following example shows a PDO_CUBRID DSN for connecting to a CUBRID database:

    cubrid:host=localhost;port=33000;dbname=demodb

# PDO::cubrid_schema

(PECL PDO_CUBRID >= 8.3.0.0001)

PDO::cubrid_schema — Get the requested schema information

### Açıklama

public function PDO::cubrid_schema(int `$schema_type`, string `$table_name` = ?, string `$col_name` = ?): array

This function is used to get the requested schema information from database. You have to designate `table_name`, if you want to get information on certain table, `col_name`, if you want to get information on certain column (can be used only with PDO::CUBRID_SCH_COL_PRIVILEGE).

The result of this function is returned as a two-dimensional array (column (associative array) * row (numeric array)). The following tables shows types of schema and the column structure of the result array to be returned based on the schema type.

Result Composition of Each Type
Schema | Column Number | Column Name | Value
--- | --- | --- | ---
PDO::CUBRID_SCH_TABLE | 1 | NAME |
| 2 | TYPE | 0:system table 1:view 2:table
PDO::CUBRID_SCH_VIEW | 1 | NAME |
| 2 | TYPE | 1:view
PDO::CUBRID_SCH_QUERY_SPEC | 1 | QUERY_SPEC |
PDO::CUBRID_SCH_ATTRIBUTE / PDO::CUBRID_SCH_TABLE_ATTRIBUTE | 1 | ATTR_NAME |
| 2 | DOMAIN |
| 3 | SCALE |
| 4 | PRECISION |
| 5 | INDEXED | 1:indexed
| 6 | NOT NULL | 1:not null
| 7 | SHARED | 1:shared
| 8 | UNIQUE | 1:unique
| 9 | DEFAULT |
| 10 | ATTR_ORDER | base:1
| 11 | CLASS_NAME |
| 12 | SOURCE_CLASS |
| 13 | IS_KEY | 1:key
PDO::CUBRID_SCH_METHOD / PDO::CUBRID_SCH_TABLE_METHOD | 1 | NAME |
| 2 | RET_DOMAIN |
| 3 | ARG_DOMAIN |
PDO::CUBRID_SCH_METHOD_FILE | 1 | METHOD_FILE |
PDO::CUBRID_SCH_SUPER_TABLE / PDO::CUBRID_SCH_DIRECT_SUPER_TABLE / PDO::CUBRID_SCH_SUB_TABLE | 1 | CLASS_NAME |
| 2 | TYPE | 0:system table 1:view 2:table
PDO::CUBRID_SCH_CONSTRAINT | 1 | TYPE | 0:unique 1:index 2:reverse unique 3:reverse index
| 2 | NAME |
| 3 | ATTR_NAME |
| 4 | NUM_PAGES |
| 5 | NUM_KEYS |
| 6 | PRIMARY_KEY | 1:primary key
| 7 | KEY_ORDER | base:1
PDO::CUBRID_SCH_TRIGGER | 1 | NAME |
| 2 | STATUS |
| 3 | EVENT |
| 4 | TARGET_CLASS |
| 5 | TARGET_ATTR |
| 6 | ACTION_TIME |
| 7 | ACTION |
| 8 | PRIORITY |
| 9 | CONDITION_TIME |
| 10 | CONDITION |
PDO::CUBRID_SCH_TABLE_PRIVILEGE / PDO::CUBRID_SCH_COL_PRIVILEGE | 1 | CLASS_NAME / ATTR_NAME |
| 2 | PRIVILEGE |
| 3 | GRANTABLE |
PDO::CUBRID_SCH_PRIMARY_KEY | 1 | CLASS_NAME |
| 2 | ATTR_NAME |
| 3 | KEY_SEQ | base:1
| 4 | KEY_NAME |
PDO::CUBRID_SCH_IMPORTED_KEYS / PDO::CUBRID_SCH_EXPORTED_KEYS / PDO::CUBRID_SCH_CROSS_REFERENCE | 1 | PKTABLE_NAME |
| 2 | PKCOLUMN_NAME |
| 3 | FKTABLE_NAME | base:1
| 4 | FKCOLUMN_NAME |
| 5 | KEY_SEQ | base:1
| 6 | UPDATE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
| 7 | DELETE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
| 8 | FK_NAME |
| 9 | PK_NAME |

### Bağımsız Değişkenler

`schema_type`
  Schema type that you want to know.
`table_name`
  Table you want to know the schema of.
`col_name`
  Column you want to know the schema of.

### Dönen Değerler

Array containing the schema information, when process is successful;

FALSE, when process is unsuccessful

### Örnekler

Örnek 1 A PDO::cubrid_schema() example

This example shows how to get primary key and foreign keys of table game.

    <?php
    $pk_list = $dbh->cubrid_schema(PDO::CUBRID_SCH_PRIMARY_KEY, "game");
    print_r($pk_list);

    $fk_list = $dbh->cubrid_schema(PDO::CUBRID_SCH_IMPORTED_KEYS, "game");
    print_r($fk_list);
    ?>

Yukarıdaki örneğin çıktısı:

    Result:
    Array
    (
        [0] => Array
            (
                [CLASS_NAME] => game
                [ATTR_NAME] => athlete_code
                [KEY_SEQ] => 3
                [KEY_NAME] => pk_game_host_year_event_code_athlete_code
            )

        [1] => Array
            (
                [CLASS_NAME] => game
                [ATTR_NAME] => event_code
                [KEY_SEQ] => 2
                [KEY_NAME] => pk_game_host_year_event_code_athlete_code
            )

        [2] => Array
            (
                [CLASS_NAME] => game
                [ATTR_NAME] => host_year
                [KEY_SEQ] => 1
                [KEY_NAME] => pk_game_host_year_event_code_athlete_code
            )

    )
    Array
    (
        [0] => Array
            (
                [PKTABLE_NAME] => athlete
                [PKCOLUMN_NAME] => code
                [FKTABLE_NAME] => game
                [FKCOLUMN_NAME] => athlete_code
                [KEY_SEQ] => 1
                [UPDATE_RULE] => 1
                [DELETE_RULE] => 1
                [FK_NAME] => fk_game_athlete_code
                [PK_NAME] => pk_athlete_code
            )

        [1] => Array
            (
                [PKTABLE_NAME] => event
                [PKCOLUMN_NAME] => code
                [FKTABLE_NAME] => game
                [FKCOLUMN_NAME] => event_code
                [KEY_SEQ] => 1
                [UPDATE_RULE] => 1
                [DELETE_RULE] => 1
                [FK_NAME] => fk_game_event_code
                [PK_NAME] => pk_event_code
            )

    )

## İçindekiler

- PDO_CUBRID DSN — Connecting to CUBRID databases
- PDO::cubrid_schema — Get the requested schema information

# Microsoft SQL Sunucusu ve Sybase (PDO_DBLIB) İşlevleri

## Giriş

PDO_DBLIB, PHP Veri Nesneleri Arayüzünün (PDO) FreeTDS kütüphanesi üzerinden Microsoft SQL Sunucusu ve Sybase veritabanlarına erişimini mümkün kılmak için gerçeklenmiş bir sürücüdür.

Bu eklenti artık Windows üzerinde kullanılamamaktadır.

Windows'ta, MS SQL için ikincil bir sürücü olan Microsoft SqlSrv kullanmalısınız: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.

SqlSrv kullanmak mümkün değilse, yerel Windows DB-LIB eski olduğundan, evreli kullanımı güvenli olmadığından ve artık Microsoft tarafından desteklenmediğinden, Microsoft SQL Server ve Sybase veritabanlarına bağlanmak için PDO_ODBC sürücüsünü kullanabilirsiniz.

# PDO_DBLIB DSN

(PECL PDO_DBLIB >= 0.9.0)

PDO_DBLIB DSN — Microsoft SQL Sunucusu ve Sybase veritabanlarına bağlantı

### Açıklama

PDO_DBLIB DSN'si şu bileşenlerden oluşur:

DSN öneki

  DSN öneki, PDO_DBLIB, Sybase ct-lib kütüphaneleri kullanılmak üzere derlenmişse `sybase:`, Microsoft SQL Sunucusunu kullanmak üzere derlenmişse `mssql:`, FreeTDS kütüphanelerini kullanmak üzere derlenmişse `dblib:` dizgesidir.

`host`

  Veritabanını barındıran konağın adı veya IP adresi; 127.0.0.1 öntanımlıdır.

`dbname`

  Veritabanının ismi.

`charset`

  İstemcinin karakter kümesi.

`appname`

  Uygulama ismi (sistem süreçlerinde kullanılır). "PHP Generic DB-lib" veya "PHP freetds" öntanımlıdır.

`secure`

  Şimdilik kullanılmamaktadır.

### Örnekler

Örnek 1 - PDO_DBLIB DSN örnekleri

Aşağıdaki örnekte, Microsoft SQL Sunucusu ve Sybase veritabanlarına bağlanmak için kullanılan PDO_DBLIB DSN'leri gösterilmiştir:

    mssql:host=localhost;dbname=testdb
    sybase:host=localhost;dbname=testdb
    dblib:host=localhost;dbname=testdb

## İçindekiler

- PDO_DBLIB DSN — Microsoft SQL Sunucusu ve Sybase veritabanlarına bağlantı

# Firebird İşlevleri (PDO_FIREBIRD)

## Giriş

Uyarı

Bu eklenti DENEYSELDİR. Bu eklentinin davranışı, işlev isimleri ve tüm belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu risk göze alınamayacaksa bu eklenti kullanılmamalıdır.

PDO_FIREBIRD, PHP Veri Nesneleri Arayüzünün (PDO) Firebird veritabanlarına erişimini mümkün kılmak için gerçeklenmiş bir sürücüdür.

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO::FB_ATTR_DATE_FORMAT` (int)

  Tarih biçemini tanımlar.

`PDO::FB_ATTR_TIME_FORMAT` (int)

  Tarih biçemini tanımlar.

`PDO::FB_ATTR_TIMESTAMP_FORMAT` (int)

  Zaman damgası biçemini tanımlar.

# PDO_FIREBIRD DSN

(PECL PDO_FIREBIRD >= 0.1.0)

PDO_FIREBIRD DSN — Firebird veritabanı bağlantısı

### Açıklama

PDO_FIREBIRD DSN'sinin ana bileşenleri şunlardır:

DSN öneki

  DSN öneki `firebird:` dizgesidir.

`dbname`

  Veritabanının ismi.

`charset`

  Karakter kümesi.

`role`

  SQL rol adı.

`dialect`

  Veritabanının lehçesi; ya `1` ya da `3`. Belirtilmezse, öntanımlı lehçe `3`'tür. PHP 7.4.0 ve sonrasında kullanılabilir.

### Örnekler

Örnek 1 - Yol belirtilen PDO_FIREBIRD DSN örneği

Aşağıdaki örnekte Firebird veritabanlarına bağlanmak için PDO_FIREBIRD DSN kullanımı gösterilmiştir.

    firebird:dbname=/path/to/DATABASE.FDB

Örnek 2 - Port ve yol belirtilen PDO_FIREBIRD DSN örneği

Aşağıdaki örnekte, bir Firebird veritabanına yol ve port belirterek bağlanmak için PDO_FIREBIRD DSN kullanımı gösterilmiştir.

    firebird:dbname=hostname/port:/path/to/DATABASE.FDB

Örnek 3 - Debian üzerinde localhost ve employee.fdb yolu belirtilen PDO_FIREBIRD DSN örneği

Aşağıdaki örnekte localhost kullanılarak employee.fdb adlı Firebird veritabanına bağlanmak için PDO_FIREBIRD DSN kullanımı gösterilmiştir.

    firebird:dbname=localhost:/var/lib/firebird/2.5/data/employee.fdb

Örnek 4 - dialect=1 veritabanına bağlanan PDO_FIREBIRD DSN örneği

Aşağıdaki örnekte dialect 1 ile oluşturulmuş test.fdb adlı Firebird veritabanına bağlanmak için PDO_FIREBIRD DSN kullanımı gösterilmiştir. Bu sadece PHP 7.4.0 ve sonrasında çalışır.

    firebird:dbname=localhost:/var/lib/firebird/2.5/data/test.fdb;charset=utf-8;dialect=1

## İçindekiler

- PDO_FIREBIRD DSN — Firebird veritabanı bağlantısı

# IBM (PDO_IBM) İşlevleri

## Giriş

PDO_IBM, PHP Veri Nesneleri Arayüzünün (PDO) IBM veritabanlarına PHP'den erişimi mümkün kılmak için gerçeklenmiş bir sürücüdür.

## Kurulum

PDO_IBM eklentisini kurmak için PHP'yi derlediğiniz makineye DB2 Client v9.1 veya üstünü kurmuş olmalısınız. DB2 Client,» IBM Uygulama Geliştirme sitesinden temin edilebilir.

> Bilginize: Bilginize

> The DB2 Client v9.1 ve üstü Linux, UNIX, ve Windows v8 and v9.1 için DB2'ye doğrudan erişimi destekler.

> DB2 Client v9.1 ayrıca satın alacağınız » DB2 Bağlantı ürününü üzerinden z/OS sunuculardaki i5 ve DB2 UDB için DB2 UDB'ye erişimi de destekler.

PDO_IBM bir » PECL eklentisi olup eklentiyi kurmak için PECL eklentilerinin kurulması sayfasındaki talimatları izleyebilirsiniz. DB2 istemcisi başlık dosyalarını ve kütüphanelerinin bulunduğu yeri configure betiğine göstermek için şu komut satırını kullanabilirsiniz:

    bash$ ./configure --with-pdo-ibm=/bir/yol/sqllib[,shared]

configure betiği öntanımlı olarak DB2DIR ortam değişkenindeki değeri kullanır.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PDO_IBM Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
pdo_ibm.i5_dbcs_alloc | "0" | `INI_SYSTEM` | Added in PDO_IBM 1.5.0
pdo_ibm.i5_override_ccsid | "0" | `INI_SYSTEM` | Added in PDO_IBM 1.5.0

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`pdo_ibm.i5_dbcs_alloc` int

  This options affects the internal buffer allocation strategy on IBM i. By default, this option is 0. When this option is set, buffers are allocated with a much larger size, in case the database is misleading about character size when converting between encodings. This option uses six times as much memory for buffers (to account for the largest possible UTF-8 sequences), but may be needed if truncated data is returned.

  - 0 - Minimum size buffers are allocated.

  - 1 - Larger size buffers are allocated.

`pdo_ibm.i5_override_ccsid` int

  The ASCII CCSID to use for conversion from EBCDIC on IBM i. Setting this to 1208 will use UTF-8. By default, this is 0, which will select the default ASCII job CCSID.

  To learn more about CCSIDs on IBM i, consult the » IBM documentation.

# PDO_IBM DSN

(PECL PDO_IBM >= 0.9.0)

PDO_IBM DSN — IBM veritabanı bağlantısı

### Açıklama

PDO_IBM Veri Kaynağı Adı (DSN), IBM CLI DSN'sine dayanır. PDO_IBM Veri Kaynağı Adı (DSN) şu öğelerden oluşur:

DSN öneki

  DSN öneki `ibm:` dizgesidir.

DSN

  Şunlardan biri olabilir:

  - Veri kaynağı db2cli.ini veya odbc.ini kullanılarak ayarlanır.

  - Kataloglu veritabanı adı; yani veritabanının DB2 istemci kataloğundaki takma adı.

  - Eksiksiz bağlantı dizgesi; sözdizimi şöyledir: `DRIVER={IBM DB2 ODBC DRIVER}; DATABASE=`veritabanı`; HOSTNAME=`konakadı`; PORT=`port`;PROTOCOL=TCPIP; UID=`kullanıcı`; PWD=`parola`;`

    `veritabanı`

      Veritabanının adı.

    `konakadı`

      Veritabanı sunucusunun IP adresi veya konak adı.

    `port`

      Veritabanı sunucusunun dinlediği port.

    `kullanıcı`

      Veritabanına bağlantı için kullanıcı adı.

    `password`

      Veritabanına bağlantı için parola.

### Örnekler

Örnek 1 - db2cli.ini kullanarak PDO_IBM DSN örneği

Aşağıdaki örnekte, db2cli.ini dosyasında DB2_9 adıyla kataloglanmış bir DB2 veritabanına bağlanmak için kullanılan bir PDO_IBM DSN'si gösterilmiştir:

    $db = new PDO("ibm:DSN=DB2_9", "", "");

    [DB2_9]
    Database=testdb
    Protocol=tcpip
    Hostname=11.22.33.444
    Servicename=56789

Örnek 2 - Bağlantı dizgeli PDO_IBM DSN'si örneği

Aşağıdaki örnekte, `testdb` adında bir DB2 veritabanına bağlanmak için bir DB2 CLI bağlantı dizgesini kullanan bir PDO_IBM DSN'si gösterilmiştir:

    $db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
      "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");

## İçindekiler

- PDO_IBM DSN — IBM veritabanı bağlantısı

# Informix (PDO_INFORMIX) İşlevleri

## Giriş

PDO_INFORMIX, PHP Veri Nesneleri Arayüzünün (PDO) Informix veritabanlarına erişimini mümkün kılmak için gerçeklenmiş bir sürücüdür.

## Kurulum

PDO_INFORMIX eklentisini kurmak için PDO_INFORMIX'i derlediğiniz makineye Informix Client SDK 2.81 UC1 veya üstünü kurmuş olmalısınız. Informix Client SDK » IBM Informix destek sitesinden temin edilebilir.

PDO_INFORMIX bir » PECL eklentisi olduğundan kurulum için PECL eklentilerinin kurulması bölümüne bakınız. Informix Client SDK başlık dosyalarının bulunduğu yeri belirtmek için configure komutunu şöyle kullanabilirsiniz:

       bash$ ./configure --with-pdo-informix=/bir/yol/SDK[,shared]

configure komutu öntanımlı değer olarak INFORMIXDIR ortam değişkenindeki değeri kullanır.

## Kaydırılabilir göstericiler

PDO_INFORMIX kaydırılabilir göstericileri desteklemekle birlikte öntanımlı olarak etkin değildir. Kaydırılabilir gösterici desteğini etkin kılmak için odbc.ini dosyasındaki ilgili ODBC bağlantı ayarlarına `ENABLESCROLLABLECURSORS=1` atamalı ya da DSN bağlantı dizgesinde `EnableScrollableCursors=1` yan tümcesini belirtmelisiniz.

# PDO_INFORMIX DSN

(PECL PDO_INFORMIX >= 0.1.0)

PDO_INFORMIX DSN — Informix veritabanı bağlantısı

### Açıklama

PDO_INFORMIX Veri Kaynağı Adı (DSN), Informix ODBC DSN dizgesine dayanır. Bir Informix ODBC DSN'sini yapılandırmak için gereken ayrıntılı bilgiyi » Informix devingen sunucu bilgi merkezinden edinebilirsiniz. PDO_INFORMIX DSN'sinin ana bileşenleri şunlardır:

DSN örneki

  DSN öneki `informix:` dizgesidir.

DSN

  DSN ya odbc.ini kullanarak ayarlanan bir veri kaynağı veya eksiksiz bir » bağlantı dizgesi olmalıdır.

### Örnekler

Örnek 1 - odbc.ini kullanan PDO_INFORMIX DSN örneği

Aşağıdaki örnekte, odbc.ini dosyasında Infdrv33 olarak kataloglanmış bir Informix veritabanına bağlanmak için kullanılan bir PDO_INFORMIX DSN'si gösterilmiştir:

    $db = new PDO("informix:DSN=Infdrv33", "", "");

    [ODBC Data Sources]
    Infdrv33=INFORMIX 3.3 32-BIT

    [Infdrv33]
    Driver=/opt/informix/csdk_2.81.UC1G2/lib/cli/iclis09b.so
    Description=INFORMIX 3.3 32-BIT
    Database=common_db
    LogonID=testuser
    pwd=testpass
    Servername=ids_server
    DB_LOCALE=en_US.819
    OPTIMIZEAUTOCOMMIT=1
    ENABLESCROLLABLECURSORS=1

Örnek 2 - Bağlantı dizgeli PDO_INFORMIX DSN örneği

Aşağıdaki örnekte, `common_db` adındaki bir Informix veritabanına bağlanmak için kullanılan bir bağlantı dizgesi sözdizimi gösterilmiştir:

    $db = new PDO("informix:host=host.domain.com; service=9800;
        database=common_db; server=ids_server; protocol=onsoctcp;
        EnableScrollableCursors=1", "testuser", "tespass");

## İçindekiler

- PDO_INFORMIX DSN — Informix veritabanı bağlantısı

# MySQL (PDO_MYSQL) İşlevleri

## Giriş

PDO_MYSQL, PHP Veri Nesneleri Arayüzünün (PDO) MySQL veritabanlarına erişimini mümkün kılmak için gerçeklenmiş bir sürücüdür.

PDO_MYSQL eklentisi, öntanımlı olarak öykünülmüş hazır deyimleri kullanır.

MySQL 8

7.1.16'dan önceki bir PHP sürümünü veya 7.2.4'ten önceki PHP 7.2'yi çalıştırırken, MySQL 8 Sunucusunun öntanımlı parola eklentisini mysql_native_password olarak ayarlayın, aksi takdirde, caching_sha2_password kullanılmadığında bile "sunucu tarafından istenen [caching_sha2_password] kimlik doğrulama yöntemini istemci bilmiyor" anlamında The server requested authentication method unknown to the client [caching_sha2_password] gibi hatalar görürsünüz.

Bunun nedeni MySQL 8'in öntanımlı olarak eski PHP (mysqlnd) sürümleri tarafından tanınmayan bir eklenti olan caching_sha2_password'e ayarlanmasıdır. my.cnf'de `default_authentication_plugin=mysql_native_password` ayarını yaparak bunu değiştirin. caching_sha2_password eklentisi PHP 7.4.4 itibariyle desteklenmektetir. PHP 7.4.4 öncesinde, bunu destekleyen mysql_xdevapi eklentisi kullanılabilir.

Uyarı

Dikkat: Bazı MySQL tablo türleri (saklama motorları) toplu hareketleri desteklemez. Bir veritabanını kodlarken toplu hareketleri desteklemeyen bir tablo türünü kullanıyorsanız MySQL toplu hareketi başarıyla ilklendirmiş gibi yapar. Ayrıca, DDL sorguları, bekleyen toplu hareketlerin örtük olarak yerine getirilmesine de sebep olur.

> Bilginize:

> MySQL sürücüsü `PDO::PARAM_INPUT_OUTPUT` sabitini PDOStatement::bindParam() üzerinden düzgünce desteklemez; böyle bağımsız değişkenler kullanılabilirse de, bunlar güncellenmez (yani, mevcut çıktı yoksayılır).

## Kurulum

The common Unix distributions include binary versions of PHP that can be installed. Although these binary versions are typically built with support for the MySQL extensions, the extension libraries themselves may need to be installed using an additional package. Check the package manager that comes with your chosen distribution for availability.

For example, on Ubuntu the `php5-mysql` package installs the ext/mysql, ext/mysqli, and PDO_MYSQL PHP extensions. On CentOS, the `php-mysql` package also installs these three PHP extensions.

Alternatively, you can compile this extension yourself. Building PHP from source allows you to specify the MySQL extensions you want to use, as well as your choice of client library for each extension.

When compiling, use --with-pdo-mysql[=DIR] to install the PDO MySQL extension, where the optional `[=DIR]` is the MySQL base library. Mysqlnd is the default library. For details about choosing a library, see Choosing a MySQL library.

Optionally, the --with-mysql-sock[=DIR] sets to location to the MySQL unix socket pointer for all MySQL extensions, including PDO_MYSQL. If unspecified, the default locations are searched.

Optionally, the --with-zlib-dir[=DIR] is used to set the path to the libz install prefix.

    $ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

SSL support is enabled using the appropriate `Pdo\Mysql::ATTR_SSL_*`, which is equivalent to calling the » MySQL C API function mysql_ssl_set(). Also, SSL cannot be enabled with PDO::setAttribute() because the connection already exists. See also the MySQL documentation about » connecting to MySQL with SSL.

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO::MYSQL_ATTR_USE_BUFFERED_QUERY` (bool)
  Öntanımlı olarak tüm deyimler tamponlu kipte yürütülür. Bir PDO nesnesi üzerinde bu özniteliğe `false` atanırsa MySQL sürücüsü tamponlu kipi kullanır.

  Örnek 1 - MySQL sürücüsünde tamponlu kipi zorlamak

      <?php
      $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_password');
      $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

      $unbufferedResult = $pdo->query("SELECT Name FROM City");
      foreach ($unbufferedResult as $row) {
          echo $row['Name'] . PHP_EOL;
      }
      ?>

`PDO::MYSQL_ATTR_LOCAL_INFILE` (int)

  `LOAD LOCAL INFILE` etkin olur.

  Bu sabitin, yeni bir veritabanı tanıtıcısı oluştururken yalnızca `driver_options` dizisinde kullanılabileceğini unutmayın.

`PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY` (string)

  LOCAL DATA yüklemesinin bu belirlenmiş dizinde bulunan dosyalarla sınırlanmasına izin verir. PHP 8.1.0 ve sonrasında kullanılabilir.

  Bu sabitin, yeni bir veritabanı tanıtıcısı oluştururken yalnızca `driver_options` dizisinde kullanılabileceğini unutmayın.

`PDO::MYSQL_ATTR_INIT_COMMAND` (string)

  MySQL sunucusuna bağlanırken çalıştırılacak komut. Yeniden bağlantı sırasında otomatik olarak bu komut çalıştırılır.

  Bu sabitin, yeni bir veritabanı tanıtıcısı oluştururken yalnızca `driver_options` dizisinde kullanılabileceğini unutmayın.

`PDO::MYSQL_ATTR_READ_DEFAULT_FILE` (int)

  Seçenekler my.cnf yerine burada belirtilen dosyadan okunur. Bu seçenek, mysqlnd ile kullanılamaz, çünkü mysqlnd, mysql yapılandırma dosyalarını okumaz.

`PDO::MYSQL_ATTR_READ_DEFAULT_GROUP` (int)

  Seçenekler my.cnf dosyasında belirtilen gruptan veya `MYSQL_READ_DEFAULT_FILE` ile belirtilen dosyadan okunur. Bu seçenek, mysqlnd ile kullanılamaz, çünkü mysqlnd, mysql yapılandırma dosyalarını okumaz.

`PDO::MYSQL_ATTR_MAX_BUFFER_SIZE` (int)

  Azami tampon büyüklüğü; 1 MiB öntanımlıdır. Derleme mysqlnd'ye rağmen yapıldığında bu sabit desteklenmez.

`PDO::MYSQL_ATTR_DIRECT_QUERY` (int)

  Hazır deyimler kullanılmaz, sorgular doğrudan çalıştırılır.

`PDO::MYSQL_ATTR_FOUND_ROWS` (int)

  Değişen satırların değil, bulunan (eşleşen) satırların satısı döner.

`PDO::MYSQL_ATTR_IGNORE_SPACE` (int)

  İşlev isimlerinden sonra boşluklara izin verir. Tüm işlev isimlerini ayrılmış sözcük haline getirir.

`PDO::MYSQL_ATTR_COMPRESS` (int)

  Ağ iletişim sıkıştırmasını etkin kılar.

`PDO::MYSQL_ATTR_SSL_CA` (int)

  SSL sertifika yetkilisinin dosya yolu.

`PDO::MYSQL_ATTR_SSL_CAPATH` (int)

  PEM biçiminde saklanan güvenilir SSL CA sertifikalarını içeren dizinin dosya yolu.

`PDO::MYSQL_ATTR_SSL_CERT` (int)

  SSL sertifikasının dosya yolu.

`PDO::MYSQL_ATTR_SSL_CIPHER` (int)

  OpenSSL tarafından anlaşılan biçemde, SSL şifrelemesi için kullanılmasına izin verilen bir veya daha fazla şifrenin listesi. Örnek: `DHE-RSA-AES256-SHA:AES128-SHA`

`PDO::MYSQL_ATTR_SSL_KEY` (int)

  SSL anahtarının dosya yolu.

`PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT` (int)

  Sunucu SSL sertifikasının doğrulanmasını devre dışı bırakmanın bir yolunu sağlar. Bu seçenek yalnızca mysqlnd ile kullanılabilir.

  Mevcut olduğu PHP sürümleri: 7.0.18 ve PHP 7.1.4.

`PDO::MYSQL_ATTR_MULTI_STATEMENTS` (int)

  `false` olarak ayarlandığında hem PDO::prepare() hem de PDO::query() işlevinde çoklu sorgu yürütmesini devre dışı bırakır.

  Bu sabitin, yeni bir veritabanı tanıtıcısı oluştururken yalnızca `driver_options` dizisinde kullanılabileceğini unutmayın.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PDO_MYSQL Configuration Options
İsim | Öntanımlı | Değişlik Yeri
--- | --- | ---
pdo_mysql.default_socket | "/tmp/mysql.sock" | `INI_SYSTEM`
pdo_mysql.debug | NULL | `INI_SYSTEM`

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`pdo_mysql.default_socket` string

  Sets a Unix domain socket. This value can either be set at compile time if a domain socket is found at configure. This ini setting is Unix only.

`pdo_mysql.debug` bool

  Enables debugging for PDO_MYSQL. This setting is only available when PDO_MYSQL is compiled against mysqlnd and in PDO debug mode.

# PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSN — MySQL veritabanı bağlantısı

### Açıklama

PDO_MYSQL Veri Kaynağı Adı (DSN) şu öğelerden oluşur:

DSN öneki

  DSN öneki `mysql:` dizgesidir.

`host`

  Veritabanı sunucusunu barındıran konağın ismi.

`port`

  Veritabanı sunucusunun dinlediği portun numarası.

`dbname`

  Veritabanının ismi.

`unix_socket`

  MySQL Unix soketi (`host` veya `port` ile kullanılmamalıdır).

`charset`

  Karakter kümesi. Daha ayrıntılı bilgi karakter kümesi kavramları belgelerinde bulunabilir.

### Örnekler

Örnek 1 - PDO_MYSQL DSN örnekleri

Aşağıdaki örnekte MySQL veritabanlarına bağlanmak için PDO_MYSQL DSN kullanımı gösterilmiştir:

    mysql:host=localhost;dbname=testdb

Daha ayrıntılı bir örnek:

    mysql:host=localhost;port=3307;dbname=testdb
    mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

### Notlar

> Bilginize: Unix'e özel:

> Bilgisayar adı `"localhost"` olarak ayarlandığında, sunucuya bağlantı Unix soketi aracılığıyla yapılır. PDO_MYSQL libmysqlclient kullanmak üzere derlenirse, soket dosyasının konumu libmysqlclient'in derlendiği konumdur. PDO_MYSQL mysqlnd kullanmak üzere derlenirse, pdo_mysql.default_socket ini yönergesi aracılığıyla öntanımlı soket ayarlanabilir.

## İçindekiler

- PDO_MYSQL DSN — MySQL veritabanı bağlantısı

# Microsoft SQL Server PDO Driver (PDO_SQLSRV)

## Giriş

PDO_SQLSRV is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to MS SQL Server (starting with SQL Server 2005) and SQL Azure databases.

## Kurulum

The most recent version of the driver is available for download here: » SQLSRV download. The driver sources are hosted in a » public repository.

For more information about system requirements, see » SQLSRV System Requirements.

On Windows the PDO_SQLSRV extension is enabled by downloading and adding appropriate DLL files to the PHP extension directory and the corresponding entry to the php.ini file.

On Linux and macOS, the PDO_SQLSRV extension can be installed using » PECL. See the » installation tutorial for details.

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO::SQLSRV_TXN_READ_UNCOMMITTED` (int)
  This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Uncommitted.
`PDO::SQLSRV_TXN_READ_COMMITTED` (int)
  This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Committed.
`PDO::SQLSRV_TXN_REPEATABLE_READ` (int)
  This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Repeateable Read.
`PDO::SQLSRV_TXN_SNAPSHOT` (int)
  This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Snapshot.
`PDO::SQLSRV_TXN_SERIALIZABLE` (int)
  This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Serializable.
`PDO::SQLSRV_ENCODING_BINARY` (int)
  Specifies that data is sent/retrieved as a raw byte stream to/from the server without performing encoding or translation. This constant can be passed to PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
`PDO::SQLSRV_ENCODING_SYSTEM` (int)
  Specifies that data is sent/retrieved to/from the server as 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
`PDO::SQLSRV_ENCODING_UTF8` (int)
  Specifies that data is sent/retrieved to/from the server in UTF-8 encoding. This is the default encoding. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
`PDO::SQLSRV_ENCODING_DEFAULT` (int)
  Specifies that data is sent/retrieved to/from the server according to PDO::SQLSRV_ENCODING_SYSTEM if specified during connection. The connection's encoding is used if specified in a prepare statement. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
`PDO::SQLSRV_ATTR_QUERY_TIMEOUT` (int)
  A non-negative integer representing the timeout period, in seconds. Zero (0) is the default and means no timeout. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, and PDO::prepare.
`PDO::SQLSRV_ATTR_DIRECT_QUERY` (int)
  Indicates that a query should be executed directly, without being prepared. This constant can be passed to PDO::setAttribute, and PDO::prepare. For more information, see » Direct and Prepared Statement Execution.

# PDO_SQLSRV DSN

(PECL pdo_sqlsrv >= 2.0.1)

PDO_SQLSRV DSN — Connecting to MS SQL Server and SQL Azure databases

### Açıklama

The PDO_SQLSRV Data Source Name (DSN) is composed of the following elements:

DSN prefix

  The DSN prefix is `sqlsrv:`.

`APP`
  The application name used in tracing.
`ConnectionPooling`
  Specifies whether the connection is assigned from a connection pool (1 or `true`) or not (0 or `false`).
`Database`
  The name of the database.
`Encrypt`
  Specifies whether the communication with SQL Server is encrypted (1 or `true`) or unencrypted (0 or `false`).
`Failover_Partner`
  Specifies the server and instance of the database's mirror (if enabled and configured) to use when the primary server is unavailable.
`LoginTimeout`
  Specifies the number of seconds to wait before failing the connection attempt.
`MultipleActiveResultSets`
  Disables or explicitly enables support for multiple active Result sets (MARS).
`QuotedId`
  Specifies whether to use SQL-92 rules for quoted identifiers (1 or `true`) or to use legacy Transact-SQL rules (0 or `false`).
`Server`
  The name of the database server.
`TraceFile`
  Specifies the path for the file used for trace data.
`TraceOn`
  Specifies whether ODBC tracing is enabled (1 or `true`) or disabled (0 or `false`) for the connection being established.
`TransactionIsolation`
  Specifies the transaction isolation level. The accepted values for this option are PDO::SQLSRV_TXN_READ_UNCOMMITTED, PDO::SQLSRV_TXN_READ_COMMITTED, PDO::SQLSRV_TXN_REPEATABLE_READ, PDO::SQLSRV_TXN_SNAPSHOT, and PDO::SQLSRV_TXN_SERIALIZABLE.
`TrustServerCertificate`
  Specifies whether the client should trust (1 or `true`) or reject (0 or `false`) a self-signed server certificate.
`WSID`
  Specifies the name of the computer for tracing.

### Örnekler

Örnek 1 PDO_SQLSRV DSN examples

The following example shows how to connect to a specified MS SQL Server database:

    $c = new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");

The following example shows how to connect to a MS SQL Server database on a specified port:

    $c = new PDO("sqlsrv:Server=localhost,1521;Database=testdb", "UserName", "Password");

The following example shows how to connect to a SQL Azure database with server ID 12345abcde. Note that when you connect to SQL Azure with PDO, your username will be UserName@12345abcde (UserName@ServerId).

    $c = new PDO("sqlsrv:Server=12345abcde.database.windows.net;Database=testdb", "UserName@12345abcde", "Password");

## İçindekiler

- PDO_SQLSRV DSN — Connecting to MS SQL Server and SQL Azure databases

# Oracle (PDO_OCI) İşlevleri

## Kurulum

If the Oracle Database is on the same machine as PHP, the database software already contains the necessary libraries. When PHP is on a different machine, use the free » Oracle Instant Client libraries. For details refer to the OCI8 Requirements section.

## PHP 8.4

itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.8.4.0

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/PDO_OCI.

## PHP < 8.4

Use --with-pdo-oci[=DIR] to install the PDO Oracle OCI extension, where the optional `[=DIR]` is the Oracle Home directory. `[=DIR]` defaults to the $ORACLE_HOME environment variable.

Use --with-pdo-oci=instantclient,prefix,version for an Oracle Instant Client SDK, where prefix and version are configured.

    // Using $ORACLE_HOME
    $ ./configure --with-pdo-oci

    // Using OIC for Linux with 10.2.0.3 RPMs with a /usr prefix
    $ ./configure --with-pdo-oci=instantclient,/usr,10.2.0.3

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO::OCI_ATTR_ACTION` (int)

  Provides a way to specify the action on the database session.

  Mevcut olduğu PHP sürümleri: 7.2.16 and 7.3.3

`PDO::OCI_ATTR_CLIENT_INFO` (int)

  Provides a way to specify the client info on the database session.

  Mevcut olduğu PHP sürümleri: 7.2.16 and 7.3.3

`PDO::OCI_ATTR_CLIENT_IDENTIFIER` (int)

  Provides a way to specify the client identifier on the database session.

  Mevcut olduğu PHP sürümleri: 7.2.16 and 7.3.3

`PDO::OCI_ATTR_MODULE` (int)

  Provides a way to specify the module on the database session.

  Mevcut olduğu PHP sürümleri: 7.2.16 and 7.3.3

# PDO_OCI DSN

(PECL PDO_OCI >= 0.1.0)

PDO_OCI DSN — Oracle veritabanlarına bağlantı

### Açıklama

PDO_OCI Veri Kaynağı Adı (DSN) şu öğelerden oluşur:

DSN öneki

  DSN öneki `oci:` dizgesidir.

`dbname` (Oracle Instant Client)

  Oracle Instant Client bağlantı adresi şu sözdizimini kullanır: `dbname=//konakadı:portnum /veritabanı`. tnsnames.ora içinde tanımlı bir veritabanına bağlanırken sadece veritabanının ismini kullanabilirsiniz: `dbname=veritabanı`.

`charset`

  Geçerli ortam için istemci tarafı karakter kümesi.

### Örnekler

Örnek 1 - PDO_OCI DSN örnekleri

Aşağıdaki örneklerde, Oracle veritabanlarına bağlanmak için PDO_OCI DSN'si kullanımları gösterilmiştir.

    // tnsnames.ora içinde tanımlı bir veritabanına bağlanalım
    oci:dbname=mydb

    // Oracle Instant Client kullanarak bağlanalım
    oci:dbname=//localhost:1521/mydb

## İçindekiler

- PDO_OCI DSN — Oracle veritabanlarına bağlantı

# ODBC ve DB2 (PDO_ODBC) İşlevleri

## Giriş

PDO_ODBC, PHP Veri Nesneleri Arayüzünün (PDO) veritabanlarına ODBC sürücüleri üzerinden veya IBM DB2 Çağrı Seviyesi Arayüzü (DB2 CLI) kütüphanesi üzerinden erişimi mümkün kılmak için gerçeklenmiş bir sürücüdür. PDO_ODBC şimdilik üç farklı lezzette veritabanı sürücüsünü desteklemektedir:

ibm-db2

  IBM DB2 Evrensel Veritabanına, Cloudscape ve Apache Derby sunucularına özgür DB2 Express-C istemcisi üzerinden erişimi destekler.

unixODBC

  Veritabanı sunucularına unixODBC sürücüsü yöneticisi ve veritabanının kendi ODBC sürücüleri üzerinden erişimi destekler.

soysal

  PDO_ODBC tarafından açıkça desteklenmemiş ODBC sürücüsü yöneticileri için bir derleme seçeneği sağlar.

Windows'ta, php_pdo_odbc.dll php.ini içinde bir eklenti olarak etkinleştirilmelidir. Windows ODBC Sürücüsü Yöneticisi ile ilintili olduğundan PHP, Sistem DSN üzerinden kataloglanan veritabanlarına erişebilir.

## Kurulum

UNIX sistemlerinde PDO_ODBC

1. PDO_ODBC, PHP kaynak paketiyle gelmektedir. PDO_ODBC eklentisini statik veya paylaşımlı bir modül olarak derlemek için kullanacağınız configure komutları:

   ibm_db2

         ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/

     PDO_ODBC eklentisini ibm-db2 desteğiyle derlemek için DB2 uygulama geliştirme başlık dosyalarını, PDO_ODBC'yi derlediğiniz makineye kurmuş olmalısınız. DB2 uygulama geliştirme başlık dosyaları DB2 sunucularında kurulabilir bir seçenek olup ayrıca, DB2 Uygulama geliştirme istemcisinin bir parçası olarak » IBM developerWorks sitesinden özgürce indirilebilmektedir.

     configure komutuna DB2 kütüphaneleri ve başlıkları için bir konum belirtmezseniz /home/db2inst1/sqllib dizini öntanımlıdır.

   unixODBC

         ./configure --with-pdo-odbc=unixODBC,/usr/local

     configure komutuna unixODBC kütüphaneleri ve başlıkları için bir konum belirtmezseniz /usr/local dizini öntanımlıdır.
   soysal

         ./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO_ODBC_TYPE` (string)
  Describes the ODBC library linked against the PDO_ODBC extension. Possible values include `unixODBC`, `iODBC`, or `generic`.

Uyarı

The constants listed below have been DEPRECATED as of PHP 8.5.0. Use the corresponding Pdo\Odbc constants instead.

`PDO::ODBC_ATTR_USE_CURSOR_LIBRARY` (int)
  Takma Adı: `Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY`.
`PDO::ODBC_SQL_USE_IF_NEEDED` (int)
  Takma Adı: `Pdo\Odbc::SQL_USE_IF_NEEDED`.
`PDO::ODBC_SQL_USE_DRIVER` (int)
  Takma Adı: `Pdo\Odbc::SQL_USE_DRIVER`.
`PDO::ODBC_SQL_USE_ODBC` (int)
  Takma Adı: `Pdo\Odbc::SQL_USE_ODBC`.
`PDO::ODBC_ATTR_ASSUME_UTF8` (bool)
  Takma Adı: `Pdo\Odbc::ATTR_ASSUME_UTF8`.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PDO_ODBC Yapılandırma Yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
pdo_odbc.connection_pooling | "strict" | `INI_ALL` |
pdo_odbc.db2_instance_name | NULL | `INI_SYSTEM` | Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`pdo_odbc.connection_pooling` string

  ODBC bağlantılarının havuzlanıp havuzlanmayacağı. Şu değerlerden biri belirtilebilir: `"strict"` (katı), `"relaxed"` (esnek), `"off"` (kapalı; `""` ile aynı). Değer, bağlantı yöneticisinin bağlantı bağımsız değişkenlerini mevcut havuzlu bağlantılarla nasıl eşleştireceğini belirler. `strict` önerilen öntanımlı değer olup, önbellekli bağlantıların sadece tüm bağlantı bağımsız değişkenleri eşleştiğinde kullanılacağı anlamına gelir. `relaxed` ise benzer bağlantı bağımsız değişkenlerine sahip bağlantıların kullanılabileceğini belirtir. Bunun olumsuz tarafı, örneğin sanal konaklar arasında bağlantı bilgisi kaçağı riski nedeniyle önbellek kullanımında bir artışla sonuçlanabilmesidir.

  Bu ayar sadece php.ini dosyasında değiştirilebilir ve tüm süreci etkiler; ayrıca, aynı ODBC kütüphanelerini kullanan süreçlere yüklü diğer modüller de (Tektip ODBC eklentisi dahil) etkilenir.

  Uyarı

  `relaxed` eşleştirmesi güvenlik sebebiyle bir paylaşımlı sunucuda kullanılmamalıdır.

  İpucu

  Bu ayarı değiştirmek için iyi bir sebebiniz yoksa öntanımlı `strict` ayarına dokunmamanız önerilir.

`pdo_odbc.db2_instance_name` string

  PDO_ODBC eklentisini `db2` desteğiyle kullanıyorsanız, Linux ve UNIX işletim sistemlerinde DB2INSTANCE ortam değişkenine DB2 örneğinin burada belirtilen ismini atar. Böylece, PDO_ODBC eklentisinin DB2 veritabanlarına kataloglu bağlantılar kurması ve DB2 kütüphanelerinin yerlerini bulması sağlanmış olur.

  Bu ayar sadece php.ini dosyasında değiştirilebilir ve tüm süreci etkiler; ayrıca, aynı ODBC kütüphanelerini kullanan süreçlere yüklü diğer modüller de (Tektip ODBC eklentisi dahil) etkilenir.

  Bu ayarın Windows üzerinde bir etkisi yoktur.

# PDO_ODBC DSN

(PECL PDO_ODBC >= 0.1.0)

PDO_ODBC DSN — ODBC veya DB2 veritabanlarına bağlantı

### Açıklama

PDO_ODBC Veri Kaynağı Adı (DSN) şu öğelerden oluşur:

DSN öneki

  DSN öneki `odbc:` dizgesidir. DB2 kataloğunda veya ODBC sürücüsü yöneticisinde kataloglanmış bir veritabanına erişirken veritabanının kataloglanmış ismini DSN'ye ekleyebilirsiniz.

DSN

  DB2 kataloğunda veya ODBC sürücüsü yöneticisinde kataloglanmış veritabanının ismi. Ayrıca, » http://www.connectionstrings.com/ adresinde açıklandığı gibi bir veritabanına bağlanmak için tam bir ODBC bağlantı dizgesi de belirtebilirsiniz.

`UID`

  Bağlantı için kullanıcı ismi. DSN'de bir kullanıcı ismi belirtirseniz PDO, kurucudaki kullanıcı adı bağımsız değişkenini yok sayar.

`PWD`

  Bağlantı için kullanıcı parolası. DSN'de bir kullanıcı ismi belirtirseniz PDO, kurucudaki kullanıcı adı bağımsız değişkenini yok sayar.

### Örnekler

Örnek 1 - PDO_ODBC DSN örneği (ODBC sürücüsünün yöneticisi)

Aşağıdaki örnekte, ODBC sürücüsünün yöneticisinde testdb olarak kataloglanmış bir ODBC veritabanına bağlantı için kullanılan bir PDO_ODBC DSN'si gösterilmiştir.

    odbc:testdb

Örnek 2 - PDO_ODBC DSN örneği (IBM DB2 katalogsuz bağlantısı)

Aşağıdaki örnekte, tam ODBC DSN sözdizimi kullanılarak `SAMPLE` adında bir IBM DB2 veritabanına erişim için kullanılan bir PDO_ODBC DSN'si gösterilmiştir.

    odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;
    DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;

Örnek 3 - PDO_ODBC DSN örneği (Microsoft Access katalogsuz bağlantısı)

Aşağıdaki örnekte, tam ODBC DSN sözdizimi kullanılarak `C:\db.mdb` dosyasında saklanan bir Microsoft Access veritabanına erişim için kullanılan bir PDO_ODBC DSN'si gösterilmiştir.

    odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin

## İçindekiler

- PDO_ODBC DSN — ODBC veya DB2 veritabanlarına bağlantı

# PostgreSQL (PDO_PGSQL) İşlevleri

## Giriş

PDO_PGSQL, PHP Veri Nesneleri Arayüzünün (PDO) PostgreSQL veritabanlarına PHP'den erişimi mümkün kılmak için gerçeklenmiş bir sürücüdür.

## Özkaynak Türleri

Bu eklentinin PDO::pgsqlLOBOpen() tarafından döndürülen bir akım özkaynağı vardır.

## Kurulum

Use --with-pdo-pgsql[=DIR] to install the PDO PostgreSQL extension, where the optional `[=DIR]` is the PostgreSQL base install directory, or the path to pg_config.

    $ ./configure --with-pdo-pgsql

## Öntanımlı Sabitler

Bu sabitler bu sürücü tarafından tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir. Ek olarak, bu sürücüye özgü sabitler sadece bu sürücü kullanılıyorsa kullanılmalıdır. Sürücüye özgü özniteliklerin postgres sürücüsü ile kullanılması beklenmedik davranışlara yol açabilir. Eğer kodunuz çok sayıda sürücüye karşı çalışıyorsa sürücüyü sınayacak `PDO::ATTR_DRIVER_NAME` özniteliğini sağlamak için PDO::getAttribute() kullanılabilir.

`PDO::PGSQL_ATTR_DISABLE_PREPARES` (int)
  Takma Adı: `Pdo\Pgsql::ATTR_DISABLE_PREPARES`. As of PHP 8.5.0, this constant is deprecated.
`PDO::PGSQL_TRANSACTION_IDLE` (int)
  Equivalent to `Pdo\Pgsql::TRANSACTION_IDLE`. As of PHP 8.5.0, this constant is deprecated, as it has no effect.
`PDO::PGSQL_TRANSACTION_ACTIVE` (int)
  Equivalent to `Pdo\Pgsql::TRANSACTION_ACTIVE`. As of PHP 8.5.0, this constant is deprecated, as it has no effect.
`PDO::PGSQL_TRANSACTION_INTRANS` (int)
  Equivalent to `Pdo\Pgsql::TRANSACTION_INTRANS`. As of PHP 8.5.0, this constant is deprecated, as it has no effect.
`PDO::PGSQL_TRANSACTION_INERROR` (int)
  Equivalent to `Pdo\Pgsql::TRANSACTION_INERROR`. As of PHP 8.5.0, this constant is deprecated, as it has no effect.
`PDO::PGSQL_TRANSACTION_UNKNOWN` (int)
  Equivalent to `Pdo\Pgsql::TRANSACTION_UNKNOWN`. As of PHP 8.5.0, this constant is deprecated, as it has no effect.

## Genel bilgiler

> Bilginize:

> `bytea` alanları akım olarak döndürülür.

# PDO_PGSQL DSN

(PHP 5 >= 5.1.0, PHP 7, PECL PDO_PGSQL >= 0.1.0)

PDO_PGSQL DSN — PostgreSQL veritabanı bağlantısı

### Açıklama

Veri Kaynağı Adı (DSN) birbirlerinden boşluklarla veya noktalı virgüllerle ayrılmış şu öğelerden oluşur:

DSN öneki

  DSN öneki `pgsql:` dizgesidir.

`host`

  Veritabanı sunucusunu barındıran konağın ismi.

`port`

  Veritabanı sunucusunun çalıştığı port.

`dbname`

  Veritabanının ismi.

`user`

  Bağlantı için kullanıcı ismi. DSN'de bir kullanıcı ismi belirtirseniz PDO, kurucudaki kullanıcı adı bağımsız değişkenini yok sayar.

`password`

  Bağlantı için kullanıcı parolası. DSN'de bir kullanıcı parolası belirtirseniz PDO, kurucudaki kullanıcı parolası bağımsız değişkenini yok sayar.

`sslmode`

  SSL kipi. Desteklenen değerler ve anlamları » PostgreSQL Belgelerinde bulunabilir.

> Bilginize: DSN dizgesindeki tüm noktalı virgüllerin yerine boşluk karakteri konur, çünkü PostgreSQL bu biçimi kabul eder. Bu, desteklenmeyen (`password` veya `dbname` gibi) bileşenlerin içindeki tüm noktalı virgüllere uygulanır.

### Örnekler

Örnek 1 - PDO_PGSQL DSN örneği

Aşağıdaki örnekte bir PostgreSQL veritabanına bağlanmak için PDO_PGSQL DSN kullanımı gösterilmiştir:

    pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass

Aşağıdaki örnek, unix soketi /tmp/.s.PGSQL.5432 yoluyla bir PostgreSQL veritabanına bağlanmak için bir PDO_PGSQL DSN'sini göstermektedir.:

    pgsql:host=/tmp;port=5432;dbname=testdb;user=bruce;password=mypass

# PDO::pgsqlCopyFromArray

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

PDO::pgsqlCopyFromArray — Takma Adı: Pdo\Pgsql::copyFromArray()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlCopyFromArray(
string `$tableName`,
array|Traversable `$rows`,
string `$separator` = "\t",
string `$nullAs` = "\\\\N",
?string `$fields` = null
): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::copyFromArray().

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | The `rows` parameter now also accepts a Traversable; previously only an array was accepted.

# PDO::pgsqlCopyFromFile

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

PDO::pgsqlCopyFromFile — Takma Adı: Pdo\Pgsql::copyFromFile()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlCopyFromFile(
string `$tableName`,
string `$filename`,
string `$separator` = "\t",
string `$nullAs` = "\\\\N",
?string `$fields` = null
): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::copyFromFile().

# PDO::pgsqlCopyToArray

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

PDO::pgsqlCopyToArray — Takma Adı: Pdo\Pgsql::copyToArray()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlCopyToArray(
string `$tableName`,
string `$separator` = "\t",
string `$nullAs` = "\\\\N",
?string `$fields` = null
): array|false

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::copyToArray().

# PDO::pgsqlCopyToFile

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

PDO::pgsqlCopyToFile — Takma Adı: Pdo\Pgsql::copyToFile()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlCopyToFile(
string `$tableName`,
string `$filename`,
string `$separator` = "\t",
string `$nullAs` = "\\\\N",
?string `$fields` = null
): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::copyToFile().

# PDO::pgsqlGetNotify

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

PDO::pgsqlGetNotify — Takma Adı: Pdo\Pgsql::getNotify()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlGetNotify(int `$fetchMode` = PDO::FETCH_DEFAULT, int `$timeoutMilliseconds` = 0): array|false

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::getNotify().

# PDO::pgsqlGetPid

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

PDO::pgsqlGetPid — Takma Adı: Pdo\Pgsql::getPid()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlGetPid(): int

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::getPid().

# PDO::pgsqlLOBCreate

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBCreate — Takma Adı: Pdo\Pgsql::lobCreate()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlLOBCreate(): string

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::lobCreate().

# PDO::pgsqlLOBOpen

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBOpen — Takma Adı: Pdo\Pgsql::lobOpen()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlLOBOpen(string `$oid`, string `$mode` = "rb"): resource|false

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::lobOpen().

# PDO::pgsqlLOBUnlink

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBUnlink — Takma Adı: Pdo\Pgsql::lobUnlink()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function PDO::pgsqlLOBUnlink(string `$oid`): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Pgsql::lobUnlink().

## İçindekiler

- PDO_PGSQL DSN — PostgreSQL veritabanı bağlantısı
- PDO::pgsqlCopyFromArray — Takma Adı: Pdo\Pgsql::copyFromArray
- PDO::pgsqlCopyFromFile — Takma Adı: Pdo\Pgsql::copyFromFile
- PDO::pgsqlCopyToArray — Takma Adı: Pdo\Pgsql::copyToArray
- PDO::pgsqlCopyToFile — Takma Adı: Pdo\Pgsql::copyToFile
- PDO::pgsqlGetNotify — Takma Adı: Pdo\Pgsql::getNotify
- PDO::pgsqlGetPid — Takma Adı: Pdo\Pgsql::getPid
- PDO::pgsqlLOBCreate — Takma Adı: Pdo\Pgsql::lobCreate
- PDO::pgsqlLOBOpen — Takma Adı: Pdo\Pgsql::lobOpen
- PDO::pgsqlLOBUnlink — Takma Adı: Pdo\Pgsql::lobUnlink

# SQLite (PDO_SQLITE) İşlevleri

## Giriş

PDO_SQLITE, PHP Veri Nesneleri Arayüzünün (PDO) SQLite 3 veritabanlarına erişimini mümkün kılmak için gerçeklenmiş bir sürücüdür.

> Bilginize:

> PDO_SQLITE dizgelerin akımlardan ayrı olarak `PDO::PARAM_LOB` ile birlikte kullanımını mümkün kılar.

## Kurulum

The PDO_SQLITE PDO driver is enabled by default. To disable, --without-pdo-sqlite[=DIR] may be used, where the optional `[=DIR]` is the sqlite base install directory. As of PHP 7.4.0 » libsqlite ≥ 3.5.0 is required. Formerly, the bundled libsqlite could have been used instead, and was the default, if `[=DIR]` has been omitted.

> Bilginize: Additional setup on Windows as of PHP 7.4.0

> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: libsqlite3.dll.

# PDO_SQLITE DSN

(PHP 5 >= 5.1.0, PHP 7, PECL PDO_SQLITE >= 0.2.0)

PDO_SQLITE DSN — SQLite veritabanı bağlantısı

### Açıklama

PDO_SQLITE Veri Kaynağı Adı (DSN) şu öğelerden oluşur:

DSN öneki (SQLite 3)

  DSN öneki `sqlite:` dizesidir.

  - Disk üzerindeki bir veritabanına erişmek için DSN önekinin ardına eklenecek mutlak dosya yolu.

  - Bellekte bir veritabanı oluşturmak için DSN önekinin ardına eklenecek `:memory:` dizesi.

  - DSN sadece DSN önekinden oluşuyorsa, bağlantı kapandığı sırada silinen geçici bir veritabanı kullanılmıştır.

### Örnekler

Örnek 1 - PDO_SQLITE DSN örnekleri

Aşağıdaki örneklerde SQLite veritabanlarına bağlanmak için PDO_SQLITE DSN kullanımları gösterilmiştir:

    sqlite:/opt/databases/mydb.sq3
    sqlite::memory:
    sqlite:

# PDO::sqliteCreateAggregate

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateAggregate — Takma Adı: Pdo\Sqlite::createAggregate()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

public function PDO::sqliteCreateAggregate(
string `$name`,
callable `$step`,
callable `$finalize`,
int `$numArgs` = -1
): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Sqlite::createAggregate().

# PDO::sqliteCreateCollation

(PHP 5 >= 5.3.11, PHP 7, PHP 8)

PDO::sqliteCreateCollation — Takma Adı: Pdo\Sqlite::createCollation()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

public function PDO::sqliteCreateCollation(string `$name`, callable `$callback`): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Sqlite::createCollation().

# PDO::sqliteCreateFunction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateFunction — Takma Adı: Pdo\Sqlite::createFunction()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

public function PDO::sqliteCreateFunction(
string `$function_name`,
callable `$callback`,
int `$num_args` = -1,
int `$flags` = 0
): bool

Bu yöntem şu yöntemin takma adıdır: Pdo\Sqlite::createFunction().

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.4 | The `flags` parameter has been added.

## İçindekiler

- PDO_SQLITE DSN — SQLite veritabanı bağlantısı
- PDO::sqliteCreateAggregate — Takma Adı: Pdo\Sqlite::createAggregate
- PDO::sqliteCreateCollation — Takma Adı: Pdo\Sqlite::createCollation
- PDO::sqliteCreateFunction — Takma Adı: Pdo\Sqlite::createFunction

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Bağlantılar ve Bağlantı Yönetimi
- Hareketler ve Ototeslim
- Hazır deyimler ve Saklı Yordamlar
- Hatalar ve Ele Alınışları
- Büyük Veri Nesneleri (LOB'lar)
- PDO — PDO sınıfı
  - PDO::beginTransaction — Bir toplu hareketi ilklendirir
  - PDO::commit — Bir toplu hareketi veritabanına gönderir
  - PDO::connect — Connect to a database and return a PDO subclass for drivers that support it
  - PDO::__construct — Bir veritabanı bağlantısını temsil eden bir PDO nesnesi oluşturur
  - PDO::errorCode — Veritabanındaki son işlemle ilgili SQLSTATE kodunu döndürür
  - PDO::errorInfo — Veritabanındaki son işlemle ilgili hata bilgisini döndürür
  - PDO::exec — Belirtilen SQL deyimini çalıştırır ve etkilenen satır sayısını döndürür
  - PDO::getAttribute — Bir veritabanı bağlantı özniteliğinin değerini döndürür
  - PDO::getAvailableDrivers — Kullanılabilen PDO sürücülerini içeren bir dizi döndürür
  - PDO::inTransaction — Checks if inside a transaction
  - PDO::lastInsertId — Son yerleştirilen satırın veya sıradaki değerin kimliğini döndürür
  - PDO::prepare — Çalıştırılmak üzere bir deyimi hazırlar ve bir deyim nesnesi olarak döndürür
  - PDO::query — Bir SQL deyimini yer tutucular olmaksızın hazırlar ve çalıştırır
  - PDO::quote — Bir sorguda kullanılmak üzere bir dizgeyi önceler
  - PDO::rollBack — Bir toplu hareketi geri alır
  - PDO::setAttribute — Bir öznitelik tanımlar
- PDOStatement — PDOStatement sınıfı
  - PDOStatement::bindColumn — Bir sütunu bir PHP değişkeni ile ilişkilendirir
  - PDOStatement::bindParam — Bir bağımsız değişkeni belirtilen değişkenle ilişkilendirir
  - PDOStatement::bindValue — Bir değeri bir bağımsız değişken ile ilişkilendirir
  - PDOStatement::closeCursor — Göstericiyi kapatarak deyimin tekrar çalıştırılabilmesini sağlar
  - PDOStatement::columnCount — Sonuç kümesindeki sütun sayısını döndürür
  - PDOStatement::debugDumpParams — Bir SQL hazır komutunu dökümler
  - PDOStatement::errorCode — Deyim üzerindeki son işlemle ilgili SQLSTATE hata kodunu döndürür
  - PDOStatement::errorInfo — Deyim üzerindeki son işlemle ilgili hata bilgisini döndürür
  - PDOStatement::execute — Bir hazır deyimi çalıştırır
  - PDOStatement::fetch — Sonuç kümesindeki sonraki satırı döndürür
  - PDOStatement::fetchAll — Sonuç kümesinde kalan satırları döndürür
  - PDOStatement::fetchColumn — Sonuç kümesindeki sonraki satırdan tek bir sütun döndürür
  - PDOStatement::fetchObject — Sonraki satırı alır ve bir nesne olarak döndürür
  - PDOStatement::getAttribute — Bir deyim özniteliğini döndürür
  - PDOStatement::getColumnMeta — Sonuç kümesindeki bir sütunla ilgili temel veriyi döndürür
  - PDOStatement::getIterator — Gets result set iterator
  - PDOStatement::nextRowset — Çok satır kümeli bir sonuçtaki sonraki satır kümesini geçerli satır kümesi yapar
  - PDOStatement::rowCount — Son SQL deyiminden etkilenen satır sayısını döndürür
  - PDOStatement::setAttribute — Bir deyim özniteliğini tanımlar
  - PDOStatement::setFetchMode — Deyim için öntanımlı veri alım kipini belirler
- PDORow — The PDORow class
- PDOException — PDOException sınıfı
- PDO Sürücüleri
  - CUBRID PDO Driver — CUBRID PDO Driver (PDO_CUBRID)
  - MS SQL Sunucusu (PDO) — Microsoft SQL Sunucusu ve Sybase (PDO_DBLIB) İşlevleri
  - Firebird (PDO) — Firebird İşlevleri (PDO_FIREBIRD)
  - IBM (PDO) — IBM (PDO_IBM) İşlevleri
  - Informix (PDO) — Informix (PDO_INFORMIX) İşlevleri
  - MySQL (PDO) — MySQL (PDO_MYSQL) İşlevleri
  - MS SQL Server PDO Driver — Microsoft SQL Server PDO Driver (PDO_SQLSRV)
  - Oracle (PDO) — Oracle (PDO_OCI) İşlevleri
  - ODBC ve DB2 (PDO) — ODBC ve DB2 (PDO_ODBC) İşlevleri
  - PostgreSQL (PDO) — PostgreSQL (PDO_PGSQL) İşlevleri
  - SQLite (PDO) — SQLite (PDO_SQLITE) İşlevleri

- DBA — Database (dbm-style) Abstraction Layer
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Dba\Connection — The Dba\Connection class
  - DBA İşlevleri
- ODBC — ODBC (Tekilleştirilmiş)
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - ODBC İşlevleri
- PDO — PHP Veri Nesneleri
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Bağlantılar ve Bağlantı Yönetimi
  - Hareketler ve Ototeslim
  - Hazır deyimler ve Saklı Yordamlar
  - Hatalar ve Ele Alınışları
  - Büyük Veri Nesneleri (LOB'lar)
  - PDO — PDO sınıfı
  - PDOStatement — PDOStatement sınıfı
  - PDORow — The PDORow class
  - PDOException — PDOException sınıfı
  - PDO Sürücüleri

# Sağlayıcıya Göre Veritabanı Eklentileri

# CUBRID

# Giriş

These functions allow you to access CUBRID database servers. More information about CUBRID can be found at » CUBRID.

Documentation for CUBRID can be found at » CUBRID Documentation.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

In order to have these functions available, you must install CUBRID, and compile CUBRID PHP Library with CUBRID support.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/cubrid.

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir.

For information about manual installation on Linux and Windows systems, please read the file build-guide.html included in the package.

## Çalışma Anı Yapılandırması

There is no runtime configuration now.

## Özkaynak Türleri

There are four resource types used in CUBRID. The first one is the link identifier for a database connection, the second is the resource which holds the result of a query, and the last two a resource which holds the query results of BLOB/CLOB data types.

## connection identifier

A connection identifier returned by cubrid_connect(), cubrid_connect_with_url(), cubrid_pconnect() and cubrid_pconnect_with_url().

## request identifier

A request identifier returned by cubrid_prepare() and cubrid_execute().

## LOB identifier

A LOB identifier returned by cubrid_lob_get().

## LOB2 identifier

A LOB identifier returned by cubrid_lob2_new() or get from the result set.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

The following constants can be used when executing SQL statement. They can be passed to cubrid_prepare() and cubrid_execute().

CUBRID SQL execution flags
Constant | Description
--- | ---
`CUBRID_INCLUDE_OID` | Determine whether to get OID during query execution.
`CUBRID_ASYNC` | Execute the query in asynchronous mode.
`CUBRID_EXEC_QUERY_ALL` | Execute the query in synchronous mode. This flag must be set when executing multiple SQL statements.

The following constants can be used when fetching the results to specify fetch behaviour. They can be passed to cubrid_fetch() and cubrid_fetch_array().

CUBRID fetch flags
Constant | Description
--- | ---
`CUBRID_NUM` | Get query result as a numeric array (0-default).
`CUBRID_ASSOC` | Get query result as an associative array.
`CUBRID_BOTH` | Get query result as both numeric and associative arrays (default value).
`CUBRID_OBJECT` | Get query result as an object.
`CUBRID_LOB` | The constant CUBRID_LOB can be used when you want to operate the lob object. It can be passed to cubrid_fetch(), cubrid_fetch_row(), cubrid_fetch_array(), cubrid_fetch_assoc() and cubrid_fetch_object().

The following constants can be used when positioning the cursor in query results. They can be passed to or returned by cubrid_move_cursor().

CUBRID cursor position flags
Constant | Description
--- | ---
`CUBRID_CURSOR_FIRST` | Move current cursor to the first position in the result.
`CUBRID_CURSOR_CURRENT` | Move current cursor as a default value if the origin is not specified.
`CUBRID_CURSOR_LAST` | Move current cursor to the last position in the result.
`CUBRID_CURSOR_SUCCESS` | Returned value of cubrid_move_cursor() function in case of success. This flag has been removed from 8.4.1.
`CUBRID_NO_MORE_DATA` | Returned value of cubrid_move_cursor() function in case of failure. This flag has been removed from 8.4.1.
`CUBRID_CURSOR_ERROR` | Returned value of cubrid_move_cursor() function in case of failure. This flag has been removed from 8.4.1.

The following constants can be used when setting the auto-commit mode for the database connection. They can be passed to cubrid_set_autocommit() or returned by cubrid_get_autocommit().

CUBRID auto-commit mode flags
Constant | Description
--- | ---
`CUBRID_AUTOCOMMIT_TRUE` | Enable the auto-commit mode.
`CUBRID_AUTOCOMMIT_FALSE` | Disable the auto-commit mode.

The following constants can be used when setting the database parameter. They can be passed to cubrid_set_db_parameter().

CUBRID parameter flags
Constant | Description
--- | ---
`CUBRID_PARAM_ISOLATION_LEVEL` | Transaction isolation level for the database connection.
`CUBRID_PARAM_LOCK_TIMEOUT` | Transaction timeout in seconds.

The following constants can be used when setting the transaction isolation level. They can be passed to cubrid_set_db_parameter() or returned by cubrid_get_db_parameter().

CUBRID isolation level flags
Constant | Description
--- | ---
`TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE` | The lowest isolation level (1). A dirty, non-repeatable or phantom read may occur for the tuple and a non-repeatable read may occur for the table as well.
`TRAN_COMMIT_CLASS_COMMIT_INSTANCE` | A relatively low isolation level (2). A dirty read does not occur, but non-repeatable or phantom read may occur.
`TRAN_REP_CLASS_UNCOMMIT_INSTANCE` | The default isolation of CUBRID (3). A dirty, non-repeatable or phantom read may occur for the tuple, but repeatable read is ensured for the table.
`TRAN_REP_CLASS_COMMIT_INSTANCE` | A relatively low isolation level (4). A dirty read does not occur, but non-repeatable or phantom read may.
`TRAN_REP_CLASS_REP_INSTANCE` | A relatively high isolation level (5). A dirty or non-repeatable read does not occur, but a phantom read may.
`TRAN_SERIALIZABLE` | The highest isolation level (6). Problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.

The following constants can be used when getting schema information. They can be passed to cubrid_schema().

CUBRID schema flags
Constant | Description
--- | ---
`CUBRID_SCH_CLASS` | Get name and type of table in CUBRID.
`CUBRID_SCH_VCLASS` | Get name and type of view in CUBRID.
`CUBRID_SCH_QUERY_SPEC` | Get the query definition of view.
`CUBRID_SCH_ATTRIBUTE` | Get the attributes of table column.
`CUBRID_SCH_CLASS_ATTRIBUTE` | Get the attributes of table.
`CUBRID_SCH_METHOD` | Get the instance method. The instance method is a method called by a class instance. It is used more often than the class method because most operations are executed in the instance.
`CUBRID_SCH_CLASS_METHOD` | Get the class method. The class method is a method called by a class object. It is usually used to create a new class instance or to initialize it. It is also used to access or update class attributes.
`CUBRID_SCH_METHOD_FILE` | Get the information of the file where the method of the table is defined.
`CUBRID_SCH_SUPERCLASS` | Get the name and type of table which table inherites attributes from.
`CUBRID_SCH_SUBCLASS` | Get the name and type of table which inherites attributes from this table.
`CUBRID_SCH_CONSTRAINT` | Get the table constraints.
`CUBRID_SCH_TRIGGER` | Get the table triggers.
`CUBRID_SCH_CLASS_PRIVILEGE` | Get the privilege information of table.
`CUBRID_SCH_ATTR_PRIVILEGE` | Get the privilege information of column.
`CUBRID_SCH_DIRECT_SUPER_CLASS` | Get the direct super table of table.
`CUBRID_SCH_PRIMARY_KEY` | Get the table primary key.
`CUBRID_SCH_IMPORTED_KEYS` | Get imported keys of table.
`CUBRID_SCH_EXPORTED_KEYS` | Get exported keys of table.
`CUBRID_SCH_CROSS_REFERENCE` | Get reference relationship of two tables.

The following constants can be used when reporting errors. They can be returned from cubrid_error_code_facility().

CUBRID error facility code
Constant | Description
--- | ---
`CUBRID_FACILITY_DBMS` | The error occurred in CUBRID dbms.
`CUBRID_FACILITY_CAS` | The error occurred in CUBRID broker cas.
`CUBRID_FACILITY_CCI` | The error occurred in CUBRID cci.
`CUBRID_FACILITY_CLIENT` | The error occurred in CUBRID PHP client.

# Örnekler

The following is a simple example that establishes a connection between PHP and CUBRID. This section will cover the most basic and notable features. The following code required to connect to CUBRID database, which means CUBRID Server and CUBRID Broker have to be running.

The example below uses the demodb database as an examples. By default it is created during the installation. Make sure it has been created.

Örnek 1 Example of Data Retrieval

    <html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=euc-kr">
        </head>
        <body>
        <center>
        <table border=2>
        <?php
            /**
             * Set server information for CUBRID connection. host_ip is the IP
             * address where the CUBRID Broker is installed (localhost in this
             * example), and host_port is the port number of the CUBRID Broker.
             * The port number is the default given during the installation.
             * For details, see "Administrator's Guide."
             */
            $host_ip = "localhost";
            $host_port = 33000;
            $db_name = "demodb";
            /**
             * Connect to CUBRID Server. Do not make the actual connection, but
             * only retain the connection information. The reason for not making
             * the actual connection is to handle transaction more efficiently
             * in the 3-tier architecture.
             */
            $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);

            if (!$cubrid_con) {
                echo "Database Connection Error";
                exit;
            }
        ?>
        <?php
            $sql = "select sports, count(players) as players from event group by sports";
            /**
             * Request the CUBRID Server for the results of the SQL statement.
             * Now make the actual connection to the CUBRID Server.
             */
            $result = cubrid_execute($cubrid_con, $sql);

            if ($result) {
                /**
                 * Get the column names from the result set created by the SQL query.
                 */
                $columns = cubrid_column_names($result);
                /**
                 * Get the number of columns in the result set created by the SQL query.
                 */
                $num_fields = cubrid_num_cols($result);
                /**
                 * List the column names of the result set on the screen.
                 */
                echo "<tr>";

                while (list($key, $colname) = each($columns)) {
                    echo "<td align=center>$colname</td>";
                }

                echo "</tr>";

                /**
                 * Get the results from the result set.
                 */
                while ($row = cubrid_fetch($result)) {
                    echo "<tr>";

                    for ($i = 0; $i < $num_fields; $i++) {
                        echo "<td align=center>";
                        echo $row[$i];
                        echo "</td>";
                    }

                    echo "</tr>";
                }
            }
            /**
             * The PHP module in the CUBRID runs in a 3-tier architecture. Even when
             * calling SELECT for transaction processing, it is processed as a part
             * of the transaction. Therefore, the transaction needs to be rolled back
             * by calling commit or rollback even though SELECT was called for smooth
             * performance.
             */
            cubrid_commit($cubrid_con);
            cubrid_disconnect($cubrid_con);
        ?>
        </body>
        </html>

Örnek 2 Example of Data Insertion

    <html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=euc- kr">
        </head>
        <body>
        <center>
        <table border=2>
        <?php
            /**
             * host_ip is the IP address where the CUBRID Broker is installed
             * host_port is the port number of the CUBRID Broker
             * db_name is the name of CUBRID Database
             */
            $host_ip = "localhost";
            $host_port = 33000;
            $db_name = "demodb";
            $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);

            if (!$cubrid_con) {
                echo "Database Connection Error";
                exit;
            }
        ?>
        <?php
            $sql = "insert into olympic (host_year,host_nation,host_city,"
                . "opening_date,closing_date) values (2008, 'China', 'Beijing',"
                . "to_date('08-08-2008','mm-dd- yyyy'),to_date('08-24-2008','mm-dd-yyyy')) ;";
            $result = cubrid_execute($cubrid_con, $sql);
            if ($result) {
                /**
                 * Handled successfully, so commit.
                 */
                cubrid_commit($cubrid_con);
                echo "Inserted successfully ";
            } else {
                /**
                 * Error occurred, so the error message is output and rollback is called.
                 */
                echo cubrid_error_msg();
                cubrid_rollback($cubrid_con);
            }
            cubrid_disconnect($cubrid_con);
        ?>
        </body>
        </html>

# CUBRID İşlevleri

# cubrid_bind

(PECL CUBRID >= 8.3.0)

cubrid_bind — Bind variables to a prepared statement as parameters

### Açıklama

function cubrid_bind(
resource `$req_identifier`,
int `$bind_index`,
mixed `$bind_value`,
string `$bind_value_type` = ?
): bool

The cubrid_bind() function is used to bind values to a corresponding named or question mark placeholder in the SQL statement that was passed to cubrid_prepare(). If `bind_value_type` is not given, string will be the default.

> Bilginize: If the type of data to be bound is BLOB/CLOB, CUBRID will try to map the data as a PHP stream. If the actually bind value type is not stream, CUBRID will convert it to string, and use it as the full path and file name of a file on the client filesystem. If the type of data to be bound explicitly is ENUM, the `bind_value` argument should be the enum element which is in string format. In CUBRID shard environment, the `bind_value_type` must be included in the cubrid_bind() function.

The following table shows the types of substitute values.

CUBRID Bind Data Types
Support | Bind Type | Corresponding SQL Type
--- | --- | ---
Supported | STRING | CHAR, VARCHAR
| NCHAR | NCHAR, NVARCHAR
| BIT | BIT, VARBIT
| NUMERIC or NUMBER | SHORT, INT, NUMERIC
| FLOAT | FLOAT
| DOUBLE | DOUBLE
| TIME | TIME
| DATE | DATE
| TIMESTAMP | TIMESTAMP
| OBJECT | OBJECT
| ENUM | ENUM
| BLOB | BLOB
| CLOB | CLOB
| NULL | NULL
Not supported | SET | SET
| MULTISET | MULTISET
| SEQUENCE | SEQUENCE

### Bağımsız Değişkenler

`req_identifier`
  Request identifier as a result of cubrid_prepare().
`bind_index`
  Location of binding parameters. It starts with 1.
`bind_value`
  Actual value for binding.
`bind_value_type`
  A type of the value to bind. (It is omitted by default. Thus, the system internally uses string by default. However, you need to specify the exact type of the value as an argument when they are NCHAR, BIT, or BLOB/CLOB).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.1 | Added BLOB/CLOB data types support.

### Örnekler

Örnek 1 cubrid_bind() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $result = cubrid_execute($conn, "SELECT code FROM event WHERE sports='Basketball' and gender='M'");
    $row = cubrid_fetch_array($result, CUBRID_ASSOC);
    $event_code = $row["code"];

    cubrid_close_request($result);

    $game_req = cubrid_prepare($conn, "SELECT athlete_code FROM game WHERE host_year=1992 and event_code=? and nation_code='USA'");
    cubrid_bind($game_req, 1, $event_code, "number");
    cubrid_execute($game_req);

    printf("--- Dream Team (1992 United States men's Olympic basketball team) ---\n");
    while ($athlete_code = cubrid_fetch_array($game_req, CUBRID_NUM)) {
        $athlete_req = cubrid_prepare($conn, "SELECT name FROM athlete WHERE code=? AND nation_code='USA' AND event='Basketball' AND gender='M'");
        cubrid_bind($athlete_req, 1, $athlete_code[0], "number");
        cubrid_execute($athlete_req);
        $row = cubrid_fetch_assoc($athlete_req);
        printf("%s\n", $row["name"]);
    }

    cubrid_close_request($game_req);
    cubrid_close_request($athlete_req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    --- Dream Team (1992 United States men's Olympic basketball team) ---
    Stockton John
    Robinson David
    Pippen Scottie
    Mullin C.
    Malone Karl
    Laettner C.
    Jordan Michael
    Johnson Earvin
    Ewing Patrick
    Drexler Clyde
    Bird Larry
    Barkley Charles

Örnek 2 cubrid_bind() BLOB/CLOB example

    <?php
    $con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
    if ($con) {
        cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
        cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (doc_content CLOB)");
        $sql = "INSERT INTO php_cubrid_lob_test(doc_content) VALUES(?)";
        $req = cubrid_prepare($con, $sql);

        $fp = fopen("book.txt", "rb");

        cubrid_bind($req, 1, $fp, "clob");
        cubrid_execute($req);
    }
    ?>

Örnek 3 cubrid_bind() BLOB/CLOB example

    <?php
    $con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
    if ($con) {
        cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
        cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (image BLOB)");
        $sql = "INSERT INTO php_cubrid_lob_test(image) VALUES(?)";
        $req = cubrid_prepare($con, $sql);

        cubrid_bind($req, 1, "cubrid_logo.png", "blob");
        cubrid_execute($req);
    }
    ?>

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_prepare() - Prepare a SQL statement for execution

# cubrid_close_prepare

(PECL CUBRID >= 8.3.0)

cubrid_close_prepare — Close the request handle

### Açıklama

function cubrid_close_prepare(resource `$req_identifier`): bool

The cubrid_close_prepare() function closes the request handle given by the `req_identifier` argument, and releases the memory region related to the handle. It is an alias of cubrid_close_request().

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Return `true` on success.

### Örnekler

Örnek 1 cubrid_close_prepare() example

    <?php
    $con = cubrid_connect ("localhost", 33000, "demodb", "dba", "");
    if ($con) {
       echo "connected successfully";
       $req = cubrid_execute ( $con, "select * from members",
                               CUBRID_INCLUDE_OID | CUBRID_ASYNC);
       if ($req) {
          while ( list ($id, $name) = cubrid_fetch ($req) ){
             echo $id;
             echo $name;
          }
          cubrid_close_prepare($req); // or you can use cubrid_close_request($req)
       }
       cubrid_disconnect($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_close_request() - Close the request handle

# cubrid_close_request

(PECL CUBRID >= 8.3.0)

cubrid_close_request — Close the request handle

### Açıklama

function cubrid_close_request(resource `$req_identifier`): bool

The cubrid_close_request() function closes the request handle given by the `req_identifier` argument, and releases the memory region related to the handle. It is an alias of cubrid_close_prepare().

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Return `true` on success.

### Örnekler

Örnek 1 cubrid_close_request() example

    <?php
    $con = cubrid_connect ("localhost", 33000, "demodb", "dba", "");
    if ($con) {
       echo "connected successfully";
       $req = cubrid_execute ( $con, "select * from members",
                               CUBRID_INCLUDE_OID | CUBRID_ASYNC);
       if ($req) {
          while ( list ($id, $name) = cubrid_fetch ($req) ){
             echo $id;
             echo $name;
          }
          cubrid_close_request($req); // or you can use cubrid_close_prepare($req)
       }
       cubrid_disconnect($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_close_prepare() - Close the request handle

# cubrid_col_get

(PECL CUBRID >= 8.3.0)

cubrid_col_get — Get contents of collection type column using OID

### Açıklama

function cubrid_col_get(resource `$conn_identifier`, string `$oid`, string `$attr_name`): array

The cubrid_col_get() function is used to get contents of the elements of the collection type (set, multiset, sequence) attribute you requested as an array.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to read.
`attr_name`
  Attribute name that you want to read from the instance.

### Dönen Değerler

Array (0-based numerical array) containing the elements you requested, when process is successful;

`false` (to distinguish the error from the situation of attribute having empty collection or NULL, in case of error, a warning message is shown; in such case you can check the error by using cubrid_error_code()), when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_col_get() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    $size = cubrid_col_size($conn, $oid, "b");
    var_dump($size);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    int(3)

# cubrid_col_size

(PECL CUBRID >= 8.3.0)

cubrid_col_size — Get the number of elements in collection type column using OID

### Açıklama

function cubrid_col_size(resource `$conn_identifier`, string `$oid`, string `$attr_name`): int

The cubrid_col_size() function is used to get the number of elements in a collection type (set, multiset, sequence) attribute.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID the instance that you want to work with.
`attr_name`
  Name of the attribute that you want to work with.

### Dönen Değerler

Number of elements, when process is successful, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.1 | Change return value: when process is unsuccessful, return false, not -1.

### Örnekler

Örnek 1 cubrid_col_size() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    $size = cubrid_col_size($conn, $oid, "b");
    var_dump($size);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    int(3)

# cubrid_column_names

(PECL CUBRID >= 8.3.0)

cubrid_column_names — Get the column names in result

### Açıklama

function cubrid_column_names(resource `$req_identifier`): array

The cubrid_column_names() function is used to get the column names of the query result by using `req_identifier`.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Array of string values containing the column names, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_column_names() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $column_names = cubrid_column_names($result);
    $column_types = cubrid_column_types($result);

    printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
    for($i = 0, $size = count($column_names); $i < $size; $i++) {
        $column_len = cubrid_field_len($result, $i);
        printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Column Names                   Column Types                   Column Maxlen
    host_year                      integer                        11
    event_code                     integer                        11
    athlete_code                   integer                        11
    stadium_code                   integer                        11
    nation_code                    char                           3
    medal                          char                           1
    game_date                      date                           10

### Ayrıca Bakınız

- cubrid_prepare() - Prepare a SQL statement for execution
- cubrid_execute() - Execute a prepared SQL statement
- cubrid_column_types() - Get column types in result

# cubrid_column_types

(PECL CUBRID >= 8.3.0)

cubrid_column_types — Get column types in result

### Açıklama

function cubrid_column_types(resource `$req_identifier`): array

The cubrid_column_types() function gets column types of query results by using `req_identifier`.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Array of string values containing the column types, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_column_types() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $column_names = cubrid_column_names($result);
    $column_types = cubrid_column_types($result);

    printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
    for($i = 0, $size = count($column_names); $i < $size; $i++) {
        $column_len = cubrid_field_len($result, $i);
        printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Column Names                   Column Types                   Column Maxlen
    host_year                      integer                        11
    event_code                     integer                        11
    athlete_code                   integer                        11
    stadium_code                   integer                        11
    nation_code                    char                           3
    medal                          char                           1
    game_date                      date                           10

### Ayrıca Bakınız

- cubrid_column_names() - Get the column names in result
- cubrid_prepare() - Prepare a SQL statement for execution
- cubrid_execute() - Execute a prepared SQL statement

# cubrid_commit

(PECL CUBRID >= 8.3.0)

cubrid_commit — Commit a transaction

### Açıklama

function cubrid_commit(resource `$conn_identifier`): bool

The cubrid_commit() function is used to execute commit on the transaction pointed by `conn_identifier`, currently in progress. Connection to the server is closed after the cubrid_commit() function is called; However, the connection handle is still valid.

In CUBRID PHP, auto-commit mode is disabled by default for transaction management. You can set it by using cubrid_set_autocommit(). You can get its status by using cubrid_get_autocommit(). Before you start a transaction, remember to disable the auto-commit mode.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_commit() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE publishers");

    $sql = <<<EOD
    CREATE TABLE publishers(
    pub_id CHAR(3),
    pub_name VARCHAR(20),
    city VARCHAR(15),
    state CHAR(2),
    country VARCHAR(15)
    )
    EOD;
    cubrid_set_autocommit($conn,false);
    if (!cubrid_execute($conn, $sql)) {
        printf("Error facility: %d\nError code: %d\nError msg: %s\n", cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

        cubrid_disconnect($conn);
        exit;
    }

    $req = cubrid_prepare($conn, "INSERT INTO publishers VALUES(?, ?, ?, ?, ?)");

    $id_list = array("P01", "P02", "P03", "P04");
    $name_list = array("Abatis Publishers", "Core Dump Books", "Schadenfreude Press", "Tenterhooks Press");
    $city_list = array("New York", "San Francisco", "Hamburg", "Berkeley");
    $state_list = array("NY", "CA", NULL, "CA");
    $country_list = array("USA", "USA", "Germany", "USA");

    for ($i = 0, $size = count($id_list); $i < $size; $i++) {
        cubrid_bind($req, 1, $id_list[$i]);
        cubrid_bind($req, 2, $name_list[$i]);
        cubrid_bind($req, 3, $city_list[$i]);
        cubrid_bind($req, 4, $state_list[$i]);
        cubrid_bind($req, 5, $country_list[$i]);

        if (!($ret = cubrid_execute($req))) {
            break;
        }
    }

    if (!$ret) {
        cubrid_rollback($conn);
    } else {
        cubrid_commit($conn);

        $req = cubrid_execute($conn, "SELECT * FROM publishers");
        while ($result = cubrid_fetch_assoc($req)) {
            printf("%-3s %-20s %-15s %-3s %-15s\n",
                $result["pub_id"], $result["pub_name"], $result["city"], $result["state"], $result["country"]);
        }
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    P01 Abatis Publishers    New York        NY  USA
    P02 Core Dump Books      San Francisco   CA  USA
    P03 Schadenfreude Press  Hamburg             Germany
    P04 Tenterhooks Press    Berkeley        CA  USA

### Ayrıca Bakınız

- cubrid_rollback() - Roll back a transaction
- cubrid_get_autocommit() - Get auto-commit mode of the connection
- cubrid_set_autocommit() - Set autocommit mode of the connection

# cubrid_connect

(PECL CUBRID >= 8.3.1)

cubrid_connect — Open a connection to a CUBRID Server

### Açıklama

function cubrid_connect(
string `$host`,
int `$port`,
string `$dbname`,
string `$userid` = ?,
string `$passwd` = ?,
bool `$new_link` = `false`
): resource

The cubrid_connect() function is used to establish the environment for connecting to your server by using your server address, port number, database name, user name, and password. If the user name and password is not given, then the "PUBLIC" connection will be made by default.

### Bağımsız Değişkenler

`host`
  Host name or IP address of CUBRID CAS server.
`port`
  Port number of CUBRID CAS server (BROKER_PORT configured in $CUBRID/conf/cubrid_broker.conf).
`dbname`
  Name of database.
`userid`
  User name for the database. If not given, the default value is "public".
`passwd`
  User password. If not given, the default value is "".
`new_link`
  If a second call is made to cubrid_connect() with the same arguments, no new connection will be established, but instead, the connection identifier of the already opened connection will be returned. The `new_link` parameter modifies this behavior and makes cubrid_connect() always open a new connection, even if cubrid_connect() was called before with the same parameters.

### Dönen Değerler

Connection identifier, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_connect() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

### Ayrıca Bakınız

- cubrid_pconnect() - Open a persistent connection to a CUBRID server
- cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server
- cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
- cubrid_disconnect() - Close a database connection
- cubrid_close() - Close CUBRID connection

# cubrid_connect_with_url

(PECL CUBRID >= 8.3.1)

cubrid_connect_with_url — Establish the environment for connecting to CUBRID server

### Açıklama

function cubrid_connect_with_url(
string `$conn_url`,
string `$userid` = ?,
string `$passwd` = ?,
bool `$new_link` = `false`
): resource

The cubrid_connect_with_url() function is used to establish the environment for connecting to your server by using connection information passed with an url string argument. If the HA feature is enabled in CUBRID, you must specify the connection information of the standby server, which is used for failover when failure occurs, in the url string argument of this function. If the user name and password is not given, then the "PUBLIC" connection will be made by default.

<url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]

<properties> ::= <property> [&<property>]

<properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>]

<properties> ::= login_timeout=<milli_sec>

<properties> ::= query_timeout=<milli_sec>

<properties> ::= disconnect_on_query_timeout=true|false

<alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>]

<host> := HOSTNAME | IP_ADDR

<time> := SECOND

<milli_sec> := MILLI SECOND

- host : A host name or IP address of the master database
- db_name : A name of the database
- db_user : A name of the database user
- db_password : A database user password
- alhosts : Specifies the broker information of the standby server, which is used for failover when it is impossible to connect to the active server. You can specify multiple brokers for failover, and the connection to the brokers is attempted in the order listed in alhosts
- rctime : An interval between the attempts to connect to the active broker in which failure occurred. After a failure occurs, the system connects to the broker specified by althosts (failover), terminates the transaction, and then attempts to connect to the active broker of the master database at every rctime. The default value is 600 seconds.
- login_timeout : Timeout value (unit: msec.) for database login. The default value is 0, which means infinite postponement.
- query_timeout : Timeout value (unit: msec.) for query request. Upon timeout, a message to cancel the requested query is sent to the server. The return value can depend on the disconnect_on_query_timeout configuration; even though the message to cancel a request is sent to server, that request may succeed.
- disconnect_on_query_timeout : Configures a value whether to immediately return an error of function being executed upon timeout. The default value is false.

> Bilginize: `?` and `:` that are used as identifiers in PHP connection URL can't be included in the password. The following is an example of a password that is invalid to use as connection URL because it contains "`?:`". $url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100"; Passwords that contain `?` or `:` may be passed as a separate parameter. $url = "CUBRID:localhost:33000:tbd:::?login_timeout=100"; $conn = cubrid_connect_with_url($url, "dba", "12?"); If user or password is empty,you can't delete "`:`",the following is an example. $url = "CUBRID:localhost:33000:demodb:::";

### Bağımsız Değişkenler

`conn_url`
  A character string that contains server connection information.
`userid`
  User name for the database.
`passwd`
  User password.
`new_link`
  If a second call is made to cubrid_connect_with_url() with the same arguments, no new connection will be established, but instead, the connection identifier of the already opened connection will be returned. The `new_link` parameter modifies this behavior and makes cubrid_connect_with_url() always open a new connection, even if cubrid_connect_with_url() was called before with the same parameters.

### Dönen Değerler

Connection identifier, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_connect_with_url() url without properties example

    <?php
    $conn_url = "CUBRID:localhost:33000:demodb:dba::";
    $con = cubrid_connect_with_url($conn_url);

    if ($con) {
       echo "connected successfully";
       cubrid_execute($con, "create table person(id int,name char(16))");
       $req =cubrid_execute($con, "insert into person values(1,'James')");

       if ($req) {
          cubrid_close_request($req);
          cubrid_commit($con);
       } else {
          cubrid_rollback($con);
       }
       cubrid_disconnect($con);
    }
    ?>

Örnek 2 cubrid_connect_with_url() url with properties example

    <?php
    $conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?login_timeout=100";
    $con = cubrid_connect_with_url ($conn_url);

    if ($con) {
       echo "connected successfully";
       cubrid_execute($con, "create table person(id int,name char(16))");
       $req =cubrid_execute($con, "insert into person values(1,'James')");

       if ($req) {
          cubrid_close_request($req);
          cubrid_commit($con);
       } else {
          cubrid_rollback($con);
       }
       cubrid_disconnect($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_pconnect() - Open a persistent connection to a CUBRID server
- cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
- cubrid_disconnect() - Close a database connection
- cubrid_close() - Close CUBRID connection

# cubrid_current_oid

(PECL CUBRID >= 8.3.0)

cubrid_current_oid — Get OID of the current cursor location

### Açıklama

function cubrid_current_oid(resource `$req_identifier`): string

The cubrid_current_oid() function is used to get the oid of the current cursor location from the query result. To use cubrid_current_oid(), the query executed must be a updatable query, and the `CUBRID_INCLUDE_OID` option must be included during the query execution.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Oid of current cursor location, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_current_oid() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $req = cubrid_execute($conn, "SELECT * FROM code", CUBRID_INCLUDE_OID);
    $oid = cubrid_current_oid($req);
    $res = cubrid_get($conn, $oid);

    print_r($res);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [s_name] => X
        [f_name] => Mixed
    )

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement

# cubrid_disconnect

(PECL CUBRID >= 8.3.0)

cubrid_disconnect — Close a database connection

### Açıklama

function cubrid_disconnect(resource `$conn_identifier` = ?): bool

The cubrid_disconnect() function closes the connection handle and disconnects from server. If any request handle is not closed at this point, it will be closed. It is similar to the CUBRID MySQL compatible function cubrid_close().

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_disconnect() example

    <?php
    $con = cubrid_connect ("localhost", 33000, "demodb");
    if ($con) {
       echo "connected successfully";

       $req = cubrid_execute( $con, "create table person(id int,name char(10))");
       if ($req) {
          cubrid_close_request($req);
          cubrid_commit($con);
       } else {
          cubrid_rollback($con);
       }

       $req = cubrid_execute( $con, "insert into person values(1,'James')");
       if ($req) {
          cubrid_close_request($req);
          cubrid_commit($con);
       } else {
          cubrid_rollback($con);
       }
       cubrid_disconnect($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_close() - Close CUBRID connection
- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server

# cubrid_drop

(PECL CUBRID >= 8.3.0)

cubrid_drop — Delete an instance using OID

### Açıklama

function cubrid_drop(resource `$conn_identifier`, string `$oid`): bool

The cubrid_drop() function is used to delete an instance from database by using the `oid` of the instance.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  Oid of the instance that you want to delete.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_drop() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    printf("--- Before Drop: ---\n");
    $attr = cubrid_get($conn, $oid);
    var_dump($attr);

    if (cubrid_drop($conn, $oid)) {
        cubrid_commit($conn);
    } else {
        cubrid_rollback($conn);
    }

    cubrid_close_request($req);

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    printf("\n--- After Drop: ---\n");
    $attr = cubrid_get($conn, $oid);
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    --- Before Drop: ---
    array(4) {
      ["a"]=>
      string(1) "1"
      ["b"]=>
      array(3) {
        [0]=>
        string(1) "1"
        [1]=>
        string(1) "2"
        [2]=>
        string(1) "3"
      }
      ["c"]=>
      array(4) {
        [0]=>
        string(2) "11"
        [1]=>
        string(2) "22"
        [2]=>
        string(2) "33"
        [3]=>
        string(3) "333"
      }
      ["d"]=>
      string(10) "a         "
    }

    --- After Drop: ---
    array(4) {
      ["a"]=>
      string(1) "2"
      ["b"]=>
      array(3) {
        [0]=>
        string(1) "4"
        [1]=>
        string(1) "5"
        [2]=>
        string(1) "7"
      }
      ["c"]=>
      array(4) {
        [0]=>
        string(2) "44"
        [1]=>
        string(2) "55"
        [2]=>
        string(2) "66"
        [3]=>
        string(3) "666"
      }
      ["d"]=>
      string(10) "b         "
    }

### Ayrıca Bakınız

- cubrid_is_instance() - Check whether the instance pointed by OID exists

# cubrid_error_code

(PECL CUBRID >= 8.3.0)

cubrid_error_code — Get error code for the most recent function call

### Açıklama

function cubrid_error_code(): int

The cubrid_error_code() function is used to get the error code of the error that occurred during the API execution. Usually, it gets the error code when API returns false as its return value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Error code of the error that occurred, or `0` (zero) if no error occurred.

### Örnekler

Örnek 1 cubrid_error_code() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_prepare($conn , "SELECT * FROM code WHERE s_name=?");

    $req = @cubrid_execute($req);
    if (!$req) {
        printf("Error facility: %d\nError code: %d\nError msg: %s\n",
            cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

        cubrid_disconnect($conn);
        exit;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Error facility: 4
    Error code: -30015
    Error msg: Some parameter not binded

### Ayrıca Bakınız

- cubrid_error_code_facility() - Get the facility code of error
- cubrid_error_msg() - Get last error message for the most recent function call

# cubrid_error_code_facility

(PECL CUBRID >= 8.3.0)

cubrid_error_code_facility — Get the facility code of error

### Açıklama

function cubrid_error_code_facility(): int

The cubrid_error_code_facility() function is used to get the facility code (level in which the error occurred) from the error code of the error that occurred during the API execution. Usually, you can get the error code when API returns false as its return value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Facility code of the error code that occurred: `CUBRID_FACILITY_DBMS`, `CUBRID_FACILITY_CAS`, `CUBRID_FACILITY_CCI`, `CUBRID_FACILITY_CLIENT`.

### Örnekler

Örnek 1 cubrid_error_code_facility() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = @cubrid_execute($conn, "SELECT * FROM unknown");
    if (!$req) {
        printf("Error facility: %d\nError code: %d\nError msg: %s\n",
            cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

        cubrid_disconnect($conn);
        exit;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Error facility: 1
    Error code: -493
    Error msg: Syntax: In line 1, column 15 before END OF STATEMENT
    Syntax error: unexpected 'unknown'

### Ayrıca Bakınız

- cubrid_error_code() - Get error code for the most recent function call
- cubrid_error_msg() - Get last error message for the most recent function call

# cubrid_error_msg

(PECL CUBRID >= 8.3.0)

cubrid_error_msg — Get last error message for the most recent function call

### Açıklama

function cubrid_error_msg(): string

The cubrid_error_msg() function is used to get the error message that occurred during the use of CUBRID API. Usually, it gets error message when API returns false as its return value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Error message that occurred.

### Örnekler

Örnek 1 cubrid_error_msg() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    if (!@cubrid_schema($conn, 100000)) {
        printf("Error facility: %d\nError code: %d\nError msg: %s\n",
            cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

        cubrid_disconnect($conn);
        exit;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Error facility: 2
    Error code: -10015
    Error msg: Invalid T_CCI_SCH_TYPE value

### Ayrıca Bakınız

- cubrid_error_code() - Get error code for the most recent function call
- cubrid_error_code_facility() - Get the facility code of error

# cubrid_execute

(PECL CUBRID >= 8.3.0)

cubrid_execute — Execute a prepared SQL statement

### Açıklama

function cubrid_execute(resource `$conn_identifier`, string `$sql`, int `$option` = 0): resource
function cubrid_execute(resource `$request_identifier`, int `$option` = 0): bool

The cubrid_execute() function is used to execute the given SQL statement. It executes the query by using `conn_identifier` and SQL, and then returns the request identifier created. It is used for simple execution of query, where the parameter binding is not needed. In addition, the cubrid_execute() function is used to execute the prepared statement by means of cubrid_prepare() and cubrid_bind(). At this time, you need to specify arguments of `request_identifier` and `option`.

The `option` is used to determine whether to get OID after query execution and whether to execute the query in synchronous or asynchronous mode. `CUBRID_INCLUDE_OID` and `CUBRID_ASYNC` (or `CUBRID_EXEC_QUERY_ALL` if you want to execute multiple SQL statements) can be specified by using a bitwise OR operator. If not specified, neither of them is selected. If the flag `CUBRID_EXEC_QUERY_ALL` is set, a synchronous mode (sync_mode) is used to retrieve query results, and in such cases the following rules are applied:

- The return value is the result of the first query.
- If an error occurs in any query, the execution is processed as a failure.
- In a query composed of q1 q2 q3, if an error occurs in q2 after q1 succeeds the execution, the result of q1 remains valid. That is, the previous successful query executions are not rolled back when an error occurs.
- If a query is executed successfully, the result of the second query can be obtained using cubrid_next_result().

If the first argument is `request_identifier` to execute the cubrid_prepare() function, you can specify an option, `CUBRID_ASYNC` only.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`sql`
  SQL to be executed.
`option`
  Query execution option `CUBRID_INCLUDE_OID`, `CUBRID_ASYNC`, `CUBRID_EXEC_QUERY_ALL`.
`request_identifier`
  cubrid_prepare() identifier.

### Dönen Değerler

Request identifier, when process is successful and first param is conn_identifier; `true`, when process is successful and first argument is request_identifier, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Add new option `CUBRID_EXEC_QUERY_ALL`.

### Örnekler

Örnek 1 cubrid_execute() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $result = cubrid_execute($conn, "SELECT code FROM event WHERE name='100m Butterfly' and gender='M'", CUBRID_ASYNC);
    $row = cubrid_fetch_array($result, CUBRID_ASSOC);
    $event_code = $row["code"];

    cubrid_close_request($result);

    $history_req = cubrid_prepare($conn, "SELECT * FROM history WHERE event_code=?");
    cubrid_bind($history_req, 1, $event_code, "number");
    cubrid_execute($history_req);

    printf("%-20s %-9s %-10s %-5s\n", "athlete", "host_year", "score", "unit");
    while ($row = cubrid_fetch_array($history_req, CUBRID_ASSOC)) {
        printf("%-20s %-9s %-10s %-5s\n",
            $row["athlete"], $row["host_year"], $row["score"], $row["unit"]);
    }

    cubrid_close_request($history_req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    athlete              host_year score      unit
    Phelps Michael       2004      51.25      time

### Ayrıca Bakınız

- cubrid_prepare() - Prepare a SQL statement for execution
- cubrid_bind() - Bind variables to a prepared statement as parameters
- cubrid_next_result() - Get result of next query when executing multiple SQL statements
- cubrid_close_request() - Close the request handle
- cubrid_commit() - Commit a transaction
- cubrid_rollback() - Roll back a transaction

# cubrid_fetch

(PECL CUBRID >= 8.3.0)

cubrid_fetch — Fetch the next row from a result set

### Açıklama

function cubrid_fetch(resource `$result`, int `$type` = CUBRID_BOTH): mixed

The cubrid_fetch() function is used to get a single row from the query result. The cursor automatically moves to the next row after getting the result.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`type`
  Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH, CUBRID_OBJECT. If you want to operate the lob object, you can use CUBRID_LOB.

### Dönen Değerler

Result array or object, when process is successful.

`false`, when there are no more rows; NULL, when process is unsuccessful.

The result can be received either as an array or as an object, and you can decide which data type to use by setting the `type` argument. The `type` variable can be set to one of the following values:

- CUBRID_NUM : Numerical array (0-based)
- CUBRID_ASSOC : Associative array
- CUBRID_BOTH : Numerical & Associative array (default)
- CUBRID_OBJECT : object that has the attribute name as the column name of query result

When `type` argument is omitted, the result will be received using CUBRID_BOTH option as default. When you want to receive query result in object data type, the column name of the result must obey the naming rules for identifiers in PHP. For example, column name such as "count(*)" cannot be received in object type.

### Örnekler

Örnek 1 cubrid_fetch() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT * FROM stadium WHERE nation_code='GRE' AND seats > 10000");

    printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
    while ($row = cubrid_fetch($req)) {
        printf("%-40s %-10s %-6s %-20s\n",
            $row["name"], $row["area"], $row["seats"], $row["address"]);
    }

    // if you want to operate lob object, you can use cubrid_fetch($req, CUBRID_LOB)

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    name                                     area       seats  address
    Panathinaiko Stadium                     86300.00   50000  Athens, Greece
    Olympic Stadium                          54700.00   13000  Athens, Greece
    Olympic Indoor Hall                      34100.00   18800  Athens, Greece
    Olympic Hall                             52400.00   21000  Athens, Greece
    Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
    Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
    Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
    Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
    Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- cubrid_fetch_row() - Return a numerical array with the values of the current row
- cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
- cubrid_fetch_object() - Fetch the next row and return it as an object

# cubrid_free_result

(PECL CUBRID >= 8.3.0)

cubrid_free_result — Free the memory occupied by the result data

### Açıklama

function cubrid_free_result(resource `$req_identifier`): bool

This function frees the memory occupied by the result data. It returns `true` on success or `false` on failure. Note that it can only frees the client fetch buffer now, and if you want free all memory, use function cubrid_close_request().

### Bağımsız Değişkenler

`req_identifier`
  This is the request identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_free_result() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $req = cubrid_execute($conn, "SELECT * FROM history WHERE host_year=2004 ORDER BY event_code");
    $row = cubrid_fetch_assoc($req);
    var_dump($row);

    cubrid_free_result($req);
    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(5) {
      ["event_code"]=>
      string(5) "20005"
      ["athlete"]=>
      string(12) "Hayes Joanna"
      ["host_year"]=>
      string(4) "2004"
      ["score"]=>
      string(5) "12.37"
      ["unit"]=>
      string(4) "time"
    }

# cubrid_get

(PECL CUBRID >= 8.3.0)

cubrid_get — Get a column using OID

### Açıklama

function cubrid_get(resource `$conn_identifier`, string `$oid`, mixed `$attr` = ?): mixed

The cubrid_get() function is used to get the attribute of the instance of the given `oid`. You can get single attribute by using string data type for the `attr` argument, or many attributes by using array data type for the `attr` argument.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to read.
`attr`
  Name of the attribute that you want to read.

### Dönen Değerler

Content of the requested attribute, when process is successful; When `attr` is set with string data type, the result is returned as a string; when `attr` is set with array data type (0-based numerical array), then the result is returned in associative array. When `attr` is omitted, then all attributes are received in array form.

`false` when process is unsuccessful or result is NULL (If error occurs to distinguish empty string from NULL, then it prints the warning message. You can check the error by using cubrid_error_code())

### Örnekler

Örnek 1 cubrid_get() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_get($conn, $oid, "b");
    var_dump($attr);

    $attr = cubrid_get($conn, $oid);
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    string(9) "{1, 2, 3}"
    array(4) {
      ["a"]=>
      string(1) "1"
      ["b"]=>
      array(3) {
        [0]=>
        string(1) "1"
        [1]=>
        string(1) "2"
        [2]=>
        string(1) "3"
      }
      ["c"]=>
      array(4) {
        [0]=>
        string(2) "11"
        [1]=>
        string(2) "22"
        [2]=>
        string(2) "33"
        [3]=>
        string(3) "333"
      }
      ["d"]=>
      string(10) "a         "
    }

### Ayrıca Bakınız

- cubrid_put() - Update a column using OID

# cubrid_get_autocommit

(PECL CUBRID >= 8.4.0)

cubrid_get_autocommit — Get auto-commit mode of the connection

### Açıklama

function cubrid_get_autocommit(resource `$conn_identifier`): bool

The cubrid_get_autocommit() function is used to get the status of CUBRID database connection auto-commit mode.

For CUBRID 8.4.0, auto-commit mode is disabled by default for transaction management.

For CUBRID 8.4.1, auto-commit mode is enabled by default for transaction management.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.

### Dönen Değerler

`true`, when auto-commit is on.

`false`, when auto-commit is off.

`null` on error.

### Ayrıca Bakınız

- cubrid_set_autocommit() - Set autocommit mode of the connection
- cubrid_commit() - Commit a transaction

# cubrid_get_charset

(PECL CUBRID >= 8.3.0)

cubrid_get_charset — Return the current CUBRID connection charset

### Açıklama

function cubrid_get_charset(resource `$conn_identifier`): string

This function returns the current CUBRID connection charset and is similar to the CUBRID MySQL compatible function cubrid_client_encoding().

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection.

### Dönen Değerler

A string that represents the CUBRID connection charset on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_charset() example

    <?php

    $con = cubrid_connect("localhost", 33000, "demodb");
    if (!$con)
    {
        die('Could not connect.');
    }

    printf("CUBRID current charset: %s\n", cubrid_get_charset($con));

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID current charset: iso8859-1

### Ayrıca Bakınız

- cubrid_client_encoding() - Return the current CUBRID connection charset

# cubrid_get_class_name

(PECL CUBRID >= 8.3.0)

cubrid_get_class_name — Get the class name using OID

### Açıklama

function cubrid_get_class_name(resource `$conn_identifier`, string `$oid`): string

The cubrid_get_class_name() function is used to get the class name from `oid`. It doesn't work when selecting data from the system tables, for example db_class.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to check the existence.

### Dönen Değerler

Class name when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_class_name() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $req = cubrid_execute($conn, "SELECT * FROM code", CUBRID_INCLUDE_OID);
    $oid = cubrid_current_oid($req);
    $class_name = cubrid_get_class_name($conn, $oid);

    print_r($class_name);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    code

### Ayrıca Bakınız

- cubrid_is_instance() - Check whether the instance pointed by OID exists
- cubrid_drop() - Delete an instance using OID

# cubrid_get_client_info

(PECL CUBRID >= 8.3.0)

cubrid_get_client_info — Return the client library version

### Açıklama

function cubrid_get_client_info(): string

This function returns a string that represents the client library version.

### Bağımsız Değişkenler

### Dönen Değerler

A string that represents the client library version on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_client_info() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("localhost", 33088, "demodb");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

# cubrid_get_db_parameter

(PECL CUBRID >= 8.3.0)

cubrid_get_db_parameter — Returns the CUBRID database parameters

### Açıklama

function cubrid_get_db_parameter(resource `$conn_identifier`): array

This function returns the CUBRID database parameters, başarısızlık durumunda `false` döner. It returns an associative array with the values for the following parameters:

- `PARAM_ISOLATION_LEVEL`
- `PARAM_LOCK_TIMEOUT`
- `PARAM_MAX_STRING_LENGTH`
- `PARAM_AUTO_COMMIT`

Database parameters
Parameter | Description
--- | ---
PARAM_ISOLATION_LEVEL | The transaction isolation level.
LOCK_TIMEOUT | CUBRID provides the lock timeout feature, which sets the waiting time (in seconds) for the lock until the transaction lock setting is allowed. The default value of the lock_timeout_in_secs parameter is -1, which means the application client will wait indefinitely until the transaction lock is allowed.
PARAM_AUTO_COMMIT | In CUBRID PHP, auto-commit mode is disabled by default for transaction management. It can be set by using cubrid_set_autocommit().

The following table shows the isolation levels from 1 to 6. It consists of table schema (row) and isolation level:

Levels of Isolation Supported by CUBRID
Name | Description
--- | ---
SERIALIZABLE (6) | In this isolation level, problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.
REPEATABLE READ CLASS with REPEATABLE READ INSTANCES (5) | Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience phantom read for the record R that was inserted by another transaction T2 when it is repeatedly retrieving a specific record.
REPEATABLE READ CLASS with READ COMMITTED INSTANCES (or CURSOR STABILITY) (4) | Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience R read (non-repeatable read) that was updated and committed by another transaction T2 when it is repeatedly retrieving the record R.
REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES (3) | Default isolation level. Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience R' read (dirty read) for the record that was updated but not committed by another transaction T2.
READ COMMITTED CLASS with READ COMMITTED INSTANCES (2) | Transaction T1 may experience A' read (non-repeatable read) for the table that was updated and committed by another transaction T2 while it is viewing table A repeatedly. Transaction T1 may experience R' read (non-repeatable read) for the record that was updated and committed by another transaction T2 while it is retrieving the record R repeatedly.
READ COMMITTED CLASS with READ UNCOMMITTED INSTANCES (1) | Transaction T1 may experience A' read (non-repeatable read) for the table that was updated and committed by another transaction T2 while it is repeatedly viewing table A. Transaction T1 may experience R' read (dirty read) for the record that was updated but not committed by another transaction T2.

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.

### Dönen Değerler

An associative array with CUBRID database parameters; on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Change LOCK_TIMEOUT to PARAM_LOCK_TIMEOUT, and MAX_STRING_LENGTH to PARAM_MAX_STRING_LENGTH in result.

### Örnekler

Örnek 1 cubrid_get_db_parameter() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("localhost", 33088, "demodb");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

### Ayrıca Bakınız

- cubrid_set_db_parameter() - Sets the CUBRID database parameters
- cubrid_get_autocommit() - Get auto-commit mode of the connection

# cubrid_get_query_timeout

(PECL CUBRID >= 8.4.1)

cubrid_get_query_timeout — Get the query timeout value of the request

### Açıklama

function cubrid_get_query_timeout(resource `$req_identifier`): int

The cubrid_get_query_timeout() function is used to get the query timeout of the request.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.

### Dönen Değerler

Returns the query timeout value in milliseconds of the current request on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_query_timeout() example

    <?php

    $host = "localhost";
    $port = 33000;
    $db = "demodb";

    $conn =
    cubrid_connect_with_url("CUBRID:$host:$port:$db:::?login_timeout=50000&query_timeout=5000&disconnect_on_query_timeout=yes");

    $req = cubrid_prepare($conn, "SELECT * FROM code");

    $timeout = cubrid_get_query_timeout($req);
    var_dump($timeout);

    cubrid_set_query_timeout($req, 1000);
    $timeout = cubrid_get_query_timeout($req);
    var_dump($timeout);

    cubrid_close($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    int(5000)
    int(1000)

### Ayrıca Bakınız

- cubrid_set_query_timeout() - Set the timeout time of query execution

# cubrid_get_server_info

(PECL CUBRID >= 8.3.0)

cubrid_get_server_info — Return the CUBRID server version

### Açıklama

function cubrid_get_server_info(resource `$conn_identifier`): string

This function returns a string that represents the CUBRID server version.

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection.

### Dönen Değerler

A string that represents the CUBRID server version on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_server_info() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("localhost", 33088, "demodb");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

# cubrid_insert_id

(PECL CUBRID >= 8.3.0)

cubrid_insert_id — Return the ID generated for the last updated `AUTO_INCREMENT` column

### Açıklama

function cubrid_insert_id(resource `$conn_identifier` = ?): string

The cubrid_insert_id() function retrieves the ID generated for the AUTO_INCREMENT column which is updated by the previous INSERT query. It returns 0 if the previous query does not generate new rows, or FALSE on failure.

> Bilginize: CUBRID supports AUTO_INCREMENT for more than one columns in a table. In most cases, there will be a single AUTO_INCREMENT column in a table. If there are multiple AUTO_INCREMENT columns, this function should not be used even if it will return a value.

### Bağımsız Değişkenler

`conn_identifier`
  The connection identifier previously obtained by a call to cubrid_connect().

### Dönen Değerler

A string representing the ID generated for an AUTO_INCREMENT column by the previous query, on success.

0, if the previous query does not generate new rows.

`false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Change the return value from an array to string; Remove the first parameter class_name.

### Örnekler

Örnek 1 cubrid_insert_id() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    @cubrid_execute($conn, "DROP TABLE cubrid_test");
    cubrid_execute($conn, "CREATE TABLE cubrid_test (d int AUTO_INCREMENT(1, 2), t varchar)");

    for ($i = 0; $i < 10; $i++) {
        cubrid_execute($conn, "INSERT INTO cubrid_test(t) VALUES('cubrid_test')");
    }

    $id = cubrid_insert_id();
    var_dump($id);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    string(2) "19"

# cubrid_is_instance

(PECL CUBRID >= 8.3.0)

cubrid_is_instance — Check whether the instance pointed by OID exists

### Açıklama

function cubrid_is_instance(resource `$conn_identifier`, string `$oid`): int

The cubrid_is_instance() function is used to check whether the instance pointed by the given `oid` exists or not.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to check the existence.

### Dönen Değerler

1, if such instance exists;

0, if such instance does not exist;

-1, in case of error

### Örnekler

Örnek 1 cubrid_is_instance() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $sql = <<<EOD
    SELECT host_year, medal, game_date
    FROM game
    WHERE athlete_code IN
        (SELECT code FROM athlete WHERE name='Thorpe Ian');
    EOD;

    $req = cubrid_execute($conn, $sql, CUBRID_INCLUDE_OID);
    $oid = cubrid_current_oid($req);

    $res = cubrid_is_instance ($conn, $oid);
    if ($res == 1) {
        echo "Instance pointed by $oid exists.\n";
    } else if ($res == 0){
        echo "Instance pointed by $oid doesn't exist.\n";
    } else {
        echo "error\n";
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Instance pointed by @0|0|0 doesn't exist.

### Ayrıca Bakınız

- cubrid_drop() - Delete an instance using OID
- cubrid_get_class_name() - Get the class name using OID

# cubrid_lob_close

(PECL CUBRID >= 8.3.1)

cubrid_lob_close — Close BLOB/CLOB data

### Açıklama

function cubrid_lob_close(array `$lob_identifier_array`): bool

cubrid_lob_close() is used to close all BLOB/CLOB returned from cubrid_lob_get().

### Bağımsız Değişkenler

`lob_identifier_array`
  LOB identifier array returned from cubrid_lob_get().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob_close() example

    <?php
    $conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

    cubrid_execute($conn,"DROP TABLE if exists doc");
    cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
    cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

    $lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
    echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
    cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
    cubrid_lob_close($lobs);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob_get() - Get BLOB/CLOB data
- cubrid_lob_size() - Get BLOB/CLOB data size
- cubrid_lob_export() - Export BLOB/CLOB data to file
- cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

# cubrid_lob_export

(PECL CUBRID >= 8.3.1)

cubrid_lob_export — Export BLOB/CLOB data to file

### Açıklama

function cubrid_lob_export(resource `$conn_identifier`, resource `$lob_identifier`, string `$path_name`): bool

cubrid_lob_export() is used to get BLOB/CLOB data from CUBRID database, and saves its contents to a file. To use this function, you must use cubrid_lob_get() first to get BLOB/CLOB info from CUBRID.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`lob_identifier`
  LOB identifier.
`path_name`
  Path name of the file.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob_export() example

    <?php
    $conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

    cubrid_execute($conn,"DROP TABLE if exists doc");
    cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
    cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

    $lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
    echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
    cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
    cubrid_lob_close($lobs);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob_get() - Get BLOB/CLOB data
- cubrid_lob_close() - Close BLOB/CLOB data
- cubrid_lob_size() - Get BLOB/CLOB data size
- cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

# cubrid_lob_get

(PECL CUBRID >= 8.3.1)

cubrid_lob_get — Get BLOB/CLOB data

### Açıklama

function cubrid_lob_get(resource `$conn_identifier`, string `$sql`): array

cubrid_lob_get() is used to get BLOB/CLOB meta info from CUBRID database, CUBRID gets BLOB/CLOB by executing the SQL statement, and returns all LOBs as a resource array. Be sure that the SQL retrieves only one column and its data type is BLOB or CLOB.

Remember to use cubrid_lob_close() to release the LOBs if you don't need it any more.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`sql`
  SQL statement to be executed.

### Dönen Değerler

Return an array of LOB resources, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob_get() example

    <?php
    $conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

    cubrid_execute($conn,"DROP TABLE if exists doc");
    cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
    cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

    $lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
    echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
    cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
    cubrid_lob_close($lobs);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob_close() - Close BLOB/CLOB data
- cubrid_lob_size() - Get BLOB/CLOB data size
- cubrid_lob_export() - Export BLOB/CLOB data to file
- cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

# cubrid_lob_send

(PECL CUBRID >= 8.3.1)

cubrid_lob_send — Read BLOB/CLOB data and send straight to browser

### Açıklama

function cubrid_lob_send(resource `$conn_identifier`, resource `$lob_identifier`): bool

cubrid_lob_send() reads BLOB/CLOB data and passes it straight through to the browser. To use this function, you must use cubrid_lob_get() first to get BLOB/CLOB info from CUBRID.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`lob_identifier`
  LOB identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob_send() example

    <?php
    $conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

    cubrid_execute($conn,"DROP TABLE if exists doc");
    cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
    cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

    $lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");

    cubrid_lob_send($conn, $lobs[0]);
    cubrid_lob_close($lobs);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob_get() - Get BLOB/CLOB data
- cubrid_lob_close() - Close BLOB/CLOB data
- cubrid_lob_size() - Get BLOB/CLOB data size
- cubrid_lob_export() - Export BLOB/CLOB data to file

# cubrid_lob_size

(PECL CUBRID >= 8.3.1)

cubrid_lob_size — Get BLOB/CLOB data size

### Açıklama

function cubrid_lob_size(resource `$lob_identifier`): string

cubrid_lob_size() is used to get BLOB/CLOB data size.

### Bağımsız Değişkenler

`lob_identifier`
  LOB identifier.

### Dönen Değerler

A string representing LOB data size, when process is successful, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Change return value type from int to string.

### Örnekler

Örnek 1 cubrid_lob_size() example

    <?php
    $lobs = cubrid_lob_get($con, "SELECT doc_content FROM doc WHERE doc_id=5");
    echo "Doc size:".cubrid_lob_size($lobs[0]);
    cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
    cubrid_lob_close($lobs);
    ?>

### Ayrıca Bakınız

- cubrid_lob_get() - Get BLOB/CLOB data
- cubrid_lob_close() - Close BLOB/CLOB data
- cubrid_lob_export() - Export BLOB/CLOB data to file
- cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

# cubrid_lob2_bind

(PECL CUBRID >= 8.4.1)

cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters

### Açıklama

function cubrid_lob2_bind(
resource `$req_identifier`,
int `$bind_index`,
mixed `$bind_value`,
string `$bind_value_type` = ?
): bool

The cubrid_lob2_bind() function is used to bind BLOB/CLOB datas to a corresponding question mark placeholder in the SQL statement that was passed to cubrid_prepare(). If `bind_value_type` is not given, string will be "BLOB" as the default. But if you use cubrid_lob2_new() before, `bind_value_type` will be consistent with `type` in cubrid_lob2_new() as the default.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier as a result of cubrid_prepare().
`bind_index`
  Location of binding parameters. It starts with 1.
`bind_value`
  Actual value for binding.
`bind_value_type`
  It must be "BLOB" or "CLOB" and it won't be case-sensitive. If it not be given, the default value is "BLOB".

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_bind() example

    <?php
    // Table: test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");

    cubrid_bind($req,1, 3);

    $lob = cubrid_lob2_new($conn, 'CLOB');
    cubrid_lob2_bind($req, 2, $lob);

    cubrid_execute($req);

    cubrid_bind($req, 1, 4);

    cubrid_lob2_bind($req, 2, 'CUBRID LOB2 TEST', 'CLOB');

    cubrid_execute($req);

    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_new() - Create a lob object
- cubrid_lob2_close() - Close LOB object

# cubrid_lob2_close

(PECL CUBRID >= 8.4.1)

cubrid_lob2_close — Close LOB object

### Açıklama

function cubrid_lob2_close(resource `$lob_identifier`): bool

The cubrid_lob2_close() function is used to close LOB object returned from cubrid_lob2_new() or got from the result set.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_new() - Create a lob object

# cubrid_lob2_export

(PECL CUBRID >= 8.4.1)

cubrid_lob2_export — Export the lob object to a file

### Açıklama

function cubrid_lob2_export(resource `$lob_identifier`, string `$file_name`): bool

The cubrid_lob2_export() function is used to save the contents of BLOB/CLOB data to a file. To use this function, you must use cubrid_lob2_new() or fetch a lob object from CUBRID database first. If the file already exists, the operation will fail. This function will not influence the cursor position of the lob object. It operates the entire lob object.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`filename`
  File name you want to store BLOB/CLOB data. It also supports the path of the file.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_export() example

    <?php
    // Table: test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists doc");
    cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
    cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

    $req = cubrid_prepare($conn, "select * from doc");

    cubrid_execute($req);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);

    $row = cubrid_fetch($req, CUBRID_NUM | CUBRID_LOB);

    cubrid_lob2_export($row[1], "doc_3.txt");

    cubrid_lob2_close($row[1]);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_new() - Create a lob object
- cubrid_lob2_close() - Close LOB object
- cubrid_lob2_import() - Import BLOB/CLOB data from a file
- cubrid_lob2_bind() - Bind a lob object or a string as a lob object to a prepared statement as parameters

# cubrid_lob2_import

(PECL CUBRID >= 8.4.1)

cubrid_lob2_import — Import BLOB/CLOB data from a file

### Açıklama

function cubrid_lob2_import(resource `$lob_identifier`, string `$file_name`): bool

The cubrid_lob2_import() function is used to save the contents of BLOB/CLOB data from a file. To use this function, you must use cubrid_lob2_new() or fetch a lob object from CUBRID database first. If the file does not exist, the operation will fail. This function will not influence the cursor position of the lob object. It operates the entire lob object.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`filename`
  File name you want to import BLOB/CLOB data. It also supports the path of the file.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_export() example

    <?php

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");
    cubrid_bind($req, 1, 1);

    $lob = cubrid_lob2_new($conn, "clob");
    cubrid_lob2_import($lob, "doc_1.txt");
    cubrid_lob2_bind($req, 2, $lob, 'CLOB'); // or cubrid_lob2_bind($req, 2, $lob);

    cubrid_execute($req);

    cubrid_lob2_close($lob);
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_new() - Create a lob object
- cubrid_lob2_close() - Close LOB object
- cubrid_lob2_export() - Export the lob object to a file
- cubrid_lob2_bind() - Bind a lob object or a string as a lob object to a prepared statement as parameters

# cubrid_lob2_new

(PECL CUBRID >= 8.4.1)

cubrid_lob2_new — Create a lob object

### Açıklama

function cubrid_lob2_new(resource `$conn_identifier` = ?, string `$type` = "BLOB"): resource

The cubrid_lob2_new() function is used to create a lob object (both BLOB and CLOB). This function should be used before you bind a lob object.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() or cubrid_connect_with_url() is assumed.
`type`
  It may be "BLOB" or "CLOB", it won't be case-sensitive. The default value is "BLOB".

### Dönen Değerler

Lob identifier when it is successful, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_close() - Close LOB object

# cubrid_lob2_read

(PECL CUBRID >= 8.4.1)

cubrid_lob2_read — Read from BLOB/CLOB data

### Açıklama

function cubrid_lob2_read(resource `$lob_identifier`, int `$len`): string

The cubrid_lob2_read() function reads `len` bytes from the LOB data and returns the bytes read.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`len`
  Length from buffer you want to read from the lob data.

### Dönen Değerler

Returns the contents as a string, `false` when there is no more data, or `null` on failure.

### Örnekler

Örnek 1 cubrid_lob2_read() example 1

    <?php
    // test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "public", "");

    $req = cubrid_execute($conn, "select * from test_lob");

    $row = cubrid_fetch_row($req, CUBRID_LOB);

    print "position now is " . cubrid_lob2_tell($row[1]) . "\n";

    cubrid_lob2_seek($row[1], 10, CUBRID_CURSOR_FIRST);

    print "\nposition after moving farword is " . cubrid_lob2_tell($row[1]) . "\n";

    $data = cubrid_lob2_read($row[1], 12);

    print "\nposition after reading is " . cubrid_lob2_tell($row[1]) . "\n";

    print $data . "\n";

    cubrid_lob2_seek($row[1], 5, CUBRID_CURSOR_CURRENT);

    print "\nposition after moving again is " . cubrid_lob2_tell($row[1]) . "\n";

    $data = cubrid_lob2_read($row[1], 20);
    print $data . "\n";

    cubrid_disconnect($conn);
    ?>

Örnek 2 cubrid_lob2_read() example 2

    <?php
    // test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    $req = cubrid_execute($conn, "select * from test_lob");

    $row = cubrid_fetch_row($req, CUBRID_LOB);

    while (true) {
        if ($data = cubrid_lob2_read($row[1], 1024)) {
            print $data . "\n";
        }
        elseif ($data === false) {
            print "There is no more data\n";
            break;
        }
        else {
            print "There must some errors\n";
            break;
        }
    }

    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_seek

(PECL CUBRID >= 8.4.1)

cubrid_lob2_seek — Move the cursor of a lob object

### Açıklama

function cubrid_lob2_seek(resource `$lob_identifier`, int `$offset`, int `$origin` = CUBRID_CURSOR_CURRENT): bool

The cubrid_lob2_seek() function is used to move the cursor position of a lob object by the value set in the `offset` argument, to the direction set in the `origin` argument.

To set the `origin` argument, you can use `CUBRID_CURSOR_FIRST` to set the cursor position moving forward `offset` units from the first beginning. In this case, `offset` must be a positive value.

If you use `CUBRID_CURSOR_CURRENT` for `origin`, you can move forward or backward. and `offset` can be positive or negative.

If you use `CUBRID_CURSOR_LAST` for `origin`, you can move backward `offset` units from the end of LOB object and `offset` only can be positive.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`offset`
  Number of units you want to move the cursor.
`origin`
  This parameter can be the following values: CUBRID_CURSOR_FIRST: move forward from the first beginning. CUBRID_CURSOR_CURRENT: move forward or backward from the current position. CUBRID_CURSOR_LAST: move backward at the end of LOB object.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_seek() example

    <?php
    // test_lob (id INT, contents CLOB)
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");
    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(2, ?)");

    $lob = cubrid_lob2_new($conn, 'CLOB');
    $len = cubrid_lob2_write($lob, "Hello world");

    cubrid_lob2_seek($lob, 0, CUBRID_CURSOR_LAST);
    cubrid_lob2_write($lob, "beautiful");

    cubrid_lob2_seek($lob, 15, CUBRID_CURSOR_FIRST);
    $data = cubrid_lob2_read($lob, 5);

    echo $data."\n";

    cubrid_lob2_bind($req, 1, $lob);
    cubrid_execute($req);

    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_seek64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_seek64 — Move the cursor of a lob object

### Açıklama

function cubrid_lob2_seek64(resource `$lob_identifier`, string `$offset`, int `$origin` = CUBRID_CURSOR_CURRENT): bool

The cubrid_lob2_seek64() function is used to move the cursor position of a lob object by the value set in the `offset` argument, to the direction set in the `origin` argument. If the `offset` you want to move is larger than an integer data can be stored, you can use this function.

To set the `origin` argument, you can use `CUBRID_CURSOR_FIRST` to set the cursor position moving forward `offset` units from the first beginning. In this case, `offset` must be a positive value.

If you use `CUBRID_CURSOR_CURRENT` for `origin`, you can move forward or backward. and `offset` can be positive or negative.

If you use `CUBRID_CURSOR_LAST` for `origin`, you can move backward `offset` units from the end of LOB object and `offset` only can be positive.

> Bilginize: If you use this function to move the cursor position of the lob object, you should pass `offset` as a string.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`offset`
  Number of units you want to move the cursor.
`origin`
  This parameter can be the following values: CUBRID_CURSOR_FIRST: move forward from the first beginning. CUBRID_CURSOR_CURRENT: move forward or backward from the current position. CUBRID_CURSOR_LAST: move backward at the end of LOB object.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_seek64() example

    <?php
    // test_lob (id INT, contents CLOB)
    // Data length of doc_1.txt should be greater than 20101029056306120215.

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");
    cubrid_bind($req, 1, 1);

    $lob = cubrid_lob2_new($conn, "clob");
    cubrid_lob2_import($lob, "doc_1.txt");
    cubrid_lob2_bind($req, 2, $lob, 'CLOB'); // or cubrid_lob2_bind($req, 2, $lob);

    cubrid_execute($req);

    cubrid_lob2_close($lob);

    $req = cubrid_execute($conn, "select * from test_lob");
    $row = cubrid_fetch_row($req, CUBRID_LOB);
    $lob = $row[1];

    cubrid_lob2_seek64($lob, "20101029056306120215", CUBRID_CURSOR_FIRST);
    $data = cubrid_lob2_read($lob, 20);
    echo $data."\n";
    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_size

(PECL CUBRID >= 8.4.1)

cubrid_lob2_size — Get a lob object's size

### Açıklama

function cubrid_lob2_size(resource `$lob_identifier`): int

The cubrid_lob2_size() function is used to get the size of a lob object.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.

### Dönen Değerler

It will return the size of the LOB object when it processes successfully, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_size64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_size64 — Get a lob object's size

### Açıklama

function cubrid_lob2_size64(resource `$lob_identifier`): string

The cubrid_lob2_size64() function is used to get the size of a lob object. If the size of a lob object is larger than an integer data can be stored, you can use this function and it will return the size as a string.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.

### Dönen Değerler

It will return the size of the LOB object as a string when it processes successfully, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size

# cubrid_lob2_tell

(PECL CUBRID >= 8.4.1)

cubrid_lob2_tell — Tell the cursor position of the LOB object

### Açıklama

function cubrid_lob2_tell(resource `$lob_identifier`): int

The cubrid_lob2_tell() function is used to tell the cursor position of the LOB object.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.

### Dönen Değerler

It will return the cursor position on the LOB object when it processes successfully, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_tell64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_tell64 — Tell the cursor position of the LOB object

### Açıklama

function cubrid_lob2_tell64(resource `$lob_identifier`): string

The cubrid_lob2_tell64() function is used to tell the cursor position of the LOB object. If the size of a lob object is larger than an integer data can be stored, you can use this function and it will return the position information as a string.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.

### Dönen Değerler

It will return the cursor position on the LOB object as a string when it processes successfully, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_write() - Write to a lob object
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lob2_write

(PECL CUBRID >= 8.4.1)

cubrid_lob2_write — Write to a lob object

### Açıklama

function cubrid_lob2_write(resource `$lob_identifier`, string `$buf`): bool

The cubrid_lob2_write() function reads as much as data from `buf` and stores it to the LOB object. Note that this function can only append characters now.

### Bağımsız Değişkenler

`lob_identifier`
  Lob identifier as a result of cubrid_lob2_new() or get from the result set.
`buf`
  Data that need to be written to the lob object.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lob2_write() example 1

    <?php
    // test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(2, ?)");

    $lob = cubrid_lob2_new($conn, 'CLOB');
    $len = cubrid_lob2_write($lob, "Hello world");

    cubrid_lob2_bind($req, 1, $lob);
    cubrid_execute($req);

    cubrid_disconnect($conn);
    ?>

Örnek 2 cubrid_lob2_write() example 2

    <?php
    // test_lob (id INT, contents CLOB)

    $conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

    cubrid_execute($conn,"DROP TABLE if exists test_lob");
    cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

    $req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(1, ?)");
    $lob1 = cubrid_lob2_new($conn, 'CLOB');
    $len = cubrid_lob2_write($lob1, "cubrid php driver");
    cubrid_lob2_bind($req, 1, $lob1);
    cubrid_execute($req);

    $req = cubrid_execute($conn, "select * from test_lob");

    $row = cubrid_fetch_row($req, CUBRID_LOB);
    $lob2 = $row[1];
    cubrid_lob2_seek($lob2, 0, CUBRID_CURSOR_LAST);

    $pos = cubrid_lob2_tell($lob2);
    print "pos before write: $pos\n";

    cubrid_lob2_write($lob2, "Hello world");

    $pos = cubrid_lob2_tell($lob2);
    print "pos after write: $pos\n";

    cubrid_disconnect($conn);
    ?>

### Ayrıca Bakınız

- cubrid_lob2_read() - Read from BLOB/CLOB data
- cubrid_lob2_seek() - Move the cursor of a lob object
- cubrid_lob2_seek64() - Move the cursor of a lob object
- cubrid_lob2_tell() - Tell the cursor position of the LOB object
- cubrid_lob2_tell64() - Tell the cursor position of the LOB object
- cubrid_lob2_size() - Get a lob object's size
- cubrid_lob2_size64() - Get a lob object's size

# cubrid_lock_read

(PECL CUBRID >= 8.3.0)

cubrid_lock_read — Set a read lock on the given OID

### Açıklama

function cubrid_lock_read(resource `$conn_identifier`, string `$oid`): bool

The cubrid_lock_read() function is used to put read lock on the instance pointed by given `oid`.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to put read lock on.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lock_read() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    cubrid_lock_read($conn, $oid);

    $attr = cubrid_get($conn, $oid, "b");
    var_dump($attr);

    $attr = cubrid_get($conn, $oid);
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    string(9) "{1, 2, 3}"
    array(4) {
      ["a"]=>
      string(1) "1"
      ["b"]=>
      array(3) {
        [0]=>
        string(1) "1"
        [1]=>
        string(1) "2"
        [2]=>
        string(1) "3"
      }
      ["c"]=>
      array(4) {
        [0]=>
        string(2) "11"
        [1]=>
        string(2) "22"
        [2]=>
        string(2) "33"
        [3]=>
        string(3) "333"
      }
      ["d"]=>
      string(10) "a         "
    }

### Ayrıca Bakınız

- cubrid_lock_write() - Set a write lock on the given OID

# cubrid_lock_write

(PECL CUBRID >= 8.3.0)

cubrid_lock_write — Set a write lock on the given OID

### Açıklama

function cubrid_lock_write(resource `$conn_identifier`, string `$oid`): bool

The cubrid_lock_write() function is used to put write lock on the instance pointed by the given `oid`.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to put write lock on.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_lock_write() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    cubrid_lock_write($conn, $oid);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_put($conn, $oid, "b", array(2, 4, 8));

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    array(3) {
      [0]=>
      string(1) "2"
      [1]=>
      string(1) "4"
      [2]=>
      string(1) "8"
    }

### Ayrıca Bakınız

- cubrid_lock_read() - Set a read lock on the given OID

# cubrid_move_cursor

(PECL CUBRID >= 8.3.0)

cubrid_move_cursor — Move the cursor in the result

### Açıklama

function cubrid_move_cursor(resource `$req_identifier`, int `$offset`, int `$origin` = CUBRID_CURSOR_CURRENT): bool

The cubrid_move_cursor() function is used to move the current cursor location of `req_identifier` by the value set in the `offset` argument, to the direction set in the `origin` argument. To set the `origin` argument, you can use `CUBRID_CURSOR_FIRST` for the first part of the result, `CUBRID_CURSOR_CURRENT` for the current location of the result, or `CUBRID_CURSOR_LAST` for the last part of the result. If `origin` argument is not explicitly designated, then the function uses `CUBRID_CURSOR_CURRENT` as its default value.

If the value of cursor movement range goes over the valid limit, then the cursor moves to the next location after the valid range for the cursor. For example, if you move 20 units in the result with the size of 10, then the cursor will move to 11th place and return `CUBRID_NO_MORE_DATA`.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.
`offset`
  Number of units you want to move the cursor.
`origin`
  Location where you want to move the cursor from `CUBRID_CURSOR_FIRST`, `CUBRID_CURSOR_CURRENT`, `CUBRID_CURSOR_LAST`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_move_cursor() example

    <?php
    $conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");

    $req = cubrid_execute($conn, "SELECT * FROM code");
    cubrid_move_cursor($req, 1, CUBRID_CURSOR_LAST);

    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_CURRENT);
    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      [0]=>
      string(1) "G"
      [1]=>
      string(4) "Gold"
    }
    array(2) {
      [0]=>
      string(1) "X"
      [1]=>
      string(5) "Mixed"
    }
    array(2) {
      [0]=>
      string(1) "M"
      [1]=>
      string(3) "Man"
    }

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement

# cubrid_next_result

(PECL CUBRID >= 8.4.0)

cubrid_next_result — Get result of next query when executing multiple SQL statements

### Açıklama

function cubrid_next_result(resource `$result`): bool

The cubrid_next_result() function is used to get results of next query if multiple SQL statements are executed and `CUBRID_EXEC_QUERY_ALL` flag is set upon cubrid_execute().

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_next_result() example

    <?php
    $conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");

    $sql_stmt = "SELECT * FROM code; SELECT * FROM history WHERE host_year=2004 AND event_code=20281";
    $res = cubrid_execute($conn, $sql_stmt, CUBRID_EXEC_QUERY_ALL);

    get_result_info($res);
    cubrid_next_result($res);
    get_result_info($res);

    function get_result_info($req)
    {
        printf("\n------------ get_result_info --------------------\n");

        $row_num = cubrid_num_rows($req);
        $col_num = cubrid_num_cols($req);

        $column_name_list = cubrid_column_names($req);
        $column_type_list = cubrid_column_types($req);

        $column_last_name = cubrid_field_name($req, $col_num - 1);
        $column_last_table = cubrid_field_table($req, $col_num - 1);

        $column_last_type = cubrid_field_type($req, $col_num - 1);
        $column_last_len = cubrid_field_len($req, $col_num - 1);

        $column_1_flags = cubrid_field_flags($req, 1);

        printf("%-30s %d\n", "Row count:", $row_num);
        printf("%-30s %d\n", "Column count:", $col_num);
        printf("\n");

        printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Len");
        printf("------------------------------------------------------------------------------\n");

        $size = count($column_name_list);
        for($i = 0; $i < $size; $i++) {
            $column_len = cubrid_field_len($req, $i);
            printf("%-30s %-30s %-15s\n", $column_name_list[$i], $column_type_list[$i], $column_len);
        }
        printf("\n\n");

        printf("%-30s %s\n", "Last Column Name:", $column_last_name);
        printf("%-30s %s\n", "Last Column Table:", $column_last_table);
        printf("%-30s %s\n", "Last Column Type:", $column_last_type);
        printf("%-30s %d\n", "Last Column Len:", $column_last_len);
        printf("%-30s %s\n", "Second Column Flags:", $column_1_flags);

        printf("\n\n");
    }
    ?>

Yukarıdaki örneğin çıktısı:

    ------------ get_result_info --------------------
    Row count:                     6
    Column count:                  2

    Column Names                   Column Types                   Column Len
    ------------------------------------------------------------------------------
    s_name                         char                           1
    f_name                         varchar                        6

    Last Column Name:              f_name
    Last Column Table:             code
    Last Column Type:              varchar
    Last Column Len:               6
    Second Column Flags:

    ------------ get_result_info --------------------
    Row count:                     4
    Column count:                  5

    Column Names                   Column Types                   Column Len
    ------------------------------------------------------------------------------
    event_code                     integer                        11
    athlete                        varchar                        40
    host_year                      integer                        11
    score                          varchar                        10
    unit                           varchar                        5

    Last Column Name:              unit
    Last Column Table:             history
    Last Column Type:              varchar
    Last Column Len:               5
    Second Column Flags:           not_null primary_key unique_key

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement

# cubrid_num_cols

(PECL CUBRID >= 8.3.0)

cubrid_num_cols — Return the number of columns in the result set

### Açıklama

function cubrid_num_cols(resource `$result`): int

The cubrid_num_cols() function is used to get the number of columns from the query result. It can only be used when the query executed is a `SELECT` statement.

### Bağımsız Değişkenler

`result`
  Result.

### Dönen Değerler

Number of columns, when process is successful.

`false`, if SQL statement is not SELECT.

### Örnekler

Örnek 1 cubrid_num_cols() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $req = cubrid_execute($conn, "SELECT * FROM code");

    $row_num = cubrid_num_rows($req);
    $col_num = cubrid_num_cols($req);

    printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Row Num: 6
    Column Num: 2

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_num_rows() - Get the number of rows in the result set

# cubrid_num_rows

(PECL CUBRID >= 8.3.0)

cubrid_num_rows — Get the number of rows in the result set

### Açıklama

function cubrid_num_rows(resource `$result`): int

The cubrid_num_rows() function is used to get the number of rows from the query result. It can be used for `SELECT` statements. For `INSERT`, `UPDATE`, or `DELETE` queries, use the cubrid_affected_rows() function.

Note: The cubrid_num_rows() function can only be used for synchronous query; it returns 0 when it is used for asynchronous query.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute(), cubrid_query() and cubrid_prepare()

### Dönen Değerler

Number of rows, when process is successful.

0 when the query was done in async mode.

-1, if SQL statement is not SELECT.

`false` when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_num_rows() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $req = cubrid_execute($conn, "SELECT * FROM code");

    $row_num = cubrid_num_rows($req);
    $col_num = cubrid_num_cols($req);

    printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Row Num: 6
    Column Num: 2

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_num_cols() - Return the number of columns in the result set
- cubrid_affected_rows() - Return the number of rows affected by the last SQL statement

# cubrid_pconnect

(PECL CUBRID >= 8.3.1)

cubrid_pconnect — Open a persistent connection to a CUBRID server

### Açıklama

function cubrid_pconnect(
string `$host`,
int `$port`,
string `$dbname`,
string `$userid` = ?,
string `$passwd` = ?
): resource

Establishes a persistent connection to a CUBRID server.

cubrid_pconnect() acts very much like cubrid_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, port, dbname and userid. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (cubrid_close() or cubrid_disconnect() will not close links established by cubrid_pconnect()).

This type of link is therefore called 'persistent'.

### Bağımsız Değişkenler

`host`
  Host name or IP address of CUBRID CAS server.
`port`
  Port number of CUBRID CAS server (BROKER_PORT configured in $CUBRID/conf/cubrid_broker.conf).
`dbname`
  Name of database.
`userid`
  User name for the database.
`passwd`
  User password.

### Dönen Değerler

Connection identifier, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_pconnect() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_pconnect("localhost", 33000, "demodb", "dba");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

### Ayrıca Bakınız

- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server
- cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
- cubrid_disconnect() - Close a database connection
- cubrid_close() - Close CUBRID connection

# cubrid_pconnect_with_url

(PECL CUBRID >= 8.3.1)

cubrid_pconnect_with_url — Open a persistent connection to CUBRID server

### Açıklama

function cubrid_pconnect_with_url(string `$conn_url`, string `$userid` = ?, string `$passwd` = ?): resource

Establishes a persistent connection to a CUBRID server.

cubrid_pconnect_with_url() acts very much like cubrid_connect_with_url() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, port, dbname and userid. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (cubrid_close() or cubrid_disconnect() will not close links established by cubrid_pconnect_with_url()).

This type of link is therefore called 'persistent'.

<url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]

<properties> ::= <property> [&<property>]

<properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>]

<properties> ::= login_timeout=<milli_sec>

<properties> ::= query_timeout=<milli_sec>

<properties> ::= disconnect_on_query_timeout=true|false

<alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>]

<host> := HOSTNAME | IP_ADDR

<time> := SECOND

<milli_sec> := MILLI SECOND

- host : A host name or IP address of the master database
- db_name : A name of the database
- db_user : A name of the database user
- db_password : A database user password
- alhosts : Specifies the broker information of the standby server, which is used for failover when it is impossible to connect to the active server. You can specify multiple brokers for failover, and the connection to the brokers is attempted in the order listed in alhosts
- rctime : An interval between the attempts to connect to the active broker in which failure occurred. After a failure occurs, the system connects to the broker specified by althosts (failover), terminates the transaction, and then attempts to connect to the active broker of the master database at every rctime. The default value is 600 seconds.
- login_timeout : Timeout value (unit: msec.) for database login. The default value is 0, which means infinite postponement.
- query_timeout : Timeout value (unit: msec.) for query request. Upon timeout, a message to cancel requesting a query transferred to server is sent. The return value can depend on the disconnect_on_query_timeout configuration; even though the message to cancel a request is sent to server, that request may succeed.
- disconnect_on_query_timeout : Configures a value whether to immediately return an error of function being executed upon timeout. The default value is false.

> Bilginize: `?` and `:` that are used as identifiers in PHP connection URL can't be included in the password. The following is an example of a password that is invalid to use as connection URL because it contains "`?:`". $url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100"; Passwords that contain `?` or `:` may be passed as a separate parameter. $url = "CUBRID:localhost:33000:tbd:::?login_timeout=100"; $conn = cubrid_pconnect_with_url ($url, "dba", "12?"); If user or password is empty,you can't delete "`:`",the following is an example. $url = "CUBRID:localhost:33000:demodb:::";

### Bağımsız Değişkenler

`conn_url`
  A character string that contains server connection information.
`userid`
  User name for the database.
`passwd`
  User password.

### Dönen Değerler

Connection identifier, when process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_pconnect_with_url() url without properties example

    <?php
    $conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::";
    $con = cubrid_pconnect_with_url ($conn_url);

    if ($con) {
       echo "connected successfully";
       cubrid_execute($con, "create table person(id int,name char(16))");
       $req =cubrid_execute($con, "insert into person values(1,'James')");

       if ($req) {
          cubrid_close_request ($req);
          cubrid_commit ($con);
       } else {
          cubrid_rollback ($con);
       }
       cubrid_disconnect ($con);
    }
    ?>

Örnek 2 cubrid_pconnect_with_url() url with properties example

    <?php
    $conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?althost=10.34.63.132:33088&rctime=100";
    $con = cubrid_pconnect_with_url ($conn_url);

    if ($con) {
       echo "connected successfully";
       $req =cubrid_execute($con, "insert into person values(1,'James')");

       if ($req) {
          cubrid_close_request ($req);
          cubrid_commit ($con);
       } else {
          cubrid_rollback ($con);
       }
       cubrid_disconnect ($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server
- cubrid_pconnect() - Open a persistent connection to a CUBRID server
- cubrid_disconnect() - Close a database connection
- cubrid_close() - Close CUBRID connection

# cubrid_prepare

(PECL CUBRID >= 8.3.0)

cubrid_prepare — Prepare a SQL statement for execution

### Açıklama

function cubrid_prepare(resource `$conn_identifier`, string `$prepare_stmt`, int `$option` = 0): resource

The cubrid_prepare() function compiles a SQL statement for a given connection handle and returns a handle that represents the pre-compiled statement.

A prepared statement can be executed several times, which is efficient for repeated execution or for processing long data. Only a single statement can be used, and a parameter can be marked with a question mark (`?`) at the appropriate place in the SQL statement. Add a parameter when binding a value in the `VALUES` clause of an `INSERT` statement or in the `WHERE` clause. Note that a value can be bound to a parameter only by using the cubrid_bind() function.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`prepare_stmt`
  Prepare query.
`option`
  OID return option `CUBRID_INCLUDE_OID`.

### Dönen Değerler

Request identifier, if process is successful, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_prepare() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $sql = <<<EOD
    SELECT g.event_code, e.name
    FROM game g
    JOIN event e ON g.event_code=e.code
    WHERE host_year = ? AND event_code NOT IN (SELECT event_code FROM game WHERE host_year=?) GROUP BY event_code;
    EOD;

    $req = cubrid_prepare($conn, $sql);

    cubrid_bind($req, 1, 2004);
    cubrid_bind($req, 2, 2000);
    cubrid_execute($req);

    $row_num = cubrid_num_rows($req);
    printf("There are %d event that exits in 2004 olympic but not in 2000. For example:\n\n", $row_num);

    printf("%-15s %s\n", "Event_code", "Event_name");
    printf("----------------------------\n");

    $row = cubrid_fetch_assoc($req);
    printf("%-15d %s\n", $row["event_code"], $row["name"]);
    $row = cubrid_fetch_assoc($req);
    printf("%-15d %s\n", $row["event_code"], $row["name"]);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    There are 27 event that exits in 2004 olympic but not in 2000. For example:

    Event_code      Event_name
    ----------------------------
    20063           +91kg
    20070           64kg

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_bind() - Bind variables to a prepared statement as parameters

# cubrid_put

(PECL CUBRID >= 8.3.0)

cubrid_put — Update a column using OID

### Açıklama

function cubrid_put(
resource `$conn_identifier`,
string `$oid`,
string `$attr` = ?,
mixed `$value`
): bool

The cubrid_put() function is used to update an attribute of the instance of the given `oid`.

You can update single attribute by using string data type to set `attr`. In such case, you can use integer, floating point or string type data for the `value` argument. To update multiple number of attributes, you can disregard the `attr` argument, and set `value` argument with associative array data type.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance that you want to update.
`attr`
  Name of the attribute that you want to update.
`value`
  New value that you want to assign to the attribute.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_put() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_put($conn, $oid, "b", array(2, 4, 8));

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    array(3) {
      [0]=>
      string(1) "2"
      [1]=>
      string(1) "4"
      [2]=>
      string(1) "8"
    }

### Ayrıca Bakınız

- cubrid_get() - Get a column using OID
- cubrid_set_add() - Insert a single element to set type column using OID
- cubrid_set_drop() - Delete an element from set type column using OID
- cubrid_seq_insert() - Insert an element to a sequence type column using OID
- cubrid_seq_drop() - Delete an element from sequence type column using OID
- cubrid_seq_put() - Update the element value of sequence type column using OID

# cubrid_rollback

(PECL CUBRID >= 8.3.0)

cubrid_rollback — Roll back a transaction

### Açıklama

function cubrid_rollback(resource `$conn_identifier`): bool

The cubrid_rollback() function executes rollback on the transaction pointed by `conn_identifier`, currently in progress.

Connection to server is closed after calling cubrid_rollback(). Connection handle, however, is still valid.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_rollback() example

    <?php
    $conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");
    cubrid_set_autocommit($conn,false);

    @cubrid_execute($conn, "DROP TABLE publishers");

    $sql = <<<EOD
    CREATE TABLE publishers(
    pub_id CHAR(3),
    pub_name VARCHAR(20),
    city VARCHAR(15),
    state CHAR(2),
    country VARCHAR(15)
    )
    EOD;

    if (!cubrid_execute($conn, $sql)) {
        printf("Error facility: %d\nError code: %d\nError msg: %s\n", cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

        cubrid_disconnect($conn);
        exit;
    }

    $req = cubrid_prepare($conn, "INSERT INTO publishers VALUES(?, ?, ?, ?, ?)");

    $id_list = array("P01", "P02", "P03", "P04");
    $name_list = array("Abatis Publishers", "Core Dump Books", "Schadenfreude Press", "Tenterhooks Press");
    $city_list = array("New York", "San Francisco", "Hamburg", "Berkeley");
    $state_list = array("NY", "CA", NULL, "CA");
    $country_list = array("USA", "USA", "Germany", "USA");

    for ($i = 0, $size = count($id_list); $i < $size; $i++) {
        cubrid_bind($req, 1, $id_list[$i]);
        cubrid_bind($req, 2, $name_list[$i]);
        cubrid_bind($req, 3, $city_list[$i]);
        cubrid_bind($req, 4, $state_list[$i]);
        cubrid_bind($req, 5, $country_list[$i]);

        if (!($ret = cubrid_execute($req))) {
            break;
        }
    }

    if (!$ret) {
        cubrid_rollback($conn);
    } else {
        cubrid_commit($conn);

        $req = cubrid_execute($conn, "SELECT * FROM publishers");
        while ($result = cubrid_fetch_assoc($req)) {
            printf("%-3s %-20s %-15s %-3s %-15s\n",
                $result["pub_id"], $result["pub_name"], $result["city"], $result["state"], $result["country"]);
        }
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    P01 Abatis Publishers    New York        NY  USA
    P02 Core Dump Books      San Francisco   CA  USA
    P03 Schadenfreude Press  Hamburg             Germany
    P04 Tenterhooks Press    Berkeley        CA  USA

### Ayrıca Bakınız

- cubrid_commit() - Commit a transaction
- cubrid_disconnect() - Close a database connection

# cubrid_schema

(PECL CUBRID >= 8.3.0)

cubrid_schema — Get the requested schema information

### Açıklama

function cubrid_schema(
resource `$conn_identifier`,
int `$schema_type`,
string `$class_name` = ?,
string `$attr_name` = ?
): array

The cubrid_schema() function is used to get the requested schema information from database. To get information about specific class, set the `class_name`, to get information about specific attribute (can be used only with `CUBRID_SCH_ATTR_PRIVILEGE`), set the `attr_name`.

The result of the cubrid_schema() function is returned as a two-dimensional array (column (associative array) * row (numeric array)). The following tables shows types of schema and the column structure of the result array to be returned based on the schema type.

Result Composition of Each Type
Schema | Column Number | Column Name | Value
--- | --- | --- | ---
CUBRID_SCH_CLASS | 1 | NAME |
| 2 | TYPE | 0:system class 1:vclass 2:class
CUBRID_SCH_VCLASS | 1 | NAME |
| 2 | TYPE | 1:vclass
CUBRID_SCH_QUERY_SPEC | 1 | QUERY_SPEC |
CUBRID_SCH_ATTRIBUTE / CUBRID_SCH_CLASS_ATTRIBUTE | 1 | ATTR_NAME |
| 2 | DOMAIN |
| 3 | SCALE |
| 4 | PRECISION |
| 5 | INDEXED | 1:indexed
| 6 | NOT NULL | 1:not null
| 7 | SHARED | 1:shared
| 8 | UNIQUE | 1:unique
| 9 | DEFAULT |
| 10 | ATTR_ORDER | base:1
| 11 | CLASS_NAME |
| 12 | SOURCE_CLASS |
| 13 | IS_KEY | 1:key
CUBRID_SCH_METHOD / CUBRID_SCH_CLASS_METHOD | 1 | NAME |
| 2 | RET_DOMAIN |
| 3 | ARG_DOMAIN |
CUBRID_SCH_METHOD_FILE | 1 | METHOD_FILE |
CUBRID_SCH_SUPERCLASS / CUBRID_SCH_DIRECT_SUPER_CLASS / CUBRID_SCH_SUBCLASS | 1 | CLASS_NAME |
| 2 | TYPE | 0:system class 1:vclass 2:class
CUBRID_SCH_CONSTRAINT | 1 | TYPE | 0:unique 1:index 2:reverse unique 3:reverse index
| 2 | NAME |
| 3 | ATTR_NAME |
| 4 | NUM_PAGES |
| 5 | NUM_KEYS |
| 6 | PRIMARY_KEY | 1:primary key
| 7 | KEY_ORDER | base:1
CUBRID_SCH_TRIGGER | 1 | NAME |
| 2 | STATUS |
| 3 | EVENT |
| 4 | TARGET_CLASS |
| 5 | TARGET_ATTR |
| 6 | ACTION_TIME |
| 7 | ACTION |
| 8 | PRIORITY |
| 9 | CONDITION_TIME |
| 10 | CONDITION |
CUBRID_SCH_CLASS_PRIVILEGE / CUBRID_SCH_ATTR_PRIVILEGE | 1 | CLASS_NAME / ATTR_NAME |
| 2 | PRIVILEGE |
| 3 | GRANTABLE |
CUBRID_SCH_PRIMARY_KEY | 1 | CLASS_NAME |
| 2 | ATTR_NAME |
| 3 | KEY_SEQ | base:1
| 4 | KEY_NAME |
CUBRID_SCH_IMPORTED_KEYS / CUBRID_SCH_EXPORTED_KEYS / CUBRID_SCH_CROSS_REFERENCE | 1 | PKTABLE_NAME |
| 2 | PKCOLUMN_NAME |
| 3 | FKTABLE_NAME | base:1
| 4 | FKCOLUMN_NAME |
| 5 | KEY_SEQ | base:1
| 6 | UPDATE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
| 7 | DELETE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
| 8 | FK_NAME |
| 9 | PK_NAME |

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`schema_type`
  Schema data that you want to know.
`class_name`
  Class you want to know the schema of.
`attr_name`
  Attribute you want to know the schema of.

### Dönen Değerler

Array containing the schema information, when process is successful, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.1 | Change return value: when process is unsuccessful, return false, not -1.

### Örnekler

Örnek 1 cubrid_schema() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    printf("\n--- Primary Key ---\n");
    $pk = cubrid_schema($conn, CUBRID_SCH_PRIMARY_KEY, "game");
    var_dump($pk);

    printf("\n--- Foreign Keys ---\n");
    $fk = cubrid_schema($conn, CUBRID_SCH_IMPORTED_KEYS, "game");
    var_dump($fk);

    printf("\n--- Column Attribute ---\n");
    $attr = cubrid_schema($conn, CUBRID_SCH_ATTRIBUTE, "stadium", "area");
    var_dump($attr);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    --- Primary Key ---
    array(3) {
      [0]=>
      array(4) {
        ["CLASS_NAME"]=>
        string(4) "game"
        ["ATTR_NAME"]=>
        string(12) "athlete_code"
        ["KEY_SEQ"]=>
        string(1) "3"
        ["KEY_NAME"]=>
        string(41) "pk_game_host_year_event_code_athlete_code"
      }
      [1]=>
      array(4) {
        ["CLASS_NAME"]=>
        string(4) "game"
        ["ATTR_NAME"]=>
        string(10) "event_code"
        ["KEY_SEQ"]=>
        string(1) "2"
        ["KEY_NAME"]=>
        string(41) "pk_game_host_year_event_code_athlete_code"
      }
      [2]=>
      array(4) {
        ["CLASS_NAME"]=>
        string(4) "game"
        ["ATTR_NAME"]=>
        string(9) "host_year"
        ["KEY_SEQ"]=>
        string(1) "1"
        ["KEY_NAME"]=>
        string(41) "pk_game_host_year_event_code_athlete_code"
      }
    }

    --- Foreign Keys ---
    array(2) {
      [0]=>
      array(9) {
        ["PKTABLE_NAME"]=>
        string(7) "athlete"
        ["PKCOLUMN_NAME"]=>
        string(4) "code"
        ["FKTABLE_NAME"]=>
        string(4) "game"
        ["FKCOLUMN_NAME"]=>
        string(12) "athlete_code"
        ["KEY_SEQ"]=>
        string(1) "1"
        ["UPDATE_RULE"]=>
        string(1) "1"
        ["DELETE_RULE"]=>
        string(1) "1"
        ["FK_NAME"]=>
        string(20) "fk_game_athlete_code"
        ["PK_NAME"]=>
        string(15) "pk_athlete_code"
      }
      [1]=>
      array(9) {
        ["PKTABLE_NAME"]=>
        string(5) "event"
        ["PKCOLUMN_NAME"]=>
        string(4) "code"
        ["FKTABLE_NAME"]=>
        string(4) "game"
        ["FKCOLUMN_NAME"]=>
        string(10) "event_code"
        ["KEY_SEQ"]=>
        string(1) "1"
        ["UPDATE_RULE"]=>
        string(1) "1"
        ["DELETE_RULE"]=>
        string(1) "1"
        ["FK_NAME"]=>
        string(18) "fk_game_event_code"
        ["PK_NAME"]=>
        string(13) "pk_event_code"
      }
    }

    --- Column Attribute ---
    array(1) {
      [0]=>
      array(13) {
        ["ATTR_NAME"]=>
        string(4) "area"
        ["DOMAIN"]=>
        string(1) "7"
        ["SCALE"]=>
        string(1) "2"
        ["PRECISION"]=>
        string(2) "10"
        ["INDEXED"]=>
        string(1) "0"
        ["NON_NULL"]=>
        string(1) "0"
        ["SHARED"]=>
        string(1) "0"
        ["UNIQUE"]=>
        string(1) "0"
        ["DEFAULT"]=>
        NULL
        ["ATTR_ORDER"]=>
        string(1) "4"
        ["CLASS_NAME"]=>
        string(7) "stadium"
        ["SOURCE_CLASS"]=>
        string(7) "stadium"
        ["IS_KEY"]=>
        string(1) "0"
      }
    }

# cubrid_seq_drop

(PECL CUBRID >= 8.3.0)

cubrid_seq_drop — Delete an element from sequence type column using OID

### Açıklama

function cubrid_seq_drop(
resource `$conn_identifier`,
string `$oid`,
string `$attr_name`,
int `$index`
): bool

The cubrid_seq_drop() function is used to delete an element you request from the given sequence type attribute in the database.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance you want to work with.
`attr_name`
  Name of the attribute that you want to delete an element from.
`index`
  Index of the element that you want to delete (1-based).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_seq_drop() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_seq_drop($conn, $oid, "c", 4);

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(2) "11"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
      [3]=>
      string(3) "333"
    }
    array(3) {
      [0]=>
      string(2) "11"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
    }

### Ayrıca Bakınız

- cubrid_seq_insert() - Insert an element to a sequence type column using OID
- cubrid_seq_put() - Update the element value of sequence type column using OID

# cubrid_seq_insert

(PECL CUBRID >= 8.3.0)

cubrid_seq_insert — Insert an element to a sequence type column using OID

### Açıklama

function cubrid_seq_insert(
resource `$conn_identifier`,
string `$oid`,
string `$attr_name`,
int `$index`,
string `$seq_element`
): bool

The cubrid_seq_insert() function is used to insert an element to a sequence type attribute in a requested location.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance you want to work with.
`attr_name`
  Name of the attribute you want to insert an instance to.
`index`
  Location of the element, you want to insert the element to (1-based).
`seq_element`
  Content of the element that you want to insert.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_seq_insert() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_seq_insert($conn, $oid, "c", 5, "44");

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(2) "11"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
      [3]=>
      string(3) "333"
    }
    array(5) {
      [0]=>
      string(2) "11"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
      [3]=>
      string(3) "333"
      [4]=>
      string(2) "44"
    }

### Ayrıca Bakınız

- cubrid_seq_drop() - Delete an element from sequence type column using OID
- cubrid_seq_put() - Update the element value of sequence type column using OID

# cubrid_seq_put

(PECL CUBRID >= 8.3.0)

cubrid_seq_put — Update the element value of sequence type column using OID

### Açıklama

function cubrid_seq_put(
resource `$conn_identifier`,
string `$oid`,
string `$attr_name`,
int `$index`,
string `$seq_element`
): bool

The cubrid_seq_put() function is used to update the content of the requested element in a sequent type attribute using OID.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance you want to work with.
`attr_name`
  Name of the attribute that you want to update an element.
`index`
  Index (1-based) of the element that you want to update.
`seq_element`
  New content that you want to use for the update.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_seq_put() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_seq_put($conn, $oid, "c", 1, "111");

    $attr = cubrid_col_get($conn, $oid, "c");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(2) "11"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
      [3]=>
      string(3) "333"
    }
    array(4) {
      [0]=>
      string(3) "111"
      [1]=>
      string(2) "22"
      [2]=>
      string(2) "33"
      [3]=>
      string(3) "333"
    }

### Ayrıca Bakınız

- cubrid_seq_drop() - Delete an element from sequence type column using OID
- cubrid_seq_insert() - Insert an element to a sequence type column using OID

# cubrid_set_add

(PECL CUBRID >= 8.3.0)

cubrid_set_add — Insert a single element to set type column using OID

### Açıklama

function cubrid_set_add(
resource `$conn_identifier`,
string `$oid`,
string `$attr_name`,
string `$set_element`
): bool

The cubrid_set_add() function is used to insert a single element to a set type attribute (set, multiset, sequence) you requested.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance you want to work with.
`attr_name`
  Name of the attribute you want to insert an element.
`set_element`
  Content of the element you want to insert.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_set_add() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_set_add($conn, $oid, "b", "4");

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    array(4) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
      [3]=>
      string(1) "4"
    }

### Ayrıca Bakınız

- cubrid_seq_drop() - Delete an element from sequence type column using OID

# cubrid_set_autocommit

(PECL CUBRID >= 8.4.0)

cubrid_set_autocommit — Set autocommit mode of the connection

### Açıklama

function cubrid_set_autocommit(resource `$conn_identifier`, bool `$mode`): bool

The cubrid_set_autocommit() function is used to set the CUBRID database auto-commit mode of the current database connection.

In CUBRID PHP, auto-commit mode is disabled by default for transaction management. When auto-commit mode is turned from off to on, any pending work is automatically committed.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`mode`
  Auto-commit mode. The following constants can be used:
  - `CUBRID_AUTOCOMMIT_FALSE`
  - `CUBRID_AUTOCOMMIT_TRUE`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_get_autocommit() - Get auto-commit mode of the connection
- cubrid_commit() - Commit a transaction

# cubrid_set_db_parameter

(PECL CUBRID >= 8.4.0)

cubrid_set_db_parameter — Sets the CUBRID database parameters

### Açıklama

function cubrid_set_db_parameter(resource `$conn_identifier`, int `$param_type`, int `$param_value`): bool

The cubrid_set_db_parameter() function is used to set the CUBRID database parameters. It can set the following CUBRID database parameters:

- `PARAM_ISOLATION_LEVEL`
- `PARAM_LOCK_TIMEOUT`

> Bilginize: The auto-commit mode can be set by using cubrid_set_autocommit().

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.
`param_type`
  Database parameter type.
`param_value`
  Isolation level value (1-6) or lock timeout (in seconds) value.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_get_db_parameter() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    $params = cubrid_get_db_parameter($conn);
    var_dump($params);

    cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_TRUE);
    cubrid_set_db_parameter($conn, CUBRID_PARAM_ISOLATION_LEVEL, 2);

    $params_new = cubrid_get_db_parameter($conn);
    var_dump($params_new);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      ["PARAM_ISOLATION_LEVEL"]=>
      int(3)
      ["PARAM_LOCK_TIMEOUT"]=>
      int(-1)
      ["PARAM_MAX_STRING_LENGTH"]=>
      int(1073741823)
      ["PARAM_AUTO_COMMIT"]=>
      int(0)
    }
    array(4) {
      ["PARAM_ISOLATION_LEVEL"]=>
      int(2)
      ["PARAM_LOCK_TIMEOUT"]=>
      int(-1)
      ["PARAM_MAX_STRING_LENGTH"]=>
      int(1073741823)
      ["PARAM_AUTO_COMMIT"]=>
      int(1)
    }

### Ayrıca Bakınız

- cubrid_get_db_parameter() - Returns the CUBRID database parameters
- cubrid_set_autocommit() - Set autocommit mode of the connection

# cubrid_set_drop

(PECL CUBRID >= 8.3.0)

cubrid_set_drop — Delete an element from set type column using OID

### Açıklama

function cubrid_set_drop(
resource `$conn_identifier`,
string `$oid`,
string `$attr_name`,
string `$set_element`
): bool

The cubrid_set_drop() function is used to delete an element that you request from the given set type (set, multiset) attribute of the database.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  OID of the instance you want to work with.
`attr_name`
  Name of the attribute you want to delete an element from.
`set_element`
  Content of the element you want to delete.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 cubrid_set_drop() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb", "dba");

    @cubrid_execute($conn, "DROP TABLE foo");
    cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
    cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

    $req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

    cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($req);

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_set_drop($conn, $oid, "b", "1");

    $attr = cubrid_col_get($conn, $oid, "b");
    var_dump($attr);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    array(2) {
      [0]=>
      string(1) "2"
      [1]=>
      string(1) "3"
    }

### Ayrıca Bakınız

- cubrid_set_add() - Insert a single element to set type column using OID

# cubrid_set_query_timeout

(PECL CUBRID >= 8.4.1)

cubrid_set_query_timeout — Set the timeout time of query execution

### Açıklama

function cubrid_set_query_timeout(resource `$req_identifier`, int `$timeout`): bool

The cubrid_set_query_timeout() function is used to set the timeout time of query execution.

### Bağımsız Değişkenler

`req_identifier`
  Request identifier.
`timeout`
  Timeout time in milliseconds.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- cubrid_get_query_timeout() - Get the query timeout value of the request

# cubrid_version

(PECL CUBRID >= 8.3.0)

cubrid_version — Get the CUBRID PHP module's version

### Açıklama

function cubrid_version(): string

The cubrid_version() function is used to get the CUBRID PHP module's version.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Version information (eg. "8.3.1.0001").

### Örnekler

Örnek 1 cubrid_version() example

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("localhost", 33088, "demodb", "dba");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID PHP Version:            9.1.0.0001

    PARAM_ISOLATION_LEVEL          3
    LOCK_TIMEOUT                   -1
    MAX_STRING_LENGTH              1073741823
    PARAM_AUTO_COMMIT              1

    Server Info:                   9.1.0.0212
    Client Info:                   9.1.0

    CUBRID Charset:                iso8859-1

### Ayrıca Bakınız

- cubrid_error_code() - Get error code for the most recent function call
- cubrid_error_code_facility() - Get the facility code of error

## İçindekiler

- cubrid_bind — Bind variables to a prepared statement as parameters
- cubrid_close_prepare — Close the request handle
- cubrid_close_request — Close the request handle
- cubrid_col_get — Get contents of collection type column using OID
- cubrid_col_size — Get the number of elements in collection type column using OID
- cubrid_column_names — Get the column names in result
- cubrid_column_types — Get column types in result
- cubrid_commit — Commit a transaction
- cubrid_connect — Open a connection to a CUBRID Server
- cubrid_connect_with_url — Establish the environment for connecting to CUBRID server
- cubrid_current_oid — Get OID of the current cursor location
- cubrid_disconnect — Close a database connection
- cubrid_drop — Delete an instance using OID
- cubrid_error_code — Get error code for the most recent function call
- cubrid_error_code_facility — Get the facility code of error
- cubrid_error_msg — Get last error message for the most recent function call
- cubrid_execute — Execute a prepared SQL statement
- cubrid_fetch — Fetch the next row from a result set
- cubrid_free_result — Free the memory occupied by the result data
- cubrid_get — Get a column using OID
- cubrid_get_autocommit — Get auto-commit mode of the connection
- cubrid_get_charset — Return the current CUBRID connection charset
- cubrid_get_class_name — Get the class name using OID
- cubrid_get_client_info — Return the client library version
- cubrid_get_db_parameter — Returns the CUBRID database parameters
- cubrid_get_query_timeout — Get the query timeout value of the request
- cubrid_get_server_info — Return the CUBRID server version
- cubrid_insert_id — Return the ID generated for the last updated AUTO_INCREMENT column
- cubrid_is_instance — Check whether the instance pointed by OID exists
- cubrid_lob_close — Close BLOB/CLOB data
- cubrid_lob_export — Export BLOB/CLOB data to file
- cubrid_lob_get — Get BLOB/CLOB data
- cubrid_lob_send — Read BLOB/CLOB data and send straight to browser
- cubrid_lob_size — Get BLOB/CLOB data size
- cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters
- cubrid_lob2_close — Close LOB object
- cubrid_lob2_export — Export the lob object to a file
- cubrid_lob2_import — Import BLOB/CLOB data from a file
- cubrid_lob2_new — Create a lob object
- cubrid_lob2_read — Read from BLOB/CLOB data
- cubrid_lob2_seek — Move the cursor of a lob object
- cubrid_lob2_seek64 — Move the cursor of a lob object
- cubrid_lob2_size — Get a lob object's size
- cubrid_lob2_size64 — Get a lob object's size
- cubrid_lob2_tell — Tell the cursor position of the LOB object
- cubrid_lob2_tell64 — Tell the cursor position of the LOB object
- cubrid_lob2_write — Write to a lob object
- cubrid_lock_read — Set a read lock on the given OID
- cubrid_lock_write — Set a write lock on the given OID
- cubrid_move_cursor — Move the cursor in the result
- cubrid_next_result — Get result of next query when executing multiple SQL statements
- cubrid_num_cols — Return the number of columns in the result set
- cubrid_num_rows — Get the number of rows in the result set
- cubrid_pconnect — Open a persistent connection to a CUBRID server
- cubrid_pconnect_with_url — Open a persistent connection to CUBRID server
- cubrid_prepare — Prepare a SQL statement for execution
- cubrid_put — Update a column using OID
- cubrid_rollback — Roll back a transaction
- cubrid_schema — Get the requested schema information
- cubrid_seq_drop — Delete an element from sequence type column using OID
- cubrid_seq_insert — Insert an element to a sequence type column using OID
- cubrid_seq_put — Update the element value of sequence type column using OID
- cubrid_set_add — Insert a single element to set type column using OID
- cubrid_set_autocommit — Set autocommit mode of the connection
- cubrid_set_db_parameter — Sets the CUBRID database parameters
- cubrid_set_drop — Delete an element from set type column using OID
- cubrid_set_query_timeout — Set the timeout time of query execution
- cubrid_version — Get the CUBRID PHP module's version

# CUBRID MySQL Compatibility Functions

# cubrid_affected_rows

(PECL CUBRID >= 8.3.0)

cubrid_affected_rows — Return the number of rows affected by the last SQL statement

### Açıklama

function cubrid_affected_rows(resource `$conn_identifier` = ?): int
function cubrid_affected_rows(resource `$req_identifier` = ?): int

The cubrid_affected_rows() function is used to get the number of rows affected by the SQL statement (INSERT, DELETE, UPDATE).

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.
`req_identifier`
  Request Identifier, could be returned from either cubrid_prepare() or cubrid_execute(). If the request identifier is not specified, the last identifier requested by cubrid_prepare() or cubrid_execute() is assumed.

### Dönen Değerler

Number of rows affected by the SQL statement, when process is successful.

-1, when SQL statement is not INSERT, DELETE or UPDATE.

`false`, when the request identifier is not specified, and there is no last request.

### Örnekler

Örnek 1 cubrid_affected_rows() example

    <?php
    $conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
    cubrid_execute($conn, "DROP TABLE IF EXISTS cubrid_test");
    cubrid_execute($conn, "CREATE TABLE cubrid_test (d varchar)");
    $sql_stmt = "INSERT INTO cubrid_test(d) VALUES('php-test')";
    $req = cubrid_prepare($conn, $sql_stmt);

    for ($i = 0; $i < 10; $i++) {
        cubrid_execute($req);
    }
    cubrid_commit($conn);

    $req = cubrid_execute($conn, "DELETE FROM cubrid_test WHERE d='php-test'", CUBRID_ASYNC);
    var_dump(cubrid_affected_rows());
    var_dump(cubrid_affected_rows($conn));
    var_dump(cubrid_affected_rows($req));

    cubrid_disconnect($conn);

    print "done!";
    ?>

Yukarıdaki örneğin çıktısı:

    int(10)
    int(10)
    int(10)
    done!

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement

# cubrid_client_encoding

(PECL CUBRID >= 8.3.1)

cubrid_client_encoding — Return the current CUBRID connection charset

### Açıklama

function cubrid_client_encoding(resource `$conn_identifier` = ?): string

This function returns the current CUBRID connection charset and is similar to the CUBRID function cubrid_get_charset().

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.

### Dönen Değerler

A string that represents the CUBRID connection charset; on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_client_encoding() example

    <?php

    $con = cubrid_connect("localhost", 33000, "demodb");
    if (!$con)
    {
        die('Could not connect.');
    }

    printf("CUBRID current charset: %s\n", cubrid_client_encoding($con));

    ?>

Yukarıdaki örneğin çıktısı:

    CUBRID current charset: iso8859-1

### Ayrıca Bakınız

- cubrid_get_charset() - Return the current CUBRID connection charset

# cubrid_close

(PECL CUBRID >= 8.3.1)

cubrid_close — Close CUBRID connection

### Açıklama

function cubrid_close(resource `$conn_identifier` = ?): bool

The cubrid_close() function ends the transaction currently in process, closes the connection handle and disconnects from server. If there is any request handles not closed yet at this point, they will be closed. It is similar to the CUBRID function cubrid_disconnect().

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

`true`, when process is successful.

`false`, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_close() example

    <?php
    $con = cubrid_connect ("localhost", 33000, "demodb");
    if ($con) {
       echo "connected successfully";
       $req = cubrid_execute ( $con, "insert into person values(1,'James')");
       if ($req) {
          cubrid_close_request ($req);
          cubrid_commit ($con);
       } else {
          cubrid_rollback ($con);
       }
       cubrid_close ($con);
    }
    ?>

### Ayrıca Bakınız

- cubrid_disconnect() - Close a database connection
- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server

# cubrid_data_seek

(PECL CUBRID >= 8.3.0)

cubrid_data_seek — Move the internal row pointer of the CUBRID result

### Açıklama

function cubrid_data_seek(resource `$result`, int `$row_number`): bool

This function performs the moving of the internal row pointer of the CUBRID result (associated with the specified result identifier) to point to a specific row number. There are functions, such as cubrid_fetch_assoc(), which use the currently stored value of row number.

### Bağımsız Değişkenler

`result`
  The result.
`row_number`
  This is the desired row number of the new result pointer.

### Dönen Değerler

Returns `true` on success or `false` on failure.

### Örnekler

Örnek 1 cubrid_data_seek() example

    <?php
    $conn = cubrid_connect("127.0.0.1", 33000, "demodb");

    $req = cubrid_execute($conn, "SELECT * FROM code");
    cubrid_data_seek($req, 0);

    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_data_seek($req, 2);
    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_data_seek($req, 4);
    $result = cubrid_fetch_row($req);
    var_dump($result);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      [0]=>
      string(1) "X"
      [1]=>
      string(5) "Mixed"
    }
    array(2) {
      [0]=>
      string(1) "M"
      [1]=>
      string(3) "Man"
    }
    array(2) {
      [0]=>
      string(1) "S"
      [1]=>
      string(6) "Silver"
    }

# cubrid_db_name

(PECL CUBRID >= 8.3.1)

cubrid_db_name — Get db name from results of cubrid_list_dbs

### Açıklama

function cubrid_db_name(array `$result`, int `$index`): string

Retrieve the database name from a call to cubrid_list_dbs().

### Bağımsız Değişkenler

`result`
  The result pointer from a call to cubrid_list_dbs().
`index`
  The index into the result set.

### Dönen Değerler

Returns the database name on success, and `false` on failure. If `false` is returned, use cubrid_error() to determine the nature of the error.

### Örnekler

Örnek 1 cubrid_db_name() example

    <?php
    error_reporting(E_ALL);

    $conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
    $db_list = cubrid_list_dbs($conn);

    $i = 0;
    $cnt = count($db_list);
    while ($i < $cnt) {
        echo cubrid_db_name($db_list, $i) . "\n";
        $i++;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    demodb

### Ayrıca Bakınız

- cubrid_list_dbs() - Return an array with the list of all existing CUBRID databases

# cubrid_errno

(PECL CUBRID >= 8.3.1)

cubrid_errno — Return the numerical value of the error message from previous CUBRID operation

### Açıklama

function cubrid_errno(resource `$conn_identifier` = ?): int

Returns the error number from the last CUBRID function.

The cubrid_errno() function is used to get the error code of the error that occurred during the API execution. Usually, it gets the error code when API returns false as its return value.

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

Returns the error number from the last CUBRID function, or `0` (zero) if no error occurred.

### Örnekler

Örnek 1 cubrid_errno() example

    <?php
    $con = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
    $req = cubrid_execute($con, "select id, name from person");
    if ($req) {
        while (list ($id, $name) = cubrid_fetch($req))
        echo $id, $name;
    } else {
        echo "Error Code: ", cubrid_errno($con);
        echo "Error Message: ", cubrid_error($con);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Error Code: -493 Error Message: Syntax: Unknown class "person". select id, [name] from person

### Ayrıca Bakınız

- cubrid_error() - Get the error message
- cubrid_error_code() - Get error code for the most recent function call
- cubrid_error_msg() - Get last error message for the most recent function call

# cubrid_error

(PECL CUBRID >= 8.3.1)

cubrid_error — Get the error message

### Açıklama

function cubrid_error(resource `$connection` = ?): string

The cubrid_error() function is used to get the error message that occurred during the use of CUBRID API. Usually, it gets error message when API returns false as its return value.

### Bağımsız Değişkenler

`connection`
  The CUBRID connection.

### Dönen Değerler

Error message that occurred.

### Örnekler

Örnek 1 cubrid_error() example

    <?php
    $con = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
    $req = cubrid_execute($con, "select id, name from person");
    if ($req) {
        while (list ($id, $name) = cubrid_fetch($req))
        echo $id, $name;
    } else {
        echo "Error Code: ", cubrid_errno($con);
        echo "Error Message: ", cubrid_error($con);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Error Code: -493 Error Message: Syntax: Unknown class "person". select id, [name] from person

### Ayrıca Bakınız

- cubrid_errno() - Return the numerical value of the error message from previous CUBRID operation
- cubrid_error_code() - Get error code for the most recent function call
- cubrid_error_msg() - Get last error message for the most recent function call

# cubrid_fetch_array

(PECL CUBRID >=8.3.0)

cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both

### Açıklama

function cubrid_fetch_array(resource `$result`, int `$type` = CUBRID_BOTH): array

The cubrid_fetch_array() function is used to get a single row from the query result and returns an array. The cursor automatically moves to the next row after getting the result.

### Bağımsız Değişkenler

`result`
  `Result` comes from a call to cubrid_execute()
`type`
  Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH. If you need to operate the lob object, you can use CUBRID_LOB.

### Dönen Değerler

Returns an array of strings that corresponds to the fetched row, when process is successful.

`false`, when there are no more rows; NULL, when process is unsuccessful.

The type of returned array depends on how type is defined. By using CUBRID_BOTH (default), you'll get an array with both associative and number indices, and you can decide which data type to use by setting the `type` argument. The `type` variable can be set to one of the following values:

- CUBRID_NUM : Numerical array (0-based)
- CUBRID_ASSOC : Associative array
- CUBRID_BOTH : Numerical & Associative array (default)

### Örnekler

Örnek 1 cubrid_fetch_array() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

    printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
    while ($row = cubrid_fetch_array($req, CUBRID_NUM)) {
        printf("%-40s %-10s %-6s %-20s\n", $row[0], $row[1], $row[2], $row[3]);
    }

    // if you want to operate LOB object, you can use cubrid_fetch_array($req, CUBRID_NUM | CUBRID_LOB)

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    name                                     area       seats  address
    Panathinaiko Stadium                     86300.00   50000  Athens, Greece
    Olympic Stadium                          54700.00   13000  Athens, Greece
    Olympic Indoor Hall                      34100.00   18800  Athens, Greece
    Olympic Hall                             52400.00   21000  Athens, Greece
    Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
    Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
    Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
    Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
    Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_fetch() - Fetch the next row from a result set
- cubrid_fetch_row() - Return a numerical array with the values of the current row
- cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
- cubrid_fetch_object() - Fetch the next row and return it as an object

# cubrid_fetch_assoc

(PECL CUBRID >= 8.3.0)

cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row

### Açıklama

function cubrid_fetch_assoc(resource `$result`, int `$type` = ?): array

This function returns the associative array, that corresponds to the fetched row, and then moves the internal data pointer ahead, or returns FALSE when the end is reached.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`type`
  Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

### Dönen Değerler

Associative array, when process is successful.

`false`, when there are no more rows; NULL, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_fetch_assoc() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

    printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
    while ($row = cubrid_fetch_assoc($req)) {
        printf("%-40s %-10s %-6s %-20s\n",
            $row["name"], $row["area"], $row["seats"], $row["address"]);
    }

    // if you want to operate LOB object, you can use cubrid_fetch_assoc($req, CUBRID_LOB)

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    name                                     area       seats  address
    Panathinaiko Stadium                     86300.00   50000  Athens, Greece
    Olympic Stadium                          54700.00   13000  Athens, Greece
    Olympic Indoor Hall                      34100.00   18800  Athens, Greece
    Olympic Hall                             52400.00   21000  Athens, Greece
    Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
    Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
    Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
    Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
    Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_fetch() - Fetch the next row from a result set
- cubrid_fetch_row() - Return a numerical array with the values of the current row
- cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- cubrid_fetch_object() - Fetch the next row and return it as an object

# cubrid_fetch_field

(PECL CUBRID >= 8.3.1)

cubrid_fetch_field — Get column information from a result and return as an object

### Açıklama

function cubrid_fetch_field(resource `$result`, int `$field_offset` = 0): object

This function returns an object with certain properties of the specific column. The properties of the object are:

`name`
  column name
`table`
  name of the table that the column belongs to
`def`
  default value of the column
`max_length`
  maximum length of the column
`not_null`
  1 if the column cannot be NULL
`primary_key`
  1 if the column is a primary key
`unique_key`
  1 if the column is a unique key
`multiple_key`
  1 if the column is a non-unique key
`numeric`
  1 if the column is numeric
`blob`
  1 if the column is a BLOB
`type`
  the type of the column
`unsigned`
  1 if the column is unsigned
`zerofill`
  1 if the column is zero-filled

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. If the field offset is not specified, the next field (that was not yet retrieved by this function) is retrieved. The `field_offset` starts at 0.

### Dönen Değerler

Object with certain properties of the specific column, when process is successful.

`false` on failure.

### Örnekler

Örnek 1 cubrid_fetch_field() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT event_code,athlete_code,nation_code,game_date FROM game WHERE host_year=1988 and event_code=20001;");

    var_dump(cubrid_fetch_row($req));

    cubrid_field_seek($req, 1);
    $field = cubrid_fetch_field($req);

    printf("\n--- Field Properties ---\n");
    printf("%-30s %s\n", "name:", $field->name);
    printf("%-30s %s\n", "table:", $field->table);
    printf("%-30s \"%s\"\n", "default value:", $field->def);
    printf("%-30s %d\n", "max length:", $field->max_length);
    printf("%-30s %d\n", "not null:", $field->not_null);
    printf("%-30s %d\n", "primary key:", $field->primary_key);
    printf("%-30s %d\n", "unique key:", $field->unique_key);
    printf("%-30s %d\n", "multiple key:", $field->multiple_key);
    printf("%-30s %d\n", "numeric:", $field->numeric);
    printf("%-30s %d\n", "blob:", $field->blob);
    printf("%-30s %s\n", "type:", $field->type);
    printf("%-30s %d\n", "unsigned:", $field->unsigned);
    printf("%-30s %d\n", "zerofill:", $field->zerofill);

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(5) "20001"
      [1]=>
      string(5) "16681"
      [2]=>
      string(3) "KOR"
      [3]=>
      string(9) "1988-9-30"
    }

    --- Field Properties ---
    name:                          athlete_code
    table:                         game
    default value:                 ""
    max length:                    0
    not null:                      1
    primary key:                   1
    unique key:                    1
    multiple key:                  0
    numeric:                       1
    blob:                          0
    type:                          integer
    unsigned:                      0
    zerofill:                      0

# cubrid_fetch_lengths

(PECL CUBRID >= 8.3.0)

cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row

### Açıklama

function cubrid_fetch_lengths(resource `$result`): array

This function returns a numeric array with the lengths of the values of each field from the current row of the result set or it returns FALSE on failure.

> Bilginize: If field data type is BLOB/CLOB, you should get its length by using cubrid_lob_size().

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()

### Dönen Değerler

A numeric array, when process is successful.

`false` on failure.

### Örnekler

Örnek 1 cubrid_fetch_lengths() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $row = cubrid_fetch_row($result);
    print_r($row);

    $lens = cubrid_fetch_lengths($result);
    print_r($lens);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => 2004
        [1] => 20085
        [2] => 15118
        [3] => 30134
        [4] => AUS
        [5] => G
        [6] => 2004-8-20
    )
    Array
    (
        [0] => 4
        [1] => 5
        [2] => 5
        [3] => 5
        [4] => 3
        [5] => 1
        [6] => 10
    )

# cubrid_fetch_object

(PECL CUBRID >= 8.3.0)

cubrid_fetch_object — Fetch the next row and return it as an object

### Açıklama

function cubrid_fetch_object(
resource `$result`,
string `$class_name` = ?,
array `$params` = ?,
int `$type` = ?
): object

This function returns an object with the column names of the result set as properties. The values of these properties are extracted from the current row of the result.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`class_name`
  The name of the class to instantiate. If not specified, a stdClass (stdClass is PHP's generic empty class that's used when casting other types to objects) object is returned.
`params`
  An optional array of parameters to pass to the constructor for `class_name` objects.
`type`
  Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

### Dönen Değerler

An object, when process is successful.

`false`, when there are no more rows; NULL, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_fetch_object() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $res = cubrid_execute($conn, "SELECT * FROM code");

    var_dump(cubrid_fetch_object($res));

    // if you want to operate LOB object, you can use cubrid_fetch_object($res, CUBRID_LOB)

    class demodb_code {
        public $s_name = null;
        public $f_name = null;

        public function toString() {
            var_dump($this);
        }
    }

    var_dump(cubrid_fetch_object($res, "demodb_code"));

    // if you want to operate LOB object, you can use cubrid_fetch_object($res, "demodb_code", CUBRID_LOB)

    class demodb_code_construct extends demodb_code {
        public function __construct($s, $f) {
            $this->s_name = $s;
            $this->f_name = $f;
        }
    }

    var_dump(cubrid_fetch_object($res, 'demodb_code_construct', array('s_name', 'f_name')));

    // if you want to operate LOB object, you can use cubrid_fetch_object($res, 'demodb_code_construct', array('s_name', 'f_name'), CUBRID_LOB)

    var_dump(cubrid_fetch_object($res));

    cubrid_close_request($res);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    object(stdClass)#1 (2) {
      ["s_name"]=>
      string(1) "X"
      ["f_name"]=>
      string(5) "Mixed"
    }
    object(demodb_code)#1 (2) {
      ["s_name"]=>
      string(1) "W"
      ["f_name"]=>
      string(5) "Woman"
    }
    object(demodb_code_construct)#1 (2) {
      ["s_name"]=>
      string(6) "s_name"
      ["f_name"]=>
      string(6) "f_name"
    }
    object(stdClass)#1 (2) {
      ["s_name"]=>
      string(1) "B"
      ["f_name"]=>
      string(6) "Bronze"
    }

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_fetch() - Fetch the next row from a result set
- cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
- cubrid_fetch_row() - Return a numerical array with the values of the current row

# cubrid_fetch_row

(PECL CUBRID >= 8.3.0)

cubrid_fetch_row — Return a numerical array with the values of the current row

### Açıklama

function cubrid_fetch_row(resource `$result`, int `$type` = ?): array

This function returns a numerical array with the values of the current row from the result set, starting from 0, and moves the internal data pointer ahead.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`type`
  Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

### Dönen Değerler

A numerical array, when process is successful.

`false`, when there are no more rows; NULL, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_fetch_row() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

    printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
    while ($row = cubrid_fetch_row($req)) {
        printf("%-40s %-10s %-6s %-20s\n", $row[0], $row[1], $row[2], $row[3]);
    }

    // if you want to operate LOB object, you can use cubrid_fetch_row($req, CUBRID_LOB)

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    name                                     area       seats  address
    Panathinaiko Stadium                     86300.00   50000  Athens, Greece
    Olympic Stadium                          54700.00   13000  Athens, Greece
    Olympic Indoor Hall                      34100.00   18800  Athens, Greece
    Olympic Hall                             52400.00   21000  Athens, Greece
    Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
    Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
    Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
    Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
    Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

### Ayrıca Bakınız

- cubrid_execute() - Execute a prepared SQL statement
- cubrid_fetch() - Fetch the next row from a result set
- cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
- cubrid_fetch_object() - Fetch the next row and return it as an object

# cubrid_field_flags

(PECL CUBRID >= 8.3.0)

cubrid_field_flags — Return a string with the flags of the given field offset

### Açıklama

function cubrid_field_flags(resource `$result`, int `$field_offset`): string

This function returns a string with the flags of the given field offset separated by space. You can split the returned value using explode. The possible flags could be: `not_null`, `primary_key`, `unique_key`, `foreign_key`, `auto_increment`, `shared`, `reverse_index`, `reverse_unique` and `timestamp`.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

A string with flags, when process is successful.

`false` when invalid field_offset value.

-1 if SQL sentence is not SELECT.

### Örnekler

Örnek 1 cubrid_field_flags() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $col_num = cubrid_num_cols($result);

    printf("%-30s %s\n", "Field Name", "Field Flags");
    for($i = 0; $i < $col_num; $i++) {
        printf("%-30s %s\n", cubrid_field_name($result, $i), cubrid_field_flags($result, $i));
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Field Name                     Field Flags
    host_year                      not_null primary_key unique_key
    event_code                     not_null primary_key unique_key foreign_key
    athlete_code                   not_null primary_key unique_key foreign_key
    stadium_code                   not_null
    nation_code
    medal
    game_date

# cubrid_field_len

(PECL CUBRID >= 8.3.0)

cubrid_field_len — Get the maximum length of the specified field

### Açıklama

function cubrid_field_len(resource `$result`, int `$field_offset`): int

This function returns the maximum length of the specified field on success, or it returns FALSE on failure.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

Maximum length, when process is successful.

`false` on failure.

### Örnekler

Örnek 1 cubrid_field_len() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $column_names = cubrid_column_names($result);
    $column_types = cubrid_column_types($result);

    printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
    for($i = 0, $size = count($column_names); $i < $size; $i++) {
        $column_len = cubrid_field_len($result, $i);
        printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Column Names                   Column Types                   Column Maxlen
    host_year                      integer                        11
    event_code                     integer                        11
    athlete_code                   integer                        11
    stadium_code                   integer                        11
    nation_code                    char                           3
    medal                          char                           1
    game_date                      date                           10

# cubrid_field_name

(PECL CUBRID >= 8.3.0)

cubrid_field_name — Return the name of the specified field index

### Açıklama

function cubrid_field_name(resource `$result`, int `$field_offset`): string

This function returns the name of the specified field index on success or it returns FALSE on failure.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

Name of specified field index, on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_field_name() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

    $col_num = cubrid_num_cols($result);

    printf("%-30s %s\n", "Field Name", "Field Flags");
    for($i = 0; $i < $col_num; $i++) {
        printf("%-30s %s\n", cubrid_field_name($result, $i), cubrid_field_flags($result, $i));
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Field Name                     Field Flags
    host_year                      not_null primary_key unique_key
    event_code                     not_null primary_key unique_key foreign_key
    athlete_code                   not_null primary_key unique_key foreign_key
    stadium_code                   not_null
    nation_code
    medal
    game_date

# cubrid_field_seek

(PECL CUBRID >= 8.3.0)

cubrid_field_seek — Move the result set cursor to the specified field offset

### Açıklama

function cubrid_field_seek(resource `$result`, int `$field_offset` = 0): bool

This function moves the result set cursor to the specified field offset. This offset is used by cubrid_fetch_field() if it doesn't include a field offset. It returns TRUE on success or FALSE on failure.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

`true` on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_field_seek() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $req = cubrid_execute($conn, "SELECT event_code,athlete_code,nation_code,game_date FROM game WHERE host_year=1988 and event_code=20001;");

    var_dump(cubrid_fetch_row($req));

    cubrid_field_seek($req, 1);
    $field = cubrid_fetch_field($req);

    printf("\n--- Field Properties ---\n");
    printf("%-30s %s\n", "name:", $field->name);
    printf("%-30s %s\n", "table:", $field->table);
    printf("%-30s \"%s\"\n", "default value:", $field->def);
    printf("%-30s %d\n", "max length:", $field->max_length);
    printf("%-30s %d\n", "not null:", $field->not_null);
    printf("%-30s %d\n", "unique key:", $field->unique_key);
    printf("%-30s %d\n", "multiple key:", $field->multiple_key);
    printf("%-30s %d\n", "numeric:", $field->numeric);
    printf("%-30s %s\n", "type:", $field->type);

    cubrid_close_request($req);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      string(5) "20001"
      [1]=>
      string(5) "16132"
      [2]=>
      string(3) "KOR"
      [3]=>
      string(9) "1988-09-30"
    }

    --- Field Properties ---
    name:                          athlete_code
    table:                         game
    default value:                 ""
    max length:                    0
    not null:                      1
    unique key:                    1
    multiple key:                  0
    numeric:                       1
    type:                          integer

# cubrid_field_table

(PECL CUBRID >= 8.3.0)

cubrid_field_table — Return the name of the table of the specified field

### Açıklama

function cubrid_field_table(resource `$result`, int `$field_offset`): string

This function returns the name of the table of the specified field. This is useful when using large select queries with JOINS.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

Name of the table of the specified field, on success.

`false` when invalid field_offset value.

-1 if SQL sentence is not SELECT.

### Örnekler

Örnek 1 cubrid_field_table() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM code");

    $col_num = cubrid_num_cols($result);

    printf("%-15s %-15s %s\n", "Field Table", "Field Name", "Field Type");
    for($i = 0; $i < $col_num; $i++) {
        printf("%-15s %-15s %s\n",
            cubrid_field_table($result, $i), cubrid_field_name($result, $i), cubrid_field_type($result, $i));
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Field Table     Field Name      Field Type
    code            s_name          char
    code            f_name          varchar

# cubrid_field_type

(PECL CUBRID >= 8.3.0)

cubrid_field_type — Return the type of the column corresponding to the given field offset

### Açıklama

function cubrid_field_type(resource `$result`, int `$field_offset`): string

This function returns the type of the column corresponding to the given field offset. The returned field type could be one of the following: "int", "real", "string", etc.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`field_offset`
  The numerical field offset. The `field_offset` starts at 0. If `field_offset` does not exist, an error of level `E_WARNING` is also issued.

### Dönen Değerler

Type of the column, on success.

`false` when invalid field_offset value.

-1 if SQL sentence is not SELECT.

### Örnekler

Örnek 1 cubrid_field_type() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");
    $result = cubrid_execute($conn, "SELECT * FROM code");

    $col_num = cubrid_num_cols($result);

    printf("%-15s %-15s %s\n", "Field Table", "Field Name", "Field Type");
    for($i = 0; $i < $col_num; $i++) {
        printf("%-15s %-15s %s\n",
            cubrid_field_table($result, $i), cubrid_field_name($result, $i), cubrid_field_type($result, $i));
    }

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Field Table     Field Name      Field Type
    code            s_name          char
    code            f_name          varchar

# cubrid_list_dbs

(PECL CUBRID >= 8.3.0)

cubrid_list_dbs — Return an array with the list of all existing CUBRID databases

### Açıklama

function cubrid_list_dbs(resource `$conn_identifier` = ?): array

This function returns an array with the list of all existing Cubrid databases.

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection.

### Dönen Değerler

An numeric array with all existing Cubrid databases; on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_list_dbs() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $db_list = cubrid_list_dbs($conn);
    var_dump($db_list);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      [0]=>
      string(6) "demodb"
    }

# cubrid_num_fields

(PECL CUBRID >= 8.3.0)

cubrid_num_fields — Return the number of columns in the result set

### Açıklama

function cubrid_num_fields(resource `$result`): int

This function returns the number of columns in the result set, on success, or it returns FALSE on failure.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute(), cubrid_query() and cubrid_prepare()

### Dönen Değerler

Number of columns, on success.

-1 if SQL sentence is not SELECT.

`false` when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_num_fields() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $req = cubrid_execute($conn, "SELECT * FROM code");

    $row_num = cubrid_num_rows($req);
    $col_num = cubrid_num_fields($req);

    printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    Row Num: 6
    Column Num: 2

# cubrid_ping

(PECL CUBRID >= 8.3.1)

cubrid_ping — Ping a server connection or reconnect if there is no connection

### Açıklama

function cubrid_ping(resource `$conn_identifier` = ?): bool

Checks whether or not the connection to the server is working.

### Bağımsız Değişkenler

`conn_identifier`
  The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

Returns `true` if the connection to the CUBRID server is working, otherwise `false`.

### Örnekler

Örnek 1 cubrid_ping() example

    <?php
    set_time_limit(0);

    $conn = cubrid_connect('localhost', 33000, 'demodb');

    /* Assuming this query will take a long time */
    $sql = "select * from athlete";
    $result = cubrid_query($sql);
    if (!$result) {
        echo 'Query #1 failed, exiting.';
        exit;
    }

    /* Make sure the connection is still alive, if not, try to reconnect */
    if (!cubrid_ping($conn)) {
        echo 'Lost connection, exiting after query #1';
        exit;
    }
    cubrid_free_result($result);

    /* So the connection is still alive, let's run another query */
    $sql2 = "select * from code";
    $result2 = cubrid_query($sql2);
    ?>

# cubrid_query

(PECL CUBRID >= 8.3.1)

cubrid_query — Send a CUBRID query

### Açıklama

function cubrid_query(string `$query`, resource `$conn_identifier` = ?): resource

cubrid_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified `conn_identifier`.

### Bağımsız Değişkenler

`query`
  An SQL query Data inside the query should be properly escaped.
`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, cubrid_query() returns a resource on success, or `false` on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, cubrid_query() returns `true` on success or `false` on error.

The returned result resource should be passed to cubrid_fetch_array(), and other functions for dealing with result tables, to access the returned data.

Use cubrid_num_rows() to find out how many rows were returned for a SELECT statement or cubrid_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

cubrid_query() will also fail and return `false` if the user does not have permission to access the table(s) referenced by the query.

### Örnekler

Örnek 1 Invalid Query

The following query is syntactically invalid, so cubrid_query() fails and returns `false`.

    <?php
    $conn = cubrid_connect('localhost', 33000, 'demodb');

    $result = cubrid_query('SELECT * WHERE 1=1');
    if (!$result) {
        die('Invalid query: ' . cubrid_error());
    }

    ?>

Örnek 2 Valid Query

The following query is valid, so cubrid_query() returns a resource.

    <?php
    // This could be supplied by a user, for example
    $firstname = 'fred';
    $lastname  = 'fox';

    $conn = cubrid_connect('localhost', 33000, 'demodb');

    cubrid_execute($conn,"DROP TABLE if exists friends");
    cubrid_execute($conn,"create table friends(firstname varchar,lastname varchar,address char(24),age int)");
    cubrid_execute($conn,"insert into friends values('fred','fox','home-1','20')");
    cubrid_execute($conn,"insert into friends values('blue','cat','home-2','21')");
    // Formulate Query
    // This is the best way to perform an SQL query
    // For more examples, see cubrid_real_escape_string()
    $query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
    cubrid_real_escape_string($firstname),
    cubrid_real_escape_string($lastname));

    // Perform Query
    $result = cubrid_query($query);

    // Check result
    // This shows the actual query sent to CUBRID, and the error. Useful for debugging.
    if (!$result) {
        $message  = 'Invalid query: ' . cubrid_error() . "\n";
        $message .= 'Whole query: ' . $query;
        die($message);
    }

    // Use result
    // Attempting to print $result won't allow access to information in the resource
    // One of the cubrid result functions must be used
    // See also cubrid_result(), cubrid_fetch_array(), cubrid_fetch_row(), etc.
    while ($row = cubrid_fetch_assoc($result)) {
        echo $row['firstname'];
        echo $row['lastname'];
        echo $row['address'];
        echo $row['age'];
    }

    // Free the resources associated with the result set
    // This is done automatically at the end of the script
    cubrid_free_result($result);
    ?>

### Ayrıca Bakınız

- cubrid_connect() - Open a connection to a CUBRID Server
- cubrid_error() - Get the error message
- cubrid_real_escape_string() - Escape special characters in a string for use in an SQL statement
- cubrid_result() - Return the value of a specific field in a specific row
- cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
- cubrid_unbuffered_query() - Perform a query without fetching the results into memory

# cubrid_real_escape_string

(PECL CUBRID >= 8.3.0)

cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement

### Açıklama

function cubrid_real_escape_string(string `$unescaped_string`, resource `$conn_identifier` = ?): string

This function returns the escaped string version of the given string. It will escape the following characters: `'`. In general, single quotations are used to enclose character string. Double quotations may be used as well depending on the value of ansi_quotes, which is a parameter related to SQL statement. If the ansi_quotes value is set to no, character string enclosed by double quotations is handled as character string, not as an identifier. The default value is yes. If you want to include a single quote as part of a character string, enter two single quotes in a row.

### Bağımsız Değişkenler

`unescaped_string`
  The string that is to be escaped.
`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

Escaped string version of the given string, on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_real_escape_string() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $unescaped_str = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
    $escaped_str = cubrid_real_escape_string($unescaped_str);

    $len = strlen($unescaped_str);

    @cubrid_execute($conn, "DROP TABLE cubrid_test");
    cubrid_execute($conn, "CREATE TABLE cubrid_test (t char($len))");
    cubrid_execute($conn, "INSERT INTO cubrid_test (t) VALUES('$escaped_str')");

    $req = cubrid_execute($conn, "SELECT * FROM cubrid_test");
    $row = cubrid_fetch_assoc($req);

    var_dump($row);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["t"]=>
      string(95) " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
    }

# cubrid_result

(PECL CUBRID >= 8.3.0)

cubrid_result — Return the value of a specific field in a specific row

### Açıklama

function cubrid_result(resource `$result`, int `$row`, mixed `$field` = 0): string

This function returns the value of a specific field in a specific row from a result set.

### Bağımsız Değişkenler

`result`
  `result` comes from a call to cubrid_execute()
`row`
  The row number from the result that is being retrieved. Row numbers start at 0.
`field`
  The name or offset of the `field` being retrieved. It can be the field's offset, the field's name, or the field's table dot field name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name. If undefined, the first field is retrieved.

### Dönen Değerler

Value of a specific field, on success (NULL if value if null).

`false` on failure.

### Örnekler

Örnek 1 cubrid_result() example

    <?php
    $conn = cubrid_connect("localhost", 33000, "demodb");

    $req = cubrid_execute($conn, "SELECT * FROM code");

    $result = cubrid_result($req, 0);
    var_dump($result);

    $result = cubrid_result($req, 0, 1);
    var_dump($result);

    $result = cubrid_result($req, 5, "f_name");
    var_dump($result);

    cubrid_close_request($req);
    cubrid_disconnect($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "X"
    string(5) "Mixed"
    string(4) "Gold"

# cubrid_unbuffered_query

(PECL CUBRID >= 8.3.0)

cubrid_unbuffered_query — Perform a query without fetching the results into memory

### Açıklama

function cubrid_unbuffered_query(string `$query`, resource `$conn_identifier` = ?): resource

This function performs a query without waiting for that all query results have been complete. It will return when the results are being generated.

### Bağımsız Değişkenler

`query`
  A SQL query.
`conn_identifier`
  The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

### Dönen Değerler

For SELECT, SHOW, DESCRIBE or EXPLAIN statements returns a request identifier resource on success.

For other type of SQL statements, UPDATE, DELETE, DROP, etc, returns `true` on success.

`false` on failure.

### Örnekler

Örnek 1 cubrid_unbuffered_query() example

    <?php
        $link = cubrid_connect("localhost", 30000, "demodb", "dba", "");
        if (!$link)
        {
            die('Could not connect.');
        }
        $query = "select * from code";
        $result = cubrid_unbuffered_query($query, $link);

        while ($row = cubrid_fetch($result))
        {
            var_dump($row);
        }

        cubrid_close_request($result);
        cubrid_disconnect($link);
    ?>

### Notlar

> Bilginize: The benefits of cubrid_unbuffered_query() come at a cost: you cannot use cubrid_num_rows() and cubrid_data_seek() on a result set returned from cubrid_unbuffered_query().

## İçindekiler

- cubrid_affected_rows — Return the number of rows affected by the last SQL statement
- cubrid_client_encoding — Return the current CUBRID connection charset
- cubrid_close — Close CUBRID connection
- cubrid_data_seek — Move the internal row pointer of the CUBRID result
- cubrid_db_name — Get db name from results of cubrid_list_dbs
- cubrid_errno — Return the numerical value of the error message from previous CUBRID operation
- cubrid_error — Get the error message
- cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both
- cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row
- cubrid_fetch_field — Get column information from a result and return as an object
- cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row
- cubrid_fetch_object — Fetch the next row and return it as an object
- cubrid_fetch_row — Return a numerical array with the values of the current row
- cubrid_field_flags — Return a string with the flags of the given field offset
- cubrid_field_len — Get the maximum length of the specified field
- cubrid_field_name — Return the name of the specified field index
- cubrid_field_seek — Move the result set cursor to the specified field offset
- cubrid_field_table — Return the name of the table of the specified field
- cubrid_field_type — Return the type of the column corresponding to the given field offset
- cubrid_list_dbs — Return an array with the list of all existing CUBRID databases
- cubrid_num_fields — Return the number of columns in the result set
- cubrid_ping — Ping a server connection or reconnect if there is no connection
- cubrid_query — Send a CUBRID query
- cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement
- cubrid_result — Return the value of a specific field in a specific row
- cubrid_unbuffered_query — Perform a query without fetching the results into memory

# CUBRID Obsolete Aliases and Functions

# cubrid_load_from_glo

(PECL CUBRID >= 8.3.0)

cubrid_load_from_glo — Read data from a GLO instance and save it in a file

### Açıklama

function cubrid_load_from_glo(resource `$conn_identifier`, string `$oid`, string `$file_name`): int

The cubrid_load_from_glo() function is used to read a data from a glo instance, and saves it in a designated file.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  Oid of the glo instance that you want to read the data from.
`file_name`
  Name of the file where you want to save the data in.

### Dönen Değerler

`true`, when process is successful.

`false`, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_load_from_glo() example

    <?php
    $req = cubrid_execute ($con, "select image from person where id=1");
    if ($req) {
       list ($oid) = cubrid_fetch($req);
       cubrid_close_request($req);
       $res = cubrid_load_from_glo ($con, $oid, "output.jpg");
       if ($res) {
          echo "image changed successfully";
       }
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: cubrid_load_from_glo()

> Bilginize: This function is removed from CUBRID 3.1.

### Ayrıca Bakınız

- cubrid_new_glo() - Create a glo instance
- cubrid_save_to_glo() - Save requested file in a GLO instance
- cubrid_send_glo() - Read data from glo and send it to std output

# cubrid_new_glo

(PECL CUBRID >= 8.3.0)

cubrid_new_glo — Create a glo instance

### Açıklama

function cubrid_new_glo(resource `$conn_identifier`, string `$class_name`, string `$file_name`): string

The cubrid_new_glo() function is used to create a glo instance in the requested class (glo class). The glo created is a LO type, and is stored in the `file_name` file.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`class_name`
  Name of the class that you want to create a glo in.
`file_name`
  The file name that you want to save in the newly created glo.

### Dönen Değerler

Oid of the instance created, when process is successful.

`false`, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_new_glo() example

    <?php
    $oid = cubrid_new_glo ($con, "glo", "input.jpg");
    if ($oid){
       // the type of column "image" is "object"
       $req = cubrid_execute ($con, "insert into person(image) values($oid)");
       if ($req) {
          echo "image inserted successfully";
          cubrid_close_request ($req);
          cubrid_commit($con);
       }
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: cubrid_new_glo()

> Bilginize: This function is removed from CUBRID 3.1.

### Ayrıca Bakınız

- cubrid_save_to_glo() - Save requested file in a GLO instance
- cubrid_load_from_glo() - Read data from a GLO instance and save it in a file
- cubrid_send_glo() - Read data from glo and send it to std output

# cubrid_save_to_glo

(PECL CUBRID >= 8.3.0)

cubrid_save_to_glo — Save requested file in a GLO instance

### Açıklama

function cubrid_save_to_glo(resource `$conn_identifier`, string `$oid`, string `$file_name`): int

The cubrid_save_to_glo() function is used to save requested file in a glo instance.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  Oid of the glo instance that you want to save a file in.
`file_name`
  The name of the file that you want to save.

### Dönen Değerler

`true`, when process is successful.

`false`, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_save_to_glo() example

    <?php
    $req = cubrid_execute ($con, "select image from person where id=1");
    if ($req) {
       list ($oid) = cubrid_fetch($req);
       cubrid_close_request($req);
       $res = cubrid_save_to_glo ($con, $oid, "input.jpg");
       if ($res) {
          echo "image changed successfully";
       }
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: cubrid_save_to_glo()

> Bilginize: This function is removed from CUBRID 3.1.

### Ayrıca Bakınız

- cubrid_new_glo() - Create a glo instance
- cubrid_load_from_glo() - Read data from a GLO instance and save it in a file
- cubrid_send_glo() - Read data from glo and send it to std output

# cubrid_send_glo

(PECL CUBRID >= 8.3.0)

cubrid_send_glo — Read data from glo and send it to std output

### Açıklama

function cubrid_send_glo(resource `$conn_identifier`, string `$oid`): int

The cubrid_send_glo() function is used to read data from glo instance and sends it to the PHP standard output.

### Bağımsız Değişkenler

`conn_identifier`
  Connection identifier.
`oid`
  Oid of the glo instance that you want to read data from.

### Dönen Değerler

`true`, when process is successful.

`false`, when process is unsuccessful.

### Örnekler

Örnek 1 cubrid_send_glo() example

    <?php
    $req = cubrid_execute ($con, "select image from person where id =1");
    if ($req) {
      list ($oid) = cubrid_fetch($req);
      cubrid_close_request($req);
      Header ("Content-type: image/jpeg");
      cubrid_send_glo ($con, $oid);
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: cubrid_send_glo()

> Bilginize: This function is removed from CUBRID 3.1.

### Ayrıca Bakınız

- cubrid_new_glo() - Create a glo instance
- cubrid_save_to_glo() - Save requested file in a GLO instance
- cubrid_load_from_glo() - Read data from a GLO instance and save it in a file

## İçindekiler

- cubrid_load_from_glo — Read data from a GLO instance and save it in a file
- cubrid_new_glo — Create a glo instance
- cubrid_save_to_glo — Save requested file in a GLO instance
- cubrid_send_glo — Read data from glo and send it to std output

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- CUBRID İşlevleri
  - cubrid_bind — Bind variables to a prepared statement as parameters
  - cubrid_close_prepare — Close the request handle
  - cubrid_close_request — Close the request handle
  - cubrid_col_get — Get contents of collection type column using OID
  - cubrid_col_size — Get the number of elements in collection type column using OID
  - cubrid_column_names — Get the column names in result
  - cubrid_column_types — Get column types in result
  - cubrid_commit — Commit a transaction
  - cubrid_connect — Open a connection to a CUBRID Server
  - cubrid_connect_with_url — Establish the environment for connecting to CUBRID server
  - cubrid_current_oid — Get OID of the current cursor location
  - cubrid_disconnect — Close a database connection
  - cubrid_drop — Delete an instance using OID
  - cubrid_error_code — Get error code for the most recent function call
  - cubrid_error_code_facility — Get the facility code of error
  - cubrid_error_msg — Get last error message for the most recent function call
  - cubrid_execute — Execute a prepared SQL statement
  - cubrid_fetch — Fetch the next row from a result set
  - cubrid_free_result — Free the memory occupied by the result data
  - cubrid_get — Get a column using OID
  - cubrid_get_autocommit — Get auto-commit mode of the connection
  - cubrid_get_charset — Return the current CUBRID connection charset
  - cubrid_get_class_name — Get the class name using OID
  - cubrid_get_client_info — Return the client library version
  - cubrid_get_db_parameter — Returns the CUBRID database parameters
  - cubrid_get_query_timeout — Get the query timeout value of the request
  - cubrid_get_server_info — Return the CUBRID server version
  - cubrid_insert_id — Return the ID generated for the last updated AUTO_INCREMENT column
  - cubrid_is_instance — Check whether the instance pointed by OID exists
  - cubrid_lob_close — Close BLOB/CLOB data
  - cubrid_lob_export — Export BLOB/CLOB data to file
  - cubrid_lob_get — Get BLOB/CLOB data
  - cubrid_lob_send — Read BLOB/CLOB data and send straight to browser
  - cubrid_lob_size — Get BLOB/CLOB data size
  - cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters
  - cubrid_lob2_close — Close LOB object
  - cubrid_lob2_export — Export the lob object to a file
  - cubrid_lob2_import — Import BLOB/CLOB data from a file
  - cubrid_lob2_new — Create a lob object
  - cubrid_lob2_read — Read from BLOB/CLOB data
  - cubrid_lob2_seek — Move the cursor of a lob object
  - cubrid_lob2_seek64 — Move the cursor of a lob object
  - cubrid_lob2_size — Get a lob object's size
  - cubrid_lob2_size64 — Get a lob object's size
  - cubrid_lob2_tell — Tell the cursor position of the LOB object
  - cubrid_lob2_tell64 — Tell the cursor position of the LOB object
  - cubrid_lob2_write — Write to a lob object
  - cubrid_lock_read — Set a read lock on the given OID
  - cubrid_lock_write — Set a write lock on the given OID
  - cubrid_move_cursor — Move the cursor in the result
  - cubrid_next_result — Get result of next query when executing multiple SQL statements
  - cubrid_num_cols — Return the number of columns in the result set
  - cubrid_num_rows — Get the number of rows in the result set
  - cubrid_pconnect — Open a persistent connection to a CUBRID server
  - cubrid_pconnect_with_url — Open a persistent connection to CUBRID server
  - cubrid_prepare — Prepare a SQL statement for execution
  - cubrid_put — Update a column using OID
  - cubrid_rollback — Roll back a transaction
  - cubrid_schema — Get the requested schema information
  - cubrid_seq_drop — Delete an element from sequence type column using OID
  - cubrid_seq_insert — Insert an element to a sequence type column using OID
  - cubrid_seq_put — Update the element value of sequence type column using OID
  - cubrid_set_add — Insert a single element to set type column using OID
  - cubrid_set_autocommit — Set autocommit mode of the connection
  - cubrid_set_db_parameter — Sets the CUBRID database parameters
  - cubrid_set_drop — Delete an element from set type column using OID
  - cubrid_set_query_timeout — Set the timeout time of query execution
  - cubrid_version — Get the CUBRID PHP module's version
- CUBRID MySQL Compatibility Functions
  - cubrid_affected_rows — Return the number of rows affected by the last SQL statement
  - cubrid_client_encoding — Return the current CUBRID connection charset
  - cubrid_close — Close CUBRID connection
  - cubrid_data_seek — Move the internal row pointer of the CUBRID result
  - cubrid_db_name — Get db name from results of cubrid_list_dbs
  - cubrid_errno — Return the numerical value of the error message from previous CUBRID operation
  - cubrid_error — Get the error message
  - cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both
  - cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row
  - cubrid_fetch_field — Get column information from a result and return as an object
  - cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row
  - cubrid_fetch_object — Fetch the next row and return it as an object
  - cubrid_fetch_row — Return a numerical array with the values of the current row
  - cubrid_field_flags — Return a string with the flags of the given field offset
  - cubrid_field_len — Get the maximum length of the specified field
  - cubrid_field_name — Return the name of the specified field index
  - cubrid_field_seek — Move the result set cursor to the specified field offset
  - cubrid_field_table — Return the name of the table of the specified field
  - cubrid_field_type — Return the type of the column corresponding to the given field offset
  - cubrid_list_dbs — Return an array with the list of all existing CUBRID databases
  - cubrid_num_fields — Return the number of columns in the result set
  - cubrid_ping — Ping a server connection or reconnect if there is no connection
  - cubrid_query — Send a CUBRID query
  - cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement
  - cubrid_result — Return the value of a specific field in a specific row
  - cubrid_unbuffered_query — Perform a query without fetching the results into memory
- CUBRID Obsolete Aliases and Functions
  - cubrid_load_from_glo — Read data from a GLO instance and save it in a file
  - cubrid_new_glo — Create a glo instance
  - cubrid_save_to_glo — Save requested file in a GLO instance
  - cubrid_send_glo — Read data from glo and send it to std output

# dBase

# Giriş

> Bilginize:

> itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.5.3.0.

These functions allow you to access records stored in dBase-format (dbf) databases.

Uyarı

We recommend against using dBase files as your production database. Use » SQLite or choose any real SQL server instead; » MySQL or » Postgres are common choices with PHP. dBase support is here to allow you to import and export data to and from your web database, because the file format is commonly understood by Windows spreadsheets and organizers.

Dikkat

As of dbase 7.0.0 the databases are automatically locked via flock(). There has been no support for locking earlier, so two concurrent web server processes modifying the same dBase file would have very likely ruined your database. This can happen even with dbase 7.0.0+ on systems which implement the locks at the process level with multithreaded SAPIs.

dBase files are simple sequential files of fixed length records. Records are appended to the end of the file and deleted records are kept until you call dbase_pack().

Only dbf file levels 3 (dBASE III+) - 5 (dBASE V) are supported. The types of dBase fields available are:

Available types of fields
Field | dBase Type | Format | Additional information
--- | --- | --- | ---
`M` | Memo | n/a | This type is not supported by PHP, such field will be ignored
`D` | Date | `YYYYMMDD` | The field length is limited to 8
`T` | DateTime | `YYYYMMDDhhmmss.uuu` | (FoxPro) No validity checks are done. Available as of dbase 7.0.0.
`N` | Number | A number | You must declare a length and a precision (the number of digits after the decimal point).
`F` | Float | A float number | Same as `N`.
`C` | String | A string | You must declare a length. When retrieving data, the string will be right-padded with spaces to fit the declared length. Overlong strings will be silently truncated when storing data.
`L` | Boolean | `T` or `Y` for `true`, `F` or `N` for `false`, `?` for uninitialized. | As of dbase 7.0.0, returned as a bool (`true` or `false`), or `null` for uninitialized fields. Formerly, returned as an int (`1` or `0`).

> Bilginize:

> As of dbase 7.0.0 nullable fields are supported for `DBASE_TYPE_FOXPRO` databases. If a field is nullable, passing `null` will set the respective flag, and on later retrieval the field value will be `null`.

> Bilginize:

> There is no support for indexes or memo fields.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/dbase.

## Özkaynak Türleri

As of dbase 7.0.0, the resource type `dbase` is defined, which is returned by dbase_open() and dbase_create().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`DBASE_VERSION` (string)
  The extension version. (Available as of dbase 7.0.0)
`DBASE_RDONLY` (int)
  Open database for reading only. Used with dbase_open(). (Available as of dbase 7.0.0)
`DBASE_RDWR` (int)
  Open database for reading and writing. Used with dbase_open(). (Available as of dbase 7.0.0)
`DBASE_TYPE_DBASE` (int)
  Create dBASE style database. Used with dbase_create(). (Available as of dbase 7.0.0)
`DBASE_TYPE_FOXPRO` (int)
  Create FoxPro style database. Used with dbase_create(). (Available as of dbase 7.0.0)

# dBase İşlevleri

## Örnekler

Many examples in this reference require a dBase database. We will use /tmp/test.dbf that will be created in the example of dbase_create().

# dbase_add_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_add_record — Adds a record to a database

### Açıklama

function dbase_add_record(resource `$database`, array `$data`): bool

Adds the given data to the database.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

`data`

  An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_add_record() will fail.

  > Bilginize:

  > If you're using dbase_get_record() return value for this parameter, remember to reset the key named `deleted`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Inserting a record in a dBase database

    <?php

    // open in read-write mode
    $db = dbase_open('/tmp/test.dbf', 2);

    if ($db) {
      dbase_add_record($db, array(
          date('Ymd'),
          'Maxim Topolov',
          '23',
          'max@example.com',
          'T'));
      dbase_close($db);
    }

    ?>

### Ayrıca Bakınız

- dbase_delete_record() - Deletes a record from a database
- dbase_replace_record() - Replaces a record in a database

# dbase_close

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_close — Closes a database

### Açıklama

function dbase_close(resource `$database`): bool

Closes the given database resource.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Closing a dBase database file

    <?php

    // open in read-only mode
    $db = dbase_open('/tmp/test.dbf', 0);

    if ($db) {
      // read some data ..

      dbase_close($db);
    }

    ?>

### Ayrıca Bakınız

- dbase_open() - Opens a database
- dbase_create() - Creates a database

# dbase_create

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_create — Creates a database

### Açıklama

function dbase_create(string `$path`, array `$fields`, int `$type` = DBASE_TYPE_DBASE): resource

dbase_create() creates a dBase database with the given definition. If the file already exists, it is not truncated. dbase_pack() can be called to force truncation.

> Bilginize:

> Bu işlev open_basedir'dan etkilenir.

### Bağımsız Değişkenler

`path`

  The path of the database. It can be a relative or absolute path to the file where dBase will store your data.

`fields`

  An array of arrays, each array describing the format of one field of the database. Each field consists of a name, a character indicating the field type, and optionally, a length, a precision and a nullable flag. The supported field types are listed in the introduction section.

  > Bilginize:

  > The fieldnames are limited in length and must not exceed 10 chars.

`type`

  The type of database to be created. Either `DBASE_TYPE_DBASE` or `DBASE_TYPE_FOXPRO`.

### Dönen Değerler

Returns a database resource if the database is successfully created, or `false` if an error occurred.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | The `type` parameter has been added.
PECL dbase 7.0.0 | The return value is now a resource instead of an int.

### Örnekler

Örnek 1 Creating a dBase database file

    <?php

    // database "definition"
    $def = array(
      array("date",     "D"),
      array("name",     "C",  50),
      array("age",      "N",   3, 0),
      array("email",    "C", 128),
      array("ismember", "L")
    );

    // creation
    if (!dbase_create('/tmp/test.dbf', $def)) {
      echo "Error, can't create the database\n";
    }

    ?>

### Ayrıca Bakınız

- dbase_open() - Opens a database
- dbase_close() - Closes a database

# dbase_delete_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_delete_record — Deletes a record from a database

### Açıklama

function dbase_delete_record(resource `$database`, int `$number`): bool

Marks the given record to be deleted from the database.

> Bilginize:

> To actually remove the record from the database, you must also call dbase_pack().

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

`number`

  An integer which spans from 1 to the number of records in the database (as returned by dbase_numrecords()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Ayrıca Bakınız

- dbase_add_record() - Adds a record to a database
- dbase_replace_record() - Replaces a record in a database

# dbase_get_header_info

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_header_info — Gets the header info of a database

### Açıklama

function dbase_get_header_info(resource `$database`): array

Returns information on the column structure of the given database resource.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

### Dönen Değerler

An indexed array with an entry for each column in the database. The array index starts at 0.

Each array element contains an associative array of column information, as described here:

name
  The name of the column
type
  The human-readable name for the dbase type of the column (i.e. date, boolean, etc.) The supported field types are listed in the introduction section.
length
  The number of bytes this column can hold
precision
  The number of digits of decimal precision for the column
format
  A suggested printf() format specifier for the column
offset
  The byte offset of the column from the start of the row

If the database header information cannot be read, `false` is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Showing header information for a dBase database file

    <?php
    // Path to dbase file
    $db_path = "/tmp/test.dbf";

    // Open dbase file
    $dbh = dbase_open($db_path, 0)
      or die("Error! Could not open dbase database file '$db_path'.");

    // Get column information
    $column_info = dbase_get_header_info($dbh);

    // Display information
    print_r($column_info);
    ?>

# dbase_get_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_record — Gets a record from a database as an indexed array

### Açıklama

function dbase_get_record(resource `$database`, int `$number`): array

Gets a record from a database as an indexed array.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

`number`

  The index of the record between `1` and `dbase_numrecords($dbase_identifier)`.

### Dönen Değerler

An indexed array with the record. This array will also include an associative key named `deleted` which is set to 1 if the record has been marked for deletion (see dbase_delete_record()).

Her alan uygun bir PHP türüne dönüştürülür, bunlar hariç::

- Tarihler dize olarak kalır.
- DateTime tarihleri dizeye dönüştürülür.
- `PHP_INT_MIN`..`PHP_INT_MAX` aralığı dışında kalan tamsayılar dizeye dönüştürülür.
- dbase 7.0.0 öncesinde, (`L`) mantıksalları `1` veya `0`P'a dönüştürülürdü.

On error, dbase_get_record() will return `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Ayrıca Bakınız

- dbase_get_record_with_names() - Gets a record from a database as an associative array

# dbase_get_record_with_names

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_record_with_names — Gets a record from a database as an associative array

### Açıklama

function dbase_get_record_with_names(resource `$database`, int `$number`): array

Gets a record from a dBase database as an associative array.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

`number`

  The index of the record between `1` and `dbase_numrecords($dbase_identifier)`.

### Dönen Değerler

An associative array with the record. This will also include a key named `deleted` which is set to 1 if the record has been marked for deletion (see dbase_delete_record()). Therefore it is not possible to retrieve the value of a field named `deleted` with this function.

Her alan uygun bir PHP türüne dönüştürülür, bunlar hariç::

- Tarihler dize olarak kalır.
- DateTime tarihleri dizeye dönüştürülür.
- `PHP_INT_MIN`..`PHP_INT_MAX` aralığı dışında kalan tamsayılar dizeye dönüştürülür.
- dbase 7.0.0 öncesinde, (`L`) mantıksalları `1` veya `0`P'a dönüştürülürdü.

On error, dbase_get_record_with_names() will return `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Listing all the registered members in the database

    <?php
    // open in read-only mode
    $db = dbase_open('/tmp/test.dbf', 0);

    if ($db) {
      $record_numbers = dbase_numrecords($db);
      for ($i = 1; $i <= $record_numbers; $i++) {
          $row = dbase_get_record_with_names($db, $i);
          if ($row['ismember'] == 1) {
              echo "Member #$i: " . trim($row['name']) . "\n";
          }
      }
    }
    ?>

### Ayrıca Bakınız

- dbase_get_record() - Gets a record from a database as an indexed array

# dbase_numfields

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_numfields — Gets the number of fields of a database

### Açıklama

function dbase_numfields(resource `$database`): int

Gets the number of fields (columns) in the specified database.

> Bilginize:

> Field numbers are between 0 and `dbase_numfields($db)-1`, while record numbers are between 1 and `dbase_numrecords($db)`.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

### Dönen Değerler

The number of fields in the database, or `false` if an error occurs.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 dbase_numfields() Example

    <?php

    $rec = dbase_get_record($db, $recno);
    $nf  = dbase_numfields($db);
    for ($i = 0; $i < $nf; $i++) {
      echo $rec[$i], "\n";
    }

    ?>

### Ayrıca Bakınız

- dbase_numrecords() - Gets the number of records in a database

# dbase_numrecords

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_numrecords — Gets the number of records in a database

### Açıklama

function dbase_numrecords(resource `$database`): int

Gets the number of records (rows) in the specified database.

> Bilginize:

> Records which are marked as deleted are counted as well.

> Bilginize:

> Record numbers are between 1 and `dbase_numrecords($db)`, while field numbers are between 0 and `dbase_numfields($db)-1`.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

### Dönen Değerler

The number of records in the database, or `false` if an error occurs.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Looping over all the records of the database

    <?php

    // open in read-only mode
    $db = dbase_open('/tmp/test.dbf', 0);

    if ($db) {
      $record_numbers = dbase_numrecords($db);
      for ($i = 1; $i <= $record_numbers; $i++) {
          $record = dbase_get_record($db, $i);
          if (!$record['deleted']) {
              // do something with the $record
          } else {
              // do something with the deleted $record or ignore it
          }
      }
    }

    ?>

### Ayrıca Bakınız

- dbase_numfields() - Gets the number of fields of a database

# dbase_open

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_open — Opens a database

### Açıklama

function dbase_open(string `$path`, int `$mode`): resource|false

dbase_open() opens a dBase database with the given access mode.

> Bilginize:

> Bu işlev open_basedir'dan etkilenir.

### Bağımsız Değişkenler

`path`

  The path of the database. It can be a relative or absolute path to the file where dBase will store your data.

`mode`

  An integer which correspond to those for the open() system call (Typically 0 means read-only, 1 means write-only, and 2 means read and write).

  > Bilginize:

  > You can't open a dBase file in write-only mode as the function will fail to read the headers information and thus you can't use 1 as `mode`.

  As of dbase 7.0.0 you can use `DBASE_RDONLY` and `DBASE_RDWR`, respectively, to specify the `mode`.

### Dönen Değerler

Returns a database resource on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | The return value is now a resource instead of an int.

### Örnekler

Örnek 1 Opening a dBase database file

    <?php

    // open in read-only mode
    $db = dbase_open('/tmp/test.dbf', 0);

    if ($db) {
      // read some data ..

      dbase_close($db);
    }

    ?>

### Ayrıca Bakınız

- dbase_create() - Creates a database
- dbase_close() - Closes a database

# dbase_pack

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_pack — Packs a database

### Açıklama

function dbase_pack(resource `$database`): bool

Packs the specified database by permanently deleting all records marked for deletion using dbase_delete_record(). Note that the file will be truncated after successful packing (contrary to dBASE III's PACK command).

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Emptying a dBase database

    <?php

    // open in read-write mode
    $db = dbase_open('/tmp/test.dbf', 2);

    if ($db) {
      $record_numbers = dbase_numrecords($db);
      for ($i = 1; $i <= $record_numbers; $i++) {
          dbase_delete_record($db, $i);
      }
      // expunge the database
      dbase_pack($db);
    }

    ?>

### Ayrıca Bakınız

- dbase_delete_record() - Deletes a record from a database

# dbase_replace_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_replace_record — Replaces a record in a database

### Açıklama

function dbase_replace_record(resource `$database`, array `$data`, int `$number`): bool

Replaces the given record in the database with the given data.

### Bağımsız Değişkenler

`database`

  The database resource, returned by dbase_open() or dbase_create().

`data`

  An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_replace_record() will fail.

  > Bilginize:

  > If you're using dbase_get_record() return value for this parameter, remember to reset the key named `deleted`.

`number`

  An integer which spans from 1 to the number of records in the database (as returned by dbase_numrecords()).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL dbase 7.0.0 | `database` is now a resource instead of an int.

### Örnekler

Örnek 1 Updating a record in the database

    <?php

    // open in read-write mode
    $db = dbase_open('/tmp/test.dbf', 2);

    if ($db) {
      // gets the old row
      $row = dbase_get_record_with_names($db, 1);

      // remove the 'deleted' entry
      unset($row['deleted']);

      // Update the date field with the current timestamp
      $row['date'] = date('Ymd');

      // convert the row to an indexed array
      $row = array_values($row);

      // Replace the record
      dbase_replace_record($db, $row, 1);
      dbase_close($db);
    }

    ?>

### Notlar

> Bilginize:

> Boolean fields result in an int element value (`0` or `1`) when retrieved via dbase_get_record() or dbase_get_record_with_names(). If they are written back, this results in the value becoming `0`, so care has to be taken to properly adjust the values.

### Ayrıca Bakınız

- dbase_add_record() - Adds a record to a database
- dbase_delete_record() - Deletes a record from a database

## İçindekiler

- dbase_add_record — Adds a record to a database
- dbase_close — Closes a database
- dbase_create — Creates a database
- dbase_delete_record — Deletes a record from a database
- dbase_get_header_info — Gets the header info of a database
- dbase_get_record — Gets a record from a database as an indexed array
- dbase_get_record_with_names — Gets a record from a database as an associative array
- dbase_numfields — Gets the number of fields of a database
- dbase_numrecords — Gets the number of records in a database
- dbase_open — Opens a database
- dbase_pack — Packs a database
- dbase_replace_record — Replaces a record in a database

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- dBase İşlevleri
  - dbase_add_record — Adds a record to a database
  - dbase_close — Closes a database
  - dbase_create — Creates a database
  - dbase_delete_record — Deletes a record from a database
  - dbase_get_header_info — Gets the header info of a database
  - dbase_get_record — Gets a record from a database as an indexed array
  - dbase_get_record_with_names — Gets a record from a database as an associative array
  - dbase_numfields — Gets the number of fields of a database
  - dbase_numrecords — Gets the number of records in a database
  - dbase_open — Opens a database
  - dbase_pack — Packs a database
  - dbase_replace_record — Replaces a record in a database

# Firebird/InterBase

# Giriş

Uyarı

Bu eklenti bakımsız ve ölüdür. Ancak kaynak kodu hala PECL GIT içinde mevcuttur: » https://github.com/php/pecl-database-interbase.

Firebird is a relational database offering many ISO SQL-2003 features that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names since 1981.

InterBase is the name of the closed-source variant of this RDBMS that was developed by Embarcadero/Inprise. More information about InterBase is available at » http://www.embarcadero.com/products/interbase.

Firebird is a commercially independent project (fundation) of C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Embarcadero) under the InterBase Public License v.1.0 on 25 July, 2000. More information about Firebird is available at » http://www.firebirdsql.org/.

> Bilginize: itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.7.4.0 This extension supports InterBase versions 6 and up and Firebird version 2.0 and up.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.7.4.0

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://github.com/FirebirdSQL/php-firebird.

To enable Firebird/InterBase support configure PHP --with-interbase[=DIR], where DIR is the Firebird/InterBase base install directory, which defaults to /usr.

> Bilginize: Note to Win32/Win64 Users
> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: fbclient.dll,gds32.dll

> If you installed the Firebird/InterBase database server on the same machine PHP is running on, you will have this DLL already and fbclient.dll,gds32.dll (gds32.dll is generated from the installer for legacy applications) will already be in the PATH.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

InterBase configuration options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
ibase.allow_persistent | "1" | `INI_SYSTEM` |
ibase.max_persistent | "-1" | `INI_SYSTEM` |
ibase.max_links | "-1" | `INI_SYSTEM` |
ibase.default_db | NULL | `INI_SYSTEM` |
ibase.default_user | NULL | `INI_ALL` |
ibase.default_password | NULL | `INI_ALL` |
ibase.default_charset | NULL | `INI_ALL` |
ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | `INI_ALL` |
ibase.dateformat | "%Y-%m-%d" | `INI_ALL` |
ibase.timeformat | "%H:%M:%S" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`ibase.allow_persistent` bool
  Whether to allow persistent connections to Firebird/InterBase.
`ibase.max_persistent` int
  The maximum number of persistent Firebird/InterBase connections per process. New connections created with ibase_pconnect() will be non-persistent if this number would be exceeded.
`ibase.max_links` int
  The maximum number of Firebird/InterBase connections per process, including persistent connections.
`ibase.default_db` string
  The default database to connect to when ibase_[p]connect() is called without specifying a database name. If this value is set and SQL safe mode is enabled, no other connections than to this database will be allowed.
`ibase.default_user` string
  The user name to use when connecting to a database if no user name is specified.
`ibase.default_password` string
  The password to use when connecting to a database if no password is specified.
`ibase.default_charset` string
  The character set to use when connecting to a database if no character set is specified.
`ibase.timestampformat` string
`ibase.dateformat` string
`ibase.timeformat` string
  These directives are used to set the date and time formats that are used when returning dates and times from a result set, or when binding arguments to date and time parameters.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

The following constants can be passed to ibase_trans() to specify transaction behaviour.

Firebird/InterBase transaction flags
Constant | Description
--- | ---
IBASE_DEFAULT | The default transaction settings are to be used. This default is determined by the client library, which defines it as IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT in most cases.
IBASE_READ | Starts a read-only transaction.
IBASE_WRITE | Starts a read-write transaction.
IBASE_CONSISTENCY | Starts a transaction with the isolation level set to 'consistency', which means the transaction cannot read from tables that are being modified by other concurrent transactions.
IBASE_CONCURRENCY | Starts a transaction with the isolation level set to 'concurrency' (or 'snapshot'), which means the transaction has access to all tables, but cannot see changes that were committed by other transactions after the transaction was started.
IBASE_COMMITTED | Starts a transaction with the isolation level set to 'read committed'. This flag should be combined with either `IBASE_REC_VERSION` or `IBASE_REC_NO_VERSION`. This isolation level allows access to changes that were committed after the transaction was started. If `IBASE_REC_NO_VERSION` was specified, only the latest version of a row can be read. If `IBASE_REC_VERSION` was specified, a row can even be read when a modification to it is pending in a concurrent transaction.
IBASE_WAIT | Indicated that a transaction should wait and retry when a conflict occurs.
IBASE_NOWAIT | Indicated that a transaction should fail immediately when a conflict occurs.

The following constants can be passed to ibase_fetch_row(), ibase_fetch_assoc() or ibase_fetch_object() to specify fetch behaviour.

Firebird/InterBase fetch flags
Constant | Description
--- | ---
IBASE_FETCH_BLOBS | Also available as `IBASE_TEXT`for backward compatibility. Causes BLOB contents to be fetched inline, instead of being fetched as BLOB identifiers.
IBASE_FETCH_ARRAYS | Causes arrays to be fetched inline. Otherwise, array identifiers are returned. Array identifiers can only be used as arguments to INSERT operations, as no functions to handle array identifiers are currently available.
IBASE_UNIXTIME | Causes date and time fields not to be returned as strings, but as UNIX timestamps (the number of seconds since the epoch, which is 1-Jan-1970 0:00 UTC). Might be problematic if used with dates before 1970 on some systems.

The following constants are used to pass requests and options to the service API functions (ibase_server_info(), ibase_db_info(), ibase_backup(), ibase_restore() and ibase_maintain_db()). Please refer to the Firebird/InterBase manuals for the meaning of these options.

`IBASE_BKP_IGNORE_CHECKSUMS`
  Options to ibase_backup()
`IBASE_BKP_IGNORE_LIMBO`
  Options to ibase_backup()
`IBASE_BKP_METADATA_ONLY`
  Options to ibase_backup()
`IBASE_BKP_NO_GARBAGE_COLLECT`
  Options to ibase_backup()
`IBASE_BKP_OLD_DESCRIPTIONS`
  Options to ibase_backup()
`IBASE_BKP_NON_TRANSPORTABLE`
  Options to ibase_backup()
`IBASE_BKP_CONVERT`
  Options to ibase_backup()
`IBASE_RES_DEACTIVATE_IDX`
  Options to ibase_restore()
`IBASE_RES_NO_SHADOW`
  Options to ibase_restore()
`IBASE_RES_NO_VALIDITY`
  Options to ibase_restore()
`IBASE_RES_ONE_AT_A_TIME`
  Options to ibase_restore()
`IBASE_RES_REPLACE`
`IBASE_RES_CREATE`
  Options to ibase_restore()
`IBASE_RES_USE_ALL_SPACE`
  Options to ibase_restore()
`IBASE_PRP_PAGE_BUFFERS`
`IBASE_PRP_SWEEP_INTERVAL`
`IBASE_PRP_SHUTDOWN_DB`
`IBASE_PRP_DENY_NEW_TRANSACTIONS`
`IBASE_PRP_DENY_NEW_ATTACHMENTS`
`IBASE_PRP_RESERVE_SPACE`
`IBASE_PRP_RES_USE_FULL`
`IBASE_PRP_RES`
`IBASE_PRP_WRITE_MODE`
`IBASE_PRP_WM_ASYNC`
`IBASE_PRP_WM_SYNC`
`IBASE_PRP_ACCESS_MODE`
`IBASE_PRP_AM_READONLY`
`IBASE_PRP_AM_READWRITE`
`IBASE_PRP_SET_SQL_DIALECT`
`IBASE_PRP_ACTIVATE`
`IBASE_PRP_DB_ONLINE`
`IBASE_RPR_CHECK_DB`
`IBASE_RPR_IGNORE_CHECKSUM`
`IBASE_RPR_KILL_SHADOWS`
`IBASE_RPR_MEND_DB`
`IBASE_RPR_VALIDATE_DB`
`IBASE_RPR_FULL`
`IBASE_RPR_SWEEP_DB`
  Options to ibase_maintain_db()
`IBASE_STS_DATA_PAGES`
`IBASE_STS_DB_LOG`
`IBASE_STS_HDR_PAGES`
`IBASE_STS_IDX_PAGES`
`IBASE_STS_SYS_RELATIONS`
  Options to ibase_db_info()
`IBASE_SVC_SERVER_VERSION`
  Options to ibase_server_info()
`IBASE_SVC_IMPLEMENTATION`
  Options to ibase_server_info()
`IBASE_SVC_GET_ENV`
  Options to ibase_server_info()
`IBASE_SVC_GET_ENV_LOCK`
`IBASE_SVC_GET_ENV_MSG`
`IBASE_SVC_USER_DBPATH`
`IBASE_SVC_SVR_DB_INFO`
`IBASE_SVC_GET_USERS`
  Options to ibase_server_info()

# Firebird/InterBase İşlevleri

# fbird_add_user

(PHP 5, PHP 7 < 7.4.0)

fbird_add_user — Takma Adı: ibase_add_user()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_add_user().

### Ayrıca Bakınız

- fbird_modify_user() - Takma Adı: ibase_modify_user
- fbird_delete_user() - Takma Adı: ibase_delete_user

# fbird_affected_rows

(PHP 5, PHP 7 < 7.4.0)

fbird_affected_rows — Takma Adı: ibase_affected_rows()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_affected_rows().

### Ayrıca Bakınız

- fbird_query() - Takma Adı: ibase_query
- fbird_execute() - Takma Adı: ibase_execute

# fbird_backup

(PHP 5, PHP 7 < 7.4.0)

fbird_backup — Takma Adı: ibase_backup()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_backup().

# fbird_blob_add

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_add — Takma Adı: ibase_blob_add()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_add().

### Ayrıca Bakınız

- fbird_blob_cancel() - Cancel creating blob
- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_create() - Takma Adı: ibase_blob_create
- fbird_blob_import() - Takma Adı: ibase_blob_import

# fbird_blob_cancel

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_cancel — Cancel creating blob

### Açıklama

function fbird_blob_cancel(resource `$blob_handle`): bool

This function will discard a BLOB if it has not yet been closed by fbird_blob_close().

### Bağımsız Değişkenler

`blob_handle`
  A BLOB handle opened with fbird_blob_create().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_create() - Takma Adı: ibase_blob_create
- fbird_blob_import() - Takma Adı: ibase_blob_import

# fbird_blob_close

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_close — Takma Adı: ibase_blob_close()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_close().

### Ayrıca Bakınız

- fbird_blob_create() - Takma Adı: ibase_blob_create
- fbird_blob_cancel() - Cancel creating blob
- fbird_blob_open() - Takma Adı: ibase_blob_open
- fbird_blob_import() - Takma Adı: ibase_blob_import

# fbird_blob_create

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_create — Takma Adı: ibase_blob_create()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_create().

### Ayrıca Bakınız

- fbird_blob_add() - Takma Adı: ibase_blob_add
- fbird_blob_cancel() - Cancel creating blob
- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_import() - Takma Adı: ibase_blob_import

# fbird_blob_echo

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_echo — Takma Adı: ibase_blob_echo()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_echo().

### Ayrıca Bakınız

- fbird_blob_open() - Takma Adı: ibase_blob_open
- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_get() - Takma Adı: ibase_blob_get

# fbird_blob_get

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_get — Takma Adı: ibase_blob_get()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_get().

### Ayrıca Bakınız

- fbird_blob_open() - Takma Adı: ibase_blob_open
- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_echo() - Takma Adı: ibase_blob_echo

# fbird_blob_import

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_import — Takma Adı: ibase_blob_import()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_import().

### Ayrıca Bakınız

- fbird_blob_add() - Takma Adı: ibase_blob_add
- fbird_blob_cancel() - Cancel creating blob
- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_create() - Takma Adı: ibase_blob_create

# fbird_blob_info

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_info — Takma Adı: ibase_blob_info()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_info().

# fbird_blob_open

(PHP 5, PHP 7 < 7.4.0)

fbird_blob_open — Takma Adı: ibase_blob_open()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_blob_open().

### Ayrıca Bakınız

- fbird_blob_close() - Takma Adı: ibase_blob_close
- fbird_blob_echo() - Takma Adı: ibase_blob_echo
- fbird_blob_get() - Takma Adı: ibase_blob_get

# fbird_close

(PHP 5, PHP 7 < 7.4.0)

fbird_close — Takma Adı: ibase_close()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_close().

### Ayrıca Bakınız

- fbird_connect() - Takma Adı: ibase_connect
- fbird_pconnect() - Takma Adı: ibase_pconnect

# fbird_commit

(PHP 5, PHP 7 < 7.4.0)

fbird_commit — Takma Adı: ibase_commit()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_commit().

# fbird_commit_ret

(PHP 5, PHP 7 < 7.4.0)

fbird_commit_ret — Takma Adı: ibase_commit_ret()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_commit_ret().

# fbird_connect

(PHP 5, PHP 7 < 7.4.0)

fbird_connect — Takma Adı: ibase_connect()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_connect().

### Ayrıca Bakınız

- fbird_pconnect() - Takma Adı: ibase_pconnect
- fbird_close() - Takma Adı: ibase_close

# fbird_db_info

(PHP 5, PHP 7 < 7.4.0)

fbird_db_info — Takma Adı: ibase_db_info()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_db_info().

# fbird_delete_user

(PHP 5, PHP 7 < 7.4.0)

fbird_delete_user — Takma Adı: ibase_delete_user()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_delete_user().

### Ayrıca Bakınız

- fbird_add_user() - Takma Adı: ibase_add_user
- fbird_modify_user() - Takma Adı: ibase_modify_user

# fbird_drop_db

(PHP 5, PHP 7 < 7.4.0)

fbird_drop_db — Takma Adı: ibase_drop_db()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_drop_db().

### Ayrıca Bakınız

- fbird_connect() - Takma Adı: ibase_connect
- fbird_pconnect() - Takma Adı: ibase_pconnect

# fbird_errcode

(PHP 5, PHP 7 < 7.4.0)

fbird_errcode — Takma Adı: ibase_errcode()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_errcode().

### Ayrıca Bakınız

- fbird_errmsg() - Takma Adı: ibase_errmsg

# fbird_errmsg

(PHP 5, PHP 7 < 7.4.0)

fbird_errmsg — Takma Adı: ibase_errmsg()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_errmsg().

### Ayrıca Bakınız

- fbird_errcode() - Takma Adı: ibase_errcode

# fbird_execute

(PHP 5, PHP 7 < 7.4.0)

fbird_execute — Takma Adı: ibase_execute()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_execute().

### Ayrıca Bakınız

- fbird_query() - Takma Adı: ibase_query

# fbird_fetch_assoc

(PHP 5, PHP 7 < 7.4.0)

fbird_fetch_assoc — Takma Adı: ibase_fetch_assoc()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_fetch_assoc().

### Ayrıca Bakınız

- fbird_fetch_row() - Takma Adı: ibase_fetch_row
- fbird_fetch_object() - Takma Adı: ibase_fetch_object

# fbird_fetch_object

(PHP 5, PHP 7 < 7.4.0)

fbird_fetch_object — Takma Adı: ibase_fetch_object()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_fetch_object().

### Ayrıca Bakınız

- fbird_fetch_row() - Takma Adı: ibase_fetch_row
- fbird_fetch_assoc() - Takma Adı: ibase_fetch_assoc

# fbird_fetch_row

(PHP 5, PHP 7 < 7.4.0)

fbird_fetch_row — Takma Adı: ibase_fetch_row()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_fetch_row().

### Ayrıca Bakınız

- fbird_fetch_assoc() - Takma Adı: ibase_fetch_assoc
- fbird_fetch_object() - Takma Adı: ibase_fetch_object

# fbird_field_info

(PHP 5, PHP 7 < 7.4.0)

fbird_field_info — Takma Adı: ibase_field_info()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_field_info().

### Ayrıca Bakınız

- fbird_num_fields() - Takma Adı: ibase_num_fields

# fbird_free_event_handler

(PHP 5, PHP 7 < 7.4.0)

fbird_free_event_handler — Takma Adı: ibase_free_event_handler()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_free_event_handler().

### Ayrıca Bakınız

- fbird_set_event_handler() - Takma Adı: ibase_set_event_handler

# fbird_free_query

(PHP 5, PHP 7 < 7.4.0)

fbird_free_query — Takma Adı: ibase_free_query()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_free_query().

# fbird_free_result

(PHP 5, PHP 7 < 7.4.0)

fbird_free_result — Takma Adı: ibase_free_result()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_free_result().

# fbird_gen_id

(PHP 5, PHP 7 < 7.4.0)

fbird_gen_id — Takma Adı: ibase_gen_id()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_gen_id().

# fbird_maintain_db

(PHP 5, PHP 7 < 7.4.0)

fbird_maintain_db — Takma Adı: ibase_maintain_db()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_maintain_db().

# fbird_modify_user

(PHP 5, PHP 7 < 7.4.0)

fbird_modify_user — Takma Adı: ibase_modify_user()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_modify_user().

### Ayrıca Bakınız

- fbird_add_user() - Takma Adı: ibase_add_user
- fbird_delete_user() - Takma Adı: ibase_delete_user

# fbird_name_result

(PHP 5, PHP 7 < 7.4.0)

fbird_name_result — Takma Adı: ibase_name_result()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_name_result().

### Ayrıca Bakınız

- fbird_prepare() - Takma Adı: ibase_prepare
- fbird_execute() - Takma Adı: ibase_execute

# fbird_num_fields

(PHP 5, PHP 7 < 7.4.0)

fbird_num_fields — Takma Adı: ibase_num_fields()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_num_fields().

### Ayrıca Bakınız

- fbird_field_info() - Takma Adı: ibase_field_info

# fbird_num_params

(PHP 5, PHP 7 < 7.4.0)

fbird_num_params — Takma Adı: ibase_num_params()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_num_params().

### Ayrıca Bakınız

- fbird_prepare() - Takma Adı: ibase_prepare
- fbird_param_info() - Takma Adı: ibase_param_info

# fbird_param_info

(PHP 5, PHP 7 < 7.4.0)

fbird_param_info — Takma Adı: ibase_param_info()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_param_info().

### Ayrıca Bakınız

- fbird_field_info() - Takma Adı: ibase_field_info
- fbird_num_params() - Takma Adı: ibase_num_params

# fbird_pconnect

(PHP 5, PHP 7 < 7.4.0)

fbird_pconnect — Takma Adı: ibase_pconnect()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_pconnect().

### Ayrıca Bakınız

- fbird_close() - Takma Adı: ibase_close
- fbird_connect() - Takma Adı: ibase_connect

# fbird_prepare

(PHP 5, PHP 7 < 7.4.0)

fbird_prepare — Takma Adı: ibase_prepare()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_prepare().

# fbird_query

(PHP 5, PHP 7 < 7.4.0)

fbird_query — Takma Adı: ibase_query()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_query().

### Ayrıca Bakınız

- fbird_errmsg() - Takma Adı: ibase_errmsg
- fbird_fetch_row() - Takma Adı: ibase_fetch_row
- fbird_fetch_object() - Takma Adı: ibase_fetch_object
- fbird_free_result() - Takma Adı: ibase_free_result

# fbird_restore

(PHP 5, PHP 7 < 7.4.0)

fbird_restore — Takma Adı: ibase_restore()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_restore().

# fbird_rollback

(PHP 5, PHP 7 < 7.4.0)

fbird_rollback — Takma Adı: ibase_rollback()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_rollback().

# fbird_rollback_ret

(PHP 5, PHP 7 < 7.4.0)

fbird_rollback_ret — Takma Adı: ibase_rollback_ret()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_rollback_ret().

# fbird_server_info

(PHP 5, PHP 7 < 7.4.0)

fbird_server_info — Takma Adı: ibase_server_info()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_server_info().

# fbird_service_attach

(PHP 5, PHP 7 < 7.4.0)

fbird_service_attach — Takma Adı: ibase_service_attach()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_service_attach().

# fbird_service_detach

(PHP 5, PHP 7 < 7.4.0)

fbird_service_detach — Takma Adı: ibase_service_detach()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_service_detach().

# fbird_set_event_handler

(PHP 5, PHP 7 < 7.4.0)

fbird_set_event_handler — Takma Adı: ibase_set_event_handler()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_set_event_handler().

### Ayrıca Bakınız

- fbird_free_event_handler() - Takma Adı: ibase_free_event_handler
- fbird_wait_event() - Takma Adı: ibase_wait_event

# fbird_trans

(PHP 5, PHP 7 < 7.4.0)

fbird_trans — Takma Adı: ibase_trans()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_trans().

# fbird_wait_event

(PHP 5, PHP 7 < 7.4.0)

fbird_wait_event — Takma Adı: ibase_wait_event()

### Açıklama

Bu işlev şu işlevin takma adıdır: ibase_wait_event().

### Ayrıca Bakınız

- fbird_set_event_handler() - Takma Adı: ibase_set_event_handler
- fbird_free_event_handler() - Takma Adı: ibase_free_event_handler

# ibase_add_user

(PHP 5, PHP 7 < 7.4.0)

ibase_add_user — Add a user to a security database

### Açıklama

function ibase_add_user(
resource `$service_handle`,
string `$user_name`,
string `$password`,
string `$first_name` = ?,
string `$middle_name` = ?,
string `$last_name` = ?
): bool

### Bağımsız Değişkenler

`service_handle`
  The handle on the database server service.
`user_name`
  The login name of the new database user.
`password`
  The password of the new user.
`first_name`
  The first name of the new database user.
`middle_name`
  The middle name of the new database user.
`last_name`
  The last name of the new database user.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_modify_user() - Modify a user to a security database
- ibase_delete_user() - Delete a user from a security database

# ibase_affected_rows

(PHP 5, PHP 7 < 7.4.0)

ibase_affected_rows — Return the number of rows that were affected by the previous query

### Açıklama

function ibase_affected_rows(resource `$link_identifier` = ?): int

This function returns the number of rows that were affected by the previous query (INSERT, UPDATE or DELETE) that was executed from within the specified transaction context.

### Bağımsız Değişkenler

`link_identifier`
  A transaction context. If `link_identifier` is a connection resource, its default transaction is used.

### Dönen Değerler

Returns the number of rows as an integer.

### Ayrıca Bakınız

- ibase_query() - Execute a query on an InterBase database
- ibase_execute() - Execute a previously prepared query

# ibase_backup

(PHP 5, PHP 7 < 7.4.0)

ibase_backup — Initiates a backup task in the service manager and returns immediately

### Açıklama

function ibase_backup(
resource `$service_handle`,
string `$source_db`,
string `$dest_file`,
int `$options` = 0,
bool `$verbose` = `false`
): mixed

This function passes the arguments to the (remote) database server. There it starts a new backup process. Therefore you won't get any responses.

### Bağımsız Değişkenler

`service_handle`
  A previously opened connection to the database server.
`source_db`
  The absolute file path to the database on the database server. You can also use a database alias.
`dest_file`
  The path to the backup file on the database server.
`options`

  Additional options to pass to the database server for backup. The `options` parameter can be a combination of the following constants: `IBASE_BKP_IGNORE_CHECKSUMS`, `IBASE_BKP_IGNORE_LIMBO`, `IBASE_BKP_METADATA_ONLY`, `IBASE_BKP_NO_GARBAGE_COLLECT`, `IBASE_BKP_OLD_DESCRIPTIONS`, `IBASE_BKP_NON_TRANSPORTABLE` or `IBASE_BKP_CONVERT`. Read the section about Öntanımlı Sabitler for further information.

`verbose`
  Since the backup process is done on the database server, you don't have any chance to get its output. This argument is useless.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Since the backup process is done on the (remote) server, this function just passes the arguments to it. While the arguments are legal, you won't get `false`.

### Örnekler

Örnek 1 ibase_backup() example

    <?php

    // Attach to database server by ip address and port
    $service = ibase_service_attach ('10.1.11.200/3050', 'sysdba', 'masterkey');

    // Start the backup process on database server
    // Backup employee database using full path to /srv/backup/employees.fbk
    // Don't use any special arguments
    ibase_backup($service, '/srv/firebird/employees.fdb', '/srv/backup/employees.fbk');

    // Free the attached connection
    ibase_service_detach ($service);
    ?>

Örnek 2 ibase_backup() example with arguments

    <?php

    // Attach to database server by name and default port
    $service = ibase_service_attach ('fb-server.contoso.local', 'sysdba', 'masterkey');

    // Start the backup process on database server
    // Backup employee database using alias to /srv/backup/employees.fbk.
    // Backup only the metadata. Don't create a transportable backup.
    ibase_backup($service, 'employees.fdb', '/srv/backup/employees.fbk', IBASE_BKP_METADATA_ONLY | IBASE_BKP_NON_TRANSPORTABLE);

    // Free the attached connection
    ibase_service_detach ($service);
    ?>

### Ayrıca Bakınız

- ibase_restore() - Initiates a restore task in the service manager and returns immediately

# ibase_blob_add

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_add — Add data into a newly created blob

### Açıklama

function ibase_blob_add(resource `$blob_handle`, string `$data`): void

ibase_blob_add() adds data into a blob created with ibase_blob_create().

### Bağımsız Değişkenler

`blob_handle`
  A blob handle opened with ibase_blob_create().
`data`
  The data to be added.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- ibase_blob_cancel() - Cancel creating blob
- ibase_blob_close() - Close blob
- ibase_blob_create() - Create a new blob for adding data
- ibase_blob_import() - Create blob, copy file in it, and close it

# ibase_blob_cancel

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_cancel — Cancel creating blob

### Açıklama

function ibase_blob_cancel(resource `$blob_handle`): bool

This function will discard a BLOB if it has not yet been closed by ibase_blob_close().

### Bağımsız Değişkenler

`blob_handle`
  A BLOB handle opened with ibase_blob_create().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_blob_close() - Close blob
- ibase_blob_create() - Create a new blob for adding data
- ibase_blob_import() - Create blob, copy file in it, and close it

# ibase_blob_close

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_close — Close blob

### Açıklama

function ibase_blob_close(resource `$blob_handle`): mixed

This function closes a BLOB that has either been opened for reading by ibase_blob_open() or has been opened for writing by ibase_blob_create().

### Bağımsız Değişkenler

`blob_handle`
  A BLOB handle opened with ibase_blob_create() or ibase_blob_open().

### Dönen Değerler

If the BLOB was being read, this function returns `true` on success, if the BLOB was being written to, this function returns a string containing the BLOB id that has been assigned to it by the database. On failure, this function returns `false`.

### Ayrıca Bakınız

- ibase_blob_cancel() - Cancel creating blob
- ibase_blob_open() - Open blob for retrieving data parts

# ibase_blob_create

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_create — Create a new blob for adding data

### Açıklama

function ibase_blob_create(resource `$link_identifier` = `null`): resource|false

ibase_blob_create() creates a new BLOB for filling with data.

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.

### Dönen Değerler

Returns a BLOB handle for later use with ibase_blob_add() başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_blob_add() - Add data into a newly created blob
- ibase_blob_cancel() - Cancel creating blob
- ibase_blob_close() - Close blob
- ibase_blob_import() - Create blob, copy file in it, and close it

# ibase_blob_echo

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_echo — Output blob contents to browser

### Açıklama

function ibase_blob_echo(string `$blob_id`): bool
function ibase_blob_echo(resource `$link_identifier`, string `$blob_id`): bool

This function opens a BLOB for reading and sends its contents directly to standard output (the browser, in most cases).

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.
`blob_id`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_blob_open() - Open blob for retrieving data parts
- ibase_blob_close() - Close blob
- ibase_blob_get() - Get len bytes data from open blob

# ibase_blob_get

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_get — Get len bytes data from open blob

### Açıklama

function ibase_blob_get(resource `$blob_handle`, int `$len`): string

This function returns at most `len` bytes from a BLOB that has been opened for reading by ibase_blob_open().

> Bilginize: It is not possible to read from a BLOB that has been opened for writing by ibase_blob_create().

### Bağımsız Değişkenler

`blob_handle`
  A BLOB handle opened with ibase_blob_open().
`len`
  Size of returned data.

### Dönen Değerler

Returns at most `len` bytes from the BLOB, or `false` on failure.

### Örnekler

Örnek 1 ibase_blob_get() example

    <?php
    $result    = ibase_query("SELECT blob_value FROM table");
    $data      = ibase_fetch_object($result);
    $blob_data = ibase_blob_info($data->BLOB_VALUE);
    $blob_hndl = ibase_blob_open($data->BLOB_VALUE);
    echo         ibase_blob_get($blob_hndl, $blob_data[0]);
    ?>

Whilst this example doesn't do much more than a 'ibase_blob_echo($data->BLOB_VALUE)' would do, it does show you how to get information into a $variable to manipulate as you please.

### Ayrıca Bakınız

- ibase_blob_open() - Open blob for retrieving data parts
- ibase_blob_close() - Close blob
- ibase_blob_echo() - Output blob contents to browser

# ibase_blob_import

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_import — Create blob, copy file in it, and close it

### Açıklama

function ibase_blob_import(resource `$link_identifier`, resource `$file_handle`): string
function ibase_blob_import(resource `$file_handle`): string

This function creates a BLOB, reads an entire file into it, closes it and returns the assigned BLOB id.

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.
`file_handle`
  The file handle is a handle returned by fopen().

### Dönen Değerler

Returns the BLOB id on success, or `false` on error.

### Örnekler

Örnek 1 ibase_blob_import() example

    <?php
    $dbh = ibase_connect($host, $username, $password);
    $filename = '/tmp/bar';

    $fd = fopen($filename, 'r');
    if ($fd) {

        $blob = ibase_blob_import($dbh, $fd);
        fclose($fd);

        if (!is_string($blob)) {
            // import failed
        } else {
            $query = "INSERT INTO foo (name, data) VALUES ('$filename', ?)";
            $prepared = ibase_prepare($dbh, $query);
            if (!ibase_execute($prepared, $blob)) {
                // record insertion failed
            }
        }
    } else {
        // unable to open the data file
    }
    ?>

### Ayrıca Bakınız

- ibase_blob_add() - Add data into a newly created blob
- ibase_blob_cancel() - Cancel creating blob
- ibase_blob_close() - Close blob
- ibase_blob_create() - Create a new blob for adding data

# ibase_blob_info

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_info — Return blob length and other useful info

### Açıklama

function ibase_blob_info(resource `$link_identifier`, string `$blob_id`): array
function ibase_blob_info(string `$blob_id`): array

Returns the BLOB length and other useful information.

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.
`blob_id`
  A BLOB id.

### Dönen Değerler

Returns an array containing information about a BLOB. The information returned consists of the length of the BLOB, the number of segments it contains, the size of the largest segment, and whether it is a stream BLOB or a segmented BLOB.

# ibase_blob_open

(PHP 5, PHP 7 < 7.4.0)

ibase_blob_open — Open blob for retrieving data parts

### Açıklama

function ibase_blob_open(resource `$link_identifier`, string `$blob_id`): resource|false
function ibase_blob_open(string `$blob_id`): resource|false

Opens an existing BLOB for reading.

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.
`blob_id`
  A BLOB id.

### Dönen Değerler

Returns a BLOB handle for later use with ibase_blob_get() başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_blob_close() - Close blob
- ibase_blob_echo() - Output blob contents to browser
- ibase_blob_get() - Get len bytes data from open blob

# ibase_close

(PHP 5, PHP 7 < 7.4.0)

ibase_close — Close a connection to an InterBase database

### Açıklama

function ibase_close(resource `$connection_id` = `null`): bool

Closes the link to an InterBase database that's associated with a connection id returned from ibase_connect(). Default transaction on link is committed, other transactions are rolled back.

### Bağımsız Değişkenler

`connection_id`
  An InterBase link identifier returned from ibase_connect(). If omitted, the last opened link is assumed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_connect() - Open a connection to a database
- ibase_pconnect() - Open a persistent connection to an InterBase database

# ibase_commit

(PHP 5, PHP 7 < 7.4.0)

ibase_commit — Commit a transaction

### Açıklama

function ibase_commit(resource `$link_or_trans_identifier` = `null`): bool

Commits a transaction.

### Bağımsız Değişkenler

`link_or_trans_identifier`
  If called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_commit_ret

(PHP 5, PHP 7 < 7.4.0)

ibase_commit_ret — Commit a transaction without closing it

### Açıklama

function ibase_commit_ret(resource `$link_or_trans_identifier` = `null`): bool

Commits a transaction without closing it.

### Bağımsız Değişkenler

`link_or_trans_identifier`
  If called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed. The transaction context will be retained, so statements executed from within this transaction will not be invalidated.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_connect

(PHP 5, PHP 7 < 7.4.0)

ibase_connect — Open a connection to a database

### Açıklama

function ibase_connect(
string `$database` = ?,
string `$username` = ?,
string `$password` = ?,
string `$charset` = ?,
int `$buffers` = ?,
int `$dialect` = ?,
string `$role` = ?,
int `$sync` = ?
): resource

Establishes a connection to an Firebird/InterBase server.

In case a second call is made to ibase_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling ibase_close().

### Bağımsız Değişkenler

`database`
  The `database` argument has to be a valid path to database file on the server it resides on. If the server is not local, it must be prefixed with either 'hostname:' (TCP/IP), 'hostname/port:' (TCP/IP with interbase server on custom TCP port), '//hostname/' (NetBEUI), depending on the connection protocol used.
`username`
  The user name. Can be set with the `ibase.default_user` php.ini directive.
`password`
  The password for `username`. Can be set with the `ibase.default_password` php.ini directive.
`charset`
  `charset` is the default character set for a database.
`buffers`
  `buffers` is the number of database buffers to allocate for the server-side cache. If 0 or omitted, server chooses its own default.
`dialect`
  `dialect` selects the default SQL dialect for any statement executed within a connection, and it defaults to the highest one supported by client libraries.
`role`
  Functional only with InterBase 5 and up.
`sync`

### Dönen Değerler

Returns an Firebird/InterBase link identifier on success, or `false` on error.

### Hatalar/İstisnalar

If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).

### Örnekler

Örnek 1 ibase_connect() example

    <?php
    $host = 'localhost:/path/to/your.gdb';

    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query($dbh, $stmt);
    while ($row = ibase_fetch_object($sth)) {
        echo $row->email, "\n";
    }
    ibase_free_result($sth);
    ibase_close($dbh);
    ?>

### Ayrıca Bakınız

- ibase_pconnect() - Open a persistent connection to an InterBase database
- ibase_close() - Close a connection to an InterBase database

# ibase_db_info

(PHP 5, PHP 7 < 7.4.0)

ibase_db_info — Request statistics about a database

### Açıklama

function ibase_db_info(
resource `$service_handle`,
string `$db`,
int `$action`,
int `$argument` = 0
): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# ibase_delete_user

(PHP 5, PHP 7 < 7.4.0)

ibase_delete_user — Delete a user from a security database

### Açıklama

function ibase_delete_user(resource `$service_handle`, string `$user_name`): bool

### Bağımsız Değişkenler

`service_handle`
  The handle on the database server service.
`user_name`
  The login name of the user you want to delete from the database.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_add_user() - Add a user to a security database
- ibase_modify_user() - Modify a user to a security database

# ibase_drop_db

(PHP 5, PHP 7 < 7.4.0)

ibase_drop_db — Drops a database

### Açıklama

function ibase_drop_db(resource `$connection` = `null`): bool

This functions drops a database that was opened by either ibase_connect() or ibase_pconnect(). The database is closed and deleted from the server.

### Bağımsız Değişkenler

`connection`
  An InterBase link identifier. If omitted, the last opened link is assumed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_connect() - Open a connection to a database
- ibase_pconnect() - Open a persistent connection to an InterBase database

# ibase_errcode

(PHP 5, PHP 7 < 7.4.0)

ibase_errcode — Return an error code

### Açıklama

function ibase_errcode(): int

Returns the error code that resulted from the most recent InterBase function call.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the error code as an integer, or `false` if no error occurred.

### Ayrıca Bakınız

- ibase_errmsg() - Return error messages

# ibase_errmsg

(PHP 5, PHP 7 < 7.4.0)

ibase_errmsg — Return error messages

### Açıklama

function ibase_errmsg(): string

Returns the error message that resulted from the most recent InterBase function call.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the error message as a string, or `false` if no error occurred.

### Ayrıca Bakınız

- ibase_errcode() - Return an error code

# ibase_execute

(PHP 5, PHP 7 < 7.4.0)

ibase_execute — Execute a previously prepared query

### Açıklama

function ibase_execute(resource `$query`, mixed `...$values`): resource

Execute a query prepared by ibase_prepare().

This is a lot more effective than using ibase_query() if you are repeating a same kind of query several times with only some parameters changing.

### Bağımsız Değişkenler

`query`
  An InterBase query prepared by ibase_prepare().
`values`

### Dönen Değerler

If the query raises an error, returns `false`. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns `true`.

> Bilginize: This function returns the number of rows affected by the query (if > 0 and applicable to the statement type). A query that succeeded, but did not affect any rows (e.g. an UPDATE of a non-existent record) will return `true`.

### Örnekler

Örnek 1 ibase_execute() example

    <?php

    $dbh = ibase_connect($host, $username, $password);

    $updates = array(
        1 => 'Eric',
        5 => 'Filip',
        7 => 'Larry'
    );

    $query = ibase_prepare($dbh, "UPDATE FOO SET BAR = ? WHERE BAZ = ?");

    foreach ($updates as $baz => $bar) {
        ibase_execute($query, $bar, $baz);
    }

    ?>

### Ayrıca Bakınız

- ibase_query() - Execute a query on an InterBase database

# ibase_fetch_assoc

(PHP 5, PHP 7 < 7.4.0)

ibase_fetch_assoc — Fetch a result row from a query as an associative array

### Açıklama

function ibase_fetch_assoc(resource `$result`, int `$fetch_flag` = 0): array

Fetch a result row from a query as an associative array.

ibase_fetch_assoc() fetches one row of data from the `result`. If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using ibase_fetch_row() or use alias names in your query.

### Bağımsız Değişkenler

`result`
  The result handle.
`fetch_flag`
  `fetch_flag` is a combination of the constants `IBASE_TEXT` and `IBASE_UNIXTIME` ORed together. Passing `IBASE_TEXT` will cause this function to return BLOB contents instead of BLOB ids. Passing `IBASE_UNIXTIME` will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

### Dönen Değerler

Returns an associative array that corresponds to the fetched row. Subsequent calls will return the next row in the result set, or `false` if there are no more rows.

### Ayrıca Bakınız

- ibase_fetch_row() - Fetch a row from an InterBase database
- ibase_fetch_object() - Get an object from a InterBase database

# ibase_fetch_object

(PHP 5, PHP 7 < 7.4.0)

ibase_fetch_object — Get an object from a InterBase database

### Açıklama

function ibase_fetch_object(resource `$result_id`, int `$fetch_flag` = 0): object

Fetches a row as a pseudo-object from a given result identifier.

Subsequent calls to ibase_fetch_object() return the next row in the result set.

### Bağımsız Değişkenler

`result_id`
  An InterBase result identifier obtained either by ibase_query() or ibase_execute().
`fetch_flag`
  `fetch_flag` is a combination of the constants `IBASE_TEXT` and `IBASE_UNIXTIME` ORed together. Passing `IBASE_TEXT` will cause this function to return BLOB contents instead of BLOB ids. Passing `IBASE_UNIXTIME` will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

### Dönen Değerler

Returns an object with the next row information, or `false` if there are no more rows.

### Örnekler

Örnek 1 ibase_fetch_object() example

    <?php
    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query($dbh, $stmt);
    while ($row = ibase_fetch_object($sth)) {
        echo $row->email . "\n";
    }
    ibase_close($dbh);
    ?>

### Ayrıca Bakınız

- ibase_fetch_row() - Fetch a row from an InterBase database
- ibase_fetch_assoc() - Fetch a result row from a query as an associative array

# ibase_fetch_row

(PHP 5, PHP 7 < 7.4.0)

ibase_fetch_row — Fetch a row from an InterBase database

### Açıklama

function ibase_fetch_row(resource `$result_identifier`, int `$fetch_flag` = 0): array

ibase_fetch_row() fetches one row of data from the given result set.

Subsequent calls to ibase_fetch_row() return the next row in the result set, or `false` if there are no more rows.

### Bağımsız Değişkenler

`result_identifier`
  An InterBase result identifier.
`fetch_flag`
  `fetch_flag` is a combination of the constants `IBASE_TEXT` and `IBASE_UNIXTIME` ORed together. Passing `IBASE_TEXT` will cause this function to return BLOB contents instead of BLOB ids. Passing `IBASE_UNIXTIME` will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

### Dönen Değerler

Returns an array that corresponds to the fetched row, or `false` if there are no more rows. Each result column is stored in an array offset, starting at offset 0.

### Ayrıca Bakınız

- ibase_fetch_assoc() - Fetch a result row from a query as an associative array
- ibase_fetch_object() - Get an object from a InterBase database

# ibase_field_info

(PHP 5, PHP 7 < 7.4.0)

ibase_field_info — Get information about a field

### Açıklama

function ibase_field_info(resource `$result`, int `$field_number`): array

Returns an array with information about a field after a select query has been run.

### Bağımsız Değişkenler

`result`
  An InterBase result identifier.
`field_number`
  Field offset.

### Dönen Değerler

Returns an array with the following keys: `name`, `alias`, `relation`, `length` and `type`.

### Örnekler

Örnek 1 ibase_field_info() example

    <?php
    $rs = ibase_query("SELECT * FROM tablename");
    $coln = ibase_num_fields($rs);
    for ($i = 0; $i < $coln; $i++) {
        $col_info = ibase_field_info($rs, $i);
        echo "name: ". $col_info['name']. "\n";
        echo "alias: ". $col_info['alias']. "\n";
        echo "relation: ". $col_info['relation']. "\n";
        echo "length: ". $col_info['length']. "\n";
        echo "type: ". $col_info['type']. "\n";
    }
    ?>

### Ayrıca Bakınız

- ibase_num_fields() - Get the number of fields in a result set

# ibase_free_event_handler

(PHP 5, PHP 7 < 7.4.0)

ibase_free_event_handler — Cancels a registered event handler

### Açıklama

function ibase_free_event_handler(resource `$event`): bool

This function causes the registered event handler specified by `event` to be cancelled. The callback function will no longer be called for the events it was registered to handle.

### Bağımsız Değişkenler

`event`
  An event resource, created by ibase_set_event_handler().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_set_event_handler() - Register a callback function to be called when events are posted

# ibase_free_query

(PHP 5, PHP 7 < 7.4.0)

ibase_free_query — Free memory allocated by a prepared query

### Açıklama

function ibase_free_query(resource `$query`): bool

Frees a prepared query.

### Bağımsız Değişkenler

`query`
  A query prepared with ibase_prepare().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_free_result

(PHP 5, PHP 7 < 7.4.0)

ibase_free_result — Free a result set

### Açıklama

function ibase_free_result(resource `$result_identifier`): bool

Frees a result set.

### Bağımsız Değişkenler

`result_identifier`
  A result set created by ibase_query() or ibase_execute().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_gen_id

(PHP 5, PHP 7 < 7.4.0)

ibase_gen_id — Increments the named generator and returns its new value

### Açıklama

function ibase_gen_id(string `$generator`, int `$increment` = 1, resource `$link_identifier` = `null`): mixed
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Dönen Değerler

Returns new generator value as integer, or as string if the value is too big.

# ibase_maintain_db

(PHP 5, PHP 7 < 7.4.0)

ibase_maintain_db — Execute a maintenance command on the database server

### Açıklama

function ibase_maintain_db(
resource `$service_handle`,
string `$db`,
int `$action`,
int `$argument` = 0
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_modify_user

(PHP 5, PHP 7 < 7.4.0)

ibase_modify_user — Modify a user to a security database

### Açıklama

function ibase_modify_user(
resource `$service_handle`,
string `$user_name`,
string `$password`,
string `$first_name` = ?,
string `$middle_name` = ?,
string `$last_name` = ?
): bool

### Bağımsız Değişkenler

`service_handle`
  The handle on the database server service.
`user_name`
  The login name of the database user to modify.
`password`
  The user's new password.
`first_name`
  The user's new first name.
`middle_name`
  The user's new middle name.
`last_name`
  The user's new last name.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ibase_add_user() - Add a user to a security database
- ibase_delete_user() - Delete a user from a security database

# ibase_name_result

(PHP 5, PHP 7 < 7.4.0)

ibase_name_result — Assigns a name to a result set

### Açıklama

function ibase_name_result(resource `$result`, string `$name`): bool

This function assigns a name to a result set. This name can be used later in UPDATE|DELETE ... WHERE CURRENT OF `name` statements.

### Bağımsız Değişkenler

`result`
  An InterBase result set.
`name`
  The name to be assigned.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 ibase_name_result() example

    <?php
    $result = ibase_query("SELECT field1,field2 FROM table FOR UPDATE");
    ibase_name_result($result, "my_cursor");

    $updateqry = ibase_prepare("UPDATE table SET field2 = ? WHERE CURRENT OF my_cursor");

    for ($i = 0; ibase_fetch_row($result); ++$i) {
        ibase_execute($updateqry, $i);
    }
    ?>

### Ayrıca Bakınız

- ibase_prepare() - Prepare a query for later binding of parameter placeholders and execution
- ibase_execute() - Execute a previously prepared query

# ibase_num_fields

(PHP 5, PHP 7 < 7.4.0)

ibase_num_fields — Get the number of fields in a result set

### Açıklama

function ibase_num_fields(resource `$result_id`): int

Get the number of fields in a result set.

### Bağımsız Değişkenler

`result_id`
  An InterBase result identifier.

### Dönen Değerler

Returns the number of fields as an integer.

### Örnekler

Örnek 1 ibase_num_fields() example

    <?php
    $rs = ibase_query("SELECT * FROM tablename");
    $coln = ibase_num_fields($rs);
    for ($i = 0; $i < $coln; $i++) {
        $col_info = ibase_field_info($rs, $i);
        echo "name: " . $col_info['name'] . "\n";
        echo "alias: " . $col_info['alias'] . "\n";
        echo "relation: " . $col_info['relation'] . "\n";
        echo "length: " . $col_info['length'] . "\n";
        echo "type: " . $col_info['type'] . "\n";
    }
    ?>

### Ayrıca Bakınız

- ibase_field_info() - Get information about a field

# ibase_num_params

(PHP 5, PHP 7 < 7.4.0)

ibase_num_params — Return the number of parameters in a prepared query

### Açıklama

function ibase_num_params(resource `$query`): int

This function returns the number of parameters in the prepared query specified by `query`. This is the number of binding arguments that must be present when calling ibase_execute().

### Bağımsız Değişkenler

`query`
  The prepared query handle.

### Dönen Değerler

Returns the number of parameters as an integer.

### Ayrıca Bakınız

- ibase_prepare() - Prepare a query for later binding of parameter placeholders and execution
- ibase_param_info() - Return information about a parameter in a prepared query

# ibase_param_info

(PHP 5, PHP 7 < 7.4.0)

ibase_param_info — Return information about a parameter in a prepared query

### Açıklama

function ibase_param_info(resource `$query`, int `$param_number`): array

Returns an array with information about a parameter after a query has been prepared.

### Bağımsız Değişkenler

`query`
  An InterBase prepared query handle.
`param_number`
  Parameter offset.

### Dönen Değerler

Returns an array with the following keys: `name`, `alias`, `relation`, `length` and `type`.

### Ayrıca Bakınız

- ibase_field_info() - Get information about a field
- ibase_num_params() - Return the number of parameters in a prepared query

# ibase_pconnect

(PHP 5, PHP 7 < 7.4.0)

ibase_pconnect — Open a persistent connection to an InterBase database

### Açıklama

function ibase_pconnect(
string `$database` = ?,
string `$username` = ?,
string `$password` = ?,
string `$charset` = ?,
int `$buffers` = ?,
int `$dialect` = ?,
string `$role` = ?,
int `$sync` = ?
): resource

Opens a persistent connection to an InterBase database.

ibase_pconnect() acts very much like ibase_connect() with two major differences.

First, when connecting, the function will first try to find a (persistent) link that's already opened with the same parameters. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the InterBase server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ibase_close() will not close links established by ibase_pconnect()). This type of link is therefore called 'persistent'.

### Bağımsız Değişkenler

`database`
  The `database` argument has to be a valid path to database file on the server it resides on. If the server is not local, it must be prefixed with either 'hostname:' (TCP/IP), '//hostname/' (NetBEUI) or 'hostname@' (IPX/SPX), depending on the connection protocol used.
`username`
  The user name. Can be set with the `ibase.default_user` php.ini directive.
`password`
  The password for `username`. Can be set with the `ibase.default_password` php.ini directive.
`charset`
  `charset` is the default character set for a database.
`buffers`
  `buffers` is the number of database buffers to allocate for the server-side cache. If 0 or omitted, server chooses its own default.
`dialect`
  `dialect` selects the default SQL dialect for any statement executed within a connection, and it defaults to the highest one supported by client libraries. Functional only with InterBase 6 and up.
`role`
  Functional only with InterBase 5 and up.
`sync`

### Dönen Değerler

Returns an InterBase link identifier on success, or `false` on error.

### Ayrıca Bakınız

- ibase_close() - Close a connection to an InterBase database
- ibase_connect() - Open a connection to a database

# ibase_prepare

(PHP 5, PHP 7 < 7.4.0)

ibase_prepare — Prepare a query for later binding of parameter placeholders and execution

### Açıklama

function ibase_prepare(string `$query`): resource
function ibase_prepare(resource `$link_identifier`, string `$query`): resource
function ibase_prepare(resource `$link_identifier`, string `$trans`, string `$query`): resource

Prepare a query for later binding of parameter placeholders and execution (via ibase_execute()).

### Bağımsız Değişkenler

`query`
  An InterBase query.
`link_identifier`
  An InterBase link identifier returned from ibase_connect(). If omitted, the last opened link is assumed.
`trans`
  An InterBase transaction handle the query should be associated with. If omitted, the default transaction of the connection is assumed.

### Dönen Değerler

Returns a prepared query handle, or `false` on error.

# ibase_query

(PHP 5, PHP 7 < 7.4.0)

ibase_query — Execute a query on an InterBase database

### Açıklama

function ibase_query(resource `$link_identifier` = ?, string `$query`, int `$bind_args` = ?): resource

Performs a query on an InterBase database.

### Bağımsız Değişkenler

`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.
`query`
  An InterBase query.
`bind_args`

### Dönen Değerler

If the query raises an error, returns `false`. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns `true`.

> Bilginize: In PHP 5.0.0 and up, this function will return the number of rows affected by the query for INSERT, UPDATE and DELETE statements. In order to retain backward compatibility, it will return `true` for these statements if the query succeeded without affecting any rows.

### Hatalar/İstisnalar

If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).

### Örnekler

Örnek 1 ibase_query() example

    <?php

    $host = 'localhost:/path/to/your.gdb';

    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';

    $sth = ibase_query($dbh, $stmt) or die(ibase_errmsg());

    ?>

### Ayrıca Bakınız

- ibase_errmsg() - Return error messages
- ibase_fetch_row() - Fetch a row from an InterBase database
- ibase_fetch_object() - Get an object from a InterBase database
- ibase_free_result() - Free a result set

# ibase_restore

(PHP 5, PHP 7 < 7.4.0)

ibase_restore — Initiates a restore task in the service manager and returns immediately

### Açıklama

function ibase_restore(
resource `$service_handle`,
string `$source_file`,
string `$dest_db`,
int `$options` = 0,
bool `$verbose` = `false`
): mixed

This function passes the arguments to the (remote) database server. There it starts a new restore process. Therefore you won't get any responses.

### Bağımsız Değişkenler

`service_handle`
  A previously opened connection to the database server.
`source_file`
  The absolute path on the server where the backup file is located.
`dest_db`
  The path to create the new database on the server. You can also use database alias.
`options`

  Additional options to pass to the database server for restore. The `options` parameter can be a combination of the following constants: `IBASE_RES_DEACTIVATE_IDX`, `IBASE_RES_NO_SHADOW`, `IBASE_RES_NO_VALIDITY`, `IBASE_RES_ONE_AT_A_TIME`, `IBASE_RES_REPLACE`, `IBASE_RES_CREATE`, `IBASE_RES_USE_ALL_SPACE`, `IBASE_PRP_PAGE_BUFFERS`, `IBASE_PRP_SWEEP_INTERVAL`, `IBASE_RES_CREATE`. Read the section about Öntanımlı Sabitler for further information.

`verbose`
  Since the restore process is done on the database server, you don't have any chance to get its output. This argument is useless.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Since the restore process is done on the (remote) server, this function just passes the arguments to it. While the arguments are legal, you won't get `false`.

### Örnekler

Örnek 1 ibase_restore() example

    <?php

    // Attach to database server by ip address and port
    $service = ibase_service_attach ('10.1.11.200/3050', 'sysdba', 'masterkey');

    // Start the restore process on database server
    // Restore employee backup to the new emps.fdb database
    // Don't use any special arguments
    ibase_restore($service, '/srv/backup/employees.fbk', '/srv/firebird/emps.fdb');

    // Free the attached connection
    ibase_service_detach ($service);
    ?>

Örnek 2 ibase_restore() example with arguments

    <?php

    // Attach to database server by name and default port
    $service = ibase_service_attach ('fb-server.contoso.local', 'sysdba', 'masterkey');

    // Start the restore process on database server
    // Restore to employee database using alias.
    // Restore without indixes. Replace existing database.
    ibase_restore($service, '/srv/backup/employees.fbk', 'employees.fdb', IBASE_RES_DEACTIVATE_IDX | IBASE_RES_REPLACE);

    // Free the attached connection
    ibase_service_detach ($service);
    ?>

### Ayrıca Bakınız

- ibase_backup() - Initiates a backup task in the service manager and returns immediately

# ibase_rollback

(PHP 5, PHP 7 < 7.4.0)

ibase_rollback — Roll back a transaction

### Açıklama

function ibase_rollback(resource `$link_or_trans_identifier` = `null`): bool

Rolls back a transaction.

### Bağımsız Değişkenler

`link_or_trans_identifier`
  If called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_rollback_ret

(PHP 5, PHP 7 < 7.4.0)

ibase_rollback_ret — Roll back a transaction without closing it

### Açıklama

function ibase_rollback_ret(resource `$link_or_trans_identifier` = `null`): bool

Rolls back a transaction without closing it.

### Bağımsız Değişkenler

`link_or_trans_identifier`
  If called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back. The transaction context will be retained, so statements executed from within this transaction will not be invalidated.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ibase_server_info

(PHP 5, PHP 7 < 7.4.0)

ibase_server_info — Request information about a database server

### Açıklama

function ibase_server_info(resource `$service_handle`, int `$action`): string

### Bağımsız Değişkenler

`service_handle`
  A previously created connection to the database server.
`action`
  A valid constant.

### Dönen Değerler

Returns mixed types depending on context.

### Örnekler

Örnek 1 ibase_service_attach() example

    <?php
        // Attach to the remote Firebird server
        if (($service = ibase_service_attach('10.1.1.254/3050', 'sysdba', 'masterkey')) != FALSE) {

            // Successfully attached.

            // Output the info
            echo "Server version: " . ibase_server_info($service, IBASE_SVC_SERVER_VERSION) . "\n";
            echo "Server implementation: " . ibase_server_info($service, IBASE_SVC_IMPLEMENTATION) . "\n";
            echo "Server users: " . print_r(ibase_server_info($service, IBASE_SVC_GET_USERS), true) . "\n";
            echo "Server directory: " . ibase_server_info($service, IBASE_SVC_GET_ENV) . "\n";
            echo "Server lock path: " . ibase_server_info($service, IBASE_SVC_GET_ENV_LOCK) . "\n";
            echo "Server lib path: " . ibase_server_info($service, IBASE_SVC_GET_ENV_MSG) . "\n";
            echo "Path of user db: " . ibase_server_info($service, IBASE_SVC_USER_DBPATH) . "\n";
            echo "Established connections: " . print_r(ibase_server_info($service, IBASE_SVC_SVR_DB_INFO),true) . "\n";

            // Detach from server (disconnect)
            ibase_service_detach($service);

        }
        else {
            // Output message on error
            $conn_error = ibase_errmsg();
            die($conn_error);
        }
    ?>

Yukarıdaki örneğin çıktısı:

    Server version: LI-V3.0.4.33054 Firebird 3.0
    Server implementation: Firebird/Linux/AMD/Intel/x64
    Server users: Array
    (
        [0] => Array
            (
                [user_name] => SYSDBA
                [first_name] => Sql
                [middle_name] => Server
                [last_name] => Administrator
                [user_id] => 0
                [group_id] => 0
            )

    )

    Server directory: /etc/firebird/
    Server lock path: /tmp/firebird/
    Server lib path: /usr/lib64/firebird/lib/
    Path of user db: /var/lib/firebird/secdb/security3.fdb
    Established connections: Array
    (
        [attachments] => 3
        [databases] => 2
        [0] => /srv/firebird/poss.fdb
        [1] => /srv/firebird/employees.fdb
    )

# ibase_service_attach

(PHP 5, PHP 7 < 7.4.0)

ibase_service_attach — Connect to the service manager

### Açıklama

function ibase_service_attach(string `$host`, string `$dba_username`, string `$dba_password`): resource|false

### Bağımsız Değişkenler

`host`
  The name or ip address of the database host. You can define the port by adding '/' and port number. If no port is specified, port 3050 will be used.
`dba_username`
  The name of any valid user.
`dba_password`
  The user's password.

### Dönen Değerler

Returns a Interbase / Firebird link identifier on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 ibase_service_attach() example

    <?php
        // Attach to the remote Firebird server by ip address
        if (($service = ibase_service_attach('10.1.1.199', 'sysdba', 'masterkey')) != FALSE) {

            // Successfully attached.
            // Fetch server version (something like 'LI-V3.0.4.33054 Firebird 3.0')
            $server_version  = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);

            // Fetch server implementation (something like 'Firebird/Linux/AMD/Intel/x64')
            $server_implementation = ibase_server_info($service, IBASE_SVC_IMPLEMENTATION);

            // Detach from server (disconnect)
            ibase_service_detach($service);

            // Output the info
            echo "Server version: " . $server_version . "<br/>";
            echo "Server implementation: " . $server_implementation;
        }
        else {
            // Output message on error
            $conn_error = ibase_errmsg();
            die($conn_error);
        }

    ?>

Örnek 2 ibase_service_attach() example using `hostname/port` syntax

    <?php
        // Attach to the remote Firebird server by name. Use Port 3050.
        if (($service = ibase_service_attach('FB-SRV-01.contoso.local/3050', 'sysdba', 'masterkey')) != FALSE) {

            // Successfully attached.
            // Fetch server version (something like 'LI-V3.0.4.33054 Firebird 3.0')
            $server_version  = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);

            // Fetch server implementation (something like 'Firebird/Linux/AMD/Intel/x64')
            $server_implementation = ibase_server_info($service, IBASE_SVC_IMPLEMENTATION);

            // Detach from server (disconnect)
            ibase_service_detach($service);

            // Output the info
            echo "Server version: " . $server_version . "<br/>";
            echo "Server implementation: " . $server_implementation;
        }
        else {
            // Output message on error
            $conn_error = ibase_errmsg();
            die($conn_error);
        }

    ?>

### Ayrıca Bakınız

- ibase_service_detach() - Disconnect from the service manager

# ibase_service_detach

(PHP 5, PHP 7 < 7.4.0)

ibase_service_detach — Disconnect from the service manager

### Açıklama

function ibase_service_detach(resource `$service_handle`): bool

### Bağımsız Değişkenler

`service_handle`
  A previously created connection to the database server.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 ibase_service_detach() example

    <?php
        // Attach to the remote Firebird server by ip address
        if (($service = ibase_service_attach('10.1.1.199', 'sysdba', 'masterkey')) != FALSE) {

            // Successfully attached.
            // Fetch server version (something like 'LI-V3.0.4.33054 Firebird 3.0')
            $server_version  = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);

            // Fetch server implementation (something like 'Firebird/Linux/AMD/Intel/x64')
            $server_implementation = ibase_server_info($service, IBASE_SVC_IMPLEMENTATION);

            // Detach from server (disconnect)
            if(ibase_service_detach($service) == FALSE) {
                echo "Error on service detach.";
            }
            else {
                echo "Successfully detached from service.";
            }

        }
        else {
            // Output message on error
            $conn_error = ibase_errmsg();
            die($conn_error);
        }

    ?>

# ibase_set_event_handler

(PHP 5, PHP 7 < 7.4.0)

ibase_set_event_handler — Register a callback function to be called when events are posted

### Açıklama

function ibase_set_event_handler(callable `$event_handler`, string `$event_name`, string `...$even_names`): resource
function ibase_set_event_handler(
resource `$connection`,
callable `$event_handler`,
string `$event_name`,
string `...$event_names`
): resource

This function registers a PHP user function as event handler for the specified events.

### Bağımsız Değişkenler

`event_handler`
  The callback is called with the event name and the link resource as arguments whenever one of the specified events is posted by the database. The callback must return `false` if the event handler should be canceled. Any other return value is ignored. This function accepts up to 15 event arguments.
`event_name`
  An event name.
`event_names`
  At most 15 events allowed.

### Dönen Değerler

The return value is an event resource. This resource can be used to free the event handler using ibase_free_event_handler().

### Örnekler

Örnek 1 ibase_set_event_handler() example

    <?php

    function event_handler($event_name, $link)
    {
        if ($event_name == "NEW ORDER") {
            // process new order
            ibase_query($link, "UPDATE orders SET status='handled'");
        } else if ($event_name == "DB_SHUTDOWN") {
            // free event handler
            return false;
        }
    }

    ibase_set_event_handler($link, "event_handler", "NEW_ORDER", "DB_SHUTDOWN");
    ?>

### Ayrıca Bakınız

- ibase_free_event_handler() - Cancels a registered event handler
- ibase_wait_event() - Wait for an event to be posted by the database

# ibase_trans

(PHP 5, PHP 7 < 7.4.0)

ibase_trans — Begin a transaction

### Açıklama

function ibase_trans(int `$trans_args` = ?, resource `$link_identifier` = ?): resource
function ibase_trans(resource `$link_identifier` = ?): resource

Begins a transaction.

> Bilginize: The first call to ibase_trans() will not return the default transaction of a connection. All transactions started by ibase_trans() will be rolled back at the end of the script if they were not committed or rolled back by either ibase_commit() or ibase_rollback().

> Bilginize: This function will accept multiple `trans_args` and `link_identifier` arguments. This allows transactions over multiple database connections, which are committed using a 2-phase commit algorithm. This means you can rely on the updates to either succeed in every database, or fail in every database. It does NOT mean you can use tables from different databases in the same query! If you use transactions over multiple databases, you will have to specify both the `link_id` and `transaction_id` in calls to ibase_query() and ibase_prepare().

### Bağımsız Değişkenler

`trans_args`
  `trans_args` can be a combination of `IBASE_READ`, `IBASE_WRITE`, `IBASE_COMMITTED`, `IBASE_CONSISTENCY`, `IBASE_CONCURRENCY`, `IBASE_REC_VERSION`, `IBASE_REC_NO_VERSION`, `IBASE_WAIT` and `IBASE_NOWAIT`.
`link_identifier`
  An InterBase link identifier. If omitted, the last opened link is assumed.

### Dönen Değerler

Returns a transaction handle, or `false` on error.

# ibase_wait_event

(PHP 5, PHP 7 < 7.4.0)

ibase_wait_event — Wait for an event to be posted by the database

### Açıklama

function ibase_wait_event(string `$event_name`, string `...$event_names`): string
function ibase_wait_event(resource `$connection`, string `$event_name`, string `...$event_names`): string

This function suspends execution of the script until one of the specified events is posted by the database. The name of the event that was posted is returned. This function accepts up to 15 event arguments.

### Bağımsız Değişkenler

`event_name`
  The event name.
`event_names`

### Dönen Değerler

Returns the name of the event that was posted.

### Ayrıca Bakınız

- ibase_set_event_handler() - Register a callback function to be called when events are posted
- ibase_free_event_handler() - Cancels a registered event handler

## İçindekiler

- fbird_add_user — Takma Adı: ibase_add_user
- fbird_affected_rows — Takma Adı: ibase_affected_rows
- fbird_backup — Takma Adı: ibase_backup
- fbird_blob_add — Takma Adı: ibase_blob_add
- fbird_blob_cancel — Cancel creating blob
- fbird_blob_close — Takma Adı: ibase_blob_close
- fbird_blob_create — Takma Adı: ibase_blob_create
- fbird_blob_echo — Takma Adı: ibase_blob_echo
- fbird_blob_get — Takma Adı: ibase_blob_get
- fbird_blob_import — Takma Adı: ibase_blob_import
- fbird_blob_info — Takma Adı: ibase_blob_info
- fbird_blob_open — Takma Adı: ibase_blob_open
- fbird_close — Takma Adı: ibase_close
- fbird_commit — Takma Adı: ibase_commit
- fbird_commit_ret — Takma Adı: ibase_commit_ret
- fbird_connect — Takma Adı: ibase_connect
- fbird_db_info — Takma Adı: ibase_db_info
- fbird_delete_user — Takma Adı: ibase_delete_user
- fbird_drop_db — Takma Adı: ibase_drop_db
- fbird_errcode — Takma Adı: ibase_errcode
- fbird_errmsg — Takma Adı: ibase_errmsg
- fbird_execute — Takma Adı: ibase_execute
- fbird_fetch_assoc — Takma Adı: ibase_fetch_assoc
- fbird_fetch_object — Takma Adı: ibase_fetch_object
- fbird_fetch_row — Takma Adı: ibase_fetch_row
- fbird_field_info — Takma Adı: ibase_field_info
- fbird_free_event_handler — Takma Adı: ibase_free_event_handler
- fbird_free_query — Takma Adı: ibase_free_query
- fbird_free_result — Takma Adı: ibase_free_result
- fbird_gen_id — Takma Adı: ibase_gen_id
- fbird_maintain_db — Takma Adı: ibase_maintain_db
- fbird_modify_user — Takma Adı: ibase_modify_user
- fbird_name_result — Takma Adı: ibase_name_result
- fbird_num_fields — Takma Adı: ibase_num_fields
- fbird_num_params — Takma Adı: ibase_num_params
- fbird_param_info — Takma Adı: ibase_param_info
- fbird_pconnect — Takma Adı: ibase_pconnect
- fbird_prepare — Takma Adı: ibase_prepare
- fbird_query — Takma Adı: ibase_query
- fbird_restore — Takma Adı: ibase_restore
- fbird_rollback — Takma Adı: ibase_rollback
- fbird_rollback_ret — Takma Adı: ibase_rollback_ret
- fbird_server_info — Takma Adı: ibase_server_info
- fbird_service_attach — Takma Adı: ibase_service_attach
- fbird_service_detach — Takma Adı: ibase_service_detach
- fbird_set_event_handler — Takma Adı: ibase_set_event_handler
- fbird_trans — Takma Adı: ibase_trans
- fbird_wait_event — Takma Adı: ibase_wait_event
- ibase_add_user — Add a user to a security database
- ibase_affected_rows — Return the number of rows that were affected by the previous query
- ibase_backup — Initiates a backup task in the service manager and returns immediately
- ibase_blob_add — Add data into a newly created blob
- ibase_blob_cancel — Cancel creating blob
- ibase_blob_close — Close blob
- ibase_blob_create — Create a new blob for adding data
- ibase_blob_echo — Output blob contents to browser
- ibase_blob_get — Get len bytes data from open blob
- ibase_blob_import — Create blob, copy file in it, and close it
- ibase_blob_info — Return blob length and other useful info
- ibase_blob_open — Open blob for retrieving data parts
- ibase_close — Close a connection to an InterBase database
- ibase_commit — Commit a transaction
- ibase_commit_ret — Commit a transaction without closing it
- ibase_connect — Open a connection to a database
- ibase_db_info — Request statistics about a database
- ibase_delete_user — Delete a user from a security database
- ibase_drop_db — Drops a database
- ibase_errcode — Return an error code
- ibase_errmsg — Return error messages
- ibase_execute — Execute a previously prepared query
- ibase_fetch_assoc — Fetch a result row from a query as an associative array
- ibase_fetch_object — Get an object from a InterBase database
- ibase_fetch_row — Fetch a row from an InterBase database
- ibase_field_info — Get information about a field
- ibase_free_event_handler — Cancels a registered event handler
- ibase_free_query — Free memory allocated by a prepared query
- ibase_free_result — Free a result set
- ibase_gen_id — Increments the named generator and returns its new value
- ibase_maintain_db — Execute a maintenance command on the database server
- ibase_modify_user — Modify a user to a security database
- ibase_name_result — Assigns a name to a result set
- ibase_num_fields — Get the number of fields in a result set
- ibase_num_params — Return the number of parameters in a prepared query
- ibase_param_info — Return information about a parameter in a prepared query
- ibase_pconnect — Open a persistent connection to an InterBase database
- ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
- ibase_query — Execute a query on an InterBase database
- ibase_restore — Initiates a restore task in the service manager and returns immediately
- ibase_rollback — Roll back a transaction
- ibase_rollback_ret — Roll back a transaction without closing it
- ibase_server_info — Request information about a database server
- ibase_service_attach — Connect to the service manager
- ibase_service_detach — Disconnect from the service manager
- ibase_set_event_handler — Register a callback function to be called when events are posted
- ibase_trans — Begin a transaction
- ibase_wait_event — Wait for an event to be posted by the database

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Firebird/InterBase İşlevleri
  - fbird_add_user — Takma Adı: ibase_add_user
  - fbird_affected_rows — Takma Adı: ibase_affected_rows
  - fbird_backup — Takma Adı: ibase_backup
  - fbird_blob_add — Takma Adı: ibase_blob_add
  - fbird_blob_cancel — Cancel creating blob
  - fbird_blob_close — Takma Adı: ibase_blob_close
  - fbird_blob_create — Takma Adı: ibase_blob_create
  - fbird_blob_echo — Takma Adı: ibase_blob_echo
  - fbird_blob_get — Takma Adı: ibase_blob_get
  - fbird_blob_import — Takma Adı: ibase_blob_import
  - fbird_blob_info — Takma Adı: ibase_blob_info
  - fbird_blob_open — Takma Adı: ibase_blob_open
  - fbird_close — Takma Adı: ibase_close
  - fbird_commit — Takma Adı: ibase_commit
  - fbird_commit_ret — Takma Adı: ibase_commit_ret
  - fbird_connect — Takma Adı: ibase_connect
  - fbird_db_info — Takma Adı: ibase_db_info
  - fbird_delete_user — Takma Adı: ibase_delete_user
  - fbird_drop_db — Takma Adı: ibase_drop_db
  - fbird_errcode — Takma Adı: ibase_errcode
  - fbird_errmsg — Takma Adı: ibase_errmsg
  - fbird_execute — Takma Adı: ibase_execute
  - fbird_fetch_assoc — Takma Adı: ibase_fetch_assoc
  - fbird_fetch_object — Takma Adı: ibase_fetch_object
  - fbird_fetch_row — Takma Adı: ibase_fetch_row
  - fbird_field_info — Takma Adı: ibase_field_info
  - fbird_free_event_handler — Takma Adı: ibase_free_event_handler
  - fbird_free_query — Takma Adı: ibase_free_query
  - fbird_free_result — Takma Adı: ibase_free_result
  - fbird_gen_id — Takma Adı: ibase_gen_id
  - fbird_maintain_db — Takma Adı: ibase_maintain_db
  - fbird_modify_user — Takma Adı: ibase_modify_user
  - fbird_name_result — Takma Adı: ibase_name_result
  - fbird_num_fields — Takma Adı: ibase_num_fields
  - fbird_num_params — Takma Adı: ibase_num_params
  - fbird_param_info — Takma Adı: ibase_param_info
  - fbird_pconnect — Takma Adı: ibase_pconnect
  - fbird_prepare — Takma Adı: ibase_prepare
  - fbird_query — Takma Adı: ibase_query
  - fbird_restore — Takma Adı: ibase_restore
  - fbird_rollback — Takma Adı: ibase_rollback
  - fbird_rollback_ret — Takma Adı: ibase_rollback_ret
  - fbird_server_info — Takma Adı: ibase_server_info
  - fbird_service_attach — Takma Adı: ibase_service_attach
  - fbird_service_detach — Takma Adı: ibase_service_detach
  - fbird_set_event_handler — Takma Adı: ibase_set_event_handler
  - fbird_trans — Takma Adı: ibase_trans
  - fbird_wait_event — Takma Adı: ibase_wait_event
  - ibase_add_user — Add a user to a security database
  - ibase_affected_rows — Return the number of rows that were affected by the previous query
  - ibase_backup — Initiates a backup task in the service manager and returns immediately
  - ibase_blob_add — Add data into a newly created blob
  - ibase_blob_cancel — Cancel creating blob
  - ibase_blob_close — Close blob
  - ibase_blob_create — Create a new blob for adding data
  - ibase_blob_echo — Output blob contents to browser
  - ibase_blob_get — Get len bytes data from open blob
  - ibase_blob_import — Create blob, copy file in it, and close it
  - ibase_blob_info — Return blob length and other useful info
  - ibase_blob_open — Open blob for retrieving data parts
  - ibase_close — Close a connection to an InterBase database
  - ibase_commit — Commit a transaction
  - ibase_commit_ret — Commit a transaction without closing it
  - ibase_connect — Open a connection to a database
  - ibase_db_info — Request statistics about a database
  - ibase_delete_user — Delete a user from a security database
  - ibase_drop_db — Drops a database
  - ibase_errcode — Return an error code
  - ibase_errmsg — Return error messages
  - ibase_execute — Execute a previously prepared query
  - ibase_fetch_assoc — Fetch a result row from a query as an associative array
  - ibase_fetch_object — Get an object from a InterBase database
  - ibase_fetch_row — Fetch a row from an InterBase database
  - ibase_field_info — Get information about a field
  - ibase_free_event_handler — Cancels a registered event handler
  - ibase_free_query — Free memory allocated by a prepared query
  - ibase_free_result — Free a result set
  - ibase_gen_id — Increments the named generator and returns its new value
  - ibase_maintain_db — Execute a maintenance command on the database server
  - ibase_modify_user — Modify a user to a security database
  - ibase_name_result — Assigns a name to a result set
  - ibase_num_fields — Get the number of fields in a result set
  - ibase_num_params — Return the number of parameters in a prepared query
  - ibase_param_info — Return information about a parameter in a prepared query
  - ibase_pconnect — Open a persistent connection to an InterBase database
  - ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  - ibase_query — Execute a query on an InterBase database
  - ibase_restore — Initiates a restore task in the service manager and returns immediately
  - ibase_rollback — Roll back a transaction
  - ibase_rollback_ret — Roll back a transaction without closing it
  - ibase_server_info — Request information about a database server
  - ibase_service_attach — Connect to the service manager
  - ibase_service_detach — Disconnect from the service manager
  - ibase_set_event_handler — Register a callback function to be called when events are posted
  - ibase_trans — Begin a transaction
  - ibase_wait_event — Wait for an event to be posted by the database

# IBM DB2, Cloudscape and Apache Derby

# Giriş

These functions enable you to access IBM DB2 Universal Database, IBM Cloudscape, and Apache Derby databases using the DB2 Call Level Interface (DB2 CLI).

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

To connect to IBM DB2 Universal Database for Linux, UNIX, and Windows, or IBM Cloudscape, or Apache Derby, you must install an IBM DB2 Universal Database client on the same computer on which you are running PHP. The extension has been developed and tested with DB2 Version 8.2.

To connect to IBM DB2 Universal Database for z/OS or iSeries, you also require IBM DB2 Connect or the equivalent DRDA gateway software.

## Requirements on Linux or Unix

The user invoking the PHP executable or SAPI must specify the DB2 instance before accessing these functions. You can set the name of the DB2 instance in php.ini using the `ibm_db2.instance_name` configuration option, or you can source the DB2 instance profile before invoking the PHP executable.

If you created a DB2 instance named `db2inst1` in /home/db2inst1/, for example, you can add the following line to php.ini:

    ibm_db2.instance_name=db2inst1

If you do not set this option in php.ini, you must issue the following command to modify your environment variables to enable access to DB2:

    bash$ source /home/db2inst1/sqllib/db2profile

To enable your PHP-enabled Web server to access these functions, you must either set the `ibm_db2.instance_name` configuration option in php.ini, or source the DB2 instance environment in your Web server start script (typically /etc/init.d/httpd or /etc/init.d/apache).

## Kurulum

To build the ibm_db2 extension, the DB2 application development header files and libraries must be installed on the system. DB2 does not install these by default, so it may be necessary to return to the DB2 installer and add this option. The DB2 Application Development Client includes the header files and is freely available for download from the IBM DB2 Universal Database » support site.

If the DB2 application development header files and libraries are added to a Linux or Unix operating system on which DB2 was already installed, the command db2iupdt -e must be issued to update the symbolic links to the header files and libraries in the DB2 instances.

ibm_db2 is a » PECL extension, so follow the instructions in PECL eklentilerinin kurulması to install the ibm_db2 extension for PHP. Issue the configure command to point to the location of the DB2 header files and libraries as follows:

    bash$ ./configure --with-IBM_DB2=/path/to/DB2

The configure command defaults to /opt/IBM/db2/V8.1.

> Bilginize: Note for IIS users
> If the ibm_db2 driver is being used with Microsoft Internet Information Server (IIS), it may be necessary to do the following:

> - Install DB2 with extended operating system security.
> - Add the PHP binary path to the PATH system environment variable (default C:\php\).
> - Create another system environment variable equal to the path where the PHP.INI file is located (eg: PHPRC = C:\php\).
> - Add the IUSR_COMPUTERNAME to the DB2USERS group.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

ibm_db2 Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
ibm_db2.binmode | "1" | `INI_ALL` |
ibm_db2.i5_all_pconnect | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.6.5.
ibm_db2.i5_allow_commit | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.4.9.
ibm_db2.i5_blank_userid | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_char_trim | "0" | `INI_SYSTEM` | Available as of ibm_db2 2.1.0.
ibm_db2.i5_dbcs_alloc | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.5.0.
ibm_db2.i5_guard_profile | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_ignore_userid | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.8.0.
ibm_db2.i5_job_sort | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.8.4.
ibm_db2.i5_log_verbose | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_max_pconnect | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_override_ccsid | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_servermode_subsystem | NULL | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.i5_sys_naming | "0" | `INI_SYSTEM` | Available as of ibm_db2 1.9.7.
ibm_db2.instance_name | NULL | `INI_SYSTEM` | Available as of ibm_db2 1.0.2.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`ibm_db2.binmode` int

  This option controls the mode used for converting to and from binary data in the PHP application.

  - 1 (DB2_BINARY)
  - 2 (DB2_CONVERT)
  - 3 (DB2_PASSTHRU)
`ibm_db2.i5_all_pconnect` int

  This option forces all connections to be persistent on IBM i. Basically, all db2_connect() calls transparently become db2_pconnect() calls. By default, this option is `0`. This option is provided as a convenience for cases where persistent connections are faster. It should not be used in new applications.

  - 0 - Persistent and non-persistent connections can be made.
  - 1 - All connections are persistent.
`ibm_db2.i5_allow_commit` int

  This option controls the transaction isolation mode used. By default, this option is `0`, so commitment control isn't used. This option can be overridden when connecting if the array key `i5_commit` is set in the connection options array passed to db2_connect() or db2_pconnect().

  - 0 - commitment control is not used
  - 1 - read uncommitted, dirty reads possible.
  - 2 - read committed, dirty reads are not possible.
  - 3 - repeatable read, dirty reads and non-repeatable reads are not possible
  - 4 - serializeable, dirty reads, non-repeatable reads, and phantoms are not possible
`ibm_db2.i5_blank_userid` int

  This controls if a blank user ID should be allowed on IBM i. By default, this option is `0`. Unlike `ibm_db2.i5_ignore_userid`, this option doesn't force all user IDs to be empty or change job behaviour, but simply allows an empty user ID to be passed, for connecting to Db2 as the current user.

  - 0 - Don't allow a blank user ID to be passed.
  - 1 - Allow a blank user ID to be passed.
`ibm_db2.i5_char_trim` int

  This option controls if the end of strings are trimmed on IBM i. Since many tables use fixed column sizes padded with spaces, this is provided as a convenience. By default, this option is `0`.

  - 0 - Columns are not trimmed.
  - 1 - Spaces at the end of returned character columns are removed.
`ibm_db2.i5_dbcs_alloc` int

  This options affects the internal buffer allocation strategy on IBM i. By default, this option is `0`. When this option is set, buffers are allocated with a much larger size, in case the database underestimates a string's size when converting between encodings. This option uses six times as much memory for buffers (to account for the largest possible UTF-8 sequences), but may be needed if truncated data is returned.

  - 0 - Minimum size buffers are allocated.
  - 1 - Larger size buffers are allocated.
`ibm_db2.i5_guard_profile` int

  This option checks if the database user profile was switched when connecting to a persistent database connection on IBM i, and if so, disconnects from the database. By default, this option is set to `0`.

  - 0 - Don't check for profile swaps.
  - 1 - Check for profile swaps and disconnect if so.
`ibm_db2.i5_log_verbose` int

  This option sets if SQL diagnostic messages like warnings and errors are always sent to the PHP error log on IBM i. Normally, only a brief message on failure is sent (such as "statement execute failed") to the PHP error log, as this option is set to `0` by default. Note that you can still and should call i.e. db2_stmt_errormsg() manually as part of checking if functions fail.

  - 0 - Only logs brief messages.
  - 1 - Logs the SQL diagnostic message in addition to the brief message.
`ibm_db2.i5_ignore_userid` int

  This option ignores the user ID when connecting to the database when running on IBM i, and runs SQL/CLI functionality inside of the PHP job, instead of a separate job. By default, this option is `0`. When enabled, it no longer uses a separate database server job, and always uses the current user profile for the database, ignoring the username and password passed to db2_connect() and db2_pconnect().

  - 0 - Uses the specified credentials, and use an SQL/CLI server job.
  - 1 - Always use blank credentials, and run SQL/CLI in the PHP job.
`ibm_db2.i5_job_sort` int

  Controls the job sort option on IBM i. By default, this option is `0`. This corresponds to the IBM i SQL/CLI `SQL_ATTR_CONN_SORT_SEQUENCE` attribute.

  - 0 - Uses the `*HEX` sort option, sorting by bytes.
  - 1 - Uses the job sort sequence set for the PHP job.
  - 2 - Uses the job sort sequence set for the database job.
`ibm_db2.i5_max_pconnect` int
  This will affect how many times a persistent connection can be reused when running on IBM i. By default, this is set to `0`, which means a persistent connection can always be reused. This option can help work around issues in a long-running database job (i.e. if a procedure is leaking memory), but is obviously not a long-term fix.
`ibm_db2.i5_override_ccsid` int
  The PASE CCSID to use for character conversions from EBCDIC on IBM i. By default, this is `0`, which will select the default PASE job CCSID, which comes from the PASE locale settings. For example, setting this to `1208` will use UTF-8. This should only be modified if the PASE job CCSID isn't the expected CCSID, and the locale cannot be modified. To learn more about CCSIDs on IBM i, consult the » IBM documentation. To learn how locales on IBM i PASE are mapped to CCSIDs, consult the » IBM documentation.
`ibm_db2.i5_sys_naming` int

  This option controls the naming mode when connecting to an IBM i system. By default, this option is `0`. The naming mode affects how names are resolved and the allowed syntax for names. When set to `0`, this uses periods to qualify names and uses the default library or user ID to resolve names. When set to `1`, this uses slashes to qualify names and uses the job library list to resolve names.

  - 0 - Uses the SQL naming mode ("SCHEMA.TABLE").
  - 1 - Uses the system naming mode ("LIBRARY/FILE").
  To learn more about naming modes on IBM i, consult the » IBM documentation.
`ibm_db2.i5_servermode-subsystem` string
  This option changes which subsystem database server jobs run under on IBM i. By default, this option is `null`, so jobs will run under the default subsystem for QSQSRVR jobs.
`ibm_db2.instance_name` string

  On Linux and UNIX operating systems, this option defines the name of the instance to use for cataloged database connections. By default, this option is `null`. If this option is set, its value overrides the DB2INSTANCE environment variable setting.

  This option is ignored on Windows operating systems.

## Özkaynak Türleri

The ibm_db2 extension returns connection resources, statement resources, and result set resources.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`DB2_BINARY` (int)
  Specifies that binary data shall be returned as is. This is the default mode.
`DB2_CONVERT` (int)
  Specifies that binary data shall be converted to a hexadecimal encoding and returned as an ASCII string.
`DB2_PASSTHRU` (int)
  Specifies that binary data shall be converted to a `null` value.
`DB2_SCROLLABLE` (int)
  Specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.
`DB2_FORWARD_ONLY` (int)
  Specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers.
`DB2_PARAM_IN` (int)
  Specifies the PHP variable should be bound as an IN parameter for a stored procedure.
`DB2_PARAM_OUT` (int)
  Specifies the PHP variable should be bound as an OUT parameter for a stored procedure.
`DB2_PARAM_INOUT` (int)
  Specifies the PHP variable should be bound as an INOUT parameter for a stored procedure.
`DB2_PARAM_FILE` (int)
  Specifies that the column should be bound directly to a file for input.
`DB2_AUTOCOMMIT_ON` (int)
  Specifies that autocommit should be turned on.
`DB2_AUTOCOMMIT_OFF` (int)
  Specifies that autocommit should be turned off.
`DB2_DOUBLE` (int)
  Specifies that the variable should be bound as a DOUBLE, FLOAT, or REAL data type.
`DB2_LONG` (int)
  Specifies that the variable should be bound as a SMALLINT, INTEGER, or BIGINT data type.
`DB2_CHAR` (int)
  Specifies that the variable should be bound as a CHAR or VARCHAR data type.
`DB2_CASE_NATURAL` (int)
  Specifies that column names will be returned in their natural case.
`DB2_CASE_LOWER` (int)
  Specifies that column names will be returned in lower case.
`DB2_CASE_UPPER` (int)
  Specifies that column names will be returned in upper case.
`DB2_DEFERRED_PREPARE_ON` (int)
  Specifies that deferred prepare should be turned on for the specified statement resource.
`DB2_DEFERRED_PREPARE_OFF` (int)
  Specifies that deferred prepare should be turned off for the specified statement resource.

# IBM DB2 İşlevleri

# db2_autocommit

(PECL ibm_db2 >= 1.0.0)

db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection

### Açıklama

function db2_autocommit(resource `$connection`, int `$value` = ?): int|bool

Sets or gets the AUTOCOMMIT behavior of the specified connection resource.

### Bağımsız Değişkenler

`connection`
  A valid database connection resource variable as returned from db2_connect() or db2_pconnect().
`value`

  One of the following constants:

  `DB2_AUTOCOMMIT_OFF`
    Turns AUTOCOMMIT off.
  `DB2_AUTOCOMMIT_ON`
    Turns AUTOCOMMIT on.

### Dönen Değerler

When db2_autocommit() receives only the `connection` parameter, it returns the current state of AUTOCOMMIT for the requested connection as an integer value. A value of `DB2_AUTOCOMMIT_OFF` indicates that AUTOCOMMIT is off, while a value of `DB2_AUTOCOMMIT_ON` indicates that AUTOCOMMIT is on.

When db2_autocommit() receives both the `connection` parameter and `autocommit` parameter, it attempts to set the AUTOCOMMIT state of the requested connection to the corresponding state. Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Retrieving the AUTOCOMMIT value for a connection

In the following example, a connection which has been created with AUTOCOMMIT turned off is tested with the db2_autocommit() function.

    <?php
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
    $conn = db2_connect($database, $user, $password, $options);
    $ac = db2_autocommit($conn);
    if ($ac == DB2_AUTOCOMMIT_OFF) {
        print "$ac -- AUTOCOMMIT is off.";
    } else {
        print "$ac -- AUTOCOMMIT is on.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0 -- AUTOCOMMIT is off.

Örnek 2 Setting the AUTOCOMMIT value for a connection

In the following example, a connection which was initially created with AUTOCOMMIT turned off has its behavior changed to turn AUTOCOMMIT on.

    <?php
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
    $conn = db2_connect($database, $user, $password, $options);

    // Turn AUTOCOMMIT on
    $rc = db2_autocommit($conn, DB2_AUTOCOMMIT_ON);
    if ($rc) {
        print "Turning AUTOCOMMIT on succeeded.\n";
    }

    // Check AUTOCOMMIT state
    $ac = db2_autocommit($conn);
    if ($ac == DB2_AUTOCOMMIT_OFF) {
        print "$ac -- AUTOCOMMIT is off.";
    } else {
        print "$ac -- AUTOCOMMIT is on.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Turning AUTOCOMMIT on succeeded.
    1 -- AUTOCOMMIT is on.

### Ayrıca Bakınız

- db2_connect() - Returns a connection to a database
- db2_pconnect() - Returns a persistent connection to a database

# db2_bind_param

(PECL ibm_db2 >= 1.0.0)

db2_bind_param — Binds a PHP variable to an SQL statement parameter

### Açıklama

function db2_bind_param(
resource `$stmt`,
int `$parameter_number`,
string `$variable_name`,
int `$parameter_type` = `DB2_PARAM_IN`,
int `$data_type` = 0,
int `$precision` = -1,
int `$scale` = 0
): bool

Binds a PHP variable to an SQL statement parameter in a statement resource returned by db2_prepare(). This function gives you more control over the parameter type, data type, precision, and scale for the parameter than simply passing the variable as part of the optional input array to db2_execute().

### Bağımsız Değişkenler

`stmt`
  A prepared statement returned from db2_prepare().
`parameter_number`
  Specifies the 1-indexed position of the parameter in the prepared statement.
`variable_name`
  A string specifying the name of the PHP variable to bind to the parameter specified by `parameter_number`.
`parameter_type`
  A constant specifying whether the PHP variable should be bound to the SQL parameter as an input parameter (`DB2_PARAM_IN`), an output parameter (`DB2_PARAM_OUT`), or as a parameter that accepts input and returns output (`DB2_PARAM_INOUT`). To avoid memory overhead, you can also specify `DB2_PARAM_FILE` to bind the PHP variable to the name of a file that contains large object (BLOB, CLOB, or DBCLOB) data.
`data_type`
  A constant specifying the SQL data type that the PHP variable should be bound as: one of `DB2_BINARY`, `DB2_CHAR`, `DB2_DOUBLE`, or `DB2_LONG` .
`precision`
  Specifies the precision with which the variable should be bound to the database. This parameter can also be used for retrieving XML output values from stored procedures. A non-negative value specifies the maximum size of the XML data that will be retrieved from the database. If this parameter is not used, a default of 1MB will be assumed for retrieving the XML output value from the stored procedure.
`scale`
  Specifies the scale with which the variable should be bound to the database.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Binding PHP variables to a prepared statement

The SQL statement in the following example uses two input parameters in the WHERE clause. We call db2_bind_param() to bind two PHP variables to the corresponding SQL parameters. Notice that the PHP variables do not have to be declared or assigned before the call to db2_bind_param(); in the example, `$lower_limit` is assigned a value before the call to db2_bind_param(), but `$upper_limit` is assigned a value after the call to db2_bind_param(). The variables must be bound and, for parameters that accept input, must have any value assigned, before calling db2_execute().

    <?php

    $sql = 'SELECT name, breed, weight FROM animals
        WHERE weight > ? AND weight < ?';
    $conn = db2_connect($database, $user, $password);
    $stmt = db2_prepare($conn, $sql);

    // We can declare the variable before calling db2_bind_param()
    $lower_limit = 1;

    db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN);
    db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN);

    // We can also declare the variable after calling db2_bind_param()
    $upper_limit = 15.0;

    if (db2_execute($stmt)) {
        while ($row = db2_fetch_array($stmt)) {
            print "{$row[0]}, {$row[1]}, {$row[2]}\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Pook, cat, 3.2
    Rickety Ride, goat, 9.7
    Peaches, dog, 12.3

Örnek 2 Calling stored procedures with IN and OUT parameters

The stored procedure match_animal in the following example accepts three different parameters:

1. an input (IN) parameter that accepts the name of the first animal as input
2. an input-output (INOUT) parameter that accepts the name of the second animal as input and returns the string `TRUE` if an animal in the database matches that name
3. an output (OUT) parameter that returns the sum of the weight of the two identified animals

In addition, the stored procedure returns a result set consisting of the animals listed in alphabetic order starting at the animal corresponding to the input value of the first parameter and ending at the animal corresponding to the input value of the second parameter.

    <?php

    $sql = 'CALL match_animal(?, ?, ?)';
    $conn = db2_connect($database, $user, $password);
    $stmt = db2_prepare($conn, $sql);

    $name = "Peaches";
    $second_name = "Rickety Ride";
    $weight = 0;

    db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
    db2_bind_param($stmt, 2, "second_name", DB2_PARAM_INOUT);
    db2_bind_param($stmt, 3, "weight", DB2_PARAM_OUT);

    print "Values of bound parameters _before_ CALL:\n";
    print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

    if (db2_execute($stmt)) {
        print "Values of bound parameters _after_ CALL:\n";
        print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

        print "Results:\n";
        while ($row = db2_fetch_array($stmt)) {
            print "  {$row[0]}, {$row[1]}, {$row[2]}\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Values of bound parameters _before_ CALL:
      1: Peaches 2: Rickety Ride 3: 0

    Values of bound parameters _after_ CALL:
      1: Peaches 2: TRUE 3: 22

    Results:
      Peaches, dog, 12.3
      Pook, cat, 3.2
      Rickety Ride, goat, 9.7

Örnek 3 Inserting a binary large object (BLOB) directly from a file

The data for large objects are typically stored in files, such as XML documents or audio files. Rather than reading an entire file into a PHP variable, and then binding that PHP variable into an SQL statement, you can avoid some memory overhead by binding the file directly to the input parameter of your SQL statement. The following example demonstrates how to bind a file directly into a BLOB column.

    <?php
    $stmt = db2_prepare($conn, "INSERT INTO animal_pictures(picture) VALUES (?)");

    $picture = "/opt/albums/spook/grooming.jpg";
    $rc = db2_bind_param($stmt, 1, "picture", DB2_PARAM_FILE);
    $rc = db2_execute($stmt);
    ?>

### Ayrıca Bakınız

- db2_execute() - Executes a prepared SQL statement
- db2_prepare() - Prepares an SQL statement to be executed

# db2_client_info

(PECL ibm_db2 >= 1.1.1)

db2_client_info — Returns an object with properties that describe the DB2 database client

### Açıklama

function db2_client_info(resource `$connection`): stdClass|false

This function returns an object with read-only properties that return information about the DB2 database client. The following table lists the DB2 client properties:

DB2 client properties
Property name | Return type | Description
--- | --- | ---
APPL_CODEPAGE | int | The application code page.
CONN_CODEPAGE | int | The code page for the current connection.
DATA_SOURCE_NAME | string | The data source name (DSN) used to create the current connection to the database.
DRIVER_NAME | string | The name of the library that implements the DB2 Call Level Interface (CLI) specification.
DRIVER_ODBC_VER | string | The version of ODBC that the DB2 client supports. This returns a string "MM.mm" where MM is the major version and mm is the minor version. The DB2 client always returns "03.51".
DRIVER_VER | string | The version of the client, in the form of a string "MM.mm.uuuu" where MM is the major version, mm is the minor version, and uuuu is the update. For example, "08.02.0001" represents major version 8, minor version 2, update 1.
ODBC_SQL_CONFORMANCE | string | The level of ODBC SQL grammar supported by the client: MINIMUM Supports the minimum ODBC SQL grammar. CORE Supports the core ODBC SQL grammar. EXTENDED Supports extended ODBC SQL grammar.
ODBC_VER | string | The version of ODBC that the ODBC driver manager supports. This returns a string "MM.mm.rrrr" where MM is the major version, mm is the minor version, and rrrr is the release. The DB2 client always returns "03.01.0000".

### Bağımsız Değişkenler

`connection`
  Specifies an active DB2 client connection.

### Dönen Değerler

Returns an object on a successful call, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 A db2_client_info() example

To retrieve information about the client, you must pass a valid database connection resource to db2_client_info().

    <?php
    $conn = db2_connect( 'SAMPLE', 'db2inst1', 'ibmdb2' );
    $client = db2_client_info( $conn );

    if ($client) {
        echo "DRIVER_NAME: ";           var_dump( $client->DRIVER_NAME );
        echo "DRIVER_VER: ";            var_dump( $client->DRIVER_VER );
        echo "DATA_SOURCE_NAME: ";      var_dump( $client->DATA_SOURCE_NAME );
        echo "DRIVER_ODBC_VER: ";       var_dump( $client->DRIVER_ODBC_VER );
        echo "ODBC_VER: ";              var_dump( $client->ODBC_VER );
        echo "ODBC_SQL_CONFORMANCE: ";  var_dump( $client->ODBC_SQL_CONFORMANCE );
        echo "APPL_CODEPAGE: ";         var_dump( $client->APPL_CODEPAGE );
        echo "CONN_CODEPAGE: ";         var_dump( $client->CONN_CODEPAGE );
    }
    else {
        echo "Error retrieving client information.
         Perhaps your database connection was invalid.";
    }
    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    DRIVER_NAME: string(8) "libdb2.a"
    DRIVER_VER: string(10) "08.02.0001"
    DATA_SOURCE_NAME: string(6) "SAMPLE"
    DRIVER_ODBC_VER: string(5) "03.51"
    ODBC_VER: string(10) "03.01.0000"
    ODBC_SQL_CONFORMANCE: string(8) "EXTENDED"
    APPL_CODEPAGE: int(819)
    CONN_CODEPAGE: int(819)

### Ayrıca Bakınız

- db2_server_info() - Returns an object with properties that describe the DB2 database server

# db2_close

(PECL ibm_db2 >= 1.0.0)

db2_close — Closes a database connection

### Açıklama

function db2_close(resource `$connection`): bool

This function closes a DB2 client connection created with db2_connect() and returns the corresponding resources to the database server.

If you attempt to close a persistent DB2 client connection created with db2_pconnect(), the close request is ignored and the persistent DB2 client connection remains available for the next caller.

### Bağımsız Değişkenler

`connection`
  Specifies an active DB2 client connection.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Closing a connection

The following example demonstrates a successful attempt to close a connection to an IBM DB2, Cloudscape, or Apache Derby database.

    <?php
    $conn = db2_connect('SAMPLE', 'db2inst1', 'ibmdb2');
    $rc = db2_close($conn);
    if ($rc) {
        echo "Connection was successfully closed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Connection was successfully closed.

### Ayrıca Bakınız

- db2_connect() - Returns a connection to a database
- db2_pclose() - Closes a persistent database connection
- db2_pconnect() - Returns a persistent connection to a database

# db2_column_privileges

(PECL ibm_db2 >= 1.0.0)

db2_column_privileges — Returns a result set listing the columns and associated privileges for a table

### Açıklama

function db2_column_privileges(
resource `$connection`,
?string `$qualifier` = `null`,
?string `$schema` = `null`,
?string `$table_name` = `null`,
?string `$column_name` = `null`
): resource

Returns a result set listing the columns and associated privileges for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. To match all schemas, pass `null` or an empty string.
`table_name`
  The name of the table or view. To match all tables in the database, pass `null` or an empty string.
`column_name`
  The name of the column. To match all columns in the table, pass `null` or an empty string.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the column privileges for columns matching the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | Name of the catalog. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema.
TABLE_NAME | Name of the table or view.
COLUMN_NAME | Name of the column.
GRANTOR | Authorization ID of the user who granted the privilege.
GRANTEE | Authorization ID of the user to whom the privilege was granted.
PRIVILEGE | The privilege for the column.
IS_GRANTABLE | Whether the GRANTEE is permitted to grant this privilege to other users.

### Ayrıca Bakınız

- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_columns

(PECL ibm_db2 >= 1.0.0)

db2_columns — Returns a result set listing the columns and associated metadata for a table

### Açıklama

function db2_columns(
resource `$connection`,
?string `$qualifier` = `null`,
?string `$schema` = `null`,
?string `$table_name` = `null`,
?string `$column_name` = `null`
): resource

Returns a result set listing the columns and associated metadata for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. To match all schemas, pass `'%'`.
`table_name`
  The name of the table or view. To match all tables in the database, pass `null` or an empty string.
`column_name`
  The name of the column. To match all columns in the table, pass `null` or an empty string.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the columns matching the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | Name of the catalog. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema.
TABLE_NAME | Name of the table or view.
COLUMN_NAME | Name of the column.
DATA_TYPE | The SQL data type for the column represented as an integer value.
TYPE_NAME | A string representing the data type for the column.
COLUMN_SIZE | An integer value representing the size of the column.
BUFFER_LENGTH | Maximum number of bytes necessary to store data from this column.
DECIMAL_DIGITS | The scale of the column, or `null` where scale is not applicable.
NUM_PREC_RADIX | An integer value of either `10` (representing an exact numeric data type), `2` (representing an approximate numeric data type), or `null` (representing a data type for which radix is not applicable).
NULLABLE | An integer value representing whether the column is nullable or not.
REMARKS | Description of the column.
COLUMN_DEF | Default value for the column.
SQL_DATA_TYPE | An integer value representing the size of the column.
SQL_DATETIME_SUB | Returns an integer value representing a datetime subtype code, or `null` for SQL data types to which this does not apply.
CHAR_OCTET_LENGTH | Maximum length in octets for a character data type column, which matches COLUMN_SIZE for single-byte character set data, or `null` for non-character data types.
ORDINAL_POSITION | The 1-indexed position of the column in the table.
IS_NULLABLE | A string value where 'YES' means that the column is nullable and 'NO' means that the column is not nullable.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_commit

(PECL ibm_db2 >= 1.0.0)

db2_commit — Commits a transaction

### Açıklama

function db2_commit(resource `$connection`): bool

Commits an in-progress transaction on the specified connection resource and begins a new transaction. PHP applications normally default to AUTOCOMMIT mode, so db2_commit() is not necessary unless AUTOCOMMIT has been turned off for the connection resource.

### Bağımsız Değişkenler

`connection`
  A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- db2_autocommit() - Returns or sets the AUTOCOMMIT state for a database connection
- db2_rollback() - Rolls back a transaction

# db2_conn_error

(PECL ibm_db2 >= 1.0.0)

db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt

### Açıklama

function db2_conn_error(?resource `$connection` = `null`): string

db2_conn_error() returns an SQLSTATE value representing the reason the last attempt to connect to a database failed. As db2_connect() returns `false` in the event of a failed connection attempt, you do not pass any parameters to db2_conn_error() to retrieve the SQLSTATE value.

If, however, the connection was successful but becomes invalid over time, you can pass the `connection` parameter to retrieve the SQLSTATE value for a specific connection.

To learn what the SQLSTATE value means, you can issue the following command at a DB2 Command Line Processor prompt: `db2 '? `sqlstate-value`'`. You can also call db2_conn_errormsg() to retrieve an explicit error message and the associated SQLCODE value.

### Bağımsız Değişkenler

`connection`
  A connection resource associated with a connection that initially succeeded, but which over time became invalid.

### Dönen Değerler

Returns the SQLSTATE value resulting from a failed connection attempt. Returns an empty string if there is no error associated with the last connection attempt.

### Örnekler

Örnek 1 Retrieving an SQLSTATE value for a failed connection attempt

The following example demonstrates how to return an SQLSTATE value after deliberately passing invalid parameters to db2_connect().

    <?php
    $conn = db2_connect('badname', 'baduser', 'badpassword');
    if (!$conn) {
        print "SQLSTATE value: " . db2_conn_error();
    }
    ?>

Yukarıdaki örneğin çıktısı:

    SQLSTATE value: 08001

### Ayrıca Bakınız

- db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
- db2_connect() - Returns a connection to a database
- db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
- db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

# db2_conn_errormsg

(PECL ibm_db2 >= 1.0.0)

db2_conn_errormsg — Returns the last connection error message and SQLCODE value

### Açıklama

function db2_conn_errormsg(?resource `$connection` = `null`): string

db2_conn_errormsg() returns an error message and SQLCODE value representing the reason the last database connection attempt failed. As db2_connect() returns `false` in the event of a failed connection attempt, do not pass any parameters to db2_conn_errormsg() to retrieve the associated error message and SQLCODE value.

If, however, the connection was successful but becomes invalid over time, you can pass the `connection` parameter to retrieve the associated error message and SQLCODE value for a specific connection.

### Bağımsız Değişkenler

`connection`
  A connection resource associated with a connection that initially succeeded, but which over time became invalid.

### Dönen Değerler

Returns a string containing the error message and SQLCODE value resulting from a failed connection attempt. If there is no error associated with the last connection attempt, db2_conn_errormsg() returns an empty string.

### Örnekler

Örnek 1 Retrieving the error message returned by a failed connection attempt

The following example demonstrates how to return an error message and SQLCODE value after deliberately passing invalid parameters to db2_connect().

    <?php
    $conn = db2_connect('badname', 'baduser', 'badpassword');
    if (!$conn) {
        print db2_conn_errormsg();
    }
    ?>

Yukarıdaki örneğin çıktısı:

    [IBM][CLI Driver] SQL1013N  The database alias name
    or database name "BADNAME" could not be found.  SQLSTATE=42705
     SQLCODE=-1013

### Ayrıca Bakınız

- db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
- db2_connect() - Returns a connection to a database
- db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
- db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

# db2_connect

(PECL ibm_db2 >= 1.0.0)

db2_connect — Returns a connection to a database

### Açıklama

function db2_connect(
string `$database`,
?string `$username`,
?string `$password`,
array `$options` = []
): resource|false

Creates a new connection to an IBM DB2 Universal Database, IBM Cloudscape, or Apache Derby database.

### Bağımsız Değişkenler

`database`
  For a cataloged connection to a database, `database` represents the database alias in the DB2 client catalog.

  For an uncataloged connection to a database, `database` represents a complete connection string in the following format:

      DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;

  > Bilginize:

  > When connecting to Db2 on IBM i, the underlying system calls » SQLDriverConnect, which only accepts DSN, UID, and PWD for the » connection string. Like so:

  >     DSN=database;UID=username;PWD=password;

  where the parameters represent the following values:
  `database`
    The name of the database.
  `hostname`
    The hostname or IP address of the database server.
  `port`
    The TCP/IP port on which the database is listening for requests.
  `username`
    The username with which you are connecting to the database.
  `password`
    The password with which you are connecting to the database.
`username`
  The username with which you are connecting to the database. For uncataloged connections, you must pass a `null` value or empty string.
`password`
  The password with which you are connecting to the database. For uncataloged connections, you must pass a `null` value or empty string.
`options`

  An associative array of connection options that affect the behavior of the connection, where valid array keys include:

  `autocommit`
    Passing the `DB2_AUTOCOMMIT_ON` value turns autocommit on for this connection handle. Passing the `DB2_AUTOCOMMIT_OFF` value turns autocommit off for this connection handle.
  `DB2_ATTR_CASE`
    Passing the `DB2_CASE_NATURAL` value specifies that column names are returned in natural case. Passing the `DB2_CASE_LOWER` value specifies that column names are returned in lower case. Passing the `DB2_CASE_UPPER` value specifies that column names are returned in upper case.
  `CURSOR`
    Passing the `DB2_FORWARD_ONLY` value specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers. Passing the `DB2_SCROLLABLE` value specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.

  The following new option is available in ibm_db2 version 1.7.0 and later.

  `trustedcontext`
    Passing the DB2_TRUSTED_CONTEXT_ENABLE value turns trusted context on for this connection handle. This parameter cannot be set using db2_set_option(). This key works only if the database is cataloged (even if the database is local), or if you specify the full DSN when you create the connection. To catalog the database, use following commands:

        db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME>
        db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback
        db2 "update dbm cfg using svcename <SERVICENAME>"
        db2set DB2COMM=TCPIP

  The following new i5/OS options are available in ibm_db2 version 1.5.1 and later.

  `i5_lib`
    A character value that indicates the default library that will be used for resolving unqualified file references. This is not valid if the connection is using system naming mode.
  `i5_naming`
    `DB2_I5_NAMING_ON` value turns on DB2 UDB CLI iSeries system naming mode. Files are qualified using the slash (/) delimiter. Unqualified files are resolved using the library list for the job. `DB2_I5_NAMING_OFF` value turns off DB2 UDB CLI default naming mode, which is SQL naming. Files are qualified using the period (.) delimiter. Unqualified files are resolved using either the default library or the current user ID.
  `i5_commit`

    The `i5_commit` attribute should be set before the db2_connect(). If the value is changed after the connection has been established, and the connection is to a remote data source, the change does not take effect until the next successful db2_connect() for the connection handle.

    > Bilginize: The php.ini setting `ibm_db2.i5_allow_commit`==0 or `DB2_I5_TXN_NO_COMMIT` is the default, but may be overridden with the `i5_commit` option.

    `DB2_I5_TXN_NO_COMMIT` - Commitment control is not used. `DB2_I5_TXN_READ_UNCOMMITTED` - Dirty reads, nonrepeatable reads, and phantoms are possible. `DB2_I5_TXN_READ_COMMITTED` - Dirty reads are not possible. Nonrepeatable reads, and phantoms are possible. `DB2_I5_TXN_REPEATABLE_READ` - Dirty reads and nonrepeatable reads are not possible. Phantoms are possible. `DB2_I5_TXN_SERIALIZABLE` - Transactions are serializable. Dirty reads, non-repeatable reads, and phantoms are not possible
  `i5_query_optimize`
    `DB2_FIRST_IO` All queries are optimized with the goal of returning the first page of output as fast as possible. This goal works well when the output is controlled by a user who is most likely to cancel the query after viewing the first page of output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. `DB2_ALL_IO` All queries are optimized with the goal of running the entire query to completion in the shortest amount of elapsed time. This is a good option when the output of a query is being written to a file or report, or the interface is queuing the output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. This is the default.
  `i5_dbcs_alloc`
    `DB2_I5_DBCS_ALLOC_ON` value turns on DB2 6X allocation scheme for DBCS translation column size growth. `DB2_I5_DBCS_ALLOC_OFF` value turns off DB2 6X allocation scheme for DBCS translation column size growth. Note: php.ini setting `ibm_db2.i5_dbcs_alloc`==0 or `DB2_I5_DBCS_ALLOC_OFF` is the default, but may be overridden with the `i5_dbcs_alloc` option.
  `i5_date_fmt`
    `DB2_I5_FMT_ISO` - The International Organization for Standardization (ISO) date format yyyy-mm-dd is used. This is the default. `DB2_I5_FMT_USA` - The United States date format mm/dd/yyyy is used. `DB2_I5_FMT_EUR` - The European date format dd.mm.yyyy is used. `DB2_I5_FMT_JIS` - The Japanese Industrial Standard date format yyyy-mm-dd is used. `DB2_I5_FMT_MDY` - The date format mm/dd/yyyy is used. `DB2_I5_FMT_DMY` - The date format dd/mm/yyyy is used. `DB2_I5_FMT_YMD` - The date format yy/mm/dd is used. `DB2_I5_FMT_JUL` - The Julian date format yy/ddd is used. `DB2_I5_FMT_JOB` - The job default is used.
  `i5_date_sep`
    `DB2_I5_SEP_SLASH` - A slash ( / ) is used as the date separator. This is the default. `DB2_I5_SEP_DASH` - A dash ( - ) is used as the date separator. `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the date separator. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the date separator. `DB2_I5_SEP_BLANK` - A blank is used as the date separator. `DB2_I5_SEP_JOB` - The job default is used
  `i5_time_fmt`
    `DB2_I5_FMT_ISO` - The International Organization for Standardization (ISO) time format hh.mm.ss is used. This is the default. `DB2_I5_FMT_USA` - The United States time format hh:mmxx is used, where xx is AM or PM. `DB2_I5_FMT_EUR` - The European time format hh.mm.ss is used. `DB2_I5_FMT_JIS` - The Japanese Industrial Standard time format hh:mm:ss is used. `DB2_I5_FMT_HMS` - The hh:mm:ss format is used.
  `i5_time_sep`
    `DB2_I5_SEP_COLON` - A colon ( : ) is used as the time separator. This is the default. `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the time separator. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the time separator. `DB2_I5_SEP_BLANK` - A blank is used as the time separator. `DB2_I5_SEP_JOB` - The job default is used.
  `i5_decimal_sep`
    `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the decimal separator. This is the default. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the decimal separator. `DB2_I5_SEP_JOB` - The job default is used.

  The following new i5/OS option is available in ibm_db2 version 1.8.0 and later.

  `i5_libl`
    A character value that indicates the library list that will be used for resolving unqualified file references. Specify the library list elements separated by blanks 'i5_libl'=>"MYLIB YOURLIB ANYLIB".

    > Bilginize: `i5_libl` calls qsys2/qcmdexc('cmd',cmdlen), which is only available in i5/OS V5R4 and later.

### Dönen Değerler

Returns a connection handle resource if the connection attempt is successful. If the connection attempt fails, db2_connect() returns `false`.

### Örnekler

Örnek 1 Creating a cataloged connection

Cataloged connections require you to have previously cataloged the target database through the DB2 Command Line Processor (CLP) or DB2 Configuration Assistant.

    <?php
    $database = 'SAMPLE';
    $user = 'db2inst1';
    $password = 'ibmdb2';

    $conn = db2_connect($database, $user, $password);

    if ($conn) {
        echo "Connection succeeded.";
        db2_close($conn);
    }
    else {
        echo "Connection failed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Connection succeeded.

Örnek 2 Creating an uncataloged connection

An uncataloged connection enables you to dynamically connect to a database.

    <?php
    $database = 'SAMPLE';
    $user = 'db2inst1';
    $password = 'ibmdb2';
    $hostname = 'localhost';
    $port = 50000;

    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
      "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
    $conn = db2_connect($conn_string, '', '');

    if ($conn) {
        echo "Connection succeeded.";
        db2_close($conn);
    }
    else {
        echo "Connection failed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Connection succeeded.

Örnek 3 Creating a connection with autocommit off by default

Passing an array of options to db2_connect() enables you to modify the default behavior of the connection handle.

    <?php
    $database = 'SAMPLE';
    $user = 'db2inst1';
    $password = 'ibmdb2';
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF);

    $conn = db2_connect($database, $user, $password, $options);

    if ($conn) {
        echo "Connection succeeded.\n";
        if (db2_autocommit($conn)) {
             echo "Autocommit is on.\n";
        }
        else {
             echo "Autocommit is off.\n";
        }
        db2_close($conn);
    }
    else {
        echo "Connection failed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Connection succeeded.
    Autocommit is off.

Örnek 4 i5/OS best performance

To achieve best performance for your i5/OS ibm_db2 1.5.1 PHP application use the default host, userid, and password for your db2_connect().

    <?php
      $library = "ADC";
      $i5 = db2_connect("", "", "", array("i5_lib"=>"qsys2"));
      $result = db2_exec($i5,
           "select * from systables where table_schema = '$library'");
      while ($row = db2_fetch_both($result)) {
         echo $row['TABLE_NAME']."</br>";
      }
      db2_close($i5);
    ?>

Yukarıdaki örneğin çıktısı:

    ANIMALS
    NAMES
    PICTURES

Örnek 5 Using trusted context

The following example shows how to enable trusted context, switch users, and get the current user ID.

    <?php

    $database = "SAMPLE";
    $hostname = "localhost";
    $port = 50000;
    $authID = "db2inst1";
    $auth_pass = "ibmdb2";

    $tc_user = "tcuser";
    $tc_pass = "tcpassword";

    $dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
      PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
    $options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);

    $tc_conn = db2_connect($dsn, "", "", $options);
    if($tc_conn) {
        echo "Explicit trusted connection succeeded.\n";

        if(db2_get_option($tc_conn, "trustedcontext")) {
            $userBefore = db2_get_option($tc_conn, "trusted_user");

            //Do some work as user 1.

            //Switching to trusted user.
            $parameters = array("trusted_user" => $tc_user,
              "trusted_password" => $tcuser_pass);
            $res = db2_set_option ($tc_conn, $parameters, 1);

            $userAfter = db2_get_option($tc_conn, "trusted_user");
            //Do more work as trusted user.

            if($userBefore != $userAfter) {
                echo "User has been switched." . "\n";
            }
        }

        db2_close($tc_conn);
    }
    else {
        echo "Explicit trusted connection failed.\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Explicit trusted connection succeeded.
    User has been switched.

### Ayrıca Bakınız

- db2_close() - Closes a database connection
- db2_pconnect() - Returns a persistent connection to a database

# db2_cursor_type

(PECL ibm_db2 >= 1.0.0)

db2_cursor_type — Returns the cursor type used by a statement resource

### Açıklama

function db2_cursor_type(resource `$stmt`): int

Returns the cursor type used by a statement resource. Use this to determine if you are working with a forward-only cursor or scrollable cursor.

### Bağımsız Değişkenler

`stmt`
  A valid statement resource.

### Dönen Değerler

Returns either `DB2_FORWARD_ONLY` if the statement resource uses a forward-only cursor or `DB2_SCROLLABLE` if the statement resource uses a scrollable cursor.

### Ayrıca Bakınız

- db2_prepare() - Prepares an SQL statement to be executed

# db2_escape_string

(PECL ibm_db2 >= 1.6.0)

db2_escape_string — Used to escape certain characters

### Açıklama

function db2_escape_string(string `$string_literal`): string

Prepends backslashes to special characters in the string argument.

### Bağımsız Değişkenler

`string_literal`
  The string that contains special characters that need to be modified. Characters that are prepended with a backslash are `\x00`, `\n`, `\r`, `\`, `'`, `"` and `\x1a`.

### Dönen Değerler

Returns `string_literal` with the special characters noted above prepended with backslashes.

### Örnekler

Örnek 1 A db2_escape_string() example

Result of using the db2_escape_string() function

    <?php

    $conn = db2_connect($database, $user, $password);

    if ($conn) {
        $str[0] = "All characters: \x00 , \n , \r , \ , ' , \" , \x1a .";
        $str[1] = "Backslash (\). Single quote ('). Double quote (\")";
        $str[2] = "The NULL character \0 must be quoted as well";
        $str[3] = "Interesting characters: \x1a , \x00 .";
        $str[4] = "Nothing to quote";
        $str[5] = 200676;
        $str[6] = "";

        foreach( $str as $string ) {
            echo "db2_escape_string: " . db2_escape_string($string). "\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    db2_escape_string: All characters: \0 , \n , \r , \\ , \' , \" , \Z .
    db2_escape_string: Backslash (\\). Single quote (\'). Double quote (\")
    db2_escape_string: The NULL character \0 must be quoted as well
    db2_escape_string: Interesting characters: \Z , \0 .
    db2_escape_string: Nothing to quote
    db2_escape_string: 200676
    db2_escape_string:

### Ayrıca Bakınız

- db2_prepare() - Prepares an SQL statement to be executed

# db2_exec

(PECL ibm_db2 >= 1.0.0)

db2_exec — Executes an SQL statement directly

### Açıklama

function db2_exec(resource `$connection`, string `$statement`, array `$options` = []): resource|false

Executes an SQL statement directly.

If you plan to interpolate PHP variables into the SQL statement, understand that this is one of the more common security exposures. Consider calling db2_prepare() to prepare an SQL statement with parameter markers for input values. Then you can call db2_execute() to pass in the input values and avoid SQL injection attacks.

If you plan to repeatedly issue the same SQL statement with different parameters, consider calling db2_prepare() and db2_execute() to enable the database server to reuse its access plan and increase the efficiency of your database access.

### Bağımsız Değişkenler

`connection`
  A valid database connection resource variable as returned from db2_connect() or db2_pconnect().
`statement`
  An SQL statement. The statement cannot contain any parameter markers.
`options`
  An associative array containing statement options. You can use this parameter to request a scrollable cursor on database servers that support this functionality. For a description of valid statement options, see db2_set_option().

### Dönen Değerler

Returns a statement resource if the SQL statement was issued successfully, or `false` if the database failed to execute the SQL statement.

### Örnekler

Örnek 1 Creating a table with db2_exec()

The following example uses db2_exec() to issue a set of DDL statements in the process of creating a table.

    <?php
    $conn = db2_connect($database, $user, $password);

    // Create the test table
    $create = 'CREATE TABLE animals (id INTEGER, breed VARCHAR(32),
        name CHAR(16), weight DECIMAL(7,2))';
    $result = db2_exec($conn, $create);
    if ($result) {
        print "Successfully created the table.\n";
    }

    // Populate the test table
    $animals = array(
        array(0, 'cat', 'Pook', 3.2),
        array(1, 'dog', 'Peaches', 12.3),
        array(2, 'horse', 'Smarty', 350.0),
        array(3, 'gold fish', 'Bubbles', 0.1),
        array(4, 'budgerigar', 'Gizmo', 0.2),
        array(5, 'goat', 'Rickety Ride', 9.7),
        array(6, 'llama', 'Sweater', 150)
    );

    foreach ($animals as $animal) {
        $rc = db2_exec($conn, "INSERT INTO animals (id, breed, name, weight)
          VALUES ({$animal[0]}, '{$animal[1]}', '{$animal[2]}', {$animal[3]})");
        if ($rc) {
            print "Insert... ";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Successfully created the table.
    Insert... Insert... Insert... Insert... Insert... Insert... Insert...

Örnek 2 Executing a SELECT statement with a scrollable cursor

The following example demonstrates how to request a scrollable cursor for an SQL statement issued by db2_exec().

    <?php
    $conn = db2_connect($database, $user, $password);
    $sql = "SELECT name FROM animals
        WHERE weight < 10.0
        ORDER BY name";
    if ($conn) {
        require_once 'prepare.inc';
        $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
        while ($row = db2_fetch_array($stmt)) {
            print "$row[0]\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Bubbles
    Gizmo
    Pook
    Rickety Ride

Örnek 3 Returning XML data as an SQL ResultSet

The following example demonstrates how to work with documents stored in a XML column using the SAMPLE database. Using some pretty simple SQL/XML, this example returns some of the nodes in a XML document in an SQL ResultSet format that most users are familiar with.

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = 'SELECT * FROM XMLTABLE(
        XMLNAMESPACES (DEFAULT \'http://posample.org\'),
        \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
        COLUMNS
        "CID" VARCHAR (50) PATH \'@Cid\',
        "NAME" VARCHAR (50) PATH \'name\',
        "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
        ) AS T
        WHERE NAME = \'Kathy Smith\'
        ';
    $stmt = db2_exec($conn, $query);

    while($row = db2_fetch_object($stmt)){
        printf("$row->CID     $row->NAME     $row->PHONE\n");
    }
    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    1000     Kathy Smith     416-555-1358
    1001     Kathy Smith     905-555-7258

Örnek 4 Performing a "JOIN" with XML data

The following example works with documents stored in 2 different XML columns in the SAMPLE database. It creates 2 temporary tables from the XML documents from 2 different columns and returns an SQL ResultSet with information regarding shipping status for the customer.

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = '
        SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
        FROM
        XMLTABLE(
        XMLNAMESPACES (DEFAULT \'http://posample.org\'),
        \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
        COLUMNS
        "CID" BIGINT PATH \'@Cid\',
        "NAME" VARCHAR (50) PATH \'name\',
        "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
        ) as A,
        PURCHASEORDER AS B,
        XMLTABLE (
        XMLNAMESPACES (DEFAULT \'http://posample.org\'),
        \'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
        COLUMNS
        "PONUM"  BIGINT PATH \'@PoNum\',
        "STATUS" VARCHAR (50) PATH \'@Status\'
        ) as C
        WHERE A.CID = B.CUSTID AND
        B.POID = C.PONUM AND
        A.NAME = \'Kathy Smith\'
    ';

    $stmt = db2_exec($conn, $query);

    while($row = db2_fetch_object($stmt)){
        printf("$row->CID     $row->NAME     $row->PHONE     $row->PONUM     $row->STATUS\n");
    }

    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    1001     Kathy Smith     905-555-7258     5002     Shipped

Örnek 5 Returning SQL data as part of a larger XML document

The following example works with a portion of the PRODUCT.DESCRIPTION documents in the SAMPLE database. It creates a XML document containing product description (XML data) and pricing info (SQL data).

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = '
    SELECT
    XMLSERIALIZE(
    XMLQUERY(\'
        declare boundary-space strip;
        declare default element namespace "http://posample.org";
        <promoList> {
        for $prod in $doc/product
        where $prod/description/price < 10.00
        order by $prod/description/price ascending
        return(
            <promoitem> {
            $prod,
            <startdate> {$start} </startdate>,
            <enddate> {$end} </enddate>,
            <promoprice> {$promo} </promoprice>
            } </promoitem>
        )
        } </promoList>
    \' passing by ref DESCRIPTION AS "doc",
    PROMOSTART as "start",
    PROMOEND as "end",
    PROMOPRICE as "promo"
    RETURNING SEQUENCE)
    AS CLOB (32000))
    AS NEW_PRODUCT_INFO
    FROM PRODUCT
    WHERE PID = \'100-100-01\'
    ';

    $stmt = db2_exec($conn, $query);

    while($row = db2_fetch_array($stmt)){
        printf("$row[0]\n");
    }
    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    <promoList xmlns="http://posample.org">
        <promoitem>
        <product pid="100-100-01">
            <description>
                <name>Snow Shovel, Basic 22 inch</name>
                <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
                <price>9.99</price>
                <weight>1 kg</weight>
            </description>
        </product>
        <startdate>2004-11-19</startdate>
        <enddate>2004-12-19</enddate>
        <promoprice>7.25</promoprice>
        </promoitem>
    </promoList>

### Ayrıca Bakınız

- db2_execute() - Executes a prepared SQL statement
- db2_prepare() - Prepares an SQL statement to be executed

# db2_execute

(PECL ibm_db2 >= 1.0.0)

db2_execute — Executes a prepared SQL statement

### Açıklama

function db2_execute(resource `$stmt`, array `$parameters` = []): bool

db2_execute() executes an SQL statement that was prepared by db2_prepare().

If the SQL statement returns a result set, for example, a SELECT statement or a CALL to a stored procedure that returns one or more result sets, you can retrieve a row as an array from the `stmt` resource using db2_fetch_assoc(), db2_fetch_both(), or db2_fetch_array(). Alternatively, you can use db2_fetch_row() to move the result set pointer to the next row and fetch a column at a time from that row with db2_result().

Refer to db2_prepare() for a brief discussion of the advantages of using db2_prepare() and db2_execute() rather than db2_exec().

### Bağımsız Değişkenler

`stmt`
  A prepared statement returned from db2_prepare().
`parameters`
  An array of input parameters matching any parameter markers contained in the prepared statement.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Preparing and executing an SQL statement with parameter markers

The following example prepares an INSERT statement that accepts four parameter markers, then iterates over an array of arrays containing the input values to be passed to db2_execute().

    <?php
    $pet = array(0, 'cat', 'Pook', 3.2);

    $insert = 'INSERT INTO animals (id, breed, name, weight)
        VALUES (?, ?, ?, ?)';

    $stmt = db2_prepare($conn, $insert);
    if ($stmt) {
        $result = db2_execute($stmt, $pet);
        if ($result) {
            print "Successfully added new pet.";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Successfully added new pet.

Örnek 2 Calling a stored procedure with an OUT parameter

The following example prepares a CALL statement that accepts one parameter marker representing an OUT parameter, binds the PHP variable `$my_pets` to the parameter using db2_bind_param(), then issues db2_execute() to execute the CALL statement. After the CALL to the stored procedure has been made, the value of `$num_pets` changes to reflect the value returned by the stored procedure for that OUT parameter.

    <?php
    $num_pets = 0;
    $res = db2_prepare($conn, "CALL count_my_pets(?)");
    $rc = db2_bind_param($res, 1, "num_pets", DB2_PARAM_OUT);
    $rc = db2_execute($res);
    print "I have $num_pets pets!";
    ?>

Yukarıdaki örneğin çıktısı:

    I have 7 pets!

Örnek 3 Returning XML data as an SQL ResultSet

The following example demonstrates how to work with documents stored in a XML column using the SAMPLE database. Using some pretty simple SQL/XML, this example returns some of the nodes in a XML document in an SQL ResultSet format that most users are familiar with.

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = 'SELECT * FROM XMLTABLE(
        XMLNAMESPACES (DEFAULT \'http://posample.org\'),
        \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
        COLUMNS
        "CID" VARCHAR (50) PATH \'@Cid\',
        "NAME" VARCHAR (50) PATH \'name\',
        "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
        ) AS T
        WHERE NAME = ?
        ';

    $stmt = db2_prepare($conn, $query);

    $name = 'Kathy Smith';

    if ($stmt) {
        db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
        db2_execute($stmt);

        while($row = db2_fetch_object($stmt)){
        printf("$row->CID     $row->NAME     $row->PHONE\n");
        }
    }
    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    1000     Kathy Smith     416-555-1358
    1001     Kathy Smith     905-555-7258

Örnek 4 Performing a "JOIN" with XML data

The following example works with documents stored in 2 different XML columns in the SAMPLE database. It creates 2 temporary tables from the XML documents from 2 different columns and returns an SQL ResultSet with information regarding shipping status for the customer.

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = '
    SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
    FROM
    XMLTABLE(
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
    COLUMNS
    "CID" BIGINT PATH \'@Cid\',
    "NAME" VARCHAR (50) PATH \'name\',
    "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
    ) as A,
    PURCHASEORDER AS B,
    XMLTABLE (
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
    COLUMNS
    "PONUM"  BIGINT PATH \'@PoNum\',
    "STATUS" VARCHAR (50) PATH \'@Status\'
    ) as C
    WHERE A.CID = B.CUSTID AND
        B.POID = C.PONUM AND
        A.NAME = ?
    ';

    $stmt = db2_prepare($conn, $query);

    $name = 'Kathy Smith';

    if ($stmt) {
        db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
        db2_execute($stmt);

        while($row = db2_fetch_object($stmt)){
        printf("$row->CID     $row->NAME     $row->PHONE     $row->PONUM     $row->STATUS\n");
        }
    }

    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    1001     Kathy Smith     905-555-7258     5002     Shipped

Örnek 5 Returning SQL data as part of a larger XML document

The following example works with a portion of the PRODUCT.DESCRIPTION documents in the SAMPLE database. It creates a XML document containing product description (XML data) and pricing info (SQL data).

    <?php

    $conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

    $query = '
    SELECT
    XMLSERIALIZE(
    XMLQUERY(\'
        declare boundary-space strip;
        declare default element namespace "http://posample.org";
        <promoList> {
        for $prod in $doc/product
        where $prod/description/price < 10.00
        order by $prod/description/price ascending
        return(
            <promoitem> {
            $prod,
            <startdate> {$start} </startdate>,
            <enddate> {$end} </enddate>,
            <promoprice> {$promo} </promoprice>
                } </promoitem>
        )
        } </promoList>
    \' passing by ref DESCRIPTION AS "doc",
    PROMOSTART as "start",
    PROMOEND as "end",
    PROMOPRICE as "promo"
    RETURNING SEQUENCE)
    AS CLOB (32000))
    AS NEW_PRODUCT_INFO
    FROM PRODUCT
    WHERE PID = ?
    ';

    $stmt = db2_prepare($conn, $query);

    $pid = "100-100-01";

    if ($stmt) {
        db2_bind_param($stmt, 1, "pid", DB2_PARAM_IN);
        db2_execute($stmt);

        while($row = db2_fetch_array($stmt)){
        printf("$row[0]\n");
        }
    }

    db2_close($conn);

    ?>

Yukarıdaki örneğin çıktısı:

    <promoList xmlns="http://posample.org">
        <promoitem>
        <product pid="100-100-01">
            <description>
                <name>Snow Shovel, Basic 22 inch</name>
                <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
                <price>9.99</price>
                <weight>1 kg</weight>
            </description>
        </product>
        <startdate>2004-11-19</startdate>
        <enddate>2004-12-19</enddate>
        <promoprice>7.25</promoprice>
        </promoitem>
    </promoList>

### Ayrıca Bakınız

- db2_exec() - Executes an SQL statement directly
- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_prepare() - Prepares an SQL statement to be executed
- db2_result() - Returns a single column from a row in the result set

# db2_fetch_array

(PECL ibm_db2 >= 1.0.1)

db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set

### Açıklama

function db2_fetch_array(resource `$stmt`, int `$row_number` = -1): array|false

Returns an array, indexed by column position, representing a row in a result set. The columns are 0-indexed.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing a result set.
`row_number`
  Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

### Dönen Değerler

Returns a 0-indexed array with column values indexed by the column position representing the next or requested row in the result set. Returns `false` if there are no rows left in the result set, or if the row requested by `row_number` does not exist in the result set.

### Örnekler

Örnek 1 Iterating through a forward-only cursor

If you call db2_fetch_array() without a specific row number, it automatically retrieves the next row in the result set.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $stmt = db2_prepare($conn, $sql);
    $result = db2_execute($stmt);

    while ($row = db2_fetch_array($stmt)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row[0], $row[1], $row[2], $row[3]);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

Örnek 2 Retrieving specific rows with db2_fetch_array() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_array() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

    $i=2;
    while ($row = db2_fetch_array($result, $i)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row[0], $row[1], $row[2], $row[3]);
        $i = $i + 2;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

### Ayrıca Bakınız

- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_object() - Returns an object with properties representing columns in the fetched row
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_result() - Returns a single column from a row in the result set

# db2_fetch_assoc

(PECL ibm_db2 >= 1.0.0)

db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set

### Açıklama

function db2_fetch_assoc(resource `$stmt`, int `$row_number` = -1): array|false

Returns an array, indexed by column name, representing a row in a result set.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing a result set.
`row_number`
  Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

### Dönen Değerler

Returns an associative array with column values indexed by the column name representing the next or requested row in the result set. Returns `false` if there are no rows left in the result set, or if the row requested by `row_number` does not exist in the result set.

### Örnekler

Örnek 1 Iterating through a forward-only cursor

If you call db2_fetch_assoc() without a specific row number, it automatically retrieves the next row in the result set.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $stmt = db2_prepare($conn, $sql);
    $result = db2_execute($stmt);

    while ($row = db2_fetch_assoc($stmt)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row['ID'], $row['NAME'], $row['BREED'], $row['WEIGHT']);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

Örnek 2 Retrieving specific rows with db2_fetch_assoc() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_assoc() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

    $i=2;
    while ($row = db2_fetch_assoc($result, $i)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row['ID'], $row['NAME'], $row['BREED'], $row['WEIGHT']);
        $i = $i + 2;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

### Ayrıca Bakınız

- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_object() - Returns an object with properties representing columns in the fetched row
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_result() - Returns a single column from a row in the result set

# db2_fetch_both

(PECL ibm_db2 >= 1.0.0)

db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set

### Açıklama

function db2_fetch_both(resource `$stmt`, int `$row_number` = -1): array|false

Returns an array, indexed by both column name and position, representing a row in a result set. Note that the row returned by db2_fetch_both() requires more memory than the single-indexed arrays returned by db2_fetch_assoc() or db2_fetch_array().

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing a result set.
`row_number`
  Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

### Dönen Değerler

Returns an associative array with column values indexed by both the column name and 0-indexed column number. The array represents the next or requested row in the result set. Returns `false` if there are no rows left in the result set, or if the row requested by `row_number` does not exist in the result set.

### Örnekler

Örnek 1 Iterating through a forward-only cursor

If you call db2_fetch_both() without a specific row number, it automatically retrieves the next row in the result set. The following example accesses columns in the returned array by both column name and by numeric index.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $stmt = db2_prepare($conn, $sql);
    $result = db2_execute($stmt);

    while ($row = db2_fetch_both($stmt)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row['ID'], $row[0], $row['BREED'], $row[3]);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

Örnek 2 Retrieving specific rows with db2_fetch_both() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_both() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

    $i=2;
    while ($row = db2_fetch_both($result, $i)) {
        printf ("%-5d %-16s %-32s %10s\n",
            $row[0], $row['NAME'], $row[2], $row['WEIGHT']);
        $i = $i + 2;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    0     Pook             cat                                    3.20
    5     Rickety Ride     goat                                   9.70
    2     Smarty           horse                                350.00

### Ayrıca Bakınız

- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_object() - Returns an object with properties representing columns in the fetched row
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_result() - Returns a single column from a row in the result set

# db2_fetch_object

(PECL ibm_db2 >= 1.0.0)

db2_fetch_object — Returns an object with properties representing columns in the fetched row

### Açıklama

function db2_fetch_object(resource `$stmt`, int `$row_number` = -1): stdClass|false

Returns an object in which each property represents a column returned in the row fetched from a result set.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing a result set.
`row_number`
  Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

### Dönen Değerler

Returns an object representing a single row in the result set. The properties of the object map to the names of the columns in the result set.

The IBM DB2, Cloudscape, and Apache Derby database servers typically fold column names to upper-case, so the object properties will reflect that case.

If your SELECT statement calls a scalar function to modify the value of a column, the database servers return the column number as the name of the column in the result set. If you prefer a more descriptive column name and object property, you can use the AS clause to assign a name to the column in the result set.

Returns `false` if no row was retrieved.

### Örnekler

Örnek 1 A db2_fetch_object() example

The following example issues a SELECT statement with a scalar function, RTRIM, that removes whitespace from the end of the column. Rather than creating an object with the properties "BREED" and "2", we use the AS clause in the SELECT statement to assign the name "name" to the modified column. The database server folds the column names to upper-case, resulting in an object with the properties "BREED" and "NAME".

    <?php
    $conn = db2_connect($database, $user, $password);

    $sql = "SELECT breed, RTRIM(name) AS name
        FROM animals
        WHERE id = ?";

    if ($conn) {
        $stmt = db2_prepare($conn, $sql);
        db2_execute($stmt, array(0));

        while ($pet = db2_fetch_object($stmt)) {
            echo "Come here, {$pet->NAME}, my little {$pet->BREED}!";
        }
        db2_close($conn);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Come here, Pook, my little cat!

### Ayrıca Bakınız

- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_result() - Returns a single column from a row in the result set

# db2_fetch_row

(PECL ibm_db2 >= 1.0.0)

db2_fetch_row — Sets the result set pointer to the next row or requested row

### Açıklama

function db2_fetch_row(resource `$stmt`, int `$row_number` = -1): bool

Use db2_fetch_row() to iterate through a result set, or to point to a specific row in a result set if you requested a scrollable cursor.

To retrieve individual fields from the result set, call the db2_result() function.

Rather than calling db2_fetch_row() and db2_result(), most applications will call one of db2_fetch_assoc(), db2_fetch_both(), or db2_fetch_array() to advance the result set pointer and return a complete row as an array.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource.
`row_number`
  With scrollable cursors, you can request a specific row number in the result set. Row numbering is 1-indexed.

### Dönen Değerler

Returns `true` if the requested row exists in the result set. Returns `false` if the requested row does not exist in the result set.

### Örnekler

Örnek 1 Iterating through a result set

The following example demonstrates how to iterate through a result set with db2_fetch_row() and retrieve columns from the result set with db2_result().

    <?php
    $sql = 'SELECT name, breed FROM animals WHERE weight < ?';
    $stmt = db2_prepare($conn, $sql);
    db2_execute($stmt, array(10));
    while (db2_fetch_row($stmt)) {
        $name = db2_result($stmt, 0);
        $breed = db2_result($stmt, 1);
        print "$name $breed";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    cat Pook
    gold fish Bubbles
    budgerigar Gizmo
    goat Rickety Ride

Örnek 2 i5/OS recommended alternatives to db2_fetch_row/db2_result

On i5/OS it is recommended that you use db2_fetch_both(), db2_fetch_array(), or db2_fetch_object() over db2_fetch_row()/db2_result(). In general db2_fetch_row()/db2_result() have more issues with various column types in `EBCDIC` to `ASCII` translation, including possible truncation in `DBCS` applications. You may also find the performance of db2_fetch_both(), db2_fetch_array(), and db2_fetch_object() to be superior to db2_fetch_row()/db2_result().

    <?php
      $conn = db2_connect("","","");
      $sql = 'SELECT SPECIFIC_SCHEMA, SPECIFIC_NAME, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_CREATED, ROUTINE_BODY, IN_PARMS, OUT_PARMS, INOUT_PARMS, PARAMETER_STYLE, EXTERNAL_NAME, EXTERNAL_LANGUAGE FROM QSYS2.SYSROUTINES FETCH FIRST 2 ROWS ONLY';
      $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
      while ($row = db2_fetch_both($stmt)){
        echo "<br>db2_fetch_both {$row['SPECIFIC_NAME']} {$row['ROUTINE_CREATED']} {$row[5]}";
      }
      $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
      while ($row = db2_fetch_array($stmt)){
        echo "<br>db2_fetch_array {$row[1]}  {$row[5]}";
      }
      $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
      while ($row = db2_fetch_object($stmt)){
        echo "<br>db2_fetch_object {$row->SPECIFIC_NAME} {$row->ROUTINE_CREATED}";
      }
      db2_close($conn);
    ?>

Yukarıdaki örneğin çıktısı:

    db2_fetch_both MATCH_ANIMAL 2006-08-25-17.10.23.775000 2006-08-25-17.10.23.775000
    db2_fetch_both MULTIRESULTS 2006-10-17-10.11.05.308000 2006-10-17-10.11.05.308000
    db2_fetch_array MATCH_ANIMAL 2006-08-25-17.10.23.775000
    db2_fetch_array MULTIRESULTS 2006-10-17-10.11.05.308000
    db2_fetch_object MATCH_ANIMAL 2006-08-25-17.10.23.775000
    db2_fetch_object MULTIRESULTS 2006-10-17-10.11.05.308000

### Ayrıca Bakınız

- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_object() - Returns an object with properties representing columns in the fetched row
- db2_result() - Returns a single column from a row in the result set

# db2_field_display_size

(PECL ibm_db2 >= 1.0.0)

db2_field_display_size — Returns the maximum number of bytes required to display a column

### Açıklama

function db2_field_display_size(resource `$stmt`, int|string `$column`): int|false

Returns the maximum number of bytes required to display a column in a result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns an integer value with the maximum number of bytes required to display the specified column. If the column does not exist in the result set, db2_field_display_size() returns `false`.

### Ayrıca Bakınız

- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_name

(PECL ibm_db2 >= 1.0.0)

db2_field_name — Returns the name of the column in the result set

### Açıklama

function db2_field_name(resource `$stmt`, int|string `$column`): string|false

Returns the name of the specified column in the result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns a string containing the name of the specified column. If the specified column does not exist in the result set, db2_field_name() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_num

(PECL ibm_db2 >= 1.0.0)

db2_field_num — Returns the position of the named column in a result set

### Açıklama

function db2_field_num(resource `$stmt`, int|string `$column`): int|false

Returns the position of the named column in a result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns an integer containing the 0-indexed position of the named column in the result set. If the specified column does not exist in the result set, db2_field_num() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_precision

(PECL ibm_db2 >= 1.0.0)

db2_field_precision — Returns the precision of the indicated column in a result set

### Açıklama

function db2_field_precision(resource `$stmt`, int|string `$column`): int|false

Returns the precision of the indicated column in a result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns an integer containing the precision of the specified column. If the specified column does not exist in the result set, db2_field_precision() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_scale

(PECL ibm_db2 >= 1.0.0)

db2_field_scale — Returns the scale of the indicated column in a result set

### Açıklama

function db2_field_scale(resource `$stmt`, int|string `$column`): int|false

Returns the scale of the indicated column in a result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns an integer containing the scale of the specified column. If the specified column does not exist in the result set, db2_field_scale() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_type

(PECL ibm_db2 >= 1.0.0)

db2_field_type — Returns the data type of the indicated column in a result set

### Açıklama

function db2_field_type(resource `$stmt`, int|string `$column`): string|false

Returns the data type of the indicated column in a result set.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns a string containing the defined data type of the specified column. If the specified column does not exist in the result set, db2_field_type() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_field_width

(PECL ibm_db2 >= 1.0.0)

db2_field_width — Returns the width of the current value of the indicated column in a result set

### Açıklama

function db2_field_width(resource `$stmt`, int|string `$column`): int|false

Returns the width of the current value of the indicated column in a result set. This is the maximum width of the column for a fixed-length data type, or the actual width of the column for a variable-length data type.

### Bağımsız Değişkenler

`stmt`
  Specifies a statement resource containing a result set.
`column`
  Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

### Dönen Değerler

Returns an integer containing the width of the specified character or binary data type column in a result set. If the specified column does not exist in the result set, db2_field_width() returns `false`.

### Ayrıca Bakınız

- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set

# db2_foreign_keys

(PECL ibm_db2 >= 1.0.0)

db2_foreign_keys — Returns a result set listing the foreign keys for a table

### Açıklama

function db2_foreign_keys(
resource `$connection`,
?string `$qualifier`,
?string `$schema`,
string `$table_name`
): resource

Returns a result set listing the foreign keys for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. If `schema` is `null`, db2_foreign_keys() matches the schema for the current connection.
`table_name`
  The name of the table.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the foreign keys for the specified table. The result set is composed of the following columns:

Column name | Description
--- | ---
PKTABLE_CAT | Name of the catalog for the table containing the primary key. The value is NULL if this table does not have catalogs.
PKTABLE_SCHEM | Name of the schema for the table containing the primary key.
PKTABLE_NAME | Name of the table containing the primary key.
PKCOLUMN_NAME | Name of the column containing the primary key.
FKTABLE_CAT | Name of the catalog for the table containing the foreign key. The value is NULL if this table does not have catalogs.
FKTABLE_SCHEM | Name of the schema for the table containing the foreign key.
FKTABLE_NAME | Name of the table containing the foreign key.
FKCOLUMN_NAME | Name of the column containing the foreign key.
KEY_SEQ | 1-indexed position of the column in the key.
UPDATE_RULE | Integer value representing the action applied to the foreign key when the SQL operation is UPDATE.
DELETE_RULE | Integer value representing the action applied to the foreign key when the SQL operation is DELETE.
FK_NAME | The name of the foreign key.
PK_NAME | The name of the primary key.
DEFERRABILITY | An integer value representing whether the foreign key deferrability is SQL_INITIALLY_DEFERRED, SQL_INITIALLY_IMMEDIATE, or SQL_NOT_DEFERRABLE.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_free_result

(PECL ibm_db2 >= 1.0.0)

db2_free_result — Frees resources associated with a result set

### Açıklama

function db2_free_result(resource `$stmt`): bool

Frees the system and database resources that are associated with a result set. These resources are freed implicitly when a script finishes, but you can call db2_free_result() to explicitly free the result set resources before the end of the script.

### Bağımsız Değişkenler

`stmt`
  A valid statement resource.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- db2_free_stmt() - Frees resources associated with the indicated statement resource

# db2_free_stmt

(PECL ibm_db2 >= 1.0.0)

db2_free_stmt — Frees resources associated with the indicated statement resource

### Açıklama

function db2_free_stmt(resource `$stmt`): bool

Frees the system and database resources that are associated with a statement resource. These resources are freed implicitly when a script finishes, but you can call db2_free_stmt() to explicitly free the statement resources before the end of the script.

### Bağımsız Değişkenler

`stmt`
  A valid statement resource.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- db2_free_result() - Frees resources associated with a result set

# db2_get_option

(PECL ibm_db2 >= 1.6.0)

db2_get_option — Retrieves an option value for a statement resource or a connection resource

### Açıklama

function db2_get_option(resource `$resource`, string `$option`): string|false

Retrieves the value of a specified option value for a statement resource or a connection resource.

### Bağımsız Değişkenler

`resource`
  A valid statement resource as returned from db2_prepare() or a valid connection resource as returned from db2_connect() or db2_pconnect().
`option`

  A valid statement or connection options. The following new options are available as of ibm_db2 version 1.6.0. They provide useful tracking information that can be set during execution with db2_get_option().

  > Bilginize: Prior versions of ibm_db2 do not support these new options. When the value in each option is being set, some servers might not handle the entire length provided and might truncate the value. To ensure that the data specified in each option is converted correctly when transmitted to a host system, use only the characters A through Z, 0 through 9, and the underscore (_) or period (.).

  `userid`

    `SQL_ATTR_INFO_USERID` - A pointer to a null-terminated character string used to identify the client user ID sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 16 characters. This user-id is not to be confused with the authentication user-id, it is for identification purposes only and is not used for any authorization.

  `acctstr`

    `SQL_ATTR_INFO_ACCTSTR` - A pointer to a null-terminated character string used to identify the client accounting string sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 200 characters.

  `applname`

    `SQL_ATTR_INFO_APPLNAME` - A pointer to a null-terminated character string used to identify the client application name sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 32 characters.

  `wrkstnname`

    `SQL_ATTR_INFO_WRKSTNNAME` - A pointer to a null-terminated character string used to identify the client workstation name sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 18 characters.

The following table specifies which options are compatible with the available resource types:

Resource-Parameter Matrix
Key | Value | Resource Type
--- | --- | ---
|  | Connection | Statement | Result Set
userid | `SQL_ATTR_INFO_USERID` | X | X | -
acctstr | `SQL_ATTR_INFO_ACCTSTR` | X | X | -
applname | `SQL_ATTR_INFO_APPLNAME` | X | X | -
wrkstnname | `SQL_ATTR_INFO_WRKSTNNAME` | X | X | -

### Dönen Değerler

Returns the current setting of the connection attribute provided on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting and retrieving parameters through a connection resource

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $user     = 'db2inst1';
    $password = 'ibmdb2';

    /* Obtain Connection Resource */
    $conn = db2_connect($database, $user, $password);

    echo "Client attributes passed through connection string:\n";

    /* Create the associative options array with valid key-value pairs */
    /* Assign the attributes through connection string */
    /* Access the options specified */
    $options1 = array('userid' => 'db2inst1');
    $conn1 = db2_connect($database, $user, $password, $options1);
    $val = db2_get_option($conn1, 'userid');
    echo $val . "\n";

    $options2 = array('acctstr' => 'account');
    $conn2 = db2_connect($database, $user, $password, $options2);
    $val = db2_get_option($conn2, 'acctstr');
    echo $val . "\n";

    $options3 = array('applname' => 'myapp');
    $conn3 = db2_connect($database, $user, $password, $options3);
    $val = db2_get_option($conn3, 'applname');
    echo $val . "\n";

    $options4 = array('wrkstnname' => 'workstation');
    $conn4 = db2_connect($database, $user, $password, $options4);
    $val = db2_get_option($conn4, 'wrkstnname');
    echo $val . "\n";

    echo "Client attributes passed post-connection:\n";

    /* Create the associative options array with valid key-value pairs */
    /* Assign the attributes after a connection is made */
    /* Access the options specified */
    $options5 = array('userid' => 'db2inst1');
    $conn5 = db2_connect($database, $user, $password);
    $rc = db2_set_option($conn5, $options5, 1);
    $val = db2_get_option($conn5, 'userid');
    echo $val . "\n";

    $options6 = array('acctstr' => 'account');
    $conn6 = db2_connect($database, $user, $password);
    $rc = db2_set_option($conn6, $options6, 1);
    $val = db2_get_option($conn6, 'acctstr');
    echo $val . "\n";

    $options7 = array('applname' => 'myapp');
    $conn7 = db2_connect($database, $user, $password);
    $rc = db2_set_option($conn7, $options7, 1);
    $val = db2_get_option($conn7, 'applname');
    echo $val . "\n";

    $options8 = array('wrkstnname' => 'workstation');
    $conn8 = db2_connect($database, $user, $password);
    $rc = db2_set_option($conn8, $options8, 1);
    $val = db2_get_option($conn8, 'wrkstnname');
    echo $val . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Client attributes passed through connection string:
    db2inst1
    account
    myapp
    workstation
    Client attributes passed post-connection:
    db2inst1
    account
    myapp
    workstation

### Ayrıca Bakınız

- db2_connect() - Returns a connection to a database
- db2_cursor_type() - Returns the cursor type used by a statement resource
- db2_exec() - Executes an SQL statement directly
- db2_set_option() - Set options for connection or statement resources
- db2_pconnect() - Returns a persistent connection to a database
- db2_prepare() - Prepares an SQL statement to be executed

# db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection

### Açıklama

function db2_last_insert_id(resource `$resource`): ?string

Returns the auto generated ID of the last insert query that successfully executed on this connection.

The result of this function is not affected by any of the following:

- A single row INSERT statement with a VALUES clause for a table without an identity column.
- A multiple row INSERT statement with a VALUES clause.
- An INSERT statement with a fullselect.
- A ROLLBACK TO SAVEPOINT statement.

### Bağımsız Değişkenler

`resource`
  A valid connection resource as returned from db2_connect() or db2_pconnect(). The value of this parameter cannot be a statement resource or result set resource.

### Dönen Değerler

Returns the auto generated ID of last insert query that successfully executed on this connection.

### Örnekler

Örnek 1 A db2_last_insert_id() example

The following example shows how to return the auto generated ID of last insert query that successfully executed on this connection.

    <?php

    $database = "SAMPLE";
    $user = "db2inst1";
    $password = "ibmdb2";

    $conn = db2_connect($database, $user, $password);
    if($conn) {
        $createTable = "CREATE TABLE lastInsertID
          (id integer GENERATED BY DEFAULT AS IDENTITY, name varchar(20))";
        $insertTable = "INSERT INTO lastInsertID (name) VALUES ('Temp Name')";

        $stmt = @db2_exec($conn, $createTable);

        /* Checking for single row inserted. */
        $stmt = db2_exec($conn, $insertTable);
        $ret =  db2_last_insert_id($conn);
        if($ret) {
            echo "Last Insert ID is : " . $ret . "\n";
        } else {
            echo "No Last insert ID.\n";
        }

        db2_close($conn);
    }
    else {
        echo "Connection failed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Last Insert ID is : 1

# db2_lob_read

(PECL ibm_db2 >= 1.6.0)

db2_lob_read — Gets a user defined size of LOB files with each invocation

### Açıklama

function db2_lob_read(resource `$stmt`, int `$colnum`, int `$length`): string|false

Use db2_lob_read() to iterate through a specified column of a result set and retrieve a user defined size of LOB data.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing LOB data.
`colnum`
  A valid column number in the result set of the `stmt` resource.
`length`
  The size of the LOB data to be retrieved from the `stmt` resource.

### Dönen Değerler

Returns the amount of data the user specifies. Returns `false` if the data cannot be retrieved.

### Örnekler

Örnek 1 Iterating through different types of data

    <?php

    /* Database Connection Parameters */
    $db = 'SAMPLE';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Obtain Connection Resource */
    $conn = db2_connect($db,$username,$password);

    if ($conn) {
        $drop = 'DROP TABLE clob_stream';
        $result = @db2_exec( $conn, $drop );

        $create = 'CREATE TABLE clob_stream (id INTEGER, my_clob CLOB)';
        $result = db2_exec( $conn, $create );

        $variable = "";
        $stmt = db2_prepare($conn, "INSERT INTO clob_stream (id,my_clob) VALUES (1, ?)");
        $variable = "THIS IS A CLOB TEST. THIS IS A CLOB TEST.";
        db2_bind_param($stmt, 1, "variable", DB2_PARAM_IN);
        db2_execute($stmt);

        $sql = "SELECT id,my_clob FROM clob_stream";
        $result = db2_prepare($conn, $sql);
        db2_execute($result);
        db2_fetch_row($result);
        $i = 0;
        /* Read LOB data */
        while ($data = db2_lob_read($result, 2, 6)) {
            echo "Loop $i: $data\n";
            $i = $i + 1;
        }

        $drop = 'DROP TABLE blob_stream';
        $result = @db2_exec( $conn, $drop );

        $create = 'CREATE TABLE blob_stream (id INTEGER, my_blob CLOB)';
        $result = db2_exec( $conn, $create );

        $variable = "";
        $stmt = db2_prepare($conn, "INSERT INTO blob_stream (id,my_blob) VALUES (1, ?)");
        $variable = "THIS IS A BLOB TEST. THIS IS A BLOB TEST.";
        db2_bind_param($stmt, 1, "variable", DB2_PARAM_IN);
        db2_execute($stmt);

        $sql = "SELECT id,my_blob FROM blob_stream";
        $result = db2_prepare($conn, $sql);
        db2_execute($result);
        db2_fetch_row($result);
        $i = 0;
        /* Read LOB data */
        while ($data = db2_lob_read($result, 2, 6)) {
            echo "Loop $i: $data\n";
            $i = $i + 1;
        }
    } else {
        echo 'no connection: ' . db2_conn_errormsg();
    }

    ?>

Yukarıdaki örneğin çıktısı:

    Loop 0: THIS I
    Loop 1: S A CL
    Loop 2: OB TES
    Loop 3: T. THI
    Loop 4: S IS A
    Loop 5:  CLOB
    Loop 6: TEST.
    Loop 0: THIS I
    Loop 1: S A BL
    Loop 2: OB TES
    Loop 3: T. THI
    Loop 4: S IS A
    Loop 5:  BLOB
    Loop 6: TEST.

### Ayrıca Bakınız

- db2_bind_param() - Binds a PHP variable to an SQL statement parameter
- db2_exec() - Executes an SQL statement directly
- db2_execute() - Executes a prepared SQL statement
- db2_fetch_row() - Sets the result set pointer to the next row or requested row
- db2_prepare() - Prepares an SQL statement to be executed
- db2_result() - Returns a single column from a row in the result set

# db2_next_result

(PECL ibm_db2 >= 1.0.0)

db2_next_result — Requests the next result set from a stored procedure

### Açıklama

function db2_next_result(resource `$stmt`): resource|false

A stored procedure can return zero or more result sets. While you handle the first result set in exactly the same way you would handle the results returned by a simple SELECT statement, to fetch the second and subsequent result sets from a stored procedure you must call the db2_next_result() function and return the result to a uniquely named PHP variable.

### Bağımsız Değişkenler

`stmt`
  A prepared statement returned from db2_exec() or db2_execute().

### Dönen Değerler

Returns a new statement resource containing the next result set if the stored procedure returned another result set. Returns `false` if the stored procedure did not return another result set.

### Örnekler

Örnek 1 Calling a stored procedure that returns multiple result sets

In the following example, we call a stored procedure that returns three result sets. The first result set is fetched directly from the same statement resource on which we invoked the CALL statement, while the second and third result sets are fetched from statement resources returned from our calls to the db2_next_result() function.

    <?php
    $conn = db2_connect($database, $user, $password);

    if ($conn) {
      $stmt = db2_exec($conn, 'CALL multiResults()');

      print "Fetching first result set\n";
      while ($row = db2_fetch_array($stmt)) {
        var_dump($row);
      }

      print "\nFetching second result set\n";
      $res = db2_next_result($stmt);
      if ($res) {
        while ($row = db2_fetch_array($res)) {
          var_dump($row);
        }
      }

      print "\nFetching third result set\n";
      $res2 = db2_next_result($stmt);
      if ($res2) {
        while ($row = db2_fetch_array($res2)) {
          var_dump($row);
        }
      }

      db2_close($conn);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Fetching first result set
    array(2) {
      [0]=>
      string(16) "Bubbles         "
      [1]=>
      int(3)
    }
    array(2) {
      [0]=>
      string(16) "Gizmo           "
      [1]=>
      int(4)
    }

    Fetching second result set
    array(4) {
      [0]=>
      string(16) "Sweater         "
      [1]=>
      int(6)
      [2]=>
      string(5) "llama"
      [3]=>
      string(6) "150.00"
    }
    array(4) {
      [0]=>
      string(16) "Smarty          "
      [1]=>
      int(2)
      [2]=>
      string(5) "horse"
      [3]=>
      string(6) "350.00"
    }

    Fetching third result set
    array(1) {
      [0]=>
      string(16) "Bubbles         "
    }
    array(1) {
      [0]=>
      string(16) "Gizmo           "
    }

# db2_num_fields

(PECL ibm_db2 >= 1.0.0)

db2_num_fields — Returns the number of fields contained in a result set

### Açıklama

function db2_num_fields(resource `$stmt`): int|false

Returns the number of fields contained in a result set. This is most useful for handling the result sets returned by dynamically generated queries, or for result sets returned by stored procedures, where your application cannot otherwise know how to retrieve and use the results.

### Bağımsız Değişkenler

`stmt`
  A valid statement resource containing a result set.

### Dönen Değerler

Returns an integer value representing the number of fields in the result set associated with the specified statement resource. Returns `false` if the statement resource is not a valid input value.

### Örnekler

Örnek 1 Retrieving the number of fields in a result set

The following example demonstrates how to retrieve the number of fields returned in a result set.

    <?php

    $sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
    $stmt = db2_prepare($conn, $sql);
    db2_execute($stmt, $sql);
    $columns = db2_num_fields($stmt);

    echo "There are {$columns} columns in the result set.";
    ?>

Yukarıdaki örneğin çıktısı:

    There are 4 columns in the result set.

### Ayrıca Bakınız

- db2_execute() - Executes a prepared SQL statement
- db2_field_display_size() - Returns the maximum number of bytes required to display a column
- db2_field_name() - Returns the name of the column in the result set
- db2_field_num() - Returns the position of the named column in a result set
- db2_field_precision() - Returns the precision of the indicated column in a result set
- db2_field_scale() - Returns the scale of the indicated column in a result set
- db2_field_type() - Returns the data type of the indicated column in a result set
- db2_field_width() - Returns the width of the current value of the indicated column in a result set

# db2_num_rows

(PECL ibm_db2 >= 1.0.0)

db2_num_rows — Returns the number of rows affected by an SQL statement

### Açıklama

function db2_num_rows(resource `$stmt`): int|false

Returns the number of rows deleted, inserted, or updated by an SQL statement.

To determine the number of rows that will be returned by a SELECT statement, issue SELECT COUNT(*) with the same predicates as your intended SELECT statement and retrieve the value.

If your application logic checks the number of rows returned by a SELECT statement and branches if the number of rows is 0, consider modifying your application to attempt to return the first row with one of db2_fetch_assoc(), db2_fetch_both(), db2_fetch_array(), or db2_fetch_row(), and branch if the fetch function returns `false`.

> Bilginize: If you issue a SELECT statement using a scrollable cursor, db2_num_rows() returns the number of rows returned by the SELECT statement. However, the overhead associated with scrollable cursors significantly degrades the performance of your application, so if this is the only reason you are considering using scrollable cursors, you should use a forward-only cursor and either call SELECT COUNT(*) or rely on the bool return value of the fetch functions to achieve the equivalent functionality with much better performance.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource containing a result set.

### Dönen Değerler

Returns the number of rows affected by the last SQL statement issued by the specified statement handle, başarısızlık durumunda `false` döner

# db2_pclose

(PECL ibm_db2 >= 1.8.0)

db2_pclose — Closes a persistent database connection

### Açıklama

function db2_pclose(resource `$connection`): bool

This function closes a DB2 client connection created with db2_pconnect() and returns the corresponding resources to the database server.

> Bilginize: This function is only available on i5/OS in response to i5/OS system administration requests.

If you have a persistent DB2 client connection created with db2_pconnect(), you may use this function to close the connection. To avoid substantial connection performance penalties, this function should only be used in rare cases when the persistent connection has become unresponsive or the persistent connection will not be needed for a long period of time.

### Bağımsız Değişkenler

`connection`
  Specifies an active DB2 client connection.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Closing a persistent connection

The following example demonstrates a successful attempt to close a connection to an IBM DB2 i5/OS database.

    <?php
    $conn = db2_pconnect('', '', '');
    $rc = db2_pclose($conn);
    if ($rc) {
        echo "Connection was successfully closed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Connection was successfully closed.

### Ayrıca Bakınız

- db2_close() - Closes a database connection
- db2_pconnect() - Returns a persistent connection to a database

# db2_pconnect

(PECL ibm_db2 >= 1.0.0)

db2_pconnect — Returns a persistent connection to a database

### Açıklama

function db2_pconnect(
string `$database`,
?string `$username`,
?string `$password`,
array `$options` = []
): resource|false

Returns a persistent connection to an IBM DB2 Universal Database, IBM Cloudscape, or Apache Derby database.

For more information on persistent connections, refer to Kalıcı Bağlantılı Veritabanı Bağlantıları.

Calling db2_close() on a persistent connection always returns `true`, but the underlying DB2 client connection remains open and waiting to serve the next matching db2_pconnect() request.

Users running version 1.9.0 or later of ibm_db2 should be aware that the extension will perform a transaction rollback on persistent connections at the end of a request, thus ending the transaction. This prevents the transaction block from carrying over to the next request which uses that connection if script execution ends before the transaction block does.

### Bağımsız Değişkenler

`database`
  For a cataloged connection to a database, `database` represents the database alias in the DB2 client catalog.

  For an uncataloged connection to a database, `database` represents a complete connection string in the following format:

      DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;

  > Bilginize:

  > When connecting to Db2 on IBM i, the underlying system calls » SQLDriverConnect, which only accepts DSN, UID, and PWD for the » connection string. Like so:

  >     DSN=database;UID=username;PWD=password;

  where the parameters represent the following values:
  `database`
    The name of the database.
  `hostname`
    The hostname or IP address of the database server.
  `port`
    The TCP/IP port on which the database is listening for requests.
  `username`
    The username with which you are connecting to the database.
  `password`
    The password with which you are connecting to the database.
`username`
  The username with which you are connecting to the database.
`password`
  The password with which you are connecting to the database.
`options`

  An associative array of connection options that affect the behavior of the connection, where valid array keys include:

  `autocommit`
    Passing the `DB2_AUTOCOMMIT_ON` value turns autocommit on for this connection handle. Passing the `DB2_AUTOCOMMIT_OFF` value turns autocommit off for this connection handle.
  `DB2_ATTR_CASE`
    Passing the `DB2_CASE_NATURAL` value specifies that column names are returned in natural case. Passing the `DB2_CASE_LOWER` value specifies that column names are returned in lower case. Passing the `DB2_CASE_UPPER` value specifies that column names are returned in upper case.
  `CURSOR`
    Passing the `DB2_FORWARD_ONLY` value specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers. Passing the `DB2_SCROLLABLE` value specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.

  The following new option is available in ibm_db2 version 1.7.0 and later.

  `trustedcontext`
    Passing the DB2_TRUSTED_CONTEXT_ENABLE value turns trusted context on for this connection handle. This parameter cannot be set using db2_set_option(). This key works only if the database is cataloged (even if the database is local), or if you specify the full DSN when you create the connection. To catalog the database, use following commands:

        db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME>
        db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback
        db2 "update dbm cfg using svcename <SERVICENAME>"
        db2set DB2COMM=TCPIP

  The following new i5/OS options are available in ibm_db2 version 1.5.1 and later.

  İpucu

  Conflicting connection attributes used in conjunction with persistent connections can produce indeterminate results on i5/OS. Site policies should be establish for all applications using each persistent connection user profile. The default DB2_AUTOCOMMIT_ON is suggested when using persistent connections.

  `i5_lib`
    A character value that indicates the default library that will be used for resolving unqualified file references. This is not valid if the connection is using system naming mode.
  `i5_naming`
    `DB2_I5_NAMING_ON` value turns on DB2 UDB CLI iSeries system naming mode. Files are qualified using the slash (/) delimiter. Unqualified files are resolved using the library list for the job. `DB2_I5_NAMING_OFF` value turns off DB2 UDB CLI default naming mode, which is SQL naming. Files are qualified using the period (.) delimiter. Unqualified files are resolved using either the default library or the current user ID.
  `i5_commit`

    The `i5_commit` attribute should be set before the db2_pconnect(). If the value is changed after the connection has been established, and the connection is to a remote data source, the change does not take effect until the next successful db2_pconnect() for the connection handle.

    > Bilginize: The php.ini setting `ibm_db2.i5_allow_commit`==0 or `DB2_I5_TXN_NO_COMMIT` is the default, but may be overridden with the `i5_commit` option.

    `DB2_I5_TXN_NO_COMMIT` - Commitment control is not used. `DB2_I5_TXN_READ_UNCOMMITTED` - Dirty reads, nonrepeatable reads, and phantoms are possible. `DB2_I5_TXN_READ_COMMITTED` - Dirty reads are not possible. Nonrepeatable reads, and phantoms are possible. `DB2_I5_TXN_REPEATABLE_READ` - Dirty reads and nonrepeatable reads are not possible. Phantoms are possible. `DB2_I5_TXN_SERIALIZABLE` - Transactions are serializable. Dirty reads, non-repeatable reads, and phantoms are not possible
  `i5_query_optimize`
    `DB2_FIRST_IO` All queries are optimized with the goal of returning the first page of output as fast as possible. This goal works well when the output is controlled by a user who is most likely to cancel the query after viewing the first page of output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. `DB2_ALL_IO` All queries are optimized with the goal of running the entire query to completion in the shortest amount of elapsed time. This is a good option when the output of a query is being written to a file or report, or the interface is queuing the output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. This is the default.
  `i5_dbcs_alloc`
    `DB2_I5_DBCS_ALLOC_ON` value turns on DB2 6X allocation scheme for DBCS translation column size growth.

    `DB2_I5_DBCS_ALLOC_OFF` value turns off DB2 6X allocation scheme for DBCS translation column size growth.

    > Bilginize: The php.ini setting `ibm_db2.i5_dbcs_alloc`==0 or `DB2_I5_DBCS_ALLOC_OFF` is the default, but may be overridden with the `i5_dbcs_alloc` option.

  `i5_date_fmt`
    `DB2_I5_FMT_ISO` - The International Organization for Standardization (ISO) date format yyyy-mm-dd is used. This is the default. `DB2_I5_FMT_USA` - The United States date format mm/dd/yyyy is used. `DB2_I5_FMT_EUR` - The European date format dd.mm.yyyy is used. `DB2_I5_FMT_JIS` - The Japanese Industrial Standard date format yyyy-mm-dd is used. `DB2_I5_FMT_MDY` - The date format mm/dd/yyyy is used. `DB2_I5_FMT_DMY` - The date format dd/mm/yyyy is used. `DB2_I5_FMT_YMD` - The date format yy/mm/dd is used. `DB2_I5_FMT_JUL` - The Julian date format yy/ddd is used. `DB2_I5_FMT_JOB` - The job default is used.
  `i5_date_sep`
    `DB2_I5_SEP_SLASH` - A slash ( / ) is used as the date separator. This is the default. `DB2_I5_SEP_DASH` - A dash ( - ) is used as the date separator. `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the date separator. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the date separator. `DB2_I5_SEP_BLANK` - A blank is used as the date separator. `DB2_I5_SEP_JOB` - The job default is used
  `i5_time_fmt`
    `DB2_I5_FMT_ISO` - The International Organization for Standardization (ISO) time format hh.mm.ss is used. This is the default. `DB2_I5_FMT_USA` - The United States time format hh:mmxx is used, where xx is AM or PM. `DB2_I5_FMT_EUR` - The European time format hh.mm.ss is used. `DB2_I5_FMT_JIS` - The Japanese Industrial Standard time format hh:mm:ss is used. `DB2_I5_FMT_HMS` - The hh:mm:ss format is used.
  `i5_time_sep`
    `DB2_I5_SEP_COLON` - A colon ( : ) is used as the time separator. This is the default. `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the time separator. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the time separator. `DB2_I5_SEP_BLANK` - A blank is used as the time separator. `DB2_I5_SEP_JOB` - The job default is used.
  `i5_decimal_sep`
    `DB2_I5_SEP_PERIOD` - A period ( . ) is used as the decimal separator. This is the default. `DB2_I5_SEP_COMMA` - A comma ( , ) is used as the decimal separator. `DB2_I5_SEP_JOB` - The job default is used.

  The following new i5/OS option is available in ibm_db2 version 1.8.0 and later.

  `i5_libl`

    A character value that indicates the library list that will be used for resolving unqualified file references. Specify the library list elements separated by blanks 'i5_libl'=>"MYLIB YOURLIB ANYLIB".

    > Bilginize: i5_libl calls qsys2/qcmdexc('cmd',cmdlen), which is only available in i5/OS V5R4 and later.

### Dönen Değerler

Returns a connection handle resource if the connection attempt is successful. db2_pconnect() tries to reuse an existing connection resource that exactly matches the `database`, `username`, and `password` parameters. If the connection attempt fails, db2_pconnect() returns `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL ibm_db2 1.9.0 | Active transactions within a persistent connection will be rolled back at the end of each request.
PECL ibm_db2 1.8.0 | The `i5_libl` option is available for i5/OS users.
PECL ibm_db2 1.7.0 | The `trustedcontext` option is available.
PECL ibm_db2 1.5.1 | The `i5_lib`, `i5_naming`, `i5_commit`, `i5_query_optimize`, `i5_dbcs_alloc`, `i5_date_fmt`, `i5_date_sep`, `i5_time_fmt`, `i5_time_sep` and `i5_decimal_sep` options are available for i5/OS users.

### Örnekler

Örnek 1 A db2_pconnect() example

In the following example, the first call to db2_pconnect() returns a new persistent connection resource. The second call to db2_pconnect() returns a persistent connection resource that simply reuses the first persistent connection resource.

    <?php
    $database = 'SAMPLE';
    $user = 'db2inst1';
    $password = 'ibmdb2';

    $pconn = db2_pconnect($database, $user, $password);

    if ($pconn) {
        echo "Persistent connection succeeded.";
    }
    else {
        echo "Persistent connection failed.";
    }

    $pconn2 = db2_pconnect($database, $user, $password);
    if ($pconn) {
        echo "Second persistent connection succeeded.";
    }
    else {
        echo "Second persistent connection failed.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Persistent connection succeeded.
    Second persistent connection succeeded.

Örnek 2 Using trusted context

The following example shows how to enable trusted context, switch users, and get the current user ID.

    <?php

    $database = "SAMPLE";
    $hostname = "localhost";
    $port = 50000;
    $authID = "db2inst1";
    $auth_pass = "ibmdb2";

    $tc_user = "tcuser";
    $tc_pass = "tcpassword";

    $dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
      PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
    $options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);

    $tc_conn = db2_pconnect($dsn, "", "", $options);
    if($tc_conn) {
        echo "Explicit trusted connection succeeded.\n";

        if(db2_get_option($tc_conn, "trustedcontext")) {
            $userBefore = db2_get_option($tc_conn, "trusted_user");

            //Do some work as user 1.

            //Switching to trusted user.
            $parameters = array("trusted_user" => $tc_user,
              "trusted_password" => $tcuser_pass);
            $res = db2_set_option ($tc_conn, $parameters, 1);

            $userAfter = db2_get_option($tc_conn, "trusted_user");
            //Do more work as trusted user.

            if($userBefore != $userAfter) {
                echo "User has been switched." . "\n";
            }
        }

        db2_close($tc_conn);
    }
    else {
        echo "Explicit trusted connection failed.\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Explicit trusted connection succeeded.
    User has been switched.

### Ayrıca Bakınız

- db2_connect() - Returns a connection to a database

# db2_prepare

(PECL ibm_db2 >= 1.0.0)

db2_prepare — Prepares an SQL statement to be executed

### Açıklama

function db2_prepare(resource `$connection`, string `$statement`, array `$options` = []): resource|false

db2_prepare() creates a prepared SQL statement which can include 0 or more parameter markers (`?` characters) representing parameters for input, output, or input/output. You can pass parameters to the prepared statement using db2_bind_param(), or for input values only, as an array passed to db2_execute().

There are three main advantages to using prepared statements in your application:

- Performance: when you prepare a statement, the database server creates an optimized access plan for retrieving data with that statement. Subsequently issuing the prepared statement with db2_execute() enables the statements to reuse that access plan and avoids the overhead of dynamically creating a new access plan for every statement you issue.
- Security: when you prepare a statement, you can include parameter markers for input values. When you execute a prepared statement with input values for placeholders, the database server checks each input value to ensure that the type matches the column definition or parameter definition.
- Advanced functionality: Parameter markers not only enable you to pass input values to prepared SQL statements, they also enable you to retrieve OUT and INOUT parameters from stored procedures using db2_bind_param().

### Bağımsız Değişkenler

`connection`
  A valid database connection resource variable as returned from db2_connect() or db2_pconnect().
`statement`
  An SQL statement, optionally containing one or more parameter markers..
`options`
  An associative array containing statement options. You can use this parameter to request a scrollable cursor on database servers that support this functionality. For a description of valid statement options, see db2_set_option().

### Dönen Değerler

Returns a statement resource if the SQL statement was successfully parsed and prepared by the database server. Returns `false` if the database server returned an error. You can determine which error was returned by calling db2_stmt_error() or db2_stmt_errormsg().

### Örnekler

Örnek 1 Preparing and executing an SQL statement with parameter markers

The following example prepares an INSERT statement that accepts four parameter markers, then iterates over an array of arrays containing the input values to be passed to db2_execute().

    <?php
    $animals = array(
        array(0, 'cat', 'Pook', 3.2),
        array(1, 'dog', 'Peaches', 12.3),
        array(2, 'horse', 'Smarty', 350.0),
    );

    $insert = 'INSERT INTO animals (id, breed, name, weight)
        VALUES (?, ?, ?, ?)';
    $stmt = db2_prepare($conn, $insert);
    if ($stmt) {
        foreach ($animals as $animal) {
            $result = db2_execute($stmt, $animal);
        }
    }
    ?>

### Ayrıca Bakınız

- db2_bind_param() - Binds a PHP variable to an SQL statement parameter
- db2_execute() - Executes a prepared SQL statement
- db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
- db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

# db2_primary_keys

(PECL ibm_db2 >= 1.0.0)

db2_primary_keys — Returns a result set listing primary keys for a table

### Açıklama

function db2_primary_keys(
resource `$connection`,
?string `$qualifier`,
?string `$schema`,
string `$table_name`
): resource

Returns a result set listing the primary keys for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. If `schema` is `null`, db2_primary_keys() matches the schema for the current connection.
`table_name`
  The name of the table.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the primary keys for the specified table. The result set is composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | Name of the catalog for the table containing the primary key. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema for the table containing the primary key.
TABLE_NAME | Name of the table containing the primary key.
COLUMN_NAME | Name of the column containing the primary key.
KEY_SEQ | 1-indexed position of the column in the key.
PK_NAME | The name of the primary key.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_procedure_columns

(PECL ibm_db2 >= 1.0.0)

db2_procedure_columns — Returns a result set listing stored procedure parameters

### Açıklama

function db2_procedure_columns(
resource `$connection`,
?string `$qualifier`,
string `$schema`,
string `$procedure`,
?string `$parameter`
): resource

Returns a result set listing the parameters for one or more stored procedures.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the procedures. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`procedure`
  The name of the procedure. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`parameter`
  The name of the parameter. This parameter accepts a search pattern containing `_` and `%` as wildcards. If this parameter is `null`, all parameters for the specified stored procedures are returned.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the parameters for the stored procedures matching the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
PROCEDURE_CAT | The catalog that contains the procedure. The value is `null` if this table does not have catalogs.
PROCEDURE_SCHEM | Name of the schema that contains the stored procedure.
PROCEDURE_NAME | Name of the procedure.
COLUMN_NAME | Name of the parameter.
COLUMN_TYPE | An integer value representing the type of the parameter:
Return value | Parameter type
--- | ---
1 (SQL_PARAM_INPUT) | Input (IN) parameter.
2 (SQL_PARAM_INPUT_OUTPUT) | Input/output (INOUT) parameter.
3 (SQL_PARAM_OUTPUT) | Output (OUT) parameter.
DATA_TYPE | The SQL data type for the parameter represented as an integer value.
TYPE_NAME | A string representing the data type for the parameter.
COLUMN_SIZE | An integer value representing the size of the parameter.
BUFFER_LENGTH | Maximum number of bytes necessary to store data for this parameter.
DECIMAL_DIGITS | The scale of the parameter, or `null` where scale is not applicable.
NUM_PREC_RADIX | An integer value of either `10` (representing an exact numeric data type), `2` (representing an approximate numeric data type), or `null` (representing a data type for which radix is not applicable).
NULLABLE | An integer value representing whether the parameter is nullable or not.
REMARKS | Description of the parameter.
COLUMN_DEF | Default value for the parameter.
SQL_DATA_TYPE | An integer value representing the size of the parameter.
SQL_DATETIME_SUB | Returns an integer value representing a datetime subtype code, or `null` for SQL data types to which this does not apply.
CHAR_OCTET_LENGTH | Maximum length in octets for a character data type parameter, which matches COLUMN_SIZE for single-byte character set data, or `null` for non-character data types.
ORDINAL_POSITION | The 1-indexed position of the parameter in the CALL statement.
IS_NULLABLE | A string value where 'YES' means that the parameter accepts or returns `null` values and 'NO' means that the parameter does not accept or return `null` values.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_procedures

(PECL ibm_db2 >= 1.0.0)

db2_procedures — Returns a result set listing the stored procedures registered in a database

### Açıklama

function db2_procedures(
resource `$connection`,
?string `$qualifier`,
string `$schema`,
string `$procedure`
): resource

Returns a result set listing the stored procedures registered in a database.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the procedures. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`procedure`
  The name of the procedure. This parameter accepts a search pattern containing `_` and `%` as wildcards.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the stored procedures matching the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
PROCEDURE_CAT | The catalog that contains the procedure. The value is `null` if this table does not have catalogs.
PROCEDURE_SCHEM | Name of the schema that contains the stored procedure.
PROCEDURE_NAME | Name of the procedure.
NUM_INPUT_PARAMS | Number of input (IN) parameters for the stored procedure.
NUM_OUTPUT_PARAMS | Number of output (OUT) parameters for the stored procedure.
NUM_RESULT_SETS | Number of result sets returned by the stored procedure.
REMARKS | Any comments about the stored procedure.
PROCEDURE_TYPE | Always returns `1`, indicating that the stored procedure does not return a return value.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_result

(PECL ibm_db2 >= 1.0.0)

db2_result — Returns a single column from a row in the result set

### Açıklama

function db2_result(resource `$stmt`, int|string `$column`): ?mixed

Use db2_result() to return the value of a specified column in the current row of a result set. You must call db2_fetch_row() before calling db2_result() to set the location of the result set pointer.

### Bağımsız Değişkenler

`stmt`
  A valid `stmt` resource.
`column`
  Either an integer mapping to the 0-indexed field in the result set, or a string matching the name of the column.

### Dönen Değerler

Returns the value of the requested field if the field exists in the result set. Returns `null` if the field does not exist, and issues a warning.

### Örnekler

Örnek 1 A db2_result() example

The following example demonstrates how to iterate through a result set with db2_fetch_row() and retrieve columns from the result set with db2_result().

    <?php
    $sql = 'SELECT name, breed FROM animals WHERE weight < ?';
    $stmt = db2_prepare($conn, $sql);
    db2_execute($stmt, array(10));
    while (db2_fetch_row($stmt)) {
        $name = db2_result($stmt, 0);
        $breed = db2_result($stmt, 'BREED');
        print "$name $breed";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    cat Pook
    gold fish Bubbles
    budgerigar Gizmo
    goat Rickety Ride

### Ayrıca Bakınız

- db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_object() - Returns an object with properties representing columns in the fetched row
- db2_fetch_row() - Sets the result set pointer to the next row or requested row

# db2_rollback

(PECL ibm_db2 >= 1.0.0)

db2_rollback — Rolls back a transaction

### Açıklama

function db2_rollback(resource `$connection`): bool

Rolls back an in-progress transaction on the specified connection resource and begins a new transaction. PHP applications normally default to AUTOCOMMIT mode, so db2_rollback() normally has no effect unless AUTOCOMMIT has been turned off for the connection resource.

### Bağımsız Değişkenler

`connection`
  A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Rolling back a DELETE statement

In the following example, we count the number of rows in a table, turn off AUTOCOMMIT mode on a database connection, delete all of the rows in the table and return the count of `0` to prove that the rows have been removed. We then issue db2_rollback() and return the updated count of rows in the table to show that the number is the same as before we issued the DELETE statement. The return to the original state of the table demonstrates that the roll back of the transaction succeeded.

    <?php
    $conn = db2_connect($database, $user, $password);

    if ($conn) {
        $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
        $res = db2_fetch_array( $stmt );
        echo $res[0] . "\n";

        // Turn AUTOCOMMIT off
        db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);

        // Delete all rows from ANIMALS
        db2_exec($conn, "DELETE FROM animals");

        $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
        $res = db2_fetch_array( $stmt );
        echo $res[0] . "\n";

        // Roll back the DELETE statement
        db2_rollback( $conn );

        $stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
        $res = db2_fetch_array( $stmt );
        echo $res[0] . "\n";
        db2_close($conn);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    7
    0
    7

### Ayrıca Bakınız

- db2_autocommit() - Returns or sets the AUTOCOMMIT state for a database connection
- db2_commit() - Commits a transaction

# db2_server_info

(PECL ibm_db2 >= 1.1.1)

db2_server_info — Returns an object with properties that describe the DB2 database server

### Açıklama

function db2_server_info(resource `$connection`): stdClass|false

This function returns an object with read-only properties that return information about the IBM DB2, Cloudscape, or Apache Derby database server. The following table lists the database server properties:

Database server properties
Property name | Return type | Description
--- | --- | ---
DBMS_NAME | string | The name of the database server to which you are connected. For DB2 servers this is a combination of `DB2` followed by the operating system on which the database server is running.
DBMS_VER | string | The version of the database server, in the form of a string "MM.mm.uuuu" where MM is the major version, mm is the minor version, and uuuu is the update. For example, "08.02.0001" represents major version 8, minor version 2, update 1.
DB_CODEPAGE | int | The code page of the database to which you are connected.
DB_NAME | string | The name of the database to which you are connected.
DFT_ISOLATION | string | The default transaction isolation level supported by the server: UR Uncommitted read: changes are immediately visible by all concurrent transactions. CS Cursor stability: a row read by one transaction can be altered and committed by a second concurrent transaction. RS Read stability: a transaction can add or remove rows matching a search condition or a pending transaction. RR Repeatable read: data affected by pending transaction is not available to other transactions. NC No commit: any changes are visible at the end of a successful operation. Explicit commits and rollbacks are not allowed.
IDENTIFIER_QUOTE_CHAR | string | The character used to delimit an identifier.
INST_NAME | string | The instance on the database server that contains the database.
ISOLATION_OPTION | array | An array of the isolation options supported by the database server. The isolation options are described in the DFT_ISOLATION property.
KEYWORDS | array | An array of the keywords reserved by the database server.
LIKE_ESCAPE_CLAUSE | bool | `true` if the database server supports the use of `%` and `_` wildcard characters. `false` if the database server does not support these wildcard characters.
MAX_COL_NAME_LEN | int | Maximum length of a column name supported by the database server, expressed in bytes.
MAX_IDENTIFIER_LEN | int | Maximum length of an SQL identifier supported by the database server, expressed in characters.
MAX_INDEX_SIZE | int | Maximum size of columns combined in an index supported by the database server, expressed in bytes.
MAX_PROC_NAME_LEN | int | Maximum length of a procedure name supported by the database server, expressed in bytes.
MAX_ROW_SIZE | int | Maximum length of a row in a base table supported by the database server, expressed in bytes.
MAX_SCHEMA_NAME_LEN | int | Maximum length of a schema name supported by the database server, expressed in bytes.
MAX_STATEMENT_LEN | int | Maximum length of an SQL statement supported by the database server, expressed in bytes.
MAX_TABLE_NAME_LEN | int | Maximum length of a table name supported by the database server, expressed in bytes.
NON_NULLABLE_COLUMNS | bool | `true` if the database server supports columns that can be defined as NOT NULL, `false` if the database server does not support columns defined as NOT NULL.
PROCEDURES | bool | `true` if the database server supports the use of the CALL statement to call stored procedures, `false` if the database server does not support the CALL statement.
SPECIAL_CHARS | string | A string containing all of the characters other than a-Z, 0-9, and underscore that can be used in an identifier name.
SQL_CONFORMANCE | string | The level of conformance to the ANSI/ISO SQL-92 specification offered by the database server: ENTRY Entry-level SQL-92 compliance. FIPS127 FIPS-127-2 transitional compliance. FULL Full level SQL-92 compliance. INTERMEDIATE Intermediate level SQL-92 compliance.

### Bağımsız Değişkenler

`connection`
  Specifies an active DB2 client connection.

### Dönen Değerler

Returns an object on a successful call, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 A db2_server_info() example

To retrieve information about the server, you must pass a valid database connection resource to db2_server_info().

    <?php

    $conn = db2_connect('sample', 'db2inst1', 'ibmdb2');

    $server = db2_server_info( $conn );

    if ($server) {
        echo "DBMS_NAME: ";                 var_dump( $server->DBMS_NAME );
        echo "DBMS_VER: ";                  var_dump( $server->DBMS_VER );
        echo "DB_CODEPAGE: ";               var_dump( $server->DB_CODEPAGE );
        echo "DB_NAME: ";                   var_dump( $server->DB_NAME );
        echo "INST_NAME: ";                 var_dump( $server->INST_NAME );
        echo "SPECIAL_CHARS: ";             var_dump( $server->SPECIAL_CHARS );
        echo "KEYWORDS: ";                  var_dump( sizeof($server->KEYWORDS) );
        echo "DFT_ISOLATION: ";             var_dump( $server->DFT_ISOLATION );
        echo "ISOLATION_OPTION: ";
        $il = '';
        foreach( $server->ISOLATION_OPTION as $opt )
        {
           $il .= $opt." ";
        }
        var_dump( $il );
        echo "SQL_CONFORMANCE: ";           var_dump( $server->SQL_CONFORMANCE );
        echo "PROCEDURES: ";                var_dump( $server->PROCEDURES );
        echo "IDENTIFIER_QUOTE_CHAR: ";     var_dump( $server->IDENTIFIER_QUOTE_CHAR );
        echo "LIKE_ESCAPE_CLAUSE: ";        var_dump( $server->LIKE_ESCAPE_CLAUSE );
        echo "MAX_COL_NAME_LEN: ";          var_dump( $server->MAX_COL_NAME_LEN );
        echo "MAX_ROW_SIZE: ";              var_dump( $server->MAX_ROW_SIZE );
        echo "MAX_IDENTIFIER_LEN: ";        var_dump( $server->MAX_IDENTIFIER_LEN );
        echo "MAX_INDEX_SIZE: ";            var_dump( $server->MAX_INDEX_SIZE );
        echo "MAX_PROC_NAME_LEN: ";         var_dump( $server->MAX_PROC_NAME_LEN );
        echo "MAX_SCHEMA_NAME_LEN: ";       var_dump( $server->MAX_SCHEMA_NAME_LEN );
        echo "MAX_STATEMENT_LEN: ";         var_dump( $server->MAX_STATEMENT_LEN );
        echo "MAX_TABLE_NAME_LEN: ";        var_dump( $server->MAX_TABLE_NAME_LEN );
        echo "NON_NULLABLE_COLUMNS: ";      var_dump( $server->NON_NULLABLE_COLUMNS );

        db2_close($conn);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    DBMS_NAME: string(9) "DB2/LINUX"
    DBMS_VER: string(10) "08.02.0000"
    DB_CODEPAGE: int(1208)
    DB_NAME: string(6) "SAMPLE"
    INST_NAME: string(8) "db2inst1"
    SPECIAL_CHARS: string(2) "@#"
    KEYWORDS: int(179)
    DFT_ISOLATION: string(2) "CS"
    ISOLATION_OPTION: string(12) "UR CS RS RR "
    SQL_CONFORMANCE: string(7) "FIPS127"
    PROCEDURES: bool(true)
    IDENTIFIER_QUOTE_CHAR: string(1) """
    LIKE_ESCAPE_CLAUSE: bool(true)
    MAX_COL_NAME_LEN: int(30)
    MAX_ROW_SIZE: int(32677)
    MAX_IDENTIFIER_LEN: int(18)
    MAX_INDEX_SIZE: int(1024)
    MAX_PROC_NAME_LEN: int(128)
    MAX_SCHEMA_NAME_LEN: int(30)
    MAX_STATEMENT_LEN: int(2097152)
    MAX_TABLE_NAME_LEN: int(128)
    NON_NULLABLE_COLUMNS: bool(true)

### Ayrıca Bakınız

- db2_client_info() - Returns an object with properties that describe the DB2 database client

# db2_set_option

(PECL ibm_db2 >= 1.0.0)

db2_set_option — Set options for connection or statement resources

### Açıklama

function db2_set_option(resource `$resource`, array `$options`, int `$type`): bool

Sets options for a statement resource or a connection resource. You cannot set options for result set resources.

### Bağımsız Değişkenler

`resource`
  A valid statement resource as returned from db2_prepare() or a valid connection resource as returned from db2_connect() or db2_pconnect().
`options`

  An associative array containing valid statement or connection options. This parameter can be used to change autocommit values, cursor types (scrollable or forward), and to specify the case of the column names (lower, upper, or natural) that will appear in a result set.

  `autocommit`
    Passing `DB2_AUTOCOMMIT_ON` turns autocommit on for the specified connection resource. Passing `DB2_AUTOCOMMIT_OFF` turns autocommit off for the specified connection resource.
  `cursor`
    Passing `DB2_FORWARD_ONLY` specifies a forward-only cursor for a statement resource. This is the default cursor type, and is supported by all database servers. Passing `DB2_SCROLLABLE` specifies a scrollable cursor for a statement resource. Scrollable cursors enable result set rows to be accessed in non-sequential order, but are only supported by IBM DB2 Universal Database databases.
  `binmode`
    Passing `DB2_BINARY` specifies that binary data will be returned as is. This is the default mode. This is the equivalent of setting `ibm_db2.binmode=1` in php.ini. Passing `DB2_CONVERT` specifies that binary data will be converted to hexadecimal encoding, and will be returned as such. This is the equivalent of setting `ibm_db2.binmode=2` in php.ini. Passing `DB2_PASSTHRU` specifies that binary data will be converted to `null`. This is the equivalent of setting `ibm_db2.binmode=3` in php.ini.
  `db2_attr_case`
    Passing `DB2_CASE_LOWER` specifies that column names of the result set are returned in lower case. Passing `DB2_CASE_UPPER` specifies that column names of the result set are returned in upper case. Passing `DB2_CASE_NATURAL` specifies that column names of the result set are returned in natural case.
  `deferred_prepare`
    Passing `DB2_DEFERRED_PREPARE_ON` turns deferred prepare on for the specified statement resource. Passing `DB2_DEFERRED_PREPARE_OFF` turns deferred prepare off for the specified statement resource.

  The following new i5/OS options are available in ibm_db2 version 1.5.1 and later. These options apply only when running PHP and ibm_db2 natively on i5 systems.

  `i5_fetch_only`
    `DB2_I5_FETCH_ON` - Cursors are read-only and cannot be used for positioned updates or deletes. This is the default unless `SQL_ATTR_FOR_FETCH_ONLY` environment has been set to `SQL_FALSE`. `DB2_I5_FETCH_OFF` - Cursors can be used for positioned updates and deletes.

  The following new option is available in ibm_db2 version 1.8.0 and later.

  `rowcount`
    `DB2_ROWCOUNT_PREFETCH_ON` - Client can request the full row count prior to fetching, which means that db2_num_rows() returns the number of rows selected even when a `ROLLFORWARD_ONLY` cursor is used. `DB2_ROWCOUNT_PREFETCH_OFF` - Client cannot request the full row count prior to fetching.

  The following new options are available in ibm_db2 version 1.7.0 and later.

  `trusted_user`
    To switch the user to a trusted user, pass the User ID (String) of the trusted user as the value of this key. This option can be set on a connection resource only. To use this option, trusted context must be enabled on the connection resource.
  `trusted_password`
    The password (String) that corresponds to the user specified by the trusted_user key.

  The following new options are available in ibm_db2 version 1.6.0 and later. These options provide useful tracking information that can be accessed during execution with db2_get_option().

  > Bilginize: When the value in each option is being set, some servers might not handle the entire length provided and might truncate the value. To ensure that the data specified in each option is converted correctly when transmitted to a host system, use only the characters A through Z, 0 through 9, and the underscore (_) or period (.).

  `userid`

    `SQL_ATTR_INFO_USERID` - A pointer to a null-terminated character string used to identify the client user ID sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 16 characters. This user-id is not to be confused with the authentication user-id, it is for identification purposes only and is not used for any authorization.

  `acctstr`

    `SQL_ATTR_INFO_ACCTSTR` - A pointer to a null-terminated character string used to identify the client accounting string sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 200 characters.

  `applname`

    `SQL_ATTR_INFO_APPLNAME` - A pointer to a null-terminated character string used to identify the client application name sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 32 characters.

  `wrkstnname`

    `SQL_ATTR_INFO_WRKSTNNAME` - A pointer to a null-terminated character string used to identify the client workstation name sent to the host database server when using DB2 Connect.

    > Bilginize: DB2 for z/OS and OS/390 servers support up to a length of 18 characters.

`type`
  An integer value that specifies the type of resource that was passed into the function. The type of resource and this value must correspond. Passing `1` as the value specifies that a connection resource has been passed into the function. Passing any integer not equal to `1` as the value specifies that a statement resource has been passed into the function.

The following table specifies which options are compatible with the available resource types:

Resource-Parameter Matrix
Key | Value | Resource Type
--- | --- | ---
|  | Connection | Statement | Result Set
autocommit | `DB2_AUTOCOMMIT_ON` | X | - | -
autocommit | `DB2_AUTOCOMMIT_OFF` | X | - | -
cursor | `DB2_SCROLLABLE` | - | X | -
cursor | `DB2_FORWARD_ONLY` | - | X | -
binmode | `DB2_BINARY` | X | X | -
binmode | `DB2_CONVERT` | X | X | -
binmode | `DB2_PASSTHRU` | X | X | -
db2_attr_case | `DB2_CASE_LOWER` | X | X | -
db2_attr_case | `DB2_CASE_UPPER` | X | X | -
db2_attr_case | `DB2_CASE_NATURAL` | X | X | -
deferred_prepare | `DB2_DEFERRED_PREPARE_ON` | - | X | -
deferred_prepare | `DB2_DEFERRED_PREPARE_OFF` | - | X | -
i5_fetch_only | `DB2_I5_FETCH_ON` | - | X | -
i5_fetch_only | `DB2_I5_FETCH_OFF` | - | X | -
rowcount | `DB2_ROWCOUNT_PREFETCH_ON` | - | X | -
rowcount | `DB2_ROWCOUNT_PREFETCH_OFF` | - | X | -
trusted_user | `<USER NAME> (String)` | X | - | -
trusted_password | `<PASSWORD> (String)` | X | - | -
userid | `SQL_ATTR_INFO_USERID` | X | X | -
acctstr | `SQL_ATTR_INFO_ACCTSTR` | X | X | -
applname | `SQL_ATTR_INFO_APPLNAME` | X | X | -
wrkstnname | `SQL_ATTR_INFO_WRKSTNNAME` | X | X | -

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting one parameter with a connection resource

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_ON);

    /* Call the function using the correct resource, options array, and type values */
    $result = db2_set_option($conn, $options, 1);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Options Set Successfully

Örnek 2 Setting multiple parameters with a connection resource

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                        'binmode' => DB2_PASSTHRU,
                  'db2_attr_case' => DB2_CASE_UPPER,
                         'cursor' => DB2_SCROLLABLE);

    /* Call the function using the correct resource, options array, and type values */
    $result = db2_set_option($conn, $options, 1);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Options Set Successfully

Örnek 3 Setting multiple parameters with an invalid key

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                 'MY_INVALID_KEY' => DB2_PASSTHRU,
                  'db2_attr_case' => DB2_CASE_UPPER,
                         'cursor' => DB2_SCROLLABLE);

    /* Call the function using the correct resource, options array, and type values */
    $result = db2_set_option($conn, $options, 1);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Could Not Set Options

Örnek 4 Setting multiple parameters with an invalid value

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                        'binmode' => 'INVALID_VALUE',
                  'db2_attr_case' => DB2_CASE_UPPER,
                         'cursor' => DB2_SCROLLABLE);

    /* Call the function using the correct resource, options array, and type values */
    $result = db2_set_option($conn, $options, 1);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Could Not Set Options

Örnek 5 Setting multiple parameters with a connection resource and the wrong type

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                        'binmode' => DB2_PASSTHRU,
                  'db2_attr_case' => DB2_CASE_UPPER,
                         'cursor' => DB2_SCROLLABLE);

    /* Call the function using the correct resource, options array, and the wrong type value */
    $result = db2_set_option($conn, $options, 2);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Could Not Set Options

Örnek 6 Setting multiple parameters with the wrong resource

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                        'binmode' => DB2_PASSTHRU,
                  'db2_attr_case' => DB2_CASE_UPPER,
                         'cursor' => DB2_SCROLLABLE);

    $stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');

    /* Call the function using the wrong resource, and the correct options array, and type values */
    $result = db2_set_option($stmt, $options, 1);

    /* Check if all options could be set correctly */
    if($result)
    {
      echo 'Options Set Successfully';
    }
    else
    {
      echo 'Could Not Set Options';
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Could Not Set Options

Örnek 7 Putting it all together

    <?php
    /* Database Connection Parameters */
    $database = 'SAMPLE';
    $hostname = 'localhost';
    $port = 50000;
    $protocol = 'TCPIP';
    $username = 'db2inst1';
    $password = 'ibmdb2';

    /* Connection String */
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
    $conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
    $conn_string .= "UID=$username;PWD=$password;";

    /* Obtain Connection Resource */
    $conn = db2_connect($conn_string, '', '');

    /* Create the associative options array with valid key-value pairs */
    $options = array('db2_attr_case' => DB2_CASE_LOWER,
                            'cursor' => DB2_SCROLLABLE);

    $stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');

    /* Call the function using the correct resource, options array, and type values */
    $option_result = db2_set_option($stmt, $options, 2);
    $result = db2_execute($stmt, array('000130', '000140'));

    /* Get Row 2 before Row 1 since Scrollable Cursor */
    print_r(db2_fetch_assoc($stmt, 2));
    print '<br /><br />';
    print_r(db2_fetch_assoc($stmt, 1));

    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [empno] => 000140
        [firstnme] => HEATHER
        [midinit] => A
        [lastname] => NICHOLLS
        [workdept] => C01
        [phoneno] => 1793
        [hiredate] => 1976-12-15
        [job] => ANALYST
        [edlevel] => 18
        [sex] => F
        [birthdate] => 1946-01-19
        [salary] => 28420.00
        [bonus] => 600.00
        [comm] => 2274.00
    )

    Array
    (
        [empno] => 000130
        [firstnme] => DELORES
        [midinit] => M
        [lastname] => QUINTANA
        [workdept] => C01
        [phoneno] => 4578
        [hiredate] => 1971-07-28
        [job] => ANALYST
        [edlevel] => 16
        [sex] => F
        [birthdate] => 1925-09-15
        [salary] => 23800.00
        [bonus] => 500.00
        [comm] => 1904.00
    )

Örnek 8 i5/OS cursors are read-only

    <?php
      $conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
      $stmt = db2_prepare($conn, 'select * from names where first = ?');
      $name = "first2";
      db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
      $options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
      db2_set_option($stmt,$options,0);
      if (db2_execute($stmt)) {
        while ($row = db2_fetch_array($stmt)) {
          echo "{$row[0]} {$row[1]}";
        }
      }
    ?>

Yukarıdaki örneğin çıktısı:

    first2 last2

### Ayrıca Bakınız

- db2_connect() - Returns a connection to a database
- db2_pconnect() - Returns a persistent connection to a database
- db2_exec() - Executes an SQL statement directly
- db2_prepare() - Prepares an SQL statement to be executed
- db2_cursor_type() - Returns the cursor type used by a statement resource

# db2_special_columns

(PECL ibm_db2 >= 1.0.0)

db2_special_columns — Returns a result set listing the unique row identifier columns for a table

### Açıklama

function db2_special_columns(
resource `$connection`,
?string `$qualifier`,
string `$schema`,
string `$table_name`,
int `$scope`
): resource

Returns a result set listing the unique row identifier columns for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables.
`table_name`
  The name of the table.
`scope`

  Integer value representing the minimum duration for which the unique row identifier is valid. This can be one of the following values:

  Integer value | SQL constant | Description
  --- | --- | ---
  0 | SQL_SCOPE_CURROW | Row identifier is valid only while the cursor is positioned on the row.
  1 | SQL_SCOPE_TRANSACTION | Row identifier is valid for the duration of the transaction.
  2 | SQL_SCOPE_SESSION | Row identifier is valid for the duration of the connection.

### Dönen Değerler

Returns a statement resource with a result set containing rows with unique row identifier information for a table. The rows are composed of the following columns:

Column name | Description
--- | ---
SCOPE |
Integer value | SQL constant | Description
--- | --- | ---
0 | SQL_SCOPE_CURROW | Row identifier is valid only while the cursor is positioned on the row.
1 | SQL_SCOPE_TRANSACTION | Row identifier is valid for the duration of the transaction.
2 | SQL_SCOPE_SESSION | Row identifier is valid for the duration of the connection.
COLUMN_NAME | Name of the unique column.
DATA_TYPE | SQL data type for the column.
TYPE_NAME | Character string representation of the SQL data type for the column.
COLUMN_SIZE | An integer value representing the size of the column.
BUFFER_LENGTH | Maximum number of bytes necessary to store data from this column.
DECIMAL_DIGITS | The scale of the column, or `null` where scale is not applicable.
NUM_PREC_RADIX | An integer value of either `10` (representing an exact numeric data type), `2` (representing an approximate numeric data type), or `null` (representing a data type for which radix is not applicable).
PSEUDO_COLUMN | Always returns 1.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_statistics

(PECL ibm_db2 >= 1.0.0)

db2_statistics — Returns a result set listing the index and statistics for a table

### Açıklama

function db2_statistics(
resource `$connection`,
?string `$qualifier`,
?string `$schema`,
string `$table_name`,
bool `$unique`
): resource

Returns a result set listing the index and statistics for a table.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema that contains the targeted table. If this parameter is `null`, the statistics and indexes are returned for the schema of the current user.
`table_name`
  The name of the table.
`unique`
  When `unique` is `true`, the information for all indexes in the table are returned. Otherwise, only the information for unique indexes in the table are returned.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the statistics and indexes for the base tables matching the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | The catalog that contains the table. The value is `null` if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
NON_UNIQUE | An integer value representing whether the index prohibits unique values, or whether the row represents statistics on the table itself:
Return value | Parameter type
--- | ---
0 (SQL_FALSE) | The index allows duplicate values.
1 (SQL_TRUE) | The index values must be unique.
`null` | This row is statistics information for the table itself.
INDEX_QUALIFIER | A string value representing the qualifier that would have to be prepended to INDEX_NAME to fully qualify the index.
INDEX_NAME | A string representing the name of the index.
TYPE | An integer value representing the type of information contained in this row of the result set:
Return value | Parameter type
--- | ---
0 (SQL_TABLE_STAT) | The row contains statistics about the table itself.
1 (SQL_INDEX_CLUSTERED) | The row contains information about a clustered index.
2 (SQL_INDEX_HASH) | The row contains information about a hashed index.
3 (SQL_INDEX_OTHER) | The row contains information about a type of index that is neither clustered nor hashed.
ORDINAL_POSITION | The 1-indexed position of the column in the index. `null` if the row contains statistics information about the table itself.
COLUMN_NAME | The name of the column in the index. `null` if the row contains statistics information about the table itself.
ASC_OR_DESC | `A` if the column is sorted in ascending order, `D` if the column is sorted in descending order, `null` if the row contains statistics information about the table itself.
CARDINALITY | If the row contains information about an index, this column contains an integer value representing the number of unique values in the index. If the row contains information about the table itself, this column contains an integer value representing the number of rows in the table.
PAGES | If the row contains information about an index, this column contains an integer value representing the number of pages used to store the index. If the row contains information about the table itself, this column contains an integer value representing the number of pages used to store the table.
FILTER_CONDITION | Always returns `null`.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_stmt_error

(PECL ibm_db2 >= 1.0.0)

db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement

### Açıklama

function db2_stmt_error(?resource `$stmt` = `null`): string

Returns a string containing the SQLSTATE value returned by an SQL statement.

If you do not pass a statement resource as an argument to db2_stmt_error(), the driver returns the SQLSTATE value associated with the last attempt to return a statement resource, for example, from db2_prepare() or db2_exec().

To learn what the SQLSTATE value means, you can issue the following command at a DB2 Command Line Processor prompt: `db2 '? `sqlstate-value`'`. You can also call db2_stmt_errormsg() to retrieve an explicit error message and the associated SQLCODE value.

### Bağımsız Değişkenler

`stmt`
  A valid statement resource.

### Dönen Değerler

Returns a string containing an SQLSTATE value.

### Ayrıca Bakınız

- db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
- db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
- db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

# db2_stmt_errormsg

(PECL ibm_db2 >= 1.0.0)

db2_stmt_errormsg — Returns a string containing the last SQL statement error message

### Açıklama

function db2_stmt_errormsg(?resource `$stmt` = `null`): string

Returns a string containing the last SQL statement error message.

If you do not pass a statement resource as an argument to db2_stmt_errormsg(), the driver returns the error message associated with the last attempt to return a statement resource, for example, from db2_prepare() or db2_exec().

### Bağımsız Değişkenler

`stmt`
  A valid statement resource.

### Dönen Değerler

Returns a string containing the error message and SQLCODE value for the last error that occurred issuing an SQL statement.

### Ayrıca Bakınız

- db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
- db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
- db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement

# db2_table_privileges

(PECL ibm_db2 >= 1.0.0)

db2_table_privileges — Returns a result set listing the tables and associated privileges in a database

### Açıklama

function db2_table_privileges(
resource `$connection`,
?string `$qualifier` = `null`,
?string `$schema` = `null`,
?string `$table_name` = `null`
): resource

Returns a result set listing the tables and associated privileges in a database.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`table_name`
  The name of the table. This parameter accepts a search pattern containing `_` and `%` as wildcards.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the privileges for the tables that match the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | The catalog that contains the table. The value is `null` if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
GRANTOR | Authorization ID of the user who granted the privilege.
GRANTEE | Authorization ID of the user to whom the privilege was granted.
PRIVILEGE | The privilege that has been granted. This can be one of ALTER, CONTROL, DELETE, INDEX, INSERT, REFERENCES, SELECT, or UPDATE.
IS_GRANTABLE | A string value of "YES" or "NO" indicating whether the grantee can grant the privilege to other users.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_tables() - Returns a result set listing the tables and associated metadata in a database

# db2_tables

(PECL ibm_db2 >= 1.0.0)

db2_tables — Returns a result set listing the tables and associated metadata in a database

### Açıklama

function db2_tables(
resource `$connection`,
?string `$qualifier` = `null`,
?string `$schema` = `null`,
?string `$table_name` = `null`,
?string `$table_type` = `null`
): resource

Returns a result set listing the tables and associated metadata in a database.

### Bağımsız Değişkenler

`connection`
  A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.
`qualifier`
  A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass `null` or an empty string.
`schema`
  The schema which contains the tables. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`table_name`
  The name of the table. This parameter accepts a search pattern containing `_` and `%` as wildcards.
`table_type`
  A list of comma-delimited table type identifiers. To match all table types, pass `null` or an empty string. Valid table type identifiers include: ALIAS, HIERARCHY TABLE, INOPERATIVE VIEW, NICKNAME, MATERIALIZED QUERY TABLE, SYSTEM TABLE, TABLE, TYPED TABLE, TYPED VIEW, and VIEW.

### Dönen Değerler

Returns a statement resource with a result set containing rows describing the tables that match the specified parameters. The rows are composed of the following columns:

Column name | Description
--- | ---
TABLE_CAT | The catalog that contains the table. The value is `null` if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
TABLE_TYPE | Table type identifier for the table.
REMARKS | Description of the table.

### Ayrıca Bakınız

- db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
- db2_columns() - Returns a result set listing the columns and associated metadata for a table
- db2_foreign_keys() - Returns a result set listing the foreign keys for a table
- db2_primary_keys() - Returns a result set listing primary keys for a table
- db2_procedure_columns() - Returns a result set listing stored procedure parameters
- db2_procedures() - Returns a result set listing the stored procedures registered in a database
- db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
- db2_statistics() - Returns a result set listing the index and statistics for a table
- db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database

## İçindekiler

- db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection
- db2_bind_param — Binds a PHP variable to an SQL statement parameter
- db2_client_info — Returns an object with properties that describe the DB2 database client
- db2_close — Closes a database connection
- db2_column_privileges — Returns a result set listing the columns and associated privileges for a table
- db2_columns — Returns a result set listing the columns and associated metadata for a table
- db2_commit — Commits a transaction
- db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt
- db2_conn_errormsg — Returns the last connection error message and SQLCODE value
- db2_connect — Returns a connection to a database
- db2_cursor_type — Returns the cursor type used by a statement resource
- db2_escape_string — Used to escape certain characters
- db2_exec — Executes an SQL statement directly
- db2_execute — Executes a prepared SQL statement
- db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set
- db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set
- db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set
- db2_fetch_object — Returns an object with properties representing columns in the fetched row
- db2_fetch_row — Sets the result set pointer to the next row or requested row
- db2_field_display_size — Returns the maximum number of bytes required to display a column
- db2_field_name — Returns the name of the column in the result set
- db2_field_num — Returns the position of the named column in a result set
- db2_field_precision — Returns the precision of the indicated column in a result set
- db2_field_scale — Returns the scale of the indicated column in a result set
- db2_field_type — Returns the data type of the indicated column in a result set
- db2_field_width — Returns the width of the current value of the indicated column in a result set
- db2_foreign_keys — Returns a result set listing the foreign keys for a table
- db2_free_result — Frees resources associated with a result set
- db2_free_stmt — Frees resources associated with the indicated statement resource
- db2_get_option — Retrieves an option value for a statement resource or a connection resource
- db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection
- db2_lob_read — Gets a user defined size of LOB files with each invocation
- db2_next_result — Requests the next result set from a stored procedure
- db2_num_fields — Returns the number of fields contained in a result set
- db2_num_rows — Returns the number of rows affected by an SQL statement
- db2_pclose — Closes a persistent database connection
- db2_pconnect — Returns a persistent connection to a database
- db2_prepare — Prepares an SQL statement to be executed
- db2_primary_keys — Returns a result set listing primary keys for a table
- db2_procedure_columns — Returns a result set listing stored procedure parameters
- db2_procedures — Returns a result set listing the stored procedures registered in a database
- db2_result — Returns a single column from a row in the result set
- db2_rollback — Rolls back a transaction
- db2_server_info — Returns an object with properties that describe the DB2 database server
- db2_set_option — Set options for connection or statement resources
- db2_special_columns — Returns a result set listing the unique row identifier columns for a table
- db2_statistics — Returns a result set listing the index and statistics for a table
- db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement
- db2_stmt_errormsg — Returns a string containing the last SQL statement error message
- db2_table_privileges — Returns a result set listing the tables and associated privileges in a database
- db2_tables — Returns a result set listing the tables and associated metadata in a database

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- IBM DB2 İşlevleri
  - db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection
  - db2_bind_param — Binds a PHP variable to an SQL statement parameter
  - db2_client_info — Returns an object with properties that describe the DB2 database client
  - db2_close — Closes a database connection
  - db2_column_privileges — Returns a result set listing the columns and associated privileges for a table
  - db2_columns — Returns a result set listing the columns and associated metadata for a table
  - db2_commit — Commits a transaction
  - db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt
  - db2_conn_errormsg — Returns the last connection error message and SQLCODE value
  - db2_connect — Returns a connection to a database
  - db2_cursor_type — Returns the cursor type used by a statement resource
  - db2_escape_string — Used to escape certain characters
  - db2_exec — Executes an SQL statement directly
  - db2_execute — Executes a prepared SQL statement
  - db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set
  - db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set
  - db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set
  - db2_fetch_object — Returns an object with properties representing columns in the fetched row
  - db2_fetch_row — Sets the result set pointer to the next row or requested row
  - db2_field_display_size — Returns the maximum number of bytes required to display a column
  - db2_field_name — Returns the name of the column in the result set
  - db2_field_num — Returns the position of the named column in a result set
  - db2_field_precision — Returns the precision of the indicated column in a result set
  - db2_field_scale — Returns the scale of the indicated column in a result set
  - db2_field_type — Returns the data type of the indicated column in a result set
  - db2_field_width — Returns the width of the current value of the indicated column in a result set
  - db2_foreign_keys — Returns a result set listing the foreign keys for a table
  - db2_free_result — Frees resources associated with a result set
  - db2_free_stmt — Frees resources associated with the indicated statement resource
  - db2_get_option — Retrieves an option value for a statement resource or a connection resource
  - db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection
  - db2_lob_read — Gets a user defined size of LOB files with each invocation
  - db2_next_result — Requests the next result set from a stored procedure
  - db2_num_fields — Returns the number of fields contained in a result set
  - db2_num_rows — Returns the number of rows affected by an SQL statement
  - db2_pclose — Closes a persistent database connection
  - db2_pconnect — Returns a persistent connection to a database
  - db2_prepare — Prepares an SQL statement to be executed
  - db2_primary_keys — Returns a result set listing primary keys for a table
  - db2_procedure_columns — Returns a result set listing stored procedure parameters
  - db2_procedures — Returns a result set listing the stored procedures registered in a database
  - db2_result — Returns a single column from a row in the result set
  - db2_rollback — Rolls back a transaction
  - db2_server_info — Returns an object with properties that describe the DB2 database server
  - db2_set_option — Set options for connection or statement resources
  - db2_special_columns — Returns a result set listing the unique row identifier columns for a table
  - db2_statistics — Returns a result set listing the index and statistics for a table
  - db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement
  - db2_stmt_errormsg — Returns a string containing the last SQL statement error message
  - db2_table_privileges — Returns a result set listing the tables and associated privileges in a database
  - db2_tables — Returns a result set listing the tables and associated metadata in a database

# MongoDB Extension

This extension is developed atop the » libmongoc and » libbson libraries. It provides a minimal API for core driver functionality: commands, queries, writes, connection management, and BSON serialization.

Userland PHP libraries that depend on this extension may provide higher level APIs, such as query builders, individual command helper methods, and GridFS. Application developers should consider using this extension in conjunction with the » MongoDB PHP library, which implements the same higher level APIs found in MongoDB drivers for other languages. This separation of concerns allows the extension to focus on essential features for which an extension implementation is paramount for performance.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

As of version 1.21.0, the extension requires PHP 8.1 or higher. Previous versions of the extension allow compatibility with older PHP versions.

The extension requires » libbson and » libmongoc, and will use bundled versions of both libraries by default. System libraries may also be used, as discussed in the manual installation documentation.

The extension, via libmongoc, optionally depends on a TLS library (e.g. OpenSSL) and will use it if available. If the build process fails to find a TLS library, users should check that the appropriate development package (e.g. `libssl-dev`) and » pkg-config are both installed. The process for detecting and configuring TLS libraries is discussed in more detail in the manual installation documentation.

» Cyrus SASL is an optional dependency to support Kerberos authentication and will be used if available.

> Bilginize: Due to potential problems representing 64-bit integers on 32-bit platforms, users are advised to use 64-bit environments. When using a 32-bit platform, be aware that any 64-bit integer read from the database will be returned as a MongoDB\BSON\Int64 instance instead of a PHP integer type.

## Kurulum

## Installing the MongoDB PHP Extension with PIE

> Bilginize: PHP Installer for Extensions (PIE) is a new tool that will deprecate PECL. We recommend using PIE to install extensions. Find out more at » https://github.com/php/pie

To install the MongoDB extension using PIE, run the following command:

    pie install mongodb/mongodb-extension

## Installing the MongoDB PHP Extension with PECL

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/mongodb

Linux, Unix, and macOS users may run the following command to install the extension:

    $ sudo pecl install mongodb

On systems with multiple version of PHP installed (e.g. macOS default, Homebrew), each version of PHP will have its own pecl command and php.ini file(s). Additionally, each PHP environments (e.g. CLI, web) may use separate php.ini files.

As of extension version 1.17.0, PECL will prompt for various `configure` options. To install the extension with default options in a non-interactive script, empty string input may be piped to `pecl install` using the `yes` command:

    $ yes '' | sudo pecl install mongodb

A complete list of supported `configure` options can be found in the `package.xml` file included in the PECL package. To install the extension with specific `configure` options in a non-interactive script, the `--configureoptions` option for `pecl install` may be used:

    $ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb

By default, installing the extension via PECL will use bundled versions of » libbson, » libmongoc, and » libmongocrypt and attempt to automatically configure them.

> Bilginize: If the build process fails to find an SSL library, check that the development packages (e.g. `libssl-dev`) and » pkg-config are both installed. If that does not resolve the problem, consider using the manual installation process.

Finally, add the following line to the php.ini file for each environment that will need to use the extension:

    extension=mongodb.so

## Installing the MongoDB PHP Extension on macOS with Homebrew

» Homebrew 1.5.0 deprecated the » Homebrew/php tap and removed formulae for individual PHP extensions. Going forward, macOS users are advised to install the » php formula and follow the standard PECL installation instructions using the pecl command provided by the Homebrew PHP installation.

Alternatively, the » shivammathur/extensions tap provides formulae for individual PHP extensions. For example, to install the extension for PHP 8.4, run:

    $ brew install shivammathur/extensions/mongodb@8.4

Please note that only the latest extension version is available in brew.

> Bilginize: Install required dependencies
> To ensure that SSL support can be configured correctly, make sure that the `openssl` and `pkgconf` formulae are installed. If either of these packages are missing, the extension will be compiled with Secure Transport, which can lead to compatibility issues.

## Installing the MongoDB PHP Extension on Windows

Precompiled binaries are attached to the project's » Github releases. Archives are published for various combinations of PHP version, thread safety (TS or NTS), and architecture (x86 or x64). Determining the correct archive for the PHP environment and extract the php_mongodb.dll file to the extension directory ("ext" by default).

Add the following line to the php.ini file for each environment that will need to use the extension:

    extension=php_mongodb.dll

Failure to select the correct binary will result in an error when attempting to load the extension DLL at runtime:

    PHP Warning:  PHP Startup: Unable to load dynamic library 'mongodb'

Ensure that the downloaded DLL corresponds to the following PHP runtime properties:

- PHP version (`PHP_VERSION`)
- Thread safety (`PHP_ZTS`)
- Architecture (`PHP_INT_SIZE`)

In addition to the aforementioned constants, these properties can also be inferred from phpinfo(). If a system has multiple PHP runtimes installed, double-check that the phpinfo() output is for the correct environment.

> Bilginize: Additional DLL dependencies for Windows Users
> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: libsasl.dll

## Building the MongoDB PHP Driver from source

For developers and users interested in the latest bugfixes, the extension may be compiled from the latest source code on » Github. Run the following commands to clone and build the project:

    $ git clone https://github.com/mongodb/mongo-php-driver.git
    $ cd mongo-php-driver
    $ git submodule update --init
    $ phpize
    $ ./configure
    $ make all
    $ sudo make install

On systems with multiple version of PHP installed (e.g. macOS default, Homebrew), each version of PHP will have its own phpize command and php.ini file(s). Additionally, each PHP environments (e.g. CLI, web) may use separate php.ini files.

By default, the extension will use bundled versions of » libbson, » libmongoc, and » libmongocrypt and attempt to configure them automatically. If these libraries are already installed as system libraries, the extension can utilize them by specifying `--with-mongodb-system-libs=yes` as an option to `configure`.

For a complete list of `configure` options, run configure --help.

When using bundled versions of libmongoc and libmongocrypt, the extension will also attempt to select an SSL library according to the `--with-mongodb-ssl` `configure` option. As of extension version 1.17.0, OpenSSL is always preferred by default. Previously, Secure Transport was the default on macOS and OpenSSL was the default on all other platforms.

> Bilginize: If the build process fails to find an SSL library, check that the development packages (e.g. `libssl-dev`) and » pkg-config are both installed. When using Homebrew on macOS, it is common for a system to have multiple versions of OpenSSL installed. To ensure that the desired version of OpenSSL is selected, the `PKG_CONFIG_PATH` environment variable may be used to control the search path for `pkg-config`.

The final build step, make install, will report where mongodb.so has been installed, similar to:

    Installing shared extensions:     /usr/lib/php/extensions/debug-non-zts-20220829/

Ensure that the extension_dir option in php.ini points to the directory where mongodb.so was installed. The option may be queried by running:

    $ php -i | grep extension_dir
      extension_dir => /usr/lib/php/extensions/debug-non-zts-20220829 =>
                       /usr/lib/php/extensions/debug-non-zts-20220829

If the directories differ, either change extension_dir in php.ini or manually move mongodb.so to the correct directory.

Finally, add the following line to the php.ini file for each environment that will need to use the extension:

    extension=mongodb.so

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

mongodb Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mongodb.debug | "" | `INI_ALL` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mongodb.debug` string
  This option can be used to enable or disable trace-level debug logging in the extension (and libmongoc). Specify an empty string, `"0"`, `"off"`, `"no"`, or `"false"` to disable logging. Specify `"stderr"` or `"stdout"` to log to `stderr` or `stdout`, respectively. Specify `"1"`, `"on"`, `"yes"`, or `"true"` to log to a new temporary file within the default system temp directory (i.e. sys_get_temp_dir()). Specify any other string to log to a new temporary file within that directory. If the directory cannot be used, the default system temp directory will be used instead.

  > Bilginize: Please note that the debug log can contain sensitive information, such as credentials to the MongoDB server and full documents written to or read from the server. Please review any debug logs before sharing them with other people.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`MONGODB_VERSION` (string)
  x.y.z style version number of the extension
`MONGODB_STABILITY` (string)
  Current stability (alpha/beta/stable)

# Tutorials

## İçindekiler

- Using the PHP Library for MongoDB (PHPLIB)
- Application Performance Monitoring (APM)

In this section you will find several tutorials on how to use the MongoDB driver for PHP.

## Using the PHP Library for MongoDB (PHPLIB)

After the initial extension set-up, we will continue explaining how to get started with the corresponding userland library to write our first project.

## Installing the PHP Library with Composer

The last thing we still need to install to get started on the application itself, is the PHP library.

The library needs to be installed with » Composer, a package manager for PHP. Instructions for installing Composer on various platforms may be found on its website.

Install the library by running:

    $ composer require mongodb/mongodb

It will output something akin to:

    ./composer.json has been created
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
      - Installing mongodb/mongodb (1.0.0)
        Downloading: 100%

    Writing lock file
    Generating autoload files

Composer will create several files: `composer.json`, `composer.lock`, and a `vendor` directory that will contain the library and any other dependencies your project might require.

## Using the PHP Library

In addition to managing your dependencies, Composer will also provide you with an autoloader (for those dependencies' classes). Ensure that it is included at the start of your script or in your application's bootstrap code:

    <?php
    // This path should point to Composer's autoloader
    require 'vendor/autoload.php';

With this done, you can now use any of the functionality as described in the » library documentation.

If you have used MongoDB drivers in other languages, the library's API should look familiar. It contains a » Client class for connecting to MongoDB, a » Database class for database-level operations (e.g. commands, collection management), and a » Collection class for collection-level operations (e.g. » CRUD methods, index management).

As an example, this is how you insert a document into the beers collection of the demo database:

    <?php
    require 'vendor/autoload.php'; // include Composer's autoloader

    $client = new MongoDB\Client("mongodb://localhost:27017");
    $collection = $client->demo->beers;

    $result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

    echo "Inserted with Object ID '{$result->getInsertedId()}'";
    ?>

Since the inserted document did not contain an `_id` field, the extension will generate an MongoDB\BSON\ObjectId for the server to use as the `_id`. This value is also made available to the caller via the result object returned by the `insertOne` method.

After insertion, you can query for the data that you have just inserted. For that, you use the `find` method, which returns an iterable cursor:

    <?php
    require 'vendor/autoload.php'; // include Composer's autoloader

    $client = new MongoDB\Client("mongodb://localhost:27017");
    $collection = $client->demo->beers;

    $result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

    foreach ($result as $entry) {
        echo $entry['_id'], ': ', $entry['name'], "\n";
    }
    ?>

While it may not be apparent in the examples, BSON documents and arrays are unserialized as special classes in the library by default. These classes extend ArrayObject for usability and implement the extension's MongoDB\BSON\Serializable and MongoDB\BSON\Unserializable interfaces to ensure that values preserve their type when serialized back into BSON. This avoids a caveat in the legacy `mongo` extension where arrays might turn into documents, and vice versa. See the Persisting Data specification for more information on how values are converted between PHP and BSON.

## Application Performance Monitoring (APM)

The extension contains an event subscriber API, which allows applications to monitor commands and internal activity pertaining to the » Server Discovery and Monitoring Specification. This tutorial will demonstrate command monitoring using the MongoDB\Driver\Monitoring\CommandSubscriber interface.

The MongoDB\Driver\Monitoring\CommandSubscriber interface defines three methods: `commandStarted`, `commandSucceeded`, and `commandFailed`. Each of these three methods accept a single `event` argument of a specific class for the respective event. For example, the `commandSucceeded`'s `event` argument is a MongoDB\Driver\Monitoring\CommandSucceededEvent object.

In this tutorial we will implement a subscriber that creates a list of all the query profiles and the average time they took.

## Subscriber Class Scaffolding

We start with the framework for our subscriber:

    <?php

    class QueryTimeCollector implements \MongoDB\Driver\Monitoring\CommandSubscriber
    {
        public function commandStarted( \MongoDB\Driver\Monitoring\CommandStartedEvent $event ): void
        {
        }

        public function commandSucceeded( \MongoDB\Driver\Monitoring\CommandSucceededEvent $event ): void
        {
        }

        public function commandFailed( \MongoDB\Driver\Monitoring\CommandFailedEvent $event ): void
        {
        }
    }

    ?>

## Registering the Subscriber

Once a subscriber object is instantiated, it needs to be registered with the extensions's monitoring system. This is done by calling MongoDB\Driver\Monitoring\addSubscriber() or MongoDB\Driver\Manager::addSubscriber() to register the subscriber globally or with a specific Manager, respectively.

    <?php

    \MongoDB\Driver\Monitoring\addSubscriber( new QueryTimeCollector() );

    ?>

## Implementing the Logic

With the object registered, the only thing left is to implement the logic in the subscriber class. To correlate the two events that make up a successfully executed command (commandStarted and commandSucceeded), each event object exposes a `requestId` field.

To record the average time per query shape, we will start by checking for a `find` command in the commandStarted event. We will then add an item to the `pendingCommands` property indexed by its `requestId` and with its value representing the query shape.

If we receive a corresponding commandSucceeded event with the same `requestId`, we add the duration of the event (from `durationMicros`) to the total time and increment the operation count.

If a corresponding commandFailed event is encountered, we just remove the entry from the `pendingCommands` property.

    <?php

    class QueryTimeCollector implements \MongoDB\Driver\Monitoring\CommandSubscriber
    {
        private $pendingCommands = [];
        private $queryShapeStats = [];

        /* Creates a query shape out of the filter argument. Right now it only
         * takes the top level fields into account */
        private function createQueryShape( array $filter )
        {
            return json_encode( array_keys( $filter ) );
        }

        public function commandStarted( \MongoDB\Driver\Monitoring\CommandStartedEvent $event ): void
        {
            if ( 'find' === $event->getCommandName() )
            {
                $queryShape = $this->createQueryShape( (array) $event->getCommand()->filter );
                $this->pendingCommands[$event->getRequestId()] = $queryShape;
            }
        }

        public function commandSucceeded( \MongoDB\Driver\Monitoring\CommandSucceededEvent $event ): void
        {
            $requestId = $event->getRequestId();
            if ( array_key_exists( $requestId, $this->pendingCommands ) )
            {
                $this->queryShapeStats[$this->pendingCommands[$requestId]]['count']++;
                $this->queryShapeStats[$this->pendingCommands[$requestId]]['duration'] += $event->getDurationMicros();
                unset( $this->pendingCommands[$requestId] );
            }
        }

        public function commandFailed( \MongoDB\Driver\Monitoring\CommandFailedEvent $event ): void
        {
            if ( array_key_exists( $event->getRequestId(), $this->pendingCommands ) )
            {
                unset( $this->pendingCommands[$event->getRequestId()] );
            }
        }

        public function __destruct()
        {
            foreach( $this->queryShapeStats as $shape => $stats )
            {
                echo "Shape: ", $shape, " (", $stats['count'], ")\n  ",
                    $stats['duration'] / $stats['count'], "µs\n\n";
            }
        }
    }

    $m = new \MongoDB\Driver\Manager( 'mongodb://localhost:27016' );

    /* Add the subscriber */
    \MongoDB\Driver\Monitoring\addSubscriber( new QueryTimeCollector() );

    /* Do a bunch of queries */
    $query = new \MongoDB\Driver\Query( [
        'region_slug' => 'scotland-highlands', 'age' => [ '$gte' => 20 ]
    ] );
    $cursor = $m->executeQuery( 'dramio.whisky', $query );

    $query = new \MongoDB\Driver\Query( [
        'region_slug' => 'scotland-lowlands', 'age' => [ '$gte' => 15 ]
    ] );
    $cursor = $m->executeQuery( 'dramio.whisky', $query );

    $query = new \MongoDB\Driver\Query( [ 'region_slug' => 'scotland-lowlands' ] );
    $cursor = $m->executeQuery( 'dramio.whisky', $query );

    ?>

# Explains the driver architecture, and special features

## İçindekiler

- Architecture
- Connections
- Persisting Data

## Architecture Overview

This article explains how all the different components of the PHP driver fit together, from base system libraries, through the extension, and to the PHP libraries on top.

At the top of this stack sits a » PHP library, which is distributed as a » Composer package. This library provides an API consistent with other MongoDB » drivers and implements various cross-driver » specifications. While the extension can be used directly, the library has minimal overhead and should be a common dependency for most applications built with MongoDB.

Sitting below that library is a PHP extension, which is distributed through » PECL. The extension forms the glue between PHP and our system libraries (» libmongoc, » libbson, and » libmongocrypt). Its public API provides only the most essential functionality:

- Connection management
- BSON encoding and decoding
- Object document serialization (to support ODM libraries)
- Executing commands, queries, and write operations
- Handling cursors for command and query results

Driver Source Code and JIRA Projects
Project | GitHub | JIRA
--- | --- | ---
PHP Library | » mongodb/mongo-php-library | » PHPLIB
PHP Extension | » mongodb/mongo-php-driver | » PHPC

## Connection handling and persistence

> Bilginize: On Unix platforms, the extension driver is sensitive to scripts that use the fork() system call without also calling exec(). Users are advised not to re-use MongoDB\Driver\Manager instances in a forked child process.

## Connection and topology persistence (PHP version since 1.2.0)

All versions of the extension since 1.2.0 persist the » libmongoc client object in the PHP worker process, which allows it to re-use database connections, authentication states, and topology information across multiple requests.

When MongoDB\Driver\Manager::__construct() is invoked, a hash is created from its arguments (i.e. URI string and array options). The extension will attempt to find a previously persisted » libmongoc client object for that hash. If an existing client cannot be found for the hash, a new client will be created and persisted for future use. This behavior can be disabled via the `"disableClientPersistence"` driver option.

Each client contains its own database connections and a view of the server topology (e.g. standalone, replica set, shard cluster). By persisting the client between PHP requests, the extension is able to re-use established database connections and remove the need for » discovering the server topology on each request.

Consider the following example:

    <?php

    $managers = [
        new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
        new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
        new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017'),
        new MongoDB\Driver\Manager('mongodb://rs1.example.com,rs2.example.com/', ['replicaSet' => 'myReplicaSet']),
    ];

    foreach ($managers as $manager) {
        $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
    }

    ?>

The first two Manager objects will share the same » libmongoc client since their constructor arguments are identical. The third and fourth objects will each use their own client. In total, three clients will be created and the PHP worker executing this script will open two connections to `127.0.0.1` and one connection to each of `rs1.example.com` and `rs2.example.com`. If the extension discovers additional members of the replica set after issuing `hello` commands, it will open additional connections to those servers as well.

If the same worker executes the script again in a second request, the three clients will be re-used and no new connections will be made. Depending on how long ago the previous request was served, the extension may need to issue additional `hello` commands to update its view of the topologies.

## Socket persistence (PHP versions before 1.2.0)

Versions of the extension before 1.2.0 utilize PHP's Streams API for database connections, using an API within » libmongoc to designate custom handlers for socket communication; however, a new libmongoc client is created for each MongoDB\Driver\Manager. As a result, the extension persists individual database connections but not authentication state or topology information. This means that the extension needs to issue commands at the start of each request to authenticate and » discover the server topology.

Database connections are persisted by a hash derived from the server's host, port, and the URI string used to construct the MongoDB\Driver\Manager. The constructor's array options are not included in this hash.

> Bilginize: Versions of the extension >= 1.1.8 and < 1.2.0 do not persist sockets for SSL connections. See » PHPC-720 for additional information.

Despite its shortcomings with persisting SSL connections when and topology information, this version of the extension supports all SSL context options since it uses PHP's Streams API.

## Serialization and deserialization of PHP variables into MongoDB

This document discusses how compound structures (i.e. documents, arrays, and objects) are converted between BSON and PHP values.

## Serialization to BSON

## Arrays

If an array is a packed array — i.e. empty array or the keys start at 0 and are sequential without gaps: BSON array.

If the array is not packed — i.e. having associative (string) keys, the keys don't start at 0, or when there are gaps:: BSON object

A top-level (root) document, always serializes as a BSON document.

## Examples

These serialize as a BSON array:

    [ 8, 5, 2, 3 ] => [ 8, 5, 2, 3 ]
    [ 0 => 4, 1 => 9 ] => [ 4, 9 ]

These serialize as a BSON document:

    [ 0 => 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
    [ "foo" => 42 ] => { "foo" : 42 }
    [ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }

Note that the five examples are extracts of a full document, and represent only one value inside a document.

## Objects

If an object is of the stdClass class, serialize as a BSON document.

If an object is a supported class that implements MongoDB\BSON\Type, then use the BSON serialization logic for that specific type. MongoDB\BSON\Type instances (excluding MongoDB\BSON\Serializable may only be serialized as a document field value. Attempting to serialize such an object as a root document will throw a MongoDB\Driver\Exception\UnexpectedValueException

If an object is of an unknown class implementing the MongoDB\BSON\Type interface, then throw a MongoDB\Driver\Exception\UnexpectedValueException

If an object is of any other class, without implementing any special interface, serialize as a BSON document. Keep only public properties, and ignore protected and private properties.

If an object is of a class that implements the MongoDB\BSON\Serializable interface, call MongoDB\BSON\Serializable::bsonSerialize() and use the returned array or stdClass to serialize as a BSON document or array. The BSON type will be determined by the following:

1. Root documents must be serialized as a BSON document.
2. MongoDB\BSON\Persistable objects must be serialized as a BSON document.
3. If MongoDB\BSON\Serializable::bsonSerialize() returns a packed array, serialize as a BSON array.
4. If MongoDB\BSON\Serializable::bsonSerialize() returns a non-packed array or stdClass, serialize as a BSON document.
5. If MongoDB\BSON\Serializable::bsonSerialize() did not return an array or stdClass, throw an MongoDB\Driver\Exception\UnexpectedValueException exception.

If an object is of a class that implements the MongoDB\BSON\Persistable interface (which implies MongoDB\BSON\Serializable), obtain the properties in a similar way as in the previous paragraphs, but also add an additional property __pclass as a Binary value, with subtype `0x80` and data bearing the fully qualified class name of the object that is being serialized.

The __pclass property is added to the array or object returned by MongoDB\BSON\Serializable::bsonSerialize(), which means it will overwrite any __pclass key/property in the MongoDB\BSON\Serializable::bsonSerialize() return value. If you want to avoid this behaviour and set your own __pclass value, you must not implement MongoDB\BSON\Persistable and should instead implement MongoDB\BSON\Serializable directly.

## Examples

    <?php

    class stdClass
    {
        public $foo = 42;
    } // => {"foo": 42}

    class MyClass
    {
        public $foo = 42;
        protected $prot = 'wine';
        private $fpr = 'cheese';
    } // => {"foo": 42}

    class AnotherClass1 implements MongoDB\BSON\Serializable
    {
        public $foo = 42;
        protected $prot = 'wine';
        private $fpr = 'cheese';

        public function bsonSerialize(): array
        {
            return ['foo' => $this->foo, 'prot' => $this->prot];
        }
    } // => {"foo": 42, "prot": "wine"}

    class AnotherClass2 implements MongoDB\BSON\Serializable
    {
        public $foo = 42;

        public function bsonSerialize(): self
        {
            return $this;
        }
    } // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")

    class AnotherClass3 implements MongoDB\BSON\Serializable
    {
        private $elements = ['foo', 'bar'];

        public function bsonSerialize(): array
        {
            return $this->elements;
        }
    } // => {"0": "foo", "1": "bar"}

    /**
     * Nesting Serializable classes
     */

    class AnotherClass4 implements MongoDB\BSON\Serializable
    {
        private $elements = [0 => 'foo', 2 => 'bar'];

        public function bsonSerialize(): array
        {
            return $this->elements;
        }
    } // => {"0": "foo", "2": "bar"}

    class ContainerClass1 implements MongoDB\BSON\Serializable
    {
        public $things;

        public function __construct()
        {
            $this->things = new AnotherClass4();
        }

        function bsonSerialize(): array
        {
            return ['things' => $this->things];
        }
    } // => {"things": {"0": "foo", "2": "bar"}}

    class AnotherClass5 implements MongoDB\BSON\Serializable
    {
        private $elements = [0 => 'foo', 2 => 'bar'];

        public function bsonSerialize(): array
        {
            return array_values($this->elements);
        }
    } // => {"0": "foo", "1": "bar"} as a root class
      //    ["foo", "bar"] as a nested value

    class ContainerClass2 implements MongoDB\BSON\Serializable
    {
        public $things;

        public function __construct()
        {
            $this->things = new AnotherClass5();
        }

        public function bsonSerialize(): array
        {
            return ['things' => $this->things];
        }
    } // => {"things": ["foo", "bar"]}

    class AnotherClass6 implements MongoDB\BSON\Serializable
    {
        private $elements = ['foo', 'bar'];

        function bsonSerialize(): object
        {
            return (object) $this->elements;
        }
    } // => {"0": "foo", "1": "bar"}

    class ContainerClass3 implements MongoDB\BSON\Serializable
    {
        public $things;

        public function __construct()
        {
            $this->things = new AnotherClass6();
        }

        public function bsonSerialize(): array
        {
            return ['things' => $this->things];
        }
    } // => {"things": {"0": "foo", "1": "bar"}}

    class UpperClass implements MongoDB\BSON\Persistable
    {
        public $foo = 42;
        protected $prot = 'wine';
        private $fpr = 'cheese';

        private $data;

        public function bsonUnserialize(array $data): void
        {
            $this->data = $data;
        }

        public function bsonSerialize(): array
        {
            return ['foo' => $this->foo, 'prot' => $this->prot];
        }
    } // => {"foo": 42, "prot": "wine", "__pclass": {"$type": "80", "$binary": "VXBwZXJDbGFzcw=="}}

    ?>

## Deserialization from BSON

Uyarı

BSON documents can technically contain duplicate keys because documents are stored as a list of key-value pairs; however, applications should refrain from generating documents with duplicate keys as server and driver behavior may be undefined. Since PHP objects and arrays cannot have duplicate keys, data could also be lost when decoding a BSON document with duplicate keys.

The legacy `mongo` extension deserialized both BSON documents and arrays as PHP arrays. While PHP arrays are convenient to work with, this behavior was problematic because different BSON types could deserialize to the same PHP value (e.g. `{"0": "foo"}` and `["foo"]`) and make it impossible to infer the original BSON type. By default, the `mongodb` extension addresses this concern by ensuring that BSON arrays and documents are converted to PHP arrays and objects, respectively.

For compound types, there are three data types:

root
  refers to the top-level BSON document only
document
  refers to embedded BSON documents only
array
  refers to a BSON array

Besides the three collective types, it is also possible to configure specific fields in your document to map to the data types mentioned below. As an example, the following type map allows you to map each embedded document within an `"addresses"` array to an Address class and each `"city"` field within those embedded address documents to a City class:

    [
        'fieldPaths' => [
            'addresses.$' => 'MyProject\Address',
            'addresses.$.city' => 'MyProject\City',
        ],
    ]

Each of those three data types, as well as the field specific mappings, can be mapped against different PHP types. The possible mapping values are:

not set or NULL (default)

  - A BSON array will be deserialized as a PHP array.
  - A BSON document (root or embedded) without a __pclass property [1]

    A __pclass property is only deemed to exist if there exists a property with that name, and it is a Binary value, and the sub-type of the Binary value is 0x80. If any of these three conditions is not met, the __pclass property does not exist and should be treated as any other normal property.

    becomes a PHP stdClass object, with each BSON document key set as a public stdClass property.
  - A BSON document (root or embedded) with a __pclass property [1] becomes a PHP object of the class name as defined by the __pclass property. If the named class implements the MongoDB\BSON\Persistable interface, then the properties of the BSON document, including the __pclass property, are sent as an associative array to the MongoDB\BSON\Unserializable::bsonUnserialize() function to initialise the object's properties. If the named class does not exist or does not implement the MongoDB\BSON\Persistable interface, stdClass will be used and each BSON document key (including __pclass) will be set as a public stdClass property. The __pclass functionality relies on the property being part of a retrieved MongoDB document. If you use a projection when querying for documents, you need to include the __pclass field in the projection for this functionality to work.
`"array"`
  Turns a BSON array or BSON document into a PHP array. There will be no special treatment of a __pclass property [1], but it may be set as an element in the returned array if it was present in the BSON document.
`"object"` or `"stdClass"`
  Turns a BSON array or BSON document into a stdClass object. There will be no special treatment of a __pclass property [1], but it may be set as a public property in the returned object if it was present in the BSON document.
`"bson"`
  Turns a BSON array into a MongoDB\BSON\PackedArray and a BSON document into a MongoDB\BSON\Document, regardless of whether the BSON document has a __pclass property [1].

  > Bilginize: The `bson` value is only available for the three root types, not in the field specific mappings.

any other string
  Defines the class name that the BSON array or BSON object should be deserialized as. For BSON objects that include __pclass properties, that class will take priority. If the named class does not exist, is not concrete (i.e. it is abstract or an interface), or does not implement MongoDB\BSON\Unserializable then an MongoDB\Driver\Exception\InvalidArgumentException exception is thrown. If the BSON object has a __pclass property and that class exists and implements MongoDB\BSON\Persistable it will supersede the class provided in the type map. The properties of the BSON document, including the __pclass property if it exists, will be sent as an associative array to the MongoDB\BSON\Unserializable::bsonUnserialize() function to initialise the object's properties.

## TypeMaps

TypeMaps can be set through the MongoDB\Driver\Cursor::setTypeMap() method on a MongoDB\Driver\Cursor object, or the `$typeMap` argument of MongoDB\BSON\toPHP(), MongoDB\BSON\Document::toPHP(), and MongoDB\BSON\PackedArray::toPHP(). Each of the three classes (root, document, and array) can be individually set, in addition to the field specific types.

If the value in the map is NULL, it means the same as the default value for that item.

## Examples

These examples use the following classes:

MyClass
  which does not implement any interface
YourClass
  which implements MongoDB\BSON\Unserializable
OurClass
  which implements MongoDB\BSON\Persistable
TheirClass
  which extends OurClass

The MongoDB\BSON\Unserializable::bsonUnserialize() method of YourClass, OurClass, TheirClass iterate over the array and set the properties without modifications. It also sets the `$unserialized` property to `true`:

    <?php

    function bsonUnserialize( array $map )
    {
        foreach ( $map as $k => $value )
        {
            $this->$k = $value;
        }
        $this->unserialized = true;
    }

    /* typemap: [] (all defaults) */
    { "foo": "yes", "bar" : false }
      -> stdClass { $foo => 'yes', $bar => false }

    { "foo": "no", "array" : [ 5, 6 ] }
      -> stdClass { $foo => 'no', $array => [ 5, 6 ] }

    { "foo": "no", "obj" : { "embedded" : 3.14 } }
      -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }

    { "foo": "yes", "__pclass": "MyClass" }
      -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }

    { "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
      -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }

    { "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
      -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }

    { "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
      -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }

    { "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
      -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }

    /* typemap: [ "root" => "MissingClass" ] */
    { "foo": "yes" }
      -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")

    /* typemap: [ "root" => "MyClass" ] */
    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
      -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")

    /* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
    { "foo": "yes" }
      -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")

    /* typemap: [ "root" => "YourClass" ] */
    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
      -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }

    /* typemap: [ "root" => "YourClass" ] */
    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
      -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }

    /* typemap: [ "root" => "YourClass" ] */
    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
      -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }

    /* typemap: [ "root" => "YourClass" ] */
    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
      -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }

    /* typemap: [ "root" => "OurClass" ] */
    { foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
      -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }

    /* typemap: [ 'root' => 'YourClass' ] */
    { foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
      -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }

    /* typemap: [ 'root' => 'array', 'document' => 'array' ] */
    { "foo": "yes", "bar" : false }
      -> [ "foo" => "yes", "bar" => false ]

    { "foo": "no", "array" : [ 5, 6 ] }
      -> [ "foo" => "no", "array" => [ 5, 6 ] ]

    { "foo": "no", "obj" : { "embedded" : 3.14 } }
      -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]

    { "foo": "yes", "__pclass": "MyClass" }
      -> [ "foo" => "yes", "__pclass" => "MyClass" ]

    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
      -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]

    { "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
      -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]

    /* typemap: [ 'root' => 'object', 'document' => 'object' ] */
    { "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
      -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }

# Security

## İçindekiler

- Request Injection Attacks
- Script Injection Attacks

## Request Injection Attacks

If you are passing `$_GET` (or `$_POST`) parameters to your queries, make sure that they are cast to strings first. Users can insert associative arrays in GET and POST requests, which could then become unwanted $-queries.

A fairly innocuous example: suppose you are looking up a user's information with the request http://www.example.com?username=bob. Your application creates the query `$q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ])`.

Someone could subvert this by getting http://www.example.com?username[$ne]=foo, which PHP will magically turn into an associative array, turning your query into `$q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] )`, which will return all users not named "foo" (all of your users, probably).

This is a fairly easy attack to defend against: make sure $_GET and $_POST parameters are the type you expect before you send them to the database. PHP has the filter_var() function to assist with this.

Note that this type of attack can be used with any database interaction that locates a document, including updates, upserts, deletes, and findAndModify commands.

See » the main documentation for more information about SQL-injection-like issues with MongoDB.

## Script Injection Attacks

If you are using JavaScript, make sure that any variables that cross the PHP- to-JavaScript boundary are passed in the `scope` field of MongoDB\BSON\Javascript, not interpolated into the JavaScript string. This can come up when using `$where` clauses in queries, mapReduce and group commands, and any other time you may pass JavaScript into the database.

For example, suppose we have some JavaScript to greet a user in the database logs. We could do:

    <?php
    $m = new MongoDB\Driver\Manager;

    // Don't do this!!!
    $username = $_GET['field'];

    $cmd = new \MongoDB\Driver\Command( [
        'eval' => "print('Hello, $username!');"
    ] );

    $r = $m->executeCommand( 'dramio', $cmd );
    ?>

However, what if a malicious user passes in some JavaScript?

    <?php
    $m = new MongoDB\Driver\Manager;

    // Don't do this!!!
    $username = $_GET['field'];
    // $username is set to "'); db.users.drop(); print('"

    $cmd = new \MongoDB\Driver\Command( [
        'eval' => "print('Hello, $username!');"
    ] );

    $r = $m->executeCommand( 'dramio', $cmd );
    ?>

Now MongoDB executes the JavaScript string `"print('Hello, '); db.users.drop(); print('!');"`. This attack is easy to avoid: use `args` to pass variables from PHP to JavaScript:

    <?php
    $m = new MongoDB\Driver\Manager;

    $_GET['field'] = 'derick';
    $args = [ $_GET['field'] ];

    $cmd = new \MongoDB\Driver\Command( [
        'eval' => "function greet(username) { print('Hello, ' + username + '!'); }",
        'args' => $args,
    ] );

    $r = $m->executeCommand( 'dramio', $cmd );
    ?>

This adds an argument to the JavaScript scope, which gets used as argument for the `greet` function. Now if someone tries to send malicious code, MongoDB will harmlessly print `Hello, '); db.dropDatabase(); print('!`.

Using arguments helps to prevent malicious input from being executed by the database. However, you must make sure that your code does not turn around and execute the input anyway! It is best to avoid executing any JavaScript on the server in the first place.

You are strongly recommended to stay clear of the » $where clause with queries, as it impacts performance significantly. Where possible, use either normal query operators, or the » Aggregation Framework.

As alternative to » MapReduce, which uses JavaScript, consider using the » Aggregation Framework. Unlike Map/Reduce, it uses an idiomatic language to construct queries, without having to write, and use, the slower JavaScript approach that Map/Reduce requires.

The » eval command has been deprecated since MongoDB 3.0, and should also be avoided.

# MongoDB Extension Classes

## İçindekiler

- MongoDB\Driver\Manager
- MongoDB\Driver\Command
- MongoDB\Driver\Query
- MongoDB\Driver\BulkWrite
- MongoDB\Driver\BulkWriteCommand
- MongoDB\Driver\Session
- MongoDB\Driver\ClientEncryption
- MongoDB\Driver\ServerApi
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\ReadConcern
- MongoDB\Driver\Cursor
- MongoDB\Driver\CursorId
- MongoDB\Driver\CursorInterface
- MongoDB\Driver\Server
- MongoDB\Driver\ServerDescription
- MongoDB\Driver\TopologyDescription
- MongoDB\Driver\WriteConcernError
- MongoDB\Driver\WriteError
- MongoDB\Driver\WriteResult
- MongoDB\Driver\BulkWriteCommandResult

# The MongoDB\Driver\Manager class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\Manager is the main entry point to the extension. It is responsible for maintaining connections to MongoDB (be it standalone server, replica set, or sharded cluster).

No connection to MongoDB is made upon instantiating the Manager. This means the MongoDB\Driver\Manager can always be constructed, even though one or more MongoDB servers are down.

Any write or query can throw connection exceptions as connections are created lazily. A MongoDB server may also become unavailable during the life time of the script. It is therefore important that all actions on the Manager to be wrapped in try/catch statements.

## Sınıf Sözdizimi

final class MongoDB\Driver\Manager {
/* Yöntemler */
final public function addSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void
final public function __construct(?string `$uri` = `null`, ?array `$uriOptions` = `null`, ?array `$driverOptions` = `null`)
final public function createClientEncryption(array `$options`): MongoDB\Driver\ClientEncryption
final public function executeBulkWrite(string `$namespace`, MongoDB\Driver\BulkWrite `$bulk`, ?array `$options` = `null`): MongoDB\Driver\WriteResult
final public function executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand `$bulk`, ?array `$options` = `null`): MongoDB\Driver\BulkWriteCommandResult
final public function executeCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeReadCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeReadWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function getEncryptedFieldsMap(): array|object|null
final public function getReadConcern(): MongoDB\Driver\ReadConcern
final public function getReadPreference(): MongoDB\Driver\ReadPreference
final public function getServers(): array
final public function getWriteConcern(): MongoDB\Driver\WriteConcern
final public function removeSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void
final public function selectServer(?MongoDB\Driver\ReadPreference `$readPreference` = `null`): MongoDB\Driver\Server
final public function startSession(?array `$options` = `null`): MongoDB\Driver\Session
}

## Örnekler

Örnek 1 MongoDB\Driver\Manager::__construct() basic example

var_dump()ing a MongoDB\Driver\Manager will print out various details about the manager that are otherwise not normally exposed. This can be useful to debug how the driver views your MongoDB setup, and which options are used.

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    var_dump($manager);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\Manager)#1 (2) {
      ["uri"]=>
      string(26) "mongodb://127.0.0.1:27017/"
      ["cluster"]=>
      array(0) {
      }
    }

# MongoDB\Driver\Manager::addSubscriber

(mongodb >=1.10.0)

MongoDB\Driver\Manager::addSubscriber — Registers a monitoring event subscriber with this Manager

### Açıklama

final public function MongoDB\Driver\Manager::addSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void

Registers a monitoring event subscriber with this Manager. The subscriber will be notified of all events for this Manager.

> Bilginize: If `subscriber` is already registered with this Manager, this function is a no-op. If `subscriber` is also registered globally, it will still only be notified once of each event for this Manager.

### Bağımsız Değişkenler

`subscriber` (MongoDB\Driver\Monitoring\Subscriber)
  A monitoring event subscriber to register with this Manager.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `subscriber` is a MongoDB\Driver\Monitoring\LogSubscriber, since loggers can only be registered globally.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::removeSubscriber() - Unregisters a monitoring event subscriber with this Manager
- MongoDB\Driver\Monitoring\Subscriber
- MongoDB\Driver\Monitoring\CommandSubscriber
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- Application Performance Monitoring (APM)

# MongoDB\Driver\Manager::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Manager::__construct — Create new MongoDB Manager

### Açıklama

final public function MongoDB\Driver\Manager::__construct(?string `$uri` = `null`, ?array `$uriOptions` = `null`, ?array `$driverOptions` = `null`)

Constructs a new MongoDB\Driver\Manager object with the specified options.

> Bilginize: Per the » Server Discovery and Monitoring Specification, this constructor performs no I/O. Connections will be initialized on demand, when the first operation is executed.

> Bilginize: When specifying any SSL or TLS URI options via the connection string or `uriOptions` parameter, the extension will implicitly enable TLS for its connections. To avoid this, either explicitly disable the `tls` option or don't specify any TLS options.

> Bilginize: On Unix platforms, the extension driver is sensitive to scripts that use the fork() system call without also calling exec(). Users are advised not to re-use MongoDB\Driver\Manager instances in a forked child process.

### Bağımsız Değişkenler

`uri`
  A » mongodb:// connection URI:

      mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[defaultAuthDb][?options]]

  Defaults to `"mongodb://127.0.0.1:27017"` if unspecified. For details on supported URI options, see » Connection String Options in the MongoDB manual. » Connection pool options are not supported, as the extension does not implement connection pools. The `uri` is a URL, hence any special characters in its components need to be URL encoded according to » RFC 3986. This is particularly relevant to the username and password, which can often include special characters such as `@`, `:`, or `%`. When connecting via a Unix domain socket, the socket path may contain special characters such as slashes and must be encoded. The rawurlencode() function may be used to encode constituent parts of the URI. The `defaultAuthDb` component may be used to specify the database name associated with the user's credentials; however the `authSource` URI option will take priority if specified. If neither `defaultAuthDb` nor `authSource` are specified, the `admin` database will be used by default. The `defaultAuthDb` component has no effect in the absence of user credentials.
`uriOptions`
  Additional » connection string options, which will overwrite any options with the same name in the `uri` parameter.

  uriOptions
  Option | Type | Description
  --- | --- | ---
  appname | string | MongoDB 3.4+ has the ability to annotate connections with metadata provided by the connecting client. This metadata is included in the server's logs upon establishing a connection and also recorded in slow query logs when database profiling is enabled. This option may be used to specify an application name, which will be included in the metadata. The value cannot exceed 128 characters in length.
  authMechanism | string | The authentication mechanism that MongoDB will use to authenticate the connection. For additional details and a list of supported values, see » Authentication Options in the MongoDB manual.
  authMechanismProperties | array | Properties for the selected authentication mechanism. For additional details and a list of supported properties, see the » Driver Authentication Specification. Bilginize: When not specified in the URI string, this option is expressed as an array of key/value pairs. The keys and values in this array should be strings.
  authSource | string | The database name associated with the user's credentials. Defaults to the database component of the connection URI, or the `admin` database if both are unspecified. For authentication mechanisms that delegate credential storage to other services (e.g. GSSAPI), this should be `"$external"`.
  compressors | string | A prioritized, comma-delimited list of compressors that the client wants to use. Messages are only compressed if the client and server share any compressors in common, and the compressor used in each direction will depend on the individual configuration of the server or driver. See the » Driver Compression Specification for more information.
  connectTimeoutMS | int | The time in milliseconds to attempt a connection before timing out. Defaults to 10,000 milliseconds.
  directConnection | bool | This option can be used to control replica set discovery behavior when only a single host is provided in the connection string. By default, providing a single member in the connection string will establish a direct connection or discover additional members depending on whether the `"replicaSet"` URI option is omitted or present, respectively. Specify `false` to force discovery to occur (if `"replicaSet"` is omitted) or specify `true` to force a direct connection (if `"replicaSet"` is present).
  enableOverloadRetargeting | bool | When set to `true` it forces server selection after a `SystemOverloadedError`. Defaults to `false`.
  heartbeatFrequencyMS | int | Specifies the interval in milliseconds between the driver's checks of the MongoDB topology, counted from the end of the previous check until the beginning of the next one. Defaults to 60,000 milliseconds. Per the » Server Discovery and Monitoring Specification, this value cannot be less than 500 milliseconds.
  journal | bool | Corresponds to the default write concern's `journal` parameter. If `true`, writes will require acknowledgement from MongoDB that the operation has been written to the journal. For details, see MongoDB\Driver\WriteConcern.
  loadBalanced | bool | Specifies whether the driver is connecting to a MongoDB cluster through a load balancer. If `true`, the driver may only connect to a single host (specified by either the connection string or SRV lookup), the `"directConnection"` URI option cannot be `true`, and the `"replicaSet"` URI option must be omitted. Defaults to `false`.
  localThresholdMS | int | The size in milliseconds of the latency window for selecting among multiple suitable MongoDB instances while resolving a read preference. Defaults to 15 milliseconds.
  maxAdaptiveRetries | int | This option can be used to change the maximum number of retries when a `SystemOverloadedError` occurs. Must be a positive integer; defaults to `2`.
  maxStalenessSeconds | int | Corresponds to the read preference's `"maxStalenessSeconds"`. Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations. By default, there is no maximum staleness and clients will not consider a secondary’s lag when choosing where to direct a read operation. For details, see MongoDB\Driver\ReadPreference. If specified, the max staleness must be a signed 32-bit integer greater than or equal to `MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS` (i.e. 90 seconds).
  password | string | The password for the user being authenticated. This option is useful if the password contains special characters, which would otherwise need to be URL encoded for the connection URI.
  readConcernLevel | string | Corresponds to the read concern's `level` parameter. Specifies the level of read isolation. For details, see MongoDB\Driver\ReadConcern.
  readPreference | string | Corresponds to the read preference's `mode` parameter. Defaults to `"primary"`. For details, see MongoDB\Driver\ReadPreference.
  readPreferenceTags | array | Corresponds to the read preference's `tagSets` parameter. Tag sets allow you to target read operations to specific members of a replica set. For details, see MongoDB\Driver\ReadPreference. Bilginize: When not specified in the URI string, this option is expressed as an array consistent with the format expected by MongoDB\Driver\ReadPreference::__construct().
  replicaSet | string | Specifies the name of the replica set.
  retryReads | bool | Specifies whether or not the driver should automatically retry certain read operations that fail due to transient network errors or replica set elections. This functionality requires MongoDB 3.6+. Defaults to `true`. See the » Retryable Reads Specification for more information.
  retryWrites | bool | Specifies whether or not the driver should automatically retry certain write operations that fail due to transient network errors or replica set elections. This functionality requires MongoDB 3.6+. Defaults to `true`. See » Retryable Writes in the MongoDB manual for more information.
  serverSelectionTimeoutMS | int | Specifies how long in milliseconds to block for server selection before throwing an exception. Defaults to 30,000 milliseconds.
  serverSelectionTryOnce | bool | When `true`, instructs the driver to scan the MongoDB deployment exactly once after server selection fails and then either select a server or raise an error. When `false`, the driver blocks and searches for a server up to the `"serverSelectionTimeoutMS"` value. Defaults to `true`.
  socketCheckIntervalMS | int | If a socket has not been used recently, the driver must check it via a `hello` command before using it for any operation. Defaults to 5,000 milliseconds.
  socketTimeoutMS | int | The time in milliseconds to attempt a send or receive on a socket before timing out. Defaults to 300,000 milliseconds (i.e. five minutes).
  srvMaxHosts | int | The maximum number of SRV results to randomly select when initially populating the seedlist or, during SRV polling, adding new hosts to the topology. Defaults to `0` (i.e. no maximum).
  srvServiceName | string | The service name to use for SRV lookup in initial DNS seedlist discovery and SRV polling. Defaults to `"mongodb"`.
  tls | bool | Initiates the connection with TLS/SSL if `true`. Defaults to `false`.
  tlsAllowInvalidCertificates | bool | Specifies whether or not the driver should error when the server's TLS certificate is invalid. Defaults to `false`. Uyarı Disabling certificate validation creates a vulnerability.
  tlsAllowInvalidHostnames | bool | Specifies whether or not the driver should error when there is a mismatch between the server's hostname and the hostname specified by the TLS certificate. Defaults to `false`. Uyarı Disabling certificate validation creates a vulnerability. Allowing invalid hostnames may expose the driver to a » man-in-the-middle attack.
  tlsCAFile | string | Path to file with either a single or bundle of certificate authorities to be considered trusted when making a TLS connection. The system certificate store will be used by default.
  tlsCertificateKeyFile | string | Path to the client certificate file or the client private key file; in the case that they both are needed, the files should be concatenated.
  tlsCertificateKeyFilePassword | string | Password to decrypt the client private key (i.e. `"tlsCertificateKeyFile"` URI option) to be used for TLS connections.
  tlsDisableCertificateRevocationCheck | bool | If `true`, the driver will not attempt to check certificate revocation status (e.g. OCSP, CRL). Defaults to `false`.
  tlsDisableOCSPEndpointCheck | bool | If `true`, the driver will not attempt to contact an OCSP responder endpoint if needed (i.e. an OCSP response is not stapled). Defaults to `false`.
  tlsInsecure | bool | Relax TLS constraints as much as possible. Specifying `true` for this option has the same effect as specifying `true` for both the `"tlsAllowInvalidCertificates"` and `"tlsAllowInvalidHostnames"` URI options. Defaults to `false`. Uyarı Disabling certificate validation creates a vulnerability. Allowing invalid hostnames may expose the driver to a » man-in-the-middle attack.
  username | string | The username for the user being authenticated. This option is useful if the username contains special characters, which would otherwise need to be URL encoded for the connection URI.
  w | int|string | Corresponds to the default write concern's `w` parameter. For details, see MongoDB\Driver\WriteConcern.
  wTimeoutMS | int|string | Corresponds to the default write concern's `wtimeout` parameter. Specifies a time limit, in milliseconds, for the write concern. For details, see MongoDB\Driver\WriteConcern. If specified, `wTimeoutMS` must be a signed 32-bit integer greater than or equal to zero.
  zlibCompressionLevel | int | Specifies the compression level to use for the zlib compressor. This option has no effect if `zlib` is not included in the `"compressors"` URI option. See the » Driver Compression Specification for more information.

`driverOptions`

  driverOptions
  Option | Type | Description
  --- | --- | ---
  autoEncryption | array | Provides options to enable automatic client-side field level encryption. The list of options is described in the table below. Bilginize: Automatic encryption is an enterprise-only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error (see » libmongocrypt: Auto Encryption Allow-List). To bypass automatic encryption for all operations, set `bypassAutoEncryption` to `true`. Automatic encryption requires the authenticated user to have the » listCollections privilege action. Explicit encryption/decryption and automatic decryption is a community feature. The driver can still automatically decrypt when `bypassAutoEncryption` is `true`.
  ca_dir | string | Path to a correctly hashed certificate directory. The system certificate store will be used by default.
  crl_file | string | Path to a certificate revocation list file.
  disableClientPersistence | bool | If `true`, this Manager will use a new libmongoc client, which will not be persisted or shared with other Manager objects. When this Manager object is freed, its client will be destroyed and any connections will be closed. Defaults to `false`. Bilginize: Disabling client persistence is not generally recommended.
  driver | array | Allows a higher level library to append its own metadata to the server handshake. By default, the extension submits its own name, version, and platform (i.e. PHP version) in the handshake. Strings can be specified for the `"name"`, `"version"`, and `"platform"` keys of this array, and will be appended to the respective field(s) in the handshake document. Bilginize: Handshake information is limited to 512 bytes. The extension will truncate handshake data to fit within this 512-byte string. Higher level libraries are encouraged to keep their own metadata concise.
  serverApi | MongoDB\Driver\ServerApi | This option is used to declare a server API version for the manager. If omitted, no API version is declared.

  Options supported by automatic encryption through the `autoEncryption` driver option:

  autoEncryption
  Option | Type | Description
  --- | --- | ---
  keyVaultClient | MongoDB\Driver\Manager | The Manager used to route data key queries to a separate MongoDB cluster. By default, the current Manager and c uster is used.
  keyVaultNamespace | string | A fully qualified namespace (e.g. `"databaseName.collectionName"`) denoting the collection that contains all data keys used for encryption and decryption. This option is required.
  kmsProviders | array | A document containing the configuration for one or more KMS providers, which are used to encrypt data keys. Supported providers include `"aws"`, `"azure"`, `"gcp"`, `"kmip"`, and `"local"` and at least one must be specified. If an empty document is specified for `"aws"`, `"azure"`, or `"gcp"`, the driver will attempt to configure the provider using » Automatic Credentials. The format for `"aws"` is as follows:
      aws: {
          accessKeyId: <string>,
          secretAccessKey: <string>,
          sessionToken: <optional string>
      }
  The format for `"azure"` is as follows:
      azure: {
          tenantId: <string>,
          clientId: <string>,
          clientSecret: <string>,
          identityPlatformEndpoint: <optional string> // Defaults to "login.microsoftonline.com"

      }
  The format for `"gcp"` is as follows:
      gcp: {
          email: <string>,
          privateKey: <base64 string>|<MongoDB\BSON\Binary>,
          endpoint: <optional string> // Defaults to "oauth2.googleapis.com"
      }
  The format for `"kmip"` is as follows:
      kmip: {
          endpoint: <string>
      }
  The format for `"local"` is as follows:
      local: {
          // 96-byte master key used to encrypt/decrypt data keys
          key: <base64 string>|<MongoDB\BSON\Binary>
      }
  tlsOptions | array | A document containing the TLS configuration for one or more KMS providers. Supported providers include `"aws"`, `"azure"`, `"gcp"`, and `"kmip"`. All providers support the following options:
      <provider>: {
          tlsCaFile: <optional string>,
          tlsCertificateKeyFile: <optional string>,
          tlsCertificateKeyFilePassword: <optional string>,
          tlsDisableOCSPEndpointCheck: <optional bool>
      }
  schemaMap | array|object | Map of collection namespaces to a local JSON schema. This is used to configure automatic encryption. See » Automatic Encryption Rules in the MongoDB manual for more information. It is an error to specify a collection in both `schemaMap` and `encryptedFieldsMap`. Bilginize: Supplying a `schemaMap` provides more security than relying on JSON schemas obtained from the server. It protects against a malicious server advertising a false JSON schema, which could trick the client into sending unencrypted data that should be encrypted. Bilginize: Schemas supplied in the `schemaMap` only apply to configuring automatic encryption for client side encryption. Other validation rules in the JSON schema will not be enforced by the driver and will result in an error.
  bypassAutoEncryption | bool | If `true`, `mongocryptd` will not be spawned automatically. This is used to disable automatic encryption. Defaults to `false`.
  bypassQueryAnalysis | bool | If `true`, automatic analysis of outgoing commands will be disabled and `mongocryptd` will not be spawned automatically. This enables the use case of explicit encryption for querying indexed fields without requiring the enterprise licensed `crypt_shared` library or `mongocryptd` process. Defaults to `false`.
  encryptedFieldsMap | array|object | Map of collection namespaces to an `encryptedFields` document. This is used to configure queryable encryption. See » Field Encryption and Queryability in the MongoDB manual for more information. It is an error to specify a collection in both `encryptedFieldsMap` and `schemaMap`. Bilginize: Supplying an `encryptedFieldsMap` provides more security than relying on an `encryptedFields` obtained from the server. It protects against a malicious server advertising a false `encryptedFields`.
  extraOptions | array | The `extraOptions` relate to the `mongocryptd` process. The following options are supported: `mongocryptdURI` (string): URI to connect to an existing `mongocryptd` process. Defaults to `"mongodb://localhost:27020"`. `mongocryptdBypassSpawn` (bool): If `true`, prevent the driver from spawning `mongocryptd`. Defaults to `false`. `mongocryptdSpawnPath` (string): Absolute path to search for `mongocryptd` binary. Defaults to empty string and consults system paths. `mongocryptdSpawnArgs` (array): Array of string arguments to pass to `mongocryptd` when spawning. Defaults to `["--idleShutdownTimeoutSecs=60"]`. `cryptSharedLibPath` (string): Absolute path to `crypt_shared` shared library. Defaults to empty string and consults system paths. `cryptSharedLibRequired` (bool): If `true`, require the driver to load `crypt_shared`. Defaults to `false`. See the » Client-Side Encryption Specification for more information.

  > Bilginize: Automatic encryption is an enterprise only feature that only applies to operations on a collection. Automatic encryption is not supported for operations on a database or view, and operations that are not bypassed will result in error. To bypass automatic encryption for all operations, set `bypassAutoEncryption=true` in `autoEncryption`. For more information on allowed operations, see the » Client-Side Encryption Specification.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the `uri` format is invalid

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `"canonicalizeHostname"` URI option was removed. Use the `"CANONICALIZE_HOST_NAME"` property of the `"authMechanismProperties"` URI option instead. The `"gssapiServiceName"` URI option was removed. Use the `"SERVICE_NAME"` property of the `"authMechanismProperties"` URI option instead. The `"safe"` URI option was removed. Use the `"w"` and `"wTimeoutMS"` URI options instead. The `"ssl"` URI option was removed. Use the `"tls"` URI option instead. The `"allow_invalid_hostname"` driver option was removed. Use the `"tlsAllowInvalidHostnames"` URI option instead. The `"ca_file"` driver option was removed. Use the `"tlsCAFile"` URI option instead. The `"context"` driver option was removed. All context options were deprecated in favor of the various URI options related to TLS. The `"pem_file"` driver option was removed. Use the `"tlsCertificateKeyFile"` URI option instead. The `"pem_pwd"` driver option was removed. Use the `"tlsCertificateKeyFilePassword"` URI option instead. The `"weak_cert_validation"` driver option was removed. Use the `"tlsAllowInvalidCertificates"` URI option instead.
PECL mongodb 1.16.0 | The AWS KMS provider for client-side encryption now accepts a `"sessionToken"` option, which can be used to authenticate with temporary AWS credentials. Added `"tlsDisableOCSPEndpointCheck"` to the `"tlsOptions"` field of the `"autoEncryption"` driver option. If an empty document is specified for the `"azure"` or `"gcp"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.
PECL mongodb 1.15.0 | If an empty document is specified for the `"aws"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.
PECL mongodb 1.14.0 | Added the `"bypassQueryAnalysis"` and `"encryptedFieldsMap"` auto encryption options. Additional options pertaining to `crypt_shared` are now supported in the `"extraOptions"` auto encryption option.
PECL mongodb 1.13.0 | Added the `"srvMaxHosts"` and `"srvServiceName"` URI options.
PECL mongodb 1.12.0 | KMIP is now supported as a KMS provider for client-side encryption and may be configured in the `"kmsProviders"` field of the `"autoEncryption"` driver option. Additionally, TLS options for KMS providers may now be configured in the `"tlsOptions"` field of the `"autoEncryption"` driver option.
PECL mongodb 1.11.0 | Added the `"loadBalanced"` URI option.
PECL mongodb 1.10.0 | Added the `"disableClientPersistence"` driver option. Azure and GCP are now supported as KMS providers for client-side encryption and may be configured in the `"kmsProviders"` field of the `"autoEncryption"` driver option. Base64-encoded strings are now accepted as an alternative to MongoDB\BSON\Binary for options within `"kmsProviders"`.
PECL mongodb 1.8.0 | Added the `"directConnection"`, `"tlsDisableCertificateRevocationCheck"`, and `"tlsDisableOCSPEndpointCheck"` URI options. Added the `"driver"` driver option.
PECL mongodb 1.7.0 | Added the `"autoEncryption"` driver option. Specifying any SSL or TLS option via the `driverOptions` parameter will now implicitly enable TLS, as is done for the corresponding URI options.
PECL mongodb 1.6.0 | Added the `"retryReads"`, `"tls"`, `"tlsAllowInvalidCertificates"`, `"tlsAllowInvalidHostnames"`, `"tlsCAFile"`, `"tlsCertificateKeyFile"`, `"tlsCertificateKeyFilePassword"`, and `"tlsInsecure"` URI options. The `"retryWrites"` URI option defaults to `true`. Specifying any SSL or TLS URI option via the connection string or `uriOptions` parameter will now implicitly enable TLS unless `ssl` or `tls` is `false`. TLS is not implicitly enabled for any options in the `driverOptions` parameter, which is unchanged from previous versions.
PECL mongodb 1.5.0 | `"wtimeoutMS"` is now always validated and applied to the write concern. Previously, the option was ignored if `"w"` was <= 1, since the timeout only applies to replication.
PECL mongodb 1.4.0 | Added the `"compressors"`, `"retryWrites"`, and `"zlibCompressionLevel"` URI options.
PECL mongodb 1.3.0 | The `uriOptions` argument now accepts `"authMechanism"` and `"authMechanismProperties"` options. Previously, these options were only supported in the `uri` argument.
PECL mongodb 1.2.0 | The `uri` argument defaults to `"mongodb://127.0.0.1/"`. The default port remains `27017`. Added the `"appname"` URI option. Added the `"allow_invalid_hostname"`, `"ca_file"`, `"ca_dir"`, `"clr_file"`, `"pem_file"`, `"pem_pwd"`, and `"weak_cert_validation"` driver options. The PHP Streams API is no longer used for socket communication. The `"connectTimeoutMS"` URI option now defaults to 10 seconds instead of default_socket_timeout in previous versions. Additionally, the extension no longer supports all SSL context options via the `"context"` driver option.
PECL mongodb 1.1.0 | The `uri` argument is optional and defaults to `"mongodb://localhost:27017/"`.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::__construct() basic examples

Connecting to standalone MongoDB node:

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://example.com:27017");

    ?>

Connecting to standalone MongoDB node via a Unix domain socket. The socket path may include special characters such as slashes and should be encoded with rawurlencode().

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://" . rawurlencode("/tmp/mongodb-27017.sock"));

    ?>

Connecting to a replica set:

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

    ?>

Connecting to a sharded cluster (i.e. one or more mongos instances):

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://mongos1.example.com,mongos2.example.com/");

    ?>

Connecting to MongoDB with authentication credentials for a particular user and database:

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://myusername:mypassword@example.com/?authSource=databaseName");

    ?>

Connecting to MongoDB with authentication credentials for a particular user and database, where the username or password includes special characters (e.g. `@`, `:`, `%`). In the following example, the password string `myp@ss:w%rd` has been manually escaped; however, rawurlencode() may also be used to escape URI components that may contain special characters.

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://myusername:myp%40ss%3Aw%25rd@example.com/?authSource=databaseName");

    ?>

Connecting to MongoDB with X509 authentication:

    <?php

    $manager = new MongoDB\Driver\Manager(
        "mongodb://example.com/?ssl=true&authMechanism=MONGODB-X509",
        [],
        [
            "pem_file" => "/path/to/client.pem",
        ]
    );
    ?>

### Ayrıca Bakınız

- Connection handling and persistence
- » MongoDB Connection String Format

# MongoDB\Driver\Manager::createClientEncryption

(mongodb >=1.7.0)

MongoDB\Driver\Manager::createClientEncryption — Create a new ClientEncryption object

### Açıklama

final public function MongoDB\Driver\Manager::createClientEncryption(array `$options`): MongoDB\Driver\ClientEncryption

Constructs a new MongoDB\Driver\ClientEncryption object with the specified options.

### Bağımsız Değişkenler

`options`

  options
  Option | Type | Description
  --- | --- | ---
  keyVaultClient | MongoDB\Driver\Manager | The Manager used to route data key queries to a separate MongoDB cluster. By default, the current Manager and c uster is used.
  keyVaultNamespace | string | A fully qualified namespace (e.g. `"databaseName.collectionName"`) denoting the collection that contains all data keys used for encryption and decryption. This option is required.
  kmsProviders | array | A document containing the configuration for one or more KMS providers, which are used to encrypt data keys. Supported providers include `"aws"`, `"azure"`, `"gcp"`, `"kmip"`, and `"local"` and at least one must be specified. If an empty document is specified for `"aws"`, `"azure"`, or `"gcp"`, the driver will attempt to configure the provider using » Automatic Credentials. The format for `"aws"` is as follows:
      aws: {
          accessKeyId: <string>,
          secretAccessKey: <string>,
          sessionToken: <optional string>
      }
  The format for `"azure"` is as follows:
      azure: {
          tenantId: <string>,
          clientId: <string>,
          clientSecret: <string>,
          identityPlatformEndpoint: <optional string> // Defaults to "login.microsoftonline.com"

      }
  The format for `"gcp"` is as follows:
      gcp: {
          email: <string>,
          privateKey: <base64 string>|<MongoDB\BSON\Binary>,
          endpoint: <optional string> // Defaults to "oauth2.googleapis.com"
      }
  The format for `"kmip"` is as follows:
      kmip: {
          endpoint: <string>
      }
  The format for `"local"` is as follows:
      local: {
          // 96-byte master key used to encrypt/decrypt data keys
          key: <base64 string>|<MongoDB\BSON\Binary>
      }
  tlsOptions | array | A document containing the TLS configuration for one or more KMS providers. Supported providers include `"aws"`, `"azure"`, `"gcp"`, and `"kmip"`. All providers support the following options:
      <provider>: {
          tlsCaFile: <optional string>,
          tlsCertificateKeyFile: <optional string>,
          tlsCertificateKeyFilePassword: <optional string>,
          tlsDisableOCSPEndpointCheck: <optional bool>
      }

### Dönen Değerler

Returns a new MongoDB\Driver\ClientEncryption instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the extension was compiled without libmongocrypt support

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.16.0 | The AWS KMS provider for client-side encryption now accepts a `"sessionToken"` option, which can be used to authenticate with temporary AWS credentials. Added `"tlsDisableOCSPEndpointCheck"` to the `"tlsOptions"` option. If an empty document is specified for the `"azure"` or `"gcp"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.
PECL mongodb 1.15.0 | If an empty document is specified for the `"aws"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.
PECL mongodb 1.12.0 | KMIP is now supported as a KMS provider for client-side encryption and may be configured in the `"kmsProviders"` option. Added the `"tlsOptions"` option.
PECL mongodb 1.10.0 | Azure and GCP are now supported as KMS providers for client-side encryption and may be configured in the `"kmsProviders"` option. Base64-encoded strings are now accepted as an alternative to MongoDB\BSON\Binary for options within `"kmsProviders"`.

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::__construct() - Create a new ClientEncryption object
- » Explicit (Manual) Client-Side Field Level Encryption in the MongoDB manual

# MongoDB\Driver\Manager::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations

### Açıklama

final public function MongoDB\Driver\Manager::executeBulkWrite(string `$namespace`, MongoDB\Driver\BulkWrite `$bulk`, ?array `$options` = `null`): MongoDB\Driver\WriteResult

Executes one or more write operations on the primary server.

A MongoDB\Driver\BulkWrite can be constructed with one or more write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send operations of the same type to the server in as few requests as possible to optimize round trips.

The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`bulk` (MongoDB\Driver\BulkWrite)

  The write(s) to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

### Dönen Değerler

Returns MongoDB\Driver\WriteResult on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` does not contain any write operations.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` has already been executed. MongoDB\Driver\BulkWrite objects may not be executed multiple times.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\BulkWriteException on any write failure (e.g. write error, failure to apply a write concern)
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\WriteConcern instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\WriteConcern object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\WriteConcern object.
PECL mongodb 1.3.0 | MongoDB\Driver\Exception\InvalidArgumentException is now thrown if `bulk` does not contain any write operations. Previously, a MongoDB\Driver\Exception\BulkWriteException was thrown.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::executeBulkWrite() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite();

    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);

    $bulk->update(['x' => 2], ['$set' => ['x' => 1]], ['multi' => false, 'upsert' => false]);
    $bulk->update(['x' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);
    $bulk->update(['_id' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);

    $bulk->insert(['_id' => 4, 'x' => 2]);

    $bulk->delete(['x' => 1], ['limit' => 1]);

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
    $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Matched  %d document(s)\n", $result->getMatchedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());
    printf("Upserted %d document(s)\n", $result->getUpsertedCount());
    printf("Deleted  %d document(s)\n", $result->getDeletedCount());

    foreach ($result->getUpsertedIds() as $index => $id) {
        printf('upsertedId[%d]: ', $index);
        var_dump($id);
    }

    /* If the WriteConcern could not be fulfilled */
    if ($writeConcernError = $result->getWriteConcernError()) {
        printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
    }

    /* If a write could not happen at all */
    foreach ($result->getWriteErrors() as $writeError) {
        printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Inserted 3 document(s)
    Matched  1 document(s)
    Updated  1 document(s)
    Upserted 2 document(s)
    Deleted  1 document(s)
    upsertedId[3]: object(MongoDB\BSON\ObjectId)#5 (1) {
      ["oid"]=>
      string(24) "54d3adc3ce7a792f4d703756"
    }
    upsertedId[4]: int(3)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWrite
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWrite() - Execute one or more write operations on this server

# MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Manager::executeBulkWriteCommand — Execute write operations using the bulkWrite command

### Açıklama

final public function MongoDB\Driver\Manager::executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand `$bulk`, ?array `$options` = `null`): MongoDB\Driver\BulkWriteCommandResult

Executes one or more write operations on the primary server using the » bulkWrite command introduced in MongoDB 8.0.

A MongoDB\Driver\BulkWriteCommand can be constructed with one or more write operations of varying types (e.g. inserts, updates, and deletes). Each write operation may target a different collection.

The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`bulk` (MongoDB\Driver\BulkWriteCommand)
  The write(s) to execute.
`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

### Dönen Değerler

Returns MongoDB\Driver\BulkWriteCommandResult on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` does not contain any write operations.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` has already been executed. MongoDB\Driver\BulkWriteCommand objects may not be executed multiple times.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\BulkWriteCommandException on any write failure (e.g. command failure, write or write concern error)
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Örnekler

Örnek 1 Mixed write operations

Mixed write operations (i.e. inserts, updates, and deletes) will be sent to the server using a single » bulkWrite command.

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    // Delete documents from both collections
    $bulk->deleteMany('db.coll_one', []);
    $bulk->deleteMany('db.coll_two', []);

    // Insert documents into two collections
    $bulk->insertOne('db.coll_one', ['_id' => 1]);
    $bulk->insertOne('db.coll_two', ['_id' => 2]);
    $bulk->insertOne('db.coll_two', ['_id' => 3]);

    // Update a document in "coll_one"
    $bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    Inserted 3 document(s)
    Updated  1 document(s)

Örnek 2 Ordered write operations causing an error

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    $bulk->deleteMany('db.coll', []);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 2]);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 3]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        $result = $e->getPartialResult();

        var_dump($e->getWriteErrors());
    }

    printf("Inserted %d document(s)\n", $result->getInsertedCount());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [3]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(3)
        ["info"]=>
        object(stdClass)#6 (0) {
        }
      }
    }
    Inserted 2 document(s)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWriteCommand() - Execute write operations on this server using the bulkWrite command

# MongoDB\Driver\Manager::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeCommand — Execute a database command

### Açıklama

final public function MongoDB\Driver\Manager::executeCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Selects a server according to the `"readPreference"` option and executes the command on that server.

This method applies no special logic to the command. The Default values for the `"readPreference"`, `"readConcern"`, and `"writeConcern"` options will be inferred from an active transaction (indicated by the `"session"` option). If there is no active transaction, a primary read preference will be used for server selection.

Default values will not be inferred from the connection URI. Users are therefore encouraged to use specific read and/or write command methods if possible.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command, issuing a write command to a secondary).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\ReadPreference instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\ReadPreference object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\ReadPreference object.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::executeCommand() with a command returning a single result document

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $command = new MongoDB\Driver\Command(['ping' => 1]);

    try {
        $cursor = $manager->executeCommand('admin', $command);
    } catch(MongoDB\Driver\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }

    /* The ping command returns a single result document, so we need to access the
     * first result in the cursor. */
    $response = $cursor->toArray()[0];

    var_dump($response);

    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["ok"]=>
      float(1)
    }

Örnek 2 MongoDB\Driver\Manager::executeCommand() with a command returning a cursor

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1, 'y' => 'foo']);
    $bulk->insert(['x' => 2, 'y' => 'bar']);
    $bulk->insert(['x' => 3, 'y' => 'bar']);
    $manager->executeBulkWrite('db.collection', $bulk);

    $command = new MongoDB\Driver\Command([
        'aggregate' => 'collection',
        'pipeline' => [
            ['$group' => ['_id' => '$y', 'sum' => ['$sum' => '$x']]],
        ],
        'cursor' => new stdClass,
    ]);
    $cursor = $manager->executeCommand('db', $command);

    /* The aggregate command can optionally return its results in a cursor instead
     * of a single result document. In this case, we can iterate on the cursor
     * directly to access those results. */
    foreach ($cursor as $document) {
        var_dump($document);
    }

    ?>

Yukarıdaki örneğin çıktısı:

    object(stdClass)#6 (2) {
      ["_id"]=>
      string(3) "bar"
      ["sum"]=>
      int(10)
    }
    object(stdClass)#7 (2) {
      ["_id"]=>
      string(3) "foo"
      ["sum"]=>
      int(2)
    }

Örnek 3 Limiting execution time for a command

The execution time of a command may be limited by specifying a value for `"maxTimeMS"` in the MongoDB\Driver\Command document. Note that this time limit is enforced on the server side and does not take network latency into account. See » Terminate Running Operations in the MongoDB manual for more information.

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');

    $command = new MongoDB\Driver\Command([
        'count' => 'collection',
        'query' => ['x' => ['$gt' => 1]],
        'maxTimeMS' => 1000,
    ]);

    $cursor = $manager->executeCommand('db', $command);

    var_dump($cursor->toArray()[0]);

    ?>

If the command fails to complete after one second of execution time on the server, a MongoDB\Driver\Exception\ExecutionTimeoutException will be thrown.

### Notlar

> Bilginize: If a secondary `readPreference` is used, it is the caller's responsibility to ensure that the `command` can be executed on a secondary. No validation is done by the driver.

> Bilginize: This method does not default to using the read preference from the MongoDB Connection URI. Applications in need of that behavior should consider using MongoDB\Driver\Manager::executeReadCommand().

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Manager::executeReadCommand() - Execute a database command that reads
- MongoDB\Driver\Manager::executeReadWriteCommand() - Execute a database command that reads and writes
- MongoDB\Driver\Manager::executeWriteCommand() - Execute a database command that writes
- MongoDB\Driver\Server::executeCommand() - Execute a database command on this server

# MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery — Execute a database query

### Açıklama

final public function MongoDB\Driver\Manager::executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Selects a server according to the `"readPreference"` option and executes the query on that server.

Default values for the `"readPreference"` option and Query's `"readConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`query` (MongoDB\Driver\Query)

  The query to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid query operators).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\ReadPreference instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\ReadPreference object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\ReadPreference object.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::executeQuery() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->insert(['x' => 2]);
    $bulk->insert(['x' => 3]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $filter = ['x' => ['$gt' => 1]];
    $options = [
        'projection' => ['_id' => 0],
        'sort' => ['x' => -1],
    ];

    $query = new MongoDB\Driver\Query($filter, $options);
    $cursor = $manager->executeQuery('db.collection', $query);

    foreach ($cursor as $document) {
        var_dump($document);
    }

    ?>

Yukarıdaki örneğin çıktısı:

    object(stdClass)#6 (1) {
      ["x"]=>
      int(3)
    }
    object(stdClass)#7 (1) {
      ["x"]=>
      int(2)
    }

Örnek 2 Limiting execution time for a query

The `"maxTimeMS"` MongoDB\Driver\Query option may be used to limit the execution time of a query. Note that this time limit is enforced on the server side and does not take network latency into account. See » Terminate Running Operations in the MongoDB manual for more information.

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');

    $filter = ['x' => ['$gt' => 1]];
    $options = [
        'maxTimeMS' => 1000,
    ];

    $query = new MongoDB\Driver\Query($filter, $options);
    $cursor = $manager->executeQuery('db.collection', $query);

    foreach ($cursor as $document) {
        var_dump($document);
    }

    ?>

If the query fails to complete after one second of execution time on the server, a MongoDB\Driver\Exception\ExecutionTimeoutException will be thrown.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Server::executeQuery() - Execute a database query on this server

# MongoDB\Driver\Manager::executeReadCommand

(mongodb >=1.4.0)

MongoDB\Driver\Manager::executeReadCommand — Execute a database command that reads

### Açıklama

final public function MongoDB\Driver\Manager::executeReadCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Selects a server according to the `"readPreference"` option and executes the command on that server.

This method will apply logic that is specific to commands that read (e.g. » distinct). Default values for the `"readPreference"` and `"readConcern"` options will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Manager::executeCommand() - Execute a database command
- MongoDB\Driver\Manager::executeReadWriteCommand() - Execute a database command that reads and writes
- MongoDB\Driver\Manager::executeWriteCommand() - Execute a database command that writes
- MongoDB\Driver\Server::executeReadCommand() - Execute a database command that reads on this server

# MongoDB\Driver\Manager::executeReadWriteCommand

(mongodb >=1.4.0)

MongoDB\Driver\Manager::executeReadWriteCommand — Execute a database command that reads and writes

### Açıklama

final public function MongoDB\Driver\Manager::executeReadWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on the primary server.

This method will apply logic that is specific to commands that read and write (e.g. » aggregate). Default values for the `"readConcern"` and `"writeConcern"` options will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Manager::executeCommand() - Execute a database command
- MongoDB\Driver\Manager::executeReadCommand() - Execute a database command that reads
- MongoDB\Driver\Manager::executeWriteCommand() - Execute a database command that writes
- MongoDB\Driver\Server::executeReadWriteCommand() - Execute a database command that reads and writes on this server

# MongoDB\Driver\Manager::executeWriteCommand

(mongodb >=1.4.0)

MongoDB\Driver\Manager::executeWriteCommand — Execute a database command that writes

### Açıklama

final public function MongoDB\Driver\Manager::executeWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on the primary server.

This method will apply logic that is specific to commands that write (e.g. » drop). The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

> Bilginize: This method is not intended to be used to execute » insert, » update, or » delete commands. Users are encouraged to use MongoDB\Driver\Manager::executeBulkWrite() for those operations.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Manager::executeCommand() - Execute a database command
- MongoDB\Driver\Manager::executeReadCommand() - Execute a database command that reads
- MongoDB\Driver\Manager::executeReadWriteCommand() - Execute a database command that reads and writes
- MongoDB\Driver\Server::executeWriteCommand() - Execute a database command that writes on this server

# MongoDB\Driver\Manager::getEncryptedFieldsMap

(mongodb >=1.14.0)

MongoDB\Driver\Manager::getEncryptedFieldsMap — Return the encryptedFieldsMap auto encryption option for the Manager

### Açıklama

final public function MongoDB\Driver\Manager::getEncryptedFieldsMap(): array|object|null

Returns the `encryptedFieldsMap` auto encryption option for the Manager, if specified.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The `encryptedFieldsMap` auto encryption option for the Manager, or `null` if it was not specified.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager

# MongoDB\Driver\Manager::getReadConcern

(mongodb >=1.1.0)

MongoDB\Driver\Manager::getReadConcern — Return the ReadConcern for the Manager

### Açıklama

final public function MongoDB\Driver\Manager::getReadConcern(): MongoDB\Driver\ReadConcern

Returns the MongoDB\Driver\ReadConcern for the Manager, which is derived from its URI options. This is the default read concern for queries and commands executed on the Manager.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MongoDB\Driver\ReadConcern for the Manager.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::getReadConcern() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    var_dump($manager->getReadConcern());

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?readConcernLevel=local');
    var_dump($manager->getReadConcern());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\ReadConcern)#2 (0) {
    }
    object(MongoDB\Driver\ReadConcern)#1 (1) {
      ["level"]=>
      string(5) "local"
    }

### Ayrıca Bakınız

- MongoDB\Driver\ReadConcern
- MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager

# MongoDB\Driver\Manager::getReadPreference

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getReadPreference — Return the ReadPreference for the Manager

### Açıklama

final public function MongoDB\Driver\Manager::getReadPreference(): MongoDB\Driver\ReadPreference

Returns the MongoDB\Driver\ReadPreference for the Manager, which is derived from its URI options. This is the default read preference for queries and commands executed on the Manager.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MongoDB\Driver\ReadPreference for the Manager.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::getReadPreference() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    var_dump($manager->getReadPreference());

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?readPreference=secondaryPreferred&readPreferenceTags=dc:ny,rack:1&readPreferenceTags=dc:ny&readPreferenceTags=');
    var_dump($manager->getReadPreference());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\ReadPreference)#2 (1) {
      ["mode"]=>
      string(7) "primary"
    }
    object(MongoDB\Driver\ReadPreference)#1 (2) {
      ["mode"]=>
      string(18) "secondaryPreferred"
      ["tags"]=>
      array(3) {
        [0]=>
        object(stdClass)#3 (2) {
          ["dc"]=>
          string(2) "ny"
          ["rack"]=>
          string(1) "1"
        }
        [1]=>
        object(stdClass)#4 (1) {
          ["dc"]=>
          string(2) "ny"
        }
        [2]=>
        object(stdClass)#5 (0) {
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager

# MongoDB\Driver\Manager::getServers

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getServers — Return the servers to which this manager is connected

### Açıklama

final public function MongoDB\Driver\Manager::getServers(): array

Returns an array of MongoDB\Driver\Server instances to which this manager is connected.

> Bilginize: Since the driver connects to the database lazily, this method may return an empty array if called before executing an operation on the MongoDB\Driver\Manager.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of MongoDB\Driver\Server instances to which this manager is connected.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::getServers() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    /* The driver connects to the database server lazily, so Manager::getServers()
     * may initially return an empty array. */
    var_dump($manager->getServers());

    $command = new MongoDB\Driver\Command(['ping' => 1]);
    $manager->executeCommand('db', $command);

    var_dump($manager->getServers());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(0) {
    }
    array(1) {
      [0]=>
      object(MongoDB\Driver\Server)#3 (10) {
        ["host"]=>
        string(9) "localhost"
        ["port"]=>
        int(27017)
        ["type"]=>
        int(1)
        ["is_primary"]=>
        bool(false)
        ["is_secondary"]=>
        bool(false)
        ["is_arbiter"]=>
        bool(false)
        ["is_hidden"]=>
        bool(false)
        ["is_passive"]=>
        bool(false)
        ["last_hello_response"]=>
        array(8) {
          ["isWritablePrimary"]=>
          bool(true)
          ["maxBsonObjectSize"]=>
          int(16777216)
          ["maxMessageSizeBytes"]=>
          int(48000000)
          ["maxWriteBatchSize"]=>
          int(1000)
          ["localTime"]=>
          object(MongoDB\BSON\UTCDateTime)#4 (1) {
            ["milliseconds"]=>
            int(1447267964517)
          }
          ["maxWireVersion"]=>
          int(3)
          ["minWireVersion"]=>
          int(0)
          ["ok"]=>
          float(1)
        }
        ["round_trip_time"]=>
        int(554)
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\Server
- MongoDB\Driver\Manager::selectServer() - Select a server matching a read preference

# MongoDB\Driver\Manager::getWriteConcern

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getWriteConcern — Return the WriteConcern for the Manager

### Açıklama

final public function MongoDB\Driver\Manager::getWriteConcern(): MongoDB\Driver\WriteConcern

Returns the MongoDB\Driver\WriteConcern for the Manager, which is derived from its URI options. This is the default write concern for writes and commands executed on the Manager.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MongoDB\Driver\WriteConcern for the Manager.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Manager::getWriteConcern() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    var_dump($manager->getWriteConcern());

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?w=majority&wtimeoutMS=2000');
    var_dump($manager->getWriteConcern());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\WriteConcern)#2 (0) {
    }
    object(MongoDB\Driver\WriteConcern)#1 (2) {
      ["w"]=>
      string(8) "majority"
      ["wtimeout"]=>
      int(2000)
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager

# MongoDB\Driver\Manager::removeSubscriber

(mongodb >=1.10.0)

MongoDB\Driver\Manager::removeSubscriber — Unregisters a monitoring event subscriber with this Manager

### Açıklama

final public function MongoDB\Driver\Manager::removeSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void

Unregisters a monitoring event subscriber with this Manager.

> Bilginize: If `subscriber` is not already registered with this Manager, this function is a no-op.

### Bağımsız Değişkenler

`subscriber` (MongoDB\Driver\Monitoring\Subscriber)
  A monitoring event subscriber to unregister with this Manager.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager
- MongoDB\Driver\Monitoring\Subscriber
- MongoDB\Driver\Monitoring\CommandSubscriber
- MongoDB\Driver\Monitoring\removeSubscriber() - Unregisters a monitoring event subscriber globally
- Application Performance Monitoring (APM)

# MongoDB\Driver\Manager::selectServer

(mongodb >=1.0.0)

MongoDB\Driver\Manager::selectServer — Select a server matching a read preference

### Açıklama

final public function MongoDB\Driver\Manager::selectServer(?MongoDB\Driver\ReadPreference `$readPreference` = `null`): MongoDB\Driver\Server

Selects a MongoDB\Driver\Server matching `readPreference`. If `readPreference` is `null` or omitted, the primary server will be selected by default. This may be used to preselect a server in order to perform version checking before executing an operation.

> Bilginize: Unlike MongoDB\Driver\Manager::getServers(), this method will initialize database connections and perform server discovery if necessary. See the » Server Selection Specification for additional information.

### Bağımsız Değişkenler

`readPreference` (MongoDB\Driver\ReadPreference)
  The read preference to use for selecting a server. If `null` or omitted, the primary server will be selected by default.

### Dönen Değerler

Returns a MongoDB\Driver\Server matching the read preference.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException if a server matching the read preference could not be found.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.11.0 | The `readPreference` is now optional. If `null` or omitted, the primary server will be selected by default.

### Ayrıca Bakınız

- MongoDB\Driver\Server
- MongoDB\Driver\Manager::getServers() - Return the servers to which this manager is connected
- » Server Selection Specification

# MongoDB\Driver\Manager::startSession

(mongodb >=1.4.0)

MongoDB\Driver\Manager::startSession — Start a new client session for use with this client

### Açıklama

final public function MongoDB\Driver\Manager::startSession(?array `$options` = `null`): MongoDB\Driver\Session

Creates a MongoDB\Driver\Session for the given options. The session may then be specified when executing commands, queries, and write operations.

> Bilginize: A MongoDB\Driver\Session can only be used with the MongoDB\Driver\Manager from which it was created.

### Bağımsız Değişkenler

`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  causalConsistency | bool | Configure causal consistency in a session. If `true`, each operation in the session will be causally ordered after the previous read or write operation. Set to `false` to disable causal consistency. See » Causal Consistency in the MongoDB manual for more information. | `true`
  defaultTransactionOptions | array | Default options to apply to newly created transactions. These options are used unless they are overridden when a transaction is started with different value for each option.
  options
  Option | Type | Description
  --- | --- | ---
  maxCommitTimeMS | int | The maximum amount of time in milliseconds to allow a single `commitTransaction` command to run. If specified, `maxCommitTimeMS` must be a signed 32-bit integer greater than or equal to zero.
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.
  This option is available in MongoDB 4.0+. | `[]`
  snapshot | bool | Configure snapshot reads in a session. If `true`, a timestamp will be obtained from the first supported read operation in the session (i.e. `find`, `aggregate`, or unsharded `distinct`). Subsequent read operations within the session will then utilize a `"snapshot"` read concern level to read majority-committed data from that timestamp. Set to `false` to disable snapshot reads. Snapshot reads require MongoDB 5.0+ and cannot be used with causal consistency, transactions, or write operations. If `"snapshot"` is `true`, `"causalConsistency"` will default to `false`. See » Read Concern "snapshot" in the MongoDB manual for more information. | `false`

### Dönen Değerler

Returns a MongoDB\Driver\Session.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"causalConsistency"` and `"snapshot"` options are both `true`.
- Throws MongoDB\Driver\Exception\RuntimeException if the session could not be created (e.g. libmongoc does not support crypto).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.11.0 | The `"snapshot"` option was added.
PECL mongodb 1.6.0 | The `"maxCommitTimeMS"` option was added to `"defaultTransactionOptions"`.
PECL mongodb 1.5.0 | The `"defaultTransactionOptions"` option was added.

### Ayrıca Bakınız

- MongoDB\Driver\Session
- » Causal Consistency in the MongoDB manual

## İçindekiler

- MongoDB\Driver\Manager::addSubscriber — Registers a monitoring event subscriber with this Manager
- MongoDB\Driver\Manager::__construct — Create new MongoDB Manager
- MongoDB\Driver\Manager::createClientEncryption — Create a new ClientEncryption object
- MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations
- MongoDB\Driver\Manager::executeBulkWriteCommand — Execute write operations using the bulkWrite command
- MongoDB\Driver\Manager::executeCommand — Execute a database command
- MongoDB\Driver\Manager::executeQuery — Execute a database query
- MongoDB\Driver\Manager::executeReadCommand — Execute a database command that reads
- MongoDB\Driver\Manager::executeReadWriteCommand — Execute a database command that reads and writes
- MongoDB\Driver\Manager::executeWriteCommand — Execute a database command that writes
- MongoDB\Driver\Manager::getEncryptedFieldsMap — Return the encryptedFieldsMap auto encryption option for the Manager
- MongoDB\Driver\Manager::getReadConcern — Return the ReadConcern for the Manager
- MongoDB\Driver\Manager::getReadPreference — Return the ReadPreference for the Manager
- MongoDB\Driver\Manager::getServers — Return the servers to which this manager is connected
- MongoDB\Driver\Manager::getWriteConcern — Return the WriteConcern for the Manager
- MongoDB\Driver\Manager::removeSubscriber — Unregisters a monitoring event subscriber with this Manager
- MongoDB\Driver\Manager::selectServer — Select a server matching a read preference
- MongoDB\Driver\Manager::startSession — Start a new client session for use with this client

# The MongoDB\Driver\Command class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\Command class is a value object that represents a database command.

To provide Command Helpers the MongoDB\Driver\Command object should be composed.

## Sınıf Sözdizimi

final class MongoDB\Driver\Command {
/* Yöntemler */
final public function __construct(array|object `$document`, ?array `$commandOptions` = `null`)
}

## Örnekler

Örnek 1 Composing MongoDB\Driver\Command to provide a helper to create collections

    <?php
    class CreateCollection {
        protected $cmd = array();

        function __construct($collectionName) {
            $this->cmd["create"] = (string) $collectionName;
        }
        function setCappedCollection($maxBytes, $maxDocuments = false) {
            $this->cmd["capped"] = true;
            $this->cmd["size"]   = (int) $maxBytes;

            if ($maxDocuments) {
                $this->cmd["max"] = (int) $maxDocuments;
            }
        }
        function usePowerOf2Sizes($bool) {
            if ($bool) {
                $this->cmd["flags"] = 1;
            } else {
                $this->cmd["flags"] = 0;
            }
        }
        function setFlags($flags) {
            $this->cmd["flags"] = (int) $flags;
        }
        function getCommand() {
            return new MongoDB\Driver\Command($this->cmd);
        }
        function getCollectionName() {
            return $this->cmd["create"];
        }
    }

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $createCollection = new CreateCollection("cappedCollection");
    $createCollection->setCappedCollection(64 * 1024);

    try {
        $command = $createCollection->getCommand();
        $cursor = $manager->executeCommand("databaseName", $command);
        $response = $cursor->toArray()[0];
        var_dump($response);

        $collstats = ["collstats" => $createCollection->getCollectionName()];
        $cursor = $manager->executeCommand("databaseName", new MongoDB\Driver\Command($collstats));
        $response = $cursor->toArray()[0];
        var_dump($response);
    } catch(MongoDB\Driver\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\Driver\Command)#3 (1) {
      ["command"]=>
      array(3) {
        ["create"]=>
        string(16) "cappedCollection"
        ["capped"]=>
        bool(true)
        ["size"]=>
        int(65536)
      }
    }
    array(1) {
      ["ok"]=>
      float(1)
    }
    array(16) {
      ["ns"]=>
      string(29) "databaseName.cappedCollection"
      ["count"]=>
      int(0)
      ["size"]=>
      int(0)
      ["numExtents"]=>
      int(1)
      ["storageSize"]=>
      int(65536)
      ["nindexes"]=>
      int(1)
      ["lastExtentSize"]=>
      float(65536)
      ["paddingFactor"]=>
      float(1)
      ["paddingFactorNote"]=>
      string(101) "paddingFactor is unused and unmaintained in 2.8. It remains hard coded to 1.0 for compatibility only."
      ["userFlags"]=>
      int(0)
      ["capped"]=>
      bool(true)
      ["max"]=>
      int(9223372036854775807)
      ["maxSize"]=>
      int(65536)
      ["totalIndexSize"]=>
      int(8176)
      ["indexSizes"]=>
      object(stdClass)#4 (1) {
        ["_id_"]=>
        int(8176)
      }
      ["ok"]=>
      float(1)
    }

# MongoDB\Driver\Command::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Command::__construct — Create a new Command

### Açıklama

final public function MongoDB\Driver\Command::__construct(array|object `$document`, ?array `$commandOptions` = `null`)

Constructs a new MongoDB\Driver\Command, which is an immutable value object that represents a database command. The command may then be executed with MongoDB\Driver\Manager::executeCommand().

The complete command document, which includes the command name and its options, should be expressed in the `document` parameter. The `commandOptions` parameter is only used to specify options related to the execution of the command and the resulting MongoDB\Driver\Cursor.

### Bağımsız Değişkenler

`document`
  The complete command document, which will be sent to the server.
`commandOptions`

  > Bilginize: Do not use this parameter to specify options described in the command's reference in the MongoDB manual. This parameter should only be used for the options explicitly listed below.

  commandOptions
  Option | Type | Description
  --- | --- | ---
  maxAwaitTimeMS | int | Positive integer denoting the time limit in milliseconds for the server to block a getMore operation if no data is available. This option should only be used in conjunction with commands that return a tailable cursor (e.g. » Change Streams).

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.4.0 | Added a second `commandOptions` argument, which supports the `"maxAwaitTimeMS"` option.

### Örnekler

Örnek 1 MongoDB\Driver\Command::__construct() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $command = new MongoDB\Driver\Command(array("buildinfo" => 1));

    try {
        $cursor = $manager->executeCommand("admin", $command);
        $response = $cursor->toArray()[0];
    } catch(MongoDB\Driver\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }
    var_dump($response);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(13) {
      ["version"]=>
      string(14) "2.8.0-rc2-pre-"
      ["gitVersion"]=>
      string(62) "b743d7158f7642f4da6b7eac8320374b3b88dc2e modules: subscription"
      ["OpenSSLVersion"]=>
      string(25) "OpenSSL 1.0.1f 6 Jan 2014"
      ["sysInfo"]=>
      string(104) "Linux infant 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49"
      ["loaderFlags"]=>
      string(91) "-fPIC -pthread -Wl,-z,now -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,-E"
      ["compilerFlags"]=>
      string(301) "-Wnon-virtual-dtor -Woverloaded-virtual -std=c++11 -fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -pipe -Werror -O3 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-but-set-variable -fno-builtin-memcmp -std=c99"
      ["allocator"]=>
      string(8) "tcmalloc"
      ["versionArray"]=>
      array(4) {
        [0]=>
        int(2)
        [1]=>
        int(8)
        [2]=>
        int(0)
        [3]=>
        int(-8)
      }
      ["javascriptEngine"]=>
      string(2) "V8"
      ["bits"]=>
      int(64)
      ["debug"]=>
      bool(false)
      ["maxBsonObjectSize"]=>
      int(16777216)
      ["ok"]=>
      float(1)
    }

Örnek 2 MongoDB\Driver\Command::__construct() example

Commands can accept options as well, as part of the normal structure that you create to send to the server. For example, the `maxTimeMS` option can be passed with most commands to restrict the amount of time a specific command can run for on the server.

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $command = new MongoDB\Driver\Command(
        array(
            "distinct" => "beer",
            "key" => "beer_name",
            "maxTimeMS" => 10,
        )
    );

    try {
        $cursor = $manager->executeCommand("beerdb", $command);
        $response = $cursor->toArray()[0];
    } catch(MongoDB\Driver\Exception\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }
    var_dump($response);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

operation exceeded time limit

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeCommand() - Execute a database command
- MongoDB\Driver\Cursor

## İçindekiler

- MongoDB\Driver\Command::__construct — Create a new Command

# The MongoDB\Driver\Query class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\Query class is a value object that represents a database query.

## Sınıf Sözdizimi

final class MongoDB\Driver\Query {
/* Yöntemler */
final public function __construct(array|object `$filter`, ?array `$queryOptions` = `null`)
}

# MongoDB\Driver\Query::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Query::__construct — Create a new Query

### Açıklama

final public function MongoDB\Driver\Query::__construct(array|object `$filter`, ?array `$queryOptions` = `null`)

Constructs a new MongoDB\Driver\Query, which is an immutable value object that represents a database query. The query may then be executed with MongoDB\Driver\Manager::executeQuery().

### Bağımsız Değişkenler

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`queryOptions`

  queryOptions
  Option | Type | Description
  --- | --- | ---
  allowDiskUse | bool | Allows MongoDB to use temporary disk files to store data exceeding the 100 megabyte system memory limit while processing a blocking sort operation.
  allowPartialResults | bool | For queries against a sharded collection, returns partial results from the mongos if some shards are unavailable instead of throwing an error. Falls back to the deprecated `"partial"` option if not specified.
  awaitData | bool | Use in conjunction with the `"tailable"` option to block a getMore operation on the cursor temporarily if at the end of data rather than returning no data. After a timeout period, the query returns as normal.
  batchSize | int | The number of documents to return in the first batch. Defaults to 101. A batch size of 0 means that the cursor will be established, but no documents will be returned in the first batch. In versions of MongoDB before 3.2, where queries use the legacy wire protocol OP_QUERY, a batch size of 1 will close the cursor irrespective of the number of matched documents.
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  comment | mixed | An arbitrary comment to help trace the operation through the database profiler, currentOp output, and logs. The comment can be any valid BSON type for MongoDB 4.4+. Earlier server versions only support string values. Falls back to the deprecated `"$comment"` modifier if not specified.
  exhaust | bool | Stream the data down full blast in multiple "more" packages, on the assumption that the client will fully read all data queried. Faster when you are pulling a lot of data and know you want to pull it all down. Note: the client is not allowed to not read all the data unless it closes the connection. This option is not supported by the find command in MongoDB 3.2+ and will force the driver to use the legacy wire protocol version (i.e. OP_QUERY).
  explain | bool | If `true`, the returned MongoDB\Driver\Cursor will contain a single document that describes the process and indexes used to return the query. Falls back to the deprecated `"$explain"` modifier if not specified. This option is not supported by the find command in MongoDB 3.2+ and will only be respected when using the legacy wire protocol version (i.e. OP_QUERY). The » explain command should be used on MongoDB 3.0+.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index. Falls back to the deprecated `"hint"` option if not specified.
  let | array|object | Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. `$$var`). This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.
  limit | int | The maximum number of documents to return. If unspecified, then defaults to no limit. A limit of 0 is equivalent to setting no limit.
  max | array|object | The exclusive upper bound for a specific index. Falls back to the deprecated `"$max"` modifier if not specified.
  maxAwaitTimeMS | int | Positive integer denoting the time limit in milliseconds for the server to block a getMore operation if no data is available. This option should only be used in conjunction with the `"tailable"` and `"awaitData"` options.
  maxTimeMS | int | The cumulative time limit in milliseconds for processing operations on the cursor. MongoDB aborts the operation at the earliest following interrupt point. Falls back to the deprecated `"$maxTimeMS"` modifier if not specified.
  min | array|object | The inclusive lower bound for a specific index. Falls back to the deprecated `"$min"` modifier if not specified.
  noCursorTimeout | bool | Prevents the server from timing out idle cursors after an inactivity period (10 minutes).
  projection | array|object | The » projection specification to determine which fields to include in the returned documents. If you are using the ODM functionality to deserialise documents as their original PHP class, make sure that you include the __pclass field in the projection. This is required for the deserialization to work and without it, the extension will return (by default) a stdClass object instead.
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. By default, the read concern from the MongoDB Connection URI will be used. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  returnKey | bool | If `true`, returns only the index keys in the resulting documents. Default value is `false`. If `true` and the find command does not use an index, the returned documents will be empty. Falls back to the deprecated `"$returnKey"` modifier if not specified.
  showRecordId | bool | Determines whether to return the record identifier for each document. If `true`, adds a top-level `"$recordId"` field to the returned documents. Falls back to the deprecated `"$showDiskLoc"` modifier if not specified.
  singleBatch | bool | Determines whether to close the cursor after the first batch. Defaults to `false`.
  skip | int | Number of documents to skip. Defaults to 0.
  sort | array|object | The sort specification for the ordering of the results. Falls back to the deprecated `"$orderby"` modifier if not specified.
  tailable | bool | Returns a tailable cursor for a capped collection.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `"partial"` option was removed. Use the `"allowPartialResults"` option instead. The `"maxScan"` option was removed. Support for this option was removed in MongoDB 4.2. The `"modifiers"` option was removed. This option was used for legacy query modifiers, which are all deprecated. The `"oplogReplay"` option was removed. It is ignored in MongoDB 4.4 and newer. The `"snapshot"` option was removed. Support for this option was removed in MongoDB 4.0. A negative value for the `"limit"` option no longer implies `true` for the `"singleBatch"` option. To only receive a single batch of results, combine a positive `"limit"` value with the `"singleBatch"` option.
PECL mongodb 1.14.0 | Added the `"let"` option. The `"comment"` option now accepts any type.
PECL mongodb 1.8.0 | Added the `"allowDiskUse"` option. The `"oplogReplay"` option is deprecated.
PECL mongodb 1.5.0 | The `"maxScan"` and `"snapshot"` options are deprecated.
PECL mongodb 1.3.0 | Added the `"maxAwaitTimeMS"` option.
PECL mongodb 1.2.0 | Added the `"allowPartialResults"`, `"collation"`, `"comment"`, `"hint"`, `"max"`, `"maxScan"`, `"maxTimeMS"`, `"min"`, `"returnKey"`, `"showRecordId"`, and `"snapshot"` options. Renamed the `"partial"` option to `"allowPartialResults"`. For backwards compatibility, `"partial"` will still be read if `"allowPartialResults"` is not specified. Removed the legacy `"secondaryOk"` option, which is obsolete. For queries using the legacy wire protocol OP_QUERY, the driver will set the `secondaryOk` bit as needed in accordance with the » Server Selection Specification.
PECL mongodb 1.1.0 | Added the `"readConcern"` option.

### Örnekler

Örnek 1 MongoDB\Driver\Query::__construct() example

    <?php
    /* Select only documents authord by "bjori" with at least 100 views */
    $filter = [
        'author' => 'bjori',
        'views' => [
            '$gte' => 100,
        ],
    ];

    $options = [
        /* Only return the following fields in the matching documents */
        'projection' => [
            'title' => 1,
            'article' => 1,
        ],
        /* Return the documents in descending order of views */
        'sort' => [
            'views' => -1
        ],
    ];

    $query = new MongoDB\Driver\Query($filter, $options);

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
    $cursor = $manager->executeQuery('databaseName.collectionName', $query, ['readPreference' => $readPreference]);

    foreach($cursor as $document) {
        var_dump($document);
    }

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeQuery() - Execute a database query
- MongoDB\Driver\Cursor

## İçindekiler

- MongoDB\Driver\Query::__construct — Create a new Query

# The MongoDB\Driver\BulkWrite class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\BulkWrite collects one or more write operations that should be sent to the server. After adding any number of insert, update, and delete operations, the collection may be executed via MongoDB\Driver\Manager::executeBulkWrite().

Write operations may either be ordered (default) or unordered. Ordered write operations are sent to the server, in the order provided, for serial execution. If a write fails, any remaining operations will be aborted. Unordered operations are sent to the server in an arbitrary order where they may be executed in parallel. Any errors that occur are reported after all operations have been attempted.

## Sınıf Sözdizimi

final class MongoDB\Driver\BulkWrite implements Countable {
/* Yöntemler */
public function __construct(?array `$options` = `null`)
public function count(): int
public function delete(array|object `$filter`, ?array `$deleteOptions` = `null`): void
public function insert(array|object `$document`): mixed
public function update(array|object `$filter`, array|object `$newObj`, ?array `$updateOptions` = `null`): void
}

## Örnekler

Örnek 1 Mixed write operations are grouped by type

Mixed write operations (i.e. inserts, updates, and deletes) will be assembled into typed write commands to be sent sequentially to the server.

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);
    $bulk->update(['x' => 2], ['$set' => ['x' => 1]]);
    $bulk->insert(['_id' => 3, 'x' => 3]);
    $bulk->delete(['x' => 1]);

    ?>

Will result in four write commands (i.e. roundtrips) being executed. Since the operations are ordered, the third insertion cannot be sent until the preceding update is executed.

Örnek 2 Ordered write operations causing an error

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
    $bulk->delete([]);
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 2]);
    $bulk->insert(['_id' => 3, 'hello' => 'world']);
    $bulk->update(['_id' => 3], ['$set' => ['hello' => 'earth']]);
    $bulk->insert(['_id' => 4, 'hello' => 'pluto']);
    $bulk->update(['_id' => 4], ['$set' => ['hello' => 'moon']]);
    $bulk->insert(['_id' => 3]);
    $bulk->insert(['_id' => 4]);
    $bulk->insert(['_id' => 5]);

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        $result = $e->getWriteResult();

        // Check if the write concern could not be fulfilled
        if ($writeConcernError = $result->getWriteConcernError()) {
            printf("%s (%d): %s\n",
                $writeConcernError->getMessage(),
                $writeConcernError->getCode(),
                var_export($writeConcernError->getInfo(), true)
            );
        }

        // Check if any write operations did not complete at all
        foreach ($result->getWriteErrors() as $writeError) {
            printf("Operation#%d: %s (%d)\n",
                $writeError->getIndex(),
                $writeError->getMessage(),
                $writeError->getCode()
            );
        }
    } catch (MongoDB\Driver\Exception\Exception $e) {
        printf("Other error: %s\n", $e->getMessage());
        exit;
    }

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
    Inserted 4 document(s)
    Updated  2 document(s)

If the write concern could not be fulfilled, the example above would output something like:

    waiting for replication timed out (64): array (
      'wtimeout' => true,
    )
    Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000)
    Inserted 4 document(s)
    Updated  2 document(s)

If we execute the example above, but allow for unordered writes:

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]);
    /* ... */

    ?>

Yukarıdaki örneğin çıktısı:

    Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
    Operation#8: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 4 } (11000)
    Inserted 5 document(s)
    Updated  2 document(s)

## Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWrite()
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\WriteConcernError
- MongoDB\Driver\WriteError

# MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite

### Açıklama

public function MongoDB\Driver\BulkWrite::__construct(?array `$options` = `null`)

Constructs a new MongoDB\Driver\BulkWrite, which is a mutable object to which one or more write operations may be added. The write(s) may then be executed with MongoDB\Driver\Manager::executeBulkWrite().

### Bağımsız Değişkenler

`options` (array)

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  bypassDocumentValidation | bool | If `true`, allows insert and update operations to circumvent document level validation. This option is available in MongoDB 3.2+ and is ignored for older server versions, which do not support document level validation. | `false`
  comment | mixed | An arbitrary comment to help trace the operation through the database profiler, currentOp output, and logs. This option is available in MongoDB 4.4+ and will result in an exception at execution time if specified for an older server version.
  let | array|object | Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. `$$var`). This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.
  ordered | bool | Ordered operations (`true`) are executed serially on the MongoDB server, while unordered operations (`false`) are sent to the server in an arbitrary order and may be executed in parallel. | `true`

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.14.0 | Added the `"comment"` and `"let"` options.
PECL mongodb 1.1.0 | Added the `"bypassDocumentValidation"` option.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWrite::__construct() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
    $bulk->delete([]);
    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);
    $bulk->update(
        ['x' => 2],
        ['$set' => ['x' => 1]],
        ['limit' => 1, 'upsert' => false]
    );
    $bulk->delete(['x' => 1], ['limit' => 1]);
    $bulk->update(
        ['_id' => 3],
        ['$set' => ['x' => 3]],
        ['limit' => 1, 'upsert' => true]
    );

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $writeConcern = new MongoDB\Driver\WriteConcern(1);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        $result = $e->getWriteResult();

        // Check if the write concern could not be fulfilled
        if ($writeConcernError = $result->getWriteConcernError()) {
            printf("%s (%d): %s\n",
                $writeConcernError->getMessage(),
                $writeConcernError->getCode(),
                var_export($writeConcernError->getInfo(), true)
            );
        }

        // Check if any write operations did not complete at all
        foreach ($result->getWriteErrors() as $writeError) {
            printf("Operation#%d: %s (%d)\n",
                $writeError->getIndex(),
                $writeError->getMessage(),
                $writeError->getCode()
            );
        }
    } catch (MongoDB\Driver\Exception\Exception $e) {
        printf("Other error: %s\n", $e->getMessage());
        exit;
    }

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());
    printf("Upserted %d document(s)\n", $result->getUpsertedCount());
    printf("Deleted  %d document(s)\n", $result->getDeletedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    Inserted 2 document(s)
    Updated  1 document(s)
    Upserted 1 document(s)
    Deleted  1 document(s)

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
- MongoDB\Driver\WriteResult

# MongoDB\Driver\BulkWrite::count

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::count — Count number of write operations in the bulk

### Açıklama

public function MongoDB\Driver\BulkWrite::count(): int

Returns the number of write operations added to the MongoDB\Driver\BulkWrite object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns number of write operations added to the MongoDB\Driver\BulkWrite object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.2.0 | Returns the number of write operations added to the MongoDB\Driver\BulkWrite object. Earlier versions returned the expected number of client-to-server roundtrips required to execute all write operations.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWrite::count() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);
    $bulk->update(['x' => 2], ['$set' => ['x' => 1]]);
    $bulk->delete(['x' => 1]);

    var_dump(count($bulk));

    ?>

Yukarıdaki örneğin çıktısı:

    int(4)

# MongoDB\Driver\BulkWrite::delete

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::delete — Add a delete operation to the bulk

### Açıklama

public function MongoDB\Driver\BulkWrite::delete(array|object `$filter`, ?array `$deleteOptions` = `null`): void

Adds a delete operation to the MongoDB\Driver\BulkWrite.

### Bağımsız Değişkenler

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`deleteOptions`

  deleteOptions
  Option | Type | Description | Default
  --- | --- | --- | ---
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index. This option is available in MongoDB 4.4+ and will result in an exception at execution time if specified for an older server version.
  limit | bool | Delete all matching documents (`false`), or only the first matching document (`true`) | `false`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.8.0 | Added the `"hint"` option.
PECL mongodb 1.2.0 | Added the `"collation"` option.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWrite::delete() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->delete(['x' => 1], ['limit' => 1]);
    $bulk->delete(['x' => 2], ['limit' => 0]);

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $result = $manager->executeBulkWrite('db.collection', $bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
- MongoDB\Driver\WriteResult

# MongoDB\Driver\BulkWrite::insert

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::insert — Add an insert operation to the bulk

### Açıklama

public function MongoDB\Driver\BulkWrite::insert(array|object `$document`): mixed

Adds an insert operation to the MongoDB\Driver\BulkWrite.

### Bağımsız Değişkenler

`document` (array|object)
  A document to insert.

### Dönen Değerler

Returns the `_id` of the inserted document. If the `document` did not have an `_id`, the MongoDB\BSON\ObjectId generated for the insert will be returned.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.3.0 | The `_id` of the inserted document is always returned. Previously, the method only returned a value if a MongoDB\BSON\ObjectId was generated.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWrite::insert() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite;

    $doc1 = ['x' => 1];
    $doc2 = ['_id' => 'custom-id', 'x' => 2];
    $doc3 = ['_id' => new MongoDB\BSON\ObjectId('0123456789abcdef01234567'), 'x' => 3];

    $id1 = $bulk->insert($doc1);
    $id2 = $bulk->insert($doc2);
    $id3 = $bulk->insert($doc3);

    var_dump($id1, $id2, $id3);

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $result = $manager->executeBulkWrite('db.collection', $bulk);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\ObjectId)#3 (1) {
      ["oid"]=>
      string(24) "67f58058d1a0aa2fd80d55d0"
    }
    string(9) "custom-id"
    object(MongoDB\BSON\ObjectId)#4 (1) {
      ["oid"]=>
      string(24) "0123456789abcdef01234567"
    }

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
- MongoDB\Driver\WriteResult
- MongoDB\BSON\ObjectId
- MongoDB\BSON\Persistable

# MongoDB\Driver\BulkWrite::update

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::update — Add an update operation to the bulk

### Açıklama

public function MongoDB\Driver\BulkWrite::update(array|object `$filter`, array|object `$newObj`, ?array `$updateOptions` = `null`): void

Adds an update operation to the MongoDB\Driver\BulkWrite.

### Bağımsız Değişkenler

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`newObj` (array|object)
  A document containing either update operators (e.g. `$set`), a replacement document (i.e. only `field:value` expressions), or an » aggregation pipeline.
`updateOptions`

  updateOptions
  Option | Type | Description | Default
  --- | --- | --- | ---
  arrayFilters | array | An array of filter documents that determines which array elements to modify for an update operation on an array field. See » Specify arrayFilters for Array Update Operations in the MongoDB manual for more information. This option is available in MongoDB 3.6+ and will result in an exception at execution time if specified for an older server version.
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index. This option is available in MongoDB 4.2+ and will result in an exception at execution time if specified for an older server version.
  multi | bool | Update only the first matching document if `false`, or all matching documents `true`. This option cannot be `true` if `newObj` is a replacement document. | `false`
  sort | array|object | Specify which document the operation updates if the query matches multiple documents. The first document matched by the sort order will be updated. This option cannot be used if `"multi"` is `true`. This option is available in MongoDB 8.0+ and will result in an exception at execution time if specified for an older server version.
  upsert | bool | If `filter` does not match an existing document, insert a single document. The document will be created from `newObj` if it is a replacement document (i.e. no update operators); otherwise, the operators in `newObj` will be applied to `filter` to create the new document. | `false`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.21.0 | Added the `"sort"` option.
PECL mongodb 1.7.0 | Added the `"hint"` option.
PECL mongodb 1.6.0 | The `newObj` parameter now accepts an aggregation pipeline. This feature requires MongoDB 4.2+ and will result in an exception at execution time if specified for an older server version.
PECL mongodb 1.5.0 | Using the `"arrayFilters"` option will result in an exception at execution time if unsupported by the server. Previously, no exception would be thrown and the option may have been ignored.
PECL mongodb 1.4.0 | Added the `"arrayFilters"` option.
PECL mongodb 1.2.0 | Added the `"collation"` option.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWrite::update() example

    <?php

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->update(
        ['x' => 2],
        ['$set' => ['y' => 3]],
        ['multi' => false, 'upsert' => false]
    );

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $result = $manager->executeBulkWrite('db.collection', $bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
- MongoDB\Driver\WriteResult

## İçindekiler

- MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite
- MongoDB\Driver\BulkWrite::count — Count number of write operations in the bulk
- MongoDB\Driver\BulkWrite::delete — Add a delete operation to the bulk
- MongoDB\Driver\BulkWrite::insert — Add an insert operation to the bulk
- MongoDB\Driver\BulkWrite::update — Add an update operation to the bulk

# The MongoDB\Driver\BulkWriteCommand class

(mongodb >=2.1.0)

## Giriş

MongoDB\Driver\BulkWriteCommand collects one or more write operations that should be sent to the server using the » bulkWrite command introduced in MongoDB 8.0. After adding any number of insert, update, and delete operations, the command may be executed via MongoDB\Driver\Manager::executeBulkWriteCommand().

Unlike MongoDB\Driver\BulkWrite, where all write operations must target the same collection, each write operation within MongoDB\Driver\BulkWriteCommand may target a different collection.

Write operations may either be ordered (default) or unordered. Ordered write operations are sent to the server, in the order provided, for serial execution. If a write fails, any remaining operations will be aborted. Unordered operations are sent to the server in an arbitrary order where they may be executed in parallel. Any errors that occur are reported after all operations have been attempted.

## Sınıf Sözdizimi

final class MongoDB\Driver\BulkWriteCommand implements Countable {
/* Yöntemler */
public function __construct(?array `$options` = `null`)
public function count(): int
public function deleteMany(string `$namespace`, array|object `$filter`, ?array `$options` = `null`): void
public function deleteOne(string `$namespace`, array|object `$filter`, ?array `$options` = `null`): void
public function insertOne(string `$namespace`, array|object `$document`): mixed
public function replaceOne(
string `$namespace`,
array|object `$filter`,
array|object `$replacement`,
?array `$options` = `null`
): void
public function updateMany(
string `$namespace`,
array|object `$filter`,
array|object `$update`,
?array `$options` = `null`
): void
public function updateOne(
string `$namespace`,
array|object `$filter`,
array|object `$update`,
?array `$options` = `null`
): void
}

## Örnekler

Örnek 1 Mixed write operations

Mixed write operations (i.e. inserts, updates, and deletes) will be sent to the server using a single » bulkWrite command.

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    // Delete documents from both collections
    $bulk->deleteMany('db.coll_one', []);
    $bulk->deleteMany('db.coll_two', []);

    // Insert documents into two collections
    $bulk->insertOne('db.coll_one', ['_id' => 1]);
    $bulk->insertOne('db.coll_two', ['_id' => 2]);
    $bulk->insertOne('db.coll_two', ['_id' => 3]);

    // Update a document in "coll_one"
    $bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    Inserted 3 document(s)
    Updated  1 document(s)

Örnek 2 Ordered write operations causing an error

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    $bulk->deleteMany('db.coll', []);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 2]);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 3]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        $result = $e->getPartialResult();

        var_dump($e->getWriteErrors());
    }

    printf("Inserted %d document(s)\n", $result->getInsertedCount());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [3]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(3)
        ["info"]=>
        object(stdClass)#6 (0) {
        }
      }
    }
    Inserted 2 document(s)

## Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand()
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\Exception\BulkWriteCommandException
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\WriteConcernError
- MongoDB\Driver\WriteError

# MongoDB\Driver\BulkWriteCommand::__construct

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::__construct — Create a new BulkWriteCommand

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::__construct(?array `$options` = `null`)

Constructs a new MongoDB\Driver\BulkWriteCommand, which may be used to perform many insert, update, and delete operations on multiple collections in a single request using the » bulkWrite command introduced in MongoDB 8.0. This differs from MongoDB\Driver\BulkWrite, which is supported by all server versions but limited to a single collection.

After all write operations have been added, this object may be executed with MongoDB\Driver\Manager::executeBulkWriteCommand().

### Bağımsız Değişkenler

`options` (array)

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  bypassDocumentValidation | bool | If `true`, allows insert and update operations to circumvent document level validation. | `false`
  comment | mixed | An arbitrary comment to help trace the operation through the database profiler, currentOp output, and logs.
  let | array|object | Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. `$$var`). This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.
  ordered | bool | Whether the operations in this bulk write should be executed in the order in which they were specified. If `false`, writes will continue to be executed if an individual write fails. If `true`, writes will stop executing if an individual write fails. | `true`
  verboseResults | bool | Whether detailed results for each successful operation should be included in the returned MongoDB\Driver\BulkWriteCommandResult. | `false`

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::__construct() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    // Delete documents from both collections
    $bulk->deleteMany('db.coll_one', []);
    $bulk->deleteMany('db.coll_two', []);

    // Insert documents into two collections
    $bulk->insertOne('db.coll_one', ['_id' => 1]);
    $bulk->insertOne('db.coll_two', ['_id' => 2]);
    $bulk->insertOne('db.coll_two', ['_id' => 3]);

    // Update a document in "coll_one"
    $bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    Inserted 3 document(s)
    Updated  1 document(s)

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

# MongoDB\Driver\BulkWriteCommand::count

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::count — Count number of write operations in the BulkWriteCommand

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::count(): int

Returns the number of write operations added to the MongoDB\Driver\BulkWriteCommand object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns number of write operations added to the MongoDB\Driver\BulkWriteCommand object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::count() example

    <?php

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['_id' => 1, 'x' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 2, 'x' => 2]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['x' => 1]]);
    $bulk->deleteMany('db.coll', ['x' => 1]);

    var_dump(count($bulk));

    ?>

Yukarıdaki örneğin çıktısı:

    int(4)

# MongoDB\Driver\BulkWriteCommand::deleteMany

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::deleteMany — Add a deleteMany operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::deleteMany(string `$namespace`, array|object `$filter`, ?array `$options` = `null`): void

Add a deleteMany operation to the MongoDB\Driver\BulkWriteCommand. All documents matching `filter` in the collection identified by `namespace` will be deleted.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::deleteMany() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->deleteMany('db.coll', ['x' => ['$gt' => 1]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand::deleteOne() - Add a deleteOne operation
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

# MongoDB\Driver\BulkWriteCommand::deleteOne

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::deleteOne — Add a deleteOne operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::deleteOne(string `$namespace`, array|object `$filter`, ?array `$options` = `null`): void

Add a deleteOne operation to the MongoDB\Driver\BulkWriteCommand. The first document matching `filter` in the collection identified by `namespace` will be deleted.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::deleteOne() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->deleteOne('db.coll', ['x' => 1]);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand::deleteMany() - Add a deleteMany operation
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

# MongoDB\Driver\BulkWriteCommand::insertOne

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::insertOne — Add an insertOne operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::insertOne(string `$namespace`, array|object `$document`): mixed

Add an insertOne operation to the MongoDB\Driver\BulkWriteCommand. The document will be inserted into the collection identified by `namespace`.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`document` (array|object)
  A document to insert.

### Dönen Değerler

Returns the `_id` of the inserted document. If the `document` did not have an `_id`, the MongoDB\BSON\ObjectId generated for the insert will be returned.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::insertOne() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    $doc1 = ['x' => 1];
    $doc2 = ['_id' => 'custom-id', 'x' => 2];
    $doc3 = ['_id' => new MongoDB\BSON\ObjectId('0123456789abcdef01234567'), 'x' => 3];

    $id1 = $bulk->insertOne('db.coll', $doc1);
    $id2 = $bulk->insertOne('db.coll', $doc2);
    $id3 = $bulk->insertOne('db.coll', $doc3);

    var_dump($id1, $id2, $id3);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\ObjectId)#3 (1) {
      ["oid"]=>
      string(24) "67f58058d1a0aa2fd80d55d0"
    }
    string(9) "custom-id"
    object(MongoDB\BSON\ObjectId)#4 (1) {
      ["oid"]=>
      string(24) "0123456789abcdef01234567"
    }

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\BSON\ObjectId

# MongoDB\Driver\BulkWriteCommand::replaceOne

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::replaceOne — Add a replaceOne operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::replaceOne(
string `$namespace`,
array|object `$filter`,
array|object `$replacement`,
?array `$options` = `null`
): void

Add a replaceOne operation to the MongoDB\Driver\BulkWriteCommand. The first document matching `filter` in the collection identified by `namespace` will be replaced.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`replacement` (array|object)
  A replacement document.
`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.
  sort | array|object | Specify which document the operation replaces if the query matches multiple documents. The first document matched by the sort order will be replaced.
  upsert | bool | If `filter` does not match an existing document, insert a single document. The document will be created from `replacement`. | `false`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::replaceOne() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->replaceOne('db.coll', ['x' => 1], ['x' => 1, 'y' => 2]);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand::updateOne() - Add an updateOne operation
- MongoDB\Driver\BulkWriteCommand::updateMany() - Add an updateMany operation
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

# MongoDB\Driver\BulkWriteCommand::updateMany

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::updateMany — Add an updateMany operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::updateMany(
string `$namespace`,
array|object `$filter`,
array|object `$update`,
?array `$options` = `null`
): void

Add an updateMany operation to the MongoDB\Driver\BulkWriteCommand. All documents matching `filter` in the collection identified by `namespace` will be updated.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`update` (array|object)
  A document containing either update operators (e.g. `$set`) or an » aggregation pipeline.
`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  arrayFilters | array | An array of filter documents that determines which array elements to modify for an update operation on an array field. See » Specify arrayFilters for Array Update Operations in the MongoDB manual for more information.
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.
  upsert | bool | If `filter` does not match an existing document, insert a single document. The document will be created by applying operators in `update` to any field values in `filter`. | `false`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::updateMany() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->updateMany('db.coll', ['x' => ['$gt' => 1]], ['$set' => ['y' => 2]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand::replaceOne() - Add a replaceOne operation
- MongoDB\Driver\BulkWriteCommand::updateMany()
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

# MongoDB\Driver\BulkWriteCommand::updateOne

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommand::updateOne — Add an updateOne operation

### Açıklama

public function MongoDB\Driver\BulkWriteCommand::updateOne(
string `$namespace`,
array|object `$filter`,
array|object `$update`,
?array `$options` = `null`
): void

Add an updateOne operation to the MongoDB\Driver\BulkWriteCommand. The first document matching `filter` in the collection identified by `namespace` will be updated.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`update` (array|object)
  A document containing either update operators (e.g. `$set`) or an » aggregation pipeline.
`options`

  options
  Option | Type | Description | Default
  --- | --- | --- | ---
  arrayFilters | array | An array of filter documents that determines which array elements to modify for an update operation on an array field. See » Specify arrayFilters for Array Update Operations in the MongoDB manual for more information.
  collation | array|object | » Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the `"locale"` field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document. If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons. This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.
  hint | string|array|object | Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.
  sort | array|object | Specify which document the operation updates if the query matches multiple documents. The first document matched by the sort order will be updated.
  upsert | bool | If `filter` does not match an existing document, insert a single document. The document will be created by applying operators in `update` to any field values in `filter`. | `false`

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommand::updateOne() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 2]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    ?>

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand::replaceOne() - Add a replaceOne operation
- MongoDB\Driver\BulkWriteCommand::updateMany() - Add an updateMany operation
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\BulkWriteCommandResult

## İçindekiler

- MongoDB\Driver\BulkWriteCommand::__construct — Create a new BulkWriteCommand
- MongoDB\Driver\BulkWriteCommand::count — Count number of write operations in the BulkWriteCommand
- MongoDB\Driver\BulkWriteCommand::deleteMany — Add a deleteMany operation
- MongoDB\Driver\BulkWriteCommand::deleteOne — Add a deleteOne operation
- MongoDB\Driver\BulkWriteCommand::insertOne — Add an insertOne operation
- MongoDB\Driver\BulkWriteCommand::replaceOne — Add a replaceOne operation
- MongoDB\Driver\BulkWriteCommand::updateMany — Add an updateMany operation
- MongoDB\Driver\BulkWriteCommand::updateOne — Add an updateOne operation

# The MongoDB\Driver\Session class

(mongodb >=1.4.0)

## Giriş

The MongoDB\Driver\Session class represents a client session and is returned by MongoDB\Driver\Manager::startSession(). Commands, queries, and write operations may then be associated with the session.

## Sınıf Sözdizimi

final class MongoDB\Driver\Session {
/* Sabitler */
const string TRANSACTION_NONE = none;
const string TRANSACTION_STARTING = starting;
const string TRANSACTION_IN_PROGRESS = in_progress;
const string TRANSACTION_COMMITTED = committed;
const string TRANSACTION_ABORTED = aborted;
/* Yöntemler */
final public function abortTransaction(): void
final public function advanceClusterTime(array|object `$clusterTime`): void
final public function advanceOperationTime(MongoDB\BSON\TimestampInterface `$operationTime`): void
final public function commitTransaction(): void
final private function __construct()
final public function endSession(): void
final public function getClusterTime(): ?object
final public function getLogicalSessionId(): object
final public function getOperationTime(): ?MongoDB\BSON\Timestamp
final public function getServer(): ?MongoDB\Driver\Server
final public function getTransactionOptions(): ?array
final public function getTransactionState(): string
final public function isDirty(): bool
final public function isInTransaction(): bool
final public function startTransaction(?array `$options` = `null`): void
}

## Öntanımlı Sabitler

`MongoDB\Driver\Session::TRANSACTION_NONE`
  There is no transaction in progress.
`MongoDB\Driver\Session::TRANSACTION_STARTING`
  A transaction has been started, but no operation has been sent to the server.
`MongoDB\Driver\Session::TRANSACTION_IN_PROGRESS`
  A transaction is in progress.
`MongoDB\Driver\Session::TRANSACTION_COMMITTED`
  The transaction was committed.
`MongoDB\Driver\Session::TRANSACTION_ABORTED`
  The transaction was aborted.

# MongoDB\Driver\Session::abortTransaction

(mongodb >=1.5.0)

MongoDB\Driver\Session::abortTransaction — Aborts a transaction

### Açıklama

final public function MongoDB\Driver\Session::abortTransaction(): void

Terminates the multi-document transaction and rolls back any data changes made by the operations within the transaction. That is, the transaction ends without saving any of the changes made by the operations in the transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the transaction could not be aborted (e.g. a transaction was not started).

### Ayrıca Bakınız

- MongoDB\Driver\Manager::startSession() - Start a new client session for use with this client
- MongoDB\Driver\Session::commitTransaction() - Commits a transaction
- MongoDB\Driver\Session::startTransaction() - Starts a transaction

# MongoDB\Driver\Session::advanceClusterTime

(mongodb >=1.4.0)

MongoDB\Driver\Session::advanceClusterTime — Advances the cluster time for this session

### Açıklama

final public function MongoDB\Driver\Session::advanceClusterTime(array|object `$clusterTime`): void

Advances the cluster time for this session. If the cluster time is less than or equal to the session's current cluster time, this function is a no-op.

By using this method in conjunction with MongoDB\Driver\Session::advanceOperationTime() to copy the cluster and operation times from another session, you can ensure that operations in this session are causally consistent with the last operation in the other session.

### Bağımsız Değişkenler

`clusterTime`
  The cluster time is a document containing a logical timestamp and server signature. Typically, this value will be obtained by calling MongoDB\Driver\Session::getClusterTime() on another session object.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::advanceOperationTime() - Advances the operation time for this session
- MongoDB\Driver\Session::getClusterTime() - Returns the cluster time for this session

# MongoDB\Driver\Session::advanceOperationTime

(mongodb >=1.4.0)

MongoDB\Driver\Session::advanceOperationTime — Advances the operation time for this session

### Açıklama

final public function MongoDB\Driver\Session::advanceOperationTime(MongoDB\BSON\TimestampInterface `$operationTime`): void

Advances the operation time for this session. If the operation time is less than or equal to the session's current operation time, this function is a no-op.

By using this method in conjunction with MongoDB\Driver\Session::advanceClusterTime() to copy the operation and cluster times from another session, you can ensure that operations in this session are causally consistent with the last operation in the other session.

### Bağımsız Değişkenler

`operationTime`
  The operation time is a logical timestamp. Typically, this value will be obtained by calling MongoDB\Driver\Session::getOperationTime() on another session object.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::advanceClusterTime() - Advances the cluster time for this session
- MongoDB\Driver\Session::getClusterTime() - Returns the cluster time for this session

# MongoDB\Driver\Session::commitTransaction

(mongodb >=1.5.0)

MongoDB\Driver\Session::commitTransaction — Commits a transaction

### Açıklama

final public function MongoDB\Driver\Session::commitTransaction(): void

Saves the changes made by the operations in the multi-document transaction and ends the transaction. Until the commit, none of the data changes made from within the transaction are visible outside the transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\CommandException if the server could not commit the transaction (e.g. due to conflicts, network issues). In case the exception's MongoDB\Driver\Exception\CommandException::getResultDocument() has a `"errorLabels"` element, and this array contains a `"TransientTransactionError"` or `"UnknownTransactionCommitResult"` value, it is safe to re-try the whole transaction. In newer versions of the extension, MongoDB\Driver\Exception\RuntimeException::hasErrorLabel() should be used to test for this situation instead.
- Throws MongoDB\Driver\Exception\RuntimeException if the transaction could not be committed (e.g. a transaction was not started).

### Ayrıca Bakınız

- MongoDB\Driver\Manager::startSession() - Start a new client session for use with this client
- MongoDB\Driver\Session::abortTransaction() - Aborts a transaction
- MongoDB\Driver\Session::startTransaction() - Starts a transaction
- MongoDB\Driver\Exception\RuntimeException::hasErrorLabel() - Returns whether an error label is associated with an exception

# MongoDB\Driver\Session::__construct

(mongodb >=1.4.0)

MongoDB\Driver\Session::__construct — Create a new Session (not used)

### Açıklama

final private function MongoDB\Driver\Session::__construct()

MongoDB\Driver\Session objects are returned by MongoDB\Driver\Manager::startSession() and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::startSession() - Start a new client session for use with this client

# MongoDB\Driver\Session::endSession

(mongodb >=1.5.0)

MongoDB\Driver\Session::endSession — Terminates a session

### Açıklama

final public function MongoDB\Driver\Session::endSession(): void

This method closes an existing session. If a transaction was associated with this session, the transaction will be aborted. After calling this method, applications should not invoke other methods on the session.

> Bilginize: Sessions are also closed during garbage collection. It should not be necessary to call this method under normal circumstances.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::startSession() - Start a new client session for use with this client
- MongoDB\Driver\Session::abortTransaction() - Aborts a transaction
- MongoDB\Driver\Session::commitTransaction() - Commits a transaction
- MongoDB\Driver\Session::startTransaction() - Starts a transaction

# MongoDB\Driver\Session::getClusterTime

(mongodb >=1.4.0)

MongoDB\Driver\Session::getClusterTime — Returns the cluster time for this session

### Açıklama

final public function MongoDB\Driver\Session::getClusterTime(): ?object

Returns the cluster time for this session. If the session has not been used for any operation and MongoDB\Driver\Session::advanceClusterTime() has not been called, the cluster time will be `null`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the cluster time for this session, or `null` if the session has no cluster time.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::advanceClusterTime() - Advances the cluster time for this session

# MongoDB\Driver\Session::getLogicalSessionId

(mongodb >=1.4.0)

MongoDB\Driver\Session::getLogicalSessionId — Returns the logical session ID for this session

### Açıklama

final public function MongoDB\Driver\Session::getLogicalSessionId(): object

Returns the logical session ID for this session, which may be used to identify this session's operations on the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the logical session ID for this session.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Session::getOperationTime

(mongodb >=1.4.0)

MongoDB\Driver\Session::getOperationTime — Returns the operation time for this session

### Açıklama

final public function MongoDB\Driver\Session::getOperationTime(): ?MongoDB\BSON\Timestamp

Returns the operation time for this session. If the session has not been used for any operation and MongoDB\Driver\Session::advanceOperationTime() has not been called, the operation time will be `null`

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the operation time for this session, or `null` if the session has no operation time.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::advanceOperationTime() - Advances the operation time for this session

# MongoDB\Driver\Session::getServer

(mongodb >=1.6.0)

MongoDB\Driver\Session::getServer — Returns the server to which this session is pinned

### Açıklama

final public function MongoDB\Driver\Session::getServer(): ?MongoDB\Driver\Server

Returns the MongoDB\Driver\Server to which this session is pinned. If the session is not pinned to a server, `null` will be returned.

Session pinning is primarily used for sharded transactions, as all commands within a sharded transaction must be sent to the same mongos instance. This method is intended to be used by libraries built atop the extension to allow use of a pinned server instead of invoking server selection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server to which this session is pinned, or `null` if the session is not pinned to any server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Session::getTransactionOptions

(mongodb >=1.7.0)

MongoDB\Driver\Session::getTransactionOptions — Returns options for the currently running transaction

### Açıklama

final public function MongoDB\Driver\Session::getTransactionOptions(): ?array

Returns options for the currently running transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a array containing current transaction options, or `null` if no transaction is running.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::getTransactionState() - Returns the current transaction state for this session

# MongoDB\Driver\Session::getTransactionState

(mongodb >=1.7.0)

MongoDB\Driver\Session::getTransactionState — Returns the current transaction state for this session

### Açıklama

final public function MongoDB\Driver\Session::getTransactionState(): string

Returns the transaction state for this session.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the current transaction state for this session.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::isInTransaction() - Returns whether a multi-document transaction is in progress
- MongoDB\Driver\Session::getTransactionOptions() - Returns options for the currently running transaction

# MongoDB\Driver\Session::isDirty

(mongodb >=1.13.0)

MongoDB\Driver\Session::isDirty — Returns whether the session has been marked as dirty

### Açıklama

final public function MongoDB\Driver\Session::isDirty(): bool

Returns whether the session has been marked as dirty (i.e. it has been used with a command that encountered a network error).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns whether the session has been marked as dirty.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Session::isInTransaction

(mongodb >=1.6.0)

MongoDB\Driver\Session::isInTransaction — Returns whether a multi-document transaction is in progress

### Açıklama

final public function MongoDB\Driver\Session::isInTransaction(): bool

Returns whether a multi-document transaction is currently in progress for this session. A transaction is considered "in progress" if it has been started but has not been committed or aborted.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if a transaction is currently in progress for this session, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Session::getTransactionState() - Returns the current transaction state for this session

# MongoDB\Driver\Session::startTransaction

(mongodb >=1.5.0)

MongoDB\Driver\Session::startTransaction — Starts a transaction

### Açıklama

final public function MongoDB\Driver\Session::startTransaction(?array `$options` = `null`): void

Starts a multi-document transaction associated with the session. At any given time, you can have at most one open transaction for a session. After starting a transaction, the session object must be passed to each operation via the `"session"` option (e.g. MongoDB\Driver\Manager::executeBulkWrite()) in order to associate that operation with the transaction.

Transactions can be committed through MongoDB\Driver\Session::commitTransaction(), and aborted with MongoDB\Driver\Session::abortTransaction(). Transactions are also automatically aborted when the session is closed from garbage collection or by explicitly calling MongoDB\Driver\Session::endSession().

### Bağımsız Değişkenler

`options`
  Options can be passed as argument to this method. Each element in this options array overrides the corresponding option from the `"defaultTransactionOptions"` option, if set when starting the session with MongoDB\Driver\Manager::startSession().

  options
  Option | Type | Description
  --- | --- | ---
  maxCommitTimeMS | int | The maximum amount of time in milliseconds to allow a single `commitTransaction` command to run. If specified, `maxCommitTimeMS` must be a signed 32-bit integer greater than or equal to zero.
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\CommandException if the transaction could not be started because of a server-side problem (e.g. a lock could not be obtained).
- Throws MongoDB\Driver\Exception\RuntimeException if the transaction could not be started (e.g. a transaction was already started).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.6.0 | The `"maxCommitTimeMS"` option was added.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::startSession() - Start a new client session for use with this client
- MongoDB\Driver\Session::commitTransaction() - Commits a transaction
- MongoDB\Driver\Session::abortTransaction() - Aborts a transaction

## İçindekiler

- MongoDB\Driver\Session::abortTransaction — Aborts a transaction
- MongoDB\Driver\Session::advanceClusterTime — Advances the cluster time for this session
- MongoDB\Driver\Session::advanceOperationTime — Advances the operation time for this session
- MongoDB\Driver\Session::commitTransaction — Commits a transaction
- MongoDB\Driver\Session::__construct — Create a new Session (not used)
- MongoDB\Driver\Session::endSession — Terminates a session
- MongoDB\Driver\Session::getClusterTime — Returns the cluster time for this session
- MongoDB\Driver\Session::getLogicalSessionId — Returns the logical session ID for this session
- MongoDB\Driver\Session::getOperationTime — Returns the operation time for this session
- MongoDB\Driver\Session::getServer — Returns the server to which this session is pinned
- MongoDB\Driver\Session::getTransactionOptions — Returns options for the currently running transaction
- MongoDB\Driver\Session::getTransactionState — Returns the current transaction state for this session
- MongoDB\Driver\Session::isDirty — Returns whether the session has been marked as dirty
- MongoDB\Driver\Session::isInTransaction — Returns whether a multi-document transaction is in progress
- MongoDB\Driver\Session::startTransaction — Starts a transaction

# The MongoDB\Driver\ClientEncryption class

(mongodb >=1.7.0)

## Giriş

The MongoDB\Driver\ClientEncryption class handles creation of data keys for client-side encryption, as well as manually encrypting and decrypting values.

## Sınıf Sözdizimi

final class MongoDB\Driver\ClientEncryption {
/* Sabitler */
const string AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC = AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic;
const string AEAD_AES_256_CBC_HMAC_SHA_512_RANDOM = AEAD_AES_256_CBC_HMAC_SHA_512-Random;
const string ALGORITHM_INDEXED = Indexed;
const string ALGORITHM_UNINDEXED = Unindexed;
const string ALGORITHM_RANGE = Range;
const string QUERY_TYPE_EQUALITY = equality;
const string QUERY_TYPE_RANGE = range;
/* Yöntemler */
final public function addKeyAltName(MongoDB\BSON\Binary `$keyId`, string `$keyAltName`): ?object
final public function __construct(array `$options`)
final public function createDataKey(string `$kmsProvider`, ?array `$options` = `null`): MongoDB\BSON\Binary
final public function decrypt(MongoDB\BSON\Binary `$value`): mixed
final public function deleteKey(MongoDB\BSON\Binary `$keyId`): object
final public function encrypt(mixed `$value`, ?array `$options` = `null`): MongoDB\BSON\Binary
final public function encryptExpression(array|object `$expr`, ?array `$options` = `null`): object
final public function getKey(MongoDB\BSON\Binary `$keyId`): ?object
final public function getKeyByAltName(string `$keyAltName`): ?object
final public function getKeys(): MongoDB\Driver\Cursor
final public function removeKeyAltName(MongoDB\BSON\Binary `$keyId`, string `$keyAltName`): ?object
final public function rewrapManyDataKey(array|object `$filter`, ?array `$options` = `null`): object
}

## Öntanımlı Sabitler

`MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC`
  Specifies an algorithm for » deterministic encryption, which is suitable for querying.
`MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_RANDOM`
  Specifies an algorithm for » randomized encryption
`MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED`
  Specifies an algorithm for an indexed, encrypted payload, which can be used with queryable encryption. To insert or query with an indexed, encrypted payload, the MongoDB\Driver\Manager must be configured with the `"autoEncryption"` driver option. The `"bypassQueryAnalysis"` auto encryption option may be `true`. The `"bypassAutoEncryption"` auto encryption option must be `false`.
`MongoDB\Driver\ClientEncryption::ALGORITHM_UNINDEXED`
  Specifies an algorithm for an unindexed, encrypted payload.
`MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`
  Specifies an algorithm for a range encrypted payload, which can be used with queryable encryption. To query with a range encrypted payload, the MongoDB\Driver\Manager must be configured with the `"autoEncryption"` driver option. The `"bypassQueryAnalysis"` auto encryption option may be `true`. The `"bypassAutoEncryption"` auto encryption option must be `false`.

  > Bilginize: The extension does not yet support range queries for Decimal128 BSON field types.

`MongoDB\Driver\ClientEncryption::QUERY_TYPE_EQUALITY`
  Specifies an equality query type, which is used in conjunction with `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED`.
`MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE`
  Specifies a range query type, which is used in conjunction with `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Removed `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW` and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW`.
PECL mongodb 1.20.0 | Added `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE` and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE`. Deprecated `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW` and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW`.
PECL mongodb 1.16.0 | Added `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE_PREVIEW` and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW`.
PECL mongodb 1.14.0 | Added `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED`, `MongoDB\Driver\ClientEncryption::ALGORITHM_UNINDEXED`, and `MongoDB\Driver\ClientEncryption::QUERY_TYPE_EQUALITY`.

## Ayrıca Bakınız

- MongoDB\Driver\Manager::createClientEncryption()

# MongoDB\Driver\ClientEncryption::addKeyAltName

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::addKeyAltName — Adds an alternate name to a key document

### Açıklama

final public function MongoDB\Driver\ClientEncryption::addKeyAltName(MongoDB\BSON\Binary `$keyId`, string `$keyAltName`): ?object

Adds `keyAltName` to the set of alternate names for the key document with the given UUID `keyId`.

### Bağımsız Değişkenler

`keyId`
  A MongoDB\BSON\Binary instance with subtype 4 (UUID) identifying the key document.
`keyAltName`
  Alternate name to add to the key document.

### Dönen Değerler

Returns the previous version of the key document, or `null` if no document matched.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::getKeyByAltName() - Gets a key document by an alternate name
- MongoDB\Driver\ClientEncryption::removeKeyAltName() - Removes an alternate name from a key document

# MongoDB\Driver\ClientEncryption::__construct

(mongodb >=1.14.0)

MongoDB\Driver\ClientEncryption::__construct — Create a new ClientEncryption object

### Açıklama

final public function MongoDB\Driver\ClientEncryption::__construct(array `$options`)

Constructs a new MongoDB\Driver\ClientEncryption object with the specified options.

### Bağımsız Değişkenler

`options`

  options
  Option | Type | Description
  --- | --- | ---
  keyVaultClient | MongoDB\Driver\Manager | The Manager used to route data key queries. This option is required (unlike with MongoDB\Driver\Manager::createClientEncryption()).
  keyVaultNamespace | string | A fully qualified namespace (e.g. `"databaseName.collectionName"`) denoting the collection that contains all data keys used for encryption and decryption. This option is required.
  kmsProviders | array | A document containing the configuration for one or more KMS providers, which are used to encrypt data keys. Supported providers include `"aws"`, `"azure"`, `"gcp"`, `"kmip"`, and `"local"` and at least one must be specified. If an empty document is specified for `"aws"`, `"azure"`, or `"gcp"`, the driver will attempt to configure the provider using » Automatic Credentials. The format for `"aws"` is as follows:
      aws: {
          accessKeyId: <string>,
          secretAccessKey: <string>,
          sessionToken: <optional string>
      }
  The format for `"azure"` is as follows:
      azure: {
          tenantId: <string>,
          clientId: <string>,
          clientSecret: <string>,
          identityPlatformEndpoint: <optional string> // Defaults to "login.microsoftonline.com"

      }
  The format for `"gcp"` is as follows:
      gcp: {
          email: <string>,
          privateKey: <base64 string>|<MongoDB\BSON\Binary>,
          endpoint: <optional string> // Defaults to "oauth2.googleapis.com"
      }
  The format for `"kmip"` is as follows:
      kmip: {
          endpoint: <string>
      }
  The format for `"local"` is as follows:
      local: {
          // 96-byte master key used to encrypt/decrypt data keys
          key: <base64 string>|<MongoDB\BSON\Binary>
      }
  tlsOptions | array | A document containing the TLS configuration for one or more KMS providers. Supported providers include `"aws"`, `"azure"`, `"gcp"`, and `"kmip"`. All providers support the following options:
      <provider>: {
          tlsCaFile: <optional string>,
          tlsCertificateKeyFile: <optional string>,
          tlsCertificateKeyFilePassword: <optional string>,
          tlsDisableOCSPEndpointCheck: <optional bool>
      }

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the extension was compiled without libmongocrypt support

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.16.0 | The AWS KMS provider for client-side encryption now accepts a `"sessionToken"` option, which can be used to authenticate with temporary AWS credentials. Added `"tlsDisableOCSPEndpointCheck"` to the `"tlsOptions"` option. If an empty document is specified for the `"azure"` or `"gcp"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.
PECL mongodb 1.15.0 | If an empty document is specified for the `"aws"` KMS provider, the driver will attempt to configure the provider using » Automatic Credentials.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::createClientEncryption() - Create a new ClientEncryption object
- » Explicit (Manual) Client-Side Field Level Encryption in the MongoDB manual

# MongoDB\Driver\ClientEncryption::createDataKey

(mongodb >=1.7.0)

MongoDB\Driver\ClientEncryption::createDataKey — Creates a key document

### Açıklama

final public function MongoDB\Driver\ClientEncryption::createDataKey(string `$kmsProvider`, ?array `$options` = `null`): MongoDB\BSON\Binary

Creates a new key document and inserts it into the key vault collection.

### Bağımsız Değişkenler

`kmsProvider`
  The KMS provider (e.g. `"local"`, `"aws"`) that will be used to encrypt the new data key.
`options`

  Data key options
  Option | Type | Description
  --- | --- | ---
  masterKey | array | The masterKey document identifies a KMS-specific key used to encrypt the new data key. This option is required unless `kmsProvider` is `"local"`.
  `"aws"` provider options
  Option | Type | Description
  --- | --- | ---
  region | string | Required.
  key | string | Required. The Amazon Resource Name (ARN) to the AWS customer master key (CMK).
  endpoint | string | Optional. An alternate host identifier to send KMS requests to. May include port number.
  `"azure"` provider options
  Option | Type | Description
  --- | --- | ---
  keyVaultEndpoint | string | Required. Host with optional port (e.g. "example.vault.azure.net").
  keyName | string | Required.
  keyVersion | string | Optional. A specific version of the named key. Defaults to using the key's primary version.
  `"gcp"` provider options
  Option | Type | Description
  --- | --- | ---
  projectId | string | Required.
  location | string | Required.
  keyRing | string | Required.
  keyName | string | Required.
  keyVersion | string | Optional. A specific version of the named key. Defaults to using the key's primary version.
  endpoint | string | Optional. Host with optional port. Defaults to "cloudkms.googleapis.com".
  `"kmip"` provider options
  Option | Type | Description
  --- | --- | ---
  keyId | string | Optional. Unique identifier to a 96-byte KMIP secret data managed object. If unspecified, the driver creates a random 96-byte KMIP secret data managed object.
  endpoint | string | Optional. Host with optional port.
  keyAltNames | array | An optional list of string alternate names used to reference a key. If a key is created with alternate names, then encryption may refer to the key by the unique alternate name instead of by `_id`.
  keyMaterial | MongoDB\BSON\Binary | An optional 96-byte value to use as custom key material for the data key being created. If keyMaterial is given, the custom key material is used for encrypting and decrypting data. Otherwise, the key material for the new data key is generated from a cryptographically secure random device.

### Dönen Değerler

Returns the identifier of the new key as a MongoDB\BSON\Binary object with subtype 4 (UUID).

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.20.0 | Added `"delegated"` to the KMIP provider masterKey options.
PECL mongodb 1.15.0 | Added the `"keyMaterial"` option.
PECL mongodb 1.10.0 | Azure and GCP are now supported as KMS providers for client-side encryption.

# MongoDB\Driver\ClientEncryption::decrypt

(mongodb >=1.7.0)

MongoDB\Driver\ClientEncryption::decrypt — Decrypt a value

### Açıklama

final public function MongoDB\Driver\ClientEncryption::decrypt(MongoDB\BSON\Binary `$value`): mixed

Decrypts the value.

### Bağımsız Değişkenler

`value`
  A MongoDB\BSON\Binary instance with subtype 6 containing the encrypted value.

### Dönen Değerler

Returns the decrypted value as it was passed to MongoDB\Driver\ClientEncryption::encrypt().

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\EncryptionException if an error occurs while decrypting the value

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::encrypt() - Encrypt a value

# MongoDB\Driver\ClientEncryption::deleteKey

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::deleteKey — Deletes a key document

### Açıklama

final public function MongoDB\Driver\ClientEncryption::deleteKey(MongoDB\BSON\Binary `$keyId`): object

Removes the key document with the given UUID `keyId` from the key vault collection.

### Bağımsız Değişkenler

`keyId`
  A MongoDB\BSON\Binary instance with subtype 4 (UUID) identifying the key document.

### Dönen Değerler

Returns the result of the internal `deleteOne` operation on the key vault collection.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

# MongoDB\Driver\ClientEncryption::encrypt

(mongodb >=1.7.0)

MongoDB\Driver\ClientEncryption::encrypt — Encrypt a value

### Açıklama

final public function MongoDB\Driver\ClientEncryption::encrypt(mixed `$value`, ?array `$options` = `null`): MongoDB\BSON\Binary

Encrypts the value.

### Bağımsız Değişkenler

`value`
  The value to be encrypted. Any value that can be inserted into MongoDB can be encrypted using this method.
`options`

  Encryption options
  Option | Type | Description
  --- | --- | ---
  algorithm | string | The encryption algorithm to be used. This option is required. Specify one of the following ClientEncryption constants: `MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC` `MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_RANDOM` `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` `MongoDB\Driver\ClientEncryption::ALGORITHM_UNINDEXED` `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`
  contentionFactor | int | The contention factor for evaluating queries with indexed, encrypted payloads. This option only applies and may only be specified when `algorithm` is `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` or `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`.
  keyAltName | string | Identifies a key vault collection document by `keyAltName`. This option is mutually exclusive with `keyId` and exactly one is required.
  keyId | MongoDB\BSON\Binary | Identifies a data key by `_id`. The value is a UUID (binary subtype 4). This option is mutually exclusive with `keyAltName` and exactly one is required.
  queryType | string | The query type for evaluating queries with indexed, encrypted payloads. Specify one of the following ClientEncryption constants: `MongoDB\Driver\ClientEncryption::QUERY_TYPE_EQUALITY` `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW` This option only applies and may only be specified when `algorithm` is `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` or `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`.
  rangeOpts | array | Index options for a queryable encryption field supporting "range" queries. The options below must match the values set in the `encryptedFields` of the target collection. For double and decimal128 BSON field types, `min`,
  Range index options
  Option | Type | Description
  --- | --- | ---
  min | mixed | Required if `precision` is set. The minimum BSON value of the range.
  max | mixed | Required if `precision` is set. The maximum BSON value of the range.
  sparsity | int | Optional. Positive 64-bit integer.
  precision | int | Optional. Positive 32-bit integer specifying precision to use for explicit encryption. May only be set for double or decimal128 BSON field types.
  trimFactor | int | Optional. Positive 32-bit integer.

### Dönen Değerler

Returns the encrypted value as MongoDB\BSON\Binary object with subtype 6.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\EncryptionException if an error occurs while encrypting the value

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.20.0 | Added the `"trimFactor"` range option. The `"sparsity"` range option is now optional.
PECL mongodb 1.16.0 | Added the `"rangeOpts"` option.
PECL mongodb 1.14.0 | Added the `"contentionFactor"` and `"queryType"` options.

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::decrypt() - Decrypt a value
- MongoDB\Driver\ClientEncryption::encryptExpression() - Encrypts a match or aggregate expression

# MongoDB\Driver\ClientEncryption::encryptExpression

(mongodb >=1.16.0)

MongoDB\Driver\ClientEncryption::encryptExpression — Encrypts a match or aggregate expression

### Açıklama

final public function MongoDB\Driver\ClientEncryption::encryptExpression(array|object `$expr`, ?array `$options` = `null`): object

Encrypts a match or aggregate expression to query a range index.

To query with a range encrypted payload, the MongoDB\Driver\Manager must be configured with the `"autoEncryption"` driver option. The `"bypassQueryAnalysis"` auto encryption option may be `true`. The `"bypassAutoEncryption"` auto encryption option must be `false`.

> Bilginize: The extension does not yet support range queries for Decimal128 BSON field types.

### Bağımsız Değişkenler

`expr`
  The match or aggregate expression to be encrypted. Expressions must use at least one of the `$gt`, `$gte`, `$lt`, or `$lte` operators. A top-level `$and` operator is required, even if only a single comparison operator is used. An example of a supported match expression (applies to queries and the `$match` aggregation stage) is as follows:

      [
          '$and' => [
              [ '<field>' => [ '$gt'  => '<value1>' ] ],
              [ '<field>' => [ '$lte' => '<value2>' ] ],
          ],
      ]

  An example of a supported aggregate expression is as follows:

      [
          '$and' => [
              [ '$gte' => [ '<fieldPath>', '<value1>' ] ],
              [ '$lt'  => [ '<fieldPath>', '<value2>' ] ],
          ],
      ]

`options`

  Encryption options
  Option | Type | Description
  --- | --- | ---
  algorithm | string | The encryption algorithm to be used. This option is required. Specify one of the following ClientEncryption constants: `MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_DETERMINISTIC` `MongoDB\Driver\ClientEncryption::AEAD_AES_256_CBC_HMAC_SHA_512_RANDOM` `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` `MongoDB\Driver\ClientEncryption::ALGORITHM_UNINDEXED` `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`
  contentionFactor | int | The contention factor for evaluating queries with indexed, encrypted payloads. This option only applies and may only be specified when `algorithm` is `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` or `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`.
  keyAltName | string | Identifies a key vault collection document by `keyAltName`. This option is mutually exclusive with `keyId` and exactly one is required.
  keyId | MongoDB\BSON\Binary | Identifies a data key by `_id`. The value is a UUID (binary subtype 4). This option is mutually exclusive with `keyAltName` and exactly one is required.
  queryType | string | The query type for evaluating queries with indexed, encrypted payloads. Specify one of the following ClientEncryption constants: `MongoDB\Driver\ClientEncryption::QUERY_TYPE_EQUALITY` `MongoDB\Driver\ClientEncryption::QUERY_TYPE_RANGE_PREVIEW` This option only applies and may only be specified when `algorithm` is `MongoDB\Driver\ClientEncryption::ALGORITHM_INDEXED` or `MongoDB\Driver\ClientEncryption::ALGORITHM_RANGE`.
  rangeOpts | array | Index options for a queryable encryption field supporting "range" queries. The options below must match the values set in the `encryptedFields` of the target collection. For double and decimal128 BSON field types, `min`,
  Range index options
  Option | Type | Description
  --- | --- | ---
  min | mixed | Required if `precision` is set. The minimum BSON value of the range.
  max | mixed | Required if `precision` is set. The maximum BSON value of the range.
  sparsity | int | Optional. Positive 64-bit integer.
  precision | int | Optional. Positive 32-bit integer specifying precision to use for explicit encryption. May only be set for double or decimal128 BSON field types.
  trimFactor | int | Optional. Positive 32-bit integer.

### Dönen Değerler

Returns the encrypted expression as an object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\EncryptionException if an error occurs while encrypting the expression

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.20.0 | Added the `"trimFactor"` range option. The `"sparsity"` range option is now optional.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager
- MongoDB\Driver\ClientEncryption::encrypt() - Encrypt a value

# MongoDB\Driver\ClientEncryption::getKey

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::getKey — Gets a key document

### Açıklama

final public function MongoDB\Driver\ClientEncryption::getKey(MongoDB\BSON\Binary `$keyId`): ?object

Finds a single key document in the key vault collection with the given UUID `keyId`.

### Bağımsız Değişkenler

`keyId`
  A MongoDB\BSON\Binary instance with subtype 4 (UUID) identifying the key document.

### Dönen Değerler

Returns the key document, or `null` if no document matched.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

# MongoDB\Driver\ClientEncryption::getKeyByAltName

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::getKeyByAltName — Gets a key document by an alternate name

### Açıklama

final public function MongoDB\Driver\ClientEncryption::getKeyByAltName(string `$keyAltName`): ?object

Finds a single key document in the key vault collection with the given alternate name `keyAltName`.

### Bağımsız Değişkenler

`keyAltName`
  Alternate name for the key document.

### Dönen Değerler

Returns the key document, or `null` if no document matched.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::addKeyAltName() - Adds an alternate name to a key document
- MongoDB\Driver\ClientEncryption::removeKeyAltName() - Removes an alternate name from a key document

# MongoDB\Driver\ClientEncryption::getKeys

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::getKeys — Gets all key documents

### Açıklama

final public function MongoDB\Driver\ClientEncryption::getKeys(): MongoDB\Driver\Cursor

Finds all key documents in the key vault collection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

# MongoDB\Driver\ClientEncryption::removeKeyAltName

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::removeKeyAltName — Removes an alternate name from a key document

### Açıklama

final public function MongoDB\Driver\ClientEncryption::removeKeyAltName(MongoDB\BSON\Binary `$keyId`, string `$keyAltName`): ?object

Removes `keyAltName` from the set of alternate names for the key document with the given UUID `keyId`.

### Bağımsız Değişkenler

`keyId`
  A MongoDB\BSON\Binary instance with subtype 4 (UUID) identifying the key document.
`keyAltName`
  Alternate name to remove from the key document.

### Dönen Değerler

Returns the previous version of the key document, or `null` if no document matched.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Ayrıca Bakınız

- MongoDB\Driver\ClientEncryption::addKeyAltName() - Adds an alternate name to a key document
- MongoDB\Driver\ClientEncryption::getKeyByAltName() - Gets a key document by an alternate name

# MongoDB\Driver\ClientEncryption::rewrapManyDataKey

(mongodb >=1.15.0)

MongoDB\Driver\ClientEncryption::rewrapManyDataKey — Rewraps data keys

### Açıklama

final public function MongoDB\Driver\ClientEncryption::rewrapManyDataKey(array|object `$filter`, ?array `$options` = `null`): object

Rewraps (i.e. decrypts and re-encrypts) zero or more data keys in the key vault collection that match the given `filter`.

If the `"provider"` option is not specified, matching data keys will be rewrapped with their current KMS provider. Otherwise, matching data keys will be re-encrypted according to the specified `"provider"` and `"masterKey"` options.

### Bağımsız Değişkenler

`filter` (array|object)

  The » query predicate. An empty predicate will match all documents in the collection.

  > Bilginize: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectId to match an » ObjectId).

`options`

  RewrapManyDataKey options
  Option | Type | Description
  --- | --- | ---
  provider | string | The KMS provider (e.g. `"local"`, `"aws"`) that will be used to re-encrypt the matched data keys. If a KMS provider is not specified, matched data keys will be re-encrypted with their current KMS provider.
  masterKey | array | The masterKey identifies a KMS-specific key used to encrypt the new data key. This option should not be specified without the `"provider"` option. This option is required if `"provider"` is specified and not `"local"`.
  `"aws"` provider options
  Option | Type | Description
  --- | --- | ---
  region | string | Required.
  key | string | Required. The Amazon Resource Name (ARN) to the AWS customer master key (CMK).
  endpoint | string | Optional. An alternate host identifier to send KMS requests to. May include port number.
  `"azure"` provider options
  Option | Type | Description
  --- | --- | ---
  keyVaultEndpoint | string | Required. Host with optional port (e.g. "example.vault.azure.net").
  keyName | string | Required.
  keyVersion | string | Optional. A specific version of the named key. Defaults to using the key's primary version.
  `"gcp"` provider options
  Option | Type | Description
  --- | --- | ---
  projectId | string | Required.
  location | string | Required.
  keyRing | string | Required.
  keyName | string | Required.
  keyVersion | string | Optional. A specific version of the named key. Defaults to using the key's primary version.
  endpoint | string | Optional. Host with optional port. Defaults to "cloudkms.googleapis.com".
  `"kmip"` provider options
  Option | Type | Description
  --- | --- | ---
  keyId | string | Optional. Unique identifier to a 96-byte KMIP secret data managed object. If unspecified, the driver creates a random 96-byte KMIP secret data managed object.
  endpoint | string | Optional. Host with optional port.

### Dönen Değerler

Returns an object, which will have an optional `bulkWriteResult` property containing the result of the internal `bulkWrite` operation as an object. If no data keys matched the filter or the write was unacknowledged, the `bulkWriteResult` property will be `null`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\EncryptionException if an error occurs while decrypting or re-encrypting a data key.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.20.0 | Added `"delegated"` to the KMIP provider masterKey options.

## İçindekiler

- MongoDB\Driver\ClientEncryption::addKeyAltName — Adds an alternate name to a key document
- MongoDB\Driver\ClientEncryption::__construct — Create a new ClientEncryption object
- MongoDB\Driver\ClientEncryption::createDataKey — Creates a key document
- MongoDB\Driver\ClientEncryption::decrypt — Decrypt a value
- MongoDB\Driver\ClientEncryption::deleteKey — Deletes a key document
- MongoDB\Driver\ClientEncryption::encrypt — Encrypt a value
- MongoDB\Driver\ClientEncryption::encryptExpression — Encrypts a match or aggregate expression
- MongoDB\Driver\ClientEncryption::getKey — Gets a key document
- MongoDB\Driver\ClientEncryption::getKeyByAltName — Gets a key document by an alternate name
- MongoDB\Driver\ClientEncryption::getKeys — Gets all key documents
- MongoDB\Driver\ClientEncryption::removeKeyAltName — Removes an alternate name from a key document
- MongoDB\Driver\ClientEncryption::rewrapManyDataKey — Rewraps data keys

# The MongoDB\Driver\ServerApi class

(mongodb >=1.10.0)

## Giriş

## Sınıf Sözdizimi

final class MongoDB\Driver\ServerApi implements MongoDB\BSON\Serializable, Serializable {
/* Sabitler */
const string MongoDB\Driver\ServerAPI::V1 = "1";
/* Yöntemler */
final public function bsonSerialize(): stdClass
final public function __construct(string `$version`, ?bool `$strict` = `null`, ?bool `$deprecationErrors` = `null`)
}

## Öntanımlı Sabitler

`MongoDB\Driver\ServerApi::V1`
  Server API version 1.

## Örnekler

Örnek 1 Declare an API version on a manager

    <?php

    use MongoDB\Driver\Manager;
    use MongoDB\Driver\ServerApi;

    $v1 = new ServerApi(ServerApi::v1);
    $manager = new Manager('mongodb://localhost:27017', [], ['serverApi' => $v1]);

    $command = new MongoDB\Driver\Command(['buildInfo' => 1]);

    try {
        $cursor = $manager->executeCommand('admin', $command);
    } catch(MongoDB\Driver\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }

    /* The buildInfo command returns a single result document, so we need to access
     * the first result in the cursor. */
    $buildInfo = $cursor->toArray()[0];

    echo $buildInfo->version, "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    4.9.0-alpha7-49-gb968ca0

Örnek 2 Declare a strict API version on a manager

The following example sets the `strict` flag, which tells the server to reject any command that is not part of the declared API version. This results in an error when running the buildInfo command.

    <?php

    use MongoDB\Driver\Manager;
    use MongoDB\Driver\ServerApi;

    $v1 = new ServerApi(ServerApi::v1, true);
    $manager = new Manager('mongodb://localhost:27017', [], ['serverApi' => $v1]);

    $command = new MongoDB\Driver\Command(['buildInfo' => 1]);

    try {
        $cursor = $manager->executeCommand('admin', $command);
    } catch(MongoDB\Driver\Exception $e) {
        echo $e->getMessage(), "\n";
        exit;
    }

    /* The buildInfo command returns a single result document, so we need to access
     * the first result in the cursor. */
    $buildInfo = $cursor->toArray()[0];

    echo $buildInfo->version, "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    Provided apiStrict:true, but the command buildInfo is not in API Version 1

# MongoDB\Driver\ServerApi::bsonSerialize

(mongodb >=1.10.0)

MongoDB\Driver\ServerApi::bsonSerialize — Returns an object for BSON serialization

### Açıklama

final public function MongoDB\Driver\ServerApi::bsonSerialize(): stdClass

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an object for serializing the ServerApi as BSON.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON

# MongoDB\Driver\ServerApi::__construct

(mongodb >=1.10.0)

MongoDB\Driver\ServerApi::__construct — Create a new ServerApi instance

### Açıklama

final public function MongoDB\Driver\ServerApi::__construct(string `$version`, ?bool `$strict` = `null`, ?bool `$deprecationErrors` = `null`)

Creates a new MongoDB\Driver\ServerApi instance used to declare an API version when creating a MongoDB\Driver\Manager.

### Bağımsız Değişkenler

`version`
  A server API version. Supported API versions are provided as constants in MongoDB\Driver\ServerApi. The only supported API version is `MongoDB\Driver\ServerApi::V1`.
`strict`
  If the `strict` parameter is set to `true`, the server will yield an error for any command that is not part of the specified API version. If no value is provided, the server default value (`false`) is used.
`deprecationErrors`
  If the `deprecationErrors` parameter is set to `true`, the server will yield an error when using a command that is deprecated in the specified API version. If no value is provided, the server default value (`false`) is used.

## İçindekiler

- MongoDB\Driver\ServerApi::bsonSerialize — Returns an object for BSON serialization
- MongoDB\Driver\ServerApi::__construct — Create a new ServerApi instance

# The MongoDB\Driver\WriteConcern class

(mongodb >=1.0.0)

## Giriş

MongoDB\Driver\WriteConcern describes the level of acknowledgement requested from MongoDB for write operations to a standalone `mongod` or to replica sets or to sharded clusters. In sharded clusters, `mongos` instances will pass the write concern on to the shards.

## Sınıf Sözdizimi

final class MongoDB\Driver\WriteConcern implements MongoDB\BSON\Serializable, Serializable {
/* Sabitler */
const string MAJORITY = "majority";
/* Özellikler */
public readonly string|int|null $w;
public readonly ?bool $j;
public readonly int $wtimeout;
/* Yöntemler */
final public function bsonSerialize(): stdClass
final public function __construct(string|int `$w`, ?int `$wtimeout` = `null`, ?bool `$journal` = `null`)
final public function getJournal(): ?bool
final public function getW(): string|int|null
final public function getWtimeout(): int
final public function isDefault(): bool
}

## Özellikler

w
  The write concern value (integer number of nodes, the string `"majority"`, or a custom write concern tag name), or `null` if not set.
j
  Whether write operations must be committed to the journal before acknowledged, or `null` if not specified.
wtimeout
  The timeout in milliseconds to wait for write concern acknowledgement. A value of `0` means to wait indefinitely.

## Öntanımlı Sabitler

`MongoDB\Driver\WriteConcern::MAJORITY`
  Majority of all the members in the set; arbiters, non-voting members, passive members, hidden members and delayed members are all included in the definition of majority write concern.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.
PECL mongodb 1.7.0 | Implements Serializable.
PECL mongodb 1.2.0 | Implements MongoDB\BSON\Serializable.

# MongoDB\Driver\WriteConcern::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\WriteConcern::bsonSerialize — Returns an object for BSON serialization

### Açıklama

final public function MongoDB\Driver\WriteConcern::bsonSerialize(): stdClass

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an object for serializing the WriteConcern as BSON.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::bsonSerialize() with majority write concern

    <?php

    $wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY);
    var_dump($wc->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($wc)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (1) {
      ["w"]=>
      string(8) "majority"
    }

    { "w" : "majority" }

Örnek 2 MongoDB\Driver\WriteConcern::bsonSerialize() with wtimeout and journal

    <?php

    $wc = new MongoDB\Driver\WriteConcern(2, 1000, true);
    var_dump($wc->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($wc)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (3) {
      ["w"]=>
      int(2)
      ["j"]=>
      bool(true)
      ["wtimeout"]=>
      int(1000)
    }

    { "w" : 2, "j" : true, "wtimeout" : 1000 }

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
- » Write Concern reference

# MongoDB\Driver\WriteConcern::__construct

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::__construct — Create a new WriteConcern

### Açıklama

final public function MongoDB\Driver\WriteConcern::__construct(string|int `$w`, ?int `$wtimeout` = `null`, ?bool `$journal` = `null`)

Constructs a new MongoDB\Driver\WriteConcern, which is an immutable value object.

### Bağımsız Değişkenler

`w`

  Write concern
  Value | Description
  --- | ---
  1 | Requests acknowledgement that the write operation has propagated to the standalone `mongod` or the primary in a replica set. This is the default write concern for MongoDB.
  0 | Requests no acknowledgment of the write operation. However, this may return information about socket exceptions and networking errors to the application.
  <integer greater than 1> | Numbers greater than 1 are valid only for replica sets to request acknowledgement from specified number of members, including the primary.
  `MongoDB\Driver\WriteConcern::MAJORITY` | Requests acknowledgment that write operations have propagated to the majority of voting nodes, including the primary, and have been written to the on-disk journal for these nodes. Prior to MongoDB 3.0, this refers to the majority of replica set members (not just voting nodes).
  string | A string value is interpereted as a tag set. Requests acknowledgement that the write operations have propagated to a replica set member with the specified tag.

`wtimeout`
  How long to wait (in milliseconds) for secondaries before failing. `wtimeout` causes write operations to return with an error (WriteConcernError) after the specified limit, even if the required write concern will eventually succeed. When these write operations return, MongoDB does not undo successful data modifications performed before the write concern exceeded the `wtimeout` time limit. If specified, `wtimeout` must be a signed 64-bit integer greater than or equal to zero.

  Write concern timeout
  Value | Description
  --- | ---
  0 | Block indefinitely. This is the default.
  <integer greater than 0> | Milliseconds to wait until returning.

`journal`
  Wait until mongod has applied the write to the journal.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `w` is invalid or `wtimeout` is either negative or greater than the bounds of a signed 32-bit integer.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.7.0 | The `wTimeout` parameter now accepts 64-bit values.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::__construct() example

    <?php

    /* Request write acknowledgement from the majority of the replica set nodes */
    $wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 500);

    /* Request write acknowledgement from a node configured with the "MultipleDC" tag */
    $wc = new MongoDB\Driver\WriteConcern("MultipleDC", 500);

    ?>

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcern::getJournal

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getJournal — Returns the WriteConcern's "journal" option

### Açıklama

final public function MongoDB\Driver\WriteConcern::getJournal(): ?bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteConcern's "journal" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::getJournal() example

    <?php

    $wc = new MongoDB\Driver\WriteConcern(1);
    var_dump($wc->getJournal());

    $wc = new MongoDB\Driver\WriteConcern(1, 0, true);
    var_dump($wc->getJournal());

    $wc = new MongoDB\Driver\WriteConcern(1, 0, false);
    var_dump($wc->getJournal());

    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    bool(true)
    bool(false)

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcern::getW

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getW — Returns the WriteConcern's "w" option

### Açıklama

final public function MongoDB\Driver\WriteConcern::getW(): string|int|null

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteConcern's "w" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::getW() example

    <?php

    $wc = new MongoDB\Driver\WriteConcern(1);
    var_dump($wc->getW());

    $wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY);
    var_dump($wc->getW());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)
    string(8) "majority"

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcern::getWtimeout

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getWtimeout — Returns the WriteConcern's "wtimeout" option

### Açıklama

final public function MongoDB\Driver\WriteConcern::getWtimeout(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteConcern's "wtimeout" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.7.0 | On 32-bit systems, this method will always truncate the `wTimeout` value if it exceeds the 32-bit range. In that case, a warning will be emitted.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::getWtimeout() example

    <?php

    $wc = new MongoDB\Driver\WriteConcern(1);
    var_dump($wc->getWtimeout());

    $wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 3000);
    var_dump($wc->getWtimeout());

    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(3000)

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcern::isDefault

(mongodb >=1.3.0)

MongoDB\Driver\WriteConcern::isDefault — Checks if this is the default write concern

### Açıklama

final public function MongoDB\Driver\WriteConcern::isDefault(): bool

Returns whether this is the default write concern (i.e. no options are specified). This method is primarily intended to be used in conjunction with MongoDB\Driver\Manager::getWriteConcern() to determine whether the Manager has been constructed without any write concern options.

The driver will not include a default write concern in its write operations (e.g. MongoDB\Driver\Manager::executeBulkWrite()) in order to allow the server to apply its own default, which may have been » modified. Libraries that access the Manager's write concern to include it in their own write commands should use this method to ensure that default write concerns are left unset.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this is the default write concern and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcern::isDefault() example

    <?php

    $wc = new MongoDB\Driver\WriteConcern(1);
    var_dump($wc->isDefault());

    $manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1/?w=majority');
    $wc = $manager->getWriteConcern();
    var_dump($wc->isDefault());

    $manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1/');
    $wc = $manager->getWriteConcern();
    var_dump($wc->isDefault());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- MongoDB\Driver\Manager::getWriteConcern() - Return the WriteConcern for the Manager
- » Modify Default Write Concern in the MongoDB manual
- » Write Concern reference

## İçindekiler

- MongoDB\Driver\WriteConcern::bsonSerialize — Returns an object for BSON serialization
- MongoDB\Driver\WriteConcern::__construct — Create a new WriteConcern
- MongoDB\Driver\WriteConcern::getJournal — Returns the WriteConcern's "journal" option
- MongoDB\Driver\WriteConcern::getW — Returns the WriteConcern's "w" option
- MongoDB\Driver\WriteConcern::getWtimeout — Returns the WriteConcern's "wtimeout" option
- MongoDB\Driver\WriteConcern::isDefault — Checks if this is the default write concern

# The MongoDB\Driver\ReadPreference class

(mongodb >=1.0.0)

## Giriş

## Sınıf Sözdizimi

final class MongoDB\Driver\ReadPreference implements MongoDB\BSON\Serializable, Serializable {
/* Özellikler */
public readonly string $mode;
public readonly ?array $tags;
public readonly int $maxStalenessSeconds;
public readonly ?object $hedge;
/* Sabitler */
const string PRIMARY = primary;
const string PRIMARY_PREFERRED = primaryPreferred;
const string SECONDARY = secondary;
const string SECONDARY_PREFERRED = secondaryPreferred;
const string NEAREST = nearest;
const int NO_MAX_STALENESS = -1;
const int SMALLEST_MAX_STALENESS_SECONDS = 90;
/* Yöntemler */
final public function bsonSerialize(): stdClass
final public function __construct(string `$mode`, ?array `$tagSets` = `null`, ?array `$options` = `null`)
final public function getHedge(): ?object
final public function getMaxStalenessSeconds(): int
final public function getMode(): int
final public function getModeString(): string
final public function getTagSets(): array
}

## Özellikler

mode
  The read preference mode as a string (e.g. `"primary"`, `"secondary"`).
tags
  The tag set list used by the read preference, or `null` if no tag sets were specified.
maxStalenessSeconds
  The maximum staleness in seconds for reads, or `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS` if no maximum staleness was specified.
hedge
  A document specifying the hedge options for the read preference, or `null` if no hedge options were specified.
  Uyarı

  This property is deprecated as hedged reads are deprecated in MongoDB 8.0.

## Öntanımlı Sabitler

`MongoDB\Driver\ReadPreference::PRIMARY`
  All operations read from the current replica set primary. This is the default read preference for MongoDB.
`MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED`
  In most situations, operations read from the primary but if it is unavailable, operations read from secondary members.
`MongoDB\Driver\ReadPreference::SECONDARY`
  All operations read from the secondary members of the replica set.
`MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED`
  In most situations, operations read from secondary members but if no secondary members are available, operations read from the primary.
`MongoDB\Driver\ReadPreference::NEAREST`
  Operations read from member of the replica set with the least network latency, irrespective of the member's type.
`MongoDB\Driver\ReadPreference::NO_MAX_STALENESS`
  The default value for the `"maxStalenessSeconds"` option is to specify no limit on maximum staleness, which means that the driver will not consider a secondary's lag when choosing where to direct a read operation.
`MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS`
  The minimum value for the `"maxStalenessSeconds"` option is 90 seconds. The driver estimates secondaries' staleness by periodically checking the latest write date of each replica set member. Since these checks are infrequent, the staleness estimate is coarse. Thus, the driver cannot enforce a max staleness value of less than 90 seconds.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.
PECL mongodb 2.0.0 | Removed the `MongoDB\Driver\ReadPreference::RP_PRIMARY`, `MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::RP_SECONDARY`, `MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED`, and `MongoDB\Driver\ReadPreference::RP_NEAREST` constants. The getMode() method was also removed.
PECL mongodb 1.20.0 | Deprecated the `MongoDB\Driver\ReadPreference::RP_PRIMARY`, `MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::RP_SECONDARY`, `MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED`, and `MongoDB\Driver\ReadPreference::RP_NEAREST` constants.
PECL mongodb 1.7.0 | Added the `MongoDB\Driver\ReadPreference::PRIMARY`, `MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::SECONDARY`, `MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED`, and `MongoDB\Driver\ReadPreference::NEAREST` constants. Implements Serializable.
PECL mongodb 1.2.0 | Added the `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS` and `MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS` constants. Implements MongoDB\BSON\Serializable.

# MongoDB\Driver\ReadPreference::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\ReadPreference::bsonSerialize — Returns an object for BSON serialization

### Açıklama

final public function MongoDB\Driver\ReadPreference::bsonSerialize(): stdClass

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an object for serializing the ReadPreference as BSON.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::bsonSerialize() with primary read preference

    <?php

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
    var_dump($rp->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($rp)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (1) {
      ["mode"]=>
      string(7) "primary"
    }

    { "mode" : "primary" }

Örnek 2 MongoDB\Driver\ReadPreference::bsonSerialize() with secondary read preference and tag sets

    <?php

    $rp = new MongoDB\Driver\ReadPreference(
        MongoDB\Driver\ReadPreference::SECONDARY,
        [
            ['dc' => 'ny'],
            ['dc' => 'sf', 'use' => 'reporting'],
            []
        ]
    );
    var_dump($rp->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($rp)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (2) {
      ["mode"]=>
      string(9) "secondary"
      ["tags"]=>
      array(3) {
        [0]=>
        object(stdClass)#1 (1) {
          ["dc"]=>
          string(2) "ny"
        }
        [1]=>
        object(stdClass)#5 (2) {
          ["dc"]=>
          string(2) "sf"
          ["use"]=>
          string(9) "reporting"
        }
        [2]=>
        object(stdClass)#4 (0) {
        }
      }
    }

    { "mode" : "secondary", "tags" : [ { "dc" : "ny" }, { "dc" : "sf", "use" : "reporting" }, {  } ] }

Örnek 3 MongoDB\Driver\ReadPreference::bsonSerialize() with secondary read preference and max staleness

    <?php

    $rp = new MongoDB\Driver\ReadPreference(
        MongoDB\Driver\ReadPreference::SECONDARY,
        null,
        ['maxStalenessSeconds' => 120]
    );
    var_dump($rp->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($rp)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (2) {
      ["mode"]=>
      string(9) "secondary"
      ["maxStalenessSeconds"]=>
      int(120)
    }

    { "mode" : "secondary", "maxStalenessSeconds" : 120 }

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
- » Read Preference reference

# MongoDB\Driver\ReadPreference::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::__construct — Create a new ReadPreference

### Açıklama

final public function MongoDB\Driver\ReadPreference::__construct(string `$mode`, ?array `$tagSets` = `null`, ?array `$options` = `null`)

Constructs a new MongoDB\Driver\ReadPreference, which is an immutable value object.

### Bağımsız Değişkenler

`mode`

  Read preference mode
  Value | Description
  --- | ---
  `"primary"` | All operations read from the current replica set primary. This is the default read preference for MongoDB.
  `"primaryPreferred"` | In most situations, operations read from the primary but if it is unavailable, operations read from secondary members.
  `"secondary"` | All operations read from the secondary members of the replica set.
  `"secondaryPreferred"` | In most situations, operations read from secondary members but if no secondary members are available, operations read from the primary.
  `"nearest"` | Operations read from member of the replica set with the least network latency, irrespective of the member's type.

`tagSets`
  Tag sets allow you to target read operations to specific members of a replica set. This parameter should be an array of associative arrays, each of which contain zero or more key/value pairs. When selecting a server for a read operation, the driver attempt to select a node having all tags in a set (i.e. the associative array of key/value pairs). If selection fails, the driver will attempt subsequent sets. An empty tag set (`array()`) will match any node and may be used as a fallback. Tags are not compatible with the `"primary"` mode and, in general, only apply when selecting a secondary member of a set for a read operation. However, the `"nearest"` mode, when combined with a tag set, selects the matching member with the lowest network latency. This member may be a primary or secondary.
`options`

  options
  Option | Type | Description
  --- | --- | ---
  hedge | object|array | Specifies whether to use » hedged reads, which are supported by MongoDB 4.4+ for sharded queries. Server hedged reads are available for all non-primary read preferences and are enabled by default when using the `"nearest"` mode. This option allows explicitly enabling server hedged reads for non-primary read preferences by specifying `['enabled' => true]`, or explicitly disabling server hedged reads for the `"nearest"` read preference by specifying `['enabled' => false]`.
  maxStalenessSeconds | int | Specifies a maximum replication lag, or "staleness", for reads from secondaries. When a secondary's estimated staleness exceeds this value, the driver stops using it for read operations. If specified, the max staleness must be a signed 32-bit integer greater than or equal to `MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS`. Defaults to `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS`, which means that the driver will not consider a secondary's lag when choosing where to direct a read operation. This option is not compatible with the `"primary"` mode. Specifying a max staleness also requires all MongoDB instances in the deployment to be using MongoDB 3.4+. An exception will be thrown at execution time if any MongoDB instances in the deployment are of an older server version.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `mode` is invalid.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `tagSets` is provided for a primary read preference or is malformed (i.e. not an array of zero or more documents).
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"maxStalenessSeconds"` option is provided for a primary read preference or is out of range.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Passing an int for the `mode` argument is no longer supported.
PECL mongodb 1.20.0 | Passing an int for the `mode` argument is DEPRECATED.
PECL mongodb 1.8.0 | Added the `"hedge"` option.
PECL mongodb 1.3.0 | The `mode` argument now accepts a string value, which is consistent with the `"readPreference"` URI option for MongoDB\Driver\Manager::__construct().
PECL mongodb 1.2.0 | Added a third `options` argument, which supports the `"maxStalenessSeconds"` option.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::__construct() example

    <?php

    /* Prefer a secondary node but fall back to a primary. */
    var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED));

    /* Prefer a node in the New York data center with lowest latency. */
    var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST, [['dc' => 'ny']]));

    /* Require a secondary node whose replication lag is within two minutes of the primary */
    var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['maxStalenessSeconds' => 120]));

    /* Explicitly enable server hedged reads */
    var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['hedge' => ['enabled' => true]]));

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\Driver\ReadPreference)#1 (1) {
      ["mode"]=>
      string(18) "secondaryPreferred"
    }
    object(MongoDB\Driver\ReadPreference)#1 (2) {
      ["mode"]=>
      string(7) "nearest"
      ["tags"]=>
      array(1) {
        [0]=>
        object(stdClass)#2 (1) {
          ["dc"]=>
          string(2) "ny"
        }
      }
    }
    object(MongoDB\Driver\ReadPreference)#1 (2) {
      ["mode"]=>
      string(9) "secondary"
      ["maxStalenessSeconds"]=>
      int(120)
    }
    object(MongoDB\Driver\ReadPreference)#1 (2) {
      ["mode"]=>
      string(9) "secondary"
      ["hedge"]=>
      object(stdClass)#1 (1) {
        ["enabled"]=>
        bool(true)
      }
    }

### Ayrıca Bakınız

- » Read Preference reference

# MongoDB\Driver\ReadPreference::getHedge

(mongodb >=1.8.0)

MongoDB\Driver\ReadPreference::getHedge — Returns the ReadPreference's "hedge" option

### Açıklama

final public function MongoDB\Driver\ReadPreference::getHedge(): ?object

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadPreference's "hedge" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- » Read Preference reference

# MongoDB\Driver\ReadPreference::getMaxStalenessSeconds

(mongodb >=1.2.0)

MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Returns the ReadPreference's "maxStalenessSeconds" option

### Açıklama

final public function MongoDB\Driver\ReadPreference::getMaxStalenessSeconds(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadPreference's "maxStalenessSeconds" option. If no max staleness has been specified, `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS` will be returned.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::getMaxStalenessSeconds() example

    <?php

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY);
    var_dump($rp->getMaxStalenessSeconds());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, [
        'maxStalenessSeconds' => MongoDB\Driver\ReadPreference::NO_MAX_STALENESS,
    ]);
    var_dump($rp->getMaxStalenessSeconds());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, [
        'maxStalenessSeconds' => MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS,
    ]);
    var_dump($rp->getMaxStalenessSeconds());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, [
        'maxStalenessSeconds' => 1000,
    ]);
    var_dump($rp->getMaxStalenessSeconds());

    ?>

Yukarıdaki örneğin çıktısı:

    int(-1)
    int(-1)
    int(90)
    int(1000)

### Ayrıca Bakınız

- » Read Preference reference

# MongoDB\Driver\ReadPreference::getMode

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::getMode — Returns the ReadPreference's "mode" option

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\Driver\ReadPreference::getModeString() instead.

### Açıklama

final public function MongoDB\Driver\ReadPreference::getMode(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadPreference's "mode" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method was removed.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::getMode() example

    <?php

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
    var_dump($rp->getMode());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED);
    var_dump($rp->getMode());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY);
    var_dump($rp->getMode());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED);
    var_dump($rp->getMode());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST);
    var_dump($rp->getMode());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)
    int(5)
    int(2)
    int(6)
    int(10)

### Ayrıca Bakınız

- MongoDB\Driver\ReadPreference::getModeString() - Returns the ReadPreference's "mode" option
- » Read Preference reference

# MongoDB\Driver\ReadPreference::getModeString

(mongodb >=1.7.0)

MongoDB\Driver\ReadPreference::getModeString — Returns the ReadPreference's "mode" option

### Açıklama

final public function MongoDB\Driver\ReadPreference::getModeString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadPreference's "mode" option as a string.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::getModeString() example

    <?php

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
    var_dump($rp->getModeString());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED);
    var_dump($rp->getModeString());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY);
    var_dump($rp->getModeString());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED);
    var_dump($rp->getModeString());

    $rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST);
    var_dump($rp->getModeString());

    ?>

Yukarıdaki örneğin çıktısı:

    string(7) "primary"
    string(16) "primaryPreferred"
    string(9) "secondary"
    string(18) "secondaryPreferred"
    string(7) "nearest"

### Ayrıca Bakınız

- MongoDB\Driver\ReadPreference::getMode() - Returns the ReadPreference's "mode" option
- » Read Preference reference

# MongoDB\Driver\ReadPreference::getTagSets

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::getTagSets — Returns the ReadPreference's "tagSets" option

### Açıklama

final public function MongoDB\Driver\ReadPreference::getTagSets(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadPreference's "tagSets" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadPreference::getTagSets() example

    <?php

    $mode = MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED;

    /* Null and an empty array both denote no tag set preference. */
    $rp = new MongoDB\Driver\ReadPreference($mode, null);
    var_dump($rp->getTagSets());

    $rp = new MongoDB\Driver\ReadPreference($mode, []);
    var_dump($rp->getTagSets());

    /* Prefer a node in New York, but fall back to any available node. */
    $rp = new MongoDB\Driver\ReadPreference($mode, [['dc' => 'ny']]);
    var_dump($rp->getTagSets());

    /* Prefer a node in the New York, followed by a node in San Francisco that is
       labeled for reporting usage, and finally fall back to any available node. */
    $rp = new MongoDB\Driver\ReadPreference($mode, [
      ['dc' => 'ny'],
      ['dc' => 'sf', 'use' => 'reporting'],
      [],
    ]);
    var_dump($rp->getTagSets());

    ?>

Yukarıdaki örneğin çıktısı:

    array(0) {
    }
    array(0) {
    }
    array(2) {
      [0]=>
      array(1) {
        ["dc"]=>
        string(2) "ny"
      }
      [1]=>
      array(0) {
      }
    }
    array(3) {
      [0]=>
      array(1) {
        ["dc"]=>
        string(2) "ny"
      }
      [1]=>
      array(2) {
        ["dc"]=>
        string(2) "sf"
        ["use"]=>
        string(9) "reporting"
      }
      [2]=>
      array(0) {
      }
    }

### Ayrıca Bakınız

- » Read Preference reference

## İçindekiler

- MongoDB\Driver\ReadPreference::bsonSerialize — Returns an object for BSON serialization
- MongoDB\Driver\ReadPreference::__construct — Create a new ReadPreference
- MongoDB\Driver\ReadPreference::getHedge — Returns the ReadPreference's "hedge" option
- MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Returns the ReadPreference's "maxStalenessSeconds" option
- MongoDB\Driver\ReadPreference::getMode — Returns the ReadPreference's "mode" option
- MongoDB\Driver\ReadPreference::getModeString — Returns the ReadPreference's "mode" option
- MongoDB\Driver\ReadPreference::getTagSets — Returns the ReadPreference's "tagSets" option

# The MongoDB\Driver\ReadConcern class

(mongodb >=1.1.0)

## Giriş

MongoDB\Driver\ReadConcern controls the level of isolation for read operations for replica sets and replica set shards. This option requires MongoDB 3.2 or later.

## Sınıf Sözdizimi

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
/* Özellikler */
public readonly ?string $level;
/* Sabitler */
const string AVAILABLE = "available";
const string LINEARIZABLE = "linearizable";
const string LOCAL = "local";
const string MAJORITY = "majority";
const string SNAPSHOT = "snapshot";
/* Yöntemler */
final public function bsonSerialize(): stdClass
final public function __construct(?string `$level` = `null`)
final public function getLevel(): ?string
final public function isDefault(): bool
}

## Özellikler

level
  The read concern level. `null` if no level was specified.

## Öntanımlı Sabitler

`MongoDB\Driver\ReadConcern::AVAILABLE`
  Default for reads against secondaries when `afterClusterTime`and `level` are unspecified. The query returns the instance's most recent data. Provides no guarantee that the data has been written to a majority of the replica set members (i.e. may be rolled back). For unsharded collections (including collections in a standalone deployment or a replica set deployment), `"local"` and `"available"` read concerns behave identically. For a sharded cluster, `"available"` read concern provides greater tolerance for partitions since it does not wait to ensure consistency guarantees. However, a query with `"available"` read concern may return orphan documents if the shard is undergoing chunk migrations since the `"available"` read concern, unlike `"local"` read concern, does not contact the shard's primary nor the config servers for updated metadata.
`MongoDB\Driver\ReadConcern::LINEARIZABLE`
  The query returns data that reflects all successful writes issued with a write concern of `"majority"` and acknowledged prior to the start of the read operation. For replica sets that run with `writeConcernMajorityJournalDefault` set to `true`, linearizable read concern returns data that will never be rolled back. With `writeConcernMajorityJournalDefault` set to `false`, MongoDB will not wait for `w: "majority"` writes to be durable before acknowledging the writes. As such, `"majority"` write operations could possibly roll back in the event of a loss of a replica set member. You can specify linearizable read concern for read operations on the primary only. Linearizable read concern guarantees only apply if read operations specify a query filter that uniquely identifies a single document.
  İpucu

  Always use `maxTimeMS` with linearizable read concern in case a majority of data bearing members are unavailable. `maxTimeMS` ensures that the operation does not block indefinitely and instead ensures that the operation returns an error if the read concern cannot be fulfilled.

  Linearizable read concern requires MongoDB 3.4.
`MongoDB\Driver\ReadConcern::LOCAL`
  Default for reads against primary if `level` is unspecified and for reads against secondaries if `level` is unspecified but `afterClusterTime` is specified. The query returns the instance's most recent data. Provides no guarantee that the data has been written to a majority of the replica set members (i.e. may be rolled back).
`MongoDB\Driver\ReadConcern::MAJORITY`
  The query returns the instance's most recent data acknowledged as having been written to a majority of members in the replica set. To use read concern level of `"majority"`, replica sets must use WiredTiger storage engine and election protocol version 1.
`MongoDB\Driver\ReadConcern::SNAPSHOT`
  Read concern `"snapshot"` is available for multi-document transactions, and starting in MongoDB 5.0, certain read operations outside of multi-document transactions. If the transaction is not part of a causally consistent session, upon transaction commit with write concern `"majority"`, the transaction operations are guaranteed to have read from a snapshot of majority-committed data. If the transaction is part of a causally consistent session, upon transaction commit with write concern `"majority"`, the transaction operations are guaranteed to have read from a snapshot of majority-committed data that provides causal consistency with the operation immediately preceding the transaction start. Outside of multi-document transactions, read concern `"snapshot"` is available on primaries and secondaries for the following read operations: `find`, `aggregate`, and `distinct` (on unsharded collections). All other read commands prohibit `"snapshot"`.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.
PECL mongodb 1.11.0 | Added the `MongoDB\Driver\ReadConcern::SNAPSHOT` constant.
PECL mongodb 1.7.0 | Implements Serializable.
PECL mongodb 1.4.0 | Added the `MongoDB\Driver\ReadConcern::AVAILABLE` constant.
PECL mongodb 1.2.0 | Added the `MongoDB\Driver\ReadConcern::LINEARIZABLE` constant. Implements MongoDB\BSON\Serializable.

## Ayrıca Bakınız

- » Read Concern reference

# MongoDB\Driver\ReadConcern::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\ReadConcern::bsonSerialize — Returns an object for BSON serialization

### Açıklama

final public function MongoDB\Driver\ReadConcern::bsonSerialize(): stdClass

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an object for serializing the ReadConcern as BSON.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadConcern::bsonSerialize() with empty read concern

    <?php

    $rc = new MongoDB\Driver\ReadConcern;
    var_dump($rc->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($rc)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (0) {
    }

    { }

Örnek 2 MongoDB\Driver\ReadConcern::bsonSerialize() with local read concern

    <?php

    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);
    var_dump($rc->bsonSerialize());

    echo "\n", MongoDB\BSON\Document::fromPHP($rc)->toRelaxedExtendedJSON();

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#2 (1) {
      ["level"]=>
      string(5) "local"
    }

    { "level" : "local" }

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
- » Read Concern reference

# MongoDB\Driver\ReadConcern::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadConcern::__construct — Create a new ReadConcern

### Açıklama

final public function MongoDB\Driver\ReadConcern::__construct(?string `$level` = `null`)

Constructs a new MongoDB\Driver\ReadConcern, which is an immutable value object.

### Bağımsız Değişkenler

`level`
  The » read concern level. You may use, but are not limited to, one of the class constants.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadConcern::__construct() example

    <?php

    /* Unspecified read isolation level (uses the server's default behavior) */
    $rc = new MongoDB\Driver\ReadConcern();

    /* Request read isolation from a single replica set node */
    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);

    /* Request read isolation from a majority of the replica set nodes */
    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY);

    ?>

### Ayrıca Bakınız

- » Read Concern reference

# MongoDB\Driver\ReadConcern::getLevel

(mongodb >=1.0.0)

MongoDB\Driver\ReadConcern::getLevel — Returns the ReadConcern's "level" option

### Açıklama

final public function MongoDB\Driver\ReadConcern::getLevel(): ?string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ReadConcern's "level" option.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadConcern::getLevel() example

    <?php

    $rc = new MongoDB\Driver\ReadConcern();
    var_dump($rc->getLevel());

    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);
    var_dump($rc->getLevel());

    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY);
    var_dump($rc->getLevel());

    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    string(5) "local"
    string(8) "majority"

### Ayrıca Bakınız

- » Read Concern reference

# MongoDB\Driver\ReadConcern::isDefault

(mongodb >=1.3.0)

MongoDB\Driver\ReadConcern::isDefault — Checks if this is the default read concern

### Açıklama

final public function MongoDB\Driver\ReadConcern::isDefault(): bool

Returns whether this is the default read concern (i.e. no options are specified). This method is primarily intended to be used in conjunction with MongoDB\Driver\Manager::getReadConcern() to determine whether the Manager has been constructed without any read concern options.

The driver will not include a default read concern in its read operations (e.g. MongoDB\Driver\Manager::executeQuery()) in order to allow the server to apply its own default. Libraries that access the Manager's read concern to include it in their own read commands should use this method to ensure that default read concerns are left unset.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this is the default read concern and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\ReadConcern::isDefault() example

    <?php

    $rc = new MongoDB\Driver\ReadConcern(null);
    var_dump($rc->isDefault());

    $rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY);
    var_dump($rc->isDefault());

    $manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1/?readConcernLevel=majority');
    $rc = $manager->getReadConcern();
    var_dump($rc->isDefault());

    $manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1/');
    $rc = $manager->getReadConcern();
    var_dump($rc->isDefault());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- MongoDB\Driver\Manager::getReadConcern() - Return the ReadConcern for the Manager
- » Read Concern reference

## İçindekiler

- MongoDB\Driver\ReadConcern::bsonSerialize — Returns an object for BSON serialization
- MongoDB\Driver\ReadConcern::__construct — Create a new ReadConcern
- MongoDB\Driver\ReadConcern::getLevel — Returns the ReadConcern's "level" option
- MongoDB\Driver\ReadConcern::isDefault — Checks if this is the default read concern

# The MongoDB\Driver\Cursor class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\Cursor class encapsulates the results of a MongoDB command or query and may be returned by MongoDB\Driver\Manager::executeCommand() or MongoDB\Driver\Manager::executeQuery(), respectively.

## Sınıf Sözdizimi

final class MongoDB\Driver\Cursor implements MongoDB\Driver\CursorInterface {
/* Yöntemler */
final private function __construct()
public function current(): array|object|null
final public function getId(): MongoDB\BSON\Int64
final public function getServer(): MongoDB\Driver\Server
final public function isDead(): bool
public function key(): int
public function next(): void
public function rewind(): void
final public function setTypeMap(array `$typemap`): void
final public function toArray(): array
public function valid(): bool
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.9.0 | Implements Iterator.
PECL mongodb 1.6.0 | Implements MongoDB\Driver\CursorInterface, which extends Traversable.

## Örnekler

Örnek 1 Reading a result set

MongoDB\Driver\Manager::executeCommand() and MongoDB\Driver\Manager::executeQuery() both return their result(s) as a MongoDB\Driver\Cursor object. This object can be used to iterate over the result set of the command or query.

Because MongoDB\Driver\Cursor implements the Traversable interface, you can simply iterate over the result set with `foreach`.

    <?php

    $manager = new MongoDB\Driver\Manager();

    /* Insert some documents so that our query returns information */
    $bulkWrite = new MongoDB\Driver\BulkWrite;
    $bulkWrite->insert(['name' => 'Ceres', 'size' => 946, 'distance' => 2.766]);
    $bulkWrite->insert(['name' => 'Vesta', 'size' => 525, 'distance' => 2.362]);
    $manager->executeBulkWrite("test.asteroids", $bulkWrite);

    /* Query for all the items in the collection */
    $query = new MongoDB\Driver\Query( [] );

    /* Query the "asteroids" collection of the "test" database */
    $cursor = $manager->executeQuery("test.asteroids", $query);

    /* $cursor now contains an object that wraps around the result set. Use
     * foreach() to iterate over all the result */
    foreach($cursor as $document) {
        print_r($document);
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    stdClass Object
    (
        [_id] => MongoDB\BSON\ObjectId Object
            (
                [oid] => 5a4cff2f122d3321565d8cc2
            )

        [name] => Ceres
        [size] => 946
        [distance] => 2.766
    )
    stdClass Object
    (
        [_id] => MongoDB\BSON\ObjectId Object
            (
                [oid] => 5a4cff2f122d3321565d8cc3
            )

        [name] => Vesta
        [size] => 525
        [distance] => 2.362
    )

Örnek 2 Reading a result set for a tailable cursor

» Tailable cursors are a special type of MongoDB cursor that allows the client to read some results and then wait until more documents become available. These cursors are primarily used with » Capped Collections and » Change Streams.

While normal cursors can be iterated once with `foreach`, that approach will not work with tailable cursors. When `foreach` is used with a tailable cursor, the loop will stop upon reaching the end of the initial result set. Attempting to continue iteration on the cursor with a second `foreach` would throw an exception, since PHP attempts to rewind the cursor. Similar to result objects in other database drivers, cursors in MongoDB only support forward iteration, which means they cannot be rewound.

In order to continuously read from a tailable cursor, the Cursor object must be wrapped with an IteratorIterator. This allows the application to directly control the cursor's iteration, avoid inadvertently rewinding the cursor, and decide when to wait for new results or stop iteration entirely.

In order to demonstrate a tailable cursor in action, two scripts will be used: a "producer" and a "consumer". The producer script will create a new capped collection using the » create command and proceed to insert a new document into that collection each second.

    <?php

    $manager = new MongoDB\Driver\Manager;

    $manager->executeCommand('test', new MongoDB\Driver\Command([
        'create' => 'asteroids',
        'capped' => true,
        'size' => 1048576,
    ]));

    while (true) {
        $bulkWrite = new MongoDB\Driver\BulkWrite;
        $bulkWrite->insert(['createdAt' => new MongoDB\BSON\UTCDateTime]);
        $manager->executeBulkWrite('test.asteroids', $bulkWrite);

        sleep(1);
    }

    ?>

With the producer script still running, a second consumer script may be executed to read the inserted documents using a tailable cursor, indicated by the `tailable` and `awaitData` options to MongoDB\Driver\Query::__construct().

    <?php

    $manager = new MongoDB\Driver\Manager;

    $query = new MongoDB\Driver\Query([], [
        'tailable' => true,
        'awaitData' => true,
    ]);

    $cursor = $manager->executeQuery('test.asteroids', $query);

    $iterator = new IteratorIterator($cursor);

    $iterator->rewind();

    while (true) {
        if ($iterator->valid()) {
            $document = $iterator->current();
            printf("Consumed document created at: %s\n", $document->createdAt);
        }

        $iterator->next();
    }

    ?>

The consumer script will start by quickly printing all available documents in the capped collection (as if `foreach` had been used); however, it will not terminate upon reaching the end of the initial result set. Since the cursor is tailable, calling IteratorIterator::next() will block and wait for additional results. IteratorIterator::valid() is also used to check if there is actually data available to read at each step.

> Bilginize: This example uses the `awaitData` query option to instruct the server to block for a short period (e.g. one second) at the end of the result set before returning a response to the driver. This is used to prevent the driver from aggressively polling the server when there are no results available. The `maxAwaitTimeMS` option may be used in conjunction with `tailable` and `awaitData` to specify the amount of time that the server should block when it reaches the end of the result set.

## Hatalar/İstisnalar

When iterating over the cursor object, BSON data is converted into PHP variables. This iteration can cause the following Exceptions:

- Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

# MongoDB\Driver\Cursor::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::__construct — Create a new Cursor (not used)

### Açıklama

final private function MongoDB\Driver\Cursor::__construct()

MongoDB\Driver\Cursor objects are returned as the result of an executed command or query and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeCommand() - Execute a database command
- MongoDB\Driver\Manager::executeQuery() - Execute a database query
- MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
- MongoDB\Driver\Server::executeQuery() - Execute a database query on this server

# MongoDB\Driver\Cursor::current

(mongodb >=1.9.0)

MongoDB\Driver\Cursor::current — Returns the current element

### Açıklama

public function MongoDB\Driver\Cursor::current(): array|object|null

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the current result document as an array or object, depending on the cursor's type map. If iteration has not started or the current position is not valid, `null` will be returned.

### Ayrıca Bakınız

- Iterator::current() - O anki elemanı döndürür

# MongoDB\Driver\Cursor::getId

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::getId — Returns the ID for this cursor

### Açıklama

final public function MongoDB\Driver\Cursor::getId(): MongoDB\BSON\Int64

Returns the ID for this cursor, which uniquely identifies the cursor on the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ID for this cursor. The ID will be returned as a MongoDB\BSON\Int64 object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The return type was changed to MongoDB\BSON\Int64. The `asInt64` parameter was removed.
PECL mongodb 1.20.0 | Deprecated returning a MongoDB\Driver\CursorId. Added the `asInt64` argument to ease migration for future versions. If `asInt64` is `true`, the ID will be returned as a MongoDB\BSON\Int64.

### Örnekler

Örnek 1 MongoDB\Driver\Cursor::getId() example

    <?php

    /* In this example, we insert several documents into the collection and specify
     * a smaller batchSize to ensure that the first batch contains only a subset of
     * our results and the cursor remains open on the server. */
    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $query = new MongoDB\Driver\Query([], ['batchSize' => 2]);

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->insert(['x' => 2]);
    $bulk->insert(['x' => 3]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $cursor = $manager->executeQuery('db.collection', $query);
    var_dump($cursor->getId(true));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\Int64)#5 (1) {
      ["integer"]=>
      string(11) "94810124093"
    }

### Ayrıca Bakınız

- MongoDB\BSON\Int64

# MongoDB\Driver\Cursor::getServer

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::getServer — Returns the server associated with this cursor

### Açıklama

final public function MongoDB\Driver\Cursor::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server associated with this cursor. This is the server that executed the MongoDB\Driver\Query or MongoDB\Driver\Command.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server associated with this cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Cursor::getServer() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $query = new MongoDB\Driver\Query([]);

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $cursor = $manager->executeQuery('db.collection', $query);
    var_dump($cursor->getServer());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\Server)#5 (10) {
      ["host"]=>
      string(9) "localhost"
      ["port"]=>
      int(27017)
      ["type"]=>
      int(1)
      ["is_primary"]=>
      bool(false)
      ["is_secondary"]=>
      bool(false)
      ["is_arbiter"]=>
      bool(false)
      ["is_hidden"]=>
      bool(false)
      ["is_passive"]=>
      bool(false)
      ["last_hello_response"]=>
      array(8) {
        ["isWritablePrimary"]=>
        bool(true)
        ["maxBsonObjectSize"]=>
        int(16777216)
        ["maxMessageSizeBytes"]=>
        int(48000000)
        ["maxWriteBatchSize"]=>
        int(1000)
        ["localTime"]=>
        object(MongoDB\BSON\UTCDateTime)#6 (1) {
          ["milliseconds"]=>
          int(1446505367907)
        }
        ["maxWireVersion"]=>
        int(3)
        ["minWireVersion"]=>
        int(0)
        ["ok"]=>
        float(1)
      }
      ["round_trip_time"]=>
      int(584)
    }

### Ayrıca Bakınız

- MongoDB\Driver\Server

# MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDead — Checks if the cursor is exhausted or may have additional results

### Açıklama

final public function MongoDB\Driver\Cursor::isDead(): bool

Checks whether there are definitely no additional results available on the cursor. This method is similar to the » cursor.isExhausted() method in the MongoDB shell and is primarily useful when iterating » tailable cursors.

A cursor has no additional results and is considered "dead" when one of the following is true:

- The current batch has been fully iterated and the cursor ID is zero (i.e. a » getMore cannot be issued).
- An error was encountered while iterating the cursor.
- The cursor reached its configured limit.

By design, it is not possible to always determine whether a cursor has additional results. The cases where a cursor may have more data available is as follows:

- There are additional documents in the current batch, which are buffered on the client side. Iterating will fetch a document from the local buffer.
- There are no additional documents in the current batch (i.e. local buffer), but the cursor ID is non-zero. Iterating will request more documents from the server via a » getMore operation, which may or may not return additional results and/or indicate that the cursor has been closed on the server by returning zero for its ID.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if there are definitely no additional results available on the cursor, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Cursor::isDead() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $query = new MongoDB\Driver\Query([]);

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->insert(['x' => 2]);
    $bulk->insert(['x' => 3]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $cursor = $manager->executeQuery('db.collection', $query);

    $iterator = new IteratorIterator($cursor);

    $iterator->rewind();
    var_dump($cursor->isDead());

    $iterator->next();
    var_dump($cursor->isDead());

    $iterator->next();
    var_dump($cursor->isDead());

    $iterator->next();
    var_dump($cursor->isDead());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- » Tailable Cursors in the MongoDB manual
- » cursor.isExhausted() in the MongoDB manual

# MongoDB\Driver\Cursor::key

(mongodb >=1.9.0)

MongoDB\Driver\Cursor::key — Returns the current result's index within the cursor

### Açıklama

public function MongoDB\Driver\Cursor::key(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The current result's numeric index within the cursor.

### Ayrıca Bakınız

- Iterator::key() - O anki elemanın anahtarını döndürür

# MongoDB\Driver\Cursor::next

(mongodb >=1.9.0)

MongoDB\Driver\Cursor::next — Advances the cursor to the next result

### Açıklama

public function MongoDB\Driver\Cursor::next(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Moves the current position to the next element in the cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.

### Ayrıca Bakınız

- Iterator::next() - Konumu sonraki elemana ilerletir

# MongoDB\Driver\Cursor::rewind

(mongodb >=1.9.0)

MongoDB\Driver\Cursor::rewind — Rewind the cursor to the first result

### Açıklama

public function MongoDB\Driver\Cursor::rewind(): void

If the cursor has advanced beyond its first position, it can no longer be rewound.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`null`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\LogicException if this method is called after the cursor has advanced beyond its first position.

### Ayrıca Bakınız

- Iterator::rewind() - Yineleyiciyi ilk elemana konumlandırır

# MongoDB\Driver\Cursor::setTypeMap

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::setTypeMap — Sets a type map to use for BSON unserialization

### Açıklama

final public function MongoDB\Driver\Cursor::setTypeMap(array `$typemap`): void

Sets the type map configuration to use when unserializing the BSON results into PHP values.

### Bağımsız Değişkenler

`typeMap` (array)

  Type map configuration.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

When iterating over the cursor, the following exceptions can also be thrown due to an incorrect type map configuration:

- Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.

### Örnekler

Örnek 1 MongoDB\Driver\Cursor::setTypeMap() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new MongoDB\Driver\BulkWrite;
    $id = $bulk->insert(['x' => 1]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $query = new MongoDB\Driver\Query(['_id' => $id]);
    $cursor = $manager->executeQuery('db.collection', $query);
    $cursor->setTypeMap(['root' => 'array']);

    foreach ($cursor as $document) {
        var_dump($document);
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      ["_id"]=>
      object(MongoDB\BSON\ObjectId)#6 (1) {
        ["oid"]=>
        string(24) "56424fb76118fd3267180741"
      }
      ["x"]=>
      int(1)
    }

### Ayrıca Bakınız

- Persisting Data

# MongoDB\Driver\Cursor::toArray

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::toArray — Returns an array containing all results for this cursor

### Açıklama

final public function MongoDB\Driver\Cursor::toArray(): array

Iterates the cursor and returns its results in an array. MongoDB\Driver\Cursor::setTypeMap() may be used to control how documents are unserialized into PHP values.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array containing all results for this cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Cursor::toArray() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->insert(['x' => 2]);
    $bulk->insert(['x' => 3]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $query = new MongoDB\Driver\Query([]);
    $cursor = $manager->executeQuery('db.collection', $query);

    var_dump($cursor->toArray());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(3) {
      [0]=>
      object(stdClass)#6 (2) {
        ["_id"]=>
        object(MongoDB\BSON\ObjectId)#5 (1) {
          ["oid"]=>
          string(24) "564259a96118fd40b41bcf61"
        }
        ["x"]=>
        int(1)
      }
      [1]=>
      object(stdClass)#8 (2) {
        ["_id"]=>
        object(MongoDB\BSON\ObjectId)#7 (1) {
          ["oid"]=>
          string(24) "564259a96118fd40b41bcf62"
        }
        ["x"]=>
        int(2)
      }
      [2]=>
      object(stdClass)#10 (2) {
        ["_id"]=>
        object(MongoDB\BSON\ObjectId)#9 (1) {
          ["oid"]=>
          string(24) "564259a96118fd40b41bcf63"
        }
        ["x"]=>
        int(3)
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::setTypeMap() - Sets a type map to use for BSON unserialization

# MongoDB\Driver\Cursor::valid

(mongodb >=1.9.0)

MongoDB\Driver\Cursor::valid — Checks if the current position in the cursor is valid

### Açıklama

public function MongoDB\Driver\Cursor::valid(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the current cursor position is valid, `false` otherwise.

### Ayrıca Bakınız

- Iterator::valid() - O anki konum geçerli mi diye bakar

## İçindekiler

- MongoDB\Driver\Cursor::__construct — Create a new Cursor (not used)
- MongoDB\Driver\Cursor::current — Returns the current element
- MongoDB\Driver\Cursor::getId — Returns the ID for this cursor
- MongoDB\Driver\Cursor::getServer — Returns the server associated with this cursor
- MongoDB\Driver\Cursor::isDead — Checks if the cursor is exhausted or may have additional results
- MongoDB\Driver\Cursor::key — Returns the current result's index within the cursor
- MongoDB\Driver\Cursor::next — Advances the cursor to the next result
- MongoDB\Driver\Cursor::rewind — Rewind the cursor to the first result
- MongoDB\Driver\Cursor::setTypeMap — Sets a type map to use for BSON unserialization
- MongoDB\Driver\Cursor::toArray — Returns an array containing all results for this cursor
- MongoDB\Driver\Cursor::valid — Checks if the current position in the cursor is valid

# The MongoDB\Driver\CursorId class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\CursorID class is a value object that represents a cursor ID. Instances of this class are returned by MongoDB\Driver\Cursor::getId().

Uyarı

This class has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications have to update their usage of MongoDB\Driver\Cursor::getId() to return MongoDB\BSON\Int64 instead.

## Sınıf Sözdizimi

final class MongoDB\Driver\CursorId implements Serializable, Stringable {
/* Yöntemler */
final private function __construct()
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class was removed.
PECL mongodb 1.20.0 | This class has been deprecated and will be removed in version 2.0.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.7.0 | Implements Serializable.

# MongoDB\Driver\CursorId::__construct

(mongodb >=1.0.0)

MongoDB\Driver\CursorId::__construct — Create a new CursorId (not used)

### Açıklama

final private function MongoDB\Driver\CursorId::__construct()

MongoDB\Driver\CursorId objects are returned from MongoDB\Driver\Cursor::getId() and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::getId() - Returns the ID for this cursor

# MongoDB\Driver\CursorId::__toString

(mongodb >=1.0.0)

MongoDB\Driver\CursorId::__toString — String representation of the cursor ID

### Açıklama

final public function MongoDB\Driver\CursorId::__toString(): string

Returns the string representation of the cursor ID.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of the cursor ID.

### Örnekler

Örnek 1 MongoDB\Driver\CursorId::__toString() example

    <?php

    /* In this example, we insert several documents into the collection and specify
     * a smaller batchSize to ensure that the first batch contains only a subset of
     * our results and the cursor remains open on the server. */
    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
    $query = new MongoDB\Driver\Query([], ['batchSize' => 2]);

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->insert(['x' => 2]);
    $bulk->insert(['x' => 3]);
    $manager->executeBulkWrite('db.collection', $bulk);

    $cursor = $manager->executeQuery('db.collection', $query);
    var_dump((string) $cursor->getId());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(11) "98061641158"

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::getId() - Returns the ID for this cursor

## İçindekiler

- MongoDB\Driver\CursorId::__construct — Create a new CursorId (not used)
- MongoDB\Driver\CursorId::__toString — String representation of the cursor ID

# The MongoDB\Driver\CursorInterface interface

(mongodb >=1.6.0)

## Giriş

This interface is implemented by MongoDB\Driver\Cursor to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\Driver\CursorInterface implements Iterator {
/* Yöntemler */
abstract public function getId(): MongoDB\BSON\Int64
abstract public function getServer(): MongoDB\Driver\Server
abstract public function isDead(): bool
abstract public function setTypeMap(array `$typemap`): void
abstract public function toArray(): array
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This interface now extends Iterator. Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\Driver\CursorInterface::getId

(mongodb >=1.6.0)

MongoDB\Driver\CursorInterface::getId — Returns the ID for this cursor

### Açıklama

abstract public function MongoDB\Driver\CursorInterface::getId(): MongoDB\BSON\Int64

Returns the ID for this cursor, which uniquely identifies the cursor on the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the ID for this cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.20.0 | Added MongoDB\BSON\Int64 to the tentative return type for this method. MongoDB\Driver\CursorId will be removed from the return type in version 2.0.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::getId() - Returns the ID for this cursor
- MongoDB\Driver\CursorId
- MongoDB\BSON\Int64

# MongoDB\Driver\CursorInterface::getServer

(mongodb >=1.6.0)

MongoDB\Driver\CursorInterface::getServer — Returns the server associated with this cursor

### Açıklama

abstract public function MongoDB\Driver\CursorInterface::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server associated with this cursor. This is the server that executed the MongoDB\Driver\Query or MongoDB\Driver\Command.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server associated with this cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::getServer() - Returns the server associated with this cursor
- MongoDB\Driver\Server

# MongoDB\Driver\CursorInterface::isDead

(mongodb >=1.6.0)

MongoDB\Driver\CursorInterface::isDead — Checks if the cursor may have additional results

### Açıklama

abstract public function MongoDB\Driver\CursorInterface::isDead(): bool

Checks whether the cursor may have additional results available to read. A cursor is initially "alive" but may become "dead" for any of the following reasons:

- Advancing a non-tailable cursor did not return a document
- The cursor encountered an error
- The cursor read its last batch to completion
- The cursor reached its configured limit

This is primarily useful with tailable cursors.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if additional results are not available, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::isDead() - Checks if the cursor is exhausted or may have additional results

# MongoDB\Driver\CursorInterface::setTypeMap

(mongodb >=1.6.0)

MongoDB\Driver\CursorInterface::setTypeMap — Sets a type map to use for BSON unserialization

### Açıklama

abstract public function MongoDB\Driver\CursorInterface::setTypeMap(array `$typemap`): void

Sets the type map configuration to use when unserializing the BSON results into PHP values.

### Bağımsız Değişkenler

`typeMap` (array)

  Type map configuration.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::setTypeMap() - Sets a type map to use for BSON unserialization
- Persisting Data

# MongoDB\Driver\CursorInterface::toArray

(mongodb >=1.6.0)

MongoDB\Driver\CursorInterface::toArray — Returns an array containing all results for this cursor

### Açıklama

abstract public function MongoDB\Driver\CursorInterface::toArray(): array

Iterates the cursor and returns its results in an array. MongoDB\Driver\CursorInterface::setTypeMap() may be used to control how documents are unserialized into PHP values.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array containing all results for this cursor.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor::toArray() - Returns an array containing all results for this cursor
- MongoDB\Driver\CursorInterface::setTypeMap() - Sets a type map to use for BSON unserialization

## İçindekiler

- MongoDB\Driver\CursorInterface::getId — Returns the ID for this cursor
- MongoDB\Driver\CursorInterface::getServer — Returns the server associated with this cursor
- MongoDB\Driver\CursorInterface::isDead — Checks if the cursor may have additional results
- MongoDB\Driver\CursorInterface::setTypeMap — Sets a type map to use for BSON unserialization
- MongoDB\Driver\CursorInterface::toArray — Returns an array containing all results for this cursor

# The MongoDB\Driver\Server class

(mongodb >=1.0.0)

## Giriş

## Sınıf Sözdizimi

final class MongoDB\Driver\Server {
/* Sabitler */
const int TYPE_UNKNOWN = 0;
const int TYPE_STANDALONE = 1;
const int TYPE_MONGOS = 2;
const int TYPE_POSSIBLE_PRIMARY = 3;
const int TYPE_RS_PRIMARY = 4;
const int TYPE_RS_SECONDARY = 5;
const int TYPE_RS_ARBITER = 6;
const int TYPE_RS_OTHER = 7;
const int TYPE_RS_GHOST = 8;
const int TYPE_LOAD_BALANCER = 9;
/* Yöntemler */
final private function __construct()
final public function executeBulkWrite(string `$namespace`, MongoDB\Driver\BulkWrite `$bulk`, ?array `$options` = `null`): MongoDB\Driver\WriteResult
final public function executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand `$bulk`, ?array `$options` = `null`): MongoDB\Driver\BulkWriteCommandResult
final public function executeCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeReadCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeReadWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function executeWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor
final public function getHost(): string
final public function getInfo(): array
final public function getLatency(): ?integer
final public function getPort(): int
final public function getServerDescription(): MongoDB\Driver\ServerDescription
final public function getTags(): array
final public function getType(): int
final public function isArbiter(): bool
final public function isHidden(): bool
final public function isPassive(): bool
final public function isPrimary(): bool
final public function isSecondary(): bool
}

## Öntanımlı Sabitler

`MongoDB\Driver\Server::TYPE_UNKNOWN`
  Unknown server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_STANDALONE`
  Standalone server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_MONGOS`
  Mongos server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_POSSIBLE_PRIMARY`
  Replica set possible primary server type, returned by MongoDB\Driver\Server::getType(). A server may be identified as a possible primary if it has not yet been checked but another member of the replica set thinks it is the primary.
`MongoDB\Driver\Server::TYPE_RS_PRIMARY`
  Replica set primary server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_RS_SECONDARY`
  Replica set secondary server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_RS_ARBITER`
  Replica set arbiter server type, returned by MongoDB\Driver\Server::getType().
`MongoDB\Driver\Server::TYPE_RS_OTHER`
  Replica set other server type, returned by MongoDB\Driver\Server::getType(). Such servers may be hidden, starting up, or recovering. They cannot be queried, but their hosts lists are useful for discovering the current replica set configuration.
`MongoDB\Driver\Server::TYPE_RS_GHOST`
  Replica set ghost server type, returned by MongoDB\Driver\Server::getType(). Servers may be identified as such in at least three situations: briefly during server startup; in an uninitialized replica set; or when the server is shunned (i.e. removed from the replica set config). They cannot be queried, nor can their host list be used to discover the current replica set configuration; however, the client may monitor this server in hope that it transitions to a more useful state.
`MongoDB\Driver\Server::TYPE_LOAD_BALANCER`
  Load balancer server type, returned by MongoDB\Driver\Server::getType().

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.11.0 | Added the `MongoDB\Driver\Server::TYPE_LOAD_BALANCER` constant.

# MongoDB\Driver\Server::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Server::__construct — Create a new Server (not used)

### Açıklama

final private function MongoDB\Driver\Server::__construct()

MongoDB\Driver\Server objects are created internally by MongoDB\Driver\Manager when a database connection is established and may be returned by MongoDB\Driver\Manager::getServers() and MongoDB\Driver\Manager::selectServer().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::getServers() - Return the servers to which this manager is connected
- MongoDB\Driver\Manager::selectServer() - Select a server matching a read preference

# MongoDB\Driver\Server::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeBulkWrite — Execute one or more write operations on this server

### Açıklama

final public function MongoDB\Driver\Server::executeBulkWrite(string `$namespace`, MongoDB\Driver\BulkWrite `$bulk`, ?array `$options` = `null`): MongoDB\Driver\WriteResult

Executes one or more write operations on this server.

A MongoDB\Driver\BulkWrite can be constructed with one or more write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send operations of the same type to the server in as few requests as possible to optimize round trips.

The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`bulk` (MongoDB\Driver\BulkWrite)

  The write(s) to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

### Dönen Değerler

Returns MongoDB\Driver\WriteResult on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` does not contain any write operations.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` has already been executed. MongoDB\Driver\BulkWrite objects may not be executed multiple times.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\BulkWriteException on any write failure (e.g. write error, failure to apply a write concern)
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\WriteConcern instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\WriteConcern object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\WriteConcern object.
PECL mongodb 1.3.0 | MongoDB\Driver\Exception\InvalidArgumentException is now thrown if `bulk` does not contain any write operations. Previously, a MongoDB\Driver\Exception\BulkWriteException was thrown.

### Notlar

> Bilginize: It is the caller's responsibility to ensure that the server is capable of executing the write operation. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

### Ayrıca Bakınız

- MongoDB\Driver\BulkWrite
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations

# MongoDB\Driver\Server::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Server::executeBulkWriteCommand — Execute write operations on this server using the bulkWrite command

### Açıklama

final public function MongoDB\Driver\Server::executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand `$bulk`, ?array `$options` = `null`): MongoDB\Driver\BulkWriteCommandResult

Executes one or more write operations on this server using the » bulkWrite command introduced in MongoDB 8.0.

A MongoDB\Driver\BulkWriteCommand can be constructed with one or more write operations of varying types (e.g. inserts, updates, and deletes). Each write operation may target a different collection.

The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`bulk` (MongoDB\Driver\BulkWriteCommand)
  The write(s) to execute.
`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

### Dönen Değerler

Returns MongoDB\Driver\BulkWriteCommandResult on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` does not contain any write operations.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `bulk` has already been executed. MongoDB\Driver\BulkWriteCommand objects may not be executed multiple times.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\BulkWriteCommandException on any write failure (e.g. command failure, write or write concern error)
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommand
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command

# MongoDB\Driver\Server::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeCommand — Execute a database command on this server

### Açıklama

final public function MongoDB\Driver\Server::executeCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on this server.

This method applies no special logic to the command. The Default values for the `"readPreference"`, `"readConcern"`, and `"writeConcern"` options will be inferred from an active transaction (indicated by the `"session"` option). If there is no active transaction, a primary read preference will be used for server selection.

Default values will not be inferred from the connection URI. Users are therefore encouraged to use specific read and/or write command methods if possible.

> Bilginize: The `"readPreference"` option does not control the server to which the driver issues the operation; it will always be executed on this server object. Instead, it may be used when issuing the operation to a secondary (from a replica set connection, not standalone) or mongos node to ensure that the driver sets the wire protocol accordingly or adds the read preference to the operation, respectively.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command, issuing a write command to a secondary).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\ReadPreference instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\ReadPreference object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\ReadPreference object.

### Notlar

> Bilginize: It is the caller's responsibility to ensure that the server is capable of executing the write operation. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Server::executeReadCommand() - Execute a database command that reads on this server
- MongoDB\Driver\Server::executeReadWriteCommand() - Execute a database command that reads and writes on this server
- MongoDB\Driver\Server::executeWriteCommand() - Execute a database command that writes on this server
- MongoDB\Driver\Manager::executeCommand() - Execute a database command

# MongoDB\Driver\Server::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeQuery — Execute a database query on this server

### Açıklama

final public function MongoDB\Driver\Server::executeQuery(string `$namespace`, MongoDB\Driver\Query `$query`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the query on this server.

Default values for the `"readPreference"` option and Query's `"readConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

> Bilginize: The `"readPreference"` option does not control the server to which the driver issues the operation; it will always be executed on this server object. Instead, it may be used when issuing the operation to a secondary (from a replica set connection, not standalone) or mongos node to ensure that the driver sets the wire protocol accordingly or adds the read preference to the operation, respectively.

### Bağımsız Değişkenler

`namespace` (string)

  A fully qualified namespace (e.g. `"databaseName.collectionName"`).

`query` (MongoDB\Driver\Query)

  The query to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid query operators).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `options` parameter no longer accepts a MongoDB\Driver\ReadPreference instance.
PECL mongodb 1.21.0 | Passing a MongoDB\Driver\ReadPreference object as `options` is deprecated and will be removed in 2.0.
PECL mongodb 1.4.0 | The third parameter is now an `options` array. For backwards compatibility, this parameter will still accept a MongoDB\Driver\ReadPreference object.

### Ayrıca Bakınız

- MongoDB\Driver\Cursor
- MongoDB\Driver\Query
- MongoDB\Driver\ReadPreference
- MongoDB\Driver\Manager::executeQuery() - Execute a database query

# MongoDB\Driver\Server::executeReadCommand

(mongodb >=1.4.0)

MongoDB\Driver\Server::executeReadCommand — Execute a database command that reads on this server

### Açıklama

final public function MongoDB\Driver\Server::executeReadCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on this server, irrespective of the `"readPreference"` option.

This method will apply logic that is specific to commands that read (e.g. » distinct). Default values for the `"readPreference"` and `"readConcern"` options will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

> Bilginize: The `"readPreference"` option does not control the server to which the driver issues the operation; it will always be executed on this server object. Instead, it may be used when issuing the operation to a secondary (from a replica set connection, not standalone) or mongos node to ensure that the driver sets the wire protocol accordingly or adds the read preference to the operation, respectively.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  readPreference | MongoDB\Driver\ReadPreference | A read preference to use for selecting a server for the operation.
  session | MongoDB\Driver\Session | A session to associate with the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
- MongoDB\Driver\Server::executeReadWriteCommand() - Execute a database command that reads and writes on this server
- MongoDB\Driver\Server::executeWriteCommand() - Execute a database command that writes on this server
- MongoDB\Driver\Manager::executeReadCommand() - Execute a database command that reads

# MongoDB\Driver\Server::executeReadWriteCommand

(mongodb >=1.4.0)

MongoDB\Driver\Server::executeReadWriteCommand — Execute a database command that reads and writes on this server

### Açıklama

final public function MongoDB\Driver\Server::executeReadWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on this server.

This method will apply logic that is specific to commands that read and write (e.g. » aggregate). Default values for the `"readConcern"` and `"writeConcern"` options will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  readConcern | MongoDB\Driver\ReadConcern | A read concern to apply to the operation. This option is available in MongoDB 3.2+ and will result in an exception at execution time if specified for an older server version.
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.

### Notlar

> Bilginize: It is the caller's responsibility to ensure that the server is capable of executing the write operation. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
- MongoDB\Driver\Server::executeReadCommand() - Execute a database command that reads on this server
- MongoDB\Driver\Server::executeWriteCommand() - Execute a database command that writes on this server
- MongoDB\Driver\Manager::executeReadWriteCommand() - Execute a database command that reads and writes

# MongoDB\Driver\Server::executeWriteCommand

(mongodb >=1.4.0)

MongoDB\Driver\Server::executeWriteCommand — Execute a database command that writes on this server

### Açıklama

final public function MongoDB\Driver\Server::executeWriteCommand(string `$db`, MongoDB\Driver\Command `$command`, ?array `$options` = `null`): MongoDB\Driver\Cursor

Executes the command on this server.

This method will apply logic that is specific to commands that write (e.g. » drop). The default value for the `"writeConcern"` option will be inferred from an active transaction (indicated by the `"session"` option), followed by the connection URI.

> Bilginize: This method is not intended to be used to execute » insert, » update, or » delete commands. Users are encouraged to use MongoDB\Driver\Server::executeBulkWrite() for those operations.

### Bağımsız Değişkenler

`db` (string)

  The name of the database on which to execute the command.

`command` (MongoDB\Driver\Command)

  The command to execute.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | A session to associate with the operation.
  writeConcern | MongoDB\Driver\WriteConcern | A write concern to apply to the operation.

  Uyarı

  If you are using a `"session"` which has a transaction in progress, you cannot specify a `"readConcern"` or `"writeConcern"` option. This will result in an MongoDB\Driver\Exception\InvalidArgumentException being thrown. Instead, you should set these two options when you create the transaction with MongoDB\Driver\Session::startTransaction().

### Dönen Değerler

Returns MongoDB\Driver\Cursor on success.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used with an associated transaction in combination with a `"readConcern"` or `"writeConcern"` option.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the `"session"` option is used in combination with an unacknowledged write concern.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
- Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
- Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the `"session"` option is used in combination with an unacknowledged write concern.

### Notlar

> Bilginize: It is the caller's responsibility to ensure that the server is capable of executing the write operation. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

### Ayrıca Bakınız

- MongoDB\Driver\Command
- MongoDB\Driver\Cursor
- MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
- MongoDB\Driver\Server::executeReadCommand() - Execute a database command that reads on this server
- MongoDB\Driver\Server::executeReadWriteCommand() - Execute a database command that reads and writes on this server
- MongoDB\Driver\Manager::executeWriteCommand() - Execute a database command that writes

# MongoDB\Driver\Server::getHost

(mongodb >=1.0.0)

MongoDB\Driver\Server::getHost — Returns the hostname of this server

### Açıklama

final public function MongoDB\Driver\Server::getHost(): string

Returns the hostname of this server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Server::getHost() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");
    $server = $manager->selectServer();

    var_dump($server->getHost());

    ?>

Yukarıdaki örneğin çıktısı:

    string(9) "localhost"

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server
- MongoDB\Driver\ServerDescription::getHost() - Returns the hostname of this server

# MongoDB\Driver\Server::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\Server::getInfo — Returns an array of information describing this server

### Açıklama

final public function MongoDB\Driver\Server::getInfo(): array

Returns an array of information describing the server. This array is derived from the most recent » hello command response obtained through » server monitoring.

> Bilginize: When the driver is connected to a load balancer, this method will return the backing server's » hello command response from the initial connection handshake. This is in contrast to other methods (e.g. MongoDB\Driver\Server::getType()), which will return information about the load balancer itself.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of information describing this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Server::getInfo() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/');

    $rp = new MongoDB\Driver\ReadPreference('primary');
    $server = $manager->selectServer($rp);

    var_dump($server->getInfo());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(23) {
      ["helloOk"]=>
      bool(true)
      ["topologyVersion"]=>
      array(2) {
        ["processId"]=>
        object(MongoDB\BSON\ObjectId)#4 (1) {
          ["oid"]=>
          string(24) "617b6d696a3a89d2f77e6df0"
        }
        ["counter"]=>
        int(6)
      }
      ["hosts"]=>
      array(1) {
        [0]=>
        string(15) "localhost:27017"
      }
      ["setName"]=>
      string(3) "rs0"
      ["setVersion"]=>
      int(1)
      ["ismaster"]=>
      bool(true)
      ["secondary"]=>
      bool(false)
      ["primary"]=>
      string(15) "localhost:27017"
      ["me"]=>
      string(15) "localhost:27017"
      ["electionId"]=>
      object(MongoDB\BSON\ObjectId)#5 (1) {
        ["oid"]=>
        string(24) "7fffffff0000000000000001"
      }
      ["lastWrite"]=>
      array(4) {
        ["opTime"]=>
        array(2) {
          ["ts"]=>
          object(MongoDB\BSON\Timestamp)#6 (2) {
            ["increment"]=>
            string(1) "1"
            ["timestamp"]=>
            string(10) "1635478989"
          }
          ["t"]=>
          int(1)
        }
        ["lastWriteDate"]=>
        object(MongoDB\BSON\UTCDateTime)#7 (1) {
          ["milliseconds"]=>
          string(13) "1635478989000"
        }
        ["majorityOpTime"]=>
        array(2) {
          ["ts"]=>
          object(MongoDB\BSON\Timestamp)#8 (2) {
            ["increment"]=>
            string(1) "1"
            ["timestamp"]=>
            string(10) "1635478989"
          }
          ["t"]=>
          int(1)
        }
        ["majorityWriteDate"]=>
        object(MongoDB\BSON\UTCDateTime)#9 (1) {
          ["milliseconds"]=>
          string(13) "1635478989000"
        }
      }
      ["maxBsonObjectSize"]=>
      int(16777216)
      ["maxMessageSizeBytes"]=>
      int(48000000)
      ["maxWriteBatchSize"]=>
      int(100000)
      ["localTime"]=>
      object(MongoDB\BSON\UTCDateTime)#10 (1) {
        ["milliseconds"]=>
        string(13) "1635478992136"
      }
      ["logicalSessionTimeoutMinutes"]=>
      int(30)
      ["connectionId"]=>
      int(3)
      ["minWireVersion"]=>
      int(0)
      ["maxWireVersion"]=>
      int(13)
      ["readOnly"]=>
      bool(false)
      ["ok"]=>
      float(1)
      ["$clusterTime"]=>
      array(2) {
        ["clusterTime"]=>
        object(MongoDB\BSON\Timestamp)#11 (2) {
          ["increment"]=>
          string(1) "1"
          ["timestamp"]=>
          string(10) "1635478989"
        }
        ["signature"]=>
        array(2) {
          ["hash"]=>
          object(MongoDB\BSON\Binary)#12 (2) {
            ["data"]=>
            string(20) ""
            ["type"]=>
            int(0)
          }
          ["keyId"]=>
          int(0)
        }
      }
      ["operationTime"]=>
      object(MongoDB\BSON\Timestamp)#13 (2) {
        ["increment"]=>
        string(1) "1"
        ["timestamp"]=>
        string(10) "1635478989"
      }
    }

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.11.0 | When the driver is connected to a load balancer, this method returns the backing server's `hello` command response from the initial connection handshake.

### Ayrıca Bakınız

- MongoDB\Driver\ServerDescription::getHelloResponse() - Returns the server's most recent "hello" response
- » hello command in the MongoDB manual
- » Server Discovery and Monitoring Specification

# MongoDB\Driver\Server::getLatency

(mongodb >=1.0.0)

MongoDB\Driver\Server::getLatency — Returns the latency of this server in milliseconds

### Açıklama

final public function MongoDB\Driver\Server::getLatency(): ?integer

Returns the latency of this server in milliseconds. This is the client's measured » round trip time of a `hello` command.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the latency of this server in milliseconds, or `null` if no latency has been measured (e.g. client is connected to a load balancer).

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.11.0 | This method will return `null` if no latency has been measured. In earlier versions, an integer was always returned and an unset value might be reported as `-1`.

### Örnekler

Örnek 1 MongoDB\Driver\Server::getLatency() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");
    $server = $manager->selectServer();

    var_dump($server->getLatency());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(592)

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server
- MongoDB\Driver\ServerDescription::getRoundTripTime() - Returns the server's round trip time in milliseconds
- » Server Discovery and Monitoring Specification

# MongoDB\Driver\Server::getPort

(mongodb >=1.0.0)

MongoDB\Driver\Server::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Server::getPort(): int

Returns the port on which this server is listening.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\Server::getPort() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");
    $server = $manager->selectServer();

    var_dump($server->getPort());

    ?>

Yukarıdaki örneğin çıktısı:

    int(27017)

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server
- MongoDB\Driver\ServerDescription::getPort() - Returns the port on which this server is listening

# MongoDB\Driver\Server::getServerDescription

(mongodb >=1.13.0)

MongoDB\Driver\Server::getServerDescription — Returns a ServerDescription for this server

### Açıklama

final public function MongoDB\Driver\Server::getServerDescription(): MongoDB\Driver\ServerDescription

Returns a MongoDB\Driver\ServerDescription for this server. This is an immutable value object that will describe the server at the time this method is called.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a MongoDB\Driver\ServerDescription for this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Server::getTags

(mongodb >=1.0.0)

MongoDB\Driver\Server::getTags — Returns an array of tags describing this server in a replica set

### Açıklama

final public function MongoDB\Driver\Server::getTags(): array

Returns an array of » tags used to describe this server in a replica set. The array will contain zero or more string key and value pairs.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of tags used to describe this server in a replica set.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

# MongoDB\Driver\Server::getType

(mongodb >=1.0.0)

MongoDB\Driver\Server::getType — Returns an integer denoting the type of this server

### Açıklama

final public function MongoDB\Driver\Server::getType(): int

Returns an int denoting the type of this server. The value will correlate with a MongoDB\Driver\Server constant.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an int denoting the type of this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server
- MongoDB\Driver\ServerDescription::getType() - Returns a string denoting the type of this server

# MongoDB\Driver\Server::isArbiter

(mongodb >=1.0.0)

MongoDB\Driver\Server::isArbiter — Checks if this server is an arbiter member of a replica set

### Açıklama

final public function MongoDB\Driver\Server::isArbiter(): bool

Returns whether this server is an » arbiter member of a replica set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this server is an arbiter member of a replica set, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

# MongoDB\Driver\Server::isHidden

(mongodb >=1.0.0)

MongoDB\Driver\Server::isHidden — Checks if this server is a hidden member of a replica set

### Açıklama

final public function MongoDB\Driver\Server::isHidden(): bool

Returns whether this server is a » hidden member of a replica set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this server is a hidden member of a replica set, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

# MongoDB\Driver\Server::isPassive

(mongodb >=1.0.0)

MongoDB\Driver\Server::isPassive — Checks if this server is a passive member of a replica set

### Açıklama

final public function MongoDB\Driver\Server::isPassive(): bool

Returns whether this server is a » passive member of a replica set (i.e. its priority is `0`).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this server is a passive member of a replica set, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

# MongoDB\Driver\Server::isPrimary

(mongodb >=1.0.0)

MongoDB\Driver\Server::isPrimary — Checks if this server is a primary member of a replica set

### Açıklama

final public function MongoDB\Driver\Server::isPrimary(): bool

Returns whether this server is a » primary member of a replica set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this server is a primary member of a replica set, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

# MongoDB\Driver\Server::isSecondary

(mongodb >=1.0.0)

MongoDB\Driver\Server::isSecondary — Checks if this server is a secondary member of a replica set

### Açıklama

final public function MongoDB\Driver\Server::isSecondary(): bool

Returns whether this server is a » secondary member of a replica set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if this server is a secondary member of a replica set, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server

## İçindekiler

- MongoDB\Driver\Server::__construct — Create a new Server (not used)
- MongoDB\Driver\Server::executeBulkWrite — Execute one or more write operations on this server
- MongoDB\Driver\Server::executeBulkWriteCommand — Execute write operations on this server using the bulkWrite command
- MongoDB\Driver\Server::executeCommand — Execute a database command on this server
- MongoDB\Driver\Server::executeQuery — Execute a database query on this server
- MongoDB\Driver\Server::executeReadCommand — Execute a database command that reads on this server
- MongoDB\Driver\Server::executeReadWriteCommand — Execute a database command that reads and writes on this server
- MongoDB\Driver\Server::executeWriteCommand — Execute a database command that writes on this server
- MongoDB\Driver\Server::getHost — Returns the hostname of this server
- MongoDB\Driver\Server::getInfo — Returns an array of information describing this server
- MongoDB\Driver\Server::getLatency — Returns the latency of this server in milliseconds
- MongoDB\Driver\Server::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Server::getServerDescription — Returns a ServerDescription for this server
- MongoDB\Driver\Server::getTags — Returns an array of tags describing this server in a replica set
- MongoDB\Driver\Server::getType — Returns an integer denoting the type of this server
- MongoDB\Driver\Server::isArbiter — Checks if this server is an arbiter member of a replica set
- MongoDB\Driver\Server::isHidden — Checks if this server is a hidden member of a replica set
- MongoDB\Driver\Server::isPassive — Checks if this server is a passive member of a replica set
- MongoDB\Driver\Server::isPrimary — Checks if this server is a primary member of a replica set
- MongoDB\Driver\Server::isSecondary — Checks if this server is a secondary member of a replica set

# The MongoDB\Driver\ServerDescription class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\ServerDescription class is a value object that represents a server to which the driver is connected. Instances of this class are returned by MongoDB\Driver\Server::getServerDescription() and MongoDB\Driver\Monitoring\ServerChangedEvent methods.

## Sınıf Sözdizimi

final class MongoDB\Driver\ServerDescription {
/* Sabitler */
const string TYPE_UNKNOWN = "Unknown";
const string TYPE_STANDALONE = "Standalone";
const string TYPE_MONGOS = "Mongos";
const string TYPE_POSSIBLE_PRIMARY = "PossiblePrimary";
const string TYPE_RS_PRIMARY = "RSPrimary";
const string TYPE_RS_SECONDARY = "RSSecondary";
const string TYPE_RS_ARBITER = "RSArbiter";
const string TYPE_RS_OTHER = "RSOther";
const string TYPE_RS_GHOST = "RSGhost";
const string TYPE_LOAD_BALANCER = "LoadBalancer";
/* Yöntemler */
final public function getHelloResponse(): array
final public function getHost(): string
final public function getLastUpdateTime(): int
final public function getPort(): int
final public function getRoundTripTime(): ?int
final public function getType(): string
}

## Öntanımlı Sabitler

`MongoDB\Driver\ServerDescription::TYPE_UNKNOWN`
  Unknown server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_STANDALONE`
  Standalone server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_MONGOS`
  Mongos server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_POSSIBLE_PRIMARY`
  Replica set possible primary server type, returned by MongoDB\Driver\ServerDescription::getType(). A server may be identified as a possible primary if it has not yet been checked but another memory of the replica set thinks it is the primary.
`MongoDB\Driver\ServerDescription::TYPE_RS_PRIMARY`
  Replica set primary server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_RS_SECONDARY`
  Replica set secondary server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_RS_ARBITER`
  Replica set arbiter server type, returned by MongoDB\Driver\ServerDescription::getType().
`MongoDB\Driver\ServerDescription::TYPE_RS_OTHER`
  Replica set other server type, returned by MongoDB\Driver\ServerDescription::getType(). Such servers may be hidden, starting up, or recovering. They cannot be queried, but their hosts lists are useful for discovering the current replica set configuration.
`MongoDB\Driver\ServerDescription::TYPE_RS_GHOST`
  Replica set ghost server type, returned by MongoDB\Driver\ServerDescription::getType(). Servers may be identified as such in at least three situations: briefly during server startup; in an uninitialized replica set; or when the server is shunned (i.e. removed from the replica set config). They cannot be queried, nor can their host list be used to discover the current replica set configuration; however, the client may monitor this server in hope that it transitions to a more useful state.
`MongoDB\Driver\ServerDescription::TYPE_LOAD_BALANCER`
  Load balancer server type, returned by MongoDB\Driver\ServerDescription::getType().

# MongoDB\Driver\ServerDescription::getHelloResponse

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getHelloResponse — Returns the server's most recent "hello" response

### Açıklama

final public function MongoDB\Driver\ServerDescription::getHelloResponse(): array

Returns an array of information describing the server. This array is derived from the most recent (at the time the MongoDB\Driver\ServerDescription was constructed) » hello command response obtained through » server monitoring.

> Bilginize: When the driver is connected to a load balancer, this method will return an empty array since load balancers are not monitored. This is in contrast to MongoDB\Driver\Server::getInfo(), which would return the backing server's » hello command response from the initial connection handshake.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of information describing this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getInfo() - Returns an array of information describing this server
- » hello command in the MongoDB manual
- » Server Discovery and Monitoring Specification

# MongoDB\Driver\ServerDescription::getHost

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getHost — Returns the hostname of this server

### Açıklama

final public function MongoDB\Driver\ServerDescription::getHost(): string

Returns the hostname of this server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getHost() - Returns the hostname of this server

# MongoDB\Driver\ServerDescription::getLastUpdateTime

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getLastUpdateTime — Returns the server's last update time in microseconds

### Açıklama

final public function MongoDB\Driver\ServerDescription::getLastUpdateTime(): int

Returns the server's last update time in microseconds.

> Bilginize: The returned value is a monotonic timestamp, which starts at an arbitrary point. As such, it is only suitable to compare with other return values from MongoDB\Driver\ServerDescription::getLastUpdateTime().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the server's last update time in microseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\ServerDescription::getPort

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\ServerDescription::getPort(): int

Returns the port on which this server is listening.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getPort() - Returns the port on which this server is listening

# MongoDB\Driver\ServerDescription::getRoundTripTime

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getRoundTripTime — Returns the server's round trip time in milliseconds

### Açıklama

final public function MongoDB\Driver\ServerDescription::getRoundTripTime(): ?int

Returns the server's round trip time in milliseconds. This is the client's measurement of the duration of a » hello command.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the server's round trip time in milliseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getLatency() - Returns the latency of this server in milliseconds

# MongoDB\Driver\ServerDescription::getType

(mongodb >=1.13.0)

MongoDB\Driver\ServerDescription::getType — Returns a string denoting the type of this server

### Açıklama

final public function MongoDB\Driver\ServerDescription::getType(): string

Returns a string denoting the type of this server. The value will correlate with a MongoDB\Driver\ServerDescription constant.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string denoting the type of this server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Server::getType() - Returns an integer denoting the type of this server

## İçindekiler

- MongoDB\Driver\ServerDescription::getHelloResponse — Returns the server's most recent "hello" response
- MongoDB\Driver\ServerDescription::getHost — Returns the hostname of this server
- MongoDB\Driver\ServerDescription::getLastUpdateTime — Returns the server's last update time in microseconds
- MongoDB\Driver\ServerDescription::getPort — Returns the port on which this server is listening
- MongoDB\Driver\ServerDescription::getRoundTripTime — Returns the server's round trip time in milliseconds
- MongoDB\Driver\ServerDescription::getType — Returns a string denoting the type of this server

# The MongoDB\Driver\TopologyDescription class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\TopologyDescription class is a value object that represents a topology to which the driver is connected. Instances of this class are returned by MongoDB\Driver\Monitoring\TopologyChangedEvent methods.

## Sınıf Sözdizimi

final class MongoDB\Driver\TopologyDescription {
/* Sabitler */
const string TYPE_UNKNOWN = "Unknown";
const string TYPE_SINGLE = "Single";
const string TYPE_SHARDED = "Sharded";
const string TYPE_REPLICA_SET_NO_PRIMARY = "ReplicaSetNoPrimary";
const string TYPE_REPLICA_SET_WITH_PRIMARY = "ReplicaSetWithPrimary";
const string TYPE_LOAD_BALANCED = "LoadBalanced";
/* Yöntemler */
final public function getServers(): array
final public function getType(): string
final public function hasReadableServer(?MongoDB\Driver\ReadPreference `$readPreference` = `null`): bool
final public function hasWritableServer(): bool
}

## Öntanımlı Sabitler

`MongoDB\Driver\TopologyDescription::TYPE_UNKNOWN`
  Unknown topology type, returned by MongoDB\Driver\TopologyDescription::getType().
`MongoDB\Driver\TopologyDescription::TYPE_SINGLE`
  Single server (i.e. direct connection), returned by MongoDB\Driver\TopologyDescription::getType().
`MongoDB\Driver\TopologyDescription::TYPE_SHARDED`
  Sharded cluster, returned by MongoDB\Driver\TopologyDescription::getType().
`MongoDB\Driver\TopologyDescription::TYPE_REPLICA_SET_NO_PRIMARY`
  Replica set with no primary server, returned by MongoDB\Driver\TopologyDescription::getType().
`MongoDB\Driver\TopologyDescription::TYPE_REPLICA_SET_WITH_PRIMARY`
  Replica set with a primary server, returned by MongoDB\Driver\TopologyDescription::getType().
`MongoDB\Driver\TopologyDescription::TYPE_LOAD_BALANCED`
  Load balanced topology, returned by MongoDB\Driver\TopologyDescription::getType().

# MongoDB\Driver\TopologyDescription::getServers

(mongodb >=1.13.0)

MongoDB\Driver\TopologyDescription::getServers — Returns the servers in the topology

### Açıklama

final public function MongoDB\Driver\TopologyDescription::getServers(): array

Returns an array of MongoDB\Driver\ServerDescription objects corresponding to the known servers in the topology.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of MongoDB\Driver\ServerDescription objects corresponding to the known servers in the topology.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\TopologyDescription::getType

(mongodb >=1.13.0)

MongoDB\Driver\TopologyDescription::getType — Returns a string denoting the type of this topology

### Açıklama

final public function MongoDB\Driver\TopologyDescription::getType(): string

Returns a string denoting the type of this topology. The value will correlate with a MongoDB\Driver\TopologyDescription constant.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string denoting the type of this topology.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\TopologyDescription::hasReadableServer

(mongodb >=1.13.0)

MongoDB\Driver\TopologyDescription::hasReadableServer — Returns whether the topology has a readable server

### Açıklama

final public function MongoDB\Driver\TopologyDescription::hasReadableServer(?MongoDB\Driver\ReadPreference `$readPreference` = `null`): bool

Returns whether the topology has a readable server or, if `readPreference` is specified, a server matching the specified read preference.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns whether the topology has a readable server or, if `readPreference` is specified, a server matching the specified read preference.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\TopologyDescription::hasWritableServer

(mongodb >=1.13.0)

MongoDB\Driver\TopologyDescription::hasWritableServer — Returns whether the topology has a writable server

### Açıklama

final public function MongoDB\Driver\TopologyDescription::hasWritableServer(): bool

Returns whether the topology has a writable server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns whether the topology has a writable server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\TopologyDescription::getServers — Returns the servers in the topology
- MongoDB\Driver\TopologyDescription::getType — Returns a string denoting the type of this topology
- MongoDB\Driver\TopologyDescription::hasReadableServer — Returns whether the topology has a readable server
- MongoDB\Driver\TopologyDescription::hasWritableServer — Returns whether the topology has a writable server

# The MongoDB\Driver\WriteConcernError class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\WriteConcernError class encapsulates information about a write concern error and may be returned by MongoDB\Driver\WriteResult::getWriteConcernError().

## Sınıf Sözdizimi

final class MongoDB\Driver\WriteConcernError {
/* Özellikler */
public readonly string $message;
public readonly int $code;
public readonly ?object $info;
/* Yöntemler */
final public function getCode(): int
final public function getInfo(): ?object
final public function getMessage(): string
}

## Özellikler

message
  The error message.
code
  The error code.
info
  Additional information for the error, or `null` if not available.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\WriteConcernError::getCode

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getCode — Returns the WriteConcernError's error code

### Açıklama

final public function MongoDB\Driver\WriteConcernError::getCode(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteConcernError's error code.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcernError::getCode() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

    try {
        $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteConcernError()->getCode());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(64)

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcernError::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getInfo — Returns metadata document for the WriteConcernError

### Açıklama

final public function MongoDB\Driver\WriteConcernError::getInfo(): ?object

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the metadata document for the WriteConcernError, or `null` if no metadata is available.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcernError::getInfo() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

    try {
        $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteConcernError()->getInfo());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#1 (1) {
      ["wtimeout"]=>
      bool(true)
    }

### Ayrıca Bakınız

- » Write Concern reference

# MongoDB\Driver\WriteConcernError::getMessage

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getMessage — Returns the WriteConcernError's error message

### Açıklama

final public function MongoDB\Driver\WriteConcernError::getMessage(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteConcernError's error message.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteConcernError::getMessage() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

    try {
        $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteConcernError()->getMessage());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(33) "waiting for replication timed out"

### Ayrıca Bakınız

- » Write Concern reference

## İçindekiler

- MongoDB\Driver\WriteConcernError::getCode — Returns the WriteConcernError's error code
- MongoDB\Driver\WriteConcernError::getInfo — Returns metadata document for the WriteConcernError
- MongoDB\Driver\WriteConcernError::getMessage — Returns the WriteConcernError's error message

# The MongoDB\Driver\WriteError class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\WriteError class encapsulates information about a write error and may be returned as an array element from MongoDB\Driver\WriteResult::getWriteErrors().

## Sınıf Sözdizimi

final class MongoDB\Driver\WriteError {
/* Özellikler */
public readonly string $message;
public readonly int $code;
public readonly int $index;
public readonly ?object $info;
/* Yöntemler */
final public function getCode(): int
final public function getIndex(): int
final public function getInfo(): ?object
final public function getMessage(): string
}

## Özellikler

message
  The error message.
code
  The error code.
index
  The index of the write operation within the MongoDB\Driver\BulkWrite that caused the error.
info
  Additional information for the error, or `null` if not available.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\WriteError::getCode

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getCode — Returns the WriteError's error code

### Açıklama

final public function MongoDB\Driver\WriteError::getCode(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteError's error code.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteError::getCode() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 1]);

    try {
        $manager->executeBulkWrite('db.collection', $bulk);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteErrors()[0]->getCode());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(11000)

# MongoDB\Driver\WriteError::getIndex

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getIndex — Returns the index of the write operation corresponding to this WriteError

### Açıklama

final public function MongoDB\Driver\WriteError::getIndex(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the index of the write operation (from MongoDB\Driver\BulkWrite) corresponding to this WriteError.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteError::getIndex() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 1]);

    try {
        $manager->executeBulkWrite('db.collection', $bulk);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteErrors()[0]->getIndex());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWrite

# MongoDB\Driver\WriteError::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getInfo — Returns metadata document for the WriteError

### Açıklama

final public function MongoDB\Driver\WriteError::getInfo(): ?object

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the metadata document for the WriteError, or `null` if no metadata is available.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\WriteError::getMessage

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getMessage — Returns the WriteError's error message

### Açıklama

final public function MongoDB\Driver\WriteError::getMessage(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the WriteError's error message.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteError::getMessage() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 1]);

    try {
        $manager->executeBulkWrite('db.collection', $bulk);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteErrors()[0]->getMessage());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(70) "E11000 duplicate key error index: db.collection.$_id_ dup key: { : 1 }"

## İçindekiler

- MongoDB\Driver\WriteError::getCode — Returns the WriteError's error code
- MongoDB\Driver\WriteError::getIndex — Returns the index of the write operation corresponding to this WriteError
- MongoDB\Driver\WriteError::getInfo — Returns metadata document for the WriteError
- MongoDB\Driver\WriteError::getMessage — Returns the WriteError's error message

# The MongoDB\Driver\WriteResult class

(mongodb >=1.0.0)

## Giriş

The MongoDB\Driver\WriteResult class encapsulates information about an executed MongoDB\Driver\BulkWrite and may be returned by MongoDB\Driver\Manager::executeBulkWrite().

## Sınıf Sözdizimi

final class MongoDB\Driver\WriteResult {
/* Özellikler */
public readonly ?int $insertedCount;
public readonly ?int $matchedCount;
public readonly ?int $modifiedCount;
public readonly ?int $deletedCount;
public readonly ?int $upsertedCount;
public readonly MongoDB\Driver\Server $server;
public readonly array $upsertedIds;
public readonly array $writeErrors;
public readonly ?MongoDB\Driver\WriteConcernError $writeConcernError;
public readonly ?MongoDB\Driver\WriteConcern $writeConcern;
public readonly array $errorReplies;
/* Yöntemler */
final public function getDeletedCount(): int
final public function getInsertedCount(): int
final public function getMatchedCount(): int
final public function getModifiedCount(): int
final public function getServer(): MongoDB\Driver\Server
final public function getUpsertedCount(): int
final public function getUpsertedIds(): array
final public function getWriteConcernError(): ?MongoDB\Driver\WriteConcernError
final public function getWriteErrors(): array
final public function isAcknowledged(): bool
}

## Özellikler

insertedCount
  The number of documents inserted (excluding upserts), or `null` if the write concern did not request acknowledgement.
matchedCount
  The number of documents matched by update and replace operations, or `null` if the write concern did not request acknowledgement.
modifiedCount
  The number of documents modified by update and replace operations, or `null` if the write concern did not request acknowledgement or if the server did not report this information.
deletedCount
  The number of documents deleted, or `null` if the write concern did not request acknowledgement.
upsertedCount
  The number of documents upserted, or `null` if the write concern did not request acknowledgement.
server
  The server that executed the bulk write.
upsertedIds
  An array of `_id` values for upserted documents. Array keys will correspond to the index of the write operation from MongoDB\Driver\BulkWrite.
writeErrors
  An array of MongoDB\Driver\WriteErrors for any write errors that occurred during execution.
writeConcernError
  The MongoDB\Driver\WriteConcernError that occurred, or `null` if no write concern error occurred.
writeConcern
  The MongoDB\Driver\WriteConcern used for the bulk write, or `null` if not available.
errorReplies
  An array of error reply documents from the server.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\WriteResult::getDeletedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getDeletedCount — Returns the number of documents deleted

### Açıklama

final public function MongoDB\Driver\WriteResult::getDeletedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of documents deleted.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method now throws an exception when called for an unacknowledged write instead of returning `null`.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getDeletedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getDeletedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getInsertedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getInsertedCount — Returns the number of documents inserted (excluding upserts)

### Açıklama

final public function MongoDB\Driver\WriteResult::getInsertedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of documents inserted (excluding upserts).

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method now throws an exception when called for an unacknowledged write instead of returning `null`.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getInsertedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getInsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getMatchedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getMatchedCount — Returns the number of documents selected for update

### Açıklama

final public function MongoDB\Driver\WriteResult::getMatchedCount(): int

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the matched count may be greater than the value returned by MongoDB\Driver\WriteResult::getModifiedCount().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of documents selected for update.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method now throws an exception when called for an unacknowledged write instead of returning `null`.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getMatchedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getMatchedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::getModifiedCount() - Returns the number of existing documents updated
- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getModifiedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getModifiedCount — Returns the number of existing documents updated

### Açıklama

final public function MongoDB\Driver\WriteResult::getModifiedCount(): int

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the modified count may be less than the value returned by MongoDB\Driver\WriteResult::getMatchedCount().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of existing documents updated.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method now throws an exception when called for an unacknowledged write instead of returning `null`.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getModifiedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::getMatchedCount() - Returns the number of documents selected for update
- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getServer

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getServer — Returns the server associated with this write result

### Açıklama

final public function MongoDB\Driver\WriteResult::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server associated with this write result. This is the server that executed the MongoDB\Driver\BulkWrite.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server associated with this write result.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getServer() example

    <?php

    $manager = new MongoDB\Driver\Manager;
    $server = $manager->selectServer();

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $result = $server->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getServer() == $server);

    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

### Ayrıca Bakınız

- MongoDB\Driver\Server

# MongoDB\Driver\WriteResult::getUpsertedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getUpsertedCount — Returns the number of documents inserted by an upsert

### Açıklama

final public function MongoDB\Driver\WriteResult::getUpsertedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of documents inserted by an upsert.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method now throws an exception when called for an unacknowledged write instead of returning `null`.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getUpsertedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getUpsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(2)

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::getUpsertedIds() - Returns an array of identifiers for upserted documents
- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getUpsertedIds

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getUpsertedIds — Returns an array of identifiers for upserted documents

### Açıklama

final public function MongoDB\Driver\WriteResult::getUpsertedIds(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of identifiers (i.e. `"_id"` field values) for upserted documents. The array keys will correspond to the index of the write operation (from MongoDB\Driver\BulkWrite) responsible for the upsert.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getUpsertedIds() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);
    $bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->delete(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->getUpsertedIds());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      [2]=>
      object(MongoDB\BSON\ObjectId)#4 (1) {
        ["oid"]=>
        string(24) "580e62a224f2302f191b880b"
      }
      [3]=>
      object(MongoDB\BSON\ObjectId)#5 (1) {
        ["oid"]=>
        string(24) "580e62a224f2302f191b880c"
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult::getUpsertedCount() - Returns the number of documents inserted by an upsert
- MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\WriteResult::getWriteConcernError

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getWriteConcernError — Returns any write concern error that occurred

### Açıklama

final public function MongoDB\Driver\WriteResult::getWriteConcernError(): ?MongoDB\Driver\WriteConcernError

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a MongoDB\Driver\WriteConcernError if a write concern error was encountered during the write operation, and `null` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getWriteConcernError() example

    <?php

    $manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

    try {
        $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch(MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteConcernError());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\Driver\WriteConcernError)#6 (3) {
      ["message"]=>
      string(33) "waiting for replication timed out"
      ["code"]=>
      int(64)
      ["info"]=>
      object(stdClass)#7 (1) {
        ["wtimeout"]=>
        bool(true)
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteConcern
- » Write Concern reference

# MongoDB\Driver\WriteResult::getWriteErrors

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getWriteErrors — Returns any write errors that occurred

### Açıklama

final public function MongoDB\Driver\WriteResult::getWriteErrors(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of MongoDB\Driver\WriteError objects for any write errors encountered during the write operation. The array will be empty if no write errors occurred.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::getWriteErrors() with a single error

    <?php

    $manager = new MongoDB\Driver\Manager;

    /* By default, bulk write operations are executed serially in order and
     * execution will stop after the first error.
     */
    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 2]);
    $bulk->insert(['_id' => 2]);
    $bulk->insert(['_id' => 3]);
    $bulk->insert(['_id' => 4]);
    $bulk->insert(['_id' => 4]);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteErrors());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 2 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(2)
        ["info"]=>
        NULL
      }
    }

Örnek 2 MongoDB\Driver\WriteResult::getWriteErrors() with multiple errors

    <?php

    $manager = new MongoDB\Driver\Manager;

    /* The "ordered" option may be used to allow bulk write operations to continue
     * executing after the first error is encountered.
     */
    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]);
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 2]);
    $bulk->insert(['_id' => 2]);
    $bulk->insert(['_id' => 3]);
    $bulk->insert(['_id' => 4]);
    $bulk->insert(['_id' => 4]);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        var_dump($e->getWriteResult()->getWriteErrors());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      [0]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 2 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(2)
        ["info"]=>
        NULL
      }
      [1]=>
      object(MongoDB\Driver\WriteError)#6 (4) {
        ["message"]=>
        string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 4 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(5)
        ["info"]=>
        NULL
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteError

# MongoDB\Driver\WriteResult::isAcknowledged

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::isAcknowledged — Returns whether the write was acknowledged

### Açıklama

final public function MongoDB\Driver\WriteResult::isAcknowledged(): bool

If the write is acknowledged, other count fields will be available on the MongoDB\Driver\WriteResult object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the write was acknowledged, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\WriteResult::isAcknowledged() with acknowledged write concern

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $result = $manager->executeBulkWrite('db.collection', $bulk);

    var_dump($result->isAcknowledged());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

Örnek 2 MongoDB\Driver\WriteResult::isAcknowledged() with unacknowledged write concern

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(0);

    $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);

    var_dump($result->isAcknowledged());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)

### Ayrıca Bakınız

- MongoDB\Driver\WriteConcern
- » Write Concern reference

## İçindekiler

- MongoDB\Driver\WriteResult::getDeletedCount — Returns the number of documents deleted
- MongoDB\Driver\WriteResult::getInsertedCount — Returns the number of documents inserted (excluding upserts)
- MongoDB\Driver\WriteResult::getMatchedCount — Returns the number of documents selected for update
- MongoDB\Driver\WriteResult::getModifiedCount — Returns the number of existing documents updated
- MongoDB\Driver\WriteResult::getServer — Returns the server associated with this write result
- MongoDB\Driver\WriteResult::getUpsertedCount — Returns the number of documents inserted by an upsert
- MongoDB\Driver\WriteResult::getUpsertedIds — Returns an array of identifiers for upserted documents
- MongoDB\Driver\WriteResult::getWriteConcernError — Returns any write concern error that occurred
- MongoDB\Driver\WriteResult::getWriteErrors — Returns any write errors that occurred
- MongoDB\Driver\WriteResult::isAcknowledged — Returns whether the write was acknowledged

# The MongoDB\Driver\BulkWriteCommandResult class

(mongodb >=2.1.0)

## Giriş

The MongoDB\Driver\BulkWriteCommandResult class encapsulates information about an executed MongoDB\Driver\BulkWriteCommand and is returned by MongoDB\Driver\Manager::executeBulkWriteCommand().

## Sınıf Sözdizimi

final class MongoDB\Driver\BulkWriteCommandResult {
/* Yöntemler */
final public function getDeletedCount(): int
final public function getDeleteResults(): ?MongoDB\BSON\Document
final public function getInsertedCount(): int
final public function getInsertResults(): ?MongoDB\BSON\Document
final public function getMatchedCount(): int
final public function getModifiedCount(): int
final public function getUpdateResults(): ?MongoDB\BSON\Document
final public function getUpsertedCount(): int
final public function isAcknowledged(): bool
}

# MongoDB\Driver\BulkWriteCommandResult::getDeletedCount

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getDeletedCount — Returns the number of documents deleted

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getDeletedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the total number of documents deleted by all operations.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getDeletedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getDeletedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(3)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getDeleteResults() - Returns verbose results for successful deletes
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getDeleteResults

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getDeleteResults — Returns verbose results for successful deletes

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getDeleteResults(): ?MongoDB\BSON\Document

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a document containing the result of each successful delete operation, or `null` if verbose results were not requested. The document keys will correspond to the index of the write operation from MongoDB\Driver\BulkWriteCommand.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getDeleteResults() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand(['verboseResults' => true]);
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getDeleteResults()->toPHP());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#7 (1) {
      ["4"]=>
      object(stdClass)#6 (1) {
        ["deletedCount"]=>
        object(MongoDB\BSON\Int64)#5 (1) {
          ["integer"]=>
          string(1) "3"
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getDeletedCount() - Returns the number of documents deleted
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getInsertedCount

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getInsertedCount — Returns the number of documents inserted

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getInsertedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the total number of documents inserted (excluding upserts) by all operations.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getInsertedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getInsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getInsertResults() - Returns verbose results for successful inserts
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getInsertResults

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getInsertResults — Returns verbose results for successful inserts

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getInsertResults(): ?MongoDB\BSON\Document

Since `_id` fields for inserted documents are generated by the extension, the value of `insertedId` in each result will match the return value of MongoDB\Driver\BulkWriteCommand::insertOne() for the corresponding insert operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a document containing the result of each successful insert operation, or `null` if verbose results were not requested. The document keys will correspond to the index of the write operation from MongoDB\Driver\BulkWriteCommand.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getInsertResults() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand(['verboseResults' => true]);

    $generatedId = $bulk->insertOne('db.coll', ['x' => 1]);

    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($generatedId);

    var_dump($result->getInsertResults()->toPHP());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\ObjectId)#3 (1) {
      ["oid"]=>
      string(24) "67f7ee69783dcce702097b41"
    }
    object(stdClass)#8 (1) {
      ["0"]=>
      object(stdClass)#7 (1) {
        ["insertedId"]=>
        object(MongoDB\BSON\ObjectId)#6 (1) {
          ["oid"]=>
          string(24) "67f7ee69783dcce702097b41"
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getInsertedCount() - Returns the number of documents inserted
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged
- MongoDB\Driver\BulkWriteCommand::insertOne() - Add an insertOne operation

# MongoDB\Driver\BulkWriteCommandResult::getMatchedCount

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getMatchedCount — Returns the number of documents selected for update

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getMatchedCount(): int

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the matched count may be greater than the value returned by MongoDB\Driver\BulkWriteCommandResult::getModifiedCount().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the total number of documents selected for update by all operations.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getMatchedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getMatchedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getModifiedCount() - Returns the number of existing documents updated
- MongoDB\Driver\BulkWriteCommandResult::getUpdateResults() - Returns verbose results for successful updates
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getModifiedCount

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getModifiedCount — Returns the number of existing documents updated

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getModifiedCount(): int

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the modified count may be less than the value returned by MongoDB\Driver\BulkWriteCommandResult::getMatchedCount().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the total number of existing documents updated by all operations.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getModifiedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getModifiedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getMatchedCount() - Returns the number of documents selected for update
- MongoDB\Driver\BulkWriteCommandResult::getUpdateResults() - Returns verbose results for successful updates
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getUpdateResults

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getUpdateResults — Returns verbose results for successful updates

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getUpdateResults(): ?MongoDB\BSON\Document

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a document containing the result of each successful update operation, or `null` if verbose results were not requested. The document keys will correspond to the index of the write operation from MongoDB\Driver\BulkWriteCommand.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getUpdateResults() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand(['verboseResults' => true]);
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getUpdateResults()->toPHP());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#16 (3) {
      ["1"]=>
      object(stdClass)#7 (2) {
        ["matchedCount"]=>
        object(MongoDB\BSON\Int64)#5 (1) {
          ["integer"]=>
          string(1) "1"
        }
        ["modifiedCount"]=>
        object(MongoDB\BSON\Int64)#6 (1) {
          ["integer"]=>
          string(1) "1"
        }
      }
      ["2"]=>
      object(stdClass)#11 (3) {
        ["matchedCount"]=>
        object(MongoDB\BSON\Int64)#8 (1) {
          ["integer"]=>
          string(1) "1"
        }
        ["modifiedCount"]=>
        object(MongoDB\BSON\Int64)#9 (1) {
          ["integer"]=>
          string(1) "0"
        }
        ["upsertedId"]=>
        object(MongoDB\BSON\ObjectId)#10 (1) {
          ["oid"]=>
          string(24) "67f7eb9b1f198bbcb880d575"
        }
      }
      ["3"]=>
      object(stdClass)#15 (3) {
        ["matchedCount"]=>
        object(MongoDB\BSON\Int64)#12 (1) {
          ["integer"]=>
          string(1) "1"
        }
        ["modifiedCount"]=>
        object(MongoDB\BSON\Int64)#13 (1) {
          ["integer"]=>
          string(1) "0"
        }
        ["upsertedId"]=>
        object(MongoDB\BSON\ObjectId)#14 (1) {
          ["oid"]=>
          string(24) "67f7eb9b1f198bbcb880d576"
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getMatchedCount() - Returns the number of documents selected for update
- MongoDB\Driver\BulkWriteCommandResult::getModifiedCount() - Returns the number of existing documents updated
- MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount() - Returns the number of documents upserted
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount — Returns the number of documents upserted

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the total number of documents upserted by all operations.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);
    $bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
    $bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
    $bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
    $bulk->deleteMany('db.coll', []);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->getUpsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(2)

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult::getUpdateResults() - Returns verbose results for successful updates
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() - Returns whether the write was acknowledged

# MongoDB\Driver\BulkWriteCommandResult::isAcknowledged

(mongodb >=2.1.0)

MongoDB\Driver\BulkWriteCommandResult::isAcknowledged — Returns whether the write was acknowledged

### Açıklama

final public function MongoDB\Driver\BulkWriteCommandResult::isAcknowledged(): bool

If the write is acknowledged, other fields will be available on the MongoDB\Driver\BulkWriteCommandResult object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the write was acknowledged, and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() with acknowledged write concern

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);

    $result = $manager->executeBulkWriteCommand($bulk);

    var_dump($result->isAcknowledged());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)

Örnek 2 MongoDB\Driver\BulkWriteCommandResult::isAcknowledged() with unacknowledged write concern

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand(['ordered' => false]);
    $bulk->insertOne('db.coll', ['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(0);

    $result = $manager->executeBulkWriteCommand($bulk, ['writeConcern' => $writeConcern]);

    var_dump($result->isAcknowledged());

    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)

### Ayrıca Bakınız

- MongoDB\Driver\WriteConcern
- » Write Concern reference

## İçindekiler

- MongoDB\Driver\BulkWriteCommandResult::getDeletedCount — Returns the number of documents deleted
- MongoDB\Driver\BulkWriteCommandResult::getDeleteResults — Returns verbose results for successful deletes
- MongoDB\Driver\BulkWriteCommandResult::getInsertedCount — Returns the number of documents inserted
- MongoDB\Driver\BulkWriteCommandResult::getInsertResults — Returns verbose results for successful inserts
- MongoDB\Driver\BulkWriteCommandResult::getMatchedCount — Returns the number of documents selected for update
- MongoDB\Driver\BulkWriteCommandResult::getModifiedCount — Returns the number of existing documents updated
- MongoDB\Driver\BulkWriteCommandResult::getUpdateResults — Returns verbose results for successful updates
- MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount — Returns the number of documents upserted
- MongoDB\Driver\BulkWriteCommandResult::isAcknowledged — Returns whether the write was acknowledged

# MongoDB BSON Classes and Functions

## İçindekiler

- İşlevleri
- MongoDB\BSON\Document
- MongoDB\BSON\PackedArray
- MongoDB\BSON\Iterator
- MongoDB\BSON\Binary
- MongoDB\BSON\VectorType
- MongoDB\BSON\Decimal128
- MongoDB\BSON\Javascript
- MongoDB\BSON\MaxKey
- MongoDB\BSON\MinKey
- MongoDB\BSON\ObjectId
- MongoDB\BSON\Regex
- MongoDB\BSON\Timestamp
- MongoDB\BSON\UTCDateTime
- MongoDB\BSON\Type
- MongoDB\BSON\Persistable
- MongoDB\BSON\Serializable
- MongoDB\BSON\Unserializable
- MongoDB\BSON\BinaryInterface
- MongoDB\BSON\Decimal128Interface
- MongoDB\BSON\JavascriptInterface
- MongoDB\BSON\MaxKeyInterface
- MongoDB\BSON\MinKeyInterface
- MongoDB\BSON\ObjectIdInterface
- MongoDB\BSON\RegexInterface
- MongoDB\BSON\TimestampInterface
- MongoDB\BSON\UTCDateTimeInterface
- MongoDB\BSON\DBPointer
- MongoDB\BSON\Int64
- MongoDB\BSON\Symbol
- MongoDB\BSON\Undefined

# İşlevleri

# MongoDB\BSON\fromJSON

(mongodb >=1.0.0)

MongoDB\BSON\fromJSON — Returns the BSON representation of a JSON value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::fromJSON() instead.

### Açıklama

function MongoDB\BSON\fromJSON(string `$json`): string

Converts an » extended JSON string to its BSON representation.

### Bağımsız Değişkenler

`json` (string)
  JSON value to be converted.

### Dönen Değerler

The serialized BSON document as a binary string.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\UnexpectedValueException if the JSON value cannot be converted to BSON (e.g. due to a syntax error).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.

### Örnekler

Örnek 1 MongoDB\BSON\fromJSON() example

    <?php

    $json = '{ "_id": { "$oid": "563143b280d2387c91807965" } }';
    $bson = MongoDB\BSON\fromJSON($json);
    $value = MongoDB\BSON\toPHP($bson);
    var_dump($value);

    ?>

Yukarıdaki örneğin çıktısı:

    object(stdClass)#2 (1) {
      ["_id"]=>
      object(MongoDB\BSON\ObjectId)#1 (1) {
        ["oid"]=>
        string(24) "563143b280d2387c91807965"
      }
    }

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- MongoDB\BSON\toJSON() - Returns the Legacy Extended JSON representation of a BSON value
- » MongoDB Extended JSON
- » MongoDB BSON

# MongoDB\BSON\fromPHP

(mongodb >=1.0.0)

MongoDB\BSON\fromPHP — Returns the BSON representation of a PHP value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::fromPHP() instead.

### Açıklama

function MongoDB\BSON\fromPHP(array|object `$value`): string

Serializes a PHP array or object (e.g. document) to its » BSON representation. The returned binary string will describe a BSON document.

### Bağımsız Değişkenler

`value` (array|object)
  PHP value to be serialized.

### Dönen Değerler

The serialized BSON document as a binary string.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\UnexpectedValueException if the PHP value cannot be converted to BSON. Possible reasons include, but are not limited to, encountering an unexpected MongoDB\BSON\Type instance or MongoDB\BSON\Serializable::bsonSerialize() failing to return an array or stdClass.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.

### Örnekler

Örnek 1 MongoDB\BSON\fromPHP() example

    <?php

    $bson = MongoDB\BSON\fromPHP(['foo' => 1]);
    echo bin2hex($bson), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    0e00000010666f6f000100000000

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromPHP() - Construct a new document instance from PHP data
- MongoDB\BSON\toPHP() - Returns the PHP representation of a BSON value
- » MongoDB BSON
- Persisting Data

# MongoDB\BSON\toCanonicalExtendedJSON

(mongodb >=1.3.0)

MongoDB\BSON\toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of a BSON value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::toCanonicalExtendedJSON() instead.

### Açıklama

function MongoDB\BSON\toCanonicalExtendedJSON(string `$bson`): string

Converts a BSON string to its » Canonical Extended JSON representation. The canonical format prefers type fidelity at the expense of concise output and is most suited for producing output that can be converted back to BSON without any loss of type information (e.g. numeric types will remain differentiated).

### Bağımsız Değişkenler

`bson` (string)
  BSON value to be converted.

### Dönen Değerler

The converted JSON value.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.

### Örnekler

Örnek 1 MongoDB\BSON\toCanonicalExtendedJSON() example

    <?php

    $documents = [
        [ 'null' => null ],
        [ 'boolean' => true ],
        [ 'string' => 'foo' ],
        [ 'int32' => 123 ],
        [ 'int64' => 4294967295 ],
        [ 'double' => 1.0, ],
        [ 'nan' => NAN ],
        [ 'pos_inf' => INF ],
        [ 'neg_inf' => -INF ],
        [ 'array' => [ 'foo', 'bar' ]],
        [ 'document' => [ 'foo' => 'bar' ]],
        [ 'oid' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1') ],
        [ 'dec128' => new MongoDB\BSON\Decimal128('1234.5678') ],
        [ 'binary' => new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC) ],
        [ 'date' => new MongoDB\BSON\UTCDateTime(1445990400000) ],
        [ 'timestamp' => new MongoDB\BSON\Timestamp(1234, 5678) ],
        [ 'regex' => new MongoDB\BSON\Regex('pattern', 'i') ],
        [ 'code' => new MongoDB\BSON\Javascript('function() { return 1; }') ],
        [ 'code_ws' => new MongoDB\BSON\Javascript('function() { return a; }', ['a' => 1]) ],
        [ 'minkey' => new MongoDB\BSON\MinKey ],
        [ 'maxkey' => new MongoDB\BSON\MaxKey ],
    ];

    foreach ($documents as $document) {
        $bson = MongoDB\BSON\fromPHP($document);
        echo MongoDB\BSON\toCanonicalExtendedJSON($bson), "\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    { "null" : null }
    { "boolean" : true }
    { "string" : "foo" }
    { "int32" : { "$numberInt" : "123" } }
    { "int64" : { "$numberLong" : "4294967295"} }
    { "double" : { "$numberDouble" : "1.0" } }
    { "nan" : { "$numberDouble" : "NaN" } }
    { "pos_inf" : { "$numberDouble" : "Infinity" } }
    { "neg_inf" : { "$numberDouble" : "-Infinity" } }
    { "array" : [ "foo", "bar" ] }
    { "document" : { "foo" : "bar" } }
    { "oid" : { "$oid" : "56315a7c6118fd1b920270b1" } }
    { "dec128" : { "$numberDecimal" : "1234.5678" } }
    { "binary" : { "$binary" : { "base64": "Zm9v", "subType" : "00" } } }
    { "date" : { "$date" : { "$numberLong" : "1445990400000" } } }
    { "timestamp" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
    { "regex" : { "$regularExpression" : { "pattern" : "pattern", "options" : "i" } } }
    { "code" : { "$code" : "function() { return 1; }" } }
    { "code_ws" : { "$code" : "function() { return a; }", "$scope" : { "a" : { "$numberInt" : "1" } } } }
    { "minkey" : { "$minKey" : 1 } }
    { "maxkey" : { "$maxKey" : 1 } }

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- MongoDB\BSON\Document::toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of the BSON document
- MongoDB\BSON\fromJSON() - Returns the BSON representation of a JSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » Extended JSON Specification
- » MongoDB BSON

# MongoDB\BSON\toJSON

(mongodb >=1.0.0)

MongoDB\BSON\toJSON — Returns the Legacy Extended JSON representation of a BSON value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::toCanonicalExtendedJSON() or MongoDB\BSON\Document::toRelaxedExtendedJSON() instead.

### Açıklama

function MongoDB\BSON\toJSON(string `$bson`): string

Converts a BSON string to its » Legacy Extended JSON representation.

> Bilginize: There exist several JSON formats for representing BSON. This function implements the "strict mode" defined in » MongoDB Extended JSON, which has been superseded by the canonical and relaxed formats defined in the » Extended JSON Specification and implemented by MongoDB\BSON\toCanonicalExtendedJSON() and MongoDB\BSON\toRelaxedExtendedJSON(), respectively.

Uyarı

» JSON does not support `NAN` and `INF` and MongoDB's Legacy Extended JSON format does not define an alternative representation for these values (» libbson will output `nan` and `inf` literals, which may not be parsed as valid JSON). If you are working with BSON that may contain non-finite numbers, please use MongoDB\BSON\toCanonicalExtendedJSON() or MongoDB\BSON\toRelaxedExtendedJSON().

### Bağımsız Değişkenler

`bson` (string)
  BSON value to be converted.

### Dönen Değerler

The converted JSON value.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.

### Örnekler

Örnek 1 MongoDB\BSON\toJSON() example

    <?php

    $documents = [
        [ 'null' => null ],
        [ 'boolean' => true ],
        [ 'string' => 'foo' ],
        [ 'int32' => 123 ],
        [ 'int64' => 4294967295 ],
        [ 'double' => 1.0, ],
        [ 'nan' => NAN ],
        [ 'pos_inf' => INF ],
        [ 'neg_inf' => -INF ],
        [ 'array' => [ 'foo', 'bar' ]],
        [ 'document' => [ 'foo' => 'bar' ]],
        [ 'oid' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1') ],
        [ 'dec128' => new MongoDB\BSON\Decimal128('1234.5678') ],
        [ 'binary' => new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC) ],
        [ 'date' => new MongoDB\BSON\UTCDateTime(1445990400000) ],
        [ 'timestamp' => new MongoDB\BSON\Timestamp(1234, 5678) ],
        [ 'regex' => new MongoDB\BSON\Regex('pattern', 'i') ],
        [ 'code' => new MongoDB\BSON\Javascript('function() { return 1; }') ],
        [ 'code_ws' => new MongoDB\BSON\Javascript('function() { return a; }', ['a' => 1]) ],
        [ 'minkey' => new MongoDB\BSON\MinKey ],
        [ 'maxkey' => new MongoDB\BSON\MaxKey ],
    ];

    foreach ($documents as $document) {
        $bson = MongoDB\BSON\fromPHP($document);
        echo MongoDB\BSON\toJSON($bson), "\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    { "null" : null }
    { "boolean" : true }
    { "string" : "foo" }
    { "int32" : 123 }
    { "int64" : 4294967295 }
    { "double" : 1.0 }
    { "nan" : nan }
    { "pos_inf" : inf }
    { "neg_inf" : -inf }
    { "array" : [ "foo", "bar" ] }
    { "document" : { "foo" : "bar" } }
    { "oid" : { "$oid" : "56315a7c6118fd1b920270b1" } }
    { "dec128" : { "$numberDecimal" : "1234.5678" } }
    { "binary" : { "$binary" : "Zm9v", "$type" : "00" } }
    { "date" : { "$date" : 1445990400000 } }
    { "timestamp" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
    { "regex" : { "$regex" : "pattern", "$options" : "i" } }
    { "code" : { "$code" : "function() { return 1; }" } }
    { "code_ws" : { "$code" : "function() { return a; }", "$scope" : { "a" : 1 } } }
    { "minkey" : { "$minKey" : 1 } }
    { "maxkey" : { "$maxKey" : 1 } }

### Ayrıca Bakınız

- MongoDB\BSON\fromJSON() - Returns the BSON representation of a JSON value
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON
- » MongoDB BSON

# MongoDB\BSON\toPHP

(mongodb >=1.0.0)

MongoDB\BSON\toPHP — Returns the PHP representation of a BSON value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::toPHP() instead.

### Açıklama

function MongoDB\BSON\toPHP(string `$bson`, array `$typeMap` = array()): array|object

Unserializes a BSON document (i.e. binary string) to its PHP representation. The `typeMap` parameter may be used to control the PHP types used for converting BSON arrays and documents (both root and embedded).

Uyarı

BSON documents can technically contain duplicate keys because documents are stored as a list of key-value pairs; however, applications should refrain from generating documents with duplicate keys as server and driver behavior may be undefined. Since PHP objects and arrays cannot have duplicate keys, data could also be lost when decoding a BSON document with duplicate keys.

### Bağımsız Değişkenler

`bson` (string)
  BSON value to be unserialized.
`typeMap` (array)

  Type map configuration.

### Dönen Değerler

The unserialized PHP value.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.
PECL mongodb 1.4.0 | If the input contains an unsupported, deprecated BSON type, the extension will now no longer log a warning to the debug log, but instead will create an object representing this type.
PECL mongodb 1.3.2 | MongoDB\Driver\Exception\UnexpectedValueException is no longer thrown if the input contains an unsupported, deprecated BSON type. Such types will be ignored (as they were in versions before 1.3.0), although the extension will now log a warning to the debug log (see: mongodb.debug).
PECL mongodb 1.3.0 | MongoDB\Driver\Exception\UnexpectedValueException is thrown if the input contains an unsupported, deprecated BSON type. Previously, such types were ignored.

### Örnekler

Örnek 1 MongoDB\BSON\toPHP() example

    <?php

    $bson = hex2bin('0e00000010666f6f000100000000');
    $value = MongoDB\BSON\toPHP($bson);
    var_dump($value);

    ?>

Yukarıdaki örneğin çıktısı:

    object(stdClass)#1 (1) {
      ["foo"]=>
      int(1)
    }

### Ayrıca Bakınız

- MongoDB\BSON\Document::toPHP() - Returns the PHP representation of the BSON document
- MongoDB\BSON\fromPHP() - Returns the BSON representation of a PHP value
- » MongoDB BSON
- Persisting Data

# MongoDB\BSON\toRelaxedExtendedJSON

(mongodb >=1.3.0)

MongoDB\BSON\toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of a BSON value

Uyarı

This function has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\BSON\Document::toRelaxedExtendedJSON() instead.

### Açıklama

function MongoDB\BSON\toRelaxedExtendedJSON(string `$bson`): string

Converts a BSON string to its » Relaxed Extended JSON representation. The relaxed format prefers use of JSON type primitives at the expense of type fidelity and is most suited for producing output that can be easily consumed by web APIs and humans.

### Bağımsız Değişkenler

`bson` (string)
  BSON value to be converted.

### Dönen Değerler

The converted JSON value.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This function was removed.

### Örnekler

Örnek 1 MongoDB\BSON\toRelaxedExtendedJSON() example

    <?php

    $documents = [
        [ 'null' => null ],
        [ 'boolean' => true ],
        [ 'string' => 'foo' ],
        [ 'int32' => 123 ],
        [ 'int64' => 4294967295 ],
        [ 'double' => 1.0, ],
        [ 'nan' => NAN ],
        [ 'pos_inf' => INF ],
        [ 'neg_inf' => -INF ],
        [ 'array' => [ 'foo', 'bar' ]],
        [ 'document' => [ 'foo' => 'bar' ]],
        [ 'oid' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1') ],
        [ 'dec128' => new MongoDB\BSON\Decimal128('1234.5678') ],
        [ 'binary' => new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC) ],
        [ 'date' => new MongoDB\BSON\UTCDateTime(1445990400000) ],
        [ 'timestamp' => new MongoDB\BSON\Timestamp(1234, 5678) ],
        [ 'regex' => new MongoDB\BSON\Regex('pattern', 'i') ],
        [ 'code' => new MongoDB\BSON\Javascript('function() { return 1; }') ],
        [ 'code_ws' => new MongoDB\BSON\Javascript('function() { return a; }', ['a' => 1]) ],
        [ 'minkey' => new MongoDB\BSON\MinKey ],
        [ 'maxkey' => new MongoDB\BSON\MaxKey ],
    ];

    foreach ($documents as $document) {
        $bson = MongoDB\BSON\fromPHP($document);
        echo MongoDB\BSON\toRelaxedExtendedJSON($bson), "\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    { "null" : null }
    { "boolean" : true }
    { "string" : "foo" }
    { "int32" : 123 }
    { "int64" : 4294967295 }
    { "double" : 1.0 }
    { "nan" : { "$numberDouble" : "NaN" } }
    { "pos_inf" : { "$numberDouble" : "Infinity" } }
    { "neg_inf" : { "$numberDouble" : "-Infinity" } }
    { "array" : [ "foo", "bar" ] }
    { "document" : { "foo" : "bar" } }
    { "oid" : { "$oid" : "56315a7c6118fd1b920270b1" } }
    { "dec128" : { "$numberDecimal" : "1234.5678" } }
    { "binary" : { "$binary" : { "base64": "Zm9v", "subType" : "00" } } }
    { "date" : { "$date" : "2015-10-28T00:00:00Z" } }
    { "timestamp" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
    { "regex" : { "$regularExpression" : { "pattern" : "pattern", "options" : "i" } } }
    { "code" : { "$code" : "function() { return 1; }" } }
    { "code_ws" : { "$code" : "function() { return a; }", "$scope" : { "a" : 1 } } }
    { "minkey" : { "$minKey" : 1 } }
    { "maxkey" : { "$maxKey" : 1 } }

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- MongoDB\BSON\Document::toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of the BSON document
- MongoDB\BSON\fromJSON() - Returns the BSON representation of a JSON value
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- » Extended JSON
- » MongoDB BSON

## İçindekiler

- MongoDB\BSON\fromJSON — Returns the BSON representation of a JSON value
- MongoDB\BSON\fromPHP — Returns the BSON representation of a PHP value
- MongoDB\BSON\toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toJSON — Returns the Legacy Extended JSON representation of a BSON value
- MongoDB\BSON\toPHP — Returns the PHP representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of a BSON value

# The MongoDB\BSON\Document class

(mongodb >=1.16.0)

## Giriş

Represents a BSON document. This class is used when reading data as raw BSON and cannot be modified.

## Sınıf Sözdizimi

final class MongoDB\BSON\Document implements MongoDB\BSON\Type, ArrayAccess, IteratorAggregate {
/* Yöntemler */
final private function __construct()
final static public function fromBSON(string `$bson`): MongoDB\BSON\Document
final static public function fromJSON(string `$json`): MongoDB\BSON\Document
final static public function fromPHP(object|array `$value`): MongoDB\BSON\Document
final public function get(string `$key`): mixed
final public function getIterator(): MongoDB\BSON\Iterator
final public function has(string `$key`): bool
final public function offsetExists(mixed `$key`): bool
final public function offsetGet(mixed `$key`): mixed
final public function offsetSet(mixed `$key`, mixed `$value`): void
final public function offsetUnset(mixed `$key`): void
final public function toCanonicalExtendedJSON(): string
final public function toPHP(?array `$typeMap` = `null`): array|object
final public function toRelaxedExtendedJSON(): string
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.17.0 | Implements MongoDB\BSON\Type.

# MongoDB\BSON\Document::__construct

(mongodb >=1.16.0)

MongoDB\BSON\Document::__construct — Construct a new BSON document (unused)

### Açıklama

final private function MongoDB\BSON\Document::__construct()

MongoDB\BSON\Document objects are created through static factory methods and cannot be instantiated directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromPHP() - Construct a new document instance from PHP data
- MongoDB\BSON\Document::fromBSON() - Construct a new document instance from a BSON string
- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- » BSON Types

# MongoDB\BSON\Document::fromBSON

(mongodb >=1.16.0)

MongoDB\BSON\Document::fromBSON — Construct a new document instance from a BSON string

### Açıklama

final static public function MongoDB\BSON\Document::fromBSON(string `$bson`): MongoDB\BSON\Document

### Bağımsız Değişkenler

`bson` (string)
  A string containing a document in BSON format.

### Dönen Değerler

Returns a new MongoDB\BSON\Document instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if `bson` is an invalid BSON string or contains more than a single document.

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromPHP() - Construct a new document instance from PHP data
- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- » BSON Types

# MongoDB\BSON\Document::fromJSON

(mongodb >=1.16.0)

MongoDB\BSON\Document::fromJSON — Construct a new document instance from a JSON string

### Açıklama

final static public function MongoDB\BSON\Document::fromJSON(string `$json`): MongoDB\BSON\Document

Converts an » extended JSON string to its BSON representation.

### Bağımsız Değişkenler

`json` (string)
  JSON value to be converted.

### Dönen Değerler

Returns a new MongoDB\BSON\Document instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the JSON value cannot be converted to a BSON document (e.g. due to a syntax error).

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromPHP() - Construct a new document instance from PHP data
- MongoDB\BSON\Document::fromBSON() - Construct a new document instance from a BSON string
- » MongoDB Extended JSON
- » BSON Types

# MongoDB\BSON\Document::fromPHP

(mongodb >=1.16.0)

MongoDB\BSON\Document::fromPHP — Construct a new document instance from PHP data

### Açıklama

final static public function MongoDB\BSON\Document::fromPHP(object|array `$value`): MongoDB\BSON\Document

### Bağımsız Değişkenler

`value` (object|array)
  A PHP object or array containing the document. When passing an array with numeric keys, the numeric values are converted to strings and used as document keys.

### Dönen Değerler

Returns a new MongoDB\BSON\Document instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromBSON() - Construct a new document instance from a BSON string
- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- » BSON Types

# MongoDB\BSON\Document::get

(mongodb >=1.16.0)

MongoDB\BSON\Document::get — Returns the value of a key in the document

### Açıklama

final public function MongoDB\BSON\Document::get(string `$key`): mixed

### Bağımsız Değişkenler

`key` (string)
  The key to retrieve from the document.

### Dönen Değerler

Returns the value associated with the given key. If the key is not present in the document, an exception is thrown.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON document, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the key is not present in the document.

### Ayrıca Bakınız

- MongoDB\BSON\Document::has() - Returns whether a key is present in the document
- » BSON Types

# MongoDB\BSON\Document::getIterator

(mongodb >=1.16.0)

MongoDB\BSON\Document::getIterator — Returns an iterator for the BSON document

### Açıklama

final public function MongoDB\BSON\Document::getIterator(): MongoDB\BSON\Iterator

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a MongoDB\BSON\Iterator instance that can be used to iterate over all keys in the document.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the BSON iterator could not be initialized.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Document::has

(mongodb >=1.16.0)

MongoDB\BSON\Document::has — Returns whether a key is present in the document

### Açıklama

final public function MongoDB\BSON\Document::has(string `$key`): bool

### Bağımsız Değişkenler

`key` (string)
  The key to look for in the document.

### Dönen Değerler

Returns `true` if the key is present in the document and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\Document::get() - Returns the value of a key in the document
- » BSON Types

# MongoDB\BSON\Document::offsetExists

(mongodb >=1.17.0)

MongoDB\BSON\Document::offsetExists — Returns whether a key is present in the document

### Açıklama

final public function MongoDB\BSON\Document::offsetExists(mixed `$key`): bool

### Bağımsız Değişkenler

`key`
  The key to look for in the document.

### Dönen Değerler

Returns `true` if the key is present in the document and `false` otherwise.

### Ayrıca Bakınız

- ArrayAccess::offsetExists() - Bir konumun mevcut olup olmadığına bakar
- MongoDB\BSON\Document::has() - Returns whether a key is present in the document

# MongoDB\BSON\Document::offsetGet

(mongodb >=1.17.0)

MongoDB\BSON\Document::offsetGet — Returns the value of a key in the document

### Açıklama

final public function MongoDB\BSON\Document::offsetGet(mixed `$key`): mixed

### Bağımsız Değişkenler

`key`
  The key to retrieve from the document.

### Dönen Değerler

Returns the value associated with the given key. If the key is not present in the document, an exception is thrown.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON document, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the key is not present in the document.

### Ayrıca Bakınız

- ArrayAccess::offsetGet() - Konumdaki değeri döndürür
- MongoDB\BSON\Document::get() - Returns the value of a key in the document

# MongoDB\BSON\Document::offsetSet

(mongodb >=1.17.0)

MongoDB\BSON\Document::offsetSet — Implementation of ArrayAccess

### Açıklama

final public function MongoDB\BSON\Document::offsetSet(mixed `$key`, mixed `$value`): void

Sets the value at the specified `key` to `value`.

### Bağımsız Değişkenler

`key`
  The index being set.
`value`
  The new value for the `key`.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Always throws a MongoDB\Driver\Exception\LogicException.

# MongoDB\BSON\Document::offsetUnset

(mongodb >=1.17.0)

MongoDB\BSON\Document::offsetUnset — Implementation of ArrayAccess

### Açıklama

final public function MongoDB\BSON\Document::offsetUnset(mixed `$key`): void

Unsets the value at the specified index.

### Bağımsız Değişkenler

`key`
  The index being unset.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Always throws a MongoDB\Driver\Exception\LogicException.

# MongoDB\BSON\Document::toCanonicalExtendedJSON

(mongodb >=1.16.0)

MongoDB\BSON\Document::toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of the BSON document

### Açıklama

final public function MongoDB\BSON\Document::toCanonicalExtendedJSON(): string

Converts the BSON document to its » Canonical Extended JSON representation. The canonical format prefers type fidelity at the expense of concise output and is most suited for producing output that can be converted back to BSON without any loss of type information (e.g. numeric types will remain differentiated).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the » Canonical Extended JSON representation of the BSON document.

### Örnekler

Örnek 1 MongoDB\BSON\Document::toCanonicalExtendedJSON() example

    <?php

    $documents = [
        [ 'null' => null ],
        [ 'boolean' => true ],
        [ 'string' => 'foo' ],
        [ 'int32' => 123 ],
        [ 'int64' => 4294967295 ],
        [ 'double' => 1.0 ],
        [ 'nan' => NAN ],
        [ 'pos_inf' => INF ],
        [ 'neg_inf' => -INF ],
        [ 'array' => [ 'foo', 'bar' ]],
        [ 'document' => [ 'foo' => 'bar' ]],
        [ 'oid' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1') ],
        [ 'dec128' => new MongoDB\BSON\Decimal128('1234.5678') ],
        [ 'binary' => new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC) ],
        [ 'date' => new MongoDB\BSON\UTCDateTime(1445990400000) ],
        [ 'timestamp' => new MongoDB\BSON\Timestamp(1234, 5678) ],
        [ 'regex' => new MongoDB\BSON\Regex('pattern', 'i') ],
        [ 'code' => new MongoDB\BSON\Javascript('function() { return 1; }') ],
        [ 'code_ws' => new MongoDB\BSON\Javascript('function() { return a; }', ['a' => 1]) ],
        [ 'minkey' => new MongoDB\BSON\MinKey ],
        [ 'maxkey' => new MongoDB\BSON\MaxKey ],
    ];

    foreach ($documents as $document) {
        $bson = MongoDB\BSON\Document::fromPHP($document);
        echo $bson->toCanonicalExtendedJSON(), "\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    { "null" : null }
    { "boolean" : true }
    { "string" : "foo" }
    { "int32" : { "$numberInt" : "123" } }
    { "int64" : { "$numberLong" : "4294967295"} }
    { "double" : { "$numberDouble" : "1.0" } }
    { "nan" : { "$numberDouble" : "NaN" } }
    { "pos_inf" : { "$numberDouble" : "Infinity" } }
    { "neg_inf" : { "$numberDouble" : "-Infinity" } }
    { "array" : [ "foo", "bar" ] }
    { "document" : { "foo" : "bar" } }
    { "oid" : { "$oid" : "56315a7c6118fd1b920270b1" } }
    { "dec128" : { "$numberDecimal" : "1234.5678" } }
    { "binary" : { "$binary" : { "base64": "Zm9v", "subType" : "00" } } }
    { "date" : { "$date" : { "$numberLong" : "1445990400000" } } }
    { "timestamp" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
    { "regex" : { "$regularExpression" : { "pattern" : "pattern", "options" : "i" } } }
    { "code" : { "$code" : "function() { return 1; }" } }
    { "code_ws" : { "$code" : "function() { return a; }", "$scope" : { "a" : { "$numberInt" : "1" } } } }
    { "minkey" : { "$minKey" : 1 } }
    { "maxkey" : { "$maxKey" : 1 } }

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- MongoDB\BSON\Document::toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of the BSON document
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- » Extended JSON Specification
- » BSON Types

# MongoDB\BSON\Document::toPHP

(mongodb >=1.16.0)

MongoDB\BSON\Document::toPHP — Returns the PHP representation of the BSON document

### Açıklama

final public function MongoDB\BSON\Document::toPHP(?array `$typeMap` = `null`): array|object

Unserializes the BSON document to its PHP representation. The `typeMap` parameter may be used to control the PHP types used for converting BSON arrays and documents (both root and embedded).

Uyarı

BSON documents can technically contain duplicate keys because documents are stored as a list of key-value pairs; however, applications should refrain from generating documents with duplicate keys as server and driver behavior may be undefined. Since PHP objects and arrays cannot have duplicate keys, data could also be lost when decoding a BSON document with duplicate keys.

### Bağımsız Değişkenler

`typeMap` (array)

  Type map configuration.

### Dönen Değerler

The decoded PHP value.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON document, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.

### Ayrıca Bakınız

- MongoDB\BSON\toPHP() - Returns the PHP representation of a BSON value
- » BSON Types

# MongoDB\BSON\Document::toRelaxedExtendedJSON

(mongodb >=1.16.0)

MongoDB\BSON\Document::toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of the BSON document

### Açıklama

final public function MongoDB\BSON\Document::toRelaxedExtendedJSON(): string

Converts the BSON document to its » Relaxed Extended JSON representation. The relaxed format prefers use of JSON type primitives at the expense of type fidelity and is most suited for producing output that can be easily consumed by web APIs and humans.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the » Relaxed Extended JSON representation of the BSON document.

### Örnekler

Örnek 1 MongoDB\BSON\Document::toRelaxedExtendedJSON() example

    <?php

    $documents = [
        [ 'null' => null ],
        [ 'boolean' => true ],
        [ 'string' => 'foo' ],
        [ 'int32' => 123 ],
        [ 'int64' => 4294967295 ],
        [ 'double' => 1.0 ],
        [ 'nan' => NAN ],
        [ 'pos_inf' => INF ],
        [ 'neg_inf' => -INF ],
        [ 'array' => [ 'foo', 'bar' ]],
        [ 'document' => [ 'foo' => 'bar' ]],
        [ 'oid' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1') ],
        [ 'dec128' => new MongoDB\BSON\Decimal128('1234.5678') ],
        [ 'binary' => new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC) ],
        [ 'date' => new MongoDB\BSON\UTCDateTime(1445990400000) ],
        [ 'timestamp' => new MongoDB\BSON\Timestamp(1234, 5678) ],
        [ 'regex' => new MongoDB\BSON\Regex('pattern', 'i') ],
        [ 'code' => new MongoDB\BSON\Javascript('function() { return 1; }') ],
        [ 'code_ws' => new MongoDB\BSON\Javascript('function() { return a; }', ['a' => 1]) ],
        [ 'minkey' => new MongoDB\BSON\MinKey ],
        [ 'maxkey' => new MongoDB\BSON\MaxKey ],
    ];

    foreach ($documents as $document) {
        $bson = MongoDB\BSON\Document::fromPHP($document);
        echo $bson->toRelaxedExtendedJSON(), "\n";
    }

    ?>

Yukarıdaki örneğin çıktısı:

    { "null" : null }
    { "boolean" : true }
    { "string" : "foo" }
    { "int32" : 123 }
    { "int64" : 4294967295 }
    { "double" : 1.0 }
    { "nan" : { "$numberDouble" : "NaN" } }
    { "pos_inf" : { "$numberDouble" : "Infinity" } }
    { "neg_inf" : { "$numberDouble" : "-Infinity" } }
    { "array" : [ "foo", "bar" ] }
    { "document" : { "foo" : "bar" } }
    { "oid" : { "$oid" : "56315a7c6118fd1b920270b1" } }
    { "dec128" : { "$numberDecimal" : "1234.5678" } }
    { "binary" : { "$binary" : { "base64": "Zm9v", "subType" : "00" } } }
    { "date" : { "$date" : "2015-10-28T00:00:00Z" } }
    { "timestamp" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
    { "regex" : { "$regularExpression" : { "pattern" : "pattern", "options" : "i" } } }
    { "code" : { "$code" : "function() { return 1; }" } }
    { "code_ws" : { "$code" : "function() { return a; }", "$scope" : { "a" : 1 } } }
    { "minkey" : { "$minKey" : 1 } }
    { "maxkey" : { "$maxKey" : 1 } }

### Ayrıca Bakınız

- MongoDB\BSON\Document::fromJSON() - Construct a new document instance from a JSON string
- MongoDB\BSON\Document::toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of the BSON document
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » Extended JSON Specification
- » BSON Types

# MongoDB\BSON\Document::__toString

(mongodb >=1.16.0)

MongoDB\BSON\Document::__toString — Returns the string representation of this BSON Document

### Açıklama

final public function MongoDB\BSON\Document::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this document as BSON.

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\Document::__construct — Construct a new BSON document (unused)
- MongoDB\BSON\Document::fromBSON — Construct a new document instance from a BSON string
- MongoDB\BSON\Document::fromJSON — Construct a new document instance from a JSON string
- MongoDB\BSON\Document::fromPHP — Construct a new document instance from PHP data
- MongoDB\BSON\Document::get — Returns the value of a key in the document
- MongoDB\BSON\Document::getIterator — Returns an iterator for the BSON document
- MongoDB\BSON\Document::has — Returns whether a key is present in the document
- MongoDB\BSON\Document::offsetExists — Returns whether a key is present in the document
- MongoDB\BSON\Document::offsetGet — Returns the value of a key in the document
- MongoDB\BSON\Document::offsetSet — Implementation of ArrayAccess
- MongoDB\BSON\Document::offsetUnset — Implementation of ArrayAccess
- MongoDB\BSON\Document::toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of the BSON document
- MongoDB\BSON\Document::toPHP — Returns the PHP representation of the BSON document
- MongoDB\BSON\Document::toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of the BSON document
- MongoDB\BSON\Document::__toString — Returns the string representation of this BSON Document

# The MongoDB\BSON\PackedArray class

(mongodb >=1.16.0)

## Giriş

Represents a BSON array. This class is used when reading data as raw BSON and cannot be modified.

## Sınıf Sözdizimi

final class MongoDB\BSON\PackedArray implements MongoDB\BSON\Type, ArrayAccess, IteratorAggregate {
/* Yöntemler */
final private function __construct()
final static public function fromJSON(string `$json`): MongoDB\BSON\PackedArray
final static public function fromPHP(array `$value`): MongoDB\BSON\PackedArray
final public function get(int `$key`): mixed
final public function getIterator(): MongoDB\BSON\Iterator
final public function has(int `$index`): bool
final public function offsetExists(mixed `$key`): bool
final public function offsetGet(mixed `$key`): mixed
final public function offsetSet(mixed `$key`, mixed `$value`): void
final public function offsetUnset(mixed `$key`): void
final public function toCanonicalExtendedJSON(): string
final public function toPHP(?array `$typeMap` = `null`): array|object
final public function toRelaxedExtendedJSON(): string
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.17.0 | Implements MongoDB\BSON\Type.
PECL mongodb 1.17.0 | MongoDB\BSON\PackedArray cannot be serialized in contexts where a BSON document is expected. In earlier versions, the BSON array would have been converted to a document.

# MongoDB\BSON\PackedArray::__construct

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::__construct — Construct a new BSON array (unused)

### Açıklama

final private function MongoDB\BSON\PackedArray::__construct()

MongoDB\BSON\PackedArray objects are created through static factory methods and cannot be instantiated directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::fromPHP() - Construct a new BSON array instance from PHP data
- » BSON Types

# MongoDB\BSON\PackedArray::fromJSON

(mongodb >=1.20.0)

MongoDB\BSON\PackedArray::fromJSON — Construct a new BSON array instance from a JSON string

### Açıklama

final static public function MongoDB\BSON\PackedArray::fromJSON(string `$json`): MongoDB\BSON\PackedArray

Converts an » extended JSON string to its BSON representation.

### Bağımsız Değişkenler

`json` (string)
  JSON value to be converted.

### Dönen Değerler

Returns a new MongoDB\BSON\PackedArray instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the JSON value cannot be converted to a BSON array (e.g. due to a syntax error).

### Örnekler

Örnek 1 MongoDB\BSON\PackedArray::fromJSON() example

    <?php

    $json = '[ "foo", { "$numberInt" : "123" }, { "$numberLong" : "4294967295" }, { "$oid" : "56315a7c6118fd1b920270b1" } ]';
    $packedArray = MongoDB\BSON\PackedArray::fromJSON($json);
    var_dump($packedArray);

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\PackedArray)#1 (2) {
      ["data"]=>
      string(68) "MQAAAAIwAAQAAABmb28AEDEAewAAABIyAP////8AAAAABzMAVjFafGEY/RuSAnCxAA=="
      ["value"]=>
      array(4) {
        [0]=>
        string(3) "foo"
        [1]=>
        int(123)
        [2]=>
        int(4294967295)
        [3]=>
        object(MongoDB\BSON\ObjectId)#2 (1) {
          ["oid"]=>
          string(24) "56315a7c6118fd1b920270b1"
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::fromPHP() - Construct a new BSON array instance from PHP data
- » MongoDB Extended JSON
- » BSON Types

# MongoDB\BSON\PackedArray::fromPHP

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::fromPHP — Construct a new BSON array instance from PHP data

### Açıklama

final static public function MongoDB\BSON\PackedArray::fromPHP(array `$value`): MongoDB\BSON\PackedArray

### Bağımsız Değişkenler

`value` (array)
  The PHP array to convert to a BSON array. The array must be a list (i.e. have sequential numeric keys starting with `0`).

### Dönen Değerler

Returns a new MongoDB\BSON\PackedArray instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if the given array is not a list (i.e. has sequential numeric keys starting with `0`).

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\PackedArray::get

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::get — Returns the value of an index in the array

### Açıklama

final public function MongoDB\BSON\PackedArray::get(int `$key`): mixed

### Bağımsız Değişkenler

`key` (int)
  The index to retrieve from the array.

### Dönen Değerler

Returns the value associated with the given index. If the index is not present in the array, an exception is thrown.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON array, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the index is not present in the array.

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::has() - Returns whether a index is present in the array
- » BSON Types

# MongoDB\BSON\PackedArray::getIterator

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::getIterator — Returns an iterator for the BSON array

### Açıklama

final public function MongoDB\BSON\PackedArray::getIterator(): MongoDB\BSON\Iterator

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a MongoDB\BSON\Iterator instance that can be used to iterate over all indexes in the array.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\UnexpectedValueException if the BSON iterator could not be initialized.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\PackedArray::has

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::has — Returns whether a index is present in the array

### Açıklama

final public function MongoDB\BSON\PackedArray::has(int `$index`): bool

### Bağımsız Değişkenler

`index` (int)
  The index to look for in the array.

### Dönen Değerler

Returns `true` if the index is present in the array and `false` otherwise.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::get() - Returns the value of an index in the array
- » BSON Types

# MongoDB\BSON\PackedArray::offsetExists

(mongodb >=1.17.0)

MongoDB\BSON\PackedArray::offsetExists — Returns whether a index is present in the array

### Açıklama

final public function MongoDB\BSON\PackedArray::offsetExists(mixed `$key`): bool

### Bağımsız Değişkenler

`key`
  The index to look for in the array.

### Dönen Değerler

Returns `true` if the index is present in the array and `false` otherwise.

### Ayrıca Bakınız

- ArrayAccess::offsetExists() - Bir konumun mevcut olup olmadığına bakar
- MongoDB\BSON\PackedArray::has() - Returns whether a index is present in the array

# MongoDB\BSON\PackedArray::offsetGet

(mongodb >=1.17.0)

MongoDB\BSON\PackedArray::offsetGet — Returns the value of an index in the array

### Açıklama

final public function MongoDB\BSON\PackedArray::offsetGet(mixed `$key`): mixed

### Bağımsız Değişkenler

`key`
  The index to retrieve from the array. Only int is supported.

### Dönen Değerler

Returns the value associated with the given index. If the index is not present in the array, an exception is thrown.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON array, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\RuntimeException if the index is not present in the array.

### Ayrıca Bakınız

- ArrayAccess::offsetGet() - Konumdaki değeri döndürür
- MongoDB\BSON\PackedArray::get() - Returns the value of an index in the array

# MongoDB\BSON\PackedArray::offsetSet

(mongodb >=1.17.0)

MongoDB\BSON\PackedArray::offsetSet — Implementation of ArrayAccess

### Açıklama

final public function MongoDB\BSON\PackedArray::offsetSet(mixed `$key`, mixed `$value`): void

Sets the value at the specified `key` to `value`.

### Bağımsız Değişkenler

`key`
  The index being set.
`value`
  The new value for the `key`.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Always throws a MongoDB\Driver\Exception\LogicException.

# MongoDB\BSON\PackedArray::offsetUnset

(mongodb >=1.17.0)

MongoDB\BSON\PackedArray::offsetUnset — Implementation of ArrayAccess

### Açıklama

final public function MongoDB\BSON\PackedArray::offsetUnset(mixed `$key`): void

Unsets the value at the specified index.

### Bağımsız Değişkenler

`key`
  The index being unset.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Always throws a MongoDB\Driver\Exception\LogicException.

# MongoDB\BSON\PackedArray::toCanonicalExtendedJSON

(mongodb >=1.20.0)

MongoDB\BSON\PackedArray::toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of the BSON array

### Açıklama

final public function MongoDB\BSON\PackedArray::toCanonicalExtendedJSON(): string

Converts the BSON array to its » Canonical Extended JSON representation. The canonical format prefers type fidelity at the expense of concise output and is most suited for producing output that can be converted back to BSON without any loss of type information (e.g. numeric types will remain differentiated).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the » Canonical Extended JSON representation of the BSON array.

### Örnekler

Örnek 1 MongoDB\BSON\PackedArray::toCanonicalExtendedJSON() example

    <?php

    $array = [
        'foo',
        123,
        4294967295,
        new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1'),
    ];

    $packedArray = MongoDB\BSON\PackedArray::fromPHP($array);
    echo $packedArray->toCanonicalExtendedJSON(), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    [ "foo", { "$numberInt" : "123" }, { "$numberLong" : "4294967295" }, { "$oid" : "56315a7c6118fd1b920270b1" } ]

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::fromJSON() - Construct a new BSON array instance from a JSON string
- MongoDB\BSON\PackedArray::toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of the BSON array
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- » Extended JSON Specification
- » BSON Types

# MongoDB\BSON\PackedArray::toPHP

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::toPHP — Returns the PHP representation of the BSON array

### Açıklama

final public function MongoDB\BSON\PackedArray::toPHP(?array `$typeMap` = `null`): array|object

### Bağımsız Değişkenler

`typeMap` (array)

  Type map configuration.

### Dönen Değerler

The decoded PHP value.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON array, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.

### Ayrıca Bakınız

- MongoDB\BSON\toPHP() - Returns the PHP representation of a BSON value
- » BSON Types

# MongoDB\BSON\PackedArray::toRelaxedExtendedJSON

(mongodb >=1.20.0)

MongoDB\BSON\PackedArray::toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of the BSON array

### Açıklama

final public function MongoDB\BSON\PackedArray::toRelaxedExtendedJSON(): string

Converts the BSON array to its » Relaxed Extended JSON representation. The relaxed format prefers use of JSON type primitives at the expense of type fidelity and is most suited for producing output that can be easily consumed by web APIs and humans.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the » Relaxed Extended JSON representation of the BSON array.

### Örnekler

Örnek 1 MongoDB\BSON\PackedArray::toRelaxedExtendedJSON() example

    <?php

    $array = [
        'foo',
        123,
        4294967295,
        new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1'),
    ];

    $packedArray = MongoDB\BSON\PackedArray::fromPHP($array);
    echo $packedArray->toRelaxedExtendedJSON(), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    [ "foo", 123, 4294967295, { "$oid" : "56315a7c6118fd1b920270b1" } ]

### Ayrıca Bakınız

- MongoDB\BSON\PackedArray::fromJSON() - Construct a new BSON array instance from a JSON string
- MongoDB\BSON\PackedArray::toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of the BSON array
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » Extended JSON Specification
- » BSON Types

# MongoDB\BSON\PackedArray::__toString

(mongodb >=1.16.0)

MongoDB\BSON\PackedArray::__toString — Returns the string representation of this BSON array

### Açıklama

final public function MongoDB\BSON\PackedArray::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this array as BSON.

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\PackedArray::__construct — Construct a new BSON array (unused)
- MongoDB\BSON\PackedArray::fromJSON — Construct a new BSON array instance from a JSON string
- MongoDB\BSON\PackedArray::fromPHP — Construct a new BSON array instance from PHP data
- MongoDB\BSON\PackedArray::get — Returns the value of an index in the array
- MongoDB\BSON\PackedArray::getIterator — Returns an iterator for the BSON array
- MongoDB\BSON\PackedArray::has — Returns whether a index is present in the array
- MongoDB\BSON\PackedArray::offsetExists — Returns whether a index is present in the array
- MongoDB\BSON\PackedArray::offsetGet — Returns the value of an index in the array
- MongoDB\BSON\PackedArray::offsetSet — Implementation of ArrayAccess
- MongoDB\BSON\PackedArray::offsetUnset — Implementation of ArrayAccess
- MongoDB\BSON\PackedArray::toCanonicalExtendedJSON — Returns the Canonical Extended JSON representation of the BSON array
- MongoDB\BSON\PackedArray::toPHP — Returns the PHP representation of the BSON array
- MongoDB\BSON\PackedArray::toRelaxedExtendedJSON — Returns the Relaxed Extended JSON representation of the BSON array
- MongoDB\BSON\PackedArray::__toString — Returns the string representation of this BSON array

# The MongoDB\BSON\Iterator class

(mongodb >=1.16.0)

## Giriş

Iterator used to iterate a BSON document or array.

## Sınıf Sözdizimi

final class MongoDB\BSON\Iterator implements Iterator {
/* Yöntemler */
final private function __construct()
public function current(): mixed
public function key(): string|int
public function next(): void
public function rewind(): void
public function valid(): bool
}

# MongoDB\BSON\Iterator::__construct

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::__construct — Construct a new BSON iterator (unused)

### Açıklama

final private function MongoDB\BSON\Iterator::__construct()

MongoDB\BSON\Iterator objects are created by calling MongoDB\BSON\Document::getIterator() or MongoDB\BSON\PackedArray::getIterator() and cannot be instantiated directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- MongoDB\BSON\Document::getIterator() - Returns an iterator for the BSON document
- MongoDB\BSON\PackedArray::getIterator() - Returns an iterator for the BSON array
- » BSON Types

# MongoDB\BSON\Iterator::current

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::current — Returns the current element

### Açıklama

public function MongoDB\BSON\Iterator::current(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the value of the current element.

> Bilginize: When encountering a value encoded as 64-bit integer in the BSON structure, the return value of this method will be a MongoDB\BSON\Int64 instance.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the iterator is not valid.

### Ayrıca Bakınız

- Iterator::current() - O anki elemanı döndürür

# MongoDB\BSON\Iterator::key

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::key — Returns the key of the current element

### Açıklama

public function MongoDB\BSON\Iterator::key(): string|int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the key of the current element. When iterating a BSON document, the key will always be a string. When iterating a BSON array, the key will be an int.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\LogicException if the iterator is not valid.

### Ayrıca Bakınız

- Iterator::key() - O anki elemanın anahtarını döndürür

# MongoDB\BSON\Iterator::next

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::next — Advances the iterator to next element

### Açıklama

public function MongoDB\BSON\Iterator::next(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- Iterator::next() - Konumu sonraki elemana ilerletir

# MongoDB\BSON\Iterator::rewind

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::rewind — Rewinds the Iterator to the first element

### Açıklama

public function MongoDB\BSON\Iterator::rewind(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- Iterator::rewind() - Yineleyiciyi ilk elemana konumlandırır

# MongoDB\BSON\Iterator::valid

(mongodb >=1.16.0)

MongoDB\BSON\Iterator::valid — Checks if current position is valid

### Açıklama

public function MongoDB\BSON\Iterator::valid(): bool

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the current iterator position is valid, `false` otherwise.

### Ayrıca Bakınız

- Iterator::valid() - O anki konum geçerli mi diye bakar

## İçindekiler

- MongoDB\BSON\Iterator::__construct — Construct a new BSON iterator (unused)
- MongoDB\BSON\Iterator::current — Returns the current element
- MongoDB\BSON\Iterator::key — Returns the key of the current element
- MongoDB\BSON\Iterator::next — Advances the iterator to next element
- MongoDB\BSON\Iterator::rewind — Rewinds the Iterator to the first element
- MongoDB\BSON\Iterator::valid — Checks if current position is valid

# The MongoDB\BSON\Binary class

(mongodb >=1.0.0)

## Giriş

BSON type for binary data (i.e. array of bytes). Binary values also have a subtype, which is used to indicate what kind of data is in the byte array. Subtypes from zero to 127 are predefined or reserved. Subtypes from 128-255 are user-defined.

## Sınıf Sözdizimi

final class MongoDB\BSON\Binary implements MongoDB\BSON\BinaryInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Sabitler */
const int TYPE_GENERIC = 0;
const int TYPE_FUNCTION = 1;
const int TYPE_OLD_BINARY = 2;
const int TYPE_OLD_UUID = 3;
const int TYPE_UUID = 4;
const int TYPE_MD5 = 5;
const int TYPE_ENCRYPTED = 6;
const int TYPE_COLUMN = 7;
const int TYPE_SENSITIVE = 8;
const int TYPE_VECTOR = 9;
const int TYPE_USER_DEFINED = 128;
/* Yöntemler */
final public function __construct(string `$data`, int `$type` = MongoDB\BSON\Binary::TYPE_GENERIC)
final public static function fromVector(array `$vector`, MongoDB\BSON\VectorType `$vectorType`): MongoDB\BSON\Binary
final public function getData(): string
final public function getType(): int
final public function getVectorType(): MongoDB\BSON\VectorType
final public function jsonSerialize(): mixed
final public function toArray(): array
final public function __toString(): string
}

## Öntanımlı Sabitler

`MongoDB\BSON\Binary::TYPE_GENERIC`
  Generic binary data.
`MongoDB\BSON\Binary::TYPE_FUNCTION`
  Function.
`MongoDB\BSON\Binary::TYPE_OLD_BINARY`
  Generic binary data (deprecated in favor of `MongoDB\BSON\Binary::TYPE_GENERIC`).
`MongoDB\BSON\Binary::TYPE_OLD_UUID`
  Universally unique identifier (deprecated in favor of `MongoDB\BSON\Binary::TYPE_UUID`). When using this type, the Binary's data should be 16 bytes in length. Historically, other drivers encoded values with this type based on their language conventions (e.g. varying endianness), which makes it non-portable. The PHP extension applies no special handling for encoding or decoding data with this type.
`MongoDB\BSON\Binary::TYPE_UUID`
  Universally unique identifier. When using this type, the Binary's data should be 16 bytes in length and encoded according to » RFC 4122.
`MongoDB\BSON\Binary::TYPE_MD5`
  MD5 hash. When using this type, the Binary's data should be 16 bytes in length.
`MongoDB\BSON\Binary::TYPE_ENCRYPTED`
  Encrypted value. This subtype is used for client-side encryption.
`MongoDB\BSON\Binary::TYPE_COLUMN`
  Column data. This subtype is used for time-series collections.
`MongoDB\BSON\Binary::TYPE_SENSITIVE`
  Sensitive data. This subtype is used for sensitive data that should be excluded from server-side logging when possible.
`MongoDB\BSON\Binary::TYPE_VECTOR`
  Vector data. This subtype is used to efficiently store vector data for use with MongoDB's vector search.
`MongoDB\BSON\Binary::TYPE_USER_DEFINED`
  User-defined type. While types between 0 and 127 are predefined or reserved, types between 128 and 255 are user-defined and may be used for anything.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.2.0 | Added `MongoDB\BSON\Binary::TYPE_VECTOR`, as well as the MongoDB\BSON\Binary::fromVector(), MongoDB\BSON\Binary::getVectorType(), and MongoDB\BSON\Binary::toArray() functions.
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.17.0 | Added `MongoDB\BSON\Binary::TYPE_SENSITIVE`.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+. Added `MongoDB\BSON\Binary::TYPE_COLUMN`.
PECL mongodb 1.7.0 | Added `MongoDB\BSON\Binary::TYPE_ENCRYPTED`.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\BinaryInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\Binary::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Binary::__construct — Construct a new Binary

### Açıklama

final public function MongoDB\BSON\Binary::__construct(string `$data`, int `$type` = MongoDB\BSON\Binary::TYPE_GENERIC)

### Bağımsız Değişkenler

`data` (string)
  Binary data.
`type` (int)
  Unsigned 8-bit integer denoting the data's type. Defaults to `MongoDB\BSON\Binary::TYPE_GENERIC` if not specified.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `type` is not an unsigned 8-bit integer.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `type` is `MongoDB\BSON\Binary::TYPE_UUID` or `MongoDB\BSON\Binary::TYPE_OLD_UUID` and `data` is not exactly 16 bytes in length.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.15.0 | The `type` parameter defaults to `MongoDB\BSON\Binary::TYPE_GENERIC` if not specified.
PECL mongodb 1.3.0 | MongoDB\Driver\Exception\InvalidArgumentException is thrown if `type` is `MongoDB\BSON\Binary::TYPE_UUID` or `MongoDB\BSON\Binary::TYPE_OLD_UUID` and `data` is not exactly 16 bytes in length.
PECL mongodb 1.1.3 | MongoDB\Driver\Exception\InvalidArgumentException is thrown if `type` is not an unsigned 8-bit integer.

### Örnekler

Örnek 1 MongoDB\BSON\Binary::__construct() example

    <?php

    $binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
    var_dump($binary);

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\Binary)#1 (2) {
      ["data"]=>
      string(3) "foo"
      ["type"]=>
      int(0)
    }

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Binary::fromVector

(mongodb >=2.2.0)

MongoDB\BSON\Binary::fromVector — Creates a new binary with subtype `MongoDB\BSON\Binary::SUBTYPE_VECTOR` from the given array and vector type

### Açıklama

final public static function MongoDB\BSON\Binary::fromVector(array `$vector`, MongoDB\BSON\VectorType `$vectorType`): MongoDB\BSON\Binary

### Bağımsız Değişkenler

`vector` (array)

  An array of values representing the vector data. The type of each value must match the type indicated by the `vectorType` parameter:

  - for `MongoDB\BSON\VectorType::Float32`, each value must be a float
  - for `MongoDB\BSON\VectorType::Int8`, each value must be an 8-bit int, i.e. from `-127` to `128`
  - for `MongoDB\BSON\VectorType::PackedBit`, each value must be a bool or 1-bit int, i.e. `0` or `1`
`vectorType` (MongoDB\BSON\VectorType)
  The vector data type.

### Dönen Değerler

Returns a new Binary with subtype `MongoDB\BSON\Binary::SUBTYPE_VECTOR`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\Binary::toArray() - Returns the vector as an array for a Binary with subtype MongoDB\BSON\Binary::SUBTYPE_VECTOR
- MongoDB\BSON\Binary::getVectorType() - Returns the data type for a Binary with the vector subtype
- MongoDB\BSON\VectorType
- » BSON Types

# MongoDB\BSON\Binary::getData

(mongodb >=1.0.0)

MongoDB\BSON\Binary::getData — Returns the Binary's data

### Açıklama

final public function MongoDB\BSON\Binary::getData(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Binary's data.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Binary::getData() example

    <?php

    $binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
    var_dump($binary->getData());

    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "foo"

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Binary::getType

(mongodb >=1.0.0)

MongoDB\BSON\Binary::getType — Returns the Binary's type

### Açıklama

final public function MongoDB\BSON\Binary::getType(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Binary's type.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Binary::getType() example

    <?php

    $binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
    var_dump($binary->getType());

    ?>

Yukarıdaki örneğin çıktısı:

    int(0)

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Binary::getVectorType

(mongodb >=2.2.0)

MongoDB\BSON\Binary::getVectorType — Returns the data type for a Binary with the vector subtype

### Açıklama

final public function MongoDB\BSON\Binary::getVectorType(): MongoDB\BSON\VectorType

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the data type of the Binary vector.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the subtype is not `MongoDB\BSON\Binary::SUBTYPE_VECTOR`.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- » BSON Types
- MongoDB\BSON\VectorType

# MongoDB\BSON\Binary::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Binary::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Binary::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Binary.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Binary::toArray

(mongodb >=2.2.0)

MongoDB\BSON\Binary::toArray — Returns the vector as an array for a Binary with subtype `MongoDB\BSON\Binary::SUBTYPE_VECTOR`

### Açıklama

final public function MongoDB\BSON\Binary::toArray(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array containing the vector data.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\LogicException if the subtype is not `MongoDB\BSON\Binary::SUBTYPE_VECTOR`.
- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\BSON\Binary::fromVector() - Creates a new binary with subtype MongoDB\BSON\Binary::SUBTYPE_VECTOR from the given array and vector type
- » BSON Types

# MongoDB\BSON\Binary::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Binary::__toString — Returns the Binary's data

### Açıklama

final public function MongoDB\BSON\Binary::__toString(): string

Bu yöntem şu yöntemin takma adıdır: MongoDB\BSON\Binary::getData().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Binary's data.

### Örnekler

Örnek 1 MongoDB\BSON\Binary::__toString() example

    <?php

    var_dump((string) new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC));

    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "foo"

### Ayrıca Bakınız

- MongoDB\BSON\Binary::getData() - Returns the Binary's data
- » BSON Types

## İçindekiler

- MongoDB\BSON\Binary::__construct — Construct a new Binary
- MongoDB\BSON\Binary::fromVector — Creates a new binary with subtype MongoDB\BSON\Binary::SUBTYPE_VECTOR from the given array and vector type
- MongoDB\BSON\Binary::getData — Returns the Binary's data
- MongoDB\BSON\Binary::getType — Returns the Binary's type
- MongoDB\BSON\Binary::getVectorType — Returns the data type for a Binary with the vector subtype
- MongoDB\BSON\Binary::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Binary::toArray — Returns the vector as an array for a Binary with subtype MongoDB\BSON\Binary::SUBTYPE_VECTOR
- MongoDB\BSON\Binary::__toString — Returns the Binary's data

# The MongoDB\BSON\VectorType enum

(mongodb >=2.2.0)

## Giriş

The MongoDB\BSON\VectorType enum is used to specify the type of vector data stored in a MongoDB\BSON\Binary with subtype `MongoDB\BSON\Binary::TYPE_VECTOR`.

## Sayımlama Sözdizimi

enum MongoDB\BSON\VectorType
{
case Float32 ; // Each element in the vector is a 32-bit floating point value.
case Int8 ; // Each element in the vector is an 8-bit integer value.
case PackedBit ; // Each element in the vector is a 1-bit value. When creating vectors of this type, you may pass either bool or 1-bit int values, i.e. `0` or `1`.
}

# The MongoDB\BSON\Decimal128 class

(mongodb >=1.2.0)

## Giriş

BSON type for the » Decimal128 floating-point format, which supports numbers with up to 34 decimal digits (i.e. significant digits) and an exponent range of −6143 to +6144.

Unlike the double BSON type (i.e. float in PHP), which only stores an approximation of the decimal values, the decimal data type stores the exact value. For example, `MongoDB\BSON\Decimal128('9.99')` has a precise value of 9.99 where as a double 9.99 would have an approximate value of 9.9900000000000002131628….

> Bilginize: MongoDB\BSON\Decimal128 is only compatible with MongoDB 3.4+. Attempting to use the BSON type with an earlier version of MongoDB will result in an error.

## Sınıf Sözdizimi

final class MongoDB\BSON\Decimal128 implements MongoDB\BSON\Decimal128Interface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(string `$value`)
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\Decimal128Interface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\Decimal128::__construct

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::__construct — Construct a new Decimal128

### Açıklama

final public function MongoDB\BSON\Decimal128::__construct(string `$value`)

> Bilginize: MongoDB\BSON\Decimal128 is only compatible with MongoDB 3.4+. Attempting to use the BSON type with an earlier version of MongoDB will result in an error.

### Bağımsız Değişkenler

`value` (string)
  A decimal string.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `value` is not a valid decimal string.

### Örnekler

Örnek 1 MongoDB\BSON\Decimal128::__construct() example

    <?php

    var_dump(new MongoDB\BSON\Decimal128(1234.5678));
    var_dump(new MongoDB\BSON\Decimal128(NAN));
    var_dump(new MongoDB\BSON\Decimal128(INF));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\Decimal128)#1 (1) {
      ["dec"]=>
      string(9) "1234.5678"
    }
    object(MongoDB\BSON\Decimal128)#1 (1) {
      ["dec"]=>
      string(3) "NaN"
    }
    object(MongoDB\BSON\Decimal128)#1 (1) {
      ["dec"]=>
      string(8) "Infinity"
    }

### Ayrıca Bakınız

- » Decimal128 floating-point format
- » BSON Types

# MongoDB\BSON\Decimal128::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Decimal128::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Decimal128.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Decimal128::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::__toString — Returns the string representation of this Decimal128

### Açıklama

final public function MongoDB\BSON\Decimal128::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Decimal128.

### Örnekler

Örnek 1 MongoDB\BSON\Decimal128::__toString() example

    <?php

    var_dump((string) new MongoDB\BSON\Decimal128(1234.5678));
    var_dump((string) new MongoDB\BSON\Decimal128(NAN));
    var_dump((string) new MongoDB\BSON\Decimal128(INF));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(9) "1234.5678"
    string(3) "NaN"
    string(8) "Infinity"

### Ayrıca Bakınız

- » Decimal128 floating-point format
- » BSON Types

## İçindekiler

- MongoDB\BSON\Decimal128::__construct — Construct a new Decimal128
- MongoDB\BSON\Decimal128::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Decimal128::__toString — Returns the string representation of this Decimal128

# The MongoDB\BSON\Javascript class

(mongodb >=1.0.0)

## Giriş

BSON type for Javascript code. An optional scope document may be specified that maps identifiers to values and defines the scope in which the code should be evaluated by the server.

> Bilginize: This BSON type is mainly used when executing database commands that take a Javascript function as a parameter, such as » mapReduce.

## Sınıf Sözdizimi

final class MongoDB\BSON\Javascript implements MongoDB\BSON\JavascriptInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(string `$code`, array|object|null `$scope` = `null`)
final public function getCode(): string
final public function getScope(): ?object
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\JavascriptInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\Javascript::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Javascript::__construct — Construct a new Javascript

### Açıklama

final public function MongoDB\BSON\Javascript::__construct(string `$code`, array|object|null `$scope` = `null`)

### Bağımsız Değişkenler

`code` (string)
  Javascript code.
`scope` (array|object)
  Javascript scope.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `code` contains null bytes.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.2.0 | MongoDB\Driver\Exception\InvalidArgumentException is thrown if `code` contains null bytes. Previously, values would be truncated at the first null byte.

### Örnekler

Örnek 1 MongoDB\BSON\Javascript::__construct() example

    <?php

    $code = new MongoDB\BSON\Javascript('function() { return 1; }');
    var_dump($code);

    $codews = new MongoDB\BSON\Javascript('function() { return foo; }', ['foo' => 'bar']);
    var_dump($codews);

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\Javascript)#1 (2) {
      ["javascript"]=>
      string(24) "function() { return 1; }"
      ["scope"]=>
      object(stdClass)#2 (0) {
      }
    }
    object(MongoDB\BSON\Javascript)#2 (2) {
      ["javascript"]=>
      string(26) "function() { return foo; }"
      ["scope"]=>
      object(stdClass)#1 (1) {
        ["foo"]=>
        string(3) "bar"
      }
    }

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Javascript::getCode

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::getCode — Returns the Javascript's code

### Açıklama

final public function MongoDB\BSON\Javascript::getCode(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Javascript's code.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Javascript::getCode() example

    <?php

    $js = new MongoDB\BSON\Javascript('function foo(bar) { return bar; }');
    var_dump($js->getCode());

    ?>

Yukarıdaki örneğin çıktısı:

    string(33) "function foo(bar) { return bar; }"

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Javascript::getScope

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::getScope — Returns the Javascript's scope document

### Açıklama

final public function MongoDB\BSON\Javascript::getScope(): ?object

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Javascript's scope document, or `null` if the is no scope.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Javascript::getScope() example

    <?php

    $js = new MongoDB\BSON\Javascript('function foo(bar) { return bar; }');
    var_dump($js->getScope());

    $js = new MongoDB\BSON\Javascript('function foo() { return foo; }', ['foo' => 42]);
    var_dump($js->getScope());

    ?>

Yukarıdaki örneğin çıktısı:

    NULL
    object(stdClass)#1 (1) {
      ["foo"]=>
      int(42)
    }

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Javascript::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Javascript::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Javascript.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Javascript::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::__toString — Returns the Javascript's code

### Açıklama

final public function MongoDB\BSON\Javascript::__toString(): string

Bu yöntem şu yöntemin takma adıdır: MongoDB\BSON\Javascript::getCode().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Javascript's code.

### Örnekler

Örnek 1 MongoDB\BSON\Javascript::__toString() example

    <?php

    var_dump((string) new MongoDB\BSON\Javascript('function foo(bar) { return bar; }'));

    ?>

Yukarıdaki örneğin çıktısı:

    string(33) "function foo(bar) { return bar; }"

### Ayrıca Bakınız

- MongoDB\BSON\Javascript::getCode() - Returns the Javascript's code
- » BSON Types

## İçindekiler

- MongoDB\BSON\Javascript::__construct — Construct a new Javascript
- MongoDB\BSON\Javascript::getCode — Returns the Javascript's code
- MongoDB\BSON\Javascript::getScope — Returns the Javascript's scope document
- MongoDB\BSON\Javascript::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Javascript::__toString — Returns the Javascript's code

# The MongoDB\BSON\MaxKey class

(mongodb >=1.0.0)

## Giriş

Special BSON type which compares higher than all other possible BSON element values.

> Bilginize: This is an internal MongoDB type used for indexing and sharding.

## Sınıf Sözdizimi

final class MongoDB\BSON\MaxKey implements MongoDB\BSON\MaxKeyInterface, MongoDB\BSON\Type, JsonSerializable {
/* Yöntemler */
final public function __construct()
final public function jsonSerialize(): mixed
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\MaxKeyInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\MaxKey::__construct

(mongodb >=1.0.0)

MongoDB\BSON\MaxKey::__construct — Construct a new MaxKey

### Açıklama

final public function MongoDB\BSON\MaxKey::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\MaxKey::__construct() example

    <?php

    var_dump(new MongoDB\BSON\MaxKey());

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\MaxKey)#1 (0) {
    }

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\MaxKey::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\MaxKey::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\MaxKey::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\MaxKey.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

## İçindekiler

- MongoDB\BSON\MaxKey::__construct — Construct a new MaxKey
- MongoDB\BSON\MaxKey::jsonSerialize — Returns a representation that can be converted to JSON

# The MongoDB\BSON\MinKey class

(mongodb >=1.0.0)

## Giriş

Special BSON type which compares lower than all other possible BSON element values.

> Bilginize: This is an internal MongoDB type used for indexing and sharding.

## Sınıf Sözdizimi

final class MongoDB\BSON\MinKey implements MongoDB\BSON\MinKeyInterface, MongoDB\BSON\Type, JsonSerializable {
/* Yöntemler */
final public function __construct()
final public function jsonSerialize(): mixed
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\MinKeyInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\MinKey::__construct

(mongodb >=1.0.0)

MongoDB\BSON\MinKey::__construct — Construct a new MinKey

### Açıklama

final public function MongoDB\BSON\MinKey::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\MinKey::__construct() example

    <?php

    var_dump(new MongoDB\BSON\MinKey());

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\MinKey)#1 (0) {
    }

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\MinKey::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\MinKey::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\MinKey::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\MinKey.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

## İçindekiler

- MongoDB\BSON\MinKey::__construct — Construct a new MinKey
- MongoDB\BSON\MinKey::jsonSerialize — Returns a representation that can be converted to JSON

# The MongoDB\BSON\ObjectId class

(mongodb >=1.0.0)

## Giriş

BSON type for an » ObjectId. The value consists of 12 bytes, where the first four bytes are a timestamp that reflect the ObjectId's creation. Specifically, the value consists of:

- a 4-byte value representing the seconds since the Unix epoch,
- a 5-byte random number unique to a machine and process, and
- a 3-byte counter, starting with a random value.

In MongoDB, each document stored in a collection requires a unique `_id` field that acts as a primary key. If an inserted document omits the `_id` field, the extension automatically generates an ObjectId for the `_id` field.

Using ObjectIds for the `_id` field provides the following additional benefits:

- The creation time of the ObjectId may be accessed using the MongoDB\BSON\ObjectId::getTimestamp() method.
- Sorting on an `_id` field that stores ObjectId values is roughly equivalent to sorting by creation time.

## Sınıf Sözdizimi

final class MongoDB\BSON\ObjectId implements MongoDB\BSON\ObjectIdInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(?string `$id` = `null`)
final public function getTimestamp(): int
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Renamed from `MongoDB\BSON\ObjectID` to `MongoDB\BSON\ObjectId`. Implements MongoDB\BSON\ObjectIdInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\ObjectId::__construct

(mongodb >=1.0.0)

MongoDB\BSON\ObjectId::__construct — Construct a new ObjectId

### Açıklama

final public function MongoDB\BSON\ObjectId::__construct(?string `$id` = `null`)

### Bağımsız Değişkenler

`id` (string)
  A 24-character hexadecimal string. If not provided, the extension will generate an ObjectId.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `id` is not a 24-character hexadecimal string.

### Örnekler

Örnek 1 MongoDB\BSON\ObjectId::__construct() example

    <?php

    var_dump(new MongoDB\BSON\ObjectId());

    var_dump(new MongoDB\BSON\ObjectId('000000000000000000000001'));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\ObjectId)#1 (1) {
      ["oid"]=>
      string(24) "56732d3dda14d81214634921"
    }
    object(MongoDB\BSON\ObjectId)#1 (1) {
      ["oid"]=>
      string(24) "000000000000000000000001"
    }

### Ayrıca Bakınız

- » ObjectId Reference
- » BSON Types: ObjectId

# MongoDB\BSON\ObjectId::getTimestamp

(mongodb >=1.2.0)

MongoDB\BSON\ObjectId::getTimestamp — Returns the timestamp component of this ObjectId

### Açıklama

final public function MongoDB\BSON\ObjectId::getTimestamp(): int

The timestamp component of an ObjectId is its most significant 32 bits, which denotes the number of seconds since the Unix epoch. This value is read as an unsigned 32-bit integer with big-endian byte order.

> Bilginize: Because PHP's integer type is signed, some values returned by this method may appear as negative integers on 32-bit platforms. The `"%u"` formatter of sprintf() may be used to obtain a string representation of the unsigned decimal value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the timestamp component of this ObjectId.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\ObjectId::getTimestamp() example

    <?php

    var_dump((new MongoDB\BSON\ObjectId())->getTimestamp());

    var_dump((new MongoDB\BSON\ObjectId('0000002a0000000000000000'))->getTimestamp());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    integer(1484854719)
    integer(42)

### Ayrıca Bakınız

- » ObjectId Reference
- » BSON Types: ObjectId

# MongoDB\BSON\ObjectId::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\ObjectId::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\ObjectId::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\ObjectId.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\ObjectId::__toString

(mongodb >=1.0.0)

MongoDB\BSON\ObjectId::__toString — Returns the hexadecimal representation of this ObjectId

### Açıklama

final public function MongoDB\BSON\ObjectId::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hexadecimal representation of this ObjectId.

### Örnekler

Örnek 1 MongoDB\BSON\ObjectId::__toString() example

    <?php

    var_dump((string) new MongoDB\BSON\ObjectId());
    var_dump((string) new MongoDB\BSON\ObjectId('000000000000000000000001'));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(24) "56731b49da14d8747d701211"
    string(24) "000000000000000000000001"

### Ayrıca Bakınız

- » ObjectId Reference
- » BSON Types: ObjectId

## İçindekiler

- MongoDB\BSON\ObjectId::__construct — Construct a new ObjectId
- MongoDB\BSON\ObjectId::getTimestamp — Returns the timestamp component of this ObjectId
- MongoDB\BSON\ObjectId::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\ObjectId::__toString — Returns the hexadecimal representation of this ObjectId

# The MongoDB\BSON\Regex class

(mongodb >=1.0.0)

## Giriş

BSON type for a regular expression pattern and optional » flags.

> Bilginize: This BSON type is mainly used when querying the database. Alternatively, the » $regex query operator may be used.

## Sınıf Sözdizimi

final class MongoDB\BSON\Regex implements MongoDB\BSON\RegexInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(string `$pattern`, string `$flags` = "")
final public function getFlags(): string
final public function getPattern(): string
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\RegexInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\Regex::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Regex::__construct — Construct a new Regex

### Açıklama

final public function MongoDB\BSON\Regex::__construct(string `$pattern`, string `$flags` = "")

### Bağımsız Değişkenler

`pattern` (string)
  The regular expression pattern.

  > Bilginize: The pattern should not be wrapped with delimiter characters.

`flags` (string)
  The » regular expression flags. Characters in this argument will be sorted alphabetically.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if `pattern` or `flags` contain null bytes.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.2.0 | The `flags` argument is optional and defaults to an empty string. Characters in the `flags` argument will be sorted alphabetically when a Regex is constructed. Previously, the characters were stored in the order provided. MongoDB\Driver\Exception\InvalidArgumentException is thrown if `pattern` or `flags` contain null bytes. Previously, values would be truncated at the first null byte.

### Örnekler

Örnek 1 MongoDB\BSON\Regex::__construct() example

    <?php

    $regex = new MongoDB\BSON\Regex('^foo', 'i');
    var_dump($regex);

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\Regex)#1 (2) {
      ["pattern"]=>
      string(4) "^foo"
      ["flags"]=>
      string(1) "i"
    }

### Ayrıca Bakınız

- » BSON Types
- » Supported regular expression flags

# MongoDB\BSON\Regex::getFlags

(mongodb >=1.0.0)

MongoDB\BSON\Regex::getFlags — Returns the Regex's flags

### Açıklama

final public function MongoDB\BSON\Regex::getFlags(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Regex's flags.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Regex::getFlags() example

    <?php

    $regex = new MongoDB\BSON\Regex('regex', 'i');
    var_dump($regex->getFlags());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(1) "i"

### Ayrıca Bakınız

- » BSON Types
- » Supported regular expression flags

# MongoDB\BSON\Regex::getPattern

(mongodb >=1.0.0)

MongoDB\BSON\Regex::getPattern — Returns the Regex's pattern

### Açıklama

final public function MongoDB\BSON\Regex::getPattern(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Regex's pattern.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Regex::getPattern() example

    <?php

    $regex = new MongoDB\BSON\Regex('regex', 'i');
    var_dump($regex->getPattern());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(5) "regex"

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Regex::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Regex::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Regex::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Regex.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Regex::__toString

(mongodb >=1.0.0)

MongoDB\BSON\Regex::__toString — Returns the string representation of this Regex

### Açıklama

final public function MongoDB\BSON\Regex::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Regex.

### Örnekler

Örnek 1 MongoDB\BSON\Regex::__toString() example

    <?php

    $regex = new MongoDB\BSON\Regex('regex', 'i');
    var_dump((string) $regex);

    ?>

Yukarıdaki örneğin çıktısı:

    string(8) "/regex/i"

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\Regex::__construct — Construct a new Regex
- MongoDB\BSON\Regex::getFlags — Returns the Regex's flags
- MongoDB\BSON\Regex::getPattern — Returns the Regex's pattern
- MongoDB\BSON\Regex::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Regex::__toString — Returns the string representation of this Regex

# The MongoDB\BSON\Timestamp class

(mongodb >=1.0.0)

## Giriş

Represents a » BSON timestamp, The value consists of a 4-byte timestamp (i.e. seconds since the epoch) and a 4-byte increment.

> Bilginize: This is an internal MongoDB type used for replication and sharding. It is not intended for general date storage (MongoDB\BSON\UTCDateTime should be used instead).

## Sınıf Sözdizimi

final class MongoDB\BSON\Timestamp implements MongoDB\BSON\TimestampInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(int `$increment`, int `$timestamp`)
final public function getIncrement(): int
final public function getTimestamp(): int
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\TimestampInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\Timestamp::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Timestamp::__construct — Construct a new Timestamp

### Açıklama

final public function MongoDB\BSON\Timestamp::__construct(int `$increment`, int `$timestamp`)

### Bağımsız Değişkenler

`increment` (int)
  32-bit integer denoting the incrementing ordinal for operations within a given second.
`timestamp` (int)
  32-bit integer denoting seconds since the Unix epoch.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\Timestamp::__construct() example

    <?php

    $timestamp = new MongoDB\BSON\Timestamp(1234, 5678);

    ?>

Yukarıdaki örneğin çıktısı:

    object(MongoDB\BSON\Timestamp)#1 (2) {
      ["increment"]=>
      int(1234)
      ["timestamp"]=>
      int(5678)
    }

### Ayrıca Bakınız

- » BSON Types: Timestamps

# MongoDB\BSON\Timestamp::getIncrement

(mongodb >=1.3.0)

MongoDB\BSON\Timestamp::getIncrement — Returns the increment component of this Timestamp

### Açıklama

final public function MongoDB\BSON\Timestamp::getIncrement(): int

The increment component of a Timestamp is its least significant 32 bits, which denotes the incrementing ordinal for operations within a given second. This value is read as an unsigned 32-bit integer with big-endian byte order.

> Bilginize: Because PHP's integer type is signed, some values returned by this method may appear as negative integers on 32-bit platforms. The `"%u"` formatter of sprintf() may be used to obtain a string representation of the unsigned decimal value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the increment component of this Timestamp.

Uyarı

On 32-bit systems this method may return a negative number. Although the increment and timestamp parts of the BSON timestamp type consists of two unsigned 32-bit values, PHP can not represent these on 32-bit platforms.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- » BSON Types: Timestamps

# MongoDB\BSON\Timestamp::getTimestamp

(mongodb >=1.3.0)

MongoDB\BSON\Timestamp::getTimestamp — Returns the timestamp component of this Timestamp

### Açıklama

final public function MongoDB\BSON\Timestamp::getTimestamp(): int

The timestamp component of a Timestamp is its most significant 32 bits, which denotes the number of seconds since the Unix epoch. This value is read as an unsigned 32-bit integer with big-endian byte order.

> Bilginize: Because PHP's integer type is signed, some values returned by this method may appear as negative integers on 32-bit platforms. The `"%u"` formatter of sprintf() may be used to obtain a string representation of the unsigned decimal value.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the timestamp component of this Timestamp.

Uyarı

On 32-bit systems this method may return a negative number. Although the increment and timestamp parts of the BSON timestamp type consists of two unsigned 32-bit values, PHP can not represent these on 32-bit platforms.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- » BSON Types: Timestamps

# MongoDB\BSON\Timestamp::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Timestamp::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Timestamp::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Timestamp.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Timestamp::__toString

(mongodb >=1.0.0)

MongoDB\BSON\Timestamp::__toString — Returns the string representation of this Timestamp

### Açıklama

final public function MongoDB\BSON\Timestamp::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Timestamp.

### Örnekler

Örnek 1 MongoDB\BSON\Timestamp::__toString() example

    <?php

    $timestamp = new MongoDB\BSON\Timestamp(1234, 5678);
    var_dump((string) $timestamp);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(11) "[1234:5678]"

### Ayrıca Bakınız

- » BSON Types: Timestamps

## İçindekiler

- MongoDB\BSON\Timestamp::__construct — Construct a new Timestamp
- MongoDB\BSON\Timestamp::getIncrement — Returns the increment component of this Timestamp
- MongoDB\BSON\Timestamp::getTimestamp — Returns the timestamp component of this Timestamp
- MongoDB\BSON\Timestamp::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Timestamp::__toString — Returns the string representation of this Timestamp

# The MongoDB\BSON\UTCDateTime class

(mongodb >=1.0.0)

## Giriş

Represents a » BSON date. The value is a 64-bit integer that represents the number of milliseconds since the Unix epoch (Jan 1, 1970). Negative values represent dates before 1970.

## Sınıf Sözdizimi

final class MongoDB\BSON\UTCDateTime implements MongoDB\BSON\UTCDateTimeInterface, MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(int|MongoDB\BSON\Int64|DateTimeInterface|null `$milliseconds` = `null`)
final public function jsonSerialize(): mixed
final public function toDateTime(): DateTime
final public function toDateTimeImmutable(): DateTimeImmutable
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.
PECL mongodb 1.3.0 | Implements MongoDB\BSON\UTCDateTimeInterface.
PECL mongodb 1.2.0 | Implements Serializable and JsonSerializable.

# MongoDB\BSON\UTCDateTime::__construct

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::__construct — Construct a new UTCDateTime

### Açıklama

final public function MongoDB\BSON\UTCDateTime::__construct(int|MongoDB\BSON\Int64|DateTimeInterface|null `$milliseconds` = `null`)

### Bağımsız Değişkenler

`milliseconds` (int|MongoDB\BSON\Int64|DateTimeInterface|null)
  Number of milliseconds since the Unix epoch (Jan 1, 1970). Negative values represent dates before 1970. This value may be provided as a 64-bit int. For compatibility on 32-bit systems, this parameter may also be provided as a MongoDB\BSON\Int64. If the argument is a DateTimeInterface, the number of milliseconds since the Unix epoch will be derived from that value. If this argument is `null`, the current time will be used by default.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | The `milliseconds` no longer accepts a string or float argument.
PECL mongodb 1.20.0 | The `milliseconds` argument now accepts a MongoDB\BSON\Int64 object (for compatibility on 32-bit platforms). Specifying a string or float is deprecated.
PECL mongodb 1.2.0 | The `milliseconds` argument is optional and defaults to `null` (i.e. current time). The argument also accepts a DateTimeInterface, which may be used to derive the number of milliseconds since the Unix epoch. Previously, only int, float, and string types were accepted.

### Örnekler

Örnek 1 MongoDB\BSON\UTCDateTime::__construct() example

    <?php

    var_dump(new MongoDB\BSON\UTCDateTime);

    var_dump(new MongoDB\BSON\UTCDateTime(new DateTime));

    var_dump(new MongoDB\BSON\UTCDateTime(1416445411987));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(MongoDB\BSON\UTCDateTime)#1 (1) {
      ["milliseconds"]=>
      string(13) "1484852905560"
    }
    object(MongoDB\BSON\UTCDateTime)#1 (1) {
      ["milliseconds"]=>
      string(13) "1484852905560"
    }
    object(MongoDB\BSON\UTCDateTime)#1 (1) {
      ["milliseconds"]=>
      string(13) "1416445411987"
    }

### Ayrıca Bakınız

- » BSON Types: Date

# MongoDB\BSON\UTCDateTime::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\UTCDateTime::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\UTCDateTime::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\UTCDateTime.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\UTCDateTime::toDateTime

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::toDateTime — Returns the DateTime representation of this UTCDateTime

### Açıklama

final public function MongoDB\BSON\UTCDateTime::toDateTime(): DateTime

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the DateTime representation of this UTCDateTime. The returned DateTime will use the UTC time zone.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\UTCDatetime::toDateTime() example

    <?php

    $utcdatetime = new MongoDB\BSON\UTCDateTime(1416445411987);
    $datetime = $utcdatetime->toDateTime();
    var_dump($datetime->format('r'));
    var_dump($datetime->format('U.u'));
    var_dump($datetime->getTimezone());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(31) "Thu, 20 Nov 2014 01:03:31 +0000"
    string(17) "1416445411.987000"
    object(DateTimeZone)#3 (2) {
      ["timezone_type"]=>
      int(1)
      ["timezone"]=>
      string(6) "+00:00"
    }

### Ayrıca Bakınız

- MongoDB\BSON\UTCDateTime::toDateTimeImmutable() - Returns the DateTimeImmutable representation of this UTCDateTime
- » BSON Types: Date

# MongoDB\BSON\UTCDateTime::toDateTimeImmutable

(mongodb >=1.20.0)

MongoDB\BSON\UTCDateTime::toDateTimeImmutable — Returns the DateTimeImmutable representation of this UTCDateTime

### Açıklama

final public function MongoDB\BSON\UTCDateTime::toDateTimeImmutable(): DateTimeImmutable

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the DateTimeImmutable representation of this UTCDateTime. The returned DateTimeImmutable will use the UTC time zone.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Örnekler

Örnek 1 MongoDB\BSON\UTCDatetime::toDateTimeImmutable() example

    <?php

    $utcdatetime = new MongoDB\BSON\UTCDateTime(1416445411987);
    $datetime = $utcdatetime->toDateTimeImmutable();
    var_dump($datetime->format('r'));
    var_dump($datetime->format('U.u'));
    var_dump($datetime->getTimezone());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(31) "Thu, 20 Nov 2014 01:03:31 +0000"
    string(17) "1416445411.987000"
    object(DateTimeZone)#3 (2) {
      ["timezone_type"]=>
      int(1)
      ["timezone"]=>
      string(6) "+00:00"
    }

### Ayrıca Bakınız

- MongoDB\BSON\UTCDateTime::toDateTime() - Returns the DateTime representation of this UTCDateTime
- » BSON Types: Date

# MongoDB\BSON\UTCDateTime::__toString

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::__toString — Returns the string representation of this UTCDateTime

### Açıklama

final public function MongoDB\BSON\UTCDateTime::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this UTCDateTime.

### Örnekler

Örnek 1 MongoDB\BSON\UTCDateTime::__toString() example

    <?php

    $utcdatetime = new MongoDB\BSON\UTCDateTime(1416445411987);
    var_dump((string) $utcdatetime);

    ?>

Yukarıdaki örneğin çıktısı:

    string(13) "1416445411987"

### Ayrıca Bakınız

- » BSON Types: Date

## İçindekiler

- MongoDB\BSON\UTCDateTime::__construct — Construct a new UTCDateTime
- MongoDB\BSON\UTCDateTime::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\UTCDateTime::toDateTime — Returns the DateTime representation of this UTCDateTime
- MongoDB\BSON\UTCDateTime::toDateTimeImmutable — Returns the DateTimeImmutable representation of this UTCDateTime
- MongoDB\BSON\UTCDateTime::__toString — Returns the string representation of this UTCDateTime

# The MongoDB\BSON\Type interface

(mongodb >=1.0.0)

## Giriş

Abstract base interface that should not be implemented directly.

## Arayüz Sözdizimi

class MongoDB\BSON\Type {
}

This interface has no methods. Its only purpose is to be the base interface for all BSON type classes.

# The MongoDB\BSON\Persistable interface

(mongodb >=1.0.0)

## Giriş

Classes may implement this interface to take advantage of automatic ODM (object document mapping) behavior in the extension. During serialization, the extension will inject a __pclass property containing the PHP class name into the data returned by MongoDB\BSON\Serializable::bsonSerialize(). During unserialization, the same __pclass property will then be used to infer the PHP class (independent of any type map configuration) to be constructed before MongoDB\BSON\Unserializable::bsonUnserialize() is invoked. See Persisting Data for additional information.

> Bilginize: Even if MongoDB\BSON\Serializable::bsonSerialize() would return a sequential array, injection of the __pclass property will cause the object to be serialized as a BSON document.

## Arayüz Sözdizimi

class MongoDB\BSON\Persistable implements MongoDB\BSON\Unserializable, MongoDB\BSON\Serializable {
/* Yöntemler */
abstract public function bsonSerialize(): array|stdClass|MongoDB\BSON\Document
/* Miras alınan yöntemler */
abstract public function MongoDB\BSON\Serializable::bsonSerialize(): array|stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray
abstract public function MongoDB\BSON\Unserializable::bsonUnserialize(array `$data`): void
}

# MongoDB\BSON\Persistable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Persistable::bsonSerialize — Provides an array or document to serialize as BSON

### Açıklama

abstract public function MongoDB\BSON\Persistable::bsonSerialize(): array|stdClass|MongoDB\BSON\Document

Called during serialization of the object to BSON. The method must return an array, stdClass, or MongoDB\BSON\Document.

The return value will always be serialized as a BSON document. The serialized document will include a field containing the class name of the object. For this reason, it is not possible to return a MongoDB\BSON\PackedArray instance in this method.

Users are encouraged to include an _id property (e.g. a MongoDB\BSON\ObjectId initialized in the constructor) when returning data for a BSON root document. In the absence of an _id property, the extension or server will generate a MongoDB\BSON\ObjectId for insert or upsert operations, respectively.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array, stdClass, or MongoDB\BSON\Document to be serialized as a BSON document.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.17.0 | This method may now also return MongoDB\BSON\Document instances in addition to array and stdClass.

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
- MongoDB\BSON\Unserializable::bsonUnserialize() - Constructs the object from a BSON array or document
- MongoDB\BSON\Persistable
- Persisting Data

## İçindekiler

- MongoDB\BSON\Persistable::bsonSerialize — Provides an array or document to serialize as BSON

# The MongoDB\BSON\Serializable interface

(mongodb >=1.0.0)

## Giriş

Classes that implement this interface may return data to be serialized as a BSON array or document in lieu of the object's public properties.

## Arayüz Sözdizimi

class MongoDB\BSON\Serializable implements MongoDB\BSON\Type {
/* Yöntemler */
abstract public function bsonSerialize(): array|stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\Serializable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Serializable::bsonSerialize — Provides an array or document to serialize as BSON

### Açıklama

abstract public function MongoDB\BSON\Serializable::bsonSerialize(): array|stdClass|MongoDB\BSON\Document|MongoDB\BSON\PackedArray

Called during serialization of the object to BSON. The method must return an array, stdClass, MongoDB\BSON\Document, or MongoDB\BSON\PackedArray.

Root documents (e.g. a MongoDB\BSON\Serializable passed to MongoDB\BSON\Document::fromPHP()) will always be serialized as a BSON document. For field values, associative arrays and stdClass instances will be serialized as a BSON document and sequential arrays (i.e. sequential, numeric indexes starting at `0`) will be serialized as a BSON array.

Users are encouraged to include an _id property (e.g. a MongoDB\BSON\ObjectId initialized in the constructor) when returning data for a BSON root document. In the absence of an _id property, the extension or server will generate a MongoDB\BSON\ObjectId for insert or upsert operations, respectively.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array, stdClass, MongoDB\BSON\Document, or MongoDB\BSON\PackedArray to be serialized as a BSON array or document.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.17.0 | The return type was changed from array|object. Instead of object, the return type now specifies stdClass. Classes that implement this interface must be changed to no longer declare an object return type. As the return type is tentative, a deprecation warning is emitted on PHP 8.1 and newer. In addition to the changes above, the extension now also supports returning instances of MongoDB\BSON\Document and MongoDB\BSON\PackedArray. Please note that any MongoDB\BSON\PackedArray instances returned are silently converted to objects when stored as root documents. They are stored as arrays when used as an embedded field value.

### Örnekler

Örnek 1 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for root document

    <?php

    class MyDocument implements MongoDB\BSON\Serializable
    {
        private $id;

        function __construct()
        {
            $this->id = new MongoDB\BSON\ObjectId;
        }

        function bsonSerialize(): array
        {
            return ['_id' => $this->id, 'foo' => 'bar'];
        }
    }

    echo MongoDB\BSON\Document::fromPHP(new MyDocument)->toRelaxedExtendedJSON(), "\n";

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    { "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }

Örnek 2 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for root document

    <?php

    class MyArray implements MongoDB\BSON\Serializable
    {
        function bsonSerialize(): array
        {
            return [1, 2, 3];
        }
    }

    echo MongoDB\BSON\Document::fromPHP(new MyArray)->toRelaxedExtendedJSON(), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    { "0" : 1, "1" : 2, "2" : 3 }

Örnek 3 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for document field

    <?php

    class MyDocument implements MongoDB\BSON\Serializable
    {
        function bsonSerialize(): array
        {
            return ['foo' => 'bar'];
        }
    }

    $value = ['document' => new MyDocument];

    echo MongoDB\BSON\Document::fromPHP($value)->toRelaxedExtendedJSON(), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    { "document" : { "foo" : "bar" } }

Örnek 4 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for document field

    <?php

    class MyArray implements MongoDB\BSON\Serializable
    {
        function bsonSerialize(): array
        {
            return [1, 2, 3];
        }
    }

    $value = ['array' => new MyArray];

    echo MongoDB\BSON\Document::fromPHP($value)->toRelaxedExtendedJSON(), "\n";

    ?>

Yukarıdaki örneğin çıktısı:

    { "array" : [ 1, 2, 3 ] }

### Ayrıca Bakınız

- MongoDB\BSON\Unserializable::bsonUnserialize() - Constructs the object from a BSON array or document
- MongoDB\BSON\Persistable
- Persisting Data

## İçindekiler

- MongoDB\BSON\Serializable::bsonSerialize — Provides an array or document to serialize as BSON

# The MongoDB\BSON\Unserializable interface

(mongodb >=1.0.0)

## Giriş

Classes that implement this interface may be specified in a type map for unserializing BSON arrays and documents (both root and embedded).

## Arayüz Sözdizimi

class MongoDB\BSON\Unserializable {
/* Yöntemler */
abstract public function bsonUnserialize(array `$data`): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\Unserializable::bsonUnserialize

(mongodb >=1.0.0)

MongoDB\BSON\Unserializable::bsonUnserialize — Constructs the object from a BSON array or document

### Açıklama

abstract public function MongoDB\BSON\Unserializable::bsonUnserialize(array `$data`): void

Called during unserialization of the object from BSON. The properties of the BSON array or document will be passed to the method as an array.

Remember to check for an _id property when handling data from a BSON document.

> Bilginize: This method acts as the constructor of the object. The __construct() method will not be called after this method.

### Bağımsız Değişkenler

`data` (array)
  Properties within the BSON array or document.

### Dönen Değerler

The return value from this method is ignored.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.

### Örnekler

Örnek 1 MongoDB\BSON\Unserializable::bsonUnserialize() example

    <?php

    class MyDocument implements MongoDB\BSON\Unserializable
    {
        private $data = [];

        function bsonUnserialize(array $data): void
        {
            $this->data = $data;
        }
    }

    $bson = MongoDB\BSON\Document::fromJSON('{ "foo": "bar" }');

    var_dump($bson->toPHP(['root' => 'MyDocument']));

    ?>

Yukarıdaki örneğin çıktısı:

    object(MyDocument)#1 (1) {
      ["data":"MyDocument":private]=>
      array(1) {
        ["foo"]=>
        string(3) "bar"
      }
    }

### Ayrıca Bakınız

- MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
- MongoDB\BSON\Persistable
- Persisting Data

## İçindekiler

- MongoDB\BSON\Unserializable::bsonUnserialize — Constructs the object from a BSON array or document

# The MongoDB\BSON\BinaryInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\Binary to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\BinaryInterface {
/* Yöntemler */
abstract public function getData(): string
abstract public function getType(): int
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\BinaryInterface::getData

(mongodb >=1.3.0)

MongoDB\BSON\BinaryInterface::getData — Returns the BinaryInterface's data

### Açıklama

abstract public function MongoDB\BSON\BinaryInterface::getData(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the BinaryInterface's data.

### Ayrıca Bakınız

- MongoDB\BSON\Binary::getData() - Returns the Binary's data

# MongoDB\BSON\BinaryInterface::getType

(mongodb >=1.3.0)

MongoDB\BSON\BinaryInterface::getType — Returns the BinaryInterface's type

### Açıklama

abstract public function MongoDB\BSON\BinaryInterface::getType(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the BinaryInterface's type.

### Ayrıca Bakınız

- MongoDB\BSON\Binary::getType() - Returns the Binary's type

# MongoDB\BSON\BinaryInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\BinaryInterface::__toString — Returns the BinaryInterface's data

### Açıklama

abstract public function MongoDB\BSON\BinaryInterface::__toString(): string

Bu yöntem şu yöntemin takma adıdır: MongoDB\BSON\BinaryInterface::getData().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the BinaryInterface's data.

### Ayrıca Bakınız

- MongoDB\BSON\BinaryInterface::getData() - Returns the BinaryInterface's data
- MongoDB\BSON\Binary::__toString() - Returns the Binary's data

## İçindekiler

- MongoDB\BSON\BinaryInterface::getData — Returns the BinaryInterface's data
- MongoDB\BSON\BinaryInterface::getType — Returns the BinaryInterface's type
- MongoDB\BSON\BinaryInterface::__toString — Returns the BinaryInterface's data

# The MongoDB\BSON\Decimal128Interface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\Decimal128 to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\Decimal128Interface {
/* Yöntemler */
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\Decimal128Interface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\Decimal128Interface::__toString — Returns the string representation of this Decimal128Interface

### Açıklama

abstract public function MongoDB\BSON\Decimal128Interface::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Decimal128Interface.

### Ayrıca Bakınız

- MongoDB\BSON\Decimal128::__toString() - Returns the string representation of this Decimal128

## İçindekiler

- MongoDB\BSON\Decimal128Interface::__toString — Returns the string representation of this Decimal128Interface

# The MongoDB\BSON\JavascriptInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\Javascript to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\JavascriptInterface {
/* Yöntemler */
abstract public function getCode(): string
abstract public function getScope(): ?object
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\JavascriptInterface::getCode

(mongodb >=1.3.0)

MongoDB\BSON\JavascriptInterface::getCode — Returns the JavascriptInterface's code

### Açıklama

abstract public function MongoDB\BSON\JavascriptInterface::getCode(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the JavascriptInterface's code.

### Ayrıca Bakınız

- MongoDB\BSON\Javascript::getCode() - Returns the Javascript's code

# MongoDB\BSON\JavascriptInterface::getScope

(mongodb >=1.3.0)

MongoDB\BSON\JavascriptInterface::getScope — Returns the JavascriptInterface's scope document

### Açıklama

abstract public function MongoDB\BSON\JavascriptInterface::getScope(): ?object

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the JavascriptInterface's scope document.

### Ayrıca Bakınız

- MongoDB\BSON\Javascript::getScope() - Returns the Javascript's scope document

# MongoDB\BSON\JavascriptInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\JavascriptInterface::__toString — Returns the JavascriptInterface's code

### Açıklama

abstract public function MongoDB\BSON\JavascriptInterface::__toString(): string

Bu yöntem şu yöntemin takma adıdır: MongoDB\BSON\JavascriptInterface::getCode().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the JavascriptInterface's code.

### Ayrıca Bakınız

- MongoDB\BSON\JavascriptInterface::getCode() - Returns the JavascriptInterface's code
- MongoDB\BSON\Javascript::__toString() - Returns the Javascript's code

## İçindekiler

- MongoDB\BSON\JavascriptInterface::getCode — Returns the JavascriptInterface's code
- MongoDB\BSON\JavascriptInterface::getScope — Returns the JavascriptInterface's scope document
- MongoDB\BSON\JavascriptInterface::__toString — Returns the JavascriptInterface's code

# The MongoDB\BSON\MaxKeyInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\MaxKey to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\MaxKeyInterface {
}

This interface has no methods.

# The MongoDB\BSON\MinKeyInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\MinKey to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\MinKeyInterface {
}

This interface has no methods.

# The MongoDB\BSON\ObjectIdInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\ObjectId to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\ObjectIdInterface {
/* Yöntemler */
abstract public function getTimestamp(): int
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\ObjectIdInterface::getTimestamp

(mongodb >=1.3.0)

MongoDB\BSON\ObjectIdInterface::getTimestamp — Returns the timestamp component of this ObjectIdInterface

### Açıklama

abstract public function MongoDB\BSON\ObjectIdInterface::getTimestamp(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the timestamp component of this ObjectIdInterface.

### Ayrıca Bakınız

- MongoDB\BSON\ObjectId::getTimestamp() - Returns the timestamp component of this ObjectId

# MongoDB\BSON\ObjectIdInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\ObjectIdInterface::__toString — Returns the hexadecimal representation of this ObjectIdInterface

### Açıklama

abstract public function MongoDB\BSON\ObjectIdInterface::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hexadecimal representation of this ObjectIdInterface.

### Ayrıca Bakınız

- MongoDB\BSON\ObjectId::__toString() - Returns the hexadecimal representation of this ObjectId

## İçindekiler

- MongoDB\BSON\ObjectIdInterface::getTimestamp — Returns the timestamp component of this ObjectIdInterface
- MongoDB\BSON\ObjectIdInterface::__toString — Returns the hexadecimal representation of this ObjectIdInterface

# The MongoDB\BSON\RegexInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\Regex to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\RegexInterface {
/* Yöntemler */
abstract public function getFlags(): string
abstract public function getPattern(): string
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\RegexInterface::getFlags

(mongodb >=1.3.0)

MongoDB\BSON\RegexInterface::getFlags — Returns the RegexInterface's flags

### Açıklama

abstract public function MongoDB\BSON\RegexInterface::getFlags(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the RegexInterface's flags.

### Ayrıca Bakınız

- MongoDB\BSON\Regex::getFlags() - Returns the Regex's flags

# MongoDB\BSON\RegexInterface::getPattern

(mongodb >=1.3.0)

MongoDB\BSON\RegexInterface::getPattern — Returns the RegexInterface's pattern

### Açıklama

abstract public function MongoDB\BSON\RegexInterface::getPattern(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the RegexInterface's pattern.

### Ayrıca Bakınız

- MongoDB\BSON\Regex::getPattern() - Returns the Regex's pattern

# MongoDB\BSON\RegexInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\RegexInterface::__toString — Returns the string representation of this RegexInterface

### Açıklama

abstract public function MongoDB\BSON\RegexInterface::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this RegexInterface.

### Ayrıca Bakınız

- MongoDB\BSON\Regex::__toString() - Returns the string representation of this Regex

## İçindekiler

- MongoDB\BSON\RegexInterface::getFlags — Returns the RegexInterface's flags
- MongoDB\BSON\RegexInterface::getPattern — Returns the RegexInterface's pattern
- MongoDB\BSON\RegexInterface::__toString — Returns the string representation of this RegexInterface

# The MongoDB\BSON\TimestampInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\Timestamp to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\TimestampInterface {
/* Yöntemler */
abstract public function getIncrement(): int
abstract public function getTimestamp(): int
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\TimestampInterface::getIncrement

(mongodb >=1.3.0)

MongoDB\BSON\TimestampInterface::getIncrement — Returns the increment component of this TimestampInterface

### Açıklama

abstract public function MongoDB\BSON\TimestampInterface::getIncrement(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the increment component of this TimestampInterface.

Uyarı

On 32-bit systems this method may return a negative number. Although the increment and timestamp parts of the BSON timestamp type consists of two unsigned 32-bit values, PHP can not represent these on 32-bit platforms.

### Ayrıca Bakınız

- MongoDB\BSON\Timestamp::getIncrement() - Returns the increment component of this Timestamp

# MongoDB\BSON\TimestampInterface::getTimestamp

(mongodb >=1.3.0)

MongoDB\BSON\TimestampInterface::getTimestamp — Returns the timestamp component of this TimestampInterface

### Açıklama

abstract public function MongoDB\BSON\TimestampInterface::getTimestamp(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the timestamp component of this TimestampInterface.

Uyarı

On 32-bit systems this method may return a negative number. Although the increment and timestamp parts of the BSON timestamp type consists of two unsigned 32-bit values, PHP can not represent these on 32-bit platforms.

### Ayrıca Bakınız

- MongoDB\BSON\Timestamp::getTimestamp() - Returns the timestamp component of this Timestamp

# MongoDB\BSON\TimestampInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\TimestampInterface::__toString — Returns the string representation of this TimestampInterface

### Açıklama

abstract public function MongoDB\BSON\TimestampInterface::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this TimestampInterface.

### Ayrıca Bakınız

- MongoDB\BSON\Timestamp::__toString() - Returns the string representation of this Timestamp

## İçindekiler

- MongoDB\BSON\TimestampInterface::getIncrement — Returns the increment component of this TimestampInterface
- MongoDB\BSON\TimestampInterface::getTimestamp — Returns the timestamp component of this TimestampInterface
- MongoDB\BSON\TimestampInterface::__toString — Returns the string representation of this TimestampInterface

# The MongoDB\BSON\UTCDateTimeInterface interface

(mongodb >=1.3.0)

## Giriş

This interface is implemented by MongoDB\BSON\UTCDateTime to be used as a parameter, return, or property type in userland classes.

## Sınıf Sözdizimi

class MongoDB\BSON\UTCDateTimeInterface {
/* Yöntemler */
abstract public function toDateTime(): DateTime
abstract public function toDateTimeImmutable(): DateTimeImmutable
abstract public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\BSON\UTCDateTimeInterface::toDateTime

(mongodb >=1.3.0)

MongoDB\BSON\UTCDateTimeInterface::toDateTime — Returns the DateTime representation of this UTCDateTimeInterface

### Açıklama

abstract public function MongoDB\BSON\UTCDateTimeInterface::toDateTime(): DateTime

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the DateTime representation of this UTCDateTimeInterface. The returned DateTime should use the UTC time zone.

### Ayrıca Bakınız

- MongoDB\BSON\UTCDateTime::toDateTime() - Returns the DateTime representation of this UTCDateTime

# MongoDB\BSON\UTCDateTimeInterface::toDateTimeImmutable

(mongodb >=2.0.0)

MongoDB\BSON\UTCDateTimeInterface::toDateTimeImmutable — Returns the DateTimeImmutable representation of this UTCDateTimeInterface

### Açıklama

abstract public function MongoDB\BSON\UTCDateTimeInterface::toDateTimeImmutable(): DateTimeImmutable

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the DateTimeImmutable representation of this UTCDateTimeInterface. The returned DateTimeImmutable will use the UTC time zone.

### Ayrıca Bakınız

- MongoDB\BSON\UTCDateTime::toDateTimeImmutable() - Returns the DateTimeImmutable representation of this UTCDateTime

# MongoDB\BSON\UTCDateTimeInterface::__toString

(mongodb >=1.3.0)

MongoDB\BSON\UTCDateTimeInterface::__toString — Returns the string representation of this UTCDateTimeInterface

### Açıklama

abstract public function MongoDB\BSON\UTCDateTimeInterface::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this UTCDateTimeInterface.

### Ayrıca Bakınız

- MongoDB\BSON\UTCDateTime::__toString() - Returns the string representation of this UTCDateTime

## İçindekiler

- MongoDB\BSON\UTCDateTimeInterface::toDateTime — Returns the DateTime representation of this UTCDateTimeInterface
- MongoDB\BSON\UTCDateTimeInterface::toDateTimeImmutable — Returns the DateTimeImmutable representation of this UTCDateTimeInterface
- MongoDB\BSON\UTCDateTimeInterface::__toString — Returns the string representation of this UTCDateTimeInterface

# The MongoDB\BSON\DBPointer class

(mongodb >=1.4.0)

## Giriş

BSON type for the "DBPointer" type. This BSON type is deprecated, and this class can not be instantiated. It will be created from a BSON DBPointer type while converting BSON to PHP, and can also be converted back into BSON while storing documents in the database.

## Sınıf Sözdizimi

final class MongoDB\BSON\DBPointer implements MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final private function __construct()
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.

# MongoDB\BSON\DBPointer::__construct

(mongodb >=1.4.0)

MongoDB\BSON\DBPointer::__construct — Construct a new DBPointer (unused)

### Açıklama

final private function MongoDB\BSON\DBPointer::__construct()

MongoDB\BSON\DBPointer objects are created through conversion from a deprecated BSON type and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\DBPointer::jsonSerialize

(mongodb >=1.4.0)

MongoDB\BSON\DBPointer::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\DBPointer::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\DBPointer.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\DBPointer::__toString

(mongodb >=1.4.0)

MongoDB\BSON\DBPointer::__toString — Returns an empty string

### Açıklama

final public function MongoDB\BSON\DBPointer::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an empty string.

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\DBPointer::__construct — Construct a new DBPointer (unused)
- MongoDB\BSON\DBPointer::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\DBPointer::__toString — Returns an empty string

# The MongoDB\BSON\Int64 class

(mongodb >=1.5.0)

## Giriş

BSON type for a 64-bit integer. When decoding BSON to PHP data, this class is used when a 64-bit integer cannot be represented as a PHP integer on 32-bit platforms. These objects support overloaded arithmetic, bitwise, and comparison operators.

When working with raw BSON data through the MongoDB\BSON\Document, MongoDB\BSON\PackedArray, and MongoDB\BSON\Iterator classes, any 64-bit integer will be returned as an instance of this class, regardless of platform and whether the value can be represented as a PHP integer. This ensures that values can be roundtripped without changing the type.

During BSON encoding, objects of this class will convert back to a 64-bit integer type, even when the value would fit in a 32-bit integer. This allows explicitly storing values as 64-bit integers in BSON.

## Sınıf Sözdizimi

final class MongoDB\BSON\Int64 implements MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final public function __construct(int|string `$value`)
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.16.0 | The class can now be instantiated on all platforms. Added support for overloaded arithmetic, bitwise, and comparison operators.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.

# MongoDB\BSON\Int64::__construct

(mongodb >=1.5.0)

MongoDB\BSON\Int64::__construct — Construct a new Int64

### Açıklama

final public function MongoDB\BSON\Int64::__construct(int|string `$value`)

Creates a new MongoDB\BSON\Int64 instance for the given integer value.

### Bağımsız Değişkenler

`value` (int|string)
  The value to assign to the Int64 instance. This value can be provided as an int or string, the latter being required on 32-bit platforms to represent 64-bit values.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.16.0 | This method was made public to support creating Int64 instances when working with raw BSON.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
- Throws MongoDB\Driver\Exception\InvalidArgumentException if string `value` cannot be parsed as a 64-bit integer.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Int64::jsonSerialize

(mongodb >=1.5.0)

MongoDB\BSON\Int64::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Int64::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Int64.

> Bilginize: The output is consistent with the MongoDB\BSON\toCanonicalExtendedJSON() function, which uses the » canonical extended JSON format. This differs from other BSON classes, which use the driver-specific legacy extended JSON format (MongoDB\BSON\toJSON()), in order to ensure that the 64-bit integer value is correctly represented on 32-bit platforms.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Int64::__toString

(mongodb >=1.5.0)

MongoDB\BSON\Int64::__toString — Returns the string representation of this Int64

### Açıklama

final public function MongoDB\BSON\Int64::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Int64.

### Örnekler

Örnek 1 MongoDB\BSON\Int64::__toString() example

    <?php

    $int64 = new MongoDB\BSON\Int64('9223372036854775807');

    var_dump((string) $int64);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(19) "9223372036854775807"

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\Int64::__construct — Construct a new Int64
- MongoDB\BSON\Int64::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Int64::__toString — Returns the string representation of this Int64

# The MongoDB\BSON\Symbol class

(mongodb >=1.4.0)

## Giriş

BSON type for the "Symbol" type. This BSON type is deprecated, and this class can not be instantiated. It will be created from a BSON symbol type while converting BSON to PHP, and can also be converted back into BSON while storing documents in the database.

## Sınıf Sözdizimi

final class MongoDB\BSON\Symbol implements MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final private function __construct()
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.

# MongoDB\BSON\Symbol::__construct

(mongodb >=1.4.0)

MongoDB\BSON\Symbol::__construct — Construct a new Symbol (unused)

### Açıklama

final private function MongoDB\BSON\Symbol::__construct()

MongoDB\BSON\Symbol objects are created through conversion from a deprecated BSON type and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Symbol::jsonSerialize

(mongodb >=1.4.0)

MongoDB\BSON\Symbol::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Symbol::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Symbol.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Symbol::__toString

(mongodb >=1.4.0)

MongoDB\BSON\Symbol::__toString — Returns the Symbol as a string

### Açıklama

final public function MongoDB\BSON\Symbol::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string representation of this Symbol.

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\Symbol::__construct — Construct a new Symbol (unused)
- MongoDB\BSON\Symbol::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Symbol::__toString — Returns the Symbol as a string

# The MongoDB\BSON\Undefined class

(mongodb >=1.4.0)

## Giriş

BSON type for the "Undefined" type. This BSON type is deprecated, and this class can not be instantiated. It will be created from a BSON undefined type while converting BSON to PHP, and can also be converted back into BSON while storing documents in the database.

## Sınıf Sözdizimi

final class MongoDB\BSON\Undefined implements MongoDB\BSON\Type, JsonSerializable, Stringable {
/* Yöntemler */
final private function __construct()
final public function jsonSerialize(): mixed
final public function __toString(): string
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class no longer implements the Serializable interface.
PECL mongodb 1.12.0 | Implements Stringable for PHP 8.0+.

# MongoDB\BSON\Undefined::__construct

(mongodb >=1.4.0)

MongoDB\BSON\Undefined::__construct — Construct a new Undefined (unused)

### Açıklama

final private function MongoDB\BSON\Undefined::__construct()

MongoDB\BSON\Undefined objects are created through conversion from a deprecated BSON type and cannot be constructed directly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- » BSON Types

# MongoDB\BSON\Undefined::jsonSerialize

(mongodb >=1.4.0)

MongoDB\BSON\Undefined::jsonSerialize — Returns a representation that can be converted to JSON

### Açıklama

final public function MongoDB\BSON\Undefined::jsonSerialize(): mixed

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns data which can be serialized by json_encode() to produce an extended JSON representation of the MongoDB\BSON\Undefined.

> Bilginize: The output is consistent with the MongoDB\BSON\toJSON() function, which uses the driver-specific legacy extended JSON format. This does not necessarily match the » relaxed or » canonical extended JSON representations used by MongoDB\BSON\toRelaxedExtendedJSON() and MongoDB\BSON\toCanonicalExtendedJSON(), respectively.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- JsonSerializable::jsonSerialize() - JSON için dizeleştirilecek veriyi belirtmek için
- json_encode() - Değerin JSON karşılığını verir.
- MongoDB\BSON\toCanonicalExtendedJSON() - Returns the Canonical Extended JSON representation of a BSON value
- MongoDB\BSON\toRelaxedExtendedJSON() - Returns the Relaxed Extended JSON representation of a BSON value
- » MongoDB Extended JSON

# MongoDB\BSON\Undefined::__toString

(mongodb >=1.4.0)

MongoDB\BSON\Undefined::__toString — Returns an empty string

### Açıklama

final public function MongoDB\BSON\Undefined::__toString(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an empty string.

### Ayrıca Bakınız

- » BSON Types

## İçindekiler

- MongoDB\BSON\Undefined::__construct — Construct a new Undefined (unused)
- MongoDB\BSON\Undefined::jsonSerialize — Returns a representation that can be converted to JSON
- MongoDB\BSON\Undefined::__toString — Returns an empty string

# Monitoring classes and subscriber functions

## İçindekiler

- İşlevleri
- MongoDB\Driver\Monitoring\CommandFailedEvent
- MongoDB\Driver\Monitoring\CommandStartedEvent
- MongoDB\Driver\Monitoring\CommandSucceededEvent
- MongoDB\Driver\Monitoring\ServerChangedEvent
- MongoDB\Driver\Monitoring\ServerClosedEvent
- MongoDB\Driver\Monitoring\ServerOpeningEvent
- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent
- MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent
- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent
- MongoDB\Driver\Monitoring\TopologyChangedEvent
- MongoDB\Driver\Monitoring\TopologyClosedEvent
- MongoDB\Driver\Monitoring\TopologyOpeningEvent
- MongoDB\Driver\Monitoring\CommandSubscriber
- MongoDB\Driver\Monitoring\LogSubscriber
- MongoDB\Driver\Monitoring\SDAMSubscriber
- MongoDB\Driver\Monitoring\Subscriber

# İşlevleri

# MongoDB\Driver\Monitoring\addSubscriber

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\addSubscriber — Registers a monitoring event subscriber globally

### Açıklama

function MongoDB\Driver\Monitoring\addSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void

Registers a monitoring event subscriber globally. The subscriber will be notified of all events in the extension for any Manager.

> Bilginize: If `subscriber` is already registered globally, this function is a no-op. If `subscriber` is also registered with one or more Managers, it will still only be notified once of each event for each Manager.

### Bağımsız Değişkenler

`subscriber` (MongoDB\Driver\Monitoring\Subscriber)
  A monitoring event subscriber to register globally.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\removeSubscriber() - Unregisters a monitoring event subscriber globally
- MongoDB\Driver\Monitoring\Subscriber
- MongoDB\Driver\Monitoring\CommandSubscriber
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\removeSubscriber

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\removeSubscriber — Unregisters a monitoring event subscriber globally

### Açıklama

function MongoDB\Driver\Monitoring\removeSubscriber(MongoDB\Driver\Monitoring\Subscriber `$subscriber`): void

Unregisters a monitoring event subscriber globally.

> Bilginize: If `subscriber` is not already registered globally, this function is a no-op.

### Bağımsız Değişkenler

`subscriber` (MongoDB\Driver\Monitoring\Subscriber)
  A monitoring event subscriber to unregister globally.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Monitoring\Subscriber
- MongoDB\Driver\Monitoring\CommandSubscriber
- MongoDB\Driver\Manager::removeSubscriber() - Unregisters a monitoring event subscriber with this Manager
- Application Performance Monitoring (APM)

## İçindekiler

- MongoDB\Driver\Monitoring\addSubscriber — Registers a monitoring event subscriber globally
- MongoDB\Driver\Monitoring\removeSubscriber — Unregisters a monitoring event subscriber globally

# The MongoDB\Driver\Monitoring\CommandFailedEvent class

(mongodb >=1.3.0)

## Giriş

The MongoDB\Driver\Monitoring\CommandFailedEvent class encapsulates information about a failed command.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\CommandFailedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly string $commandName;
public readonly string $databaseName;
public readonly int $duration;
public readonly Exception $error;
public readonly object $reply;
public readonly string $operationId;
public readonly string $requestId;
public readonly ?MongoDB\BSON\ObjectId $serviceId;
public readonly ?int $serverConnectionId;
/* Yöntemler */
final public function getCommandName(): string
final public function getDatabaseName(): string
final public function getDurationMicros(): int
final public function getError(): Exception
final public function getHost(): string
final public function getOperationId(): string
final public function getPort(): int
final public function getReply(): object
final public function getRequestId(): string
final public function getServer(): MongoDB\Driver\Server
final public function getServerConnectionId(): ?int
final public function getServiceId(): ?MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server that executed the command.
port
  The port of the server that executed the command.
commandName
  The command name.
databaseName
  The database name.
duration
  The duration of the command in microseconds. The duration is a calculated value that includes the time to send the message and receive the response from the server.
error
  The exception that was thrown when the command failed.
reply
  The failure reply document returned by the server.
operationId
  The operation ID. This may be used to link events together such as bulk writes, which may dispatch multiple commands.
requestId
  The request ID. This may be used to associate this MongoDB\Driver\Monitoring\CommandFailedEvent with a corresponding MongoDB\Driver\Monitoring\CommandStartedEvent.
serviceId
  The service ID, or `null` if the server does not support it (i.e. not using load-balanced mode).
serverConnectionId
  The server connection ID, or `null` if not available.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties. The duration property replaces the getDurationMicros() method.

# MongoDB\Driver\Monitoring\CommandFailedEvent::getCommandName

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getCommandName — Returns the command name

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getCommandName(): string

Returns the command name (e.g. `"find"`, `"aggregate"`).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command name.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getDatabaseName

(mongodb >=1.19.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getDatabaseName — Returns the database on which the command was executed

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getDatabaseName(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the database on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getDurationMicros

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getDurationMicros — Returns the command's duration in microseconds

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getDurationMicros(): int

The command's duration is a calculated value that includes the time to send the message and receive the reply from the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's duration in microseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getError

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getError — Returns the Exception associated with the failed command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getError(): Exception

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Exception associated with the failed command.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getHost

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getHost — Returns the server hostname for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId — Returns the command's operation ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId(): string

The operation ID is generated by the extension and may be used to link events together such as bulk write operations, which may have been split across several commands at the protocol level.

> Bilginize: Since multiple commands may share the same operation ID, it is not reliable to use this value to associate event objects with each other. The request ID returned by MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId() should be used instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's operation ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId() - Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getPort

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getPort — Returns the server port for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandFailedEvent::getReply

(mongodb >=1.5.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getReply — Returns the command reply document

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getReply(): object

The reply document will be converted from BSON to PHP using the default deserialization rules (e.g. BSON documents will be converted to stdClass).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command reply document as a stdClass object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)
- Persisting Data

# MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId — Returns the command's request ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId(): string

The request ID is generated by the extension and may be used to associate this MongoDB\Driver\Monitoring\CommandFailedEvent with a previous MongoDB\Driver\Monitoring\CommandStartedEvent.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's request ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getServer

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getServer — Returns the Server on which the command was executed

Uyarı

This method has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\Driver\Monitoring\CommandFailedEvent::getHost() and MongoDB\Driver\Monitoring\CommandFailedEvent::getPort() instead.

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server on which the command was executed.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method was removed.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getServer() - Returns the Server on which the command was executed
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandFailedEvent::getServerConnectionId

(mongodb >=1.14.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getServerConnectionId — Returns the server connection ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getServerConnectionId(): ?int

Returns the server connection ID for the command. The server connection ID is distinct from server (i.e. MongoDB\Driver\Monitoring\CommandFailedEvent::getServer()) and is returned in the "connectionId" field of a `hello` command response MongoDB 4.2+.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the server connection ID, or `null` if it is not available.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandFailedEvent::getServiceId

(mongodb >=1.11.0)

MongoDB\Driver\Monitoring\CommandFailedEvent::getServiceId — Returns the load balancer service ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandFailedEvent::getServiceId(): ?MongoDB\BSON\ObjectId

When the driver is connected to a MongoDB cluster through a load balancer, the service ID corresponds to the `serviceId` field in the `hello` command response.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the load balancer service ID, or `null` if the driver is not connected to a load balancer.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\CommandFailedEvent::getCommandName — Returns the command name
- MongoDB\Driver\Monitoring\CommandFailedEvent::getDatabaseName — Returns the database on which the command was executed
- MongoDB\Driver\Monitoring\CommandFailedEvent::getDurationMicros — Returns the command's duration in microseconds
- MongoDB\Driver\Monitoring\CommandFailedEvent::getError — Returns the Exception associated with the failed command
- MongoDB\Driver\Monitoring\CommandFailedEvent::getHost — Returns the server hostname for the command
- MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId — Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandFailedEvent::getPort — Returns the server port for the command
- MongoDB\Driver\Monitoring\CommandFailedEvent::getReply — Returns the command reply document
- MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId — Returns the command's request ID
- MongoDB\Driver\Monitoring\CommandFailedEvent::getServer — Returns the Server on which the command was executed
- MongoDB\Driver\Monitoring\CommandFailedEvent::getServerConnectionId — Returns the server connection ID for the command
- MongoDB\Driver\Monitoring\CommandFailedEvent::getServiceId — Returns the load balancer service ID for the command

# The MongoDB\Driver\Monitoring\CommandStartedEvent class

(mongodb >=1.3.0)

## Giriş

The MongoDB\Driver\Monitoring\CommandStartedEvent class encapsulates information about a started command.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\CommandStartedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly string $commandName;
public readonly string $databaseName;
public readonly object $command;
public readonly string $operationId;
public readonly string $requestId;
public readonly ?MongoDB\BSON\ObjectId $serviceId;
public readonly ?int $serverConnectionId;
/* Yöntemler */
final public function getCommand(): object
final public function getCommandName(): string
final public function getDatabaseName(): string
final public function getHost(): string
final public function getOperationId(): string
final public function getPort(): int
final public function getRequestId(): string
final public function getServer(): MongoDB\Driver\Server
final public function getServerConnectionId(): ?int
final public function getServiceId(): ?MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server that executed the command.
port
  The port of the server that executed the command.
commandName
  The command name.
databaseName
  The database name.
command
  The command document.
operationId
  The operation ID. This may be used to link events together such as bulk writes, which may dispatch multiple commands.
requestId
  The request ID. This may be used to associate this MongoDB\Driver\Monitoring\CommandStartedEvent with a corresponding MongoDB\Driver\Monitoring\CommandSucceededEvent or MongoDB\Driver\Monitoring\CommandFailedEvent.
serviceId
  The service ID, or `null` if the server does not support it (i.e. not using load-balanced mode).
serverConnectionId
  The server connection ID, or `null` if not available.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\CommandStartedEvent::getCommand

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getCommand — Returns the command document

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getCommand(): object

The reply document will be converted from BSON to PHP using the default deserialization rules (e.g. BSON documents will be converted to stdClass).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command document as a stdClass object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)
- Persisting Data

# MongoDB\Driver\Monitoring\CommandStartedEvent::getCommandName

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getCommandName — Returns the command name

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getCommandName(): string

Returns the command name (e.g. `"find"`, `"aggregate"`).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command name.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandStartedEvent::getDatabaseName

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getDatabaseName — Returns the database on which the command was executed

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getDatabaseName(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the database on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandStartedEvent::getHost

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getHost — Returns the server hostname for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId — Returns the command's operation ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId(): string

The operation ID is generated by the extension and may be used to link events together such as bulk write operations, which may have been split across several commands at the protocol level.

> Bilginize: Since multiple commands may share the same operation ID, it is not reliable to use this value to associate event objects with each other. The request ID returned by MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId() should be used instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's operation ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandFailedEvent::getOperationId() - Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId() - Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandStartedEvent::getPort

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getPort — Returns the server port for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId — Returns the command's request ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId(): string

The request ID is generated by the extension and may be used to associate this MongoDB\Driver\Monitoring\CommandStartedEvent with a later MongoDB\Driver\Monitoring\CommandFailedEvent or MongoDB\Driver\Monitoring\CommandSucceededEvent.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's request ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandFailedEvent::getRequestId() - Returns the command's request ID
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandStartedEvent::getServer

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getServer — Returns the Server on which the command was executed

Uyarı

This method has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\Driver\Monitoring\CommandStartedEvent::getHost() and MongoDB\Driver\Monitoring\CommandStartedEvent::getPort() instead.

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server on which the command was executed.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method was removed.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandFailedEvent::getServer() - Returns the Server on which the command was executed
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer() - Returns the Server on which the command was executed
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandStartedEvent::getServerConnectionId

(mongodb >=1.14.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getServerConnectionId — Returns the server connection ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getServerConnectionId(): ?int

Returns the server connection ID for the command. The server connection ID is distinct from server (i.e. MongoDB\Driver\Monitoring\CommandStartedEvent::getServer()) and is returned in the "connectionId" field of a `hello` command response MongoDB 4.2+.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the server connection ID, or `null` if it is not available.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandStartedEvent::getServiceId

(mongodb >=1.11.0)

MongoDB\Driver\Monitoring\CommandStartedEvent::getServiceId — Returns the load balancer service ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandStartedEvent::getServiceId(): ?MongoDB\BSON\ObjectId

When the driver is connected to a MongoDB cluster through a load balancer, the service ID corresponds to the `serviceId` field in the `hello` command response.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the load balancer service ID, or `null` if the driver is not connected to a load balancer.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\CommandStartedEvent::getCommand — Returns the command document
- MongoDB\Driver\Monitoring\CommandStartedEvent::getCommandName — Returns the command name
- MongoDB\Driver\Monitoring\CommandStartedEvent::getDatabaseName — Returns the database on which the command was executed
- MongoDB\Driver\Monitoring\CommandStartedEvent::getHost — Returns the server hostname for the command
- MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId — Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandStartedEvent::getPort — Returns the server port for the command
- MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId — Returns the command's request ID
- MongoDB\Driver\Monitoring\CommandStartedEvent::getServer — Returns the Server on which the command was executed
- MongoDB\Driver\Monitoring\CommandStartedEvent::getServerConnectionId — Returns the server connection ID for the command
- MongoDB\Driver\Monitoring\CommandStartedEvent::getServiceId — Returns the load balancer service ID for the command

# The MongoDB\Driver\Monitoring\CommandSucceededEvent class

(mongodb >=1.3.0)

## Giriş

The MongoDB\Driver\Monitoring\CommandSucceededEvent class encapsulates information about a successful command.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\CommandSucceededEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly string $commandName;
public readonly string $databaseName;
public readonly int $duration;
public readonly object $reply;
public readonly string $operationId;
public readonly string $requestId;
public readonly ?MongoDB\BSON\ObjectId $serviceId;
public readonly ?int $serverConnectionId;
/* Yöntemler */
final public function getCommandName(): string
final public function getDatabaseName(): string
final public function getDurationMicros(): int
final public function getHost(): string
final public function getOperationId(): string
final public function getPort(): int
final public function getReply(): object
final public function getRequestId(): string
final public function getServer(): MongoDB\Driver\Server
final public function getServerConnectionId(): ?int
final public function getServiceId(): ?MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server that executed the command.
port
  The port of the server that executed the command.
commandName
  The command name.
databaseName
  The database name.
duration
  The duration of the command in microseconds. The duration is a calculated value that includes the time to send the message and receive the response from the server.
reply
  The reply document returned by the server.
operationId
  The operation ID. This may be used to link events together such as bulk writes, which may dispatch multiple commands.
requestId
  The request ID. This may be used to associate this MongoDB\Driver\Monitoring\CommandSucceededEvent with a corresponding MongoDB\Driver\Monitoring\CommandStartedEvent.
serviceId
  The service ID, or `null` if the server does not support it (i.e. not using load-balanced mode).
serverConnectionId
  The server connection ID, or `null` if not available.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties. The duration property replaces the getDurationMicros() method.

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getCommandName

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getCommandName — Returns the command name

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getCommandName(): string

Returns the command name (e.g. `"find"`, `"aggregate"`).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command name.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getDatabaseName

(mongodb >=1.19.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getDatabaseName — Returns the database on which the command was executed

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getDatabaseName(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the database on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getDurationMicros

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getDurationMicros — Returns the command's duration in microseconds

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getDurationMicros(): int

The command's duration is a calculated value that includes the time to send the message and receive the reply from the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's duration in microseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getHost

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getHost — Returns the server hostname for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId — Returns the command's operation ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId(): string

The operation ID is generated by the extension and may be used to link events together such as bulk write operations, which may have been split across several commands at the protocol level.

> Bilginize: Since multiple commands may share the same operation ID, it is not reliable to use this value to associate event objects with each other. The request ID returned by MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId() should be used instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's operation ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getOperationId() - Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getPort

(mongodb >=1.20.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getPort — Returns the server port for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port of the server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getReply

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getReply — Returns the command reply document

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getReply(): object

The reply document will be converted from BSON to PHP using the default deserialization rules (e.g. BSON documents will be converted to stdClass).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command reply document as a stdClass object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)
- Persisting Data

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId — Returns the command's request ID

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId(): string

The request ID is generated by the extension and may be used to associate this MongoDB\Driver\Monitoring\CommandSucceededEvent with a previous MongoDB\Driver\Monitoring\CommandStartedEvent.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the command's request ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getRequestId() - Returns the command's request ID
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer — Returns the Server on which the command was executed

Uyarı

This method has been DEPRECATED as of extension version 1.20.0 and was removed in 2.0. Applications should use MongoDB\Driver\Monitoring\CommandSucceededEvent::getHost() and MongoDB\Driver\Monitoring\CommandSucceededEvent::getPort() instead.

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer(): MongoDB\Driver\Server

Returns the MongoDB\Driver\Server on which the command was executed.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the MongoDB\Driver\Server on which the command was executed.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This method was removed.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent::getServer() - Returns the Server on which the command was executed
- MongoDB\Driver\Cursor::getServer() - Returns the server associated with this cursor
- MongoDB\Driver\WriteResult::getServer() - Returns the server associated with this write result
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId

(mongodb >=1.14.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId — Returns the server connection ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId(): ?int

Returns the server connection ID for the command. The server connection ID is distinct from server (i.e. MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer()) and is returned in the "connectionId" field of a `hello` command response MongoDB 4.2+.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the server connection ID, or `null` if it is not available.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId

(mongodb >=1.11.0)

MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId — Returns the load balancer service ID for the command

### Açıklama

final public function MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId(): ?MongoDB\BSON\ObjectId

When the driver is connected to a MongoDB cluster through a load balancer, the service ID corresponds to the `serviceId` field in the `hello` command response.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the load balancer service ID, or `null` if the driver is not connected to a load balancer.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\CommandSucceededEvent::getCommandName — Returns the command name
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getDatabaseName — Returns the database on which the command was executed
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getDurationMicros — Returns the command's duration in microseconds
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getHost — Returns the server hostname for the command
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getOperationId — Returns the command's operation ID
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getPort — Returns the server port for the command
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getReply — Returns the command reply document
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getRequestId — Returns the command's request ID
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getServer — Returns the Server on which the command was executed
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getServerConnectionId — Returns the server connection ID for the command
- MongoDB\Driver\Monitoring\CommandSucceededEvent::getServiceId — Returns the load balancer service ID for the command

# The MongoDB\Driver\Monitoring\ServerChangedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerChangedEvent class encapsulates information about a changed server description. For example, a server's type changing from secondary to primary would cause its server description to change.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerChangedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly MongoDB\BSON\ObjectId $topologyId;
public readonly MongoDB\Driver\ServerDescription $newDescription;
public readonly MongoDB\Driver\ServerDescription $previousDescription;
/* Yöntemler */
final public function getHost(): string
final public function getNewDescription(): MongoDB\Driver\ServerDescription
final public function getPort(): int
final public function getPreviousDescription(): MongoDB\Driver\ServerDescription
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
topologyId
  The topology ID.
newDescription
  The new server description.
previousDescription
  The previous server description.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\ServerChangedEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerChangedEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerChangedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerChangedEvent::getNewDescription

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerChangedEvent::getNewDescription — Returns the new description for the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerChangedEvent::getNewDescription(): MongoDB\Driver\ServerDescription

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the new MongoDB\Driver\ServerDescription for the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerChangedEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerChangedEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerChangedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerChangedEvent::getPreviousDescription

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerChangedEvent::getPreviousDescription — Returns the previous description for the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerChangedEvent::getPreviousDescription(): MongoDB\Driver\ServerDescription

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the previous MongoDB\Driver\ServerDescription for the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerChangedEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerChangedEvent::getTopologyId — Returns the topology ID associated with this server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerChangedEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerChangedEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerChangedEvent::getNewDescription — Returns the new description for the server
- MongoDB\Driver\Monitoring\ServerChangedEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerChangedEvent::getPreviousDescription — Returns the previous description for the server
- MongoDB\Driver\Monitoring\ServerChangedEvent::getTopologyId — Returns the topology ID associated with this server

# The MongoDB\Driver\Monitoring\ServerClosedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerClosedEvent class encapsulates information about a closed server. This corresponds to an existing server being removed from the topology.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerClosedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly MongoDB\BSON\ObjectId $topologyId;
/* Yöntemler */
final public function getHost(): string
final public function getPort(): int
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
topologyId
  The topology ID.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\ServerClosedEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerClosedEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerClosedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerClosedEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerClosedEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerClosedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerClosedEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerClosedEvent::getTopologyId — Returns the topology ID associated with this server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerClosedEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerClosedEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerClosedEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerClosedEvent::getTopologyId — Returns the topology ID associated with this server

# The MongoDB\Driver\Monitoring\ServerOpeningEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerOpeningEvent class encapsulates information about an opened server. This corresponds to a new server being added to the topology.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerOpeningEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly MongoDB\BSON\ObjectId $topologyId;
/* Yöntemler */
final public function getHost(): string
final public function getPort(): int
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
topologyId
  The topology ID.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\ServerOpeningEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerOpeningEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerOpeningEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerOpeningEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerOpeningEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerOpeningEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerOpeningEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerOpeningEvent::getTopologyId — Returns the topology ID associated with this server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerOpeningEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerOpeningEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerOpeningEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerOpeningEvent::getTopologyId — Returns the topology ID associated with this server

# The MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent class encapsulates information about a failed server heartbeat (i.e. » hello command issued through » server monitoring).

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly bool $awaited;
public readonly int $duration;
public readonly Exception $error;
/* Yöntemler */
final public function getDurationMicros(): int
final public function getError(): Exception
final public function getHost(): string
final public function getPort(): int
final public function isAwaited(): bool
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
awaited
  Whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.
duration
  The duration of the heartbeat in microseconds. The duration is a calculated value that includes the time to send the message and receive the response from the server.
error
  The exception that was thrown when the heartbeat failed.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties. The duration property replaces the getDurationMicros() method.

# MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getDurationMicros

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getDurationMicros — Returns the heartbeat's duration in microseconds

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getDurationMicros(): int

The heartbeat's duration is a calculated value that includes the time to send the message and receive the reply from the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the heartbeat's duration in microseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getError

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getError — Returns the Exception associated with the failed heartbeat

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getError(): Exception

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Exception associated with the failed heartbeat.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::isAwaited

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::isAwaited(): bool

Returns whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `false`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getDurationMicros — Returns the heartbeat's duration in microseconds
- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getError — Returns the Exception associated with the failed heartbeat
- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

# The MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent class encapsulates information about a started server heartbeat (i.e. » hello command issued through » server monitoring).

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly bool $awaited;
/* Yöntemler */
final public function getHost(): string
final public function getPort(): int
final public function isAwaited(): bool
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
awaited
  Whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::isAwaited

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::isAwaited(): bool

Returns whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `false`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

# The MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent class encapsulates information about a successful server heartbeat (i.e. » hello command issued through » server monitoring).

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent {
/* Özellikler */
public readonly string $host;
public readonly int $port;
public readonly bool $awaited;
public readonly int $duration;
public readonly object $reply;
/* Yöntemler */
final public function getDurationMicros(): int
final public function getHost(): string
final public function getPort(): int
final public function getReply(): object
final public function isAwaited(): bool
}

## Özellikler

host
  The hostname of the server.
port
  The port of the server.
awaited
  Whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.
duration
  The duration of the heartbeat in microseconds. The duration is a calculated value that includes the time to send the message and receive the response from the server.
reply
  The reply document returned by the server.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties. The duration property replaces the getDurationMicros() method.

# MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getDurationMicros

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getDurationMicros — Returns the heartbeat's duration in microseconds

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getDurationMicros(): int

The heartbeat's duration is a calculated value that includes the time to send the message and receive the reply from the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the heartbeat's duration in microseconds.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getHost

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getHost — Returns the hostname of the server

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getHost(): string

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the hostname of the server.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getPort

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getPort — Returns the port on which this server is listening

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getPort(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the port on which this server is listening.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getReply

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getReply — Returns the heartbeat reply document

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getReply(): object

The reply document will be converted from BSON to PHP using the default deserialization rules (e.g. BSON documents will be converted to stdClass).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the heartbeat reply document as a stdClass object.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- Application Performance Monitoring (APM)
- Persisting Data

# MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::isAwaited

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

### Açıklama

final public function MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::isAwaited(): bool

Returns whether the heartbeat used a streaming protocol. The extension does not use the streaming protocol for monitoring, so this method will always return `false`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `false`.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getDurationMicros — Returns the heartbeat's duration in microseconds
- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getHost — Returns the hostname of the server
- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getPort — Returns the port on which this server is listening
- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::getReply — Returns the heartbeat reply document
- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent::isAwaited — Returns whether the heartbeat used a streaming protocol

# The MongoDB\Driver\Monitoring\TopologyChangedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\TopologyChangedEvent class encapsulates information about a changed topology description. For example, a topology discovering a new replica set primary would cause its topology description to change.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\TopologyChangedEvent {
/* Özellikler */
public readonly MongoDB\BSON\ObjectId $topologyId;
public readonly MongoDB\Driver\TopologyDescription $newDescription;
public readonly MongoDB\Driver\TopologyDescription $previousDescription;
/* Yöntemler */
final public function getNewDescription(): MongoDB\Driver\TopologyDescription
final public function getPreviousDescription(): MongoDB\Driver\TopologyDescription
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

topologyId
  The topology ID.
newDescription
  The new topology description.
previousDescription
  The previous topology description.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\TopologyChangedEvent::getNewDescription

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\TopologyChangedEvent::getNewDescription — Returns the new description for the topology

### Açıklama

final public function MongoDB\Driver\Monitoring\TopologyChangedEvent::getNewDescription(): MongoDB\Driver\TopologyDescription

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the new MongoDB\Driver\TopologyDescription for the topology.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\TopologyChangedEvent::getPreviousDescription

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\TopologyChangedEvent::getPreviousDescription — Returns the previous description for the topology

### Açıklama

final public function MongoDB\Driver\Monitoring\TopologyChangedEvent::getPreviousDescription(): MongoDB\Driver\TopologyDescription

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the previous MongoDB\Driver\TopologyDescription for the topology.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

# MongoDB\Driver\Monitoring\TopologyChangedEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\TopologyChangedEvent::getTopologyId — Returns the topology ID

### Açıklama

final public function MongoDB\Driver\Monitoring\TopologyChangedEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\TopologyChangedEvent::getNewDescription — Returns the new description for the topology
- MongoDB\Driver\Monitoring\TopologyChangedEvent::getPreviousDescription — Returns the previous description for the topology
- MongoDB\Driver\Monitoring\TopologyChangedEvent::getTopologyId — Returns the topology ID

# The MongoDB\Driver\Monitoring\TopologyClosedEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\TopologyClosedEvent class encapsulates information about a closed topology.

> Bilginize: Due to the driver's connection handling and persistence behavior, this event can only be observed when a MongoDB\Driver\Manager is created with the `"disableClientPersistence"` driver option and freed before request shutdown (RSHUTDOWN).

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\TopologyClosedEvent {
/* Özellikler */
public readonly MongoDB\BSON\ObjectId $topologyId;
/* Yöntemler */
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

topologyId
  The topology ID.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\TopologyClosedEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\TopologyClosedEvent::getTopologyId — Returns the topology ID

### Açıklama

final public function MongoDB\Driver\Monitoring\TopologyClosedEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\TopologyClosedEvent::getTopologyId — Returns the topology ID

# The MongoDB\Driver\Monitoring\TopologyOpeningEvent class

(mongodb >=1.13.0)

## Giriş

The MongoDB\Driver\Monitoring\TopologyOpeningEvent class encapsulates information about an opened topology.

> Bilginize: Due to the driver's connection handling and persistence behavior, this event may not be observed if a MongoDB\Driver\Manager uses a previously persisted » libmongoc client.

## Sınıf Sözdizimi

final class MongoDB\Driver\Monitoring\TopologyOpeningEvent {
/* Özellikler */
public readonly MongoDB\BSON\ObjectId $topologyId;
/* Yöntemler */
final public function getTopologyId(): MongoDB\BSON\ObjectId
}

## Özellikler

topologyId
  The topology ID.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | Added public readonly properties.

# MongoDB\Driver\Monitoring\TopologyOpeningEvent::getTopologyId

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\TopologyOpeningEvent::getTopologyId — Returns the topology ID

### Açıklama

final public function MongoDB\Driver\Monitoring\TopologyOpeningEvent::getTopologyId(): MongoDB\BSON\ObjectId

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the topology ID.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

## İçindekiler

- MongoDB\Driver\Monitoring\TopologyOpeningEvent::getTopologyId — Returns the topology ID

# The MongoDB\Driver\Monitoring\CommandSubscriber interface

(mongodb >=1.3.0)

## Giriş

Classes may implement this interface to register an event subscriber that is notified for each started, successful, and failed command event. See Application Performance Monitoring (APM) for additional information.

## Arayüz Sözdizimi

class MongoDB\Driver\Monitoring\CommandSubscriber implements MongoDB\Driver\Monitoring\Subscriber {
/* Yöntemler */
abstract public function commandFailed(MongoDB\Driver\Monitoring\CommandFailedEvent `$event`): void
abstract public function commandStarted(MongoDB\Driver\Monitoring\CommandStartedEvent `$event`): void
abstract public function commandSucceeded(MongoDB\Driver\Monitoring\CommandSucceededEvent `$event`): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\Driver\Monitoring\CommandSubscriber::commandFailed

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSubscriber::commandFailed — Notification method for a failed command

### Açıklama

abstract public function MongoDB\Driver\Monitoring\CommandSubscriber::commandFailed(MongoDB\Driver\Monitoring\CommandFailedEvent `$event`): void

If the subscriber is registered, this method is called when a command fails.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\CommandFailedEvent)
  An event object encapsulating information about the failed command.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandFailedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSubscriber::commandStarted

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSubscriber::commandStarted — Notification method for a started command

### Açıklama

abstract public function MongoDB\Driver\Monitoring\CommandSubscriber::commandStarted(MongoDB\Driver\Monitoring\CommandStartedEvent `$event`): void

If the subscriber is registered, this method is called when a command is sent to the server.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\CommandStartedEvent)
  An event object encapsulating information about the started command.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandStartedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager
- Application Performance Monitoring (APM)

# MongoDB\Driver\Monitoring\CommandSubscriber::commandSucceeded

(mongodb >=1.3.0)

MongoDB\Driver\Monitoring\CommandSubscriber::commandSucceeded — Notification method for a successful command

### Açıklama

abstract public function MongoDB\Driver\Monitoring\CommandSubscriber::commandSucceeded(MongoDB\Driver\Monitoring\CommandSucceededEvent `$event`): void

If the subscriber is registered, this method is called when a command succeeds.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\CommandSucceededEvent)
  An event object encapsulating information about the successful command.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\CommandSucceededEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager
- Application Performance Monitoring (APM)

## İçindekiler

- MongoDB\Driver\Monitoring\CommandSubscriber::commandFailed — Notification method for a failed command
- MongoDB\Driver\Monitoring\CommandSubscriber::commandStarted — Notification method for a started command
- MongoDB\Driver\Monitoring\CommandSubscriber::commandSucceeded — Notification method for a successful command

# The MongoDB\Driver\Monitoring\LogSubscriber interface

(mongodb >=1.17.0)

## Giriş

Classes implementing this interface may be registered as a subscriber and receive log messages from the extension. This is similar to stream-based debug logging (i.e. mongodb.debug) except that trace-level log messages are not received.

As with stream-based logging, it is only possible to register a logger globally using MongoDB\Driver\Monitoring\addSubscriber(). The extension is not able to distinguish log messages for individual MongoDB\Driver\Manager objects.

## Arayüz Sözdizimi

class MongoDB\Driver\Monitoring\LogSubscriber implements MongoDB\Driver\Monitoring\Subscriber {
/* Sabitler */
const int LEVEL_ERROR = 0;
const int LEVEL_CRITICAL = 1;
const int LEVEL_WARNING = 2;
const int LEVEL_MESSAGE = 3;
const int LEVEL_INFO = 4;
const int LEVEL_DEBUG = 5;
/* Yöntemler */
abstract public function log(int `$level`, string `$domain`, string `$message`): void
}

## Öntanımlı Sabitler

`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_ERROR`
  Error log level. An error condition that the extension is unable to report through its API. This is the most severe log level in the extension.
`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_CRITICAL`
  Critical log level. An error condition with slightly less severity. This constant exists for consistency with libmongoc; however, the extension is unlikely to use it in practice.
`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_WARNING`
  Warning log level. Indicates a situation where undesirable application behavior may occur.
`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_MESSAGE`
  Message or notice log level. Indicates an event that is unusual but not problematic.
`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_INFO`
  Info log level. High-level information about normal driver behavior.
`MongoDB\Driver\Monitoring\LogSubscriber::LEVEL_DEBUG`
  Debug log level. Detailed information that may be helpful when debugging an application.

# MongoDB\Driver\Monitoring\LogSubscriber::log

(mongodb >=1.17.0)

MongoDB\Driver\Monitoring\LogSubscriber::log — Notification method for a log message

### Açıklama

abstract public function MongoDB\Driver\Monitoring\LogSubscriber::log(int `$level`, string `$domain`, string `$message`): void

If the subscriber is registered, this method is called for each logged message.

### Bağımsız Değişkenler

`level`
  The severity level. This will be one of the interface constants.
`domain`
  The name of the driver component that emitted the log message.
`message`
  The log message.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally

## İçindekiler

- MongoDB\Driver\Monitoring\LogSubscriber::log — Notification method for a log message

# The MongoDB\Driver\Monitoring\SDAMSubscriber interface

(mongodb >=1.13.0)

## Giriş

Classes may implement this interface to register an event subscriber that is notified for various SDAM events. See the » Server Discovery and Monitoring and » SDAM Monitoring specifications for additional information.

## Arayüz Sözdizimi

class MongoDB\Driver\Monitoring\SDAMSubscriber implements MongoDB\Driver\Monitoring\Subscriber {
/* Yöntemler */
abstract public function serverChanged(MongoDB\Driver\Monitoring\ServerChangedEvent `$event`): void
abstract public function serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent `$event`): void
abstract public function serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent `$event`): void
abstract public function serverHeartbeatStarted(MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent `$event`): void
abstract public function serverHeartbeatSucceeded(MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent `$event`): void
abstract public function serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent `$event`): void
abstract public function topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent `$event`): void
abstract public function topologyClosed(MongoDB\Driver\Monitoring\TopologyClosedEvent `$event`): void
abstract public function topologyOpening(MongoDB\Driver\Monitoring\TopologyOpeningEvent `$event`): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | Return types previously declared as tentative are now enforced.
PECL mongodb 1.15.0 | Return types for methods are declared as tentative on PHP 8.0 and newer, triggering deprecation notices in code that implements this interface without declaring the appropriate return types. The `#[ReturnTypeWillChange]` attribute can be added to silence the deprecation notice.

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged — Notification method for a server description change

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged(MongoDB\Driver\Monitoring\ServerChangedEvent `$event`): void

If the subscriber is registered, this method is called when a server's description changes. For example, a server's type changing from secondary to primary would cause its server description to change.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerChangedEvent)
  An event object encapsulating information about the changed server description.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerChangedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed — Notification method for closing a server

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed(MongoDB\Driver\Monitoring\ServerClosedEvent `$event`): void

If the subscriber is registered, this method is called when an existing server is removed from the topology.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerClosedEvent)
  An event object encapsulating information about the closed server.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerClosedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatFailed

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatFailed — Notification method for a failed server heartbeat

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatFailed(MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent `$event`): void

If the subscriber is registered, this method is called when a server heartbeat (i.e. » hello command issued through » server monitoring) fails.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent)
  An event object encapsulating information about the failed server heartbeat.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatStarted

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatStarted — Notification method for a started server heartbeat

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatStarted(MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent `$event`): void

If the subscriber is registered, this method is called when a server heartbeat (i.e. » hello command issued through » server monitoring) is sent to the server.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent)
  An event object encapsulating information about the started server heartbeat.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatSucceeded

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatSucceeded — Notification method for a successful server heartbeat

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatSucceeded(MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent `$event`): void

If the subscriber is registered, this method is called when a server heartbeat (i.e. » hello command issued through » server monitoring) succeeds.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent)
  An event object encapsulating information about the successful server heartbeat.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening — Notification method for opening a server

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening(MongoDB\Driver\Monitoring\ServerOpeningEvent `$event`): void

If the subscriber is registered, this method is called when a new server is added to the topology.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\ServerOpeningEvent)
  An event object encapsulating information about the opened server.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\ServerOpeningEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::topologyChanged

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::topologyChanged — Notification method for a topology description change

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::topologyChanged(MongoDB\Driver\Monitoring\TopologyChangedEvent `$event`): void

If the subscriber is registered, this method is called when the topology's description changes. For example, a topology discovering a new replica set primary would cause its topology description to change.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\TopologyChangedEvent)
  An event object encapsulating information about the changed topology description.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\TopologyChangedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::topologyClosed

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::topologyClosed — Notification method for closing the topology

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::topologyClosed(MongoDB\Driver\Monitoring\TopologyClosedEvent `$event`): void

If the subscriber is registered, this method is called when the topology is closed.

> Bilginize: Due to the driver's connection handling and persistence behavior, this event can only be observed when a MongoDB\Driver\Manager is created with the `"disableClientPersistence"` driver option and freed before request shutdown (RSHUTDOWN).

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\TopologyClosedEvent)
  An event object encapsulating information about the closed topology.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\TopologyClosedEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

# MongoDB\Driver\Monitoring\SDAMSubscriber::topologyOpening

(mongodb >=1.13.0)

MongoDB\Driver\Monitoring\SDAMSubscriber::topologyOpening — Notification method for opening the topology

### Açıklama

abstract public function MongoDB\Driver\Monitoring\SDAMSubscriber::topologyOpening(MongoDB\Driver\Monitoring\TopologyOpeningEvent `$event`): void

If the subscriber is registered, this method is called when the topology is opened.

> Bilginize: Due to the driver's connection handling and persistence behavior, this event may not be observed if a MongoDB\Driver\Manager uses a previously persisted » libmongoc client.

### Bağımsız Değişkenler

`event` (MongoDB\Driver\Monitoring\TopologyOpeningEvent)
  An event object encapsulating information about the opened topology.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

- Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

### Ayrıca Bakınız

- MongoDB\Driver\Monitoring\TopologyOpeningEvent
- MongoDB\Driver\Monitoring\addSubscriber() - Registers a monitoring event subscriber globally
- MongoDB\Driver\Manager::addSubscriber() - Registers a monitoring event subscriber with this Manager

## İçindekiler

- MongoDB\Driver\Monitoring\SDAMSubscriber::serverChanged — Notification method for a server description change
- MongoDB\Driver\Monitoring\SDAMSubscriber::serverClosed — Notification method for closing a server
- MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatFailed — Notification method for a failed server heartbeat
- MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatStarted — Notification method for a started server heartbeat
- MongoDB\Driver\Monitoring\SDAMSubscriber::serverHeartbeatSucceeded — Notification method for a successful server heartbeat
- MongoDB\Driver\Monitoring\SDAMSubscriber::serverOpening — Notification method for opening a server
- MongoDB\Driver\Monitoring\SDAMSubscriber::topologyChanged — Notification method for a topology description change
- MongoDB\Driver\Monitoring\SDAMSubscriber::topologyClosed — Notification method for closing the topology
- MongoDB\Driver\Monitoring\SDAMSubscriber::topologyOpening — Notification method for opening the topology

# The MongoDB\Driver\Monitoring\Subscriber interface

(mongodb >=1.3.0)

## Giriş

Base interface for event subscribers. This is used as a parameter type in the functions MongoDB\Driver\Monitoring\addSubscriber() and MongoDB\Driver\Monitoring\removeSubscriber() and should not be implemented directly.

## Arayüz Sözdizimi

class MongoDB\Driver\Monitoring\Subscriber {
}

This interface has no methods. Its only purpose is to be the base interface for all event subscribers.

# Exception classes

## İçindekiler

- MongoDB\Driver\Exception\AuthenticationException
- MongoDB\Driver\Exception\BulkWriteException
- MongoDB\Driver\Exception\BulkWriteCommandException
- MongoDB\Driver\Exception\CommandException
- MongoDB\Driver\Exception\ConnectionException
- MongoDB\Driver\Exception\ConnectionTimeoutException
- MongoDB\Driver\Exception\EncryptionException
- MongoDB\Driver\Exception\Exception
- MongoDB\Driver\Exception\ExecutionTimeoutException
- MongoDB\Driver\Exception\InvalidArgumentException
- MongoDB\Driver\Exception\LogicException
- MongoDB\Driver\Exception\RuntimeException
- MongoDB\Driver\Exception\ServerException
- MongoDB\Driver\Exception\SSLConnectionException
- MongoDB\Driver\Exception\UnexpectedValueException
- MongoDB\Driver\Exception\WriteException
- Class Tree

# The MongoDB\Driver\Exception\AuthenticationException class

(mongodb >= 1.0.0)

## Giriş

Thrown when the driver fails to authenticate with the server.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\AuthenticationException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\BulkWriteException class

(mongodb >= 1.0.0)

## Giriş

Thrown when a bulk write operation fails.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\BulkWriteException extends MongoDB\Driver\Exception\ServerException implements MongoDB\Driver\Exception\Exception {
/* Özellikler */
public readonly MongoDB\Driver\WriteResult $writeResult;
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
final public function getWriteResult(): MongoDB\Driver\WriteResult
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

writeResult
  The MongoDB\Driver\WriteResult associated with the failed write operation.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | The writeResult property is now public readonly.
PECL mongodb 2.0.0 | This class now extends MongoDB\Driver\Exception\ServerException instead of MongoDB\Driver\Exception\WriteException.

# MongoDB\Driver\Exception\BulkWriteException::getWriteResult

(mongodb >= 1.0.0)

MongoDB\Driver\Exception\BulkWriteException::getWriteResult — Returns the WriteResult for the failed write operation

### Açıklama

final public function MongoDB\Driver\Exception\BulkWriteException::getWriteResult(): MongoDB\Driver\WriteResult

Returns the MongoDB\Driver\WriteResult for the failed write operation. The MongoDB\Driver\WriteResult::getWriteErrors() and MongoDB\Driver\WriteResult::getWriteConcernError() methods may be used to get more details about the failure.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MongoDB\Driver\WriteResult for the failed write operation.

### Örnekler

Örnek 1 MongoDB\Driver\Exception\BulkWriteException::getWriteResult() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost');
    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 1]);

    try {
        $manager->executeBulkWrite('db.collection', $bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        $writeResult = $e->getWriteResult();

        if ($writeConcernError = $writeResult->getWriteConcernError()) {
            var_dump($writeConcernError);
        }

        if ($writeErrors = $writeResult->getWriteErrors()) {
            var_dump($writeErrors);
        }
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(70) "E11000 duplicate key error index: db.collection.$_id_ dup key: { : 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(1)
        ["info"]=>
        NULL
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult
- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations

## İçindekiler

- MongoDB\Driver\Exception\BulkWriteException::getWriteResult — Returns the WriteResult for the failed write operation

# The MongoDB\Driver\Exception\BulkWriteCommandException class

(mongodb >=2.1.0)

## Giriş

Exception thrown due to failed execution of a MongoDB\Driver\BulkWriteCommand. The methods of this class provide more details of the error that occurred, including the error reply and partial results from the bulk write.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\BulkWriteCommandException extends MongoDB\Driver\Exception\ServerException implements MongoDB\Driver\Exception\Exception {
/* Özellikler */
private ?MongoDB\BSON\Document $errorReply;
private ?MongoDB\Driver\BulkWriteCommandResult $partialResult;
private array $writeConcernErrors;
private array $writeErrors;
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
final public function getErrorReply(): ?MongoDB\BSON\Document
final public function getPartialResult(): ?MongoDB\Driver\BulkWriteCommandResult
final public function getWriteConcernErrors(): array
final public function getWriteErrors(): array
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

errorReply
  Any top-level error that occurred when attempting to communicate with the server or execute the bulk write. This value may be `null` if the exception was thrown due to errors occurring on individual writes.
partialResult
  A MongoDB\Driver\BulkWriteCommandResult reporting the result of any successful operations that were performed before the error was encountered. This value may be `null` if it cannot be determined that at least one write was successfully performed (and acknowledged).
writeConcernErrors
  An array of any MongoDB\Driver\WriteConcernErrors that occurred while executing the bulk write. This list may have multiple items if more than one server command was required to execute the bulk write.
writeErrors
  An array of any MongoDB\Driver\WriteErrors that occurred during the execution of individual write operations. Array keys will correspond to the index of the write operation from MongoDB\Driver\BulkWriteCommand. This map will contain at most one entry if the bulk write was ordered.

# MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply

(mongodb >=2.1.0)

MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply — Returns any top-level command error

### Açıklama

final public function MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply(): ?MongoDB\BSON\Document

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns any top-level error that occurred when attempting to communicate with the server or execute the bulk write. This value may be `null` if the exception was thrown due to errors occurring on individual writes.

### Örnekler

Örnek 1 MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    // This example uses configureFailPoint to simulate a top-level command error
    $manager->executeCommand('admin', new MongoDB\Driver\Command([
        'configureFailPoint' => 'failCommand',
        'mode' => ['times' => 1],
        'data' => [
            'failCommands' => ['bulkWrite'],
            'errorCode' => 8, /* UnknownError */
        ],
    ]));

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        var_dump($e->getErrorReply()?->toPHP());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)#12 (6) {
      ["ok"]=>
      float(0)
      ["errmsg"]=>
      string(43) "Failing command via 'failCommand' failpoint"
      ["code"]=>
      int(8)
      ["codeName"]=>
      string(12) "UnknownError"
      ["$clusterTime"]=>
      object(stdClass)#10 (2) {
        ["clusterTime"]=>
        object(MongoDB\BSON\Timestamp)#6 (2) {
          ["increment"]=>
          string(1) "7"
          ["timestamp"]=>
          string(10) "1744319389"
        }
        ["signature"]=>
        object(stdClass)#9 (2) {
          ["hash"]=>
          object(MongoDB\BSON\Binary)#7 (2) {
            ["data"]=>
            string(20) ""
            ["type"]=>
            int(0)
          }
          ["keyId"]=>
          object(MongoDB\BSON\Int64)#8 (1) {
            ["integer"]=>
            string(1) "0"
          }
        }
      }
      ["operationTime"]=>
      object(MongoDB\BSON\Timestamp)#11 (2) {
        ["increment"]=>
        string(1) "7"
        ["timestamp"]=>
        string(10) "1744319389"
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command

# MongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult

(mongodb >=2.1.0)

MongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult — Returns the result of any successful write operations

### Açıklama

final public function MongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult(): ?MongoDB\Driver\BulkWriteCommandResult

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a MongoDB\Driver\BulkWriteCommandResult reporting the result of any successful operations that were performed before the error was encountered. The return value will be `null` if it cannot be determined that at least one write was successfully performed (and acknowledged).

### Örnekler

Örnek 1 Partial result if at least one write is successful

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->deleteMany('db.coll', []);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 1]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        $result = $e->getPartialResult();
    }

    var_dump($result?->getInsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

Örnek 2 No partial result if no writes are successful

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->deleteMany('db.coll', []);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $manager->executeBulkWriteCommand($bulk);

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['_id' => 1]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        $result = $e->getPartialResult();
    }

    var_dump($result?->getInsertedCount());

    ?>

Yukarıdaki örneğin çıktısı:

    NULL

### Ayrıca Bakınız

- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command

# MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors

(mongodb >=2.1.0)

MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors — Returns any write concern errors

### Açıklama

final public function MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of any MongoDB\Driver\WriteConcernErrors that occurred while executing the bulk write. This list may have multiple items if more than one server command was required to execute the bulk write.

### Örnekler

Örnek 1 MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;
    $bulk->insertOne('db.coll', ['x' => 1]);

    $writeConcern = new MongoDB\Driver\WriteConcern(50);

    try {
        $result = $manager->executeBulkWriteCommand($bulk, ['writeConcern' => $writeConcern]);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        var_dump($e->getWriteConcernErrors());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      object(MongoDB\Driver\WriteConcernError)#6 (3) {
        ["message"]=>
        string(29) "Not enough data-bearing nodes"
        ["code"]=>
        int(100)
        ["info"]=>
        object(stdClass)#8 (1) {
          ["writeConcern"]=>
          object(stdClass)#7 (3) {
            ["w"]=>
            int(50)
            ["wtimeout"]=>
            int(0)
            ["provenance"]=>
            string(14) "clientSupplied"
          }
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\WriteConcernError

# MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors

(mongodb >=2.1.0)

MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors — Returns any write errors

### Açıklama

final public function MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors(): array

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of any MongoDB\Driver\WriteErrors that occurred during the execution of individual write operations. Array keys will correspond to the index of the write operation from MongoDB\Driver\BulkWriteCommand. This map will contain at most one entry if the bulk write was ordered.

### Örnekler

Örnek 1 MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors() example

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand(['ordered' => false]);
    $bulk->deleteMany('db.coll', []);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 1]);
    $bulk->insertOne('db.coll', ['_id' => 1]);

    try {
        $result = $manager->executeBulkWriteCommand($bulk);
    } catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
        var_dump($e->getWriteErrors());
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      [2]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(2)
        ["info"]=>
        object(stdClass)#6 (0) {
        }
      }
      [3]=>
      object(MongoDB\Driver\WriteError)#7 (4) {
        ["message"]=>
        string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(3)
        ["info"]=>
        object(stdClass)#8 (0) {
        }
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeBulkWriteCommand() - Execute write operations using the bulkWrite command
- MongoDB\Driver\WriteError

## İçindekiler

- MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply — Returns any top-level command error
- MongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult — Returns the result of any successful write operations
- MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors — Returns any write concern errors
- MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors — Returns any write errors

# The MongoDB\Driver\Exception\CommandException class

(mongodb >= 1.5.0)

## Giriş

Thrown when a command fails.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\CommandException extends MongoDB\Driver\Exception\ServerException implements MongoDB\Driver\Exception\Exception {
/* Özellikler */
public readonly object $resultDocument;
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
final public function getResultDocument(): object
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

resultDocument
  The result document associated with the failed command.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.3.0 | The resultDocument property is now public readonly.

# MongoDB\Driver\Exception\CommandException::getResultDocument

(mongodb >= 1.5.0)

MongoDB\Driver\Exception\CommandException::getResultDocument — Returns the result document for the failed command

### Açıklama

final public function MongoDB\Driver\Exception\CommandException::getResultDocument(): object

Returns the result document for the failed command.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The result document for the failed command.

### Ayrıca Bakınız

- MongoDB\Driver\Manager::executeCommand() - Execute a database command

## İçindekiler

- MongoDB\Driver\Exception\CommandException::getResultDocument — Returns the result document for the failed command

# The MongoDB\Driver\Exception\ConnectionException class

(mongodb >= 1.0.0)

## Giriş

Base class for exceptions thrown when the driver fails to establish a database connection.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\ConnectionException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\ConnectionTimeoutException class

(mongodb >= 1.0.0)

## Giriş

Thrown when the driver fails to establish a database connection within a specified time limit (connectTimeoutMS) or server selection fails (serverSelectionTimeoutMS).

## Sınıf Sözdizimi

final class MongoDB\Driver\Exception\ConnectionTimeoutException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\EncryptionException class

(mongodb >= 1.7.0)

## Giriş

Base class for exceptions thrown during client-side encryption.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\EncryptionException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\Exception interface

(mongodb >= 1.0.0)

## Giriş

Common interface for all extension exceptions. This interface is also used by the library, and may be used to identify any exceptions originating from the MongoDB PHP driver (i.e. extension and library).

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\Exception {
}

# The MongoDB\Driver\Exception\ExecutionTimeoutException class

(mongodb >= 1.0.0)

## Giriş

Thrown when a query or command fails to complete within a specified time limit (e.g. » maxTimeMS).

## Sınıf Sözdizimi

final class MongoDB\Driver\Exception\ExecutionTimeoutException extends MongoDB\Driver\Exception\ServerException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.5.0 | This class now extends MongoDB\Driver\Exception\ServerException instead of MongoDB\Driver\Exception\RuntimeException.

# The MongoDB\Driver\Exception\InvalidArgumentException class

(mongodb >= 1.0.0)

## Giriş

Thrown when a driver method is given invalid arguments (e.g. invalid option types).

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\InvalidArgumentException extends InvalidArgumentException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\LogicException class

(mongodb >= 1.0.0)

## Giriş

Thrown when the driver is incorrectly used (e.g. rewinding a cursor).

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\LogicException extends LogicException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\RuntimeException class

(mongodb >= 1.0.0)

## Giriş

Thrown when the driver encounters a runtime error (e.g. internal error from » libmongoc).

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\RuntimeException extends RuntimeException implements MongoDB\Driver\Exception\Exception {
/* Özellikler */
protected ?array $errorLabels;
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
final public function hasErrorLabel(string `$errorLabel`): bool
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

errorLabels
  Contains an array of error labels to go with an exception. For example, error labels can be used to detect whether a transaction can be retried safely if the `TransientTransactionError` label is present. The existence of a specific error label should be tested for with the MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(), instead of interpreting this `errorLabels` property manually.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 1.6.0 | The MongoDB\Driver\Exception\RuntimeException::hasErrorLabel() method and MongoDB\Driver\Exception\RuntimeException::errorLabels property have been added.

# MongoDB\Driver\Exception\RuntimeException::hasErrorLabel

(mongodb >= 1.6.0)

MongoDB\Driver\Exception\RuntimeException::hasErrorLabel — Returns whether an error label is associated with an exception

### Açıklama

final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool

Returns whether the `errorLabel` has been set for this exception. Error labels are set by either the server or the extension to indicate specific situations that may be handled by an application. A common situation might be determining whether to safely retry a transaction that failed due to a transient error (e.g. network error, transaction conflict). Examples of error labels are `TransientTransactionError` and `UnknownTransactionCommitResult`.

### Bağımsız Değişkenler

`errorLabel`
  The name of the `errorLabel` to test for.

### Dönen Değerler

Whether the given `errorLabel` is associated with this exception.

### Ayrıca Bakınız

- MongoDB\Driver\Session::commitTransaction() - Commits a transaction
- » MongoDB documentation on transactions

## İçindekiler

- MongoDB\Driver\Exception\RuntimeException::hasErrorLabel — Returns whether an error label is associated with an exception

# The MongoDB\Driver\Exception\ServerException class

(mongodb >= 1.5.0)

## Giriş

Base class for exceptions thrown by the server. The code of this exception and its subclasses will correspond to the original error code from the server.

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\ServerException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\SSLConnectionException class

(mongodb >= 1.0.0)

Uyarı

This exception class is DEPRECATED as of extension version 1.5.0 and was removed in 2.0. This exception was never thrown by the extension. Applications should use MongoDB\Driver\Exception\ConnectionException instead.

## Giriş

Thrown when the driver fails to establish an SSL connection with the server.

## Sınıf Sözdizimi

final class MongoDB\Driver\Exception\SSLConnectionException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\UnexpectedValueException class

(mongodb >= 1.0.0)

## Giriş

Thrown when the driver encounters an unexpected value (e.g. during BSON serialization or deserialization).

## Sınıf Sözdizimi

class MongoDB\Driver\Exception\UnexpectedValueException extends UnexpectedValueException implements MongoDB\Driver\Exception\Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The MongoDB\Driver\Exception\WriteException class

(mongodb >= 1.0.0)

Uyarı

This exception class is DEPRECATED as of extension version 1.20.0 and was removed in 2.0. This exception was never directly thrown by the extension. Applications should use MongoDB\Driver\Exception\BulkWriteException instead.

## Giriş

Base class for exceptions thrown by a failed write operation. The exception encapsulates a MongoDB\Driver\WriteResult object.

## Sınıf Sözdizimi

abstract class MongoDB\Driver\Exception\WriteException extends MongoDB\Driver\Exception\ServerException implements MongoDB\Driver\Exception\Exception {
/* Özellikler */
protected MongoDB\Driver\WriteResult $writeResult;
/* Miras alınan özellikler */
protected ?array $errorLabels;
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
final public function getWriteResult(): MongoDB\Driver\WriteResult
/* Miras alınan yöntemler */
final public function MongoDB\Driver\Exception\RuntimeException::hasErrorLabel(string `$errorLabel`): bool
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

writeResult
  The MongoDB\Driver\WriteResult associated with the failed write operation.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL mongodb 2.0.0 | This class was removed.
PECL mongodb 1.20.0 | This class has been deprecated and will be removed in version 2.0.
PECL mongodb 1.5.0 | This class now extends MongoDB\Driver\Exception\ServerException instead of MongoDB\Driver\Exception\RuntimeException.

# MongoDB\Driver\Exception\WriteException::getWriteResult

(mongodb >= 1.0.0)

MongoDB\Driver\Exception\WriteException::getWriteResult — Returns the WriteResult for the failed write operation

### Açıklama

final public function MongoDB\Driver\Exception\WriteException::getWriteResult(): MongoDB\Driver\WriteResult

Returns the MongoDB\Driver\WriteResult for the failed write operation. The MongoDB\Driver\WriteResult::getWriteErrors() and MongoDB\Driver\WriteResult::getWriteConcernError() methods may be used to get more details about the failure.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MongoDB\Driver\WriteResult for the failed write operation.

### Örnekler

Örnek 1 MongoDB\Driver\Exception\WriteException::getWriteResult() example

    <?php

    $manager = new MongoDB\Driver\Manager('mongodb://localhost');
    $bulk = new MongoDB\Driver\BulkWrite;
    $bulk->insert(['_id' => 1]);
    $bulk->insert(['_id' => 1]);

    try {
        $manager->executeBulkWrite('db.collection', $bulk);
    } catch (MongoDB\Driver\Exception\WriteException $e) {
        $writeResult = $e->getWriteResult();

        if ($writeConcernError = $writeResult->getWriteConcernError()) {
            var_dump($writeConcernError);
        }

        if ($writeErrors = $writeResult->getWriteErrors()) {
            var_dump($writeErrors);
        }
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(70) "E11000 duplicate key error index: db.collection.$_id_ dup key: { : 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(1)
        ["info"]=>
        NULL
      }
    }

### Ayrıca Bakınız

- MongoDB\Driver\WriteResult
- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations

## İçindekiler

- MongoDB\Driver\Exception\WriteException::getWriteResult — Returns the WriteResult for the failed write operation

# MongoDB Exception Class Tree

The class hierarchy for MongoDB exceptions is modeled after that of the SPL Exceptions. Base classes extend their SPL counterpart and all exception classes in the extension implement the MongoDB\Driver\Exception\Exception interface.

- MongoDB\Driver\Exception\LogicException (extends LogicException)
- MongoDB\Driver\Exception\InvalidArgumentException (extends InvalidArgumentException)
- MongoDB\Driver\Exception\UnexpectedValueException (extends UnexpectedValueException)
- MongoDB\Driver\Exception\RuntimeException (extends RuntimeException)
  - MongoDB\Driver\Exception\ConnectionException
    - MongoDB\Driver\Exception\AuthenticationException
    - MongoDB\Driver\Exception\ConnectionTimeoutException
    - MongoDB\Driver\Exception\SSLConnectionException (deprecated)
  - MongoDB\Driver\Exception\EncryptionException
  - MongoDB\Driver\Exception\ServerException
    - MongoDB\Driver\Exception\BulkWriteCommandException
    - MongoDB\Driver\Exception\CommandException
    - MongoDB\Driver\Exception\ExecutionTimeoutException
    - MongoDB\Driver\Exception\WriteException (deprecated)
      - MongoDB\Driver\Exception\BulkWriteException

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Tutorials
  - Using the PHP Library for MongoDB (PHPLIB)
  - Application Performance Monitoring (APM)
- Driver Architecture and Internals — Explains the driver architecture, and special features
  - Architecture — Architecture Overview
  - Connections — Connection handling and persistence
  - Persisting Data — Serialization and deserialization of PHP variables into MongoDB
- Security
  - Request Injection Attacks
  - Script Injection Attacks
- MongoDB\Driver — MongoDB Extension Classes
  - MongoDB\Driver\Manager — The MongoDB\Driver\Manager class
  - MongoDB\Driver\Command — The MongoDB\Driver\Command class
  - MongoDB\Driver\Query — The MongoDB\Driver\Query class
  - MongoDB\Driver\BulkWrite — The MongoDB\Driver\BulkWrite class
  - MongoDB\Driver\BulkWriteCommand — The MongoDB\Driver\BulkWriteCommand class
  - MongoDB\Driver\Session — The MongoDB\Driver\Session class
  - MongoDB\Driver\ClientEncryption — The MongoDB\Driver\ClientEncryption class
  - MongoDB\Driver\ServerApi — The MongoDB\Driver\ServerApi class
  - MongoDB\Driver\WriteConcern — The MongoDB\Driver\WriteConcern class
  - MongoDB\Driver\ReadPreference — The MongoDB\Driver\ReadPreference class
  - MongoDB\Driver\ReadConcern — The MongoDB\Driver\ReadConcern class
  - MongoDB\Driver\Cursor — The MongoDB\Driver\Cursor class
  - MongoDB\Driver\CursorId — The MongoDB\Driver\CursorId class
  - MongoDB\Driver\CursorInterface — The MongoDB\Driver\CursorInterface interface
  - MongoDB\Driver\Server — The MongoDB\Driver\Server class
  - MongoDB\Driver\ServerDescription — The MongoDB\Driver\ServerDescription class
  - MongoDB\Driver\TopologyDescription — The MongoDB\Driver\TopologyDescription class
  - MongoDB\Driver\WriteConcernError — The MongoDB\Driver\WriteConcernError class
  - MongoDB\Driver\WriteError — The MongoDB\Driver\WriteError class
  - MongoDB\Driver\WriteResult — The MongoDB\Driver\WriteResult class
  - MongoDB\Driver\BulkWriteCommandResult — The MongoDB\Driver\BulkWriteCommandResult class
- MongoDB\BSON — MongoDB BSON Classes and Functions
  - İşlevleri
  - MongoDB\BSON\Document — The MongoDB\BSON\Document class
  - MongoDB\BSON\PackedArray — The MongoDB\BSON\PackedArray class
  - MongoDB\BSON\Iterator — The MongoDB\BSON\Iterator class
  - MongoDB\BSON\Binary — The MongoDB\BSON\Binary class
  - MongoDB\BSON\VectorType — The MongoDB\BSON\VectorType enum
  - MongoDB\BSON\Decimal128 — The MongoDB\BSON\Decimal128 class
  - MongoDB\BSON\Javascript — The MongoDB\BSON\Javascript class
  - MongoDB\BSON\MaxKey — The MongoDB\BSON\MaxKey class
  - MongoDB\BSON\MinKey — The MongoDB\BSON\MinKey class
  - MongoDB\BSON\ObjectId — The MongoDB\BSON\ObjectId class
  - MongoDB\BSON\Regex — The MongoDB\BSON\Regex class
  - MongoDB\BSON\Timestamp — The MongoDB\BSON\Timestamp class
  - MongoDB\BSON\UTCDateTime — The MongoDB\BSON\UTCDateTime class
  - MongoDB\BSON\Type — The MongoDB\BSON\Type interface
  - MongoDB\BSON\Persistable — The MongoDB\BSON\Persistable interface
  - MongoDB\BSON\Serializable — The MongoDB\BSON\Serializable interface
  - MongoDB\BSON\Unserializable — The MongoDB\BSON\Unserializable interface
  - MongoDB\BSON\BinaryInterface — The MongoDB\BSON\BinaryInterface interface
  - MongoDB\BSON\Decimal128Interface — The MongoDB\BSON\Decimal128Interface interface
  - MongoDB\BSON\JavascriptInterface — The MongoDB\BSON\JavascriptInterface interface
  - MongoDB\BSON\MaxKeyInterface — The MongoDB\BSON\MaxKeyInterface interface
  - MongoDB\BSON\MinKeyInterface — The MongoDB\BSON\MinKeyInterface interface
  - MongoDB\BSON\ObjectIdInterface — The MongoDB\BSON\ObjectIdInterface interface
  - MongoDB\BSON\RegexInterface — The MongoDB\BSON\RegexInterface interface
  - MongoDB\BSON\TimestampInterface — The MongoDB\BSON\TimestampInterface interface
  - MongoDB\BSON\UTCDateTimeInterface — The MongoDB\BSON\UTCDateTimeInterface interface
  - MongoDB\BSON\DBPointer — The MongoDB\BSON\DBPointer class
  - MongoDB\BSON\Int64 — The MongoDB\BSON\Int64 class
  - MongoDB\BSON\Symbol — The MongoDB\BSON\Symbol class
  - MongoDB\BSON\Undefined — The MongoDB\BSON\Undefined class
- MongoDB\Driver\Monitoring — Monitoring classes and subscriber functions
  - İşlevleri
  - MongoDB\Driver\Monitoring\CommandFailedEvent — The MongoDB\Driver\Monitoring\CommandFailedEvent class
  - MongoDB\Driver\Monitoring\CommandStartedEvent — The MongoDB\Driver\Monitoring\CommandStartedEvent class
  - MongoDB\Driver\Monitoring\CommandSucceededEvent — The MongoDB\Driver\Monitoring\CommandSucceededEvent class
  - MongoDB\Driver\Monitoring\ServerChangedEvent — The MongoDB\Driver\Monitoring\ServerChangedEvent class
  - MongoDB\Driver\Monitoring\ServerClosedEvent — The MongoDB\Driver\Monitoring\ServerClosedEvent class
  - MongoDB\Driver\Monitoring\ServerOpeningEvent — The MongoDB\Driver\Monitoring\ServerOpeningEvent class
  - MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent — The MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent class
  - MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent — The MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent class
  - MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent — The MongoDB\Driver\Monitoring\ServerHeartbeatSucceededEvent class
  - MongoDB\Driver\Monitoring\TopologyChangedEvent — The MongoDB\Driver\Monitoring\TopologyChangedEvent class
  - MongoDB\Driver\Monitoring\TopologyClosedEvent — The MongoDB\Driver\Monitoring\TopologyClosedEvent class
  - MongoDB\Driver\Monitoring\TopologyOpeningEvent — The MongoDB\Driver\Monitoring\TopologyOpeningEvent class
  - MongoDB\Driver\Monitoring\CommandSubscriber — The MongoDB\Driver\Monitoring\CommandSubscriber interface
  - MongoDB\Driver\Monitoring\LogSubscriber — The MongoDB\Driver\Monitoring\LogSubscriber interface
  - MongoDB\Driver\Monitoring\SDAMSubscriber — The MongoDB\Driver\Monitoring\SDAMSubscriber interface
  - MongoDB\Driver\Monitoring\Subscriber — The MongoDB\Driver\Monitoring\Subscriber interface
- MongoDB\Driver\Exception — Exception classes
  - MongoDB\Driver\Exception\AuthenticationException — The MongoDB\Driver\Exception\AuthenticationException class
  - MongoDB\Driver\Exception\BulkWriteException — The MongoDB\Driver\Exception\BulkWriteException class
  - MongoDB\Driver\Exception\BulkWriteCommandException — The MongoDB\Driver\Exception\BulkWriteCommandException class
  - MongoDB\Driver\Exception\CommandException — The MongoDB\Driver\Exception\CommandException class
  - MongoDB\Driver\Exception\ConnectionException — The MongoDB\Driver\Exception\ConnectionException class
  - MongoDB\Driver\Exception\ConnectionTimeoutException — The MongoDB\Driver\Exception\ConnectionTimeoutException class
  - MongoDB\Driver\Exception\EncryptionException — The MongoDB\Driver\Exception\EncryptionException class
  - MongoDB\Driver\Exception\Exception — The MongoDB\Driver\Exception\Exception interface
  - MongoDB\Driver\Exception\ExecutionTimeoutException — The MongoDB\Driver\Exception\ExecutionTimeoutException class
  - MongoDB\Driver\Exception\InvalidArgumentException — The MongoDB\Driver\Exception\InvalidArgumentException class
  - MongoDB\Driver\Exception\LogicException — The MongoDB\Driver\Exception\LogicException class
  - MongoDB\Driver\Exception\RuntimeException — The MongoDB\Driver\Exception\RuntimeException class
  - MongoDB\Driver\Exception\ServerException — The MongoDB\Driver\Exception\ServerException class
  - MongoDB\Driver\Exception\SSLConnectionException — The MongoDB\Driver\Exception\SSLConnectionException class
  - MongoDB\Driver\Exception\UnexpectedValueException — The MongoDB\Driver\Exception\UnexpectedValueException class
  - MongoDB\Driver\Exception\WriteException — The MongoDB\Driver\Exception\WriteException class
  - Class Tree — MongoDB Exception Class Tree

# MySQL Drivers and Plugins

PHP offers several MySQL drivers and plugins for accessing and handling MySQL.

The differences and functionality of the MySQL extensions are described within the overview of this section.

The extensions listed support the MySQL protocol. Examples of compatible database servers are » MariaDB Server, » MySQL Server, » Percona Server for MySQL, and » TiDB.

# Overview of the MySQL PHP drivers

# Introduction

There are several PHP APIs for accessing the MySQL database. Users can choose between the mysqli or PDO_MySQL extensions.

This guide explains the terminology used to describe each API, information about choosing which API to use, and also information to help choose which MySQL library to use with the API.

# Terminology overview

This section provides an introduction to the options available to you when developing a PHP application that needs to interact with a MySQL database.

What is an API?

An Application Programming Interface, or API, defines the classes, methods, functions and variables that your application will need to call in order to carry out its desired task. In the case of PHP applications that need to communicate with databases the necessary APIs are usually exposed via PHP extensions.

APIs can be procedural or object-oriented. With a procedural API you call functions to carry out tasks, with the object-oriented API you instantiate classes and then call methods on the resulting objects. Of the two, the latter is usually the preferred interface, as it is more modern and leads to better organized code.

When writing PHP applications that need to connect to the MySQL server there are several API options available. This document discusses what is available and how to select the best solution for your application.

What is a Connector?

In the MySQL documentation, the term connector refers to a piece of software that allows your application to connect to the MySQL database server. MySQL provides connectors for a variety of languages, including PHP.

If your PHP application needs to communicate with a database server you will need to write PHP code to perform such activities as connecting to the database server, querying the database and other database-related functions. Software is required to provide the API that your PHP application will use, and also handle the communication between your application and the database server, possibly using other intermediate libraries where necessary. This software is known generically as a connector, as it allows your application to connect to a database server.

What is a Driver?

A driver is a piece of software designed to communicate with a specific type of database server. The driver may also call a library, such as the MySQL Client Library or the MySQL Native Driver. These libraries implement the low-level protocol used to communicate with the MySQL database server.

By way of an example, the PHP Data Objects (PDO) database abstraction layer may use one of several database-specific drivers. One of the drivers it has available is the PDO MYSQL driver, which allows it to interface with the MySQL server.

Sometimes people use the terms connector and driver interchangeably, this can be confusing. In the MySQL-related documentation the term driver is reserved for software that provides the database-specific part of a connector package.

What is an Extension?

In the PHP documentation, you will come across another term - extension. The PHP code consists of a core, with optional extensions to the core functionality. PHP's MySQL-related extension, `mysqli`, is implemented using the PHP extension framework.

An extension typically exposes an API to the PHP programmer, to allow its facilities to be used programmatically. However, some extensions which use the PHP extension framework do not expose an API to the PHP programmer.

The PDO MySQL driver extension, for example, does not expose an API to the PHP programmer, but provides an interface to the PDO layer above it.

The terms API and extension should not be taken to mean the same thing, as an extension may not necessarily expose an API to the programmer.

# Choosing an API

PHP offers different APIs to connect to MySQL. Below we show the APIs provided by the mysqli and PDO extensions. Each code snippet creates a connection to a MySQL server running on "example.com" using the username "user" and the password "password". And a query is run to greet the user.

Örnek 1 Comparing the MySQL APIs

    <?php
    // mysqli
    $mysqli = new mysqli("example.com", "user", "password", "database");
    $result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
    $row = $result->fetch_assoc();
    echo htmlentities($row['_message']);

    // PDO
    $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
    $statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
    $row = $statement->fetch(PDO::FETCH_ASSOC);
    echo htmlentities($row['_message']);

Örnek 2 Comparing prepared statements

    <?php
    // mysqli
    $mysqli = new mysqli("example.com", "user", "password", "database");
    $statement = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
    $statement->execute(["Amersfoort"]);
    $result = $statement->get_result();
    $row = $result->fetch_assoc();
    echo htmlentities($row['District']);

    // PDO
    $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
    $statement = $pdo->prepare("SELECT District FROM City WHERE Name=?");
    $statement->execute(["Amersfoort"]);
    $row = $statement->fetch(PDO::FETCH_ASSOC);
    echo htmlentities($row['District']);

Feature comparison

The overall performance of both extensions is considered to be about the same. Although the performance of the extension contributes only a fraction of the total run time of a PHP web request. Often, the impact is as low as 0.1%.

| ext/mysqli | PDO_MySQL
--- | --- | ---
PHP version introduced | 5.0 | 5.1
Included with PHP 7.x and 8.x | Yes | Yes
Development status | Active | Active
Lifecycle | Active | Active
Recommended for new projects | Yes | Yes
OOP Interface | Yes | Yes
Procedural Interface | Yes | No
API supports non-blocking, asynchronous queries with mysqlnd | Yes | No
Persistent Connections | Yes | Yes
API supports Charsets | Yes | Yes
API supports server-side Prepared Statements | Yes | Yes
API supports client-side Prepared Statements | No | Yes
API supports Stored Procedures | Yes | Yes
API supports Multiple Statements | Yes | Most
API supports Transactions | Yes | Yes
Transactions can be controlled with SQL | Yes | Yes
Supports all MySQL 5.1+ functionality | Yes | Most

# Choosing a library

The mysqli and PDO_MySQL PHP extensions are lightweight wrappers on top of a C client library. The extensions can either use the mysqlnd library or the `libmysqlclient` library. Choosing a library is a compile time decision.

The mysqlnd library is part of the PHP distribution. It offers features like lazy connections and query caching, features that are not available with libmysqlclient, so using the built-in mysqlnd library is highly recommended. See the mysqlnd documentation for additional details, and a listing of features and functionality that it offers.

Örnek 1 Configure commands for using mysqlnd or libmysqlclient

    // Recommended, compiles with mysqlnd
    $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

    // Alternatively recommended, compiles with mysqlnd
    $ ./configure --with-mysqli --with-pdo-mysql

    // Not recommended, compiles with libmysqlclient
    $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config

Library feature comparison

It is recommended to use the mysqlnd library instead of the MySQL Client Server library (libmysqlclient). Both libraries are supported and constantly being improved.

| MySQL native driver (mysqlnd) | MySQL client server library (`libmysqlclient`)
--- | --- | ---
Part of the PHP distribution | Yes | No
PHP version introduced | 5.3.0 | N/A
License | PHP License 3.01 | Dual-License
Development status | Active | Active
Lifecycle | No end announced | No end announced
Compile default (for all MySQL extensions) | Yes | No
Compression protocol support | Yes | Yes
SSL support | Yes | Yes
Named pipe support | Yes | Yes
Non-blocking, asynchronous queries | Yes | No
Performance statistics | Yes | No
LOAD LOCAL INFILE respects the open_basedir directive | Yes | No
Uses PHP's native memory management system (e.g., follows PHP memory limits) | Yes | No
Return numeric column as double (COM_QUERY) | Yes | No
Return numeric column as string (COM_QUERY) | Yes | Yes
Plugin API | Yes | Limited
Automatic reconnect | No | Optional

# Concepts

## İçindekiler

- Buffered and Unbuffered queries
- Character sets

These concepts are specific to the MySQL drivers for PHP.

## Buffered and Unbuffered queries

Queries are using the buffered mode by default. This means that query results are immediately transferred from the MySQL Server to PHP and then are kept in the memory of the PHP process. This allows additional operations like counting the number of rows, and moving (seeking) the current result pointer. It also allows issuing further queries on the same connection while working on the result set. The downside of the buffered mode is that larger result sets might require quite a lot memory. The memory will be kept occupied till all references to the result set are unset or the result set was explicitly freed, which will automatically happen during request end at the latest. The terminology "store result" is also used for buffered mode, as the whole result set is stored at once.

> Bilginize: When using libmysqlclient as library PHP's memory limit won't count the memory used for result sets unless the data is fetched into PHP variables. With mysqlnd the memory accounted for will include the full result set.

Unbuffered MySQL queries execute the query and then wait for the data from the MySQL server to be fetched. This uses less memory on the PHP-side, but can increase the load on the server. Unless the full result set was fetched from the server no further queries can be sent over the same connection. Unbuffered queries can also be referred to as "use result". Once all rows in the result set are fetched, the result set is gone and it cannot be iterated again.

Following these characteristics, unbuffered queries should be used only when a large result set is expected that will be processed sequentially. Unbuffered queries contain a number of pitfalls that makes it more difficult to use them, e.g. the number of rows in the result set is unknown until the last row is fetched. Buffered queries are the easier and more flexible way to process result sets.

Because buffered queries are the default, the examples below will demonstrate how to execute unbuffered queries with each API.

Örnek 1 Unbuffered query example: mysqli

    <?php
    $mysqli  = new mysqli("localhost", "my_user", "my_password", "world");
    $unbufferedResult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);

    foreach ($unbufferedResult as $row) {
        echo $row['Name'] . PHP_EOL;
    }
    ?>

Örnek 2 Unbuffered query example: pdo_mysql

    <?php
    $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_password');
    $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

    $unbufferedResult = $pdo->query("SELECT Name FROM City");
    foreach ($unbufferedResult as $row) {
        echo $row['Name'] . PHP_EOL;
    }
    ?>

## Character sets

Ideally a proper character set will be set at the server level, and doing this is described within the » Character Set Configuration section of the MySQL Server manual. Alternatively, each MySQL API offers a method to set the character set at runtime.

Dikkat

# The character set and character escaping

The character set should be understood and defined, as it has an affect on every action, and includes security implications. For example, the escaping mechanism (e.g., mysqli_real_escape_string() for mysqli and PDO::quote() for PDO_MySQL) will adhere to this setting. It is important to realize that these functions will not use the character set that is defined with a query, so for example the following will not have an effect on them:

Örnek 1 Problems with setting the character set with SQL

    <?php

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    // Will NOT affect $mysqli->real_escape_string();
    $mysqli->query("SET NAMES utf8mb4");

    // Will NOT affect $mysqli->real_escape_string();
    $mysqli->query("SET CHARACTER SET utf8mb4");

    // But, this will affect $mysqli->real_escape_string();
    $mysqli->set_charset('utf8mb4');

    // But, this will NOT affect it (UTF-8 vs utf8mb4) -- don't use dashes here
    $mysqli->set_charset('UTF-8');
    ?>

Below are examples that demonstrate how to properly alter the character set at runtime using each API.

> Bilginize: Possible UTF-8 confusion
> Because character set names in MySQL do not contain dashes, the string "utf8" is valid in MySQL to set the character set to UTF-8 (up to 3 byte UTF-8 Unicode Encoding). The string "UTF-8" is not valid, as using "UTF-8" will fail to change the character set and will throw an error.

Örnek 2 Setting the character set example: mysqli

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    echo 'Initial character set: ' . $mysqli->character_set_name() . "\n";

    if (!$mysqli->set_charset('utf8mb4')) {
        printf("Error loading character set utf8mb4: %s\n", $mysqli->error);
        exit;
    }

    echo 'Your current character set is: ' . $mysqli->character_set_name() . "\n";
    ?>

Örnek 3 Setting the character set example: pdo_mysql

    <?php
    $pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8mb4", 'my_user', 'my_pass');
    ?>

- Terminology overview
- Choosing an API
- Choosing a library
- Concepts
  - Buffered and Unbuffered queries
  - Character sets

# MySQL Improved Extension

# Giriş

The `mysqli` extension allows you to access the functionality provided by MySQL 4.1 and above. More information about the MySQL Database server can be found at » http://www.mysql.com/

An overview of software available for using MySQL from PHP can be found at Overview

Documentation for MySQL can be found at » http://dev.mysql.com/doc/.

Parts of this documentation included from MySQL manual with permissions of Oracle Corporation.

Examples use either the » world or » sakila database, which are freely available.

# Overview

This section provides an introduction to the options available to you when developing a PHP application that needs to interact with a MySQL database.

What is an API?

An Application Programming Interface, or API, defines the classes, methods, functions and variables that your application will need to call in order to carry out its desired task. In the case of PHP applications that need to communicate with databases the necessary APIs are usually exposed via PHP extensions.

APIs can be procedural or object-oriented. With a procedural API, you call functions to carry out tasks, with the object-oriented API you instantiate classes and then call methods on the resulting objects. Of the two, the latter is usually the preferred interface, as it is more modern and leads to better-organized code.

When writing PHP applications that need to connect to the MySQL server there are several API options available. This document discusses what is available and how to select the best solution for your application.

What is a Connector?

In the MySQL documentation, the term connector refers to a piece of software that allows your application to connect to the MySQL database server. MySQL provides connectors for a variety of languages, including PHP.

If your PHP application needs to communicate with a database server you will need to write PHP code to perform such activities as connecting to the database server, querying the database, and other database-related functions. Software is required to provide the API that your PHP application will use, and also handle the communication between your application and the database server, possibly using other intermediate libraries where necessary. This software is known generically as a connector, as it allows your application to connect to a database server.

What is a Driver?

A driver is a piece of software designed to communicate with a specific type of database server. The driver may also call a library, such as the MySQL Client Library or the MySQL Native Driver. These libraries implement the low-level protocol used to communicate with the MySQL database server.

By way of an example, the PHP Data Objects (PDO) database abstraction layer may use one of several database-specific drivers. One of the drivers it has available is the PDO MYSQL driver, which allows it to interface with the MySQL server.

Sometimes people use the terms connector and driver interchangeably, this can be confusing. In the MySQL-related documentation the term driver is reserved for software that provides the database-specific part of a connector package.

What is an Extension?

In the PHP documentation you will come across another term - extension. The PHP code consists of a core, with optional extensions to the core functionality. PHP's MySQL-related extensions, such as the mysqli extension, and the PDO MySQL driver extension, are implemented using the PHP extension framework.

An extension typically exposes an API to the PHP programmer, to allow its facilities to be used programmatically. However, some extensions which use the PHP extension framework do not expose an API to the PHP programmer.

The PDO MySQL driver extension, for example, does not expose an API to the PHP programmer, but provides an interface to the PDO layer above it.

The terms API and extension should not be taken to mean the same thing, as an extension may not necessarily expose an API to the programmer.

What are the main PHP API offerings for using MySQL?

There are two main API options when considering connecting to a MySQL database server:

- PHP's mysqli Extension

- PHP Data Objects (PDO)

Each has its own advantages and disadvantages. The following discussion aims to give a brief introduction to the key aspects of each API.

What is PHP's mysqli Extension?

The `mysqli` extension, or as it is sometimes known, the MySQL improved extension, was developed to take advantage of new features found in MySQL systems versions 4.1.3 and newer. The `mysqli` extension is included with PHP versions 5 and later.

The `mysqli` extension has a number of benefits, the key enhancements over the `mysql` extension being:

- Object-oriented interface

- Support for Prepared Statements

- Support for Multiple Statements

- Support for Transactions

- Enhanced debugging capabilities

As well as the object-oriented interface the extension also provides a procedural interface.

The `mysqli` extension is built using the PHP extension framework, its source code is located in the directory ext/mysqli.

For further information on the `mysqli` extension, see MySQLi.

What is PDO?

PHP Data Objects, or PDO, is a database abstraction layer specifically for PHP applications. PDO provides a consistent API for your PHP application regardless of the type of database server your application will connect to. In theory, if you are using the PDO API, you could switch the database server you used, from say Firebird to MySQL, and only need to make minor changes to your PHP code.

Other examples of database abstraction layers include JDBC for Java applications and DBI for Perl.

While PDO has its advantages, such as a clean, simple, portable API, its main disadvantage is that it doesn't allow you to use all of the advanced features that are available in the latest versions of MySQL server. For example, PDO does not allow you to use MySQL's support for Multiple Statements.

PDO is implemented using the PHP extension framework, its source code is located in the directory ext/pdo.

For further information on PDO, see the PDO.

What is the PDO MYSQL driver?

The PDO MYSQL driver is not an API as such, at least from the PHP programmer's perspective. In fact, the PDO MYSQL driver sits in the layer below PDO itself and provides MySQL-specific functionality. The programmer still calls the PDO API, but PDO uses the PDO MYSQL driver to carry out communication with the MySQL server.

The PDO MYSQL driver is one of several available PDO drivers. Other PDO drivers available include those for the Firebird and PostgreSQL database servers.

The PDO MYSQL driver is implemented using the PHP extension framework. Its source code is located in the directory ext/pdo_mysql. It does not expose an API to the PHP programmer.

For further information on the PDO MYSQL driver, see MySQL (PDO).

What is PHP's MySQL Native Driver?

In order to communicate with the MySQL database server, `mysqli` and the PDO MYSQL driver each use a low-level library that implements the required protocol. In the past, the only available library was the MySQL Client Library, otherwise known as `libmysqlclient`.

However, the interface presented by `libmysqlclient` was not optimized for communication with PHP applications, as `libmysqlclient` was originally designed with C applications in mind. For this reason, the MySQL Native Driver, `mysqlnd`, was developed as an alternative to `libmysqlclient` for PHP applications.

Both, the `mysqli` extension and the PDO MySQL driver can each be individually configured to use either `libmysqlclient` or `mysqlnd`. As `mysqlnd` is designed specifically to be utilised in the PHP system it has numerous memory and speed enhancements over `libmysqlclient`. You are strongly encouraged to take advantage of these improvements.

The MySQL Native Driver is implemented using the PHP extension framework. The source code is located in ext/mysqlnd. It does not expose an API to the PHP programmer.

Comparison of Features

The following table compares the functionality of the main methods of connecting to MySQL from PHP:

Comparison of MySQL API options for PHP
| PHP's mysqli Extension | PDO (Using PDO MySQL Driver and MySQL Native Driver)
--- | --- | ---
PHP version introduced | 5.0 | 5.0
MySQL development status | Active development | Active development
API supports Charsets | Yes | Yes
API supports server-side Prepared Statements | Yes | Yes
API supports client-side Prepared Statements | No | Yes
API supports Stored Procedures | Yes | Yes
API supports Multiple Statements | Yes | Most
Supports all MySQL 4.1+ functionality | Yes | Most

# Quick start guide

## İçindekiler

- Dual procedural and object-oriented interface
- Connections
- Executing statements
- Prepared Statements
- Stored Procedures
- Multiple Statements
- API support for transactions
- Metadata

This quick start guide will help with choosing and gaining familiarity with the PHP MySQL API.

This quick start gives an overview on the mysqli extension. Code examples are provided for all major aspects of the API. Database concepts are explained to the degree needed for presenting concepts specific to MySQL.

Required: A familiarity with the PHP programming language, the SQL language, and basic knowledge of the MySQL server.

## Dual procedural and object-oriented interface

The mysqli extension features a dual interface. It supports the procedural and object-oriented programming paradigm.

Users migrating from the old mysql extension may prefer the procedural interface. The procedural interface is similar to that of the old mysql extension. In many cases, the function names differ only by prefix. Some mysqli functions take a connection handle as their first argument, whereas matching functions in the old mysql interface take it as an optional last argument.

Örnek 1 Easy migration from the old mysql extension

    <?php
    $mysqli = mysqli_connect("example.com", "user", "password", "database");
    $result = mysqli_query($mysqli, "SELECT 'Please do not use the deprecated mysql extension for new development. ' AS _msg FROM DUAL");
    $row = mysqli_fetch_assoc($result);
    echo $row['_msg'];

    $mysql = mysql_connect("example.com", "user", "password");
    mysql_select_db("test");
    $result = mysql_query("SELECT 'Use the mysqli extension instead.' AS _msg FROM DUAL", $mysql);
    $row = mysql_fetch_assoc($result);
    echo $row['_msg'];

Yukarıdaki örneğin çıktısı:

    Please do not use the deprecated mysql extension for new development. Use the mysqli extension instead.

The object-oriented interface

In addition to the classical procedural interface, users can choose to use the object-oriented interface. The documentation is organized using the object-oriented interface. The object-oriented interface shows functions grouped by their purpose, making it easier to get started. The reference section gives examples for both syntax variants.

There are no significant performance differences between the two interfaces. Users can base their choice on personal preference.

Örnek 2 Object-oriented and procedural interface

    <?php

    $mysqli = mysqli_connect("example.com", "user", "password", "database");

    $result = mysqli_query($mysqli, "SELECT 'A world full of ' AS _msg FROM DUAL");
    $row = mysqli_fetch_assoc($result);
    echo $row['_msg'];

    $mysqli = new mysqli("example.com", "user", "password", "database");

    $result = $mysqli->query("SELECT 'choices to please everybody.' AS _msg FROM DUAL");
    $row = $result->fetch_assoc();
    echo $row['_msg'];

Yukarıdaki örneğin çıktısı:

    A world full of choices to please everybody.

The object-oriented interface is used for the quickstart because the reference section is organized that way.

Mixing styles

It is possible to switch between styles at any time. Mixing both styles is not recommended for code clarity and coding style reasons.

Örnek 3 Bad coding style

    <?php

    $mysqli = new mysqli("example.com", "user", "password", "database");

    $result = mysqli_query($mysqli, "SELECT 'Possible but bad style.' AS _msg FROM DUAL");

    if ($row = $result->fetch_assoc()) {
        echo $row['_msg'];
    }

Yukarıdaki örneğin çıktısı:

    Possible but bad style.

See also

- mysqli::__construct()
- mysqli::query()
- mysqli_result::fetch_assoc()
- $mysqli::connect_errno
- $mysqli::connect_error
- $mysqli::errno
- $mysqli::error
- The MySQLi Extension Function Summary

## Connections

The MySQL server supports the use of different transport layers for connections. Connections use TCP/IP, Unix domain sockets or Windows named pipes.

The hostname `localhost` has a special meaning. It is bound to the use of Unix domain sockets. To open a TCP/IP connection to the localhost, `127.0.0.1` must be used instead of the hostname `localhost`.

Örnek 1 Special meaning of localhost

    <?php

    $mysqli = new mysqli("localhost", "user", "password", "database");

    echo $mysqli->host_info . "\n";

    $mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);

    echo $mysqli->host_info . "\n";

Yukarıdaki örneğin çıktısı:

    Localhost via UNIX socket
    127.0.0.1 via TCP/IP

Connection parameter defaults

Depending on the connection function used, assorted parameters can be omitted. If a parameter is not provided, then the extension attempts to use the default values that are set in the PHP configuration file.

Örnek 2 Setting defaults

    mysqli.default_host=192.168.2.27
    mysqli.default_user=root
    mysqli.default_pw=""
    mysqli.default_port=3306
    mysqli.default_socket=/tmp/mysql.sock

The resulting parameter values are then passed to the client library that is used by the extension. If the client library detects empty or unset parameters, then it may default to the library built-in values.

Built-in connection library defaults

If the host value is unset or empty, then the client library will default to a Unix socket connection on `localhost`. If socket is unset or empty, and a Unix socket connection is requested, then a connection to the default socket on `/tmp/mysql.sock` is attempted.

On Windows systems, the host name `.` is interpreted by the client library as an attempt to open a Windows named pipe based connection. In this case the socket parameter is interpreted as the pipe name. If not given or empty, then the socket (pipe name) defaults to `\\.\pipe\MySQL`.

If neither a Unix domain socket based not a Windows named pipe based connection is to be established and the port parameter value is unset, the library will default to port `3306`.

The mysqlnd library and the MySQL Client Library (libmysqlclient) implement the same logic for determining defaults.

Connection options

Connection options are available to, for example, set init commands which are executed upon connect, or for requesting use of a certain charset. Connection options must be set before a network connection is established.

For setting a connection option, the connect operation has to be performed in three steps: creating a connection handle with mysqli_init() or mysqli::__construct(), setting the requested options using mysqli::options(), and establishing the network connection with mysqli::real_connect().

Connection pooling

The mysqli extension supports persistent database connections, which are a special kind of pooled connections. By default, every database connection opened by a script is either explicitly closed by the user during runtime or released automatically at the end of the script. A persistent connection is not. Instead it is put into a pool for later reuse, if a connection to the same server using the same username, password, socket, port and default database is opened. Reuse saves connection overhead.

Every PHP process is using its own mysqli connection pool. Depending on the web server deployment model, a PHP process may serve one or multiple requests. Therefore, a pooled connection may be used by one or more scripts subsequently.

Persistent connection

If an unused persistent connection for a given combination of host, username, password, socket, port and default database cannot be found in the connection pool, then mysqli opens a new connection. The use of persistent connections can be enabled and disabled using the PHP directive mysqli.allow_persistent. The total number of connections opened by a script can be limited with mysqli.max_links. The maximum number of persistent connections per PHP process can be restricted with mysqli.max_persistent. Please note that the web server may spawn many PHP processes.

A common complain about persistent connections is that their state is not reset before reuse. For example, open and unfinished transactions are not automatically rolled back. But also, authorization changes which happened in the time between putting the connection into the pool and reusing it are not reflected. This may be seen as an unwanted side-effect. On the contrary, the name `persistent` may be understood as a promise that the state is persisted.

The mysqli extension supports both interpretations of a persistent connection: state persisted, and state reset before reuse. The default is reset. Before a persistent connection is reused, the mysqli extension implicitly calls mysqli::change_user() to reset the state. The persistent connection appears to the user as if it was just opened. No artifacts from previous usages are visible.

The mysqli::change_user() call is an expensive operation. For best performance, users may want to recompile the extension with the compile flag `MYSQLI_NO_CHANGE_USER_ON_PCONNECT` being set.

It is left to the user to choose between safe behavior and best performance. Both are valid optimization goals. For ease of use, the safe behavior has been made the default at the expense of maximum performance.

See also

- mysqli::__construct()
- mysqli_init()
- mysqli::options()
- mysqli::real_connect()
- mysqli::change_user()
- $mysqli::host_info
- MySQLi Configuration Options
- Persistent Database Connections

## Executing statements

Statements can be executed with the mysqli::query(), mysqli::real_query() and mysqli::multi_query(). The mysqli::query() function is the most common, and combines the executing statement with a buffered fetch of its result set, if any, in one call. Calling mysqli::query() is identical to calling mysqli::real_query() followed by mysqli::store_result().

Örnek 1 Executing queries

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");

Buffered result sets

After statement execution, results can be either retrieved all at once or read row by row from the server. Client-side result set buffering allows the server to free resources associated with the statement's results as early as possible. Generally speaking, clients are slow consuming result sets. Therefore, it is recommended to use buffered result sets. mysqli::query() combines statement execution and result set buffering.

PHP applications can navigate freely through buffered results. Navigation is fast because the result sets are held in client memory. Please, keep in mind that it is often easier to scale by client than it is to scale the server.

Örnek 2 Navigation through buffered results

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");
    $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

    $result = $mysqli->query("SELECT id FROM test ORDER BY id ASC");

    echo "Reverse order...\n";
    for ($row_no = $result->num_rows - 1; $row_no >= 0; $row_no--) {
        $result->data_seek($row_no);
        $row = $result->fetch_assoc();
        echo " id = " . $row['id'] . "\n";
    }

    echo "Result set order...\n";
    foreach ($result as $row) {
        echo " id = " . $row['id'] . "\n";
    }

Yukarıdaki örneğin çıktısı:

    Reverse order...
     id = 3
     id = 2
     id = 1
    Result set order...
     id = 1
     id = 2
     id = 3

Unbuffered result sets

If client memory is a short resource and freeing server resources as early as possible to keep server load low is not needed, unbuffered results can be used. Scrolling through unbuffered results is not possible before all rows have been read.

Örnek 3 Navigation through unbuffered results

    <?php

    $mysqli->real_query("SELECT id FROM test ORDER BY id ASC");
    $result = $mysqli->use_result();

    echo "Result set order...\n";
    foreach ($result as $row) {
        echo " id = " . $row['id'] . "\n";
    }

Result set values data types

The mysqli::query(), mysqli::real_query() and mysqli::multi_query() functions are used to execute non-prepared statements. At the level of the MySQL Client Server Protocol, the command `COM_QUERY` and the text protocol are used for statement execution. With the text protocol, the MySQL server converts all data of a result sets into strings before sending. This conversion is done regardless of the SQL result set column data type. The mysql client libraries receive all column values as strings. No further client-side casting is done to convert columns back to their native types. Instead, all values are provided as PHP strings.

Örnek 4 Text protocol returns strings by default

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label CHAR(1))");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')");

    $result = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
    $row = $result->fetch_assoc();

    printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
    printf("label = %s (%s)\n", $row['label'], gettype($row['label']));

Yukarıdaki örneğin çıktısı:

    id = 1 (string)
    label = a (string)

It is possible to convert integer and float columns back to PHP numbers by setting the `MYSQLI_OPT_INT_AND_FLOAT_NATIVE` connection option, if using the mysqlnd library. If set, the mysqlnd library will check the result set meta data column types and convert numeric SQL columns to PHP numbers, if the PHP data type value range allows for it. This way, for example, SQL INT columns are returned as integers.

Örnek 5 Native data types with mysqlnd and connection option

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = new mysqli();
    $mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
    $mysqli->real_connect("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label CHAR(1))");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')");

    $result = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
    $row = $result->fetch_assoc();

    printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
    printf("label = %s (%s)\n", $row['label'], gettype($row['label']));

Yukarıdaki örneğin çıktısı:

    id = 1 (integer)
    label = a (string)

See also

- mysqli::__construct()
- mysqli::options()
- mysqli::real_connect()
- mysqli::query()
- mysqli::multi_query()
- mysqli::use_result()
- mysqli::store_result()

## Prepared Statements

The MySQL database supports prepared statements. A prepared statement or a parameterized statement is used to execute the same statement repeatedly with high efficiency and protect against SQL injections.

Basic workflow

The prepared statement execution consists of two stages: prepare and execute. At the prepare stage a statement template is sent to the database server. The server performs a syntax check and initializes server internal resources for later use.

The MySQL server supports using anonymous, positional placeholder with `?`.

Prepare is followed by execute. During execute the client binds parameter values and sends them to the server. The server executes the statement with the bound values using the previously created internal resources.

Örnek 1 Prepared statement

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");

    /* Prepared statement, stage 1: prepare */
    $stmt = $mysqli->prepare("INSERT INTO test(id, label) VALUES (?, ?)");

    /* Prepared statement, stage 2: bind and execute */
    $id = 1;
    $label = 'PHP';
    $stmt->bind_param("is", $id, $label); // "is" means that $id is bound as an integer and $label as a string

    $stmt->execute();

Repeated execution

A prepared statement can be executed repeatedly. Upon every execution the current value of the bound variable is evaluated and sent to the server. The statement is not parsed again. The statement template is not transferred to the server again.

Örnek 2 INSERT prepared once, executed multiple times

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");

    /* Prepared statement, stage 1: prepare */
    $stmt = $mysqli->prepare("INSERT INTO test(id, label) VALUES (?, ?)");

    /* Prepared statement, stage 2: bind and execute */
    $stmt->bind_param("is", $id, $label); // "is" means that $id is bound as an integer and $label as a string

    $data = [
        1 => 'PHP',
        2 => 'Java',
        3 => 'C++'
    ];
    foreach ($data as $id => $label) {
        $stmt->execute();
    }

    $result = $mysqli->query('SELECT id, label FROM test');
    var_dump($result->fetch_all(MYSQLI_ASSOC));

Yukarıdaki örneğin çıktısı:

    array(3) {
      [0]=>
      array(2) {
        ["id"]=>
        string(1) "1"
        ["label"]=>
        string(3) "PHP"
      }
      [1]=>
      array(2) {
        ["id"]=>
        string(1) "2"
        ["label"]=>
        string(4) "Java"
      }
      [2]=>
      array(2) {
        ["id"]=>
        string(1) "3"
        ["label"]=>
        string(3) "C++"
      }
    }

Every prepared statement occupies server resources. Statements should be closed explicitly immediately after use. If not done explicitly, the statement will be closed when the statement handle is freed by PHP.

Using a prepared statement is not always the most efficient way of executing a statement. A prepared statement executed only once causes more client-server round-trips than a non-prepared statement. This is why the `SELECT` is not run as a prepared statement above.

Also, consider the use of the MySQL multi-INSERT SQL syntax for INSERTs. For the example, multi-INSERT requires fewer round-trips between the server and client than the prepared statement shown above.

Örnek 3 Less round trips using multi-INSERT SQL

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");

    $values = [1, 2, 3, 4];

    $stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?), (?), (?), (?)");
    $stmt->bind_param('iiii', ...$values);
    $stmt->execute();

Result set values data types

The MySQL Client Server Protocol defines a different data transfer protocol for prepared statements and non-prepared statements. Prepared statements are using the so called binary protocol. The MySQL server sends result set data "as is" in binary format. Results are not serialized into strings before sending. Client libraries receive binary data and try to convert the values into appropriate PHP data types. For example, results from an SQL `INT` column will be provided as PHP integer variables.

Örnek 4 Native datatypes

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'PHP')");

    $stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1");
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();

    printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
    printf("label = %s (%s)\n", $row['label'], gettype($row['label']));

Yukarıdaki örneğin çıktısı:

    id = 1 (integer)
    label = PHP (string)

This behavior differs from non-prepared statements. By default, non-prepared statements return all results as strings. This default can be changed using a connection option. If the connection option is used, there are no differences.

Fetching results using bound variables

Results from prepared statements can either be retrieved by binding output variables, or by requesting a mysqli_result object.

Output variables must be bound after statement execution. One variable must be bound for every column of the statements result set.

Örnek 5 Output variable binding

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'PHP')");

    $stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1");
    $stmt->execute();

    $stmt->bind_result($out_id, $out_label);

    while ($stmt->fetch()) {
        printf("id = %s (%s), label = %s (%s)\n", $out_id, gettype($out_id), $out_label, gettype($out_label));
    }

Yukarıdaki örneğin çıktısı:

    id = 1 (integer), label = PHP (string)

Prepared statements return unbuffered result sets by default. The results of the statement are not implicitly fetched and transferred from the server to the client for client-side buffering. The result set takes server resources until all results have been fetched by the client. Thus it is recommended to consume results timely. If a client fails to fetch all results or the client closes the statement before having fetched all data, the data has to be fetched implicitly by `mysqli`.

It is also possible to buffer the results of a prepared statement using mysqli_stmt::store_result().

Fetching results using mysqli_result interface

Instead of using bound results, results can also be retrieved through the mysqli_result interface. mysqli_stmt::get_result() returns a buffered result set.

Örnek 6 Using mysqli_result to fetch results

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'PHP')");

    $stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1");
    $stmt->execute();

    $result = $stmt->get_result();

    var_dump($result->fetch_all(MYSQLI_ASSOC));

Yukarıdaki örneğin çıktısı:

    array(1) {
      [0]=>
      array(2) {
        ["id"]=>
        int(1)
        ["label"]=>
        string(3) "PHP"
      }
    }

Using the mysqli_result interface offers the additional benefit of flexible client-side result set navigation.

Örnek 7 Buffered result set for flexible read out

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Non-prepared statement */
    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT, label TEXT)");
    $mysqli->query("INSERT INTO test(id, label) VALUES (1, 'PHP'), (2, 'Java'), (3, 'C++')");

    $stmt = $mysqli->prepare("SELECT id, label FROM test");
    $stmt->execute();

    $result = $stmt->get_result();

    for ($row_no = $result->num_rows - 1; $row_no >= 0; $row_no--) {
        $result->data_seek($row_no);
        var_dump($result->fetch_assoc());
    }

Yukarıdaki örneğin çıktısı:

    array(2) {
      ["id"]=>
      int(3)
      ["label"]=>
      string(3) "C++"
    }
    array(2) {
      ["id"]=>
      int(2)
      ["label"]=>
      string(4) "Java"
    }
    array(2) {
      ["id"]=>
      int(1)
      ["label"]=>
      string(3) "PHP"
    }

Escaping and SQL injection

Bound variables are sent to the server separately from the query and thus cannot interfere with it. The server uses these values directly at the point of execution, after the statement template is parsed. Bound parameters do not need to be escaped as they are never substituted into the query string directly. A hint must be provided to the server for the type of bound variable, to create an appropriate conversion. See the mysqli_stmt::bind_param() function for more information.

Such a separation is sometimes considered the only security feature to prevent SQL injection, but the same degree of security can be achieved with non-prepared statements, if all the values are formatted correctly. It should be noted that correct formatting is not the same as escaping and involves more logic than simple escaping. Thus, prepared statements are simply a more convenient and less error-prone approach to this element of database security.

Client-side prepared statement emulation

The API does not include emulation for client-side prepared statement emulation.

See also

- mysqli::__construct()
- mysqli::query()
- mysqli::prepare()
- mysqli_stmt::prepare()
- mysqli_stmt::execute()
- mysqli_stmt::bind_param()
- mysqli_stmt::bind_result()

## Stored Procedures

The MySQL database supports stored procedures. A stored procedure is a subroutine stored in the database catalog. Applications can call and execute the stored procedure. The `CALL` SQL statement is used to execute a stored procedure.

Parameter

Stored procedures can have `IN`, `INOUT` and `OUT` parameters, depending on the MySQL version. The mysqli interface has no special notion for the different kinds of parameters.

IN parameter

Input parameters are provided with the `CALL` statement. Please, make sure values are escaped correctly.

Örnek 1 Calling a stored procedure

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");

    $mysqli->query("DROP PROCEDURE IF EXISTS p");
    $mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;");

    $mysqli->query("CALL p(1)");

    $result = $mysqli->query("SELECT id FROM test");

    var_dump($result->fetch_assoc());

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["id"]=>
      string(1) "1"
    }

INOUT/OUT parameter

The values of `INOUT`/`OUT` parameters are accessed using session variables.

Örnek 2 Using session variables

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP PROCEDURE IF EXISTS p");
    $mysqli->query('CREATE PROCEDURE p(OUT msg VARCHAR(50)) BEGIN SELECT "Hi!" INTO msg; END;');

    $mysqli->query("SET @msg = ''");
    $mysqli->query("CALL p(@msg)");

    $result = $mysqli->query("SELECT @msg as _p_out");

    $row = $result->fetch_assoc();
    echo $row['_p_out'];

Yukarıdaki örneğin çıktısı:

    Hi!

Application and framework developers may be able to provide a more convenient API using a mix of session variables and databased catalog inspection. However, please note the possible performance impact of a custom solution based on catalog inspection.

Handling result sets

Stored procedures can return result sets. Result sets returned from a stored procedure cannot be fetched correctly using mysqli::query(). The mysqli::query() function combines statement execution and fetching the first result set into a buffered result set, if any. However, there are additional stored procedure result sets hidden from the user which cause mysqli::query() to fail returning the user expected result sets.

Result sets returned from a stored procedure are fetched using mysqli::real_query() or mysqli::multi_query(). Both functions allow fetching any number of result sets returned by a statement, such as `CALL`. Failing to fetch all result sets returned by a stored procedure causes an error.

Örnek 3 Fetching results from stored procedures

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");
    $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

    $mysqli->query("DROP PROCEDURE IF EXISTS p");
    $mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;');

    $mysqli->multi_query("CALL p()");

    do {
        if ($result = $mysqli->store_result()) {
            printf("---\n");
            var_dump($result->fetch_all());
            $result->free();
        }
    } while ($mysqli->next_result());

Yukarıdaki örneğin çıktısı:

    ---
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        string(1) "1"
      }
      [1]=>
      array(1) {
        [0]=>
        string(1) "2"
      }
      [2]=>
      array(1) {
        [0]=>
        string(1) "3"
      }
    }
    ---
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        string(1) "2"
      }
      [1]=>
      array(1) {
        [0]=>
        string(1) "3"
      }
      [2]=>
      array(1) {
        [0]=>
        string(1) "4"
      }
    }

Use of prepared statements

No special handling is required when using the prepared statement interface for fetching results from the same stored procedure as above. The prepared statement and non-prepared statement interfaces are similar. Please note, that not every MYSQL server version may support preparing the `CALL` SQL statement.

Örnek 4 Stored Procedures and Prepared Statements

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");
    $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

    $mysqli->query("DROP PROCEDURE IF EXISTS p");
    $mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;');

    $stmt = $mysqli->prepare("CALL p()");

    $stmt->execute();

    do {
        if ($result = $stmt->get_result()) {
            printf("---\n");
            var_dump($result->fetch_all());
            $result->free();
        }
    } while ($stmt->next_result());

Yukarıdaki örneğin çıktısı:

    ---
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        int(1)
      }
      [1]=>
      array(1) {
        [0]=>
        int(2)
      }
      [2]=>
      array(1) {
        [0]=>
        int(3)
      }
    }
    ---
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        int(2)
      }
      [1]=>
      array(1) {
        [0]=>
        int(3)
      }
      [2]=>
      array(1) {
        [0]=>
        int(4)
      }
    }

Of course, use of the bind API for fetching is supported as well.

Örnek 5 Stored Procedures and Prepared Statements using bind API

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");
    $mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

    $mysqli->query("DROP PROCEDURE IF EXISTS p");
    $mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;');

    $stmt = $mysqli->prepare("CALL p()");

    $stmt->execute();

    do {
        if ($stmt->store_result()) {
            $stmt->bind_result($id_out);
            while ($stmt->fetch()) {
                echo "id = $id_out\n";
            }
        }
    } while ($stmt->next_result());

Yukarıdaki örneğin çıktısı:

    id = 1
    id = 2
    id = 3
    id = 2
    id = 3
    id = 4

See also

- mysqli::query()
- mysqli::multi_query()
- mysqli::next_result()
- mysqli::more_results()

## Multiple Statements

MySQL optionally allows having multiple statements in one statement string, but it requires special handling.

Multiple statements or multi queries must be executed with mysqli::multi_query(). The individual statements of the statement string are separated by semicolon. Then, all result sets returned by the executed statements must be fetched.

The MySQL server allows having statements that do return result sets and statements that do not return result sets in one multiple statement.

Örnek 1 Multiple Statements

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $mysqli->query("DROP TABLE IF EXISTS test");
    $mysqli->query("CREATE TABLE test(id INT)");

    $sql = "SELECT COUNT(*) AS _num FROM test;
            INSERT INTO test(id) VALUES (1);
            SELECT COUNT(*) AS _num FROM test; ";

    $mysqli->multi_query($sql);

    do {
        if ($result = $mysqli->store_result()) {
            var_dump($result->fetch_all(MYSQLI_ASSOC));
            $result->free();
        }
    } while ($mysqli->next_result());

Yukarıdaki örneğin çıktısı:

    array(1) {
      [0]=>
      array(1) {
        ["_num"]=>
        string(1) "0"
      }
    }
    array(1) {
      [0]=>
      array(1) {
        ["_num"]=>
        string(1) "1"
      }
    }

Security considerations

The API functions mysqli::query() and mysqli::real_query() do not set a connection flag necessary for activating multi queries in the server. An extra API call is used for multiple statements to reduce the damage of accidental SQL injection attacks. An attacker may try to add statements such as `; DROP DATABASE mysql` or `; SELECT SLEEP(999)`. If the attacker succeeds in adding SQL to the statement string but mysqli::multi_query() is not used, the server will not execute the injected and malicious SQL statement.

Örnek 2 SQL Injection

    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");
    $result = $mysqli->query("SELECT 1; DROP TABLE mysql.user");
    ?>

Yukarıdaki örneğin çıktısı:

    PHP Fatal error:  Uncaught mysqli_sql_exception: You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version for the right syntax to
    use near 'DROP TABLE mysql.user' at line 1

Prepared statements

Use of the multiple statement with prepared statements is not supported.

See also

- mysqli::query()
- mysqli::multi_query()
- mysqli::next_result()
- mysqli::more_results()

## API support for transactions

The MySQL server supports transactions depending on the storage engine used. Since MySQL 5.5, the default storage engine is InnoDB. InnoDB has full ACID transaction support.

Transactions can either be controlled using SQL or API calls. It is recommended to use API calls for enabling and disabling the `autocommit` mode and for committing and rolling back transactions.

Örnek 1 Setting `autocommit` mode with SQL and through the API

    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    /* Recommended: using API to control transactional settings */
    $mysqli->autocommit(false);

    /* Won't be monitored and recognized by the replication and the load balancing plugin */
    $mysqli->query('SET AUTOCOMMIT = 0');

Optional feature packages, such as the replication and load balancing plugin, can easily monitor API calls. The replication plugin offers transaction aware load balancing, if transactions are controlled with API calls. Transaction aware load balancing is not available if SQL statements are used for setting `autocommit` mode, committing or rolling back a transaction.

Örnek 2 Commit and rollback

    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");
    $mysqli->autocommit(false);

    $mysqli->query("INSERT INTO test(id) VALUES (1)");
    $mysqli->rollback();

    $mysqli->query("INSERT INTO test(id) VALUES (2)");
    $mysqli->commit();

Please note, that the MySQL server cannot roll back all statements. Some statements cause an implicit commit.

See also

- mysqli::autocommit()
- mysqli::begin_transaction()
- mysqli::commit()
- mysqli::rollback()

## Metadata

A MySQL result set contains metadata. The metadata describes the columns found in the result set. All metadata sent by MySQL is accessible through the `mysqli` interface. The extension performs no or negligible changes to the information it receives. Differences between MySQL server versions are not aligned.

Meta data is access through the mysqli_result interface.

Örnek 1 Accessing result set meta data

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $result = $mysqli->query("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
    var_dump($result->fetch_fields());

Yukarıdaki örneğin çıktısı:

    array(2) {
      [0]=>
      object(stdClass)#3 (13) {
        ["name"]=>
        string(4) "_one"
        ["orgname"]=>
        string(0) ""
        ["table"]=>
        string(0) ""
        ["orgtable"]=>
        string(0) ""
        ["def"]=>
        string(0) ""
        ["db"]=>
        string(0) ""
        ["catalog"]=>
        string(3) "def"
        ["max_length"]=>
        int(1)
        ["length"]=>
        int(1)
        ["charsetnr"]=>
        int(63)
        ["flags"]=>
        int(32897)
        ["type"]=>
        int(8)
        ["decimals"]=>
        int(0)
      }
      [1]=>
      object(stdClass)#4 (13) {
        ["name"]=>
        string(4) "_two"
        ["orgname"]=>
        string(0) ""
        ["table"]=>
        string(0) ""
        ["orgtable"]=>
        string(0) ""
        ["def"]=>
        string(0) ""
        ["db"]=>
        string(0) ""
        ["catalog"]=>
        string(3) "def"
        ["max_length"]=>
        int(5)
        ["length"]=>
        int(5)
        ["charsetnr"]=>
        int(8)
        ["flags"]=>
        int(1)
        ["type"]=>
        int(253)
        ["decimals"]=>
        int(31)
      }
    }

Prepared statements

Meta data of result sets created using prepared statements are accessed the same way. A suitable mysqli_result handle is returned by mysqli_stmt::result_metadata().

Örnek 2 Prepared statements metadata

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("example.com", "user", "password", "database");

    $stmt = $mysqli->prepare("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
    $stmt->execute();
    $result = $stmt->result_metadata();
    var_dump($result->fetch_fields());

See also

- mysqli::query()
- mysqli_result::fetch_fields()

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

In order to have these functions available, you must compile PHP with support for the mysqli extension.

MySQL 8

When running a PHP version before 7.1.16, or PHP 7.2 before 7.2.4, set MySQL 8 Server's default password plugin to mysql_native_password or else you will see errors similar to The server requested authentication method unknown to the client [caching_sha2_password] even when caching_sha2_password is not used.

This is because MySQL 8 defaults to caching_sha2_password, a plugin that is not recognized by the older PHP (mysqlnd) releases. Instead, change it by setting `default_authentication_plugin=mysql_native_password` in my.cnf. The caching_sha2_password plugin is fully supported as of PHP 7.4.4. For older releases, the mysql_xdevapi extension does support it.

## Kurulum

The `mysqli` extension was introduced with PHP version 5.0.0. The MySQL Native Driver was included in PHP version 5.3.0.

## Installation on Linux

The common Unix distributions include binary versions of PHP that can be installed. Although these binary versions are typically built with support for the MySQL extensions, the extension libraries themselves may need to be installed using an additional package. Check the package manager that comes with your chosen distribution for availability.

For example, on Ubuntu the `php5-mysql` package installs the ext/mysql, ext/mysqli, and pdo_mysql PHP extensions. On CentOS, the `php-mysql` package also installs these three PHP extensions.

Alternatively, you can compile this extension yourself. Building PHP from source allows you to specify the MySQL extensions you want to use, as well as your choice of client library for each extension.

The MySQL Native Driver is the recommended client library option, as it results in improved performance and gives access to features not available when using the MySQL Client Library. Refer to What is PHP's MySQL Native Driver? for a brief overview of the advantages of MySQL Native Driver.

The `/path/to/mysql_config` represents the location of the `mysql_config` program that comes with MySQL Server.

mysqli compile time support matrix
PHP Sürüm: | Öntanımlı | Yapılandırma Seçenekleri: mysqlnd | Yapılandırma Seçenekleri: `libmysqlclient` | Sürüm Bilgisi
--- | --- | --- | --- | ---
5.4.x and above | mysqlnd | --with-mysqli | --with-mysqli=/path/to/mysql_config | mysqlnd is the default
5.3.x | libmysqlclient | --with-mysqli=mysqlnd | --with-mysqli=/path/to/mysql_config | mysqlnd is supported
5.0.x, 5.1.x, 5.2.x | libmysqlclient | Kullanılabilir değil | --with-mysqli=/path/to/mysql_config | mysqlnd is not supported

Note that it is possible to freely mix MySQL extensions and client libraries. For example, it is possible to enable the MySQL extension to use the MySQL Client Library (libmysqlclient), while configuring the `mysqli` extension to use the MySQL Native Driver. However, all permutations of extension and client library are possible.

## Installation on Windows Systems

On Windows, php_mysqli.dll DLL must be enabled in php.ini.

As with enabling any PHP extension (such as php_mysqli.dll), the PHP directive extension_dir should be set to the directory where the PHP extensions are located. See also the Manual Windows Installation Instructions. An example `extension_dir` value is c:\php\ext.

> Bilginize:

> If when starting the web server an error similar to the following occurs: `"Unable to load dynamic library './php_mysqli.dll'"`, this is because php_mysqli.dll cannot be found by the system.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

MySQLi Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mysqli.allow_local_infile | "0" | `INI_SYSTEM` | Before PHP 7.2.16 and 7.3.3 the default was "1".
mysqli.local_infile_directory |  | `INI_SYSTEM` | Available as of PHP 8.1.0.
mysqli.allow_persistent | "1" | `INI_SYSTEM` |
mysqli.max_persistent | "-1" | `INI_SYSTEM` |
mysqli.max_links | "-1" | `INI_SYSTEM` |
mysqli.default_port | "3306" | `INI_ALL` |
mysqli.default_socket | NULL | `INI_ALL` |
mysqli.default_host | NULL | `INI_ALL` |
mysqli.default_user | NULL | `INI_ALL` |
mysqli.default_pw | NULL | `INI_ALL` |
mysqli.reconnect | "0" | `INI_SYSTEM` | Removed as of PHP 8.2.0
mysqli.rollback_on_cached_plink | "0" | `INI_SYSTEM` |

For further details and definitions of the preceding INI_* constants, see the chapter on configuration changes.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mysqli.allow_local_infile` bool

  Allow accessing, from PHP's perspective, local files with LOAD DATA statements

`mysqli.local_infile_directory` string

  Allows restricting LOCAL DATA loading to files located in this designated directory.

`mysqli.allow_persistent` bool

  Enable the ability to create persistent connections using mysqli_connect().

`mysqli.max_persistent` int

  Maximum of persistent connections that can be made. Set to 0 for unlimited.

`mysqli.max_links` int

  The maximum number of MySQL connections per process.

`mysqli.default_port` int

  The default TCP port number to use when connecting to the database server if no other port is specified. If no default is specified, the port will be obtained from the `MYSQL_TCP_PORT` environment variable, the `mysql-tcp` entry in /etc/services or the compile-time `MYSQL_PORT` constant, in that order. Win32 will only use the `MYSQL_PORT` constant.

`mysqli.default_socket` string

  The default socket name to use when connecting to a local database server if no other socket name is specified.

`mysqli.default_host` string

  The default server host to use when connecting to the database server if no other host is specified.

`mysqli.default_user` string

  The default user name to use when connecting to the database server if no other name is specified.

`mysqli.default_pw` string

  The default password to use when connecting to the database server if no other password is specified.

`mysqli.reconnect` int

  Automatically reconnect if the connection was lost.

  > Bilginize: This php.ini setting had been ignored by the mysqlnd driver, and was removed as of PHP 8.2.0.

`mysqli.rollback_on_cached_plink` bool

  If this option is enabled, closing a persistent connection will rollback any pending transactions of this connection before it is put back into the persistent connection pool. Otherwise, pending transactions will be rolled back only when the connection is reused, or when it is actually closed.

Users cannot set `MYSQL_OPT_READ_TIMEOUT` through an API call or runtime configuration setting. Note that if it were possible there would be differences between how `libmysqlclient` and streams would interpret the value of `MYSQL_OPT_READ_TIMEOUT`.

# The mysqli Extension and Persistent Connections

The idea behind persistent connections is that a connection between a client process and a database can be reused by a client process, rather than being created and destroyed multiple times. This reduces the overhead of creating fresh connections every time one is required, as unused connections are cached and ready to be reused.

Unlike the mysql extension, mysqli does not provide a separate function for opening persistent connections. To open a persistent connection you must prepend `p:` to the hostname when connecting.

The problem with persistent connections is that they can be left in unpredictable states by clients. For example, a table lock might be activated before a client terminates unexpectedly. A new client process reusing this persistent connection will get the connection as is. Any cleanup would need to be done by the new client process before it could make good use of the persistent connection, increasing the burden on the programmer.

The persistent connection of the `mysqli` extension however provides built-in cleanup handling code. The cleanup carried out by `mysqli` includes:

- Rollback active transactions

- Close and drop temporary tables

- Unlock tables

- Reset session variables

- Close prepared statements (always happens with PHP)

- Close handler

- Release locks acquired with GET_LOCK()

This ensures that persistent connections are in a clean state on return from the connection pool, before the client process uses them.

The `mysqli` extension does this cleanup by automatically calling the C-API function `mysql_change_user()`.

The automatic cleanup feature has advantages and disadvantages though. The advantage is that the programmer no longer needs to worry about adding cleanup code, as it is called automatically. However, the disadvantage is that the code could potentially be a little slower, as the code to perform the cleanup needs to run each time a connection is returned from the connection pool.

It is possible to switch off the automatic cleanup code, by compiling PHP with `MYSQLI_NO_CHANGE_USER_ON_PCONNECT` defined.

> Bilginize:

> The `mysqli` extension supports persistent connections when using either MySQL Native Driver or MySQL Client Library.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`MYSQLI_READ_DEFAULT_GROUP` (int)

  Read options from the named group from my.cnf or the file specified with `MYSQLI_READ_DEFAULT_FILE`.

`MYSQLI_READ_DEFAULT_FILE` (int)

  Read options from the named option file instead of from my.cnf.

`MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS` (int)
  Indicates to the server that the client can handle sandbox mode for expired passwords. Can be used with mysqli_options().
`MYSQLI_OPT_LOAD_DATA_LOCAL_DIR` (int)
  If enabled, this option specifies the directory from which client-side `LOCAL` data loading is permitted in `LOAD DATA LOCAL` statements.
`MYSQLI_OPT_CONNECT_TIMEOUT` (int)

  Connect timeout in seconds.

`MYSQLI_OPT_READ_TIMEOUT` (int)

  Command execution result timeout in seconds. Available as of PHP 7.2.0.

`MYSQLI_OPT_LOCAL_INFILE` (int)

  Enables command `LOAD LOCAL INFILE`.

`MYSQLI_OPT_INT_AND_FLOAT_NATIVE` (int)

  Convert integer and float columns back to PHP numbers. Only valid for mysqlnd.

`MYSQLI_OPT_NET_CMD_BUFFER_SIZE` (int)

  The size of the internal command/network buffer. Only valid for mysqlnd.

`MYSQLI_OPT_NET_READ_BUFFER_SIZE` (int)

  Maximum read chunk size in bytes when reading the body of a MySQL command packet. Only valid for mysqlnd.

`MYSQLI_OPT_SSL_VERIFY_SERVER_CERT` (int)

`MYSQLI_INIT_COMMAND` (int)

  Command to execute when connecting to MySQL server. Will automatically be re-executed when reconnecting.

`MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS` (int)
  Indicates to the server that the client can handle sandbox mode for expired passwords. Can be used with mysqli_real_connect().
`MYSQLI_CLIENT_FOUND_ROWS` (int)
  Return number of matched rows, not the number of affected rows.
`MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT` (int)
  Verify server certificate.
`MYSQLI_CLIENT_SSL` (int)

  Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the MySQL client library.

`MYSQLI_CLIENT_COMPRESS` (int)

  Use compression protocol.

`MYSQLI_CLIENT_INTERACTIVE` (int)

  Allow `interactive_timeout` seconds (instead of `wait_timeout` seconds) of inactivity before closing the connection. The client's session `wait_timeout` variable will be set to the value of the session `interactive_timeout` variable.

`MYSQLI_CLIENT_IGNORE_SPACE` (int)

  Allow spaces after function names. Makes all functions names reserved words.

`MYSQLI_CLIENT_NO_SCHEMA` (int)

  Don't allow the `db_name.tbl_name.col_name` syntax.

`MYSQLI_CLIENT_MULTI_QUERIES`

  Allows multiple semicolon-delimited queries in a single mysqli_query() call.

`MYSQLI_STORE_RESULT` (int)

  For using buffered result sets. It has a value of `0`.

`MYSQLI_STORE_RESULT_COPY_DATA` (int)
  As of PHP 8.1, this constant no longer has any effect. Before PHP 8.1, this constant is used to copy results from the internal `mysqlnd` buffer into the PHP variables fetched. By default, `mysqlnd` will use a reference logic to avoid copying and duplicating results held in memory. For certain result sets, for example, result sets with many small rows, the copy approach can reduce the overall memory usage because PHP variables holding results may be released earlier. Available with `mysqlnd` only. Deprecated as of PHP 8.4.0.
`MYSQLI_USE_RESULT` (int)

  For using unbuffered result sets. It has a value of `1`.

`MYSQLI_ASSOC` (int)

  Columns are returned into the array having the fieldname as the array index.

`MYSQLI_NUM` (int)

  Columns are returned into the array having an enumerated index.

`MYSQLI_BOTH` (int)

  Columns are returned into the array having both a numerical index and the fieldname as the associative index.

`MYSQLI_NOT_NULL_FLAG` (int)

  Indicates that a field is defined as `NOT NULL`.

`MYSQLI_PRI_KEY_FLAG` (int)

  Field is part of a primary index.

`MYSQLI_UNIQUE_KEY_FLAG` (int)

  Field is part of a unique index.

`MYSQLI_MULTIPLE_KEY_FLAG` (int)

  Field is part of an index.

`MYSQLI_BLOB_FLAG` (int)

  Field is defined as `BLOB`.

`MYSQLI_UNSIGNED_FLAG` (int)

  Field is defined as `UNSIGNED`.

`MYSQLI_ZEROFILL_FLAG` (int)

  Field is defined as `ZEROFILL`.

`MYSQLI_AUTO_INCREMENT_FLAG` (int)

  Field is defined as `AUTO_INCREMENT`.

`MYSQLI_TIMESTAMP_FLAG` (int)

  Field is defined as `TIMESTAMP`.

`MYSQLI_SET_FLAG` (int)

  Field is defined as `SET`.

`MYSQLI_NUM_FLAG` (int)

  Field is defined as `NUMERIC`.

`MYSQLI_PART_KEY_FLAG` (int)

  Field is part of an multi-index.

`MYSQLI_GROUP_FLAG` (int)

  Field is part of `GROUP BY`.

`MYSQLI_NO_DEFAULT_VALUE_FLAG` (int)
  A column has no `DEFAULT` clause in its definition. This does not apply to `NULL` or to `AUTO_INCREMENT` columns because such columns have a default value of `NULL` and an implied default value respectively.
`MYSQLI_TYPE_DECIMAL` (int)

  Field is defined as `DECIMAL`.

`MYSQLI_TYPE_NEWDECIMAL` (int)

  Precision math `DECIMAL` or `NUMERIC` field.

`MYSQLI_TYPE_BIT` (int)

  Field is defined as `BIT`.

`MYSQLI_TYPE_TINY` (int)

  Field is defined as `TINYINT`.

`MYSQLI_TYPE_SHORT` (int)

  Field is defined as `SMALLINT`.

`MYSQLI_TYPE_LONG` (int)

  Field is defined as `INT`.

`MYSQLI_TYPE_FLOAT` (int)

  Field is defined as `FLOAT`.

`MYSQLI_TYPE_DOUBLE` (int)

  Field is defined as `DOUBLE`.

`MYSQLI_TYPE_NULL` (int)

  Field is defined as `DEFAULT NULL`.

`MYSQLI_TYPE_TIMESTAMP` (int)

  Field is defined as `TIMESTAMP`.

`MYSQLI_TYPE_LONGLONG` (int)

  Field is defined as `BIGINT`.

`MYSQLI_TYPE_INT24` (int)

  Field is defined as `MEDIUMINT`.

`MYSQLI_TYPE_DATE` (int)

  Field is defined as `DATE`.

`MYSQLI_TYPE_TIME` (int)

  Field is defined as `TIME`.

`MYSQLI_TYPE_DATETIME` (int)

  Field is defined as `DATETIME`.

`MYSQLI_TYPE_YEAR` (int)

  Field is defined as `YEAR`.

`MYSQLI_TYPE_NEWDATE` (int)

  Field is defined as `DATE`.

`MYSQLI_TYPE_INTERVAL` (int)

  Alias of `MYSQLI_TYPE_ENUM`. Removed as of PHP 8.4.0.

`MYSQLI_TYPE_ENUM` (int)

  Field is defined as `ENUM`.

`MYSQLI_TYPE_SET` (int)

  Field is defined as `SET`.

`MYSQLI_TYPE_TINY_BLOB` (int)

  Field is defined as `TINYBLOB`.

`MYSQLI_TYPE_MEDIUM_BLOB` (int)

  Field is defined as `MEDIUMBLOB`.

`MYSQLI_TYPE_LONG_BLOB` (int)

  Field is defined as `LONGBLOB`.

`MYSQLI_TYPE_BLOB` (int)

  Field is defined as `BLOB`.

`MYSQLI_TYPE_VAR_STRING` (int)

  Field is defined as `VARCHAR`.

`MYSQLI_TYPE_STRING` (int)

  Field is defined as `CHAR` or `BINARY`.

`MYSQLI_TYPE_CHAR` (int)

  Field is defined as `TINYINT`. For `CHAR`, see `MYSQLI_TYPE_STRING`.

`MYSQLI_TYPE_GEOMETRY` (int)

  Field is defined as `GEOMETRY`.

`MYSQLI_TYPE_JSON` (int)

  Field is defined as `JSON`. Only valid for mysqlnd and MySQL 5.7.8 and up.

`MYSQLI_TYPE_VECTOR` (int)

  Field is defined as `VECTOR`.

`MYSQLI_NEED_DATA`

  More data available for bind variable.

`MYSQLI_ENUM_FLAG` (int)

  Field is defined as `ENUM`.

`MYSQLI_BINARY_FLAG` (int)

  Field is defined as `BINARY`.

`MYSQLI_CURSOR_TYPE_FOR_UPDATE` (int)

  Removed as of PHP 8.4.0.

`MYSQLI_CURSOR_TYPE_NO_CURSOR` (int)

`MYSQLI_CURSOR_TYPE_READ_ONLY` (int)

`MYSQLI_CURSOR_TYPE_SCROLLABLE` (int)

  Removed as of PHP 8.4.0.

`MYSQLI_STMT_ATTR_CURSOR_TYPE` (int)

`MYSQLI_STMT_ATTR_PREFETCH_ROWS` (int)

  Removed as of PHP 8.4.0.

`MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH` (int)

`MYSQLI_SET_CHARSET_NAME` (int)

`MYSQLI_REPORT_INDEX` (int)

  Report if no index or bad index was used in a query.

`MYSQLI_REPORT_ERROR` (int)

  Report errors from mysqli function calls.

`MYSQLI_REPORT_STRICT` (int)

  Throw a `mysqli_sql_exception` for errors instead of warnings.

`MYSQLI_REPORT_ALL` (int)

  Set all options on (report all).

`MYSQLI_REPORT_OFF` (int)

  Turns reporting off.

`MYSQLI_DEBUG_TRACE_ENABLED` (int)

  Is set to 1 if mysqli_debug() functionality is enabled.

`MYSQLI_SERVER_PUBLIC_KEY` (int)

`MYSQLI_REFRESH_GRANT` (int)

  Refreshes the grant tables. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_LOG` (int)

  Flushes the logs, like executing the `FLUSH LOGS` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_TABLES` (int)

  Flushes the table cache, like executing the `FLUSH TABLES` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_HOSTS` (int)

  Flushes the host cache, like executing the `FLUSH HOSTS` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_REPLICA` (int)

  Alias of `MYSQLI_REFRESH_SLAVE` constant. Available as of PHP 8.1.0. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_STATUS` (int)

  Reset the status variables, like executing the `FLUSH STATUS` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_THREADS` (int)

  Flushes the thread cache. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_SLAVE` (int)

  On a slave replication server: resets the master server information, and restarts the slave. Like executing the `RESET SLAVE` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_MASTER` (int)

  On a master replication server: removes the binary log files listed in the binary log index, and truncates the index file. Like executing the `RESET MASTER` SQL statement. Deprecated as of PHP 8.4.0.

`MYSQLI_REFRESH_BACKUP_LOG` (int)
  Closes and reopens the backup log files. Deprecated as of PHP 8.4.0.
`MYSQLI_TRANS_COR_AND_CHAIN` (int)

  Appends "AND CHAIN" to mysqli_commit() or mysqli_rollback().

`MYSQLI_TRANS_COR_AND_NO_CHAIN` (int)

  Appends "AND NO CHAIN" to mysqli_commit() or mysqli_rollback().

`MYSQLI_TRANS_COR_RELEASE` (int)

  Appends "RELEASE" to mysqli_commit() or mysqli_rollback().

`MYSQLI_TRANS_COR_NO_RELEASE` (int)

  Appends "NO RELEASE" to mysqli_commit() or mysqli_rollback().

`MYSQLI_TRANS_START_READ_ONLY` (int)

  Start the transaction as "START TRANSACTION READ ONLY" with mysqli_begin_transaction().

`MYSQLI_TRANS_START_READ_WRITE` (int)

  Start the transaction as "START TRANSACTION READ WRITE" with mysqli_begin_transaction().

`MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT` (int)

  Start the transaction as "START TRANSACTION WITH CONSISTENT SNAPSHOT".

`MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT` (int)

  Requires MySQL 5.6.5 and up.

`MYSQLI_IS_MARIADB` (bool)

  Whether the mysqli extension has been built against a MariaDB client library. Available as of PHP 8.1.2.

`MYSQLI_ASYNC` (int)
  The query is performed asynchronously and no result set is immediately returned. Available with `mysqlnd` only.
`MYSQLI_ON_UPDATE_NOW_FLAG` (int)
  If a field is updated it will get the current time value.

# Notes

Some implementation notes:

1. Support was added for `MYSQL_TYPE_GEOMETRY` to the MySQLi extension in PHP 5.3.

2. Note there are different internal implementations within `libmysqlclient` and `mysqlnd` for handling columns of type `MYSQL_TYPE_GEOMETRY`. Generally speaking, `mysqlnd` will allocate significantly less memory. For example, if there is a `POINT` column in a result set, `libmysqlclient` may pre-allocate up to 4GB of RAM although less than 50 bytes are needed for holding a `POINT` column in memory. Memory allocation is much lower, less than 50 bytes, if using `mysqlnd`.

# The MySQLi Extension Function Summary

Summary of mysqli methods
mysqli Class
OOP Interface | Procedural Interface | Alias (Do not use) | Description
--- | --- | --- | ---
Properties
$mysqli::affected_rows | mysqli_affected_rows() | N/A | Gets the number of affected rows in a previous MySQL operation
$mysqli::client_info | mysqli_get_client_info() | N/A | Returns the MySQL client version as a string
$mysqli::client_version | mysqli_get_client_version() | N/A | Returns MySQL client version info as an integer
$mysqli::connect_errno | mysqli_connect_errno() | N/A | Returns the error code from last connect call
$mysqli::connect_error | mysqli_connect_error() | N/A | Returns a string description of the last connect error
$mysqli::errno | mysqli_errno() | N/A | Returns the error code for the most recent function call
$mysqli::error | mysqli_error() | N/A | Returns a string description of the last error
$mysqli::field_count | mysqli_field_count() | N/A | Returns the number of columns for the most recent query
$mysqli::host_info | mysqli_get_host_info() | N/A | Returns a string representing the type of connection used
$mysqli::protocol_version | mysqli_get_proto_info() | N/A | Returns the version of the MySQL protocol used
$mysqli::server_info | mysqli_get_server_info() | N/A | Returns the version of the MySQL server
$mysqli::server_version | mysqli_get_server_version() | N/A | Returns the version of the MySQL server as an integer
$mysqli::info | mysqli_info() | N/A | Retrieves information about the most recently executed query
$mysqli::insert_id | mysqli_insert_id() | N/A | Returns the auto generated id used in the last query
$mysqli::sqlstate | mysqli_sqlstate() | N/A | Returns the SQLSTATE error from previous MySQL operation
$mysqli::warning_count | mysqli_warning_count() | N/A | Returns the number of warnings from the last query for the given link
Methods
mysqli::autocommit() | mysqli_autocommit() | N/A | Turns on or off auto-committing database modifications
mysqli::change_user() | mysqli_change_user() | N/A | Changes the user of the specified database connection
mysqli::character_set_name() | mysqli_character_set_name() | N/A | Returns the default character set for the database connection
mysqli::close() | mysqli_close() | N/A | Closes a previously opened database connection
mysqli::commit() | mysqli_commit() | N/A | Commits the current transaction
mysqli::__construct() | mysqli_connect() | N/A | Open a new connection to the MySQL server [Note: static (i.e. class) method]
mysqli::debug() | mysqli_debug() | N/A | Performs debugging operations
mysqli::dump_debug_info() | mysqli_dump_debug_info() | N/A | Dump debugging information into the log
mysqli::get_charset() | mysqli_get_charset() | N/A | Returns a character set object
mysqli::get_connection_stats() | mysqli_get_connection_stats() | N/A | Returns client connection statistics. Sadece mysqlnd ile kullanılabilir.
mysqli::get_client_info() | mysqli_get_client_info() | N/A | Returns the MySQL client version as a string
N/A | mysqli_get_client_stats() | N/A | Returns client per-process statistics. Sadece mysqlnd ile kullanılabilir.
mysqli::get_server_info() | mysqli_get_server_info() | N/A | Returns a string representing the version of the MySQL server that the MySQLi extension is connected to
mysqli::get_warnings() | mysqli_get_warnings() | N/A | NOT DOCUMENTED
mysqli::init() | mysqli_init() | N/A | Initializes MySQLi and returns an object for use with mysqli_real_connect.
mysqli::kill() | mysqli_kill() | N/A | Asks the server to kill a MySQL thread
mysqli::more_results() | mysqli_more_results() | N/A | Check if there are any more query results from a multi query
mysqli::multi_query() | mysqli_multi_query() | N/A | Performs a query on the database
mysqli::next_result() | mysqli_next_result() | N/A | Prepare next result from multi_query
mysqli::options() | mysqli_options() | mysqli_set_opt() | Set options
mysqli::ping() | mysqli_ping() | N/A | Pings a server connection, or tries to reconnect if the connection has gone down
mysqli::prepare() | mysqli_prepare() | N/A | Prepare an SQL statement for execution
mysqli::query() | mysqli_query() | N/A | Performs a query on the database
mysqli::real_connect() | mysqli_real_connect() | N/A | Opens a connection to a mysql server
mysqli::real_escape_string(), mysqli::escape_string() | mysqli_real_escape_string() | mysqli_escape_string() | Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
mysqli::real_query() | mysqli_real_query() | N/A | Execute an SQL query
mysqli::refresh() | mysqli_refresh() | N/A | Flushes tables or caches, or resets the replication server information
mysqli::rollback() | mysqli_rollback() | N/A | Rolls back current transaction
mysqli::select_db() | mysqli_select_db() | N/A | Selects the default database for database queries
mysqli::set_charset() | mysqli_set_charset() | N/A | Sets the default client character set
mysqli::ssl_set() | mysqli_ssl_set() | N/A | Used for establishing secure connections using SSL
mysqli::stat() | mysqli_stat() | N/A | Gets the current system status
mysqli::stmt_init() | mysqli_stmt_init() | N/A | Initializes a statement and returns an object for use with mysqli_stmt_prepare
mysqli::store_result() | mysqli_store_result() | N/A | Transfers a result set from the last query
mysqli::thread_id() | mysqli_thread_id() | N/A | Returns the thread ID for the current connection
mysqli::thread_safe() | mysqli_thread_safe() | N/A | Returns whether thread safety is given or not
mysqli::use_result() | mysqli_use_result() | N/A | Initiate a result set retrieval

Summary of mysqli_stmt methods
MySQL_STMT
OOP Interface | Procedural Interface | Alias (Do not use) | Description
--- | --- | --- | ---
Properties
$mysqli_stmt::affected_rows | mysqli_stmt_affected_rows() | N/A | Returns the total number of rows changed, deleted, or inserted by the last executed statement
$mysqli_stmt::errno | mysqli_stmt_errno() | N/A | Returns the error code for the most recent statement call
$mysqli_stmt::error | mysqli_stmt_error() | N/A | Returns a string description for last statement error
$mysqli_stmt::field_count | mysqli_stmt_field_count() | N/A | Returns the number of field in the given statement - not documented
$mysqli_stmt::insert_id | mysqli_stmt_insert_id() | N/A | Get the ID generated from the previous INSERT operation
$mysqli_stmt::num_rows | mysqli_stmt_num_rows() | N/A | Return the number of rows in statements result set
$mysqli_stmt::param_count | mysqli_stmt_param_count() | N/A | Returns the number of parameter for the given statement
$mysqli_stmt::sqlstate | mysqli_stmt_sqlstate() | N/A | Returns SQLSTATE error from previous statement operation
Methods
mysqli_stmt::attr_get() | mysqli_stmt_attr_get() | N/A | Used to get the current value of a statement attribute
mysqli_stmt::attr_set() | mysqli_stmt_attr_set() | N/A | Used to modify the behavior of a prepared statement
mysqli_stmt::bind_param() | mysqli_stmt_bind_param() | N/A | Binds variables to a prepared statement as parameters
mysqli_stmt::bind_result() | mysqli_stmt_bind_result() | N/A | Binds variables to a prepared statement for result storage
mysqli_stmt::close() | mysqli_stmt_close() | N/A | Closes a prepared statement
mysqli_stmt::data_seek() | mysqli_stmt_data_seek() | N/A | Seeks to an arbitrary row in statement result set
mysqli_stmt::execute() | mysqli_stmt_execute() | mysqli_execute() | Executes a prepared Query
mysqli_stmt::fetch() | mysqli_stmt_fetch() | N/A | Fetch results from a prepared statement into the bound variables
mysqli_stmt::free_result() | mysqli_stmt_free_result() | N/A | Frees stored result memory for the given statement handle
mysqli_stmt::get_result() | mysqli_stmt_get_result() | N/A | Gets a result set from a prepared statement. Sadece mysqlnd ile kullanılabilir.
mysqli_stmt::get_warnings() | mysqli_stmt_get_warnings() | N/A | NOT DOCUMENTED
mysqli_stmt::more_results() | mysqli_stmt_more_results() | N/A | Checks if there are more query results from a multiple query
mysqli_stmt::next_result() | mysqli_stmt_next_result() | N/A | Reads the next result from a multiple query
mysqli_stmt::num_rows() | mysqli_stmt_num_rows() | N/A | See also property $mysqli_stmt::num_rows
mysqli_stmt::prepare() | mysqli_stmt_prepare() | N/A | Prepare an SQL statement for execution
mysqli_stmt::reset() | mysqli_stmt_reset() | N/A | Resets a prepared statement
mysqli_stmt::result_metadata() | mysqli_stmt_result_metadata() | N/A | Returns result set metadata from a prepared statement
mysqli_stmt::send_long_data() | mysqli_stmt_send_long_data() | N/A | Send data in blocks
mysqli_stmt::store_result() | mysqli_stmt_store_result() | N/A | Transfers a result set from a prepared statement

Summary of mysqli_result methods
mysqli_result
OOP Interface | Procedural Interface | Alias (Do not use) | Description
--- | --- | --- | ---
Properties
$mysqli_result::current_field | mysqli_field_tell() | N/A | Get current field offset of a result pointer
$mysqli_result::field_count | mysqli_num_fields() | N/A | Get the number of fields in a result
$mysqli_result::lengths | mysqli_fetch_lengths() | N/A | Returns the lengths of the columns of the current row in the result set
$mysqli_result::num_rows | mysqli_num_rows() | N/A | Gets the number of rows in a result
Methods
mysqli_result::data_seek() | mysqli_data_seek() | N/A | Adjusts the result pointer to an arbitrary row in the result
mysqli_result::fetch_all() | mysqli_fetch_all() | N/A | Fetches all result rows and returns the result set as an associative array, a numeric array, or both. Sadece mysqlnd ile kullanılabilir.
mysqli_result::fetch_array() | mysqli_fetch_array() | N/A | Fetch a result row as an associative, a numeric array, or both
mysqli_result::fetch_assoc() | mysqli_fetch_assoc() | N/A | Fetch a result row as an associative array
mysqli_result::fetch_column() | mysqli_fetch_column() | N/A | Fetch a single column from the next row of a result set
mysqli_result::fetch_field_direct() | mysqli_fetch_field_direct() | N/A | Fetch meta-data for a single field
mysqli_result::fetch_field() | mysqli_fetch_field() | N/A | Returns the next field in the result set
mysqli_result::fetch_fields() | mysqli_fetch_fields() | N/A | Returns an array of objects representing the fields in a result set
mysqli_result::fetch_object() | mysqli_fetch_object() | N/A | Returns the current row of a result set as an object
mysqli_result::fetch_row() | mysqli_fetch_row() | N/A | Get a result row as an enumerated array
mysqli_result::field_seek() | mysqli_field_seek() | N/A | Set result pointer to a specified field offset
mysqli_result::free(), mysqli_result::close, mysqli_result::free_result | mysqli_free_result() | N/A | Frees the memory associated with a result

Summary of mysqli_driver methods
MySQL_Driver
OOP Interface | Procedural Interface | Alias (Do not use) | Description
--- | --- | --- | ---
Properties
$mysqli_driver::mysqli_report | mysqli_report() | N/A | Sets mysqli error reporting mode
Methods
mysqli_driver::embedded_server_end() | mysqli_embedded_server_end() | N/A | NOT DOCUMENTED
mysqli_driver::embedded_server_start() | mysqli_embedded_server_start() | N/A | NOT DOCUMENTED

> Bilginize:

> Alias functions are provided for backward compatibility purposes only. Do not use them in new projects.

# The mysqli class

(PHP 5, PHP 7, PHP 8)

## Giriş

Represents a connection between PHP and a MySQL database.

## Sınıf Sözdizimi

class mysqli {
/* Özellikler */
public readonly int|string $affected_rows;
public readonly string $client_info;
public readonly int $client_version;
public readonly int $connect_errno;
public readonly ?string $connect_error;
public readonly int $errno;
public readonly string $error;
public readonly array $error_list;
public readonly int $field_count;
public readonly string $host_info;
public readonly ?string $info;
public readonly int|string $insert_id;
public readonly string $server_info;
public readonly int $server_version;
public readonly string $sqlstate;
public readonly int $protocol_version;
public readonly int $thread_id;
public readonly int $warning_count;
/* Yöntemler */
public function __construct(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`
)
public function autocommit(bool `$enable`): bool
public function begin_transaction(int `$flags` = 0, ?string `$name` = `null`): bool
public function change_user(string `$username`, #[\SensitiveParameter]string `$password`, ?string `$database`): bool
public function character_set_name(): string
public function close(): true
public function commit(int `$flags` = 0, ?string `$name` = `null`): bool
public function connect(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`
): bool
public function debug(string `$options`): true
public function dump_debug_info(): bool
public function execute_query(string `$query`, ?array `$params` = `null`): mysqli_result|bool
public function get_charset(): ?object
#[\Deprecated]
public function get_client_info(): string
public function get_connection_stats(): array
public function get_server_info(): string
public function get_warnings(): mysqli_warning|false
#[\Deprecated]
public function init(): ?bool
#[\Deprecated]
public function kill(int `$process_id`): bool
public function more_results(): bool
public function multi_query(string `$query`): bool
public function next_result(): bool
public function options(int `$option`, string|int `$value`): bool
#[\Deprecated]
public function ping(): bool
public static function poll(
?array `&$read`,
?array `&$error`,
array `&$reject`,
int `$seconds`,
int `$microseconds` = 0
): int|false
public function prepare(string `$query`): mysqli_stmt|false
public function query(string `$query`, int `$result_mode` = MYSQLI_STORE_RESULT): mysqli_result|bool
public function real_connect(
?string `$hostname` = null,
?string `$username` = null,
#[\SensitiveParameter]?string `$password` = null,
?string `$database` = null,
?int `$port` = null,
?string `$socket` = null,
int `$flags` = 0
): bool
public function real_escape_string(string `$string`): string
public function real_query(string `$query`): bool
public function reap_async_query(): mysqli_result|bool
#[\Deprecated]
public function refresh(int `$flags`): bool
public function release_savepoint(string `$name`): bool
public function rollback(int `$flags` = 0, ?string `$name` = null): bool
public function savepoint(string `$name`): bool
public function select_db(string `$database`): bool
public function set_charset(string `$charset`): bool
public function ssl_set(
?string `$key`,
?string `$certificate`,
?string `$ca_certificate`,
?string `$ca_path`,
?string `$cipher_algos`
): true
public function stat(): string|false
public function stmt_init(): mysqli_stmt|false
public function store_result(int `$mode` = 0): mysqli_result|false
public function thread_safe(): bool
public function use_result(): mysqli_result|false
}

# mysqli::$affected_rows

# mysqli_affected_rows

(PHP 5, PHP 7, PHP 8)

mysqli::$affected_rows -- mysqli_affected_rows — Gets the number of affected rows in a previous MySQL operation

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli->affected_rows;

Yordamsal kullanım

function mysqli_affected_rows(mysqli `$mysql`): int|string

Returns the number of rows affected by the last `INSERT`, `UPDATE`, `REPLACE` or `DELETE` query. Works like mysqli_num_rows() for `SELECT` statements.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records were updated for an `UPDATE` statement, no rows matched the `WHERE` clause in the query or that no query has yet been executed. `-1` indicates that the query returned an error or that mysqli_affected_rows() was called for an unbuffered `SELECT` query.

> Bilginize:

> If the number of affected rows is greater than the maximum int value (`PHP_INT_MAX`), the number of affected rows will be returned as a string.

### Örnekler

Örnek 1 $mysqli->affected_rows example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* Insert rows */
    $mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage");
    printf("Affected rows (INSERT): %d\n", $mysqli->affected_rows);

    $mysqli->query("ALTER TABLE Language ADD Status int default 0");

    /* update rows */
    $mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50");
    printf("Affected rows (UPDATE): %d\n", $mysqli->affected_rows);

    /* delete rows */
    $mysqli->query("DELETE FROM Language WHERE Percentage < 50");
    printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows);

    /* select all rows */
    $result = $mysqli->query("SELECT CountryCode FROM Language");
    printf("Affected rows (SELECT): %d\n", $mysqli->affected_rows);

    /* Delete table Language */
    $mysqli->query("DROP TABLE Language");

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* Insert rows */
    mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage");
    printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link));

    mysqli_query($link, "ALTER TABLE Language ADD Status int default 0");

    /* update rows */
    mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
    printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

    /* delete rows */
    mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50");
    printf("Affected rows (DELETE): %d\n", mysqli_affected_rows($link));

    /* select all rows */
    $result = mysqli_query($link, "SELECT CountryCode FROM Language");
    printf("Affected rows (SELECT): %d\n", mysqli_affected_rows($link));

    /* Delete table Language */
    mysqli_query($link, "DROP TABLE Language");

Yukarıdaki örneklerin çıktısı:

    Affected rows (INSERT): 984
    Affected rows (UPDATE): 168
    Affected rows (DELETE): 815
    Affected rows (SELECT): 169

### Ayrıca Bakınız

- mysqli_num_rows() - Gets the number of rows in the result set
- mysqli_info() - Retrieves information about the most recently executed query

# mysqli::autocommit

# mysqli_autocommit

(PHP 5, PHP 7, PHP 8)

mysqli::autocommit -- mysqli_autocommit — Turns on or off auto-committing database modifications

### Açıklama

Nesne yönelimli kullanım

public function mysqli::autocommit(bool `$enable`): bool

Yordamsal kullanım

function mysqli_autocommit(mysqli `$mysql`, bool `$enable`): bool

Turns on or off auto-commit mode on queries for the database connection.

To determine the current state of autocommit use the SQL command `SELECT @@autocommit`.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`enable`

  Whether to turn on auto-commit or not.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::autocommit() example

Nesne yönelimli kullanım

    <?php

    /* Tell mysqli to throw an exception if an error occurs */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* The table engine has to support transactions */
    $mysqli->query("CREATE TABLE IF NOT EXISTS language (
        Code text NOT NULL,
        Speakers int(11) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

    /* Turn autocommit off */
    $mysqli->autocommit(false);

    $result = $mysqli->query("SELECT @@autocommit");
    $row = $result->fetch_row();
    printf("Autocommit is %s\n", $row[0]);

    try {
        /* Prepare insert statement */
        $stmt = $mysqli->prepare('INSERT INTO language(Code, Speakers) VALUES (?,?)');
        $stmt->bind_param('ss', $language_code, $native_speakers);

        /* Insert some values */
        $language_code = 'DE';
        $native_speakers = 50_123_456;
        $stmt->execute();
        $language_code = 'FR';
        $native_speakers = 40_546_321;
        $stmt->execute();

        /* Commit the data in the database. This doesn't set autocommit=true */
        $mysqli->commit();
        print "Committed 2 rows in the database\n";

        $result = $mysqli->query("SELECT @@autocommit");
        $row = $result->fetch_row();
        printf("Autocommit is %s\n", $row[0]);

        /* Try to insert more values */
        $language_code = 'PL';
        $native_speakers = 30_555_444;
        $stmt->execute();
        $language_code = 'DK';
        $native_speakers = 5_222_444;
        $stmt->execute();

        /* Setting autocommit=true will trigger a commit */
        $mysqli->autocommit(true);

        print "Committed 2 row in the database\n";
    } catch (mysqli_sql_exception $exception) {
        $mysqli->rollback();

        throw $exception;
    }

Yordamsal kullanım

    <?php

    /* Tell mysqli to throw an exception if an error occurs */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* The table engine has to support transactions */
    mysqli_query($mysqli, "CREATE TABLE IF NOT EXISTS language (
        Code text NOT NULL,
        Speakers int(11) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

    /* Turn autocommit off */
    mysqli_autocommit($mysqli, false);

    $result = mysqli_query($mysqli, "SELECT @@autocommit");
    $row = mysqli_fetch_row($result);
    printf("Autocommit is %s\n", $row[0]);

    try {
        /* Prepare insert statement */
        $stmt = mysqli_prepare($mysqli, 'INSERT INTO language(Code, Speakers) VALUES (?,?)');
        mysqli_stmt_bind_param($stmt, 'ss', $language_code, $native_speakers);

        /* Insert some values */
        $language_code = 'DE';
        $native_speakers = 50_123_456;
        mysqli_stmt_execute($stmt);
        $language_code = 'FR';
        $native_speakers = 40_546_321;
        mysqli_stmt_execute($stmt);

        /* Commit the data in the database. This doesn't set autocommit=true */
        mysqli_commit($mysqli);
        print "Committed 2 rows in the database\n";

        $result = mysqli_query($mysqli, "SELECT @@autocommit");
        $row = mysqli_fetch_row($result);
        printf("Autocommit is %s\n", $row[0]);

        /* Try to insert more values */
        $language_code = 'PL';
        $native_speakers = 30_555_444;
        mysqli_stmt_execute($stmt);
        $language_code = 'DK';
        $native_speakers = 5_222_444;
        mysqli_stmt_execute($stmt);

        /* Setting autocommit=true will trigger a commit */
        mysqli_autocommit($mysqli, true);

        print "Committed 2 row in the database\n";
    } catch (mysqli_sql_exception $exception) {
        mysqli_rollback($mysqli);

        throw $exception;
    }

Yukarıdaki örneklerin çıktısı:

    Autocommit is 0
    Committed 2 rows in the database
    Autocommit is 0
    Committed 2 row in the database
    Autocommit is 0
    Committed 2 rows in the database
    Autocommit is 0
    Committed 2 row in the database

### Notlar

> Bilginize:

> This function does not work with non transactional table types (like MyISAM or ISAM).

### Ayrıca Bakınız

- mysqli_begin_transaction() - Starts a transaction
- mysqli_commit() - Commits the current transaction
- mysqli_rollback() - Rolls back current transaction

# mysqli::begin_transaction

# mysqli_begin_transaction

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

mysqli::begin_transaction -- mysqli_begin_transaction — Starts a transaction

### Açıklama

Nesne yönelimli kullanım

public function mysqli::begin_transaction(int `$flags` = 0, ?string `$name` = `null`): bool

Yordamsal kullanım:

function mysqli_begin_transaction(mysqli `$mysql`, int `$flags` = 0, ?string `$name` = `null`): bool

Begins a transaction. Requires the InnoDB engine (it is enabled by default). For additional details about how MySQL transactions work, see » http://dev.mysql.com/doc/mysql/en/commit.html.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`flags`

  Valid flags are:

  - `MYSQLI_TRANS_START_READ_ONLY`: Start the transaction as "START TRANSACTION READ ONLY". Requires MySQL 5.6 and above.

  - `MYSQLI_TRANS_START_READ_WRITE`: Start the transaction as "START TRANSACTION READ WRITE". Requires MySQL 5.6 and above.

  - `MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT`: Start the transaction as "START TRANSACTION WITH CONSISTENT SNAPSHOT".

`name`

  Savepoint name for the transaction.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `name` is now nullable.

### Örnekler

Örnek 1 mysqli::begin_transaction() example

Nesne yönelimli kullanım

    <?php

    /* Tell mysqli to throw an exception if an error occurs */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* The table engine has to support transactions */
    $mysqli->query("CREATE TABLE IF NOT EXISTS language (
        Code text NOT NULL,
        Speakers int(11) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

    /* Start transaction */
    $mysqli->begin_transaction();

    try {
        /* Insert some values */
        $mysqli->query("INSERT INTO language(Code, Speakers) VALUES ('DE', 42000123)");

        /* Try to insert invalid values */
        $language_code = 'FR';
        $native_speakers = 'Unknown';
        $stmt = $mysqli->prepare('INSERT INTO language(Code, Speakers) VALUES (?,?)');
        $stmt->bind_param('ss', $language_code, $native_speakers);
        $stmt->execute();

        /* If code reaches this point without errors then commit the data in the database */
        $mysqli->commit();
    } catch (mysqli_sql_exception $exception) {
        $mysqli->rollback();

        throw $exception;
    }

Yordamsal kullanım

    <?php

    /* Tell mysqli to throw an exception if an error occurs */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* The table engine has to support transactions */
    mysqli_query($mysqli, "CREATE TABLE IF NOT EXISTS language (
        Code text NOT NULL,
        Speakers int(11) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

    /* Start transaction */
    mysqli_begin_transaction($mysqli);

    try {
        /* Insert some values */
        mysqli_query($mysqli, "INSERT INTO language(Code, Speakers) VALUES ('DE', 42000123)");

        /* Try to insert invalid values */
        $language_code = 'FR';
        $native_speakers = 'Unknown';
        $stmt = mysqli_prepare($mysqli, 'INSERT INTO language(Code, Speakers) VALUES (?,?)');
        mysqli_stmt_bind_param($stmt, 'ss', $language_code, $native_speakers);
        mysqli_stmt_execute($stmt);

        /* If code reaches this point without errors then commit the data in the database */
        mysqli_commit($mysqli);
    } catch (mysqli_sql_exception $exception) {
        mysqli_rollback($mysqli);

        throw $exception;
    }

### Notlar

> Bilginize:

> This function does not work with non transactional table types (like MyISAM or ISAM).

### Ayrıca Bakınız

- mysqli_autocommit() - Turns on or off auto-committing database modifications
- mysqli_commit() - Commits the current transaction
- mysqli_rollback() - Rolls back current transaction

# mysqli::change_user

# mysqli_change_user

(PHP 5, PHP 7, PHP 8)

mysqli::change_user -- mysqli_change_user — Changes the user of the database connection

### Açıklama

Nesne yönelimli kullanım

public function mysqli::change_user(string `$username`, #[\SensitiveParameter]string `$password`, ?string `$database`): bool

Yordamsal kullanım

function mysqli_change_user(
mysqli `$mysql`,
string `$username`,
#[\SensitiveParameter]string `$password`,
?string `$database`
): bool

Attempts to connect to the specified database using the provided credentials.

In comparison to mysqli::connect(), this method will not disconnect the current connection if the new connection cannot be opened.

In order to successfully change users a valid `username` and `password` parameters must be provided and that user must have sufficient permissions to access the desired database. If for any reason authorization fails, the current user authentication will remain.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`username`

  The MySQL user name.

`password`

  The MySQL password.

`database`

  The database name. If `null` or an empty string is passed, the connection to the server will be opened with no default database.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Resetting the connection session

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    $mysqli->query("SET @a:=1");

    $mysqli->change_user("my_user", "my_password", "world");

    $result = $mysqli->query("SELECT DATABASE()");
    $row = $result->fetch_row();
    printf("Default database: %s\n", $row[0]);

    $result = $mysqli->query("SELECT @a");
    $row = $result->fetch_row();
    if ($row[0] === null) {
        printf("Value of variable a is NULL\n");
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "test");

    mysqli_query($link, "SET @a:=1");

    mysqli_change_user($link, "my_user", "my_password", "world");

    $result = mysqli_query($link, "SELECT DATABASE()");
    $row = mysqli_fetch_row($result);
    printf("Default database: %s\n", $row[0]);

    $result = mysqli_query($link, "SELECT @a");
    $row = mysqli_fetch_row($result);
    if ($row[0] === null) {
        printf("Value of variable a is NULL\n");
    }

Yukarıdaki örneklerin çıktısı:

    Default database: world
    Value of variable a is NULL

Örnek 2 If `database` is `null` the connection is opened without selecting any default database

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    $mysqli->change_user("my_user", "my_password", null);

    $result = $mysqli->query("SELECT DATABASE()");
    $row = $result->fetch_row();
    printf("Default database: %s\n", $row[0]);

Yukarıdaki örneklerin çıktısı:

    Default database:

### Notlar

> Bilginize:

> Using this command will always cause the current database connection to behave as if was a completely new database connection, regardless of if the operation was completed successfully. This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.

### Ayrıca Bakınız

- mysqli_connect() - Takma Adı: mysqli::__construct
- mysqli_select_db() - Selects the default database for database queries

# mysqli::character_set_name

# mysqli_character_set_name

(PHP 5, PHP 7, PHP 8)

mysqli::character_set_name -- mysqli_character_set_name — Returns the current character set of the database connection

### Açıklama

Nesne yönelimli kullanım

public function mysqli::character_set_name(): string

Yordamsal kullanım

function mysqli_character_set_name(mysqli `$mysql`): string

Returns the current character set of the database connection.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

The current character set of the connection

### Örnekler

Örnek 1 mysqli::character_set_name() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* Set the default character set */
    $mysqli->set_charset('utf8mb4');

    /* Print current character set */
    $charset = $mysqli->character_set_name();
    printf("Current character set is %s\n", $charset);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* Set the default character set */
    mysqli_set_charset($mysqli, 'utf8mb4');

    /* Print current character set */
    $charset = mysqli_character_set_name($mysqli);
    printf("Current character set is %s\n", $charset);

Yukarıdaki örneklerin çıktısı:

    Current character set is utf8mb4

### Ayrıca Bakınız

- mysqli_set_charset() - Sets the client character set
- mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

# mysqli::close

# mysqli_close

(PHP 5, PHP 7, PHP 8)

mysqli::close -- mysqli_close — Closes a previously opened database connection

### Açıklama

Nesne yönelimli kullanım

public function mysqli::close(): true

Yordamsal kullanım

function mysqli_close(mysqli `$mysql`): true

Closes a previously opened database connection.

Open non-persistent MySQL connections and result sets are automatically closed when their objects are destroyed. Explicitly closing open connections and freeing result sets is optional. However, it's a good idea to close the connection as soon as the script finishes performing all of its database operations, if it still has a lot of processing to do after getting the results.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function now always returns `true`. Previously it returned `false` on failure.

### Örnekler

Örnek 1 mysqli::close() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $result = $mysqli->query("SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3");

    /* Close the connection as soon as it's no longer needed */
    $mysqli->close();

    foreach ($result as $row) {
        /* Processing of the data retrieved from the database */
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $result = mysqli_query($mysqli, "SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3");

    /* Close the connection as soon as it's no longer needed */
    mysqli_close($mysqli);

    foreach ($result as $row) {
        /* Processing of the data retrieved from the database */
    }

### Notlar

> Bilginize:

> mysqli_close() will not close persistent connections. For additional details, see the manual page on persistent connections.

### Ayrıca Bakınız

- mysqli::__construct() - Open a new connection to the MySQL server
- mysqli_init() - Initializes MySQLi and returns an object for use with mysqli_real_connect()
- mysqli_real_connect() - Opens a connection to the MySQL server
- mysqli_free_result() - Frees the memory associated with a result

# mysqli::commit

# mysqli_commit

(PHP 5, PHP 7, PHP 8)

mysqli::commit -- mysqli_commit — Commits the current transaction

### Açıklama

Nesne yönelimli kullanım

public function mysqli::commit(int `$flags` = 0, ?string `$name` = `null`): bool

Yordamsal kullanım

function mysqli_commit(mysqli `$mysql`, int `$flags` = 0, ?string `$name` = `null`): bool

Commits the current transaction for the database connection.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`flags`

  A bitmask of `MYSQLI_TRANS_COR_*` constants.

`name`

  If provided then `COMMIT/*name*/` is executed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `name` is now nullable.

### Örnekler

See the mysqli::begin_transaction() example.

### Notlar

> Bilginize:

> This function does not work with non transactional table types (like MyISAM or ISAM).

### Ayrıca Bakınız

- mysqli_autocommit() - Turns on or off auto-committing database modifications
- mysqli_begin_transaction() - Starts a transaction
- mysqli_rollback() - Rolls back current transaction
- mysqli_savepoint() - Set a named transaction savepoint

# mysqli::$connect_errno

# mysqli_connect_errno

(PHP 5, PHP 7, PHP 8)

mysqli::$connect_errno -- mysqli_connect_errno — Returns the error code from last connect call

### Açıklama

Nesne yönelimli kullanım

int $mysqli->connect_errno;

Yordamsal kullanım

function mysqli_connect_errno(): int

Returns the error code from the last connection attempt.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An error code for the last connection attempt, if it failed. Zero means no error occurred.

Returns the last connection error code regardless of the instance on which it is called.

### Örnekler

Örnek 1 $mysqli->connect_errno example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_OFF);
    /* @ is used to suppress warnings */
    $mysqli = @new mysqli('localhost', 'fake_user', 'wrong_password', 'does_not_exist');
    if ($mysqli->connect_errno) {
        /* Use your preferred error logging method here */
        error_log('Connection error: ' . $mysqli->connect_errno);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_OFF);
    /* @ is used to suppress warnings */
    $link = @mysqli_connect('localhost', 'fake_user', 'wrong_password', 'does_not_exist');
    if (!$link) {
        /* Use your preferred error logging method here */
        error_log('Connection error: ' . mysqli_connect_errno());
    }

### Ayrıca Bakınız

- mysqli_connect() - Takma Adı: mysqli::__construct
- mysqli_connect_error() - Returns a description of the last connection error
- mysqli_errno() - Returns the error code for the most recent function call
- mysqli_error() - Returns a string description of the last error
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

# mysqli::$connect_error

# mysqli_connect_error

(PHP 5, PHP 7, PHP 8)

mysqli::$connect_error -- mysqli_connect_error — Returns a description of the last connection error

### Açıklama

Nesne yönelimli kullanım

?string $mysqli->connect_error;

Yordamsal kullanım

function mysqli_connect_error(): ?string

Returns the error message from the last connection attempt.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A string that describes the error. `null` is returned if no error occurred.

Returns the last connection error regardless of the instance on which it is called.

### Örnekler

Örnek 1 $mysqli->connect_error example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_OFF);
    /* @ is used to suppress warnings */
    $mysqli = @new mysqli('localhost', 'fake_user', 'wrong_password', 'does_not_exist');
    if ($mysqli->connect_error) {
        /* Use your preferred error logging method here */
        error_log('Connection error: ' . $mysqli->connect_error);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_OFF);
    /* @ is used to suppress warnings */
    $link = @mysqli_connect('localhost', 'fake_user', 'wrong_password', 'does_not_exist');
    if (!$link) {
        /* Use your preferred error logging method here */
        error_log('Connection error: ' . mysqli_connect_error());
    }

### Ayrıca Bakınız

- mysqli_connect() - Takma Adı: mysqli::__construct
- mysqli_connect_errno() - Returns the error code from last connect call
- mysqli_errno() - Returns the error code for the most recent function call
- mysqli_error() - Returns a string description of the last error
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

# mysqli::__construct

# mysqli::connect

# mysqli_connect

(PHP 5, PHP 7, PHP 8)

mysqli::__construct -- mysqli::connect -- mysqli_connect — Open a new connection to the MySQL server

### Açıklama

Nesne yönelimli kullanım

public function mysqli::__construct(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`
)
public function mysqli::connect(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`
): bool

Yordamsal kullanım

function mysqli_connect(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`
): mysqli|false

Opens a connection to the MySQL Server.

### Bağımsız Değişkenler

`hostname`

  Can be either a host name or an IP address. When passing `null`, the value is retrieved from mysqli.default_host. When possible, pipes will be used instead of the TCP/IP protocol. The TCP/IP protocol is used if a host name and port number are provided together e.g. `localhost:3308`.

  Prepending host by `p:` opens a persistent connection. mysqli_change_user() is automatically called on connections opened from the connection pool.

`username`

  The MySQL username or `null` to assume the username based on the mysqli.default_user ini option.

`password`

  The MySQL password or `null` to assume the password based on the mysqli.default_pw ini option.

`database`

  The default database to be used when performing queries or `null`.

`port`

  The port number to attempt to connect to the MySQL server or `null` to assume the port based on the mysqli.default_port ini option.

`socket`

  The socket or named pipe that should be used or `null` to assume the socket based on the mysqli.default_socket ini option.

  > Bilginize:

  > Specifying the `socket` parameter will not explicitly determine the type of connection to be used when connecting to the MySQL server. How the connection is made to the MySQL database is determined by the `hostname` parameter.

### Dönen Değerler

mysqli::__construct() always returns an object which represents the connection to a MySQL Server, regardless of it being successful or not.

mysqli_connect() returns an object which represents the connection to a MySQL Server, başarısızlık durumunda `false` döner.

mysqli::connect() returns `true` on success başarısızlık durumunda `false` döner. Prior to PHP 8.1.0, returns `null` on success.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | mysqli::connect() now returns `true` instead of `null` on success.
7.4.0 | All parameters are now nullable.

### Örnekler

Örnek 1 mysqli::__construct() example

Nesne yönelimli kullanım

    <?php

    /* You should enable error reporting for mysqli before attempting to make a connection */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

    /* Set the desired charset after establishing a connection */
    $mysqli->set_charset('utf8mb4');

    printf("Success... %s\n", $mysqli->host_info);

Yordamsal kullanım

    <?php

    /* You should enable error reporting for mysqli before attempting to make a connection */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    $mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

    /* Set the desired charset after establishing a connection */
    mysqli_set_charset($mysqli, 'utf8mb4');

    printf("Success... %s\n", mysqli_get_host_info($mysqli));

The above examples will output something similar to:

    Success... localhost via TCP/IP

Örnek 2 Extending mysqli class

    <?php

    class FooMysqli extends mysqli {
        public function __construct($host, $user, $pass, $db, $port, $socket, $charset) {
            mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
            parent::__construct($host, $user, $pass, $db, $port, $socket);
            $this->set_charset($charset);
        }
    }

    $db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');

Örnek 3 Manual error handling

If error reporting is disabled, the developer is responsible for checking and handling failures

Nesne yönelimli kullanım

    <?php

    error_reporting(0);
    mysqli_report(MYSQLI_REPORT_OFF);
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
    if ($mysqli->connect_errno) {
        throw new RuntimeException('mysqli connection error: ' . $mysqli->connect_error);
    }

    /* Set the desired charset after establishing a connection */
    $mysqli->set_charset('utf8mb4');
    if ($mysqli->errno) {
        throw new RuntimeException('mysqli error: ' . $mysqli->error);
    }

Yordamsal kullanım

    <?php

    error_reporting(0);
    mysqli_report(MYSQLI_REPORT_OFF);
    $mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
    if (mysqli_connect_errno()) {
        throw new RuntimeException('mysqli connection error: ' . mysqli_connect_error());
    }

    /* Set the desired charset after establishing a connection */
    mysqli_set_charset($mysqli, 'utf8mb4');
    if (mysqli_errno($mysqli)) {
        throw new RuntimeException('mysqli error: ' . mysqli_error($mysqli));
    }

### Notlar

> Bilginize:

> MySQLnd daima sunucunun öntanımlı bir karakter kümesi olduğunu varsayar. Bu karakter kümesi, mysqlnd'nin kullanacağı uzlaşım/kimlik doğrulama bağlantısı sırasında gönderilir.

> Libmysqlclient, ya my.cnf dosyasındaki öntanımlı karakter kümesini ya da mysqli_init() çağrısından sonraki ilk mysqli_real_connect() çağrısından önce çağrılan mysqli_options() işlevinde belirtilen karakter kümesini kullanır.

> Bilginize:

> Nesne yönelimli kullanım only: If the connection fails, an object is still returned. To check whether the connection failed, use either the mysqli_connect_error() function or the mysqli->connect_error property as in the preceding examples.

> Bilginize:

> If it is necessary to set options, such as the connection timeout, mysqli_real_connect() must be used instead.

> Bilginize:

> Calling the constructor with no parameters is the same as calling mysqli_init().

> Bilginize:

> Error "Can't create TCP/IP socket (10106)" usually means that the variables_order configure directive doesn't contain character `E`. On Windows, if the environment is not copied the `SYSTEMROOT` environment variable won't be available and PHP will have problems loading Winsock.

### Ayrıca Bakınız

- mysqli_real_connect() - Opens a connection to the MySQL server
- mysqli_options() - Set options
- mysqli_connect_errno() - Returns the error code from last connect call
- mysqli_connect_error() - Returns a description of the last connection error
- mysqli_close() - Closes a previously opened database connection

# mysqli::debug

# mysqli_debug

(PHP 5, PHP 7, PHP 8)

mysqli::debug -- mysqli_debug — Performs debugging operations

### Açıklama

Nesne yönelimli kullanım

public function mysqli::debug(string `$options`): true

Yordamsal kullanım

function mysqli_debug(string `$options`): true

Performs debugging operations using the Fred Fish debugging library.

### Bağımsız Değişkenler

`options`

  A string representing the debugging operation to perform

  The debug control string is a sequence of colon separated fields as follows: ``

      <field_1>:<field_2>:<field_N>

  Each field consists of a mandatory flag character followed by an optional `,` and comma separated list of modifiers: `flag[,modifier,modifier,...,modifier]`

  Recognized Flag Characters
  `options` character | Description
  --- | ---
  O | `MYSQLND_DEBUG_FLUSH`
  A/a | `MYSQLND_DEBUG_APPEND`
  F | `MYSQLND_DEBUG_DUMP_FILE`
  i | `MYSQLND_DEBUG_DUMP_PID`
  L | `MYSQLND_DEBUG_DUMP_LINE`
  m | `MYSQLND_DEBUG_TRACE_MEMORY_CALLS`
  n | `MYSQLND_DEBUG_DUMP_LEVEL`
  o | output to file
  T | `MYSQLND_DEBUG_DUMP_TIME`
  t | `MYSQLND_DEBUG_DUMP_TRACE`
  x | `MYSQLND_DEBUG_PROFILE_CALLS`

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function now always returns `true`. Previously it returned `false` on failure.

### Örnekler

Örnek 1 Generating a Trace File

    <?php

    /* Create a trace file in '/tmp/client.trace' on the local (client) machine: */
    mysqli_debug("d:t:o,/tmp/client.trace");

    ?>

### Notlar

> Bilginize:

> To use the mysqli_debug() function you must compile the MySQL client library to support debugging.

### Ayrıca Bakınız

- mysqli_dump_debug_info() - Dump debugging information into the log
- mysqli_report() - Takma Adı: mysqli_driver->report_mode

# mysqli::dump_debug_info

# mysqli_dump_debug_info

(PHP 5, PHP 7, PHP 8)

mysqli::dump_debug_info -- mysqli_dump_debug_info — Dump debugging information into the log

### Açıklama

Nesne yönelimli kullanım

public function mysqli::dump_debug_info(): bool

Yordamsal kullanım

function mysqli_dump_debug_info(mysqli `$mysql`): bool

This function is designed to be executed by an user with the SUPER privilege and is used to dump debugging information into the log for the MySQL Server relating to the connection.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mysqli_debug() - Performs debugging operations

# mysqli::$errno

# mysqli_errno

(PHP 5, PHP 7, PHP 8)

mysqli::$errno -- mysqli_errno — Returns the error code for the most recent function call

### Açıklama

Nesne yönelimli kullanım

int $mysqli->errno;

Yordamsal kullanım

function mysqli_errno(mysqli `$mysql`): int

Returns the last error code for the most recent MySQLi function call that can succeed or fail.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

An error code value for the last call, if it failed. zero means no error occurred.

### Örnekler

Örnek 1 $mysqli->errno example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

    if (!$mysqli->query("SET a=1")) {
        printf("Errorcode: %d\n", $mysqli->errno);
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if (!mysqli_query($link, "SET a=1")) {
        printf("Errorcode: %d\n", mysqli_errno($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Errorcode: 1193

### Ayrıca Bakınız

- mysqli_connect_errno() - Returns the error code from last connect call
- mysqli_connect_error() - Returns a description of the last connection error
- mysqli_error() - Returns a string description of the last error
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

# mysqli::$error

# mysqli_error

(PHP 5, PHP 7, PHP 8)

mysqli::$error -- mysqli_error — Returns a string description of the last error

### Açıklama

Nesne yönelimli kullanım

string $mysqli->error;

Yordamsal kullanım

function mysqli_error(mysqli `$mysql`): string

Returns the last error message for the most recent MySQLi function call that can succeed or fail.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A string that describes the error. An empty string if no error occurred.

### Örnekler

Örnek 1 $mysqli->error example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

    if (!$mysqli->query("SET a=1")) {
        printf("Error message: %s\n", $mysqli->error);
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if (!mysqli_query($link, "SET a=1")) {
        printf("Error message: %s\n", mysqli_error($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error message: Unknown system variable 'a'

### Ayrıca Bakınız

- mysqli_connect_errno() - Returns the error code from last connect call
- mysqli_connect_error() - Returns a description of the last connection error
- mysqli_errno() - Returns the error code for the most recent function call
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

# mysqli::$error_list

# mysqli_error_list

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

mysqli::$error_list -- mysqli_error_list — Returns a list of errors from the last command executed

### Açıklama

Nesne yönelimli kullanım

array $mysqli->error_list;

Yordamsal kullanım

function mysqli_error_list(mysqli `$mysql`): array

Returns an array of errors for the most recent MySQLi function call that can succeed or fail.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A list of errors, each as an associative array containing the errno, error, and sqlstate.

### Örnekler

Örnek 1 $mysqli->error_list example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "nobody", "");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if (!$mysqli->query("SET a=1")) {
        print_r($mysqli->error_list);
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if (!mysqli_query($link, "SET a=1")) {
        print_r(mysqli_error_list($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Array
    (
        [0] => Array
            (
                [errno] => 1193
                [sqlstate] => HY000
                [error] => Unknown system variable 'a'
            )

    )

### Ayrıca Bakınız

- mysqli_connect_errno() - Returns the error code from last connect call
- mysqli_connect_error() - Returns a description of the last connection error
- mysqli_error() - Returns a string description of the last error
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

# mysqli::execute_query

# mysqli_execute_query

(PHP 8 >= 8.2.0)

mysqli::execute_query -- mysqli_execute_query — Prepares, binds parameters, and executes SQL statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli::execute_query(string `$query`, ?array `$params` = `null`): mysqli_result|bool

Yordamsal kullanım

function mysqli_execute_query(mysqli `$mysql`, string `$query`, ?array `$params` = `null`): mysqli_result|bool

Prepares the SQL query, binds parameters, and executes it. The mysqli::execute_query() method is a shortcut for mysqli::prepare(), mysqli_stmt::bind_param(), mysqli_stmt::execute(), and mysqli_stmt::get_result().

The statement template can contain zero or more question mark (`?`) parameter markers⁠—also called placeholders. The parameter values must be provided as an array using `params` parameter.

A prepared statement is created under the hood but it's never exposed outside of the function. It's impossible to access properties of the statement as one would do with the mysqli_stmt object. Due to this limitation, the status information is copied to the mysqli object and is available using its methods, e.g. mysqli_affected_rows() or mysqli_error().

> Bilginize:

> In the case where a statement is passed to mysqli_execute_query() that is longer than `max_allowed_packet` of the server, the returned error codes are different depending on the operating system. The behavior is as follows:

> - On Linux returns an error code of 1153. The error message means got a packet bigger than `max_allowed_packet` bytes.

> - On Windows returns an error code 2006. This error message means server has gone away.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`query`

  The query, as a string. It must consist of a single SQL statement.

  The SQL statement may contain zero or more parameter markers represented by question mark (`?`) characters at the appropriate positions.

  > Bilginize:

  > The markers are legal only in certain places in SQL statements. For example, they are permitted in the `VALUES()` list of an `INSERT` statement (to specify column values for a row), or in a comparison with a column in a `WHERE` clause to specify a comparison value. However, they are not permitted for identifiers (such as table or column names).

`params`

  An optional list array with as many elements as there are bound parameters in the SQL statement being executed. Each value is treated as a string.

### Dönen Değerler

Returns `false` on failure. For successful queries which produce a result set, such as `SELECT, SHOW, DESCRIBE` or `EXPLAIN`, returns a mysqli_result object. For other successful queries, returns `true`.

### Örnekler

Örnek 1 mysqli::execute_query() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

    $query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
    $result = $mysqli->execute_query($query, ['DEU']);
    foreach ($result as $row) {
        printf("%s (%s)\n", $row["Name"], $row["District"]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
    $result = mysqli_execute_query($link, $query, ['DEU']);
    foreach ($result as $row) {
        printf("%s (%s)\n", $row["Name"], $row["District"]);
    }

The above examples will output something similar to:

    Aachen (Nordrhein-Westfalen)
    Augsburg (Baijeri)
    Bergisch Gladbach (Nordrhein-Westfalen)
    Berlin (Berliini)
    Bielefeld (Nordrhein-Westfalen)

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object

# mysqli::$field_count

# mysqli_field_count

(PHP 5, PHP 7, PHP 8)

mysqli::$field_count -- mysqli_field_count — Returns the number of columns for the most recent query

### Açıklama

Nesne yönelimli kullanım

int $mysqli->field_count;

Yordamsal kullanım

function mysqli_field_count(mysqli `$mysql`): int

Returns the number of columns for the most recent query on the connection represented by the `mysql` parameter. This function can be useful when using the mysqli_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

An integer representing the number of fields in a result set.

### Örnekler

Örnek 1 $mysqli->field_count example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    $mysqli->query( "DROP TABLE IF EXISTS friends");
    $mysqli->query( "CREATE TABLE friends (id int, name varchar(20))");

    $mysqli->query( "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

    $mysqli->real_query("SELECT * FROM friends");

    if ($mysqli->field_count) {
        /* this was a select/show or describe query */
        $result = $mysqli->store_result();

        /* process resultset */
        $row = $result->fetch_row();

        /* free resultset */
        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "test");

    mysqli_query($link, "DROP TABLE IF EXISTS friends");
    mysqli_query($link, "CREATE TABLE friends (id int, name varchar(20))");

    mysqli_query($link, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

    mysqli_real_query($link, "SELECT * FROM friends");

    if (mysqli_field_count($link)) {
        /* this was a select/show or describe query */
        $result = mysqli_store_result($link);

        /* process resultset */
        $row = mysqli_fetch_row($result);

        /* free resultset */
        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

# mysqli::get_charset

# mysqli_get_charset

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

mysqli::get_charset -- mysqli_get_charset — Returns a character set object

### Açıklama

Nesne yönelimli kullanım

public function mysqli::get_charset(): ?object

Yordamsal kullanım

function mysqli_get_charset(mysqli `$mysql`): ?object

Returns a character set object providing several properties of the current active character set.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

The function returns a character set object with the following properties:

`charset`

  Character set name

`collation`

  Collation name

`dir`

  Directory the character set description was fetched from or "" for built-in character sets

`min_length`

  Minimum character length in bytes

`max_length`

  Maximum character length in bytes

`number`

  Internal character set number

`state`

  As of PHP 8.2.0, it is always `1`

### Örnekler

Örnek 1 mysqli::get_charset() example

Nesne yönelimli kullanım

    <?php
      $db = mysqli_init();
      $db->real_connect("localhost","root","","test");
      $db->set_charset('latin1');
      var_dump($db->get_charset());
    ?>

Yordamsal kullanım

    <?php
      $db = mysqli_init();
      mysqli_real_connect($db, "localhost","root","","test");
      mysqli_set_charset($db, 'latin1');
      var_dump(mysqli_get_charset($db));
    ?>

Yukarıdaki örneklerin çıktısı:

    object(stdClass)#2 (7) {
      ["charset"]=>
      string(6) "latin1"
      ["collation"]=>
      string(17) "latin1_swedish_ci"
      ["dir"]=>
      string(0) ""
      ["min_length"]=>
      int(1)
      ["max_length"]=>
      int(1)
      ["number"]=>
      int(8)
      ["state"]=>
      int(1)
    }

### Ayrıca Bakınız

- mysqli_character_set_name() - Returns the current character set of the database connection
- mysqli_set_charset() - Sets the client character set

# mysqli::$client_info

# mysqli::get_client_info

# mysqli_get_client_info

(PHP 5, PHP 7, PHP 8)

mysqli::$client_info -- mysqli::get_client_info -- mysqli_get_client_info — Get MySQL client info

### Açıklama

Nesne yönelimli kullanım

string $mysqli->client_info;
#[\Deprecated]
public function mysqli::get_client_info(): string

Yordamsal kullanım

function mysqli_get_client_info(?mysqli `$mysql` = null): string

Returns a string that represents the MySQL client library version.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A string that represents the MySQL client library version.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Calling mysqli_get_client_info() with the `mysql` argument has been deprecated. This function never required a parameter, but incorrectly allowed it as an optional parameter.
8.1.0 | The object-oriented style mysqli::get_client_info() has been deprecated.

### Örnekler

Örnek 1 mysqli_get_client_info

    <?php

    /* We don't need a connection to determine
       the version of mysql client library */

    printf("Client library version: %s\n", mysqli_get_client_info());
    ?>

### Ayrıca Bakınız

- mysqli_get_client_version() - Returns the MySQL client version as an integer
- mysqli_get_server_info() - Returns the version of the MySQL server
- mysqli_get_server_version() - Returns the version of the MySQL server as an integer

# mysqli::$client_version

# mysqli_get_client_version

(PHP 5, PHP 7, PHP 8)

mysqli::$client_version -- mysqli_get_client_version — Returns the MySQL client version as an integer

### Açıklama

Nesne yönelimli kullanım

int $mysqli->client_version;

Yordamsal kullanım

function mysqli_get_client_version(): int

Returns client version number as an integer.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A number that represents the MySQL client library version in format: `main_version*10000 + minor_version *100 + sub_version`. For example, 4.1.0 is returned as 40100.

This is useful to quickly determine the version of the client library to know if some capability exists.

### Örnekler

Örnek 1 mysqli_get_client_version

    <?php

    /* We don't need a connection to determine
       the version of mysql client library */

    printf("Client library version: %d\n", mysqli_get_client_version());
    ?>

### Ayrıca Bakınız

- mysqli_get_client_info() - Get MySQL client info
- mysqli_get_server_info() - Returns the version of the MySQL server
- mysqli_get_server_version() - Returns the version of the MySQL server as an integer

# mysqli::get_connection_stats

# mysqli_get_connection_stats

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::get_connection_stats -- mysqli_get_connection_stats — Returns statistics about the client connection

### Açıklama

Nesne yönelimli kullanım

public function mysqli::get_connection_stats(): array

Yordamsal kullanım

function mysqli_get_connection_stats(mysqli `$mysql`): array

Returns statistics about the client connection.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns an array with connection stats.

### Örnekler

Örnek 1 A mysqli_get_connection_stats() example

    <?php
    $link = mysqli_connect();
    print_r(mysqli_get_connection_stats($link));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [bytes_sent] => 43
        [bytes_received] => 80
        [packets_sent] => 1
        [packets_received] => 2
        [protocol_overhead_in] => 8
        [protocol_overhead_out] => 4
        [bytes_received_ok_packet] => 11
        [bytes_received_eof_packet] => 0
        [bytes_received_rset_header_packet] => 0
        [bytes_received_rset_field_meta_packet] => 0
        [bytes_received_rset_row_packet] => 0
        [bytes_received_prepare_response_packet] => 0
        [bytes_received_change_user_packet] => 0
        [packets_sent_command] => 0
        [packets_received_ok] => 1
        [packets_received_eof] => 0
        [packets_received_rset_header] => 0
        [packets_received_rset_field_meta] => 0
        [packets_received_rset_row] => 0
        [packets_received_prepare_response] => 0
        [packets_received_change_user] => 0
        [result_set_queries] => 0
        [non_result_set_queries] => 0
        [no_index_used] => 0
        [bad_index_used] => 0
        [slow_queries] => 0
        [buffered_sets] => 0
        [unbuffered_sets] => 0
        [ps_buffered_sets] => 0
        [ps_unbuffered_sets] => 0
        [flushed_normal_sets] => 0
        [flushed_ps_sets] => 0
        [ps_prepared_never_executed] => 0
        [ps_prepared_once_executed] => 0
        [rows_fetched_from_server_normal] => 0
        [rows_fetched_from_server_ps] => 0
        [rows_buffered_from_client_normal] => 0
        [rows_buffered_from_client_ps] => 0
        [rows_fetched_from_client_normal_buffered] => 0
        [rows_fetched_from_client_normal_unbuffered] => 0
        [rows_fetched_from_client_ps_buffered] => 0
        [rows_fetched_from_client_ps_unbuffered] => 0
        [rows_fetched_from_client_ps_cursor] => 0
        [rows_skipped_normal] => 0
        [rows_skipped_ps] => 0
        [copy_on_write_saved] => 0
        [copy_on_write_performed] => 0
        [command_buffer_too_small] => 0
        [connect_success] => 1
        [connect_failure] => 0
        [connection_reused] => 0
        [reconnect] => 0
        [pconnect_success] => 0
        [active_connections] => 1
        [active_persistent_connections] => 0
        [explicit_close] => 0
        [implicit_close] => 0
        [disconnect_close] => 0
        [in_middle_of_command_close] => 0
        [explicit_free_result] => 0
        [implicit_free_result] => 0
        [explicit_stmt_close] => 0
        [implicit_stmt_close] => 0
        [mem_emalloc_count] => 0
        [mem_emalloc_ammount] => 0
        [mem_ecalloc_count] => 0
        [mem_ecalloc_ammount] => 0
        [mem_erealloc_count] => 0
        [mem_erealloc_ammount] => 0
        [mem_efree_count] => 0
        [mem_malloc_count] => 0
        [mem_malloc_ammount] => 0
        [mem_calloc_count] => 0
        [mem_calloc_ammount] => 0
        [mem_realloc_count] => 0
        [mem_realloc_ammount] => 0
        [mem_free_count] => 0
        [proto_text_fetched_null] => 0
        [proto_text_fetched_bit] => 0
        [proto_text_fetched_tinyint] => 0
        [proto_text_fetched_short] => 0
        [proto_text_fetched_int24] => 0
        [proto_text_fetched_int] => 0
        [proto_text_fetched_bigint] => 0
        [proto_text_fetched_decimal] => 0
        [proto_text_fetched_float] => 0
        [proto_text_fetched_double] => 0
        [proto_text_fetched_date] => 0
        [proto_text_fetched_year] => 0
        [proto_text_fetched_time] => 0
        [proto_text_fetched_datetime] => 0
        [proto_text_fetched_timestamp] => 0
        [proto_text_fetched_string] => 0
        [proto_text_fetched_blob] => 0
        [proto_text_fetched_enum] => 0
        [proto_text_fetched_set] => 0
        [proto_text_fetched_geometry] => 0
        [proto_text_fetched_other] => 0
        [proto_binary_fetched_null] => 0
        [proto_binary_fetched_bit] => 0
        [proto_binary_fetched_tinyint] => 0
        [proto_binary_fetched_short] => 0
        [proto_binary_fetched_int24] => 0
        [proto_binary_fetched_int] => 0
        [proto_binary_fetched_bigint] => 0
        [proto_binary_fetched_decimal] => 0
        [proto_binary_fetched_float] => 0
        [proto_binary_fetched_double] => 0
        [proto_binary_fetched_date] => 0
        [proto_binary_fetched_year] => 0
        [proto_binary_fetched_time] => 0
        [proto_binary_fetched_datetime] => 0
        [proto_binary_fetched_timestamp] => 0
        [proto_binary_fetched_string] => 0
        [proto_binary_fetched_blob] => 0
        [proto_binary_fetched_enum] => 0
        [proto_binary_fetched_set] => 0
        [proto_binary_fetched_geometry] => 0
        [proto_binary_fetched_other] => 0
    )

### Ayrıca Bakınız

- Stats description

# mysqli::$host_info

# mysqli_get_host_info

(PHP 5, PHP 7, PHP 8)

mysqli::$host_info -- mysqli_get_host_info — Returns a string representing the type of connection used

### Açıklama

Nesne yönelimli kullanım

string $mysqli->host_info;

Yordamsal kullanım

function mysqli_get_host_info(mysqli `$mysql`): string

Returns a string describing the connection represented by the `mysql` parameter (including the server host name).

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A character string representing the server hostname and the connection type.

### Örnekler

Örnek 1 $mysqli->host_info example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* print host information */
    printf("Host info: %s\n", $mysqli->host_info);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* print host information */
    printf("Host info: %s\n", mysqli_get_host_info($link));

Yukarıdaki örneklerin çıktısı:

    Host info: Localhost via UNIX socket

### Ayrıca Bakınız

- mysqli_get_proto_info() - Returns the version of the MySQL protocol used

# mysqli::$protocol_version

# mysqli_get_proto_info

(PHP 5, PHP 7, PHP 8)

mysqli::$protocol_version -- mysqli_get_proto_info — Returns the version of the MySQL protocol used

### Açıklama

Nesne yönelimli kullanım

int $mysqli->protocol_version;

Yordamsal kullanım

function mysqli_get_proto_info(mysqli `$mysql`): int

Returns an integer representing the MySQL protocol version used by the connection represented by the `mysql` parameter.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns an integer representing the protocol version.

### Örnekler

Örnek 1 $mysqli->protocol_version example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password");

    /* print protocol version */
    printf("Protocol version: %d\n", $mysqli->protocol_version);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password");

    /* print protocol version */
    printf("Protocol version: %d\n", mysqli_get_proto_info($link));

Yukarıdaki örneklerin çıktısı:

    Protocol version: 10

### Ayrıca Bakınız

- mysqli_get_host_info() - Returns a string representing the type of connection used

# mysqli::$server_info

# mysqli::get_server_info

# mysqli_get_server_info

(PHP 5, PHP 7, PHP 8)

mysqli::$server_info -- mysqli::get_server_info -- mysqli_get_server_info — Returns the version of the MySQL server

### Açıklama

Nesne yönelimli kullanım

string $mysqli->server_info;
public function mysqli::get_server_info(): string

Yordamsal kullanım

function mysqli_get_server_info(mysqli `$mysql`): string

Returns a string representing the version of the MySQL server that the MySQLi extension is connected to.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A character string representing the server version.

### Örnekler

Örnek 1 $mysqli->server_info example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password");

    /* print server version */
    printf("Server version: %s\n", $mysqli->server_info);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password");

    /* print server version */
    printf("Server version: %s\n", mysqli_get_server_info($link));

The above examples will output something similar to:

    Server version: 8.0.21

### Ayrıca Bakınız

- mysqli_get_client_info() - Get MySQL client info
- mysqli_get_client_version() - Returns the MySQL client version as an integer
- mysqli_get_server_version() - Returns the version of the MySQL server as an integer

# mysqli::$server_version

# mysqli_get_server_version

(PHP 5, PHP 7, PHP 8)

mysqli::$server_version -- mysqli_get_server_version — Returns the version of the MySQL server as an integer

### Açıklama

Nesne yönelimli kullanım

int $mysqli->server_version;

Yordamsal kullanım

function mysqli_get_server_version(mysqli `$mysql`): int

The mysqli_get_server_version() function returns the version of the server connected to (represented by the `mysql` parameter) as an integer.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

An integer representing the server version.

The form of this version number is `main_version * 10000 + minor_version * 100 + sub_version` (i.e. version 4.1.0 is 40100).

### Örnekler

Örnek 1 $mysqli->server_version example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password");

    /* print server version */
    printf("Server version: %d\n", $mysqli->server_version);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password");

    /* print server version */
    printf("Server version: %d\n", mysqli_get_server_version($link));

The above examples will output something similar to:

    Server version: 80021

### Ayrıca Bakınız

- mysqli_get_client_info() - Get MySQL client info
- mysqli_get_client_version() - Returns the MySQL client version as an integer
- mysqli_get_server_info() - Returns the version of the MySQL server

# mysqli::get_warnings

# mysqli_get_warnings

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

mysqli::get_warnings -- mysqli_get_warnings — Get result of SHOW WARNINGS

### Açıklama

Nesne yönelimli kullanım

public function mysqli::get_warnings(): mysqli_warning|false

Yordamsal kullanım

function mysqli_get_warnings(mysqli `$mysql`): mysqli_warning|false

Returns a singly linked list comprised of mysqli_warning or `false` if there are no warnings. Each object in the list corresponds to a single line from the result of `SHOW WARNINGS`. Calling mysqli_warning::next() will refill the object with the values from the next row.

> Bilginize: To retrieve warning messages, it is recommended to use the SQL command `SHOW WARNINGS [limit row_count]` instead of this function.

Uyarı

The linked list cannot be rewound or retrieved again.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns a singly linked list comprised of mysqli_warning or `false` if there are no warnings.

### Örnekler

Örnek 1 Traversing the linked list to fetch all warnings

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $mysqli->query("SELECT 1/0, CAST('NULL' AS UNSIGNED)");

    if ($mysqli->warning_count > 0) {
        $warning = $mysqli->get_warnings();
        if ($warning !== false) {
            do {
                printf("Error number: %s\n", $warning->errno);
                printf("Message: %s\n", $warning->message);
            } while ($warning->next());
        }
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "user", "password", "test");

    mysqli_query($link, "SELECT 1/0, CAST('NULL' AS UNSIGNED)");

    if (mysqli_warning_count($link) > 0) {
        $warning = mysqli_get_warnings($link);
        if ($warning !== false) {
            do {
                printf("Error number: %s\n", $warning->errno);
                printf("Message: %s\n", $warning->message);
            } while ($warning->next());
        }
    }

Yukarıdaki örneklerin çıktısı:

    Error number: 1365
    Message: Division by 0
    Error number: 1292
    Message: Truncated incorrect INTEGER value: 'NULL'

# mysqli::$info

# mysqli_info

(PHP 5, PHP 7, PHP 8)

mysqli::$info -- mysqli_info — Retrieves information about the most recently executed query

### Açıklama

Nesne yönelimli kullanım

?string $mysqli->info;

Yordamsal kullanım

function mysqli_info(mysqli `$mysql`): ?string

The mysqli_info() function returns a string providing information about the last query executed. The nature of this string is provided below:

Possible mysqli_info return values
Query type | Example result string
--- | ---
INSERT INTO...SELECT... | Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO...VALUES (...),(...),(...) | Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ... | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ... | Records: 3 Duplicates: 0 Warnings: 0
UPDATE ... | Rows matched: 40 Changed: 40 Warnings: 0

> Bilginize:

> Queries which do not fall into one of the preceding formats are not supported. In these situations, mysqli_info() will return an empty string.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A character string representing additional information about the most recently executed query.

### Örnekler

Örnek 1 $mysqli->info example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $mysqli->query("CREATE TEMPORARY TABLE t1 LIKE City");

    /* INSERT INTO ... SELECT */
    $mysqli->query("INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
    printf("%s\n", $mysqli->info);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    mysqli_query($link, "CREATE TEMPORARY TABLE t1 LIKE City");

    /* INSERT INTO ... SELECT */
    mysqli_query($link, "INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
    printf("%s\n", mysqli_info($link));

Yukarıdaki örneklerin çıktısı:

    Records: 150  Duplicates: 0  Warnings: 0

### Ayrıca Bakınız

- mysqli_affected_rows() - Gets the number of affected rows in a previous MySQL operation
- mysqli_warning_count() - Returns the number of warnings generated by the most recently executed query
- mysqli_num_rows() - Gets the number of rows in the result set

# mysqli::init

# mysqli_init

(PHP 5, PHP 7, PHP 8)

mysqli::init -- mysqli_init — Initializes MySQLi and returns an object for use with mysqli_real_connect()

### Açıklama

Nesne yönelimli kullanım

#[\Deprecated]
public function mysqli::init(): ?bool

Yordamsal kullanım

function mysqli_init(): mysqli|false

Allocates or initializes a MYSQL object suitable for mysqli_options() and mysqli_real_connect().

> Bilginize:

> Any subsequent calls to any mysqli function (except mysqli_options() and mysqli_ssl_set()) will fail until mysqli_real_connect() was called.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

mysqli::init() returns `null` on success, başarısızlık durumunda `false` döner. mysqli_init() returns an object on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The object-oriented style mysqli::init() method has been deprecated. Replace calls to parent::init() with parent::__construct().

### Örnekler

See mysqli_real_connect().

### Ayrıca Bakınız

- mysqli_options() - Set options
- mysqli_close() - Closes a previously opened database connection
- mysqli_real_connect() - Opens a connection to the MySQL server
- mysqli_connect() - Takma Adı: mysqli::__construct

# mysqli::$insert_id

# mysqli_insert_id

(PHP 5, PHP 7, PHP 8)

mysqli::$insert_id -- mysqli_insert_id — Returns the value generated for an AUTO_INCREMENT column by the last query

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli->insert_id;

Yordamsal kullanım

function mysqli_insert_id(mysqli `$mysql`): int|string

Returns the ID generated by an `INSERT` or `UPDATE` query on a table with a column having the `AUTO_INCREMENT` attribute. In the case of a multiple-row `INSERT` statement, it returns the first automatically generated value that was successfully inserted.

Performing an `INSERT` or `UPDATE` statement using the `LAST_INSERT_ID()` MySQL function will also modify the value returned by mysqli_insert_id(). If `LAST_INSERT_ID(expr)` was used to generate the value of `AUTO_INCREMENT`, it returns the value of the last `expr` instead of the generated `AUTO_INCREMENT` value.

Returns `0` if the previous statement did not change an `AUTO_INCREMENT` value. mysqli_insert_id() must be called immediately after the statement that generated the value.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

The value of the `AUTO_INCREMENT` field that was updated by the previous query. Returns zero if there was no previous query on the connection or if the query did not update an `AUTO_INCREMENT` value.

Only statements issued using the current connection affect the return value. The value is not affected by statements issued using other connections or clients.

> Bilginize:

> If the number is greater than the maximum int value, it will be returned as a string.

### Örnekler

Örnek 1 $mysqli->insert_id example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $mysqli->query("CREATE TABLE myCity LIKE City");

    $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
    $mysqli->query($query);

    printf("New record has ID %d.\n", $mysqli->insert_id);

    /* drop table */
    $mysqli->query("DROP TABLE myCity");

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    mysqli_query($link, "CREATE TABLE myCity LIKE City");

    $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
    mysqli_query($link, $query);

    printf("New record has ID %d.\n", mysqli_insert_id($link));

    /* drop table */
    mysqli_query($link, "DROP TABLE myCity");

Yukarıdaki örneklerin çıktısı:

    New record has ID 1.

# mysqli::kill

# mysqli_kill

(PHP 5, PHP 7, PHP 8)

mysqli::kill -- mysqli_kill — Asks the server to kill a MySQL thread

Uyarı

This function has been DEPRECATED as of PHP 8.4.0. Relying on this function is highly discouraged.

### Açıklama

Nesne yönelimli kullanım

#[\Deprecated]
public function mysqli::kill(int `$process_id`): bool

Yordamsal kullanım

#[\Deprecated]
function mysqli_kill(mysqli `$mysql`, int `$process_id`): bool

This function is used to ask the server to kill a MySQL thread specified by the `process_id` parameter. This value must be retrieved by calling the mysqli_thread_id() function.

To stop a running query you should use the SQL command `KILL QUERY processid`.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Both mysqli::kill() and mysqli_kill() are now deprecated. Use the `KILL` SQL command instead.

### Örnekler

Örnek 1 mysqli::kill() example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    /* determine our thread id */
    $thread_id = $mysqli->thread_id;

    /* Kill connection */
    $mysqli->kill($thread_id);

    /* This should produce an error */
    if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
        printf("Error: %s\n", $mysqli->error);
        exit;
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    /* determine our thread id */
    $thread_id = mysqli_thread_id($link);

    /* Kill connection */
    mysqli_kill($link, $thread_id);

    /* This should produce an error */
    if (!mysqli_query($link, "CREATE TABLE myCity LIKE City")) {
        printf("Error: %s\n", mysqli_error($link));
        exit;
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error: MySQL server has gone away

### Ayrıca Bakınız

- mysqli_thread_id() - Returns the thread ID for the current connection

# mysqli::more_results

# mysqli_more_results

(PHP 5, PHP 7, PHP 8)

mysqli::more_results -- mysqli_more_results — Check if there are any more query results from a multi query

### Açıklama

Nesne yönelimli kullanım

public function mysqli::more_results(): bool

Yordamsal kullanım

function mysqli_more_results(mysqli `$mysql`): bool

Indicates if one or more result sets are available from a previous call to mysqli_multi_query().

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns `true` if one or more result sets (including errors) are available from a previous call to mysqli_multi_query(), otherwise `false`.

### Örnekler

See mysqli_multi_query().

### Ayrıca Bakınız

- mysqli_multi_query() - Performs one or more queries on the database
- mysqli_next_result() - Prepare next result from multi_query
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli::multi_query

# mysqli_multi_query

(PHP 5, PHP 7, PHP 8)

mysqli::multi_query -- mysqli_multi_query — Performs one or more queries on the database

### Açıklama

Nesne yönelimli kullanım

public function mysqli::multi_query(string `$query`): bool

Yordamsal kullanım

function mysqli_multi_query(mysqli `$mysql`, string `$query`): bool

Executes one or multiple queries which are concatenated by a semicolon.

Uyarı

# Güvenlik Uyarısı: SQL zerki

Sorgu herhangi bir değişken girdi içeriyorsa, bunun yerine bağımsız değişkenli hazırlanmış deyimler kullanılmalıdır. Veya, veriler düzgün biçimde biçimlendirilmeli ve tüm dizgeler mysqli_real_escape_string() işlevi kullanılarak öncelenmelidir.

Queries are sent in a single call to the database and processed sequentially. mysqli_multi_query() waits for the first query to complete before returning control to PHP. In the meantime, the MySQL server will continue processing the remaining queries asynchronously of PHP and make the results available for fetching.

It is recommended to use do-while to process multiple queries. The connection will be busy until all queries have completed and their results are fetched to PHP. No other statement can be issued on the same connection until all queries are processed. To proceed to the next query in the sequence, use mysqli_next_result(). If the next result is not ready yet, mysqli will wait for the response from the MySQL server. To check if there are more results, use mysqli_more_results().

For queries which produce a result set, such as `SELECT, SHOW, DESCRIBE` or `EXPLAIN`, mysqli_use_result() or mysqli_store_result() can be used to retrieve the result set. For queries which do not produce a result set, the same functions can be used to retrieve information such as the number of affected rows.

İpucu

Executing `CALL` statements for stored procedures can produce multiple result sets. If the stored procedure contains `SELECT` statements, the result sets are returned in the order that they are produced as the procedure executes. In general, the caller cannot know how many result sets a procedure will return and must be prepared to retrieve multiple results. The final result from the procedure is a status result that includes no result set. The status indicates whether the procedure succeeded or an error occurred.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`query`

  A string containing the queries to be executed. Multiple queries must be separated by a semicolon.

### Dönen Değerler

Returns `false` if the first statement failed. To retrieve subsequent errors from other statements you have to call mysqli_next_result() first.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::multi_query() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT CURRENT_USER();";
    $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

    /* execute multi query */
    $mysqli->multi_query($query);
    do {
        /* store the result set in PHP */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT CURRENT_USER();";
    $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

    /* execute multi query */
    mysqli_multi_query($link, $query);
    do {
        /* store the result set in PHP */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));

The above examples will output something similar to:

    my_user@localhost
    -----------------
    Amersfoort
    Maastricht
    Dordrecht
    Leiden
    Haarlemmermeer

### Ayrıca Bakınız

- mysqli_query() - Performs a query on the database
- mysqli_use_result() - Initiate a result set retrieval
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_next_result() - Prepare next result from multi_query
- mysqli_more_results() - Check if there are any more query results from a multi query

# mysqli::next_result

# mysqli_next_result

(PHP 5, PHP 7, PHP 8)

mysqli::next_result -- mysqli_next_result — Prepare next result from multi_query

### Açıklama

Nesne yönelimli kullanım

public function mysqli::next_result(): bool

Yordamsal kullanım

function mysqli_next_result(mysqli `$mysql`): bool

Prepares next result set from a previous call to mysqli_multi_query() which can be retrieved by mysqli_store_result() or mysqli_use_result().

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Also returns `false` if the next statement resulted in an error, unlike mysqli_more_results().

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

See mysqli_multi_query().

### Ayrıca Bakınız

- mysqli_multi_query() - Performs one or more queries on the database
- mysqli_more_results() - Check if there are any more query results from a multi query
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli::options

# mysqli_options

(PHP 5, PHP 7, PHP 8)

mysqli::options -- mysqli_options — Set options

### Açıklama

Nesne yönelimli kullanım

public function mysqli::options(int `$option`, string|int `$value`): bool

Yordamsal kullanım

function mysqli_options(mysqli `$mysql`, int `$option`, string|int `$value`): bool

Used to set extra connect options and affect behavior for a connection.

This function may be called multiple times to set several options.

mysqli_options() should be called after mysqli_init() and before mysqli_real_connect().

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`option`

  The option that you want to set. It can be one of the following values:

  Valid options
  Name | Description
  --- | ---
  `MYSQLI_OPT_CONNECT_TIMEOUT` | Connection timeout in seconds
  `MYSQLI_OPT_READ_TIMEOUT` | Command execution result timeout in seconds. Available as of PHP 7.2.0.
  `MYSQLI_OPT_LOCAL_INFILE` | Enable/disable use of `LOAD LOCAL INFILE`
  `MYSQLI_OPT_LOAD_DATA_LOCAL_DIR` | Directory to be used for `LOAD DATA LOCAL INFILE`.
  `MYSQLI_INIT_COMMAND` | Command to execute after when connecting to MySQL server
  `MYSQLI_SET_CHARSET_NAME` | The charset to be set as default.
  `MYSQLI_READ_DEFAULT_FILE` | Read options from named option file instead of my.cnf Not supported by mysqlnd.
  `MYSQLI_READ_DEFAULT_GROUP` | Read options from the named group from my.cnf or the file specified with `MYSQL_READ_DEFAULT_FILE`. Not supported by mysqlnd.
  `MYSQLI_SERVER_PUBLIC_KEY` | RSA public key file used with the SHA-256 based authentication.
  `MYSQLI_OPT_NET_CMD_BUFFER_SIZE` | The size of the internal command/network buffer. Only valid for mysqlnd.
  `MYSQLI_OPT_NET_READ_BUFFER_SIZE` | Maximum read chunk size in bytes when reading the body of a MySQL command packet. Only valid for mysqlnd.
  `MYSQLI_OPT_INT_AND_FLOAT_NATIVE` | Convert integer and float columns back to PHP numbers when using non-prepared statements. Only valid for mysqlnd.
  `MYSQLI_OPT_SSL_VERIFY_SERVER_CERT` | Whether to verify server certificate or not.
  `MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS` | Whether the client should accept expired passwords.
  `1` | Whether to use network communication compression.

`value`

  The value for the option.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

See mysqli_real_connect().

### Notlar

> Bilginize:

> MySQLnd daima sunucunun öntanımlı bir karakter kümesi olduğunu varsayar. Bu karakter kümesi, mysqlnd'nin kullanacağı uzlaşım/kimlik doğrulama bağlantısı sırasında gönderilir.

> Libmysqlclient, ya my.cnf dosyasındaki öntanımlı karakter kümesini ya da mysqli_init() çağrısından sonraki ilk mysqli_real_connect() çağrısından önce çağrılan mysqli_options() işlevinde belirtilen karakter kümesini kullanır.

### Ayrıca Bakınız

- mysqli_init() - Initializes MySQLi and returns an object for use with mysqli_real_connect()
- mysqli_real_connect() - Opens a connection to the MySQL server

# mysqli::ping

# mysqli_ping

(PHP 5, PHP 7, PHP 8)

mysqli::ping -- mysqli_ping — Pings a server connection, or tries to reconnect if the connection has gone down

Uyarı

This function has been DEPRECATED as of PHP 8.4.0. Relying on this function is highly discouraged.

### Açıklama

Nesne yönelimli kullanım

#[\Deprecated]
public function mysqli::ping(): bool

Yordamsal kullanım

#[\Deprecated]
function mysqli_ping(mysqli `$mysql`): bool

Checks whether the connection to the server is working. If it has gone down and global option mysqli.reconnect is enabled, an automatic reconnection is attempted.

> Bilginize: The php.ini setting mysqli.reconnect is ignored by the mysqlnd driver, so automatic reconnection is never attempted.

This function can be used by clients that remain idle for a long while, to check whether the server has closed the connection and reconnect if necessary.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Both mysqli::ping() and mysqli_ping() are now deprecated. The `reconnect` feature has not been available as of PHP 8.2.0, making this function obsolete.

### Örnekler

Örnek 1 mysqli::ping() example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

    /* check if server is alive */
    if ($mysqli->ping()) {
        printf ("Our connection is ok!\n");
    } else {
        printf ("Error: %s\n", $mysqli->error);
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    /* check if server is alive */
    if (mysqli_ping($link)) {
        printf ("Our connection is ok!\n");
    } else {
        printf ("Error: %s\n", mysqli_error($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Our connection is ok!

# mysqli::poll

# mysqli_poll

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::poll -- mysqli_poll — Poll connections

### Açıklama

Nesne yönelimli kullanım

public static function mysqli::poll(
?array `&$read`,
?array `&$error`,
array `&$reject`,
int `$seconds`,
int `$microseconds` = 0
): int|false

Yordamsal kullanım

function mysqli_poll(
?array `&$read`,
?array `&$error`,
array `&$reject`,
int `$seconds`,
int `$microseconds` = 0
): int|false

Poll connections. The method can be used as static.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

### Bağımsız Değişkenler

`read`

  List of connections to check for outstanding results that can be read.

`error`

  List of connections on which an error occurred, for example, query failure or lost connection.

`reject`

  List of connections rejected because no asynchronous query has been run on for which the function could poll results.

`seconds`

  Maximum number of seconds to wait, must be non-negative.

`microseconds`

  Maximum number of microseconds to wait, must be non-negative.

### Dönen Değerler

Returns number of ready connections upon success, `false` otherwise.

### Hatalar/İstisnalar

A ValueError is thrown when neither the `read` nor `error` arguments are passed.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a ValueError exception when neither the `read` nor `error` arguments are passed.

### Örnekler

Örnek 1 A mysqli_poll() example

    <?php
    $link1 = mysqli_connect();
    $link1->query("SELECT 'test'", MYSQLI_ASYNC);
    $all_links = array($link1);
    $processed = 0;
    do {
        $links = $errors = $reject = array();
        foreach ($all_links as $link) {
            $links[] = $errors[] = $reject[] = $link;
        }
        if (!mysqli_poll($links, $errors, $reject, 1)) {
            continue;
        }
        foreach ($links as $link) {
            if ($result = $link->reap_async_query()) {
                print_r($result->fetch_row());
                if (is_object($result))
                    mysqli_free_result($result);
            } else die(sprintf("MySQLi Error: %s", mysqli_error($link)));
            $processed++;
        }
    } while ($processed < count($all_links));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => test
    )

### Ayrıca Bakınız

- mysqli_query() - Performs a query on the database
- mysqli_reap_async_query() - Get result from async query

# mysqli::prepare

# mysqli_prepare

(PHP 5, PHP 7, PHP 8)

mysqli::prepare -- mysqli_prepare — Prepares an SQL statement for execution

### Açıklama

Nesne yönelimli kullanım

public function mysqli::prepare(string `$query`): mysqli_stmt|false

Yordamsal kullanım

function mysqli_prepare(mysqli `$mysql`, string `$query`): mysqli_stmt|false

Prepares the SQL query, and returns a statement handle to be used for further operations on the statement. The query must consist of a single SQL statement.

The statement template can contain zero or more question mark (`?`) parameter markers⁠—also called placeholders. The parameter markers must be bound to application variables using mysqli_stmt_bind_param() before executing the statement.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`query`

  The query, as a string. It must consist of a single SQL statement.

  The SQL statement may contain zero or more parameter markers represented by question mark (`?`) characters at the appropriate positions.

  > Bilginize:

  > The markers are legal only in certain places in SQL statements. For example, they are permitted in the `VALUES()` list of an `INSERT` statement (to specify column values for a row), or in a comparison with a column in a `WHERE` clause to specify a comparison value. However, they are not permitted for identifiers (such as table or column names).

### Dönen Değerler

mysqli_prepare() returns a statement object or `false` if an error occurred.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::prepare() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $city = "Amersfoort";

    /* create a prepared statement */
    $stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?");

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $city = "Amersfoort";

    /* create a prepared statement */
    $stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?");

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

Yukarıdaki örneklerin çıktısı:

    Amersfoort is in district Utrecht

### Ayrıca Bakınız

- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
- mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object
- mysqli_stmt_close() - Closes a prepared statement

# mysqli::query

# mysqli_query

(PHP 5, PHP 7, PHP 8)

mysqli::query -- mysqli_query — Performs a query on the database

### Açıklama

Nesne yönelimli kullanım

public function mysqli::query(string `$query`, int `$result_mode` = `MYSQLI_STORE_RESULT`): mysqli_result|bool

Yordamsal kullanım

function mysqli_query(mysqli `$mysql`, string `$query`, int `$result_mode` = `MYSQLI_STORE_RESULT`): mysqli_result|bool

Performs a `query` against the database.

Uyarı

# Güvenlik Uyarısı: SQL zerki

Sorgu herhangi bir değişken girdi içeriyorsa, bunun yerine bağımsız değişkenli hazırlanmış deyimler kullanılmalıdır. Veya, veriler düzgün biçimde biçimlendirilmeli ve tüm dizgeler mysqli_real_escape_string() işlevi kullanılarak öncelenmelidir.

For non-DML queries (not INSERT, UPDATE or DELETE), this function is similar to calling mysqli_real_query() followed by either mysqli_use_result() or mysqli_store_result().

> Bilginize:

> In the case where a statement is passed to mysqli_query() that is longer than `max_allowed_packet` of the server, the returned error codes are different depending on whether you are using MySQL Native Driver (`mysqlnd`) or MySQL Client Library (`libmysqlclient`). The behavior is as follows:

> - `mysqlnd` on Linux returns an error code of 1153. The error message means got a packet bigger than `max_allowed_packet` bytes.

> - `mysqlnd` on Windows returns an error code 2006. This error message means server has gone away.

> - `libmysqlclient` on all platforms returns an error code 2006. This error message means server has gone away.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`query`

  The query string.

`result_mode`

  The result mode can be one of 3 constants indicating how the result will be returned from the MySQL server.

  `MYSQLI_STORE_RESULT` (default) - returns a mysqli_result object with buffered result set.

  `MYSQLI_USE_RESULT` - returns a mysqli_result object with unbuffered result set. As long as there are pending records waiting to be fetched, the connection line will be busy and all subsequent calls will return error `Commands out of sync`. To avoid the error all records must be fetched from the server or the result set must be discarded by calling mysqli_free_result().

  `MYSQLI_ASYNC` (available with mysqlnd) - the query is performed asynchronously and no result set is immediately returned. mysqli_poll() is then used to get results from such queries. Used in combination with either `MYSQLI_STORE_RESULT` or `MYSQLI_USE_RESULT` constant.

### Dönen Değerler

Returns `false` on failure. For successful queries which produce a result set, such as `SELECT, SHOW, DESCRIBE` or `EXPLAIN`, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return `true`.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::query() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* Create table doesn't return a resultset */
    $mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");
    printf("Table myCity successfully created.\n");

    /* Select queries return a resultset */
    $result = $mysqli->query("SELECT Name FROM City LIMIT 10");
    printf("Select returned %d rows.\n", $result->num_rows);

    /* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
    $result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT);

    /* Note, that we can't execute any functions which interact with the
        server until all records have been fully retrieved or the result
        set was closed. All calls will return an 'out of sync' error */
    $mysqli->query("SET @a:='this will not work'");

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* Create table doesn't return a resultset */
    mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");
    printf("Table myCity successfully created.\n");

    /* Select queries return a resultset */
    $result = mysqli_query($link, "SELECT Name FROM City LIMIT 10");
    printf("Select returned %d rows.\n", mysqli_num_rows($result));

    /* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
    $result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT);

    /* Note, that we can't execute any functions which interact with the
        server until all records have been fully retrieved or the result
        set was closed. All calls will return an 'out of sync' error */
    mysqli_query($link, "SET @a:='this will not work'");

The above examples will output something similar to:

    Table myCity successfully created.
    Select returned 10 rows.

    Fatal error: Uncaught mysqli_sql_exception: Commands out of sync; you can't run this command now in...

### Ayrıca Bakınız

- mysqli_execute_query() - Prepares, binds parameters, and executes SQL statement
- mysqli_real_query() - Execute an SQL query
- mysqli_multi_query() - Performs one or more queries on the database
- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_free_result() - Frees the memory associated with a result

# mysqli::real_connect

# mysqli_real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connect — Opens a connection to the MySQL server

### Açıklama

Nesne yönelimli kullanım

public function mysqli::real_connect(
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`,
int `$flags` = 0
): bool

Yordamsal kullanım

function mysqli_real_connect(
mysqli `$mysql`,
?string `$hostname` = `null`,
?string `$username` = `null`,
#[\SensitiveParameter]?string `$password` = `null`,
?string `$database` = `null`,
?int `$port` = `null`,
?string `$socket` = `null`,
int `$flags` = 0
): bool

Opens a connection to the MySQL database server with optional connection options.

This function differs from mysqli_connect():

- mysqli_real_connect() needs a valid object which has to be created by mysqli_init().

- There is a `flags` parameter.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`hostname`

  Can be either a host name or an IP address. When passing `null`, the value is retrieved from mysqli.default_host. When possible, pipes will be used instead of the TCP/IP protocol. The TCP/IP protocol is used if a host name and port number are provided together e.g. `localhost:3308`.

`username`

  The MySQL username or `null` to assume the username based on the mysqli.default_user ini option.

`password`

  The MySQL password or `null` to assume the password based on the mysqli.default_pw ini option.

`database`

  The default database to be used when performing queries or `null`.

`port`

  The port number to attempt to connect to the MySQL server or `null` to assume the port based on the mysqli.default_port ini option.

`socket`

  The socket or named pipe that should be used or `null` to assume the socket based on the mysqli.default_socket ini option.

  > Bilginize:

  > Specifying the `socket` parameter will not explicitly determine the type of connection to be used when connecting to the MySQL server. How the connection is made to the MySQL database is determined by the `hostname` parameter.

`flags`

  With the parameter `flags` you can set different connection options:

  Supported flags
  Name | Description
  --- | ---
  `MYSQLI_CLIENT_COMPRESS` | Use compression protocol
  `MYSQLI_CLIENT_FOUND_ROWS` | Return the number of matched rows, not the number of affected rows
  `MYSQLI_CLIENT_IGNORE_SPACE` | Allow spaces after function names. Makes all function names reserved words.
  `MYSQLI_CLIENT_INTERACTIVE` | Allow `interactive_timeout` seconds (instead of `wait_timeout` seconds) of inactivity before closing the connection
  `MYSQLI_CLIENT_SSL` | Use SSL (encryption)
  `MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT` | Like `MYSQLI_CLIENT_SSL`, but disables validation of the provided SSL certificate. This is only for installations using MySQL Native Driver and MySQL 5.6 or later.

  > Bilginize:

  > For security reasons the `MULTI_STATEMENT` flag is not supported in PHP. If you want to execute multiple queries use the mysqli_multi_query() function.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | All parameters are now nullable.

### Örnekler

Örnek 1 mysqli::real_connect() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_init();

    $mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
    $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);

    $mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);

    echo 'Success... ' . $mysqli->host_info . "\n";

Nesne yönelimli kullanım when extending mysqli class

    <?php

    class foo_mysqli extends mysqli {
        public function __construct($host, $user, $pass, $db)
        {
            parent::__construct();

            parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
            parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);

            parent::real_connect($host, $user, $pass, $db, null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);
        }
    }

    $db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');

    echo 'Success... ' . $db->host_info . "\n";

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_init();

    mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0');
    mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5);

    mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db', null, null, MYSQLI_CLIENT_COMPRESS|MYSQLI_CLIENT_FOUND_ROWS);

    echo 'Success... ' . mysqli_get_host_info($link) . "\n";

Yukarıdaki örneklerin çıktısı:

    Success... MySQL host info: localhost via TCP/IP

### Notlar

> Bilginize:

> MySQLnd daima sunucunun öntanımlı bir karakter kümesi olduğunu varsayar. Bu karakter kümesi, mysqlnd'nin kullanacağı uzlaşım/kimlik doğrulama bağlantısı sırasında gönderilir.

> Libmysqlclient, ya my.cnf dosyasındaki öntanımlı karakter kümesini ya da mysqli_init() çağrısından sonraki ilk mysqli_real_connect() çağrısından önce çağrılan mysqli_options() işlevinde belirtilen karakter kümesini kullanır.

### Ayrıca Bakınız

- mysqli_connect() - Takma Adı: mysqli::__construct
- mysqli_init() - Initializes MySQLi and returns an object for use with mysqli_real_connect()
- mysqli_options() - Set options
- mysqli_ssl_set() - Used for establishing secure connections using SSL
- mysqli_close() - Closes a previously opened database connection

# mysqli::real_escape_string

# mysqli_real_escape_string

(PHP 5, PHP 7, PHP 8)

mysqli::real_escape_string -- mysqli_real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

### Açıklama

Nesne yönelimli kullanım

public function mysqli::real_escape_string(string `$string`): string

Yordamsal kullanım

function mysqli_real_escape_string(mysqli `$mysql`, string `$string`): string

This function is used to create a legal SQL string that you can use in an SQL statement. The given string is encoded to produce an escaped SQL string, taking into account the current character set of the connection.

Dikkat

# Security: the default character set

The character set must be set either at the server level, or with the API function mysqli_set_charset() for it to affect mysqli_real_escape_string(). See the concepts section on character sets for more information.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`string`

  The string to be escaped.

  Characters encoded are `NUL (ASCII 0)`, `\n`, `\r`, `\`, `'`, `"`, and ``CTRL`+`Z``.

### Dönen Değerler

Returns an escaped string.

### Örnekler

Örnek 1 mysqli::real_escape_string() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $city = "'s-Hertogenbosch";

    /* this query with escaped $city will work */
    $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
        $mysqli->real_escape_string($city));
    $result = $mysqli->query($query);
    printf("Select returned %d rows.\n", $result->num_rows);

    /* this query will fail, because we didn't escape $city */
    $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
    $result = $mysqli->query($query);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $city = "'s-Hertogenbosch";

    /* this query with escaped $city will work */
    $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'",
        mysqli_real_escape_string($mysqli, $city));
    $result = mysqli_query($mysqli, $query);
    printf("Select returned %d rows.\n", mysqli_num_rows($result));

    /* this query will fail, because we didn't escape $city */
    $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city);
    $result = mysqli_query($mysqli, $query);

The above examples will output something similar to:

    Select returned 1 rows.

    Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's-Hertogenbosch'' at line 1 in...

### Ayrıca Bakınız

- mysqli_set_charset() - Sets the client character set

# mysqli::real_query

# mysqli_real_query

(PHP 5, PHP 7, PHP 8)

mysqli::real_query -- mysqli_real_query — Execute an SQL query

### Açıklama

Nesne yönelimli kullanım

public function mysqli::real_query(string `$query`): bool

Yordamsal kullanım

function mysqli_real_query(mysqli `$mysql`, string `$query`): bool

Executes a single query against the database whose result can then be retrieved or stored using the mysqli_store_result() or mysqli_use_result() functions.

Uyarı

# Güvenlik Uyarısı: SQL zerki

Sorgu herhangi bir değişken girdi içeriyorsa, bunun yerine bağımsız değişkenli hazırlanmış deyimler kullanılmalıdır. Veya, veriler düzgün biçimde biçimlendirilmeli ve tüm dizgeler mysqli_real_escape_string() işlevi kullanılarak öncelenmelidir.

In order to determine if a given query should return a result set or not, see mysqli_field_count().

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`query`

  The query string.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Ayrıca Bakınız

- mysqli_query() - Performs a query on the database
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli::reap_async_query

# mysqli_reap_async_query

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::reap_async_query -- mysqli_reap_async_query — Get result from async query

### Açıklama

Nesne yönelimli kullanım

public function mysqli::reap_async_query(): mysqli_result|bool

Yordamsal kullanım

function mysqli_reap_async_query(mysqli `$mysql`): mysqli_result|bool

Get result from async query.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns `false` on failure. For successful queries which produce a result set, such as `SELECT, SHOW, DESCRIBE` or `EXPLAIN`, mysqli_reap_async_query() will return a mysqli_result object. For other successful queries, mysqli_reap_async_query() will return `true`.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Ayrıca Bakınız

- mysqli_poll() - Poll connections

# mysqli::refresh

# mysqli_refresh

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::refresh -- mysqli_refresh — Refreshes

Uyarı

This function has been DEPRECATED as of PHP 8.4.0. Relying on this function is highly discouraged.

### Açıklama

Nesne yönelimli kullanım

#[\Deprecated]
public function mysqli::refresh(int `$flags`): bool

Yordamsal kullanım

#[\Deprecated]
function mysqli_refresh(mysqli `$mysql`, int `$flags`): bool

Flushes tables or caches, or resets the replication server information.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`flags`

  The options to refresh, using the MYSQLI_REFRESH_* constants as documented within the MySQLi constants documentation.

  See also the official » MySQL Refresh documentation.

### Dönen Değerler

`true` if the refresh was a success, otherwise `false`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Both mysqli::refresh() and mysqli_refresh() are now deprecated. Use `FLUSH` SQL commands instead.

### Ayrıca Bakınız

- mysqli_poll() - Poll connections

# mysqli::release_savepoint

# mysqli_release_savepoint

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

mysqli::release_savepoint -- mysqli_release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction

### Açıklama

Nesne yönelimli kullanım

public function mysqli::release_savepoint(string `$name`): bool

Yordamsal kullanım:

function mysqli_release_savepoint(mysqli `$mysql`, string `$name`): bool

This function is identical to executing `$mysqli->query("RELEASE SAVEPOINT `$name`");`. This function does not trigger commit or rollback.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`name`

  The identifier of the savepoint.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mysqli_savepoint() - Set a named transaction savepoint

# mysqli::rollback

# mysqli_rollback

(PHP 5, PHP 7, PHP 8)

mysqli::rollback -- mysqli_rollback — Rolls back current transaction

### Açıklama

Nesne yönelimli kullanım

public function mysqli::rollback(int `$flags` = 0, ?string `$name` = `null`): bool

Yordamsal kullanım

function mysqli_rollback(mysqli `$mysql`, int `$flags` = 0, ?string `$name` = `null`): bool

Rollbacks the current transaction for the database.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`flags`

  A bitmask of `MYSQLI_TRANS_COR_*` constants.

`name`

  If provided then `ROLLBACK/*name*/` is executed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `name` is now nullable.

### Örnekler

See the mysqli::begin_transaction() example.

### Notlar

> Bilginize:

> This function does not work with non transactional table types (like MyISAM or ISAM).

### Ayrıca Bakınız

- mysqli_begin_transaction() - Starts a transaction
- mysqli_commit() - Commits the current transaction
- mysqli_autocommit() - Turns on or off auto-committing database modifications
- mysqli_release_savepoint() - Removes the named savepoint from the set of savepoints of the current transaction

# mysqli::savepoint

# mysqli_savepoint

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

mysqli::savepoint -- mysqli_savepoint — Set a named transaction savepoint

### Açıklama

Nesne yönelimli kullanım

public function mysqli::savepoint(string `$name`): bool

Yordamsal kullanım:

function mysqli_savepoint(mysqli `$mysql`, string `$name`): bool

This function is identical to executing `$mysqli->query("SAVEPOINT `$name`");`

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`name`

  The identifier of the savepoint.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mysqli_release_savepoint() - Removes the named savepoint from the set of savepoints of the current transaction

# mysqli::select_db

# mysqli_select_db

(PHP 5, PHP 7, PHP 8)

mysqli::select_db -- mysqli_select_db — Selects the default database for database queries

### Açıklama

Nesne yönelimli kullanım

public function mysqli::select_db(string `$database`): bool

Yordamsal kullanım

function mysqli_select_db(mysqli `$mysql`, string `$database`): bool

Selects the default database to be used when performing queries against the database connection.

> Bilginize:

> This function should only be used to change the default database for the connection. You can select the default database with 4th parameter in mysqli_connect().

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`database`

  The database name.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::select_db() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    /* get the name of the current default database */
    $result = $mysqli->query("SELECT DATABASE()");
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);

    /* change default database to "world" */
    $mysqli->select_db("world");

    /* get the name of the current default database */
    $result = $mysqli->query("SELECT DATABASE()");
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "test");

    /* get the name of the current default database */
    $result = mysqli_query($link, "SELECT DATABASE()");
    $row = mysqli_fetch_row($result);
    printf("Default database is %s.\n", $row[0]);

    /* change default database to "world" */
    mysqli_select_db($link, "world");

    /* get the name of the current default database */
    $result = mysqli_query($link, "SELECT DATABASE()");
    $row = mysqli_fetch_row($result);
    printf("Default database is %s.\n", $row[0]);

Yukarıdaki örneklerin çıktısı:

    Default database is test.
    Default database is world.

### Ayrıca Bakınız

- mysqli_connect() - Takma Adı: mysqli::__construct
- mysqli_real_connect() - Opens a connection to the MySQL server

# mysqli::set_charset

# mysqli_set_charset

(PHP 5 >= 5.0.5, PHP 7, PHP 8)

mysqli::set_charset -- mysqli_set_charset — Sets the client character set

### Açıklama

Nesne yönelimli kullanım

public function mysqli::set_charset(string `$charset`): bool

Yordamsal kullanım

function mysqli_set_charset(mysqli `$mysql`, string `$charset`): bool

Sets the character set to be used when sending data from and to the database server.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`charset`

  The desired character set.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::set_charset() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    printf("Initial character set: %s\n", $mysqli->character_set_name());

    /* change character set to utf8mb4 */
    $mysqli->set_charset("utf8mb4");

    printf("Current character set: %s\n", $mysqli->character_set_name());

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');

    printf("Initial character set: %s\n", mysqli_character_set_name($link));

    /* change character set to utf8mb4 */
    mysqli_set_charset($link, "utf8mb4");

    printf("Current character set: %s\n", mysqli_character_set_name($link));

The above examples will output something similar to:

    Initial character set: latin1
    Current character set: utf8mb4

### Notlar

> Bilginize:

> This is the preferred way to change the charset. Using mysqli_query() to set it (such as `SET NAMES utf8`) is not recommended. See the MySQL character set concepts section for more information.

### Ayrıca Bakınız

- mysqli_character_set_name() - Returns the current character set of the database connection
- mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
- MySQL character set concepts
- » List of character sets that MySQL supports

# mysqli::$sqlstate

# mysqli_sqlstate

(PHP 5, PHP 7, PHP 8)

mysqli::$sqlstate -- mysqli_sqlstate — Returns the SQLSTATE error from previous MySQL operation

### Açıklama

Nesne yönelimli kullanım

string $mysqli->sqlstate;

Yordamsal kullanım

function mysqli_sqlstate(mysqli `$mysql`): string

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. `'00000'` means no error. The values are specified by ANSI SQL and ODBC. For a list of possible values, see » http://dev.mysql.com/doc/mysql/en/error-handling.html.

> Bilginize:

> Note that not all MySQL errors are yet mapped to SQLSTATE's. The value `HY000` (general error) is used for unmapped errors.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. `'00000'` means no error.

### Örnekler

Örnek 1 $mysqli->sqlstate example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* Table City already exists, so we should get an error */
    try {
        $mysqli->query("CREATE TABLE City (ID INT, Name VARCHAR(30))");
    } catch (mysqli_sql_exception) {
        printf("Error - SQLSTATE %s.\n", $mysqli->sqlstate);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* Table City already exists, so we should get an error */
    try {
        mysqli_query($link, "CREATE TABLE City (ID INT, Name VARCHAR(30))");
    } catch (mysqli_sql_exception) {
        printf("Error - SQLSTATE %s.\n", mysqli_sqlstate($link));
    }

Yukarıdaki örneklerin çıktısı:

    Error - SQLSTATE 42S01.

### Ayrıca Bakınız

- mysqli_errno() - Returns the error code for the most recent function call
- mysqli_error() - Returns a string description of the last error

# mysqli::ssl_set

# mysqli_ssl_set

(PHP 5, PHP 7, PHP 8)

mysqli::ssl_set -- mysqli_ssl_set — Used for establishing secure connections using SSL

### Açıklama

Nesne yönelimli kullanım

public function mysqli::ssl_set(
?string `$key`,
?string `$certificate`,
?string `$ca_certificate`,
?string `$ca_path`,
?string `$cipher_algos`
): true

Yordamsal kullanım

function mysqli_ssl_set(
mysqli `$mysql`,
?string `$key`,
?string `$certificate`,
?string `$ca_certificate`,
?string `$ca_path`,
?string `$cipher_algos`
): true

Used for establishing secure connections using SSL. It must be called before mysqli_real_connect(). This function does nothing unless OpenSSL support is enabled.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`key`

  The path name to the key file.

`certificate`

  The path name to the certificate file.

`ca_certificate`

  The path name to the certificate authority file.

`ca_path`

  The pathname to a directory that contains trusted SSL CA certificates in PEM format.

`cipher_algos`

  A list of allowable ciphers to use for SSL encryption.

### Dönen Değerler

Daima `true` döndürür. If SSL setup is incorrect mysqli_real_connect() will return an error when you attempt to connect.

### Ayrıca Bakınız

- mysqli_options() - Set options
- mysqli_real_connect() - Opens a connection to the MySQL server

# mysqli::stat

# mysqli_stat

(PHP 5, PHP 7, PHP 8)

mysqli::stat -- mysqli_stat — Gets the current system status

### Açıklama

Nesne yönelimli kullanım

public function mysqli::stat(): string|false

Yordamsal kullanım

function mysqli_stat(mysqli `$mysql`): string|false

mysqli_stat() returns a string containing information similar to that provided by the 'mysqladmin status' command. This includes uptime in seconds and the number of running threads, questions, reloads, and open tables.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

A string describing the server status. `false` if an error occurred.

### Örnekler

Örnek 1 mysqli::stat() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    printf("System status: %s\n", $mysqli->stat());

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    printf("System status: %s\n", mysqli_stat($link));

Yukarıdaki örneklerin çıktısı:

    System status: Uptime: 272  Threads: 1  Questions: 5340  Slow queries: 0
    Opens: 13  Flush tables: 1  Open tables: 0  Queries per second avg: 19.632
    Memory in use: 8496K  Max memory used: 8560K

### Ayrıca Bakınız

- mysqli_get_server_info() - Returns the version of the MySQL server

# mysqli::stmt_init

# mysqli_stmt_init

(PHP 5, PHP 7, PHP 8)

mysqli::stmt_init -- mysqli_stmt_init — Initializes a statement and returns an object for use with mysqli_stmt_prepare

### Açıklama

Nesne yönelimli kullanım

public function mysqli::stmt_init(): mysqli_stmt|false

Yordamsal kullanım

function mysqli_stmt_init(mysqli `$mysql`): mysqli_stmt|false

Allocates and initializes a statement object suitable for mysqli_stmt_prepare().

> Bilginize:

> Any subsequent calls to any mysqli_stmt function will fail until mysqli_stmt_prepare() was called.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns an object.

### Ayrıca Bakınız

- mysqli_stmt_prepare() - Prepares an SQL statement for execution

# mysqli::store_result

# mysqli_store_result

(PHP 5, PHP 7, PHP 8)

mysqli::store_result -- mysqli_store_result — Transfers a result set from the last query

### Açıklama

Nesne yönelimli kullanım

public function mysqli::store_result(int `$mode` = 0): mysqli_result|false

Yordamsal kullanım

function mysqli_store_result(mysqli `$mysql`, int `$mode` = 0): mysqli_result|false

Transfers the result set from the last query on the database connection represented by the `mysql` parameter to be used with the mysqli_data_seek() function.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`mode`

  The option that you want to set. As of PHP 8.1, this parameter has no effect. It can be one of the following values:

  Valid options
  Name | Description
  --- | ---
  `MYSQLI_STORE_RESULT_COPY_DATA` | Copy results from the internal mysqlnd buffer into the PHP variables fetched. By default, mysqlnd will use a reference logic to avoid copying and duplicating results held in memory. For certain result sets, for example, result sets with many small rows, the copy approach can reduce the overall memory usage because PHP variables holding results may be released earlier (available with mysqlnd only)

### Dönen Değerler

Returns a buffered result object or `false` if an error occurred.

> Bilginize:

> mysqli_store_result() returns `false` in case the query didn't return a result set (if the query was, for example an INSERT statement). This function also returns `false` if the reading of the result set failed. You can check if you have got an error by checking if mysqli_error() doesn't return an empty string, if mysqli_errno() returns a non zero value, or if mysqli_field_count() returns a non zero value. Also possible reason for this function returning `false` after successful call to mysqli_query() can be too large result set (memory for it cannot be allocated). If mysqli_field_count() returns a non-zero value, the statement should have produced a non-empty result set.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Passing the `mode` parameter is now deprecated. The parameter has had no effect as of PHP 8.1.0.

### Örnekler

See mysqli_multi_query().

### Notlar

> Bilginize:

> Although it is always good practice to free the memory used by the result of a query using the mysqli_free_result() function, when transferring large result sets using the mysqli_store_result() this becomes particularly important.

### Ayrıca Bakınız

- mysqli_real_query() - Execute an SQL query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli::$thread_id

# mysqli_thread_id

(PHP 5, PHP 7, PHP 8)

mysqli::$thread_id -- mysqli_thread_id — Returns the thread ID for the current connection

### Açıklama

Nesne yönelimli kullanım

int $mysqli->thread_id;

Yordamsal kullanım

function mysqli_thread_id(mysqli `$mysql`): int

The mysqli_thread_id() function returns the thread ID for the current connection which can then be killed using the mysqli_kill() function. If the connection is lost and you reconnect with mysqli_ping(), the thread ID will be different. Therefore you should get the thread ID only when you need it.

> Bilginize:

> The thread ID is assigned on a connection-by-connection basis. Hence, if the connection is broken and then re-established a new thread ID will be assigned.

> To kill a running query you can use the SQL command `KILL QUERY processid`.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Returns the Thread ID for the current connection.

### Örnekler

Örnek 1 $mysqli->thread_id example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    /* determine our thread id */
    $thread_id = $mysqli->thread_id;

    /* Kill connection */
    $mysqli->kill($thread_id);

    /* This should produce an error */
    if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
        printf("Error: %s\n", $mysqli->error);
        exit;
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    /* determine our thread id */
    $thread_id = mysqli_thread_id($link);

    /* Kill connection */
    mysqli_kill($link, $thread_id);

    /* This should produce an error */
    if (!mysqli_query($link, "CREATE TABLE myCity LIKE City")) {
        printf("Error: %s\n", mysqli_error($link));
        exit;
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error: MySQL server has gone away

### Ayrıca Bakınız

- mysqli_kill() - Asks the server to kill a MySQL thread

# mysqli::thread_safe

# mysqli_thread_safe

(PHP 5, PHP 7, PHP 8)

mysqli::thread_safe -- mysqli_thread_safe — Returns whether thread safety is given or not

### Açıklama

Nesne yönelimli kullanım

public function mysqli::thread_safe(): bool

Yordamsal kullanım

function mysqli_thread_safe(): bool

Tells whether the client library is compiled as thread-safe.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the client library is thread-safe, otherwise `false`.

# mysqli::use_result

# mysqli_use_result

(PHP 5, PHP 7, PHP 8)

mysqli::use_result -- mysqli_use_result — Initiate a result set retrieval

### Açıklama

Nesne yönelimli kullanım

public function mysqli::use_result(): mysqli_result|false

Yordamsal kullanım

function mysqli_use_result(mysqli `$mysql`): mysqli_result|false

Used to initiate the retrieval of a result set from the last query executed using the mysqli_real_query() function on the database connection.

Either this or the mysqli_store_result() function must be called before the results of a query can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.

> Bilginize:

> The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result(). One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an unbuffered result object or `false` if an error occurred.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli::use_result() example

Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query  = "SELECT CURRENT_USER();";
    $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

    /* execute multi query */
    if ($mysqli->multi_query($query)) {
        do {
            /* store first result set */
            if ($result = $mysqli->use_result()) {
                while ($row = $result->fetch_row()) {
                    printf("%s\n", $row[0]);
                }
                $result->close();
            }
            /* print divider */
            if ($mysqli->more_results()) {
                printf("-----------------\n");
            }
        } while ($mysqli->next_result());
    }

    /* close connection */
    $mysqli->close();
    ?>

Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query  = "SELECT CURRENT_USER();";
    $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

    /* execute multi query */
    if (mysqli_multi_query($link, $query)) {
        do {
            /* store first result set */
            if ($result = mysqli_use_result($link)) {
                while ($row = mysqli_fetch_row($result)) {
                    printf("%s\n", $row[0]);
                }
                mysqli_free_result($result);
            }
            /* print divider */
            if (mysqli_more_results($link)) {
                printf("-----------------\n");
            }
        } while (mysqli_next_result($link));
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    my_user@localhost
    -----------------
    Amersfoort
    Maastricht
    Dordrecht
    Leiden
    Haarlemmermeer

### Ayrıca Bakınız

- mysqli_real_query() - Execute an SQL query
- mysqli_store_result() - Transfers a result set from the last query

# mysqli::$warning_count

# mysqli_warning_count

(PHP 5, PHP 7, PHP 8)

mysqli::$warning_count -- mysqli_warning_count — Returns the number of warnings generated by the most recently executed query

### Açıklama

Nesne yönelimli kullanım

int $mysqli->warning_count;

Yordamsal kullanım

function mysqli_warning_count(mysqli `$mysql`): int

Returns the number of warnings generated by the most recently executed query.

> Bilginize: For retrieving warning messages the following SQL command can be used: `SHOW WARNINGS [limit row_count]`.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

### Dönen Değerler

Number of warnings or zero if there are no warnings.

### Örnekler

Örnek 1 $mysqli->warning_count example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $mysqli->query("SELECT 42/0");

    if ($mysqli->warning_count > 0) {
        $result = $mysqli->query("SHOW WARNINGS");
        $row = $result->fetch_row();
        printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    mysqli_query($link, "SELECT 42/0");

    if (mysqli_warning_count($link) > 0) {
        $result = mysqli_query($link, "SHOW WARNINGS");
        $row = mysqli_fetch_row($result);
        printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
    }

Yukarıdaki örneklerin çıktısı:

    Warning (1365): Division by 0

### Ayrıca Bakınız

- mysqli_errno() - Returns the error code for the most recent function call
- mysqli_error() - Returns a string description of the last error
- mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

## İçindekiler

- mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation
- mysqli::autocommit — Turns on or off auto-committing database modifications
- mysqli::begin_transaction — Starts a transaction
- mysqli::change_user — Changes the user of the database connection
- mysqli::character_set_name — Returns the current character set of the database connection
- mysqli::close — Closes a previously opened database connection
- mysqli::commit — Commits the current transaction
- mysqli::$connect_errno — Returns the error code from last connect call
- mysqli::$connect_error — Returns a description of the last connection error
- mysqli::__construct — Open a new connection to the MySQL server
- mysqli::debug — Performs debugging operations
- mysqli::dump_debug_info — Dump debugging information into the log
- mysqli::$errno — Returns the error code for the most recent function call
- mysqli::$error — Returns a string description of the last error
- mysqli::$error_list — Returns a list of errors from the last command executed
- mysqli::execute_query — Prepares, binds parameters, and executes SQL statement
- mysqli::$field_count — Returns the number of columns for the most recent query
- mysqli::get_charset — Returns a character set object
- mysqli::$client_info — Get MySQL client info
- mysqli::$client_version — Returns the MySQL client version as an integer
- mysqli::get_connection_stats — Returns statistics about the client connection
- mysqli::$host_info — Returns a string representing the type of connection used
- mysqli::$protocol_version — Returns the version of the MySQL protocol used
- mysqli::$server_info — Returns the version of the MySQL server
- mysqli::$server_version — Returns the version of the MySQL server as an integer
- mysqli::get_warnings — Get result of SHOW WARNINGS
- mysqli::$info — Retrieves information about the most recently executed query
- mysqli::init — Initializes MySQLi and returns an object for use with mysqli_real_connect()
- mysqli::$insert_id — Returns the value generated for an AUTO_INCREMENT column by the last query
- mysqli::kill — Asks the server to kill a MySQL thread
- mysqli::more_results — Check if there are any more query results from a multi query
- mysqli::multi_query — Performs one or more queries on the database
- mysqli::next_result — Prepare next result from multi_query
- mysqli::options — Set options
- mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down
- mysqli::poll — Poll connections
- mysqli::prepare — Prepares an SQL statement for execution
- mysqli::query — Performs a query on the database
- mysqli::real_connect — Opens a connection to the MySQL server
- mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
- mysqli::real_query — Execute an SQL query
- mysqli::reap_async_query — Get result from async query
- mysqli::refresh — Refreshes
- mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction
- mysqli::rollback — Rolls back current transaction
- mysqli::savepoint — Set a named transaction savepoint
- mysqli::select_db — Selects the default database for database queries
- mysqli::set_charset — Sets the client character set
- mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation
- mysqli::ssl_set — Used for establishing secure connections using SSL
- mysqli::stat — Gets the current system status
- mysqli::stmt_init — Initializes a statement and returns an object for use with mysqli_stmt_prepare
- mysqli::store_result — Transfers a result set from the last query
- mysqli::$thread_id — Returns the thread ID for the current connection
- mysqli::thread_safe — Returns whether thread safety is given or not
- mysqli::use_result — Initiate a result set retrieval
- mysqli::$warning_count — Returns the number of warnings generated by the most recently executed query

# The mysqli_stmt class

(PHP 5, PHP 7, PHP 8)

## Giriş

Represents a prepared statement.

## Sınıf Sözdizimi

class mysqli_stmt {
/* Özellikler */
public readonly int|string $affected_rows;
public readonly int|string $insert_id;
public readonly int|string $num_rows;
public readonly int $param_count;
public readonly int $field_count;
public readonly int $errno;
public readonly string $error;
public readonly array $error_list;
public readonly string $sqlstate;
public int $id;
/* Yöntemler */
public function __construct(mysqli `$mysql`, ?string `$query` = `null`)
public function attr_get(int `$attribute`): int
public function attr_set(int `$attribute`, int `$value`): bool
public function bind_param(string `$types`, mixed `&$var`, mixed `&...$vars`): bool
public function bind_result(mixed `&$var`, mixed `&...$vars`): bool
public function close(): true
public function data_seek(int `$offset`): void
public function execute(?array `$params` = `null`): bool
public function fetch(): ?bool
public function free_result(): void
public function get_result(): mysqli_result|false
public function get_warnings(): mysqli_warning|false
public function more_results(): bool
public function next_result(): bool
public function num_rows(): int|string
public function prepare(string `$query`): bool
public function reset(): bool
public function result_metadata(): mysqli_result|false
public function send_long_data(int `$param_num`, string `$data`): bool
public function store_result(): bool
}

## Özellikler

id

  Stores the statement ID.

# mysqli_stmt::$affected_rows

# mysqli_stmt_affected_rows

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$affected_rows -- mysqli_stmt_affected_rows — Returns the total number of rows changed, deleted, inserted, or matched by the last statement executed

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli_stmt->affected_rows;

Yordamsal kullanım

function mysqli_stmt_affected_rows(mysqli_stmt `$statement`): int|string

Returns the number of rows affected by `INSERT`, `UPDATE`, or `DELETE` query. Works like mysqli_stmt_num_rows() for `SELECT` statements.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records were updated for an `UPDATE` statement, no rows matched the `WHERE` clause in the query or that no query has yet been executed. `-1` indicates that the query returned an error or that, for a `SELECT` query, mysqli_stmt_affected_rows() was called prior to calling mysqli_stmt_store_result().

> Bilginize:

> If the number of affected rows is greater than maximum PHP int value, the number of affected rows will be returned as a string value.

### Örnekler

Örnek 1 mysqli_stmt_affected_rows() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* create temp table */
    $mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");

    $query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

    /* prepare statement */
    $stmt = $mysqli->prepare($query);

    /* Bind variable for placeholder */
    $code = 'A%';
    $stmt->bind_param("s", $code);

    /* execute statement */
    $stmt->execute();

    printf("Rows inserted: %d\n", $stmt->affected_rows);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* create temp table */
    mysqli_query($link, "CREATE TEMPORARY TABLE myCountry LIKE Country");

    $query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

    /* prepare statement */
    $stmt = mysqli_prepare($link, $query);

    /* Bind variable for placeholder */
    $code = 'A%';
    mysqli_stmt_bind_param($stmt, "s", $code);

    /* execute statement */
    mysqli_stmt_execute($stmt);

    printf("Rows inserted: %d\n", mysqli_stmt_affected_rows($stmt));

Yukarıdaki örneklerin çıktısı:

    Rows inserted: 17

### Ayrıca Bakınız

- mysqli_stmt_num_rows() - Returns the number of rows fetched from the server
- mysqli_stmt_store_result() - Stores a result set in an internal buffer

# mysqli_stmt::attr_get

# mysqli_stmt_attr_get

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::attr_get -- mysqli_stmt_attr_get — Used to get the current value of a statement attribute

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::attr_get(int `$attribute`): int

Yordamsal kullanım

function mysqli_stmt_attr_get(mysqli_stmt `$statement`, int `$attribute`): int

Gets the current value of a statement attribute.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`attribute`

  The attribute that you want to get.

### Dönen Değerler

Returns the value of the attribute.

# mysqli_stmt::attr_set

# mysqli_stmt_attr_set

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::attr_set -- mysqli_stmt_attr_set — Used to modify the behavior of a prepared statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::attr_set(int `$attribute`, int `$value`): bool

Yordamsal kullanım

function mysqli_stmt_attr_set(mysqli_stmt `$statement`, int `$attribute`, int `$value`): bool

Used to modify the behavior of a prepared statement. This function may be called multiple times to set several attributes.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`attribute`

  The attribute that you want to set. It can have one of the following values:

  Attribute values
  Character | Description
  --- | ---
  MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH | Setting to `true` causes mysqli_stmt_store_result() to update the metadata `MYSQL_FIELD->max_length` value.
  MYSQLI_STMT_ATTR_CURSOR_TYPE | Type of cursor to open for statement when mysqli_stmt_execute() is invoked. `value` can be `MYSQLI_CURSOR_TYPE_NO_CURSOR` (the default) or `MYSQLI_CURSOR_TYPE_READ_ONLY`.
  MYSQLI_STMT_ATTR_PREFETCH_ROWS | Number of rows to fetch from server at a time when using a cursor. `value` can be in the range from 1 to the maximum value of unsigned long. The default is 1. Removed as of PHP 8.4.0.

  If you use the `MYSQLI_STMT_ATTR_CURSOR_TYPE` option with `MYSQLI_CURSOR_TYPE_READ_ONLY`, a cursor is opened for the statement when you invoke mysqli_stmt_execute(). If there is already an open cursor from a previous mysqli_stmt_execute() call, it closes the cursor before opening a new one. mysqli_stmt_reset() also closes any open cursor before preparing the statement for re-execution. mysqli_stmt_free_result() closes any open cursor.

  If you open a cursor for a prepared statement, mysqli_stmt_store_result() is unnecessary.

`value`

  The value to assign to the attribute.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Ayrıca Bakınız

- » Connector/MySQL mysql_stmt_attr_set()

# mysqli_stmt::bind_param

# mysqli_stmt_bind_param

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Binds variables to a prepared statement as parameters

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::bind_param(string `$types`, mixed `&$var`, mixed `&...$vars`): bool

Yordamsal kullanım

function mysqli_stmt_bind_param(
mysqli_stmt `$statement`,
string `$types`,
mixed `&$var`,
mixed `&...$vars`
): bool

Bind variables for the parameter markers in the SQL statement prepared by mysqli_prepare() or mysqli_stmt_prepare().

> Bilginize:

> If data size of a variable exceeds max. allowed packet size (max_allowed_packet), you have to specify `b` in `types` and use mysqli_stmt_send_long_data() to send the data in packets.

> Bilginize:

> Care must be taken when using mysqli_stmt_bind_param() in conjunction with call_user_func_array(). Note that mysqli_stmt_bind_param() requires parameters to be passed by reference, whereas call_user_func_array() can accept as a parameter a list of variables that can represent references or values.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`types`

  A string that contains one or more characters which specify the types for the corresponding bind variables:

  Type specification chars
  Character | Description
  --- | ---
  i | corresponding variable has type int
  d | corresponding variable has type float
  s | corresponding variable has type string
  b | corresponding variable is a blob and will be sent in packets

`var`
`vars`

  The number of variables and length of string `types` must match the parameters in the statement.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli_stmt::bind_param() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

    $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
    $stmt->bind_param('sssd', $code, $language, $official, $percent);

    $code = 'DEU';
    $language = 'Bavarian';
    $official = "F";
    $percent = 11.2;

    $stmt->execute();

    printf("%d row inserted.\n", $stmt->affected_rows);

    /* Clean up table CountryLanguage */
    $mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
    printf("%d row deleted.\n", $mysqli->affected_rows);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');

    $stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
    mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);

    $code = 'DEU';
    $language = 'Bavarian';
    $official = "F";
    $percent = 11.2;

    mysqli_stmt_execute($stmt);

    printf("%d row inserted.\n", mysqli_stmt_affected_rows($stmt));

    /* Clean up table CountryLanguage */
    mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
    printf("%d row deleted.\n", mysqli_affected_rows($link));

Yukarıdaki örneklerin çıktısı:

    1 row inserted.
    1 row deleted.

Örnek 2 Using `...` to provide arguments

The `...` operator can be used to provide variable-length argument list, e.g. in a `WHERE IN` clause.

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

    $stmt = $mysqli->prepare("SELECT Language FROM CountryLanguage WHERE CountryCode IN (?, ?)");
    /* Using ... to provide arguments */
    $stmt->bind_param('ss', ...['DEU', 'POL']);
    $stmt->execute();
    $stmt->store_result();

    printf("%d rows found.\n", $stmt->num_rows());

Yukarıdaki örneklerin çıktısı:

    10 rows found.

### Ayrıca Bakınız

- mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_send_long_data() - Send data in blocks
- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_error() - Returns a string description for last statement error

# mysqli_stmt::bind_result

# mysqli_stmt_bind_result

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::bind_result -- mysqli_stmt_bind_result — Binds variables to a prepared statement for result storage

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::bind_result(mixed `&$var`, mixed `&...$vars`): bool

Yordamsal kullanım

function mysqli_stmt_bind_result(mysqli_stmt `$statement`, mixed `&$var`, mixed `&...$vars`): bool

Binds columns in the result set to variables.

When mysqli_stmt_fetch() is called to fetch data, the MySQL client/server protocol places the data for the bound columns into the specified variables `var`/`vars`.

A column can be bound or rebound at any time, even after a result set has been partially retrieved. The new binding takes effect the next time mysqli_stmt_fetch() is called.

> Bilginize:

> All columns must be bound after mysqli_stmt_execute() and prior to calling mysqli_stmt_fetch().

> Bilginize:

> Depending on column types bound variables can silently change to the corresponding PHP type.

İpucu

This function is useful for simple results. To retrieve iterable result set, or fetch each row as an array or object, use mysqli_stmt_get_result().

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`var`

  The first variable to be bound.

`vars`

  Further variables to be bound.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* prepare statement */
    $stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5");
    $stmt->execute();

    /* bind variables to prepared statement */
    $stmt->bind_result($col1, $col2);

    /* fetch values */
    while ($stmt->fetch()) {
        printf("%s %s\n", $col1, $col2);
    }

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* prepare statement */
    $stmt = mysqli_prepare($link, "SELECT Code, Name FROM Country ORDER BY Name LIMIT 5");
    mysqli_stmt_execute($stmt);

    /* bind variables to prepared statement */
    mysqli_stmt_bind_result($stmt, $col1, $col2);

    /* fetch values */
    while (mysqli_stmt_fetch($stmt)) {
        printf("%s %s\n", $col1, $col2);
    }

The above examples will output something similar to:

    AFG Afghanistan
    ALB Albania
    DZA Algeria
    ASM American Samoa
    AND Andorra

### Ayrıca Bakınız

- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_prepare() - Prepares an SQL statement for execution

# mysqli_stmt::close

# mysqli_stmt_close

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::close -- mysqli_stmt_close — Closes a prepared statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::close(): true

Yordamsal kullanım

function mysqli_stmt_close(mysqli_stmt `$statement`): true

Closes a prepared statement. mysqli_stmt_close() also deallocates the statement handle. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function now always returns `true`. Previously it returned `false` on failure.

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution

# mysqli_stmt::__construct

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::__construct — Constructs a new mysqli_stmt object

### Açıklama

public function mysqli_stmt::__construct(mysqli `$mysql`, ?string `$query` = `null`)

This method constructs a new mysqli_stmt object.

### Bağımsız Değişkenler

`link`

  A valid mysqli object.

`query`

  The query, as a string. If this parameter is `null`, then the constructor behaves identically to mysqli_stmt_init(), otherwise it behaves as per mysqli_prepare().

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `query` is now nullable.

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_init() - Initializes a statement and returns an object for use with mysqli_stmt_prepare

# mysqli_stmt::data_seek

# mysqli_stmt_data_seek

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::data_seek -- mysqli_stmt_data_seek — Adjusts the result pointer to an arbitrary row in the buffered result

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::data_seek(int `$offset`): void

Yordamsal kullanım

function mysqli_stmt_data_seek(mysqli_stmt `$statement`, int `$offset`): void

This function moves the result set pointer of the buffered result set to an arbitrary row specified by the `offset` parameter.

This function works only on the buffered internal result set. mysqli_stmt_store_result() must be called prior to mysqli_stmt_data_seek().

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`offset`

  Must be between zero and the total number of rows minus one (0.. mysqli_stmt_num_rows() - 1).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name";
    $stmt = $mysqli->prepare($query);
    $stmt->execute();

    $stmt->bind_result($name, $code);

    $stmt->store_result();

    /* seek to row no. 400 */
    $stmt->data_seek(399);

    $stmt->fetch();

    printf("City: %s  Countrycode: %s\n", $name, $code);

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name";
    $stmt = mysqli_prepare($link, $query);

    mysqli_stmt_execute($stmt);

    mysqli_stmt_bind_result($stmt, $name, $code);

    mysqli_stmt_store_result($stmt);

    /* seek to row no. 400 */
    mysqli_stmt_data_seek($stmt, 399);

    mysqli_stmt_fetch($stmt);

    printf("City: %s  Countrycode: %s\n", $name, $code);

Yukarıdaki örneklerin çıktısı:

    City: Benin City  Countrycode: NGA

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_store_result() - Stores a result set in an internal buffer
- mysqli_stmt_num_rows() - Returns the number of rows fetched from the server
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_stmt::$errno

# mysqli_stmt_errno

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$errno -- mysqli_stmt_errno — Returns the error code for the most recent statement call

### Açıklama

Nesne yönelimli kullanım

int $mysqli_stmt->errno;

Yordamsal kullanım

function mysqli_stmt_errno(mysqli_stmt `$statement`): int

Returns the error code for the most recently invoked statement function that can succeed or fail.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

An error code value. Zero means no error occurred.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    /* Open a connection */
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $mysqli->query("CREATE TABLE myCountry LIKE Country");
    $mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = $mysqli->prepare($query)) {

        /* drop table */
        $mysqli->query("DROP TABLE myCountry");

        /* execute query */
        $stmt->execute();

        printf("Error: %d.\n", $stmt->errno);

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    /* Open a connection */
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
    mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = mysqli_prepare($link, $query)) {

        /* drop table */
        mysqli_query($link, "DROP TABLE myCountry");

        /* execute query */
        mysqli_stmt_execute($stmt);

        printf("Error: %d.\n", mysqli_stmt_errno($stmt));

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error: 1146.

### Ayrıca Bakınız

- mysqli_stmt_error() - Returns a string description for last statement error
- mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

# mysqli_stmt::$error

# mysqli_stmt_error

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$error -- mysqli_stmt_error — Returns a string description for last statement error

### Açıklama

Nesne yönelimli kullanım

string $mysqli_stmt->error;

Yordamsal kullanım

function mysqli_stmt_error(mysqli_stmt `$statement`): string

Returns a string containing the error message for the most recently invoked statement function that can succeed or fail.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

A string that describes the error. An empty string if no error occurred.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    /* Open a connection */
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $mysqli->query("CREATE TABLE myCountry LIKE Country");
    $mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = $mysqli->prepare($query)) {

        /* drop table */
        $mysqli->query("DROP TABLE myCountry");

        /* execute query */
        $stmt->execute();

        printf("Error: %s.\n", $stmt->error);

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    /* Open a connection */
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
    mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = mysqli_prepare($link, $query)) {

        /* drop table */
        mysqli_query($link, "DROP TABLE myCountry");

        /* execute query */
        mysqli_stmt_execute($stmt);

        printf("Error: %s.\n", mysqli_stmt_error($stmt));

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error: Table 'world.myCountry' doesn't exist.

### Ayrıca Bakınız

- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

# mysqli_stmt::$error_list

# mysqli_stmt_error_list

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

mysqli_stmt::$error_list -- mysqli_stmt_error_list — Returns a list of errors from the last statement executed

### Açıklama

Nesne yönelimli kullanım

array $mysqli_stmt->error_list;

Yordamsal kullanım

function mysqli_stmt_error_list(mysqli_stmt `$statement`): array

Returns an array of errors for the most recently invoked statement function that can succeed or fail.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

A list of errors, each as an associative array containing the errno, error, and sqlstate.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    /* Open a connection */
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $mysqli->query("CREATE TABLE myCountry LIKE Country");
    $mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = $mysqli->prepare($query)) {

        /* drop table */
        $mysqli->query("DROP TABLE myCountry");

        /* execute query */
        $stmt->execute();

        echo "Error:\n";
        print_r($stmt->error_list);

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    /* Open a connection */
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
    mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = mysqli_prepare($link, $query)) {

        /* drop table */
        mysqli_query($link, "DROP TABLE myCountry");

        /* execute query */
        mysqli_stmt_execute($stmt);

        echo "Error:\n";
        print_r(mysqli_stmt_error_list($stmt));

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error:
    Array
    (
        [0] => Array
            (
                [errno] => 1146
                [sqlstate] => 42S02
                [error] => Table 'world.myCountry' doesn't exist
            )

    )

### Ayrıca Bakınız

- mysqli_stmt_error() - Returns a string description for last statement error
- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

# mysqli_stmt::execute

# mysqli_stmt_execute

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::execute -- mysqli_stmt_execute — Executes a prepared statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::execute(?array `$params` = `null`): bool

Yordamsal kullanım

function mysqli_stmt_execute(mysqli_stmt `$statement`, ?array `$params` = `null`): bool

Executes previously prepared statement. The statement must be successfully prepared prior to execution, using either the mysqli_prepare() or mysqli_stmt_prepare() function, or by passing the second argument to mysqli_stmt::__construct().

If the statement is `UPDATE`, `DELETE`, or `INSERT`, the total number of affected rows can be determined by using the mysqli_stmt_affected_rows() function. If the query yields a result set, it can be fetched using mysqli_stmt_get_result() function or by fetching it row by row directly from the statement using mysqli_stmt_fetch() function.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`params`

  An optional list array with as many elements as there are bound parameters in the SQL statement being executed. Each value is treated as a string.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The optional `params` parameter has been added.

### Örnekler

Örnek 1 Execute a prepared statement with bound variables

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");

    /* Prepare an insert statement */
    $stmt = $mysqli->prepare("INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)");

    /* Bind variables to parameters */
    $stmt->bind_param("sss", $val1, $val2, $val3);

    $val1 = 'Stuttgart';
    $val2 = 'DEU';
    $val3 = 'Baden-Wuerttemberg';

    /* Execute the statement */
    $stmt->execute();

    $val1 = 'Bordeaux';
    $val2 = 'FRA';
    $val3 = 'Aquitaine';

    /* Execute the statement */
    $stmt->execute();

    /* Retrieve all rows from myCity */
    $query = "SELECT Name, CountryCode, District FROM myCity";
    $result = $mysqli->query($query);
    while ($row = $result->fetch_row()) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");

    /* Prepare an insert statement */
    $stmt = mysqli_prepare($link, "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)");

    /* Bind variables to parameters */
    mysqli_stmt_bind_param($stmt, "sss", $val1, $val2, $val3);

    $val1 = 'Stuttgart';
    $val2 = 'DEU';
    $val3 = 'Baden-Wuerttemberg';

    /* Execute the statement */
    mysqli_stmt_execute($stmt);

    $val1 = 'Bordeaux';
    $val2 = 'FRA';
    $val3 = 'Aquitaine';

    /* Execute the statement */
    mysqli_stmt_execute($stmt);

    /* Retrieve all rows from myCity */
    $query = "SELECT Name, CountryCode, District FROM myCity";
    $result = mysqli_query($link, $query);
    while ($row = mysqli_fetch_row($result)) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }

Yukarıdaki örneklerin çıktısı:

    Stuttgart (DEU,Baden-Wuerttemberg)
    Bordeaux (FRA,Aquitaine)

Örnek 2 Execute a prepared statement with an array of values

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

    $mysqli->query('CREATE TEMPORARY TABLE myCity LIKE City');

    /* Prepare an insert statement */
    $stmt = $mysqli->prepare('INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)');

    /* Execute the statement */
    $stmt->execute(['Stuttgart', 'DEU', 'Baden-Wuerttemberg']);

    /* Retrieve all rows from myCity */
    $query = 'SELECT Name, CountryCode, District FROM myCity';
    $result = $mysqli->query($query);
    while ($row = $result->fetch_row()) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');

    mysqli_query($link, 'CREATE TEMPORARY TABLE myCity LIKE City');

    /* Prepare an insert statement */
    $stmt = mysqli_prepare($link, 'INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)');

    /* Execute the statement */
    mysqli_stmt_execute($stmt, ['Stuttgart', 'DEU', 'Baden-Wuerttemberg']);

    /* Retrieve all rows from myCity */
    $query = 'SELECT Name, CountryCode, District FROM myCity';
    $result = mysqli_query($link, $query);
    while ($row = mysqli_fetch_row($result)) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }

Yukarıdaki örneklerin çıktısı:

    Stuttgart (DEU,Baden-Wuerttemberg)

### Ayrıca Bakınız

- mysqli_execute_query() - Prepares, binds parameters, and executes SQL statement
- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object

# mysqli_stmt::fetch

# mysqli_stmt_fetch

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::fetch -- mysqli_stmt_fetch — Fetch results from a prepared statement into the bound variables

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::fetch(): ?bool

Yordamsal kullanım

function mysqli_stmt_fetch(mysqli_stmt `$statement`): ?bool

Fetch the result from a prepared statement into the variables bound by mysqli_stmt_bind_result().

> Bilginize:

> Note that all columns must be bound by the application before calling mysqli_stmt_fetch().

> Bilginize:

> Data is transferred unbuffered without calling mysqli_stmt_store_result() which can decrease performance (but reduces memory cost).

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Dönen Değerler
Value | Description
--- | ---
`true` | Success. Data has been fetched
`false` | Error occurred
`null` | No more rows/data exists or data truncation occurred

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";

    if ($stmt = $mysqli->prepare($query)) {

        /* execute statement */
        $stmt->execute();

        /* bind result variables */
        $stmt->bind_result($name, $code);

        /* fetch values */
        while ($stmt->fetch()) {
            printf ("%s (%s)\n", $name, $code);
        }

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";

    if ($stmt = mysqli_prepare($link, $query)) {

        /* execute statement */
        mysqli_stmt_execute($stmt);

        /* bind result variables */
        mysqli_stmt_bind_result($stmt, $name, $code);

        /* fetch values */
        while (mysqli_stmt_fetch($stmt)) {
            printf ("%s (%s)\n", $name, $code);
        }

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Rockford (USA)
    Tallahassee (USA)
    Salinas (USA)
    Santa Clarita (USA)
    Springfield (USA)

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_error() - Returns a string description for last statement error
- mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage

# mysqli_stmt::$field_count

# mysqli_stmt_field_count

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$field_count -- mysqli_stmt_field_count — Returns the number of columns in the given statement

### Açıklama

Nesne yönelimli kullanım

int $mysqli_stmt->field_count;

Yordamsal kullanım

function mysqli_stmt_field_count(mysqli_stmt `$statement`): int

Returns the number of columns in the prepared statement.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns an integer representing the number of columns.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $code = 'FR';

    $stmt = $mysqli->prepare("SELECT Name FROM Country WHERE Code=?");
    $stmt->bind_param('s', $code);
    $stmt->execute();
    $row = $stmt->get_result()->fetch_row();
    for ($i = 0; $i < $stmt->field_count; $i++) {
        printf("Value of column number %d is %s", $i, $row[$i]);
    }

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $code = 'FR';

    $stmt = mysqli_prepare($mysqli, "SELECT Name FROM Country WHERE Code=?");
    mysqli_stmt_bind_param($stmt, 's', $code);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    $row = mysqli_fetch_row($result);
    for ($i = 0; $i < mysqli_stmt_field_count($stmt); $i++) {
        printf("Value of column number %d is %s", $i, $row[$i]);
    }

The above examples will output something similar to:

    Value of column number 0 is France

### Ayrıca Bakınız

- mysqli_stmt_num_rows() - Returns the number of rows fetched from the server

# mysqli_stmt::free_result

# mysqli_stmt_free_result

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::free_result -- mysqli_stmt_free_result — Frees stored result memory for the given statement handle

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::free_result(): void

Yordamsal kullanım

function mysqli_stmt_free_result(mysqli_stmt `$statement`): void

Frees the result memory associated with the statement, which was allocated by mysqli_stmt_store_result().

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- mysqli_stmt_store_result() - Stores a result set in an internal buffer

# mysqli_stmt::get_result

# mysqli_stmt_get_result

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli_stmt::get_result -- mysqli_stmt_get_result — Gets a result set from a prepared statement as a mysqli_result object

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::get_result(): mysqli_result|false

Yordamsal kullanım

function mysqli_stmt_get_result(mysqli_stmt `$statement`): mysqli_result|false

Retrieves a result set from a prepared statement as a mysqli_result object. The data will be fetched from the MySQL server to PHP. This method should be called only for queries which produce a result set.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

> Bilginize:

> This function cannot be used together with mysqli_stmt_store_result(). Both of these functions retrieve the full result set from the MySQL server.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns `false` on failure. For successful queries which produce a result set, such as `SELECT, SHOW, DESCRIBE` or `EXPLAIN`, mysqli_stmt_get_result() will return a mysqli_result object. For other successful queries, mysqli_stmt_get_result() will return `false`. The mysqli_stmt_errno() function can be used to distinguish between the two reasons for `false`; due to a bug, prior to PHP 7.4.13, mysqli_errno() had to be used for this purpose.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";

    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("s", $continent);

    $continentList = array('Europe', 'Africa', 'Asia', 'North America');

    foreach ($continentList as $continent) {
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_array(MYSQLI_NUM)) {
            foreach ($row as $r) {
                print "$r ";
            }
            print "\n";
        }
    }

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";

    $stmt = mysqli_prepare($link, $query);
    mysqli_stmt_bind_param($stmt, "s", $continent);

    $continentList= array('Europe', 'Africa', 'Asia', 'North America');

    foreach ($continentList as $continent) {
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
            foreach ($row as $r) {
                print "$r ";
            }
            print "\n";
        }
    }

The above examples will output something similar to:

    Albania 3401200 Europe
    Algeria 31471000 Africa
    Afghanistan 22720000 Asia
    Anguilla 8000 North America

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_result_metadata() - Returns result set metadata from a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_stmt_store_result() - Stores a result set in an internal buffer

# mysqli_stmt::get_warnings

# mysqli_stmt_get_warnings

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

mysqli_stmt::get_warnings -- mysqli_stmt_get_warnings — Get result of SHOW WARNINGS

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::get_warnings(): mysqli_warning|false

Yordamsal kullanım

function mysqli_stmt_get_warnings(mysqli_stmt `$statement`): mysqli_warning|false
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# mysqli_stmt::$insert_id

# mysqli_stmt_insert_id

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$insert_id -- mysqli_stmt_insert_id — Get the ID generated from the previous INSERT operation

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli_stmt->insert_id;

Yordamsal kullanım

function mysqli_stmt_insert_id(mysqli_stmt `$statement`): int|string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# mysqli_stmt::more_results

# mysqli_stmt_more_results

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli_stmt::more_results -- mysqli_stmt_more_results — Check if there are more query results from a multiple query

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::more_results(): bool

Yordamsal kullanım:

function mysqli_stmt_more_results(mysqli_stmt `$statement`): bool

Checks if there are more query results from a multiple query.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns `true` if more results exist, otherwise `false`.

### Ayrıca Bakınız

- mysqli_stmt::next_result() - Reads the next result from a multiple query
- mysqli::multi_query() - Performs one or more queries on the database

# mysqli_stmt::next_result

# mysqli_stmt_next_result

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli_stmt::next_result -- mysqli_stmt_next_result — Reads the next result from a multiple query

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::next_result(): bool

Yordamsal kullanım:

function mysqli_stmt_next_result(mysqli_stmt `$statement`): bool

Reads the next result from a multiple query.

> Bilginize:

> Prior to PHP 8.1.0, available only with mysqlnd.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Now also available when linking against libmysqlclient.

### Ayrıca Bakınız

- mysqli_stmt::more_results() - Check if there are more query results from a multiple query
- mysqli::multi_query() - Performs one or more queries on the database

# mysqli_stmt::$num_rows

# mysqli_stmt::num_rows

# mysqli_stmt_num_rows

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$num_rows -- mysqli_stmt::num_rows -- mysqli_stmt_num_rows — Returns the number of rows fetched from the server

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli_stmt->num_rows;
public function mysqli_stmt::num_rows(): int|string

Yordamsal kullanım

function mysqli_stmt_num_rows(mysqli_stmt `$statement`): int|string

Returns the number of rows buffered in the statement. This function will only work after mysqli_stmt_store_result() is called to buffer the entire result set in the statement handle.

This function returns `0` unless all rows have been fetched from the server.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

An int representing the number of buffered rows. Returns `0` in unbuffered mode unless all rows have been fetched from the server.

> Bilginize:

> Satır sayısı `PHP_INT_MAX`'tan büyükse, sayı string türünde döndürülür.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
    $stmt = $mysqli->prepare($query);
    $stmt->execute();

    /* store the result in an internal buffer */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
    $stmt = mysqli_prepare($link, $query);
    mysqli_stmt_execute($stmt);

    /* store the result in an internal buffer */
    mysqli_stmt_store_result($stmt);

    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

Yukarıdaki örneklerin çıktısı:

    Number of rows: 20.

### Ayrıca Bakınız

- mysqli_stmt_store_result() - Stores a result set in an internal buffer
- mysqli_stmt_affected_rows() - Returns the total number of rows changed, deleted, inserted, or matched by the last statement executed
- mysqli_prepare() - Prepares an SQL statement for execution

# mysqli_stmt::$param_count

# mysqli_stmt_param_count

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$param_count -- mysqli_stmt_param_count — Returns the number of parameters for the given statement

### Açıklama

Nesne yönelimli kullanım

int $mysqli_stmt->param_count;

Yordamsal kullanım

function mysqli_stmt_param_count(mysqli_stmt `$statement`): int

Returns the number of parameter markers present in the prepared statement.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns an integer representing the number of parameters.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if ($stmt = $mysqli->prepare("SELECT Name FROM Country WHERE Name=? OR Code=?")) {

        $marker = $stmt->param_count;
        printf("Statement has %d markers.\n", $marker);

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if ($stmt = mysqli_prepare($link, "SELECT Name FROM Country WHERE Name=? OR Code=?")) {

        $marker = mysqli_stmt_param_count($stmt);
        printf("Statement has %d markers.\n", $marker);

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Statement has 2 markers.

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution

# mysqli_stmt::prepare

# mysqli_stmt_prepare

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::prepare -- mysqli_stmt_prepare — Prepares an SQL statement for execution

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::prepare(string `$query`): bool

Yordamsal kullanım

function mysqli_stmt_prepare(mysqli_stmt `$statement`, string `$query`): bool

Prepares a statement for execution. The query must consist of a single SQL statement.

The statement template can contain zero or more question mark (`?`) parameter markers⁠—also called placeholders. The parameter markers must be bound to application variables using mysqli_stmt_bind_param() before executing the statement.

> Bilginize:

> In the case where a statement is passed to mysqli_stmt_prepare() that is longer than `max_allowed_packet` of the server, the returned error codes are different depending on whether you are using MySQL Native Driver (`mysqlnd`) or MySQL Client Library (`libmysqlclient`). The behavior is as follows:

> - `mysqlnd` on Linux returns an error code of 1153. The error message means got a packet bigger than `max_allowed_packet` bytes.

> - `mysqlnd` on Windows returns an error code 2006. This error message means server has gone away.

> - `libmysqlclient` on all platforms returns an error code 2006. This error message means server has gone away.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`query`

  The query, as a string. It must consist of a single SQL statement.

  The SQL statement may contain zero or more parameter markers represented by question mark (`?`) characters at the appropriate positions.

  > Bilginize:

  > The markers are legal only in certain places in SQL statements. For example, they are permitted in the `VALUES()` list of an `INSERT` statement (to specify column values for a row), or in a comparison with a column in a `WHERE` clause to specify a comparison value. However, they are not permitted for identifiers (such as table or column names).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 mysqli_stmt::prepare() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $city = "Amersfoort";

    /* create a prepared statement */
    $stmt = $mysqli->stmt_init();
    $stmt->prepare("SELECT District FROM City WHERE Name=?");

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $city = "Amersfoort";

    /* create a prepared statement */
    $stmt = mysqli_stmt_init($link);
    mysqli_stmt_prepare($stmt, "SELECT District FROM City WHERE Name=?");

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

Yukarıdaki örneklerin çıktısı:

    Amersfoort is in district Utrecht

### Ayrıca Bakınız

- mysqli_stmt_init() - Initializes a statement and returns an object for use with mysqli_stmt_prepare
- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
- mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object
- mysqli_stmt_close() - Closes a prepared statement

# mysqli_stmt::reset

# mysqli_stmt_reset

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::reset -- mysqli_stmt_reset — Resets a prepared statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::reset(): bool

Yordamsal kullanım

function mysqli_stmt_reset(mysqli_stmt `$statement`): bool

Resets a prepared statement on client and server to state after prepare.

It resets the statement on the server, data sent using mysqli_stmt_send_long_data(), unbuffered result sets and current errors. It does not clear bindings or stored result sets. Stored result sets will be cleared when executing the prepared statement (or closing it).

To prepare a statement with another query use function mysqli_stmt_prepare().

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution

# mysqli_stmt::result_metadata

# mysqli_stmt_result_metadata

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::result_metadata -- mysqli_stmt_result_metadata — Returns result set metadata from a prepared statement

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::result_metadata(): mysqli_result|false

Yordamsal kullanım

function mysqli_stmt_result_metadata(mysqli_stmt `$statement`): mysqli_result|false

If a statement passed to mysqli_prepare() is one that produces a result set, mysqli_stmt_result_metadata() returns the result object that can be used to process the meta information such as total number of fields and individual field information.

This function returns an empty mysqli_result object which can be used to access metadata information from the prepared statement without having to fetch the actual rows of data. There is no need to use this function when using mysqli_stmt_get_result() to retrieve the entire result set from a prepared statement as a result object.

> Bilginize:

> This result set object can be passed as an argument only to the field-based functions that process result set metadata, such as:

> - mysqli_num_fields()

> - mysqli_fetch_field()

> - mysqli_fetch_field_direct()

> - mysqli_fetch_fields()

> - mysqli_field_count()

> - mysqli_field_seek()

> - mysqli_field_tell()

> - mysqli_free_result()

> Bilginize: The result set returned by mysqli_stmt_result_metadata() contains only metadata. It does not contain any row results. The rows are obtained by calling mysqli_stmt_get_result() on the statement handle or with mysqli_stmt_fetch().

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns a result object or `false` if an error occurred. If the statement does not produce a result set, `false` is returned as well.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");

    $mysqli->query("DROP TABLE IF EXISTS friends");
    $mysqli->query("CREATE TABLE friends (id int, name varchar(20))");

    $mysqli->query("INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

    $stmt = $mysqli->prepare("SELECT id, name FROM friends");
    $stmt->execute();

    /* get resultset for metadata */
    $result = $stmt->result_metadata();

    /* retrieve field information from metadata result set */
    $field = $result->fetch_field();

    printf("Fieldname: %s\n", $field->name);
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "test");

    mysqli_query($link, "DROP TABLE IF EXISTS friends");
    mysqli_query($link, "CREATE TABLE friends (id int, name varchar(20))");

    mysqli_query($link, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

    $stmt = mysqli_prepare($link, "SELECT id, name FROM friends");
    mysqli_stmt_execute($stmt);

    /* get resultset for metadata */
    $result = mysqli_stmt_result_metadata($stmt);

    /* retrieve field information from metadata result set */
    $field = mysqli_fetch_field($result);

    printf("Fieldname: %s\n", $field->name);
    ?>

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_free_result() - Frees the memory associated with a result
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object

# mysqli_stmt::send_long_data

# mysqli_stmt_send_long_data

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::send_long_data -- mysqli_stmt_send_long_data — Send data in blocks

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::send_long_data(int `$param_num`, string `$data`): bool

Yordamsal kullanım

function mysqli_stmt_send_long_data(mysqli_stmt `$statement`, int `$param_num`, string `$data`): bool

Allows to send parameter data to the server in pieces (or chunks), e.g. if the size of a blob exceeds the size of `max_allowed_packet`. This function can be called multiple times to send the parts of a character or binary data value for a column, which must be one of the TEXT or BLOB datatypes.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

`param_num`

  Indicates which parameter to associate the data with. Parameters are numbered beginning with 0.

`data`

  A string containing data to be sent.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
    $null = NULL;
    $stmt->bind_param("b", $null);
    $fp = fopen("messages.txt", "r");
    while (!feof($fp)) {
        $stmt->send_long_data(0, fread($fp, 8192));
    }
    fclose($fp);
    $stmt->execute();
    ?>

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters

# mysqli_stmt::$sqlstate

# mysqli_stmt_sqlstate

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$sqlstate -- mysqli_stmt_sqlstate — Returns SQLSTATE error from previous statement operation

### Açıklama

Nesne yönelimli kullanım

string $mysqli_stmt->sqlstate;

Yordamsal kullanım

function mysqli_stmt_sqlstate(mysqli_stmt `$statement`): string

Returns a string containing the SQLSTATE error code for the most recently invoked prepared statement function that can succeed or fail. The error code consists of five characters. `'00000'` means no error. The values are specified by ANSI SQL and ODBC. For a list of possible values, see » http://dev.mysql.com/doc/mysql/en/error-handling.html.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. `'00000'` means no error.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    /* Open a connection */
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $mysqli->query("CREATE TABLE myCountry LIKE Country");
    $mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = $mysqli->prepare($query)) {

        /* drop table */
        $mysqli->query("DROP TABLE myCountry");

        /* execute query */
        $stmt->execute();

        printf("Error: %s.\n", $stmt->sqlstate);

        /* close statement */
        $stmt->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    /* Open a connection */
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
    mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

    $query = "SELECT Name, Code FROM myCountry ORDER BY Name";
    if ($stmt = mysqli_prepare($link, $query)) {

        /* drop table */
        mysqli_query($link, "DROP TABLE myCountry");

        /* execute query */
        mysqli_stmt_execute($stmt);

        printf("Error: %s.\n", mysqli_stmt_sqlstate($stmt));

        /* close statement */
        mysqli_stmt_close($stmt);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Error: 42S02.

### Notlar

> Bilginize:

> Note that not all MySQL errors are yet mapped to SQLSTATE's. The value `HY000` (general error) is used for unmapped errors.

### Ayrıca Bakınız

- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_error() - Returns a string description for last statement error

# mysqli_stmt::store_result

# mysqli_stmt_store_result

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::store_result -- mysqli_stmt_store_result — Stores a result set in an internal buffer

### Açıklama

Nesne yönelimli kullanım

public function mysqli_stmt::store_result(): bool

Yordamsal kullanım

function mysqli_stmt_store_result(mysqli_stmt `$statement`): bool

This function should be called for queries that successfully produce a result set (e.g. `SELECT, SHOW, DESCRIBE, EXPLAIN`) only if the complete result set needs to be buffered in PHP. Each subsequent mysqli_stmt_fetch() call will return buffered data.

> Bilginize:

> It is unnecessary to call mysqli_stmt_store_result() for other queries, but if you do, it will not harm or cause any notable performance loss in all cases. You can detect whether the query produced a result set by checking if mysqli_stmt_result_metadata() returns `false`.

### Bağımsız Değişkenler

`deyim`

  Sadece yordamsal tarz: mysqli_stmt_init() işlevinden dönen bir mysqli_stmt nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
    $stmt = $mysqli->prepare($query);
    $stmt->execute();

    /* store the result in an internal buffer */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
    $stmt = mysqli_prepare($link, $query);
    mysqli_stmt_execute($stmt);

    /* store the result in an internal buffer */
    mysqli_stmt_store_result($stmt);

    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

Yukarıdaki örneklerin çıktısı:

    Number of rows: 20.

### Ayrıca Bakınız

- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_result_metadata() - Returns result set metadata from a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables

## İçindekiler

- mysqli_stmt::$affected_rows — Returns the total number of rows changed, deleted, inserted, or matched by the last statement executed
- mysqli_stmt::attr_get — Used to get the current value of a statement attribute
- mysqli_stmt::attr_set — Used to modify the behavior of a prepared statement
- mysqli_stmt::bind_param — Binds variables to a prepared statement as parameters
- mysqli_stmt::bind_result — Binds variables to a prepared statement for result storage
- mysqli_stmt::close — Closes a prepared statement
- mysqli_stmt::__construct — Constructs a new mysqli_stmt object
- mysqli_stmt::data_seek — Adjusts the result pointer to an arbitrary row in the buffered result
- mysqli_stmt::$errno — Returns the error code for the most recent statement call
- mysqli_stmt::$error — Returns a string description for last statement error
- mysqli_stmt::$error_list — Returns a list of errors from the last statement executed
- mysqli_stmt::execute — Executes a prepared statement
- mysqli_stmt::fetch — Fetch results from a prepared statement into the bound variables
- mysqli_stmt::$field_count — Returns the number of columns in the given statement
- mysqli_stmt::free_result — Frees stored result memory for the given statement handle
- mysqli_stmt::get_result — Gets a result set from a prepared statement as a mysqli_result object
- mysqli_stmt::get_warnings — Get result of SHOW WARNINGS
- mysqli_stmt::$insert_id — Get the ID generated from the previous INSERT operation
- mysqli_stmt::more_results — Check if there are more query results from a multiple query
- mysqli_stmt::next_result — Reads the next result from a multiple query
- mysqli_stmt::$num_rows — Returns the number of rows fetched from the server
- mysqli_stmt::$param_count — Returns the number of parameters for the given statement
- mysqli_stmt::prepare — Prepares an SQL statement for execution
- mysqli_stmt::reset — Resets a prepared statement
- mysqli_stmt::result_metadata — Returns result set metadata from a prepared statement
- mysqli_stmt::send_long_data — Send data in blocks
- mysqli_stmt::$sqlstate — Returns SQLSTATE error from previous statement operation
- mysqli_stmt::store_result — Stores a result set in an internal buffer

# The mysqli_result class

(PHP 5, PHP 7, PHP 8)

## Giriş

Represents the result set obtained from a query against the database.

## Sınıf Sözdizimi

class mysqli_result implements IteratorAggregate {
/* Özellikler */
public readonly int $current_field;
public readonly int $field_count;
public readonly ?array $lengths;
public readonly int|string $num_rows;
public int $type;
/* Yöntemler */
public function __construct(mysqli `$mysql`, int `$result_mode` = `MYSQLI_STORE_RESULT`)
public function data_seek(int `$offset`): bool
public function fetch_all(int `$mode` = `MYSQLI_NUM`): array
public function fetch_array(int `$mode` = `MYSQLI_BOTH`): array|null|false
public function fetch_assoc(): array|null|false
public function fetch_column(int `$column` = 0): null|int|float|string|false
public function fetch_field(): object|false
public function fetch_field_direct(int `$index`): object|false
public function fetch_fields(): array
public function fetch_object(string `$class` = "stdClass", array `$constructor_args` = []): object|null|false
public function fetch_row(): array|null|false
public function field_seek(int `$index`): true
public function free(): void
public function close(): void
public function free_result(): void
public function getIterator(): Iterator
}

## Özellikler

type

  Stores whether the result is buffered or unbuffered as an int (`MYSQLI_STORE_RESULT` or `MYSQLI_USE_RESULT`, respectively).

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | mysqli_result implements IteratorAggregate now. Previously, Traversable was implemented instead.

# mysqli_result::__construct

(PHP 5, PHP 7, PHP 8)

mysqli_result::__construct — Constructs a mysqli_result object

### Açıklama

public function mysqli_result::__construct(mysqli `$mysql`, int `$result_mode` = `MYSQLI_STORE_RESULT`)

This method constructs a new mysqli_result object.

It can be used to create the mysqli_result object after calling the mysqli_real_query() or mysqli_multi_query() function. Constructing the object manually is equivalent to calling the mysqli_store_result() or mysqli_use_result() function.

### Bağımsız Değişkenler

`bağlantı`

  Sadece yordamsal tarz: mysqli_connect() veya mysqli_init() işlevinden dönen bir mysqli nesnesi.

`result_mode`

  The result mode can be one of 2 constants indicating how the result will be returned from the MySQL server.

  `MYSQLI_STORE_RESULT` (default) - creates a mysqli_result object with buffered result set.

  `MYSQLI_USE_RESULT` - creates a mysqli_result object with unbuffered result set. As long as there are pending records waiting to be fetched, the connection line will be busy and all subsequent calls will return error `Commands out of sync`. To avoid the error all records must be fetched from the server or the result set must be discarded by calling mysqli_free_result(). The connection must remain open for the rows to be fetched.

### Hatalar/İstisnalar

Eğer mysqli hata bildirimi etkinse (`MYSQLI_REPORT_ERROR`) ve istenen işlem başarısız olursa bir uyarı üretilir. Ek olarak, kip `MYSQLI_REPORT_STRICT` ise bunun yerine mysqli_sql_exception istisnası oluşur.

### Örnekler

Örnek 1 Creation of a mysqli_result object

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* Select queries return a result set */
    $mysqli->real_query("SELECT Name FROM City LIMIT 10");

    $result = new mysqli_result($mysqli);
    printf("Select returned %d rows.\n", $result->num_rows);

The above examples will output something similar to:

    Select returned 10 rows.

### Ayrıca Bakınız

- mysqli_multi_query() - Performs one or more queries on the database
- mysqli_real_query() - Execute an SQL query
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli_result::$current_field

# mysqli_field_tell

(PHP 5, PHP 7, PHP 8)

mysqli_result::$current_field -- mysqli_field_tell — Get current field offset of a result pointer

### Açıklama

Nesne yönelimli kullanım

int $mysqli_result->current_field;

Yordamsal kullanım

function mysqli_field_tell(mysqli_result `$result`): int

Returns the position of the field cursor used for the last mysqli_fetch_field() call. This value can be used as an argument to mysqli_field_seek().

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Returns current offset of field cursor.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = $mysqli->query($query)) {

        /* Get field information for all columns */
        while ($finfo = $result->fetch_field()) {

            /* get fieldpointer offset */
            $currentfield = $result->current_field;

            printf("Column %d:\n", $currentfield);
            printf("Name:     %s\n", $finfo->name);
            printf("Table:    %s\n", $finfo->table);
            printf("max. Len: %d\n", $finfo->max_length);
            printf("Flags:    %d\n", $finfo->flags);
            printf("Type:     %d\n\n", $finfo->type);
        }
        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = mysqli_query($link, $query)) {

        /* Get field information for all fields */
        while ($finfo = mysqli_fetch_field($result)) {

            /* get fieldpointer offset */
            $currentfield = mysqli_field_tell($result);

            printf("Column %d:\n", $currentfield);
            printf("Name:     %s\n", $finfo->name);
            printf("Table:    %s\n", $finfo->table);
            printf("max. Len: %d\n", $finfo->max_length);
            printf("Flags:    %d\n", $finfo->flags);
            printf("Type:     %d\n\n", $finfo->type);
        }
        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Column 1:
    Name:     Name
    Table:    Country
    max. Len: 11
    Flags:    1
    Type:     254

    Column 2:
    Name:     SurfaceArea
    Table:    Country
    max. Len: 10
    Flags:    32769
    Type:     4

### Ayrıca Bakınız

- mysqli_fetch_field() - Returns the next field in the result set
- mysqli_field_seek() - Set result pointer to a specified field offset

# mysqli_result::data_seek

# mysqli_data_seek

(PHP 5, PHP 7, PHP 8)

mysqli_result::data_seek -- mysqli_data_seek — Adjusts the result pointer to an arbitrary row in the result

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::data_seek(int `$offset`): bool

Yordamsal kullanım

function mysqli_data_seek(mysqli_result `$result`, int `$offset`): bool

The mysqli_data_seek() function seeks to an arbitrary result pointer specified by the `offset` in the result set.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`offset`

  The row offset. Must be between zero and the total number of rows minus one (0..mysqli_num_rows() - 1).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysqli::data_seek() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name";
    $result = $mysqli->query($query);

    /* Seek to row no. 401 */
    $result->data_seek(400);

    /* Fetch single row */
    $row = $result->fetch_row();

    printf("City: %s  Countrycode: %s\n", $row[0], $row[1]);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name";

    $result = mysqli_query($link, $query);

    /* Seek to row no. 401 */
    mysqli_data_seek($result, 400);

    /* Fetch single row */
    $row = mysqli_fetch_row($result);

    printf ("City: %s  Countrycode: %s\n", $row[0], $row[1]);

Yukarıdaki örneklerin çıktısı:

    City: Benin City  Countrycode: NGA

Örnek 2 Adjusting the result pointer when iterating

This function can be useful when iterating over the result set to impose a custom order or rewind the result set when iterating multiple times.

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 15,4";
    $result = $mysqli->query($query);

    /* Iterate the result set in reverse order */
    for ($row_no = $result->num_rows - 1; $row_no >= 0; $row_no--) {
        $result->data_seek($row_no);

        /* Fetch single row */
        $row = $result->fetch_row();

        printf("City: %s  Countrycode: %s\n", $row[0], $row[1]);
    }

    /* Reset pointer to the beginning of the result set */
    $result->data_seek(0);

    print "\n";

    /* Iterate the same result set again */
    while ($row = $result->fetch_row()) {
        printf("City: %s  Countrycode: %s\n", $row[0], $row[1]);
    }

Yukarıdaki örneklerin çıktısı:

    City: Acmbaro  Countrycode: MEX
    City: Abuja  Countrycode: NGA
    City: Abu Dhabi  Countrycode: ARE
    City: Abottabad  Countrycode: PAK

    City: Abottabad  Countrycode: PAK
    City: Abu Dhabi  Countrycode: ARE
    City: Abuja  Countrycode: NGA
    City: Acmbaro  Countrycode: MEX

### Notlar

> Bilginize:

> This function can only be used with buffered results attained from the use of the mysqli_store_result(), mysqli_query() or mysqli_stmt_get_result() functions.

### Ayrıca Bakınız

- mysqli_store_result() - Transfers a result set from the last query
- mysqli_fetch_row() - Fetch the next row of a result set as an enumerated array
- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_assoc() - Fetch the next row of a result set as an associative array
- mysqli_fetch_object() - Fetch the next row of a result set as an object
- mysqli_query() - Performs a query on the database
- mysqli_num_rows() - Gets the number of rows in the result set

# mysqli_result::fetch_all

# mysqli_fetch_all

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli_result::fetch_all -- mysqli_fetch_all — Fetch all result rows as an associative array, a numeric array, or both

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_all(int `$mode` = `MYSQLI_NUM`): array

Yordamsal kullanım

function mysqli_fetch_all(mysqli_result `$result`, int `$mode` = `MYSQLI_NUM`): array

Returns a two-dimensional array of all result rows as an associative array, a numeric array, or both.

> Bilginize:

> Prior to PHP 8.1.0, available only with mysqlnd.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`mode`

  This optional parameter is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants `MYSQLI_ASSOC`, `MYSQLI_NUM`, or `MYSQLI_BOTH`.

### Dönen Değerler

Returns an array of associative or numeric arrays holding result rows.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Now also available when linking against libmysqlclient.

### Örnekler

Örnek 1 mysqli_result::fetch_all() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $result = $mysqli->query("SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3");

    $rows = $result->fetch_all(MYSQLI_ASSOC);
    foreach ($rows as $row) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $result = mysqli_query($mysqli, "SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3");

    $rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
    foreach ($rows as $row) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

Yukarıdaki örneklerin çıktısı:

    Kabul (AFG)
    Qandahar (AFG)
    Herat (AFG)

### Ayrıca Bakınız

- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_column() - Fetch a single column from the next row of a result set
- mysqli_query() - Performs a query on the database

# mysqli_result::fetch_array

# mysqli_fetch_array

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_array -- mysqli_fetch_array — Fetch the next row of a result set as an associative, a numeric array, or both

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_array(int `$mode` = `MYSQLI_BOTH`): array|null|false

Yordamsal kullanım

function mysqli_fetch_array(mysqli_result `$result`, int `$mode` = `MYSQLI_BOTH`): array|null|false

Fetches one row of data from the result set and returns it as an array. Each subsequent call to this function will return the next row within the result set, or `null` if there are no more rows.

In addition to storing the data in the numeric indices of the result array, this function can also store the data in associative indices by using the field names of the result set as keys.

If two or more columns of the result have the same name, the last column will take precedence and overwrite any previous data. To access multiple columns with the same name, the numerically indexed version of the row must be used.

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`mode`

  This optional parameter is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants `MYSQLI_ASSOC`, `MYSQLI_NUM`, or `MYSQLI_BOTH`.

  By using the `MYSQLI_ASSOC` constant this function will behave identically to the mysqli_fetch_assoc(), while `MYSQLI_NUM` will behave identically to the mysqli_fetch_row() function. The final option `MYSQLI_BOTH` will create a single array with the attributes of both.

### Dönen Değerler

Returns an array representing the fetched row, `null` if there are no more rows in the result set, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysqli_result::fetch_array() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3";
    $result = $mysqli->query($query);

    /* numeric array */
    $row = $result->fetch_array(MYSQLI_NUM);
    printf("%s (%s)\n", $row[0], $row[1]);

    /* associative array */
    $row = $result->fetch_array(MYSQLI_ASSOC);
    printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);

    /* associative and numeric array */
    $row = $result->fetch_array(MYSQLI_BOTH);
    printf("%s (%s)\n", $row[0], $row["CountryCode"]);

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
    $result = mysqli_query($mysqli, $query);

    /* numeric array */
    $row = mysqli_fetch_array($result, MYSQLI_NUM);
    printf("%s (%s)\n", $row[0], $row[1]);

    /* associative array */
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);

    /* associative and numeric array */
    $row = mysqli_fetch_array($result, MYSQLI_BOTH);
    printf("%s (%s)\n", $row[0], $row["CountryCode"]);

The above examples will output something similar to:

    Kabul (AFG)
    Qandahar (AFG)
    Herat (AFG)

### Ayrıca Bakınız

- mysqli_fetch_assoc() - Fetch the next row of a result set as an associative array
- mysqli_fetch_column() - Fetch a single column from the next row of a result set
- mysqli_fetch_row() - Fetch the next row of a result set as an enumerated array
- mysqli_fetch_object() - Fetch the next row of a result set as an object
- mysqli_query() - Performs a query on the database
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_result::fetch_assoc

# mysqli_fetch_assoc

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_assoc -- mysqli_fetch_assoc — Fetch the next row of a result set as an associative array

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_assoc(): array|null|false

Yordamsal kullanım

function mysqli_fetch_assoc(mysqli_result `$result`): array|null|false

Fetches one row of data from the result set and returns it as an associative array. Each subsequent call to this function will return the next row within the result set, or `null` if there are no more rows.

If two or more columns of the result have the same name, the last column will take precedence and overwrite any previous data. To access multiple columns with the same name, mysqli_fetch_row() may be used to fetch the numerically indexed array, or aliases may be used in the SQL query select list to give columns different names.

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Returns an associative array representing the fetched row, where each key in the array represents the name of one of the result set's columns, `null` if there are no more rows in the result set, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysqli_result::fetch_assoc() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = $mysqli->query($query);

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = mysqli_query($mysqli, $query);

    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

The above examples will output something similar to:

    Pueblo (USA)
    Arvada (USA)
    Cape Coral (USA)
    Green Bay (USA)
    Santa Clara (USA)

Örnek 2 Comparison of mysqli_result iterator and mysqli_result::fetch_assoc() usage

mysqli_result can be iterated using foreach. The result set will always be iterated from the first row, regardless of the current position.

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = 'SELECT Name, CountryCode FROM City ORDER BY ID DESC';

    // Using iterators
    $result = $mysqli->query($query);
    foreach ($result as $row) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    echo "\n==================\n";

    // Not using iterators
    $result = $mysqli->query($query);
    while ($row = $result->fetch_assoc()) {
        printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Pueblo (USA)
    Arvada (USA)
    Cape Coral (USA)
    Green Bay (USA)
    Santa Clara (USA)

    ==================
    Pueblo (USA)
    Arvada (USA)
    Cape Coral (USA)
    Green Bay (USA)
    Santa Clara (USA)

### Ayrıca Bakınız

- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_column() - Fetch a single column from the next row of a result set
- mysqli_fetch_row() - Fetch the next row of a result set as an enumerated array
- mysqli_fetch_object() - Fetch the next row of a result set as an object
- mysqli_query() - Performs a query on the database
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_result::fetch_column

# mysqli_fetch_column

(PHP 8 >= 8.1.0)

mysqli_result::fetch_column -- mysqli_fetch_column — Fetch a single column from the next row of a result set

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_column(int `$column` = 0): null|int|float|string|false

Yordamsal kullanım

function mysqli_fetch_column(mysqli_result `$result`, int `$column` = 0): null|int|float|string|false

Fetches one row of data from the result set and returns the 0-indexed column. Each subsequent call to this function will return the value from the next row within the result set, or `false` if there are no more rows.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`column`

  0-indexed number of the column you wish to retrieve from the row. If no value is supplied, the first column will be returned.

### Dönen Değerler

Returns a single column from the next row of a result set or `false` if there are no more rows.

Uyarı

There is no way to return another column from the same row if you use this function to retrieve data.

### Örnekler

Örnek 1 mysqli_result::fetch_column() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT CountryCode, Name FROM City ORDER BY ID DESC LIMIT 5";

    $result = $mysqli->query($query);

    /* fetch a single value from the second column */
    while ($Name = $result->fetch_column(1)) {
        printf("%s\n", $Name);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT CountryCode, Name FROM City ORDER BY ID DESC LIMIT 5";

    $result = mysqli_query($mysqli, $query);

    /* fetch a single value from the second column */
    while ($Name = mysqli_fetch_column($result, 1)) {
        printf("%s\n", $Name);
    }

The above examples will output something similar to:

    Rafah
    Nablus
    Jabaliya
    Hebron
    Khan Yunis

### Ayrıca Bakınız

- mysqli_fetch_all() - Fetch all result rows as an associative array, a numeric array, or both
- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_assoc() - Fetch the next row of a result set as an associative array
- mysqli_fetch_object() - Fetch the next row of a result set as an object
- mysqli_fetch_row() - Fetch the next row of a result set as an enumerated array
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_result::fetch_field

# mysqli_fetch_field

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_field -- mysqli_fetch_field — Returns the next field in the result set

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_field(): object|false

Yordamsal kullanım

function mysqli_fetch_field(mysqli_result `$result`): object|false

Returns the definition of one column of a result set as an object. Call this function repeatedly to retrieve information about all columns in the result set.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Returns an object which contains field definition information or `false` if no field information is available.

Object properties
Property | Description
--- | ---
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
def | Unused. Always an empty string
db | The name of the database
catalog | Unused. Always `"def"`
max_length | The maximum width of the field for the result set. As of PHP 8.1, this value is always `0`.
length | The width of the field in bytes. For string columns, the length value varies on the connection character set. For example, if the character set is `latin1`, a single-byte character set, the length value for a `SELECT 'abc'` query is 3. If the character set is `utf8mb4`, a multibyte character set in which characters take up to 4 bytes, the length value is 12.
charsetnr | The character set number for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals for numeric fields, and the fractional seconds precision for temporal fields.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = $mysqli->query($query)) {

        /* Get field information for all columns */
        while ($finfo = $result->fetch_field()) {

            printf("Name:     %s\n", $finfo->name);
            printf("Table:    %s\n", $finfo->table);
            printf("max. Len: %d\n", $finfo->max_length);
            printf("Flags:    %d\n", $finfo->flags);
            printf("Type:     %d\n\n", $finfo->type);
        }
        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = mysqli_query($link, $query)) {

        /* Get field information for all fields */
        while ($finfo = mysqli_fetch_field($result)) {

            printf("Name:     %s\n", $finfo->name);
            printf("Table:    %s\n", $finfo->table);
            printf("max. Len: %d\n", $finfo->max_length);
            printf("Flags:    %d\n", $finfo->flags);
            printf("Type:     %d\n\n", $finfo->type);
        }
        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Name:     Name
    Table:    Country
    max. Len: 11
    Flags:    1
    Type:     254

    Name:     SurfaceArea
    Table:    Country
    max. Len: 10
    Flags:    32769
    Type:     4

### Ayrıca Bakınız

- mysqli_num_fields() - Gets the number of fields in the result set
- mysqli_fetch_field_direct() - Fetch meta-data for a single field
- mysqli_fetch_fields() - Returns an array of objects representing the fields in a result set
- mysqli_field_seek() - Set result pointer to a specified field offset

# mysqli_result::fetch_field_direct

# mysqli_fetch_field_direct

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_field_direct -- mysqli_fetch_field_direct — Fetch meta-data for a single field

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_field_direct(int `$index`): object|false

Yordamsal kullanım

function mysqli_fetch_field_direct(mysqli_result `$result`, int `$index`): object|false

Returns an object which contains field definition information from the specified result set.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`index`

  The field number. This value must be in the range from `0` to `number of fields - 1`.

### Dönen Değerler

Returns an object which contains field definition information or `false` if no field information for specified `index` is available.

Object properties
Property | Description
--- | ---
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
def | Unused. Always an empty string
db | The name of the database
catalog | Unused. Always `"def"`
max_length | The maximum width of the field for the result set. As of PHP 8.1, this value is always `0`.
length | The width of the field in bytes. For string columns, the length value varies on the connection character set. For example, if the character set is `latin1`, a single-byte character set, the length value for a `SELECT 'abc'` query is 3. If the character set is `utf8mb4`, a multibyte character set in which characters take up to 4 bytes, the length value is 12.
charsetnr | The character set number for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals for numeric fields, and the fractional seconds precision for temporal fields.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Name LIMIT 5";

    if ($result = $mysqli->query($query)) {

        /* Get field information for column 'SurfaceArea' */
        $finfo = $result->fetch_field_direct(1);

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n", $finfo->type);

        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Name LIMIT 5";

    if ($result = mysqli_query($link, $query)) {

        /* Get field information for column 'SurfaceArea' */
        $finfo = mysqli_fetch_field_direct($result, 1);

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n", $finfo->type);

        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Name:     SurfaceArea
    Table:    Country
    max. Len: 10
    Flags:    32769
    Type:     4

### Ayrıca Bakınız

- mysqli_num_fields() - Gets the number of fields in the result set
- mysqli_fetch_field() - Returns the next field in the result set
- mysqli_fetch_fields() - Returns an array of objects representing the fields in a result set

# mysqli_result::fetch_fields

# mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Returns an array of objects representing the fields in a result set

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_fields(): array

Yordamsal kullanım

function mysqli_fetch_fields(mysqli_result `$result`): array

This function serves an identical purpose to the mysqli_fetch_field() function with the single difference that, instead of returning one object at a time for each field, the columns are returned as an array of objects.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Returns an array of objects containing field definition information.

Object properties
Property | Description
--- | ---
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
def | Unused. Always an empty string
db | The name of the database
catalog | Unused. Always `"def"`
max_length | The maximum width of the field for the result set. As of PHP 8.1, this value is always `0`.
length | The width of the field in bytes. For string columns, the length value varies on the connection character set. For example, if the character set is `latin1`, a single-byte character set, the length value for a `SELECT 'abc'` query is 3. If the character set is `utf8mb4`, a multibyte character set in which characters take up to 4 bytes, the length value is 12.
charsetnr | The character set number for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals for numeric fields, and the fractional seconds precision for temporal fields.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");

    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {

        // Set character set, to show its impact on some values (e.g., length in bytes)
        $mysqli->set_charset($charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "======================\n";
        echo "Character Set: $charset\n";
        echo "======================\n";

        if ($result = $mysqli->query($query)) {

            /* Get field information for all columns */
            $finfo = $result->fetch_fields();

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            $result->free();
        }
    }
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {

        // Set character set, to show its impact on some values (e.g., length in bytes)
        mysqli_set_charset($link, $charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "======================\n";
        echo "Character Set: $charset\n";
        echo "======================\n";

        if ($result = mysqli_query($link, $query)) {

            /* Get field information for all columns */
            $finfo = mysqli_fetch_fields($result);

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            mysqli_free_result($result);
        }
    }

    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    ======================
    Character Set: latin1
    ======================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    45
    charsetnr: 8
    Flags:     20489
    Type:      253

    ======================
    Character Set: utf8
    ======================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    135
    charsetnr: 33
    Flags:     20489

### Ayrıca Bakınız

- mysqli_num_fields() - Gets the number of fields in the result set
- mysqli_fetch_field_direct() - Fetch meta-data for a single field
- mysqli_fetch_field() - Returns the next field in the result set

# mysqli_result::fetch_object

# mysqli_fetch_object

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_object -- mysqli_fetch_object — Fetch the next row of a result set as an object

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_object(string `$class` = "stdClass", array `$constructor_args` = []): object|null|false

Yordamsal kullanım

function mysqli_fetch_object(mysqli_result `$result`, string `$class` = "stdClass", array `$constructor_args` = []): object|null|false

Fetches one row of data from the result set and returns it as an object, where each property represents the name of the result set's column. Each subsequent call to this function will return the next row within the result set, or `null` if there are no more rows.

If two or more columns of the result have the same name, the last column will take precedence and overwrite any previous data. To access multiple columns with the same name, mysqli_fetch_row() may be used to fetch the numerically indexed array, or aliases may be used in the SQL query select list to give columns different names.

> Bilginize: This function sets the properties of the object before calling the object constructor.

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`class`

  The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.

`constructor_args`

  An optional array of parameters to pass to the constructor for `class` objects.

### Dönen Değerler

Returns an object representing the fetched row, where each property represents the name of the result set's column, `null` if there are no more rows in the result set, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

A ValueError is thrown when the `constructor_args` is non-empty with the class not having constructor.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a ValueError exception when the `constructor_args` is non-empty with the class not having constructor; previously an Exception was thrown.
8.0.0 | `constructor_args` now accepts `[]` for constructors with 0 parameters; previously an exception was thrown.

### Örnekler

Örnek 1 mysqli_result::fetch_object() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = $mysqli->query($query);

    while ($obj = $result->fetch_object()) {
        printf("%s (%s)\n", $obj->Name, $obj->CountryCode);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = mysqli_query($link, $query);

    while ($obj = mysqli_fetch_object($result)) {
        printf("%s (%s)\n", $obj->Name, $obj->CountryCode);
    }

The above examples will output something similar to:

    Pueblo (USA)
    Arvada (USA)
    Cape Coral (USA)
    Green Bay (USA)
    Santa Clara (USA)

### Ayrıca Bakınız

- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_assoc() - Fetch the next row of a result set as an associative array
- mysqli_fetch_column() - Fetch a single column from the next row of a result set
- mysqli_fetch_row() - Fetch the next row of a result set as an enumerated array
- mysqli_query() - Performs a query on the database
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_result::fetch_row

# mysqli_fetch_row

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_row -- mysqli_fetch_row — Fetch the next row of a result set as an enumerated array

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::fetch_row(): array|null|false

Yordamsal kullanım

function mysqli_fetch_row(mysqli_result `$result`): array|null|false

Fetches one row of data from the result set and returns it as an enumerated array, where each column is stored in an array offset starting from 0 (zero). Each subsequent call to this function will return the next row within the result set, or `null` if there are no more rows.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Returns an enumerated array representing the fetched row, `null` if there are no more rows in the result set, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysqli_result::fetch_row() example

Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = $mysqli->query($query);

    /* fetch object array */
    while ($row = $result->fetch_row()) {
        printf("%s (%s)\n", $row[0], $row[1]);
    }

Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");

    $query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";

    $result = mysqli_query($mysqli, $query);

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
        printf("%s (%s)\n", $row[0], $row[1]);
    }

The above examples will output something similar to:

    Pueblo (USA)
    Arvada (USA)
    Cape Coral (USA)
    Green Bay (USA)
    Santa Clara (USA)

### Ayrıca Bakınız

- mysqli_fetch_array() - Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_assoc() - Fetch the next row of a result set as an associative array
- mysqli_fetch_column() - Fetch a single column from the next row of a result set
- mysqli_fetch_object() - Fetch the next row of a result set as an object
- mysqli_query() - Performs a query on the database
- mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

# mysqli_result::$field_count

# mysqli_num_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::$field_count -- mysqli_num_fields — Gets the number of fields in the result set

### Açıklama

Nesne yönelimli kullanım

int $mysqli_result->field_count;

Yordamsal kullanım

function mysqli_num_fields(mysqli_result `$result`): int

Returns the number of fields in the result set.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

An int representing the number of fields.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $result = $mysqli->query("SELECT Name, CountryCode, District, Population FROM City ORDER BY ID LIMIT 1");

    /* Get the number of fields in the result set */
    $field_cnt = $result->field_count;

    printf("Result set has %d fields.\n", $field_cnt);

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $result = mysqli_query($link, "SELECT Name, CountryCode, District, Population FROM City ORDER BY ID LIMIT 1");

    /* Get the number of fields in the result set */
    $field_cnt = mysqli_num_fields($result);

    printf("Result set has %d fields.\n", $field_cnt);

Yukarıdaki örneklerin çıktısı:

    Result set has 4 fields.

### Ayrıca Bakınız

- mysqli_fetch_field() - Returns the next field in the result set

# mysqli_result::field_seek

# mysqli_field_seek

(PHP 5, PHP 7, PHP 8)

mysqli_result::field_seek -- mysqli_field_seek — Set result pointer to a specified field offset

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::field_seek(int `$index`): true

Yordamsal kullanım

function mysqli_field_seek(mysqli_result `$result`, int `$index`): true

Sets the field cursor to the given offset. The next call to mysqli_fetch_field() will retrieve the field definition of the column associated with that offset.

> Bilginize:

> To seek to the beginning of a row, pass an offset value of zero.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

`index`

  The field number. This value must be in the range from `0` to `number of fields - 1`.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function now always returns `true`. Previously it returned `false` on failure.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = $mysqli->query($query)) {

        /* Get field information for 2nd column */
        $result->field_seek(1);
        $finfo = $result->fetch_field();

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);

        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

    if ($result = mysqli_query($link, $query)) {

        /* Get field information for 2nd column */
        mysqli_field_seek($result, 1);
        $finfo = mysqli_fetch_field($result);

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);

        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Name:     SurfaceArea
    Table:    Country
    max. Len: 10
    Flags:    32769
    Type:     4

### Ayrıca Bakınız

- mysqli_fetch_field() - Returns the next field in the result set

# mysqli_result::free

# mysqli_result::close

# mysqli_result::free_result

# mysqli_free_result

(PHP 5, PHP 7, PHP 8)

mysqli_result::free -- mysqli_result::close -- mysqli_result::free_result -- mysqli_free_result — Frees the memory associated with a result

### Açıklama

Nesne yönelimli kullanım

public function mysqli_result::free(): void
public function mysqli_result::close(): void
public function mysqli_result::free_result(): void

Yordamsal kullanım

function mysqli_free_result(mysqli_result `$result`): void

Frees the memory associated with the result.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- mysqli_query() - Performs a query on the database
- mysqli_stmt_get_result() - Gets a result set from a prepared statement as a mysqli_result object
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval

# mysqli_result::getIterator

(PHP 8)

mysqli_result::getIterator — Retrieve an external iterator

### Açıklama

public function mysqli_result::getIterator(): Iterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# mysqli_result::$lengths

# mysqli_fetch_lengths

(PHP 5, PHP 7, PHP 8)

mysqli_result::$lengths -- mysqli_fetch_lengths — Returns the lengths of the columns of the current row in the result set

### Açıklama

Nesne yönelimli kullanım

?array $mysqli_result->lengths;

Yordamsal kullanım

function mysqli_fetch_lengths(mysqli_result `$result`): array|false

The mysqli_fetch_lengths() function returns an array containing the lengths of every column of the current row within the result set.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

An array of integers representing the size of each column (not including any terminating null characters). `false` if an error occurred.

mysqli_fetch_lengths() is valid only for the current row of the result set. It returns `false` if you call it before calling mysqli_fetch_row/array/object or after retrieving all rows in the result.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT * from Country ORDER BY Code LIMIT 1";

    if ($result = $mysqli->query($query)) {

        $row = $result->fetch_row();

        /* display column lengths */
        foreach ($result->lengths as $i => $val) {
            printf("Field %2d has Length %2d\n", $i+1, $val);
        }
        $result->close();
    }

    /* close connection */
    $mysqli->close();
    ?>

Örnek 2 Yordamsal kullanım

    <?php
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $query = "SELECT * from Country ORDER BY Code LIMIT 1";

    if ($result = mysqli_query($link, $query)) {

        $row = mysqli_fetch_row($result);

        /* display column lengths */
        foreach (mysqli_fetch_lengths($result) as $i => $val) {
            printf("Field %2d has Length %2d\n", $i+1, $val);
        }
        mysqli_free_result($result);
    }

    /* close connection */
    mysqli_close($link);
    ?>

Yukarıdaki örneklerin çıktısı:

    Field  1 has Length  3
    Field  2 has Length  5
    Field  3 has Length 13
    Field  4 has Length  9
    Field  5 has Length  6
    Field  6 has Length  1
    Field  7 has Length  6
    Field  8 has Length  4
    Field  9 has Length  6
    Field 10 has Length  6
    Field 11 has Length  5
    Field 12 has Length 44
    Field 13 has Length  7
    Field 14 has Length  3
    Field 15 has Length  2

# mysqli_result::$num_rows

# mysqli_num_rows

(PHP 5, PHP 7, PHP 8)

mysqli_result::$num_rows -- mysqli_num_rows — Gets the number of rows in the result set

### Açıklama

Nesne yönelimli kullanım

int|string $mysqli_result->num_rows;

Yordamsal kullanım

function mysqli_num_rows(mysqli_result `$result`): int|string

Returns the number of rows in the result set.

The behaviour of mysqli_num_rows() depends on whether buffered or unbuffered result sets are being used. This function returns `0` for unbuffered result sets unless all rows have been fetched from the server.

### Bağımsız Değişkenler

`sonuç`

  Sadece yordamsal tarz: mysqli_query(), mysqli_store_result(), mysqli_use_result() veya mysqli_stmt_get_result() işlevinden dönen bir mysqli_result nesnesi.

### Dönen Değerler

An int representing the number of fetched rows. Returns `0` in unbuffered mode unless all rows have been fetched from the server.

> Bilginize:

> Satır sayısı `PHP_INT_MAX`'tan büyükse, sayı string türünde döndürülür.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

    $result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name");

    /* Get the number of rows in the result set */
    $row_cnt = $result->num_rows;

    printf("Result set has %d rows.\n", $row_cnt);

Örnek 2 Yordamsal kullanım

    <?php

    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "my_user", "my_password", "world");

    $result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name");

    /* Get the number of rows in the result set */
    $row_cnt = mysqli_num_rows($result);

    printf("Result set has %d rows.\n", $row_cnt);

Yukarıdaki örneklerin çıktısı:

    Result set has 239 rows.

### Notlar

> Bilginize:

> In contrast to the mysqli_stmt_num_rows() function, this function doesn't have object-oriented method variant. In the object-oriented style, use the getter property.

### Ayrıca Bakınız

- mysqli_affected_rows() - Gets the number of affected rows in a previous MySQL operation
- mysqli_store_result() - Transfers a result set from the last query
- mysqli_use_result() - Initiate a result set retrieval
- mysqli_query() - Performs a query on the database
- mysqli_stmt_num_rows() - Returns the number of rows fetched from the server

## İçindekiler

- mysqli_result::__construct — Constructs a mysqli_result object
- mysqli_result::$current_field — Get current field offset of a result pointer
- mysqli_result::data_seek — Adjusts the result pointer to an arbitrary row in the result
- mysqli_result::fetch_all — Fetch all result rows as an associative array, a numeric array, or both
- mysqli_result::fetch_array — Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_result::fetch_assoc — Fetch the next row of a result set as an associative array
- mysqli_result::fetch_column — Fetch a single column from the next row of a result set
- mysqli_result::fetch_field — Returns the next field in the result set
- mysqli_result::fetch_field_direct — Fetch meta-data for a single field
- mysqli_result::fetch_fields — Returns an array of objects representing the fields in a result set
- mysqli_result::fetch_object — Fetch the next row of a result set as an object
- mysqli_result::fetch_row — Fetch the next row of a result set as an enumerated array
- mysqli_result::$field_count — Gets the number of fields in the result set
- mysqli_result::field_seek — Set result pointer to a specified field offset
- mysqli_result::free — Frees the memory associated with a result
- mysqli_result::getIterator — Retrieve an external iterator
- mysqli_result::$lengths — Returns the lengths of the columns of the current row in the result set
- mysqli_result::$num_rows — Gets the number of rows in the result set

# The mysqli_driver class

(PHP 5, PHP 7, PHP 8)

## Giriş

The mysqli_driver class is an instance of the monostate pattern, i.e. there is only one driver which can be accessed though an arbitrary amount of mysqli_driver instances.

## Sınıf Sözdizimi

final class mysqli_driver {
/* Özellikler */
public readonly string $client_info;
public readonly int $client_version;
public readonly int $driver_version;
public int $report_mode;
}

## Özellikler

client_info

  The Client API header version

client_version

  The Client version

driver_version

  The MySQLi Driver version

  Uyarı

  This property has been deprecated as of PHP 8.1.0. Relying on this property is highly discouraged.

embedded

  Whether MySQLi Embedded support is enabled

  Uyarı

  This property has been removed as of PHP 8.0.0.

reconnect

  Allow or prevent reconnect (see the mysqli.reconnect INI directive)

  Uyarı

  This property has been removed along with the mysqli.reconnect INI directive as of PHP 8.2.0.

report_mode

  Set to `MYSQLI_REPORT_OFF`, `MYSQLI_REPORT_ALL` or any combination of `MYSQLI_REPORT_STRICT` (throw Exceptions for errors), `MYSQLI_REPORT_ERROR` (report errors) and `MYSQLI_REPORT_INDEX` (errors regarding indexes). See also mysqli_report().

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | mysqli_driver::$reconnect was removed.
8.1.0 | mysqli_driver::$driver_version has been deprecated.
8.0.0 | mysqli_driver::$embedded was removed.
7.4.0 | mysqli_driver::embedded_server_start() and mysqli_driver:embedded_server_end() were removed.

# mysqli_driver::embedded_server_end

# mysqli_embedded_server_end

(PHP 5 >= 5.1.0, PHP 7 < 7.4.0)

mysqli_driver::embedded_server_end -- mysqli_embedded_server_end — Stop embedded server

Uyarı

Bu işlev PHP 7.4.0'da tamamen KALDIRILMIŞTIR.

### Açıklama

Nesne yönelimli kullanım

public function mysqli_driver::embedded_server_end(): void

Yordamsal kullanım

function mysqli_embedded_server_end(): void
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# mysqli_driver::embedded_server_start

# mysqli_embedded_server_start

(PHP 5 >= 5.1.0, PHP 7 < 7.4.0)

mysqli_driver::embedded_server_start -- mysqli_embedded_server_start — Initialize and start embedded server

Uyarı

Bu işlev PHP 7.4.0'da tamamen KALDIRILMIŞTIR.

### Açıklama

Nesne yönelimli kullanım

public function mysqli_driver::embedded_server_start(int `$start`, array `$arguments`, array `$groups`): bool

Yordamsal kullanım

function mysqli_embedded_server_start(int `$start`, array `$arguments`, array `$groups`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# mysqli_driver::$report_mode

# mysqli_report

(PHP 5, PHP 7, PHP 8)

mysqli_driver::$report_mode -- mysqli_report — Sets mysqli error reporting mode

### Açıklama

Nesne yönelimli kullanım

int $mysqli_driver->report_mode;

Yordamsal kullanım

function mysqli_report(int `$flags`): true

Depending on the flags, it sets mysqli error reporting mode to exception, warning or none. When set to `MYSQLI_REPORT_ALL` or `MYSQLI_REPORT_INDEX` it will also inform about queries that don't use an index (or use a bad index).

As of PHP 8.1.0, the default setting is `MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT`. Previously, it was `MYSQLI_REPORT_OFF`.

### Bağımsız Değişkenler

`flags`

  Supported flags
  Name | Description
  --- | ---
  `MYSQLI_REPORT_OFF` | Turns reporting off
  `MYSQLI_REPORT_ERROR` | Report errors from mysqli function calls
  `MYSQLI_REPORT_STRICT` | Throw mysqli_sql_exception for errors instead of warnings
  `MYSQLI_REPORT_INDEX` | Report if no index or bad index was used in a query
  `MYSQLI_REPORT_ALL` | Set all options (report all)

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The default value is now `MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT`. Previously, it was `MYSQLI_REPORT_OFF`.

### Örnekler

Örnek 1 Nesne yönelimli kullanım

    <?php

    /* activate reporting */
    $driver = new mysqli_driver();
    $driver->report_mode = MYSQLI_REPORT_ALL;

    try {
        /* if the connection fails, a mysqli_sql_exception will be thrown */
        $mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

        /* this query should report an error */
        $result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

        /* this query should report a bad index if the column population doesn't have an index */
        $result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
    } catch (mysqli_sql_exception $e) {
        error_log($e->__toString());
    }

Örnek 2 Yordamsal kullanım

    <?php

    /* activate reporting */
    mysqli_report(MYSQLI_REPORT_ALL);

    try {
        /* if the connection fails, a mysqli_sql_exception will be thrown */
        $link = mysqli_connect("localhost", "my_user", "my_password", "my_db");

        /* this query should report an error */
        $result = mysqli_query($link, "SELECT Name FROM Nonexistingtable WHERE population > 50000");

        /* this query should report a bad index if the column population doesn't have an index */
        $result = mysqli_query($link, "SELECT Name FROM City WHERE population > 50000");
    } catch (mysqli_sql_exception $e) {
        error_log($e->__toString());
    }

Örnek 3 Error reporting except bad index errors

    <?php

    /* activate reporting */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    try {
        /* if the connection fails, a mysqli_sql_exception will be thrown */
        $mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

        /* this query should report an error */
        $result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

        /* this WILL NOT report any errors even if index is not available */
        $result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
    } catch (mysqli_sql_exception $e) {
        error_log($e->__toString());
    }

### Ayrıca Bakınız

- mysqli_sql_exception
- set_exception_handler() - Kullanıcı tanımlı bir istisna işleyici bildirir
- error_reporting() - Hangi PHP hatalarının raporlanacağını tanımlar

## İçindekiler

- mysqli_driver::embedded_server_end — Stop embedded server
- mysqli_driver::embedded_server_start — Initialize and start embedded server
- mysqli_driver::$report_mode — Sets mysqli error reporting mode

# The mysqli_warning class

(PHP 5, PHP 7, PHP 8)

## Giriş

Represents a MySQL warning.

## Sınıf Sözdizimi

final class mysqli_warning {
/* Özellikler */
public string $message;
public string $sqlstate;
public int $errno;
/* Yöntemler */
private function __construct()
public function next(): bool
}

## Özellikler

message

  Message string

sqlstate

  SQL state

errno

  Error number

# mysqli_warning::__construct

(PHP 5, PHP 7, PHP 8)

mysqli_warning::__construct — Private constructor to disallow direct instantiation

### Açıklama

private function mysqli_warning::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# mysqli_warning::next

(PHP 5, PHP 7, PHP 8)

mysqli_warning::next — Fetch next warning

### Açıklama

public function mysqli_warning::next(): bool

Change warning information to the next warning if possible.

Once the warning has been set to the next warning, new values of properties `message`, `sqlstate` and `errno` of mysqli_warning are available.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if next warning was fetched successfully. If there are no more warnings, it will return `false`

## İçindekiler

- mysqli_warning::__construct — Private constructor to disallow direct instantiation
- mysqli_warning::next — Fetch next warning

# The mysqli_sql_exception class

(PHP 5, PHP 7, PHP 8)

## Giriş

The mysqli exception handling class.

## Sınıf Sözdizimi

final class mysqli_sql_exception extends RuntimeException {
/* Özellikler */
protected string $sqlstate = "00000";
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
public function getSqlState(): string
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

## Özellikler

sqlstate

  The sql state with the error.

# mysqli_sql_exception::getSqlState

(PHP 8 >= 8.1.2)

mysqli_sql_exception::getSqlState — Returns the SQLSTATE error code

### Açıklama

public function mysqli_sql_exception::getSqlState(): string

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. The values are specified by ANSI SQL and ODBC. For a list of possible values, see » http://dev.mysql.com/doc/mysql/en/error-handling.html.

> Bilginize:

> Note that not all MySQL errors are yet mapped to SQLSTATE's. The value `HY000` (general error) is used for unmapped errors.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters.

## İçindekiler

- mysqli_sql_exception::getSqlState — Returns the SQLSTATE error code

# Aliases and deprecated Mysqli İşlevleri

# mysqli_connect

(PHP 5, PHP 7, PHP 8)

mysqli_connect — Takma Adı: mysqli::__construct()

### Açıklama

Bu işlev şu işlevin takma adıdır: mysqli::__construct()

> Bilginize:

> If mysqli exception mode is not enabled and a connection fails, then mysqli_connect() returns `false` instead of an object. The mysqli_connect_error() function can be used to fetch the connection error.

# mysqli::escape_string

# mysqli_escape_string

(PHP 5, PHP 7, PHP 8)

mysqli::escape_string -- mysqli_escape_string — Takma Adı: mysqli_real_escape_string()

### Açıklama

Bu işlev şu işlevin takma adıdır: mysqli_real_escape_string().

# mysqli_execute

(PHP 5, PHP 7, PHP 8)

mysqli_execute — Takma Adı: mysqli_stmt_execute()

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

Bu işlev şu işlevin takma adıdır: mysqli_stmt_execute().

### Ayrıca Bakınız

- mysqli_stmt_execute() - Executes a prepared statement

# mysqli_get_client_stats

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli_get_client_stats — Returns client per-process statistics

### Açıklama

function mysqli_get_client_stats(): array

Returns client per-process statistics.

> Bilginize:

> Sadece mysqlnd ile kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array with client stats.

### Örnekler

Örnek 1 A mysqli_get_client_stats() example

    <?php
    $link = mysqli_connect();
    print_r(mysqli_get_client_stats());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [bytes_sent] => 43
        [bytes_received] => 80
        [packets_sent] => 1
        [packets_received] => 2
        [protocol_overhead_in] => 8
        [protocol_overhead_out] => 4
        [bytes_received_ok_packet] => 11
        [bytes_received_eof_packet] => 0
        [bytes_received_rset_header_packet] => 0
        [bytes_received_rset_field_meta_packet] => 0
        [bytes_received_rset_row_packet] => 0
        [bytes_received_prepare_response_packet] => 0
        [bytes_received_change_user_packet] => 0
        [packets_sent_command] => 0
        [packets_received_ok] => 1
        [packets_received_eof] => 0
        [packets_received_rset_header] => 0
        [packets_received_rset_field_meta] => 0
        [packets_received_rset_row] => 0
        [packets_received_prepare_response] => 0
        [packets_received_change_user] => 0
        [result_set_queries] => 0
        [non_result_set_queries] => 0
        [no_index_used] => 0
        [bad_index_used] => 0
        [slow_queries] => 0
        [buffered_sets] => 0
        [unbuffered_sets] => 0
        [ps_buffered_sets] => 0
        [ps_unbuffered_sets] => 0
        [flushed_normal_sets] => 0
        [flushed_ps_sets] => 0
        [ps_prepared_never_executed] => 0
        [ps_prepared_once_executed] => 0
        [rows_fetched_from_server_normal] => 0
        [rows_fetched_from_server_ps] => 0
        [rows_buffered_from_client_normal] => 0
        [rows_buffered_from_client_ps] => 0
        [rows_fetched_from_client_normal_buffered] => 0
        [rows_fetched_from_client_normal_unbuffered] => 0
        [rows_fetched_from_client_ps_buffered] => 0
        [rows_fetched_from_client_ps_unbuffered] => 0
        [rows_fetched_from_client_ps_cursor] => 0
        [rows_skipped_normal] => 0
        [rows_skipped_ps] => 0
        [copy_on_write_saved] => 0
        [copy_on_write_performed] => 0
        [command_buffer_too_small] => 0
        [connect_success] => 1
        [connect_failure] => 0
        [connection_reused] => 0
        [reconnect] => 0
        [pconnect_success] => 0
        [active_connections] => 1
        [active_persistent_connections] => 0
        [explicit_close] => 0
        [implicit_close] => 0
        [disconnect_close] => 0
        [in_middle_of_command_close] => 0
        [explicit_free_result] => 0
        [implicit_free_result] => 0
        [explicit_stmt_close] => 0
        [implicit_stmt_close] => 0
        [mem_emalloc_count] => 0
        [mem_emalloc_ammount] => 0
        [mem_ecalloc_count] => 0
        [mem_ecalloc_ammount] => 0
        [mem_erealloc_count] => 0
        [mem_erealloc_ammount] => 0
        [mem_efree_count] => 0
        [mem_malloc_count] => 0
        [mem_malloc_ammount] => 0
        [mem_calloc_count] => 0
        [mem_calloc_ammount] => 0
        [mem_realloc_count] => 0
        [mem_realloc_ammount] => 0
        [mem_free_count] => 0
        [proto_text_fetched_null] => 0
        [proto_text_fetched_bit] => 0
        [proto_text_fetched_tinyint] => 0
        [proto_text_fetched_short] => 0
        [proto_text_fetched_int24] => 0
        [proto_text_fetched_int] => 0
        [proto_text_fetched_bigint] => 0
        [proto_text_fetched_decimal] => 0
        [proto_text_fetched_float] => 0
        [proto_text_fetched_double] => 0
        [proto_text_fetched_date] => 0
        [proto_text_fetched_year] => 0
        [proto_text_fetched_time] => 0
        [proto_text_fetched_datetime] => 0
        [proto_text_fetched_timestamp] => 0
        [proto_text_fetched_string] => 0
        [proto_text_fetched_blob] => 0
        [proto_text_fetched_enum] => 0
        [proto_text_fetched_set] => 0
        [proto_text_fetched_geometry] => 0
        [proto_text_fetched_other] => 0
        [proto_binary_fetched_null] => 0
        [proto_binary_fetched_bit] => 0
        [proto_binary_fetched_tinyint] => 0
        [proto_binary_fetched_short] => 0
        [proto_binary_fetched_int24] => 0
        [proto_binary_fetched_int] => 0
        [proto_binary_fetched_bigint] => 0
        [proto_binary_fetched_decimal] => 0
        [proto_binary_fetched_float] => 0
        [proto_binary_fetched_double] => 0
        [proto_binary_fetched_date] => 0
        [proto_binary_fetched_year] => 0
        [proto_binary_fetched_time] => 0
        [proto_binary_fetched_datetime] => 0
        [proto_binary_fetched_timestamp] => 0
        [proto_binary_fetched_string] => 0
        [proto_binary_fetched_blob] => 0
        [proto_binary_fetched_enum] => 0
        [proto_binary_fetched_set] => 0
        [proto_binary_fetched_geometry] => 0
        [proto_binary_fetched_other] => 0
    )

### Ayrıca Bakınız

- Stats description

# mysqli_get_links_stats

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

mysqli_get_links_stats — Return information about open and cached links

### Açıklama

function mysqli_get_links_stats(): array

mysqli_get_links_stats() returns information about open and cached MySQL links.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

mysqli_get_links_stats() returns an associative array with three elements, keyed as follows:

`total`

  An int indicating the total number of open links in any state.

`active_plinks`

  An int representing the number of active persistent connections.

`cached_plinks`

  An int representing the number of inactive persistent connections.

# mysqli_report

(PHP 5, PHP 7, PHP 8)

mysqli_report — Takma Adı: mysqli_driver->report_mode

### Açıklama

Bu işlev şu işlevin takma adıdır: mysqli_driver->report_mode

# mysqli::set_opt

# mysqli_set_opt

(PHP 5, PHP 7, PHP 8)

mysqli::set_opt -- mysqli_set_opt — Takma Adı: mysqli_options()

### Açıklama

Bu işlev şu işlevin takma adıdır: mysqli_options().

## İçindekiler

- mysqli_connect — Takma Adı: mysqli::__construct
- mysqli::escape_string — Takma Adı: mysqli_real_escape_string
- mysqli_execute — Takma Adı: mysqli_stmt_execute
- mysqli_get_client_stats — Returns client per-process statistics
- mysqli_get_links_stats — Return information about open and cached links
- mysqli_report — Takma Adı: mysqli_driver->report_mode
- mysqli::set_opt — Takma Adı: mysqli_options

# Sürüm Bilgisi

Bu eklentinin sınıf/yöntem/işlevlerinde aşağıdaki değişiklikler yapıldı.

Version | Function | Description
--- | --- | ---
8.4.0 | mysqli::kill | Both mysqli::kill and mysqli_kill are now deprecated. Use the KILL SQL command instead.
| mysqli::ping | Both mysqli::ping and mysqli_ping are now deprecated. The reconnect feature has not been available as of PHP 8.2.0, making this function obsolete.
| mysqli::refresh | Both mysqli::refresh and mysqli_refresh are now deprecated. Use FLUSH SQL commands instead.
| mysqli::store_result | Passing the mode parameter is now deprecated. The parameter has had no effect as of PHP 8.1.0.
8.3.0 | mysqli_result::fetch_object | Now throws a ValueError exception when the constructor_args is non-empty with the class not having constructor; previously an Exception was thrown.
| mysqli::poll | Now throws a ValueError exception when neither the read nor error arguments are passed.
8.1.0 | mysqli_driver::$report_mode | The default value is now MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Previously, it was MYSQLI_REPORT_OFF.
| mysqli_result::fetch_all | Now also available when linking against libmysqlclient.
| mysqli_stmt::execute | The optional params parameter has been added.
| mysqli_stmt::next_result | Now also available when linking against libmysqlclient.
| mysqli::__construct | mysqli::connect now returns true instead of null on success.
| mysqli::$client_info | Calling mysqli_get_client_info with the mysql argument has been deprecated. This function never required a parameter, but incorrectly allowed it as an optional parameter.
| mysqli::$client_info | The object-oriented style mysqli::get_client_info has been deprecated.
| mysqli::init | The object-oriented style mysqli::init method has been deprecated. Replace calls to parent::init with parent::__construct.
8.0.0 | mysqli_result::fetch_object | constructor_args now accepts [] for constructors with 0 parameters; previously an exception was thrown.
| mysqli_result::field_seek | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::close | This function now always returns true. Previously it returned false on failure.
| mysqli_stmt::__construct | query is now nullable.
| mysqli::begin_transaction | name is now nullable.
| mysqli::close | This function now always returns true. Previously it returned false on failure.
| mysqli::commit | name is now nullable.
| mysqli::debug | This function now always returns true. Previously it returned false on failure.
| mysqli::rollback | name is now nullable.
7.4.0 | mysqli::__construct | All parameters are now nullable.
| mysqli::real_connect | All parameters are now nullable.

- Overview
- Quick start guide
  - Dual procedural and object-oriented interface
  - Connections
  - Executing statements
  - Prepared Statements
  - Stored Procedures
  - Multiple Statements
  - API support for transactions
  - Metadata
- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- The mysqli Extension and Persistent Connections
- Öntanımlı Sabitler
- Notes
- The MySQLi Extension Function Summary
- mysqli — The mysqli class
  - mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation
  - mysqli::autocommit — Turns on or off auto-committing database modifications
  - mysqli::begin_transaction — Starts a transaction
  - mysqli::change_user — Changes the user of the database connection
  - mysqli::character_set_name — Returns the current character set of the database connection
  - mysqli::close — Closes a previously opened database connection
  - mysqli::commit — Commits the current transaction
  - mysqli::$connect_errno — Returns the error code from last connect call
  - mysqli::$connect_error — Returns a description of the last connection error
  - mysqli::__construct — Open a new connection to the MySQL server
  - mysqli::debug — Performs debugging operations
  - mysqli::dump_debug_info — Dump debugging information into the log
  - mysqli::$errno — Returns the error code for the most recent function call
  - mysqli::$error — Returns a string description of the last error
  - mysqli::$error_list — Returns a list of errors from the last command executed
  - mysqli::execute_query — Prepares, binds parameters, and executes SQL statement
  - mysqli::$field_count — Returns the number of columns for the most recent query
  - mysqli::get_charset — Returns a character set object
  - mysqli::$client_info — Get MySQL client info
  - mysqli::$client_version — Returns the MySQL client version as an integer
  - mysqli::get_connection_stats — Returns statistics about the client connection
  - mysqli::$host_info — Returns a string representing the type of connection used
  - mysqli::$protocol_version — Returns the version of the MySQL protocol used
  - mysqli::$server_info — Returns the version of the MySQL server
  - mysqli::$server_version — Returns the version of the MySQL server as an integer
  - mysqli::get_warnings — Get result of SHOW WARNINGS
  - mysqli::$info — Retrieves information about the most recently executed query
  - mysqli::init — Initializes MySQLi and returns an object for use with mysqli_real_connect()
  - mysqli::$insert_id — Returns the value generated for an AUTO_INCREMENT column by the last query
  - mysqli::kill — Asks the server to kill a MySQL thread
  - mysqli::more_results — Check if there are any more query results from a multi query
  - mysqli::multi_query — Performs one or more queries on the database
  - mysqli::next_result — Prepare next result from multi_query
  - mysqli::options — Set options
  - mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down
  - mysqli::poll — Poll connections
  - mysqli::prepare — Prepares an SQL statement for execution
  - mysqli::query — Performs a query on the database
  - mysqli::real_connect — Opens a connection to the MySQL server
  - mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  - mysqli::real_query — Execute an SQL query
  - mysqli::reap_async_query — Get result from async query
  - mysqli::refresh — Refreshes
  - mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction
  - mysqli::rollback — Rolls back current transaction
  - mysqli::savepoint — Set a named transaction savepoint
  - mysqli::select_db — Selects the default database for database queries
  - mysqli::set_charset — Sets the client character set
  - mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation
  - mysqli::ssl_set — Used for establishing secure connections using SSL
  - mysqli::stat — Gets the current system status
  - mysqli::stmt_init — Initializes a statement and returns an object for use with mysqli_stmt_prepare
  - mysqli::store_result — Transfers a result set from the last query
  - mysqli::$thread_id — Returns the thread ID for the current connection
  - mysqli::thread_safe — Returns whether thread safety is given or not
  - mysqli::use_result — Initiate a result set retrieval
  - mysqli::$warning_count — Returns the number of warnings generated by the most recently executed query
- mysqli_stmt — The mysqli_stmt class
  - mysqli_stmt::$affected_rows — Returns the total number of rows changed, deleted, inserted, or matched by the last statement executed
  - mysqli_stmt::attr_get — Used to get the current value of a statement attribute
  - mysqli_stmt::attr_set — Used to modify the behavior of a prepared statement
  - mysqli_stmt::bind_param — Binds variables to a prepared statement as parameters
  - mysqli_stmt::bind_result — Binds variables to a prepared statement for result storage
  - mysqli_stmt::close — Closes a prepared statement
  - mysqli_stmt::__construct — Constructs a new mysqli_stmt object
  - mysqli_stmt::data_seek — Adjusts the result pointer to an arbitrary row in the buffered result
  - mysqli_stmt::$errno — Returns the error code for the most recent statement call
  - mysqli_stmt::$error — Returns a string description for last statement error
  - mysqli_stmt::$error_list — Returns a list of errors from the last statement executed
  - mysqli_stmt::execute — Executes a prepared statement
  - mysqli_stmt::fetch — Fetch results from a prepared statement into the bound variables
  - mysqli_stmt::$field_count — Returns the number of columns in the given statement
  - mysqli_stmt::free_result — Frees stored result memory for the given statement handle
  - mysqli_stmt::get_result — Gets a result set from a prepared statement as a mysqli_result object
  - mysqli_stmt::get_warnings — Get result of SHOW WARNINGS
  - mysqli_stmt::$insert_id — Get the ID generated from the previous INSERT operation
  - mysqli_stmt::more_results — Check if there are more query results from a multiple query
  - mysqli_stmt::next_result — Reads the next result from a multiple query
  - mysqli_stmt::$num_rows — Returns the number of rows fetched from the server
  - mysqli_stmt::$param_count — Returns the number of parameters for the given statement
  - mysqli_stmt::prepare — Prepares an SQL statement for execution
  - mysqli_stmt::reset — Resets a prepared statement
  - mysqli_stmt::result_metadata — Returns result set metadata from a prepared statement
  - mysqli_stmt::send_long_data — Send data in blocks
  - mysqli_stmt::$sqlstate — Returns SQLSTATE error from previous statement operation
  - mysqli_stmt::store_result — Stores a result set in an internal buffer
- mysqli_result — The mysqli_result class
  - mysqli_result::__construct — Constructs a mysqli_result object
  - mysqli_result::$current_field — Get current field offset of a result pointer
  - mysqli_result::data_seek — Adjusts the result pointer to an arbitrary row in the result
  - mysqli_result::fetch_all — Fetch all result rows as an associative array, a numeric array, or both
  - mysqli_result::fetch_array — Fetch the next row of a result set as an associative, a numeric array, or both
  - mysqli_result::fetch_assoc — Fetch the next row of a result set as an associative array
  - mysqli_result::fetch_column — Fetch a single column from the next row of a result set
  - mysqli_result::fetch_field — Returns the next field in the result set
  - mysqli_result::fetch_field_direct — Fetch meta-data for a single field
  - mysqli_result::fetch_fields — Returns an array of objects representing the fields in a result set
  - mysqli_result::fetch_object — Fetch the next row of a result set as an object
  - mysqli_result::fetch_row — Fetch the next row of a result set as an enumerated array
  - mysqli_result::$field_count — Gets the number of fields in the result set
  - mysqli_result::field_seek — Set result pointer to a specified field offset
  - mysqli_result::free — Frees the memory associated with a result
  - mysqli_result::getIterator — Retrieve an external iterator
  - mysqli_result::$lengths — Returns the lengths of the columns of the current row in the result set
  - mysqli_result::$num_rows — Gets the number of rows in the result set
- mysqli_driver — The mysqli_driver class
  - mysqli_driver::embedded_server_end — Stop embedded server
  - mysqli_driver::embedded_server_start — Initialize and start embedded server
  - mysqli_driver::$report_mode — Sets mysqli error reporting mode
- mysqli_warning — The mysqli_warning class
  - mysqli_warning::__construct — Private constructor to disallow direct instantiation
  - mysqli_warning::next — Fetch next warning
- mysqli_sql_exception — The mysqli_sql_exception class
  - mysqli_sql_exception::getSqlState — Returns the SQLSTATE error code
- Aliases and deprecated Mysqli İşlevleri
  - mysqli_connect — Takma Adı: mysqli::__construct
  - mysqli::escape_string — Takma Adı: mysqli_real_escape_string
  - mysqli_execute — Takma Adı: mysqli_stmt_execute
  - mysqli_get_client_stats — Returns client per-process statistics
  - mysqli_get_links_stats — Return information about open and cached links
  - mysqli_report — Takma Adı: mysqli_driver->report_mode
  - mysqli::set_opt — Takma Adı: mysqli_options
- Sürüm Bilgisi

# Mysql_xdevapi

# Giriş

This extension provides access to the MySQL Document Store via the X DevAPI. The X DevAPI is a common API provided by multiple MySQL Connectors providing easy access to relational tables as well as collections of documents, which are represented in JSON, from a API with CRUD-style operations.

The X DevAPI uses the X Protocol, the new generation client-server protocol of the MySQL 8.0 server.

For general information about the MySQL Document Store, please refer to the » MySQL Document Store chapter in the MySQL manual.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Building / Compiling From Source

## Gereksinimler

This extension requires a MySQL 8+ server with the X plugin enabled (default).

Prerequisite libraries for compiling this extension are: Boost (1.53.0 or higher), OpenSSL, and Protobuf.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

An example installation procedure on Ubuntu 18.04 with PHP 7.2:

    // Dependencies
    $ apt install build-essential libprotobuf-dev libboost-dev openssl protobuf-compiler liblz4-tool zstd

    // PHP with the desired extensions; php7.2-dev is required to compile
    $ apt install php7.2-cli php7.2-dev php7.2-mysql php7.2-pdo php7.2-xml

    // Compile the extension
    $ pecl install mysql_xdevapi

The `pecl install` command does not enable PHP extensions (by default) and enabling PHP extensions can be done in several ways. Another PHP 7.2 on Ubuntu 18.04 example:

    // Create its own ini file
    $ echo "extension=mysql_xdevapi.so" > /etc/php/7.2/mods-available/mysql_xdevapi.ini

    // Use the 'phpenmod' command (note: it's Debian/Ubuntu specific)
    $ phpenmod -v 7.2 -s ALL mysql_xdevapi

    // A 'phpenmod' alternative is to manually symlink it
    // $ ln -s /etc/php/7.2/mods-available/mysql_xdevapi.ini /etc/php/7.2/cli/conf.d/20-mysql_xdevapi.ini

    // Let's see which MySQL extensions are enabled now
    $ php -m |grep mysql

    mysql_xdevapi
    mysqli
    mysqlnd
    pdo_mysql

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/mysql_xdevapi.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Mysql_xdevapi Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
xmysqlnd.collect_memory_statistics | 0 | `INI_SYSTEM` |
xmysqlnd.collect_statistics | 1 | `INI_ALL` |
xmysqlnd.debug |  | `INI_SYSTEM` |
xmysqlnd.mempool_default_size | 16000 | `INI_ALL` |
xmysqlnd.net_read_timeout | 31536000 | `INI_SYSTEM` |
xmysqlnd.trace_alloc |  | `INI_SYSTEM` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`xmysqlnd.collect_memory_statistics` int

`xmysqlnd.collect_statistics` int

`xmysqlnd.debug` string

`xmysqlnd.mempool_default_size` int

`xmysqlnd.net_read_timeout` int

`xmysqlnd.trace_alloc` string

## Building / Compiling From Source

Considerations for compiling this extension from source.

- The extension name is 'mysql_xdevapi', so use `--enable-mysql-xdevapi`.

- Boost: required, optionally use the --with-boost=DIR configure option or set the MYSQL_XDEVAPI_BOOST_ROOT environment variable. Only the boost header files are required; not the binaries.

- Google Protocol Buffers (protobuf): required, optionally use the --with-protobuf=DIR configure option or set the MYSQL_XDEVAPI_PROTOBUF_ROOT environment variable.

  Optionally use `make protobufs` to generate protobuf files (*.pb.cc/.h), and `make clean-protobufs` to delete generate protobuf files.

  Windows specific protobuf note: depending on your environment, the static library with a multi-threaded DLL runtime may be needed. To prepare, use the following options: -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF

- Google Protocol Buffers / protocol compiler (protoc): required, ensure that proper 'protoc' is available in the PATH while building. It is especially important as Windows PHP SDK batch scripts may overwrite the environment.

- Bison: required, and available from the PATH.

  Windows specific bison note: we strongly recommended that bison delivered with the chosen PHP SDKis used else an error similar to "zend_globals_macros.h(39): error C2375: 'zendparse': redefinition; different linkage Zend/zend_language_parser.h(214): note: see declaration of 'zendparse'" may be the result. Also, Windows PHP SDK batch scripts may overwrite the environment.

- Windows Specific Notes: To prepare the environment, see the official Windows build documentation for » the current SDK.

  We recommend using the backslash '\\' instead of a slash '/' for all paths.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`MYSQLX_CLIENT_SSL` (int)
`MYSQLX_TYPE_DECIMAL` (int)
`MYSQLX_TYPE_TINY` (int)
`MYSQLX_TYPE_SHORT` (int)
`MYSQLX_TYPE_SMALLINT` (int)
`MYSQLX_TYPE_MEDIUMINT` (int)
`MYSQLX_TYPE_INT` (int)
`MYSQLX_TYPE_BIGINT` (int)
`MYSQLX_TYPE_LONG` (int)
`MYSQLX_TYPE_FLOAT` (int)
`MYSQLX_TYPE_DOUBLE` (int)
`MYSQLX_TYPE_NULL` (int)
`MYSQLX_TYPE_TIMESTAMP` (int)
`MYSQLX_TYPE_LONGLONG` (int)
`MYSQLX_TYPE_INT24` (int)
`MYSQLX_TYPE_DATE` (int)
`MYSQLX_TYPE_TIME` (int)
`MYSQLX_TYPE_DATETIME` (int)
`MYSQLX_TYPE_YEAR` (int)
`MYSQLX_TYPE_NEWDATE` (int)
`MYSQLX_TYPE_ENUM` (int)
`MYSQLX_TYPE_SET` (int)
`MYSQLX_TYPE_TINY_BLOB` (int)
`MYSQLX_TYPE_MEDIUM_BLOB` (int)
`MYSQLX_TYPE_LONG_BLOB` (int)
`MYSQLX_TYPE_BLOB` (int)
`MYSQLX_TYPE_VAR_STRING` (int)
`MYSQLX_TYPE_STRING` (int)
`MYSQLX_TYPE_CHAR` (int)
`MYSQLX_TYPE_BYTES` (int)
`MYSQLX_TYPE_INTERVAL` (int)
`MYSQLX_TYPE_GEOMETRY` (int)
`MYSQLX_TYPE_JSON` (int)
`MYSQLX_TYPE_NEWDECIMAL` (int)
`MYSQLX_TYPE_BIT` (int)
`MYSQLX_LOCK_DEFAULT` (int)
`MYSQLX_LOCK_NOWAIT` (int)
`MYSQLX_LOCK_SKIP_LOCKED` (int)

# Sürüm Bilgisi

Bu eklentinin sınıf/yöntem/işlevlerinde aşağıdaki değişiklikler yapıldı.

### General Changelog for the ext/mysql_xdevapi extension

This changelog references the ext/mysql_xdevapi extension.

### Global ext/mysql_xdevapi changes

Sürüm: | Açıklama
--- | ---
8.0.28 | Removed TLSv1 and TLSv1.1 support. The values "TLSv1", "TLSv1.0", and "TLSv1.1" are now considered invalid for the "tls-versions" connection attribute.
8.0.26 | Deprecated TLSv1 and TLSv1.1 support.

# Örnekler

The central entry point to the X DevAPI is the mysql_xdevapi\getSession() function, which receives a URI to a MySQL 8.0 Server and returns a mysql_xdevapi\Session object.

Örnek 1 Connecting to a MySQL Server

    <?php
    try {
        $session = mysql_xdevapi\getSession("mysqlx://user:password@host");
    } catch(Exception $e) {
        die("Connection could not be established: " . $e->getMessage());
    }

    // ... use $session
    ?>

The session provides full access to the API. For a new MySQL Server installation, the first step is to create a database schema with a collection to store data:

Örnek 2 Creating a Schema and Collection on the MySQL Server

    <?php
    $schema = $session->createSchema("test");
    $collection = $schema->createCollection("example");
    ?>

When storing data, typically json_encode() is used to encode the data into JSON, which can then be stored inside a collection.

The following example stores data into the collection we created earlier, and then retrieve parts of it again.

Örnek 3 Storing and Retrieving Data

    <?php
    $marco = [
      "name" => "Marco",
      "age"  => 19,
      "job"  => "Programmer"
    ];
    $mike = [
      "name" => "Mike",
      "age"  => 39,
      "job"  => "Manager"
    ];

    $schema = $session->getSchema("test");
    $collection = $schema->getCollection("example");

    $collection->add($marco, $mike)->execute();

    var_dump($collection->find("name = 'Mike'")->execute()->fetchOne());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      ["_id"]=>
      string(28) "00005ad66aaf0000000000000003"
      ["age"]=>
      int(39)
      ["job"]=>
      string(7) "Manager"
      ["name"]=>
      string(4) "Mike"
    }

The example demonstrates that the MySQL Server adds an extra field named `_id`, which serves as primary key to the document.

The example also demonstrates that retrieved data is sorted alphabetically. That specific order comes from the efficient binary storage inside the MySQL server, but it should not be relied upon. Refer to the MySQL JSON datatype documentation for details.

Optionally use PHP's iterators to fetch multiple documents:

Örnek 4 Fetching and Iterating Multiple Documents

    <?php
    $result = $collection->find()->execute();
    foreach ($result as $doc) {
      echo "{$doc["name"]} is a {$doc["job"]}.\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Marco is a Programmer.
    Mike is a Manager.

# Mysql_xdevapi İşlevleri

# expression

(No version information available, might only be in Git)

expression — Bind prepared statement variables as parameters

### Açıklama

function mysql_xdevapi\expression(string `$expression`): object

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`expression`

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Expression() example

    <?php
    $expression = mysql_xdevapi\Expression("[age,job]");

    $res  = $coll->find("age > 30")->fields($expression)->limit(3)->execute();
    $data = $res->fetchAll();

    print_r($data);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    <?php

# getSession

(No version information available, might only be in Git)

getSession — Connect to a MySQL server

### Açıklama

function mysql_xdevapi\getSession(string `$uri`): mysql_xdevapi\Session

Connects to the MySQL server.

### Bağımsız Değişkenler

`uri`

  The URI to the MySQL server, such as `mysqlx://user:password@host`.

  URI format:

  `scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...`

  - `scheme`: required, the connection protocol

    In mysql_xdevapi it is always 'mysqlx' (for X Protocol)

  - `user`: optional, the MySQL user account for authentication

  - `password`: optional, the MySQL user's password for authentication

  - `target`: required, the server instance the connection refers to:

    * TCP connection (host name, IPv4 address, or IPv6 address)

    * Unix socket path (local file path)

    * Windows named-pipe (local file path)

  - `port`: optional, network port of MySQL server.

    by default port for X Protocol is 33060

  - `?attribute=value`: this element is optional and specifies a data dictionary that contains different options, including:

    - The `auth` (authentication mechanism) attribute as it relates to encrypted connections. For additional information, see » Command Options for Encrypted Connections. The following 'auth' values are supported: `plain`, `mysql41`, `external`, and `sha256_mem`.

    - The `connect-timeout` attribute affects the connection and not subsequent operations. It is set per connection whether on a single or multiple hosts.

      Pass in a positive integer to define the connection timeout in seconds, or pass in 0 (zero) to disable the timeout (infinite). Not defining connect-timeout uses the default value of 10.

      Related, the MYSQLX_CONNECTION_TIMEOUT (timeout in seconds) and MYSQLX_TEST_CONNECTION_TIMEOUT (used while running tests) environment variables can be set and used instead of connect-timeout in the URI. The connect-timeout URI option has precedence over these environment variables.

    - The optional `compression` attribute accepts these values: `preferred` (client negotiates with server to find a supported algorithm; connection is uncompressed if a mutually supported algorithm is not found), `required` (like "preferred", but connection is terminated if a mutually supported algorithm is not found), or `disabled` (connection is uncompressed). Defaults to `preferred`.

      This option was added in version 8.0.20.

    - The optional `compression-algorithms` attribute defines the desired compression algorithms (and their preferred usage order): `zstd_stream` (alias: zstd), `lz4_message` (alias: lz4), or `deflate_stream` (aliases: deflate or zlib). By default, the order used (depending on system availability) is lz4_message, zstd_stream, then deflate_stream. For example, passing in compression-algorithms=[lz4,zstd_stream] uses lz4 if it's available, otherwise zstd_stream is used. If both are unavailable then behavior depends on the compression value e.g., if compression=required then it'll fail with an error.

      This option was added in version 8.0.22.

  Örnek 1 URI examples

      mysqlx://foobar
      mysqlx://root@localhost?socket=%2Ftmp%2Fmysqld.sock%2F
      mysqlx://foo:bar@localhost:33060
      mysqlx://foo:bar@localhost:33160?ssl-mode=disabled
      mysqlx://foo:bar@localhost:33260?ssl-mode=required
      mysqlx://foo:bar@localhost:33360?ssl-mode=required&auth=mysql41
      mysqlx://foo:bar@(/path/to/socket)
      mysqlx://foo:bar@(/path/to/socket)?auth=sha256_mem
      mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]
      mysqlx://foobar?ssl-ca=(/path/to/ca.pem)&ssl-crl=(/path/to/crl.pem)
      mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]?ssl-mode=disabled
      mysqlx://foo:bar@localhost:33160/?connect-timeout=0
      mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required
      mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required&compression-algorithms=[lz4,zstd_stream]

  For related information, see MySQL Shell's » Connecting using a URI String.

### Dönen Değerler

A Session object.

### Hatalar/İstisnalar

A connection failure throws an Exception.

### Örnekler

Örnek 2 mysql_xdevapi\getSession() example

    <?php
    try {
        $session = mysql_xdevapi\getSession("mysqlx://user:password@host");
    } catch(Exception $e) {
        die("Connection could not be established: " . $e->getMessage());
    }

    $schemas = $session->getSchemas();
    print_r($schemas);

    $mysql_version = $session->getServerVersion();
    print_r($mysql_version);

    var_dump($collection->find("name = 'Alfred'")->execute()->fetchOne());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\Schema Object
            (
                [name] => helloworld
            )
        [1] => mysql_xdevapi\Schema Object
            (
                [name] => information_schema
            )
        [2] => mysql_xdevapi\Schema Object
            (
                [name] => mysql
            )
        [3] => mysql_xdevapi\Schema Object
            (
                [name] => performance_schema
            )
        [4] => mysql_xdevapi\Schema Object
            (
                [name] => sys
            )
    )

    80012

    array(4) {
      ["_id"]=>
      string(28) "00005ad66abf0001000400000003"
      ["age"]=>
      int(42)
      ["job"]=>
      string(7) "Butler"
      ["name"]=>
      string(4) "Alfred"
    }

## İçindekiler

- expression — Bind prepared statement variables as parameters
- getSession — Connect to a MySQL server

# BaseResult interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\BaseResult {
/* Yöntemler */
abstract public function getWarnings(): array
abstract public function getWarningsCount(): int
}

# BaseResult::getWarnings

(No version information available, might only be in Git)

BaseResult::getWarnings — Fetch warnings from last operation

### Açıklama

abstract public function mysql_xdevapi\BaseResult::getWarnings(): array

Fetches warnings generated by MySQL server's last operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of Warning objects from the last operation. Each object defines an error 'message', error 'level', and error 'code'. An empty array is returned if no errors are present.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarnings() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();
    $warnings = $res->getWarnings();

    print_r($warnings);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
        [1] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
    )

# BaseResult::getWarningsCount

(No version information available, might only be in Git)

BaseResult::getWarningsCount — Fetch warning count from last operation

### Açıklama

abstract public function mysql_xdevapi\BaseResult::getWarningsCount(): int

Returns the number of warnings raised by the last operation. Specifically, these warnings are raised by the MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of warnings from the last operation.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarningsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS foo")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();

    echo $res->getWarningsCount();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2

## İçindekiler

- BaseResult::getWarnings — Fetch warnings from last operation
- BaseResult::getWarningsCount — Fetch warning count from last operation

# Client class

(No version information available, might only be in Git)

## Giriş

Provides access to the connection pool.

## Sınıf Sözdizimi

class mysql_xdevapi\Client {
/* Yöntemler */
public function close(): bool
public function getSession(): mysql_xdevapi\Session
}

# mysql_xdevapi\Client::close

(No version information available, might only be in Git)

mysql_xdevapi\Client::close — Close client

### Açıklama

public function mysql_xdevapi\Client::close(): bool

Close all client connections with the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if connections are closed.

# Client::__construct

(No version information available, might only be in Git)

Client::__construct — Client constructor

### Açıklama

private function mysql_xdevapi\Client::__construct()

Construct a client object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Client::__construct() example

    <?php
    $pooling_options = '{
      "enabled": true,
        "maxSize": 10,
        "maxIdleTime": 3600,
        "queueTimeOut": 1000
    }';
    $client = mysql_xdevapi\getClient($connection_uri, $pooling_options);
    $session = $client->getSession();

# Client::getClient

(No version information available, might only be in Git)

Client::getClient — Get client session

### Açıklama

public function mysql_xdevapi\Client::getSession(): mysql_xdevapi\Session

Get session associated with the client.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Session object.

## İçindekiler

- mysql_xdevapi\Client::close — Close client
- Client::__construct — Client constructor
- Client::getClient — Get client session

# Collection class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Collection implements mysql_xdevapi\SchemaObject {
/* Özellikler */
public $name;
/* Yöntemler */
public function add(mixed `$document`): mysql_xdevapi\CollectionAdd
public function addOrReplaceOne(string `$id`, string `$doc`): mysql_xdevapi\Result
public function count(): int
public function createIndex(string `$index_name`, string `$index_desc_json`): void
public function dropIndex(string `$index_name`): bool
public function existsInDatabase(): bool
public function find(string `$search_condition` = ?): mysql_xdevapi\CollectionFind
public function getName(): string
public function getOne(string `$id`): Document
public function getSchema(): Schema Object
public function getSession(): Session
public function modify(string `$search_condition`): mysql_xdevapi\CollectionModify
public function remove(string `$search_condition`): mysql_xdevapi\CollectionRemove
public function removeOne(string `$id`): mysql_xdevapi\Result
public function replaceOne(string `$id`, string `$doc`): mysql_xdevapi\Result
}

## Özellikler

name

# Collection::add

(No version information available, might only be in Git)

Collection::add — Add collection document

### Açıklama

public function mysql_xdevapi\Collection::add(mixed `$document`): mysql_xdevapi\CollectionAdd

Triggers the insertion of the given document(s) into the collection, and multiple variants of this method are supported. Options include:

1. Add a single document as a JSON string.

2. Add a single document as an array as: `[ 'field' => 'value', 'field2' => 'value2' ... ]`

3. A mix of both, and multiple documents can be added in the same operation.

### Bağımsız Değişkenler

`document`

  One or multiple documents, and this can be either JSON or an array of fields with their associated values. This cannot be an empty array.

  The MySQL server automatically generates unique `_id` values for each document (recommended), although this can be manually added as well. This value must be unique as otherwise the add operation will fail.

### Dönen Değerler

A CollectionAdd object. Use execute() to return a Result that can be used to query the number of affected items, the number warnings generated by the operation, or to fetch a list of generated IDs for the inserted documents.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::add() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    // Add two documents
    $collection->add('{"name": "Fred",  "age": 21, "job": "Construction"}')->execute();
    $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

    // Add two documents using a single JSON object
    $result = $collection->add(
      '{"name": "Bernie",
        "jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
        "hobbies": ["Sports","Making cupcakes"]}',
      '{"name": "Jane",
        "jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
        "hobbies": ["Walking","Making pies"]}')->execute();

    // Fetch a list of generated ID's from the last add()
    $ids = $result->getGeneratedIds();
    print_r($ids);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 00005b6b53610000000000000056
        [1] => 00005b6b53610000000000000057
    )

### Notlar

> Bilginize:

> A unique _id is generated by MySQL Server 8.0 or higher, as demonstrated in the example. The _id field must be manually defined if using MySQL Server 5.7.

# Collection::addOrReplaceOne

(No version information available, might only be in Git)

Collection::addOrReplaceOne — Add or replace collection document

### Açıklama

public function mysql_xdevapi\Collection::addOrReplaceOne(string `$id`, string `$doc`): mysql_xdevapi\Result

Add a new document, or replace a document if it already exists.

Here are several scenarios for this method:

- If neither the id or any unique key values conflict with any document in the collection, then the document is added.

- If the id does not match any document but one or more unique key values conflict with a document in the collection, then an error is raised.

- If id matches an existing document and no unique keys are defined for the collection, then the document is replaced.

- If id matches an existing document, and either all unique keys in the replacement document match that same document or they don't conflict with any other documents in the collection, then the document is replaced.

- If id matches an existing document and one or more unique keys match a different document from the collection, then an error is raised.

### Bağımsız Değişkenler

`id`

  This is the filter id. If this id or any other field that has a unique index already exists in the collection, then it will update the matching document instead.

  By default, this id is automatically generated by MySQL Server when the record was added, and is referenced as a field named '_id'.

`doc`

  This is the document to add or replace, which is a JSON string.

### Dönen Değerler

A Result object.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::addOrReplaceOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    // Using add()
    $result = $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

    // Using addOrReplaceOne()
    // Note: we're passing in a known _id value here
    $result = $collection->addOrReplaceOne('00005b6b53610000000000000056', '{"name": "Fred",  "age": 21, "job": "Construction"}');

    ?>

# Collection::__construct

(No version information available, might only be in Git)

Collection::__construct — Collection constructor

### Açıklama

private function mysql_xdevapi\Collection::__construct()

Construct a Collection object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::getOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection->add('{"name": "Alfred", "age": 42, "job": "Butler"}')->execute();

    // A unique _id is (by default, and recommended) generated by MySQL Server
    // This retrieves the generated _id's; only one in this example, so $ids[0]
    $ids        = $result->getGeneratedIds();
    $alfreds_id = $ids[0];

    // ...

    print_r($alfreds_id);
    print_r($collection->getOne($alfreds_id));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    00005b6b536100000000000000b1

    Array
    (
        [_id] => 00005b6b536100000000000000b1
        [age] => 42
        [job] => Butler
        [name] => Alfred
    )

# Collection::count

(No version information available, might only be in Git)

Collection::count — Get document count

### Açıklama

public function mysql_xdevapi\Collection::count(): int

This functionality is similar to a `SELECT COUNT(*)` SQL operation against the MySQL server for the current schema and collection. In other words, it counts the number of documents in the collection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of documents in the collection.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::count() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    $result = $collection
      ->add(
      '{"name": "Bernie",
        "jobs": [
          {"title":"Cat Herder","Salary":42000},
          {"title":"Father","Salary":0}
        ],
        "hobbies": ["Sports","Making cupcakes"]}',
      '{"name": "Jane",
        "jobs": [
          {"title":"Scientist","Salary":18000},
          {"title":"Mother","Salary":0}
        ],
        "hobbies": ["Walking","Making pies"]}')
      ->execute();

    var_dump($collection->count());
    ?>

Yukarıdaki örneğin çıktısı:

    int(2)

# Collection::createIndex

(No version information available, might only be in Git)

Collection::createIndex — Create collection index

### Açıklama

public function mysql_xdevapi\Collection::createIndex(string `$index_name`, string `$index_desc_json`): void

Creates an index on the collection.

An exception is thrown if an index with the same name already exists, or if index definition is not correctly formed.

### Bağımsız Değişkenler

`index_name`

  The name of the index that to create. This name must be a valid index name as accepted by the `CREATE INDEX` SQL query.

`index_desc_json`

  Definition of the index to create. It contains an array of IndexField objects, and each object describes a single document member to include in the index, and an optional string for the type of index that might be INDEX (default) or SPATIAL.

  A single IndexField description consists of the following fields:

  - `field`: string, the full document path to the document member or field to be indexed.

  - `type`: string, one of the supported SQL column types to map the field into. For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for indexing may be added.

  - `required`: bool, (optional) true if the field is required to exist in the document. Defaults to `false`, except for `GEOJSON` where it defaults to `true`.

  - `options`: integer, (optional) special option flags for use when decoding `GEOJSON` data.

  - `srid`: integer, (optional) srid value for use when decoding `GEOJSON` data.

  It is an error to include other fields not described above in IndexDefinition or IndexField documents.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Collection::createIndex() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    // Creating a text index
    $collection->createIndex(
      'myindex1',
      '{"fields": [{
        "field": "$.name",
        "type": "TEXT(25)",
        "required": true}],
        "unique": false}'
    );

    // A spatial index
    $collection->createIndex(
      'myindex2',
      '{"fields": [{
        "field": "$.home",
        "type": "GEOJSON",
        "required": true}],
        "type": "SPATIAL"}'
    );

    // Index with multiple fields
    $collection->createIndex(
      'myindex3',
      '{"fields": [
        {
          "field": "$.name",
          "type": "TEXT(20)",
          "required": true
        },
        {
          "field": "$.age",
          "type": "INTEGER"
        },
        {
          "field": "$.job",
          "type": "TEXT(30)",
          "required": false
        }
      ],
      "unique": true
      }'
    );

# Collection::dropIndex

(No version information available, might only be in Git)

Collection::dropIndex — Drop collection index

### Açıklama

public function mysql_xdevapi\Collection::dropIndex(string `$index_name`): bool

Drop a collection index.

This operation does not yield an error if the index does not exist, but `false` is returned in that case.

### Bağımsız Değişkenler

`index_name`

  Name of collection index to drop.

### Dönen Değerler

`true` if the DROP INDEX operation succeeded, otherwise `false`.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::dropIndex() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    // ...

    $collection = $schema->getCollection("people");

    $collection->createIndex(
      'myindex',
      '{"fields": [{"field": "$.name", "type": "TEXT(25)", "required": true}], "unique": false}'
    );

    // ...

    if ($collection->dropIndex('myindex')) {
        echo "An index named 'myindex' was found, and dropped.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    An index named 'myindex' was found, and dropped.

# Collection::existsInDatabase

(No version information available, might only be in Git)

Collection::existsInDatabase — Check if collection exists in database

### Açıklama

public function mysql_xdevapi\Collection::existsInDatabase(): bool

Checks if the Collection object refers to a collection in the database (schema).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if collection exists in the database, else `false` if it does not.

A table defined with two columns (doc and _id) is considered a collection, and a third _json_schema column as of MySQL 8.0.21. Adding an additional column means existsInDatabase() will no longer see it as a collection.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::existsInDatabase() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    // ...

    $collection = $schema->getCollection("people");

    // ...

    if (!$collection->existsInDatabase()) {
        echo "The collection no longer exists in the database named addressbook. What happened?";
    }
    ?>

# Collection::find

(No version information available, might only be in Git)

Collection::find — Search for document

### Açıklama

public function mysql_xdevapi\Collection::find(string `$search_condition` = ?): mysql_xdevapi\CollectionFind

Search a database collection for a document or set of documents. The found documents are returned as a CollectionFind object is to further modify or fetch results from.

### Bağımsız Değişkenler

`search_condition`

  Although optional, normally a condition is defined to limit the results to a subset of documents.

  Multiple elements might build the condition and the syntax supports parameter binding. The expression used as search condition must be a valid SQL expression. If no search condition is provided (field empty) then find('true') is assumed.

### Dönen Değerler

A CollectionFind object to verify the operation, or fetch the found documents.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::find() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $collection->add('{"name": "Alfred",     "age": 18, "job": "Butler"}')->execute();
    $collection->add('{"name": "Bob",        "age": 19, "job": "Swimmer"}')->execute();
    $collection->add('{"name": "Fred",       "age": 20, "job": "Construction"}')->execute();
    $collection->add('{"name": "Wilma",      "age": 21, "job": "Teacher"}')->execute();
    $collection->add('{"name": "Suki",       "age": 22, "job": "Teacher"}')->execute();

    $find   = $collection->find('job LIKE :job AND age > :age');
    $result = $find
      ->bind(['job' => 'Teacher', 'age' => 20])
      ->sort('age DESC')
      ->limit(2)
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b536100000000000000a8
                [age] => 22
                [job] => Teacher
                [name] => Suki
            )
        [1] => Array
            (
                [_id] => 00005b6b536100000000000000a7
                [age] => 21
                [job] => Teacher
                [name] => Wilma
            )
    )

# Collection::getName

(No version information available, might only be in Git)

Collection::getName — Get collection name

### Açıklama

public function mysql_xdevapi\Collection::getName(): string

Retrieve the collection's name.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The collection name, as a string.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::getName() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    // ...

    var_dump($collection->getName());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(6) "people"

# Collection::getOne

(No version information available, might only be in Git)

Collection::getOne — Get one document

### Açıklama

public function mysql_xdevapi\Collection::getOne(string `$id`): Document

Fetches one document from the collection.

This is a shortcut for: `Collection.find("_id = :id").bind("id", id).execute().fetchOne();`

### Bağımsız Değişkenler

`id`

  The document _id in the collection.

### Dönen Değerler

The collection object, or `null` if the _id does not match a document.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::getOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection->add('{"name": "Alfred", "age": 42, "job": "Butler"}')->execute();

    // A unique _id is (by default, and recommended) generated by MySQL Server
    // This retrieves the generated _id's; only one in this example, so $ids[0]
    $ids        = $result->getGeneratedIds();
    $alfreds_id = $ids[0];

    // ...

    print_r($alfreds_id);
    print_r($collection->getOne($alfreds_id));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    00005b6b536100000000000000b1

    Array
    (
        [_id] => 00005b6b536100000000000000b1
        [age] => 42
        [job] => Butler
        [name] => Alfred
    )

# Collection::getSchema

(No version information available, might only be in Git)

Collection::getSchema — Get schema object

### Açıklama

public function mysql_xdevapi\Collection::getSchema(): Schema Object

Retrieve the schema object that contains the collection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The schema object on success, or `null` if the object cannot be retrieved for the given collection.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::getSchema() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    var_dump($collection->getSchema());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Schema)#9 (1) {
      ["name"]=>
      string(11) "addressbook"
    }

# Collection::getSession

(No version information available, might only be in Git)

Collection::getSession — Get session object

### Açıklama

public function mysql_xdevapi\Collection::getSession(): Session

Get a new Session object from the Collection object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Session object.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::getSession() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    // ...

    $newsession = $collection->getSession();

    var_dump($session);
    var_dump($newsession);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Session)#1 (0) {
    }
    object(mysql_xdevapi\Session)#4 (0) {
    }

# Collection::modify

(No version information available, might only be in Git)

Collection::modify — Modify collection documents

### Açıklama

public function mysql_xdevapi\Collection::modify(string `$search_condition`): mysql_xdevapi\CollectionModify

Modify the documents of a collection that meet specific search conditions. Multiple operations are allowed, and parameter binding is supported.

### Bağımsız Değişkenler

`search_condition`

  Must be a valid SQL expression used to match the documents to modify. This expression might be as simple as `true`, which matches all documents, or it might use functions and operators such as `'CAST(_id AS SIGNED) >= 10'`, `'age MOD 2 = 0 OR age MOD 3 = 0'`, or `'_id IN ["2","5","7","10"]'`.

### Dönen Değerler

If the operation is not executed, then the function will return a Modify object that can be used to add additional modify operations.

If the modify operation is executed, then the returned object will contain the result of the operation.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::modify() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $collection->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $collection->add('{"name": "Bob",    "age": 19, "job": "Painter"}')->execute();

    // Add two new jobs for all Painters: Artist and Crafter
    $collection
      ->modify("job in ('Butler', 'Painter')")
      ->arrayAppend('job', 'Artist')
      ->arrayAppend('job', 'Crafter')
      ->execute();

    // Remove the 'beer' field from all documents with the age 21
    $collection
      ->modify('age < 21')
      ->unset(['beer'])
      ->execute();
    ?>

# Collection::remove

(No version information available, might only be in Git)

Collection::remove — Remove collection documents

### Açıklama

public function mysql_xdevapi\Collection::remove(string `$search_condition`): mysql_xdevapi\CollectionRemove

Removes documents of a collection that meet specific search conditions. Multiple operations are allowed, and parameter binding is supported.

### Bağımsız Değişkenler

`search_condition`

  Must be a valid SQL expression used to match the documents to remove. This expression might be as simple as `true`, which matches all documents, or it might use functions and operators such as `'CAST(_id AS SIGNED) >= 10'`, `'age MOD 2 = 0 OR age MOD 3 = 0'`, or `'_id IN ["2","5","7","10"]'`.

### Dönen Değerler

If the operation is not executed, then the function will return a Remove object that can be used to add additional remove operations.

If the remove operation is executed, then the returned object will contain the result of the operation.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::remove() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $collection->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $collection->add('{"name": "Bob",    "age": 19, "job": "Painter"}')->execute();

    // Remove all painters
    $collection
      ->remove("job in ('Painter')")
      ->execute();

    // Remove the oldest butler
    $collection
      ->remove("job in ('Butler')")
      ->sort('age desc')
      ->limit(1)
      ->execute();

    // Remove record with highest age
    $collection
      ->remove('true')
      ->sort('age desc')
      ->limit(1)
      ->execute();
    ?>

# Collection::removeOne

(No version information available, might only be in Git)

Collection::removeOne — Remove one collection document

### Açıklama

public function mysql_xdevapi\Collection::removeOne(string `$id`): mysql_xdevapi\Result

Remove one document from the collection with the corresponding ID. This is a shortcut for `Collection.remove("_id = :id").bind("id", id).execute()`.

### Bağımsız Değişkenler

`id`

  The ID of the collection document to remove. Typically this is the _id that was generated by MySQL Server when the record was added.

### Dönen Değerler

A Result object that can be used to query the number of affected items or the number warnings generated by the operation.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::removeOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();

    // Normally the _id is known by other means,
    // but for this example let's fetch the generated id and use it
    $ids       = $result->getGeneratedIds();
    $alfred_id = $ids[0];

    $result = $collection->removeOne($alfred_id);

    if(!$result->getAffectedItemsCount()) {
        echo "Alfred with id $alfred_id was not removed.";
    } else {
        echo "Goodbye, Alfred, you can take _id $alfred_id with you.";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Goodbye, Alfred, you can take _id 00005b6b536100000000000000cb with you.

# Collection::replaceOne

(No version information available, might only be in Git)

Collection::replaceOne — Replace one collection document

### Açıklama

public function mysql_xdevapi\Collection::replaceOne(string `$id`, string `$doc`): mysql_xdevapi\Result

Updates (or replaces) the document identified by ID, if it exists.

### Bağımsız Değişkenler

`id`

  ID of the document to replace or update. Typically this is the _id that was generated by MySQL Server when the record was added.

`doc`

  Collection document to update or replace the document matching the id parameter.

  This document can be either a document object or a valid JSON string describing the new document.

### Dönen Değerler

A Result object that can be used to query the number of affected items and the number warnings generated by the operation.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::replaceOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();

    // Normally the _id is known by other means,
    // but for this example let's fetch the generated id and use it
    $ids       = $result->getGeneratedIds();
    $alfred_id = $ids[0];

    // ...

    $alfred = $collection->getOne($alfred_id);
    $alfred['age'] = 81;
    $alfred['job'] = 'Guru';

    $collection->replaceOne($alfred_id, $alfred);

    ?>

## İçindekiler

- Collection::add — Add collection document
- Collection::addOrReplaceOne — Add or replace collection document
- Collection::__construct — Collection constructor
- Collection::count — Get document count
- Collection::createIndex — Create collection index
- Collection::dropIndex — Drop collection index
- Collection::existsInDatabase — Check if collection exists in database
- Collection::find — Search for document
- Collection::getName — Get collection name
- Collection::getOne — Get one document
- Collection::getSchema — Get schema object
- Collection::getSession — Get session object
- Collection::modify — Modify collection documents
- Collection::remove — Remove collection documents
- Collection::removeOne — Remove one collection document
- Collection::replaceOne — Replace one collection document

# CollectionAdd class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CollectionAdd implements mysql_xdevapi\Executable {
/* Yöntemler */
public function execute(): mysql_xdevapi\Result
}

# CollectionAdd::__construct

(No version information available, might only be in Git)

CollectionAdd::__construct — CollectionAdd constructor

### Açıklama

private function mysql_xdevapi\CollectionAdd::__construct()

Use to add a document to a collection; called from a Collection object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionAdd::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    // Add two documents
    $collection
      ->add('{"name": "Fred",  "age": 21, "job": "Construction"}')
      ->execute();

    $collection
      ->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')
      ->execute();

    // Add two documents using a single JSON object
    $result = $collection
      ->add(
        '{"name": "Bernie",
          "jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
          "hobbies": ["Sports","Making cupcakes"]}',
        '{"name": "Jane",
          "jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
          "hobbies": ["Walking","Making pies"]}')
      ->execute();

    // Fetch a list of generated ID's from the last add()
    $ids = $result->getGeneratedIds();
    print_r($ids);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 00005b6b53610000000000000056
        [1] => 00005b6b53610000000000000057
    )

### Notlar

> Bilginize:

> A unique _id is generated by MySQL Server 8.0 or higher, as demonstrated in the example. The _id field must be manually defined if using MySQL Server 5.7.

# CollectionAdd::execute

(No version information available, might only be in Git)

CollectionAdd::execute — Execute the statement

### Açıklama

public function mysql_xdevapi\CollectionAdd::execute(): mysql_xdevapi\Result

The execute method is required to send the CRUD operation request to the MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Result object that can be used to verify the status of the operation, such as the number of affected rows.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionAdd::execute() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    // Add two documents
    $collection
      ->add('{"name": "Fred",  "age": 21, "job": "Construction"}')
      ->execute();

    $collection
      ->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')
      ->execute();

    // Add two documents using a single JSON object
    $result = $collection
      ->add(
        '{"name": "Bernie",
          "jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
          "hobbies": ["Sports","Making cupcakes"]}',
        '{"name": "Jane",
          "jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
          "hobbies": ["Walking","Making pies"]}')
      ->execute();

    // Fetch a list of generated ID's from the last add()
    $ids = $result->getGeneratedIds();
    print_r($ids);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 00005b6b53610000000000000056
        [1] => 00005b6b53610000000000000057
    )

## İçindekiler

- CollectionAdd::__construct — CollectionAdd constructor
- CollectionAdd::execute — Execute the statement

# CollectionFind class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CollectionFind implements mysql_xdevapi\Executable, mysql_xdevapi\CrudOperationBindable, mysql_xdevapi\CrudOperationLimitable, mysql_xdevapi\CrudOperationSortable {
/* Yöntemler */
public function bind(array `$placeholder_values`): mysql_xdevapi\CollectionFind
public function execute(): mysql_xdevapi\DocResult
public function fields(string `$projection`): mysql_xdevapi\CollectionFind
public function groupBy(string `$sort_expr`): mysql_xdevapi\CollectionFind
public function having(string `$sort_expr`): mysql_xdevapi\CollectionFind
public function limit(int `$rows`): mysql_xdevapi\CollectionFind
public function lockExclusive(int `$lock_waiting_option` = ?): mysql_xdevapi\CollectionFind
public function lockShared(int `$lock_waiting_option` = ?): mysql_xdevapi\CollectionFind
public function offset(int `$position`): mysql_xdevapi\CollectionFind
public function sort(string `$sort_expr`): mysql_xdevapi\CollectionFind
}

# CollectionFind::bind

(No version information available, might only be in Git)

CollectionFind::bind — Bind value to query placeholder

### Açıklama

public function mysql_xdevapi\CollectionFind::bind(array `$placeholder_values`): mysql_xdevapi\CollectionFind

It allows the user to bind a parameter to the placeholder in the search condition of the find operation. The placeholder has the form of :NAME where ':' is a common prefix that must always exists before any NAME, NAME is the actual name of the placeholder. The bind function accepts a list of placeholders if multiple entities have to be substituted in the search condition.

### Bağımsız Değişkenler

`placeholder_values`

  Values to substitute in the search condition; multiple values are allowed and are passed as an array where "PLACEHOLDER_NAME => PLACEHOLDER_VALUE".

### Dönen Değerler

A CollectionFind object, or chain with execute() to return a Result object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::bind() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");
    $result = $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000cf"
        ["age"]=>
        int(18)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(6) "Alfred"
      }
    }

# CollectionFind::__construct

(No version information available, might only be in Git)

CollectionFind::__construct — CollectionFind constructor

### Açıklama

private function mysql_xdevapi\CollectionFind::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 CollectionFind example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");
    $result = $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000cf"
        ["age"]=>
        int(18)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(6) "Alfred"
      }
    }

# CollectionFind::execute

(No version information available, might only be in Git)

CollectionFind::execute — Execute the statement

### Açıklama

public function mysql_xdevapi\CollectionFind::execute(): mysql_xdevapi\DocResult

Execute the find operation; this functionality allows for method chaining.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A mysql_xdevapi\DocResult object that can be used to either fetch results from, or to query the status of the operation.

### Örnekler

Örnek 1 CollectionFind example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000cf"
        ["age"]=>
        int(18)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(6) "Alfred"
      }
    }

# CollectionFind::fields

(No version information available, might only be in Git)

CollectionFind::fields — Set document field filter

### Açıklama

public function mysql_xdevapi\CollectionFind::fields(string `$projection`): mysql_xdevapi\CollectionFind

Defines the columns for the query to return. If not defined, all columns are used.

### Bağımsız Değişkenler

`projection`

  Can either be a single string or an array of strings identifying the columns to be returned for each document that match the search condition.

### Dönen Değerler

A CollectionFind object that can be used for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::fields() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->fields('name')
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(1) {
        ["name"]=>
        string(6) "Alfred"
      }
    }

# CollectionFind::groupBy

(No version information available, might only be in Git)

CollectionFind::groupBy — Set grouping criteria

### Açıklama

public function mysql_xdevapi\CollectionFind::groupBy(string `$sort_expr`): mysql_xdevapi\CollectionFind

This function can be used to group the result set by one or more columns. It is often used with aggregate functions such as `COUNT`, `MAX`, `MIN`, `SUM` etc.

### Bağımsız Değişkenler

`sort_expr`

  The column or columns that have to be used for the group operation, this can either be a single string or an array of string arguments, one for each column.

### Dönen Değerler

A CollectionFind object that can be used for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::groupBy() example

    <?php

    // Assuming $coll is a valid Collection object

    // Extract all the documents from the Collection and group the results by the 'name' field
    $res = $coll->find()->groupBy('name')->execute();

    ?>

# CollectionFind::having

(No version information available, might only be in Git)

CollectionFind::having — Set condition for aggregate functions

### Açıklama

public function mysql_xdevapi\CollectionFind::having(string `$sort_expr`): mysql_xdevapi\CollectionFind

This function can be used after the 'field' operation in order to make a selection on the documents to extract.

### Bağımsız Değişkenler

`sort_expr`

  This must be a valid SQL expression, the use of aggreate functions is allowed

### Dönen Değerler

CollectionFind object that can be used for further processing

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::having() example

    <?php

    //Assuming $coll is a valid Collection object

    //Find all the documents for which the 'age' is greather than 40,
    //Only the columns 'name' and 'age' are returned in the Result object
    $res = $coll->find()->fields(['name','age'])->having('age > 40')->execute();

    ?>

# CollectionFind::limit

(No version information available, might only be in Git)

CollectionFind::limit — Limit number of returned documents

### Açıklama

public function mysql_xdevapi\CollectionFind::limit(int `$rows`): mysql_xdevapi\CollectionFind

Set the maximum number of documents to return.

### Bağımsız Değişkenler

`rows`

  Maximum number of documents.

### Dönen Değerler

A CollectionFind object that can be used for additional processing; chain with the execute() method to return a DocResult object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::limit() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");
    $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();
    $create
      ->add('{"name": "Reginald", "age": 42, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->limit(1)
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000f3"
        ["age"]=>
        int(42)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(8) "Reginald"
      }
    }

# CollectionFind::lockExclusive

(No version information available, might only be in Git)

CollectionFind::lockExclusive — Execute operation with EXCLUSIVE LOCK

### Açıklama

public function mysql_xdevapi\CollectionFind::lockExclusive(int `$lock_waiting_option` = ?): mysql_xdevapi\CollectionFind

Locks the document exclusively. As long as the document is locked, other transactions can't update the document, use `SELECT ... LOCK IN SHARE MODE`, or read the data in certain transaction isolation levels. Consistent reads ignore any locks set on the records that exist in the read view.

To avoid concurrency problems, it makes sense to use this function with the mysql_xdevapi\Collection::modify() method. Essentially, this function uses row locks to serialise access to rows.

### Bağımsız Değişkenler

`lock_waiting_option`

  Optional waiting option. By default it is `MYSQLX_LOCK_DEFAULT`. Valid values are these constants:

  - `MYSQLX_LOCK_DEFAULT`

  - `MYSQLX_LOCK_NOWAIT`

  - `MYSQLX_LOCK_SKIP_LOCKED`

### Dönen Değerler

Returns a CollectionFind object that can be used for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::lockExclusive() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $session->startTransaction();

    $result = $collection
      ->find("age > 50")
      ->lockExclusive()
      ->execute();

    // ... do an operation on the object

    // Complete the transaction and unlock the document
    $session->commit();
    ?>

# CollectionFind::lockShared

(No version information available, might only be in Git)

CollectionFind::lockShared — Execute operation with SHARED LOCK

### Açıklama

public function mysql_xdevapi\CollectionFind::lockShared(int `$lock_waiting_option` = ?): mysql_xdevapi\CollectionFind

Allows to share the documents between multiple transactions which are locking in shared mode.

Other sessions can read the rows, but cannot modify them until your transaction commits.

If any of these rows were changed by another transaction that hasn't been committed, the query will wait until that transaction has ended to be able to use the latest values.

### Bağımsız Değişkenler

`lock_waiting_option`

  Optional waiting option. By default it is `MYSQLX_LOCK_DEFAULT`. Valid values are these constants:

  - `MYSQLX_LOCK_DEFAULT`

  - `MYSQLX_LOCK_NOWAIT`

  - `MYSQLX_LOCK_SKIP_LOCKED`

### Dönen Değerler

A CollectionFind object that can be used for further processing

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::lockShared() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $session->startTransaction();

    $result = $collection
      ->find("age > 50")
      ->lockShared()
      ->execute();

    // ... read the object in shared mode

    // Complete the transaction and unlock the document
    $session->commit();
    ?>

# CollectionFind::offset

(No version information available, might only be in Git)

CollectionFind::offset — Skip given number of elements to be returned

### Açıklama

public function mysql_xdevapi\CollectionFind::offset(int `$position`): mysql_xdevapi\CollectionFind

Skip (offset) these number of elements that otherwise would be returned by the find operation. Use with the limit() method.

Defining an offset larger than the result set size results in an empty set.

### Bağımsız Değişkenler

`position`

  Number of elements to skip for the limit() operation.

### Dönen Değerler

A CollectionFind object that can be used for additional processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::offset() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");
    $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();
    $create
      ->add('{"name": "Reginald", "age": 42, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find()
      ->sort('age asc')
      ->offset(1)
      ->limit(1)
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000f3"
        ["age"]=>
        int(42)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(8) "Reginald"
      }
    }

# CollectionFind::sort

(No version information available, might only be in Git)

CollectionFind::sort — Set the sorting criteria

### Açıklama

public function mysql_xdevapi\CollectionFind::sort(string `$sort_expr`): mysql_xdevapi\CollectionFind

Sort the result set by the field selected in the sort_expr argument. The allowed orders are ASC (Ascending) or DESC (Descending). This operation is equivalent to the 'ORDER BY' SQL operation and it follows the same set of rules.

### Bağımsız Değişkenler

`sort_expr`

  One or more sorting expressions can be provided. The evaluation is from left to right, and each expression is separated by a comma.

### Dönen Değerler

A CollectionFind object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionFind::sort() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");
    $create
      ->add('{"name": "Alfred", "age": 18, "job": "Butler"}')
      ->execute();
    $create
      ->add('{"name": "Reginald", "age": 42, "job": "Butler"}')
      ->execute();

    // ...

    $collection = $schema->getCollection("people");

    $result = $collection
      ->find()
      ->sort('job desc', 'age asc')
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b53610000000000000106"
        ["age"]=>
        int(18)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(6) "Alfred"
      }
      [1]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b53610000000000000107"
        ["age"]=>
        int(42)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(8) "Reginald"
      }
    }

## İçindekiler

- CollectionFind::bind — Bind value to query placeholder
- CollectionFind::__construct — CollectionFind constructor
- CollectionFind::execute — Execute the statement
- CollectionFind::fields — Set document field filter
- CollectionFind::groupBy — Set grouping criteria
- CollectionFind::having — Set condition for aggregate functions
- CollectionFind::limit — Limit number of returned documents
- CollectionFind::lockExclusive — Execute operation with EXCLUSIVE LOCK
- CollectionFind::lockShared — Execute operation with SHARED LOCK
- CollectionFind::offset — Skip given number of elements to be returned
- CollectionFind::sort — Set the sorting criteria

# CollectionModify class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CollectionModify implements mysql_xdevapi\Executable, mysql_xdevapi\CrudOperationBindable, mysql_xdevapi\CrudOperationLimitable, mysql_xdevapi\CrudOperationSkippable, mysql_xdevapi\CrudOperationSortable {
/* Yöntemler */
public function arrayAppend(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify
public function arrayInsert(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify
public function bind(array `$placeholder_values`): mysql_xdevapi\CollectionModify
public function execute(): mysql_xdevapi\Result
public function limit(int `$rows`): mysql_xdevapi\CollectionModify
public function patch(string `$document`): mysql_xdevapi\CollectionModify
public function replace(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify
public function set(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify
public function skip(int `$position`): mysql_xdevapi\CollectionModify
public function sort(string `$sort_expr`): mysql_xdevapi\CollectionModify
public function unset(array `$fields`): mysql_xdevapi\CollectionModify
}

# CollectionModify::arrayAppend

(No version information available, might only be in Git)

CollectionModify::arrayAppend — Append element to an array field

### Açıklama

public function mysql_xdevapi\CollectionModify::arrayAppend(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify

Add an element to a document's field, as multiple elements of a field are represented as an array. Unlike arrayInsert(), arrayAppend() always appends the new element at the end of the array, whereas arrayInsert() can define the location.

### Bağımsız Değişkenler

`collection_field`

  The identifier of the field where the new element is inserted.

`expression_or_literal`

  The new element to insert at the end of the document field array.

### Dönen Değerler

A CollectionModify object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::arrayAppend() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name in ('Bernie', 'Jane')")
      ->arrayAppend('traits', 'Happy')
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b5361000000000000010c
                [name] => Bernie
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Brother
                        [2] => Human
                        [3] => Happy
                    )
            )
    )

# CollectionModify::arrayInsert

(No version information available, might only be in Git)

CollectionModify::arrayInsert — Insert element into an array field

### Açıklama

public function mysql_xdevapi\CollectionModify::arrayInsert(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify

Adds an element to a document's field, as multiple elements of a field are represented as an array. Unlike mysql_xdevapi\CollectionModify::arrayAppend() this method allows to specify where the new element is inserted by defining which item it is after, whereas mysql_xdevapi\CollectionModify::arrayAppend() always appends the new element at the end of the array.

### Bağımsız Değişkenler

`collection_field`

  Identifies the item in the array after which the new element will be inserted. The format of this parameter is `FIELD_NAME[ INDEX ]` where FIELD_NAME is the name of the document field to add the element to, and INDEX is the INDEX of the element within the field.

  The INDEX field is zero based, so the first item of the array has an index of 0.

`expression_or_literal`

  The new element to insert after FIELD_NAME[ INDEX ]

### Dönen Değerler

A CollectionModify object that can be used to execute the command, or to add additional operations

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::arrayInsert() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name in ('Bernie', 'Jane')")
      ->arrayInsert('traits[1]', 'Happy')
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b5361000000000000010d
                [name] => Bernie
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Happy
                        [2] => Brother
                        [3] => Human
                    )
            )
    )

# CollectionModify::bind

(No version information available, might only be in Git)

CollectionModify::bind — Bind value to query placeholder

### Açıklama

public function mysql_xdevapi\CollectionModify::bind(array `$placeholder_values`): mysql_xdevapi\CollectionModify

Bind a parameter to the placeholder in the search condition of the modify operation.

The placeholder has the form of :NAME where ':' is a common prefix that must always exists before any NAME where NAME is the name of the placeholder. The bind method accepts a list of placeholders if multiple entities have to be substituted in the search condition of the modify operation.

### Bağımsız Değişkenler

`placeholder_values`

  Placeholder values to substitute in the search condition. Multiple values are allowed and have to be passed as an array of mappings PLACEHOLDER_NAME->PLACEHOLDER_VALUE.

### Dönen Değerler

A CollectionModify object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::bind() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name = :name")
      ->bind(['name' => 'Bernie'])
      ->arrayAppend('traits', 'Happy')
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b53610000000000000110
                [name] => Bernie
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Brother
                        [2] => Human
                        [3] => Happy
                    )
            )
    )

# CollectionModify::__construct

(No version information available, might only be in Git)

CollectionModify::__construct — CollectionModify constructor

### Açıklama

private function mysql_xdevapi\CollectionModify::__construct()

Modifies (updates) a collection and is instantiated by the mysql_xdevapi\Collection::modify() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name in ('Bernie', 'Jane')")
      ->arrayAppend('traits', 'Happy')
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b5361000000000000010c
                [name] => Bernie
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Brother
                        [2] => Human
                        [3] => Happy
                    )
            )
    )

# CollectionModify::execute

(No version information available, might only be in Git)

CollectionModify::execute — Execute modify operation

### Açıklama

public function mysql_xdevapi\CollectionModify::execute(): mysql_xdevapi\Result

The execute method is required to send the CRUD operation request to the MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Result object that can be used to verify the status of the operation, such as the number of affected rows.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::execute() example

    <?php

    /* ... */

    ?>

# CollectionModify::limit

(No version information available, might only be in Git)

CollectionModify::limit — Limit number of modified documents

### Açıklama

public function mysql_xdevapi\CollectionModify::limit(int `$rows`): mysql_xdevapi\CollectionModify

Limit the number of documents modified by this operation. Optionally combine with skip() to define an offset value.

### Bağımsız Değişkenler

`rows`

  The maximum number of documents to modify.

### Dönen Değerler

A CollectionModify object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::limit() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $collection->add('{"name": "Fred",  "age": 21, "job": "Construction"}')->execute();
    $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();
    $collection->add('{"name": "Betty", "age": 24, "job": "Teacher"}')->execute();

    $collection
      ->modify("job = :job")
      ->bind(['job' => 'Teacher'])
      ->set('job', 'Principal')
      ->limit(1)
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b53610000000000000118
                [age] => 21
                [job] => Construction
                [name] => Fred
            )
        [1] => Array
            (
                [_id] => 00005b6b53610000000000000119
                [age] => 23
                [job] => Principal
                [name] => Wilma
            )
        [2] => Array
            (
                [_id] => 00005b6b5361000000000000011a
                [age] => 24
                [job] => Teacher
                [name] => Betty
            )
    )

# CollectionModify::patch

(No version information available, might only be in Git)

CollectionModify::patch — Patch document

### Açıklama

public function mysql_xdevapi\CollectionModify::patch(string `$document`): mysql_xdevapi\CollectionModify

Takes a patch object and applies it on one or more documents, and can update multiple document properties.

### Bağımsız Değişkenler

`document`

  A document with the properties to apply to the matching documents.

### Dönen Değerler

A CollectionModify object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::patch() example

    <?php

    $res = $coll->modify('"Programmatore" IN job')->patch('{"Hobby" : "Programmare"}')->execute();

    ?>

# CollectionModify::replace

(No version information available, might only be in Git)

CollectionModify::replace — Replace document field

### Açıklama

public function mysql_xdevapi\CollectionModify::replace(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify

Replace (update) a given field value with a new one.

### Bağımsız Değişkenler

`collection_field`

  The document path of the item to set.

`expression_or_literal`

  The value to set on the specified attribute.

### Dönen Değerler

A CollectionModify object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::replace() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name = :name")
      ->bind(['name' => 'Bernie'])
      ->replace("name", "Bern")
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b5361000000000000011b
                [name] => Bern
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Brother
                        [2] => Human
                    )
            )
    )

# CollectionModify::set

(No version information available, might only be in Git)

CollectionModify::set — Set document attribute

### Açıklama

public function mysql_xdevapi\CollectionModify::set(string `$collection_field`, string `$expression_or_literal`): mysql_xdevapi\CollectionModify

Sets or updates attributes on documents in a collection.

### Bağımsız Değişkenler

`collection_field`

  The document path (name) of the item to set.

`expression_or_literal`

  The value to set it to.

### Dönen Değerler

A CollectionModify object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::set() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $result = $collection
      ->add(
      '{"name":   "Bernie",
        "traits": ["Friend", "Brother", "Human"]}')
      ->execute();

    $collection
      ->modify("name = :name")
      ->bind(['name' => 'Bernie'])
      ->set("name", "Bern")
      ->execute();

    $result = $collection
      ->find()
      ->execute();

    print_r($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [_id] => 00005b6b53610000000000000111
                [name] => Bern
                [traits] => Array
                    (
                        [0] => Friend
                        [1] => Brother
                        [2] => Human
                    )
            )
    )

# CollectionModify::skip

(No version information available, might only be in Git)

CollectionModify::skip — Skip elements

### Açıklama

public function mysql_xdevapi\CollectionModify::skip(int `$position`): mysql_xdevapi\CollectionModify

Skips the first N elements that would otherwise be returned by a find operation. If the number of elements skipped is larger than the size of the result set, then the find operation returns an empty set.

### Bağımsız Değişkenler

`position`

  Number of elements to skip.

### Dönen Değerler

A CollectionModify object to use for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::skip() example

    <?php

    $coll->modify('age > :age')->sort('age desc')->unset(['age'])->bind(['age' => 20])->limit(4)->skip(1)->execute();

    ?>

# CollectionModify::sort

(No version information available, might only be in Git)

CollectionModify::sort — Set the sorting criteria

### Açıklama

public function mysql_xdevapi\CollectionModify::sort(string `$sort_expr`): mysql_xdevapi\CollectionModify

Sorts the result set by the field selected in the sort_expr argument. The allowed orders are ASC (Ascending) or DESC (Descending). This operation is equivalent to the 'ORDER BY' SQL operation and it follows the same set of rules.

### Bağımsız Değişkenler

`sort_expr`

  One or more sort expressions can be provided. The evaluation is from left to right and each expression must be separated by a comma.

### Dönen Değerler

CollectionModify object that can be used for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::sort() example

    <?php

    $res = $coll->modify('true')->sort('name desc', 'age asc')->limit(4)->set('Married', 'NO')->execute();

    ?>

# CollectionModify::unset

(No version information available, might only be in Git)

CollectionModify::unset — Unset the value of document fields

### Açıklama

public function mysql_xdevapi\CollectionModify::unset(array `$fields`): mysql_xdevapi\CollectionModify

Removes attributes from documents in a collection.

### Bağımsız Değişkenler

`fields`

  The attributes to remove from documents in a collection.

### Dönen Değerler

CollectionModify object that can be used for further processing.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionModify::unset() example

    <?php

    $res = $coll->modify('job like :job_name')->unset(["age", "name"])->bind(['job_name' => 'Plumber'])->execute();

    ?>

## İçindekiler

- CollectionModify::arrayAppend — Append element to an array field
- CollectionModify::arrayInsert — Insert element into an array field
- CollectionModify::bind — Bind value to query placeholder
- CollectionModify::__construct — CollectionModify constructor
- CollectionModify::execute — Execute modify operation
- CollectionModify::limit — Limit number of modified documents
- CollectionModify::patch — Patch document
- CollectionModify::replace — Replace document field
- CollectionModify::set — Set document attribute
- CollectionModify::skip — Skip elements
- CollectionModify::sort — Set the sorting criteria
- CollectionModify::unset — Unset the value of document fields

# CollectionRemove class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CollectionRemove implements mysql_xdevapi\Executable, mysql_xdevapi\CrudOperationBindable, mysql_xdevapi\CrudOperationLimitable, mysql_xdevapi\CrudOperationSortable {
/* Yöntemler */
public function bind(array `$placeholder_values`): mysql_xdevapi\CollectionRemove
public function execute(): mysql_xdevapi\Result
public function limit(int `$rows`): mysql_xdevapi\CollectionRemove
public function sort(string `$sort_expr`): mysql_xdevapi\CollectionRemove
}

# CollectionRemove::bind

(No version information available, might only be in Git)

CollectionRemove::bind — Bind value to placeholder

### Açıklama

public function mysql_xdevapi\CollectionRemove::bind(array `$placeholder_values`): mysql_xdevapi\CollectionRemove

Bind a parameter to the placeholder in the search condition of the remove operation.

The placeholder has the form of :NAME where ':' is a common prefix that must always exists before any NAME where NAME is the name of the placeholder. The bind method accepts a list of placeholders if multiple entities have to be substituted in the search condition of the remove operation.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`placeholder_values`

  Placeholder values to substitute in the search condition. Multiple values are allowed and have to be passed as an array of mappings PLACEHOLDER_NAME->PLACEHOLDER_VALUE.

### Dönen Değerler

A CollectionRemove object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionRemove::bind() example

    <?php

    $res = $coll->remove('age > :age_from and age < :age_to')->bind(['age_from' => 20, 'age_to' => 50])->limit(7)->execute();

    ?>

# CollectionRemove::__construct

(No version information available, might only be in Git)

CollectionRemove::__construct — CollectionRemove constructor

### Açıklama

private function mysql_xdevapi\CollectionRemove::__construct()

Removes collection documents and is instantiated by the mysql_xdevapi\Collection::remove() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Collection::remove() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    $collection->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $collection->add('{"name": "Bob",    "age": 19, "job": "Painter"}')->execute();

    // Remove all painters
    $collection
      ->remove("job in ('Painter')")
      ->execute();

    // Remove the oldest butler
    $collection
      ->remove("job in ('Butler')")
      ->sort('age desc')
      ->limit(1)
      ->execute();

    // Remove record with lowest age
    $collection
      ->remove('true')
      ->sort('age desc')
      ->limit(1)
      ->execute();
    ?>

# CollectionRemove::execute

(No version information available, might only be in Git)

CollectionRemove::execute — Execute remove operation

### Açıklama

public function mysql_xdevapi\CollectionRemove::execute(): mysql_xdevapi\Result

The execute function needs to be invoked in order to trigger the client to send the CRUD operation request to the server.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Result object.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionRemove::execute() example

    <?php

    $res = $coll->remove('true')->sort('age desc')->limit(2)->execute();

    ?>

# CollectionRemove::limit

(No version information available, might only be in Git)

CollectionRemove::limit — Limit number of documents to remove

### Açıklama

public function mysql_xdevapi\CollectionRemove::limit(int `$rows`): mysql_xdevapi\CollectionRemove

Sets the maximum number of documents to remove.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`rows`

  The maximum number of documents to remove.

### Dönen Değerler

Returns a CollectionRemove object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionRemove::limit() example

    <?php

    $res = $coll->remove('job in (\'Barista\', \'Programmatore\', \'Ballerino\', \'Programmatrice\')')->limit(5)->sort(['age desc', 'name asc'])->execute();

    ?>

# CollectionRemove::sort

(No version information available, might only be in Git)

CollectionRemove::sort — Set the sorting criteria

### Açıklama

public function mysql_xdevapi\CollectionRemove::sort(string `$sort_expr`): mysql_xdevapi\CollectionRemove

Sort the result set by the field selected in the sort_expr argument. The allowed orders are ASC (Ascending) or DESC (Descending). This operation is equivalent to the 'ORDER BY' SQL operation and it follows the same set of rules.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`sort_expr`

  One or more sorting expressions can be provided. The evaluation is from left to right, and each expression is separated by a comma.

### Dönen Değerler

A CollectionRemove object that can be used to execute the command, or to add additional operations.

### Örnekler

Örnek 1 mysql_xdevapi\CollectionRemove::sort() example

    <?php

    $res = $coll->remove('true')->sort('age desc')->limit(2)->execute();

    ?>

## İçindekiler

- CollectionRemove::bind — Bind value to placeholder
- CollectionRemove::__construct — CollectionRemove constructor
- CollectionRemove::execute — Execute remove operation
- CollectionRemove::limit — Limit number of documents to remove
- CollectionRemove::sort — Set the sorting criteria

# ColumnResult class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\ColumnResult {
/* Yöntemler */
public function getCharacterSetName(): string
public function getCollationName(): string
public function getColumnLabel(): string
public function getColumnName(): string
public function getFractionalDigits(): int
public function getLength(): int
public function getSchemaName(): string
public function getTableLabel(): string
public function getTableName(): string
public function getType(): int
public function isNumberSigned(): int
public function isPadded(): int
}

# ColumnResult::__construct

(No version information available, might only be in Git)

ColumnResult::__construct — ColumnResult constructor

### Açıklama

private function mysql_xdevapi\ColumnResult::__construct()

Retrieves column metadata, such as its character set; this is instantiated by the mysql_xdevapi\RowResult::getColumns() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS nonsense")->execute();
    $session->sql("CREATE DATABASE nonsense")->execute();
    $session->sql("CREATE TABLE nonsense.numbers (hello int, world float unsigned)")->execute();
    $session->sql("INSERT INTO  nonsense.numbers values (42, 42)")->execute();

    $schema = $session->getSchema("nonsense");
    $table  = $schema->getTable("numbers");

    $result1 = $table->select('hello','world')->execute();

    // Returns an array of ColumnResult objects
    $columns = $result1->getColumns();

    foreach ($columns as $column) {
        echo "\nColumn label " , $column->getColumnLabel();
        echo " is type "       , $column->getType();
        echo " and is ", ($column->isNumberSigned() === 0) ? "unsigned." : "signed.";
    }

    // Alternatively
    $result2 = $session->sql("SELECT * FROM nonsense.numbers")->execute();

    // Returns an array of FieldMetadata objects
    print_r($result2->getColumns());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Column label hello is type 19 and is signed.
    Column label world is type 4  and is unsigned.

    Array
    (
        [0] => mysql_xdevapi\FieldMetadata Object
            (
                [type] => 1
                [type_name] => SINT
                [name] => hello
                [original_name] => hello
                [table] => numbers
                [original_table] => numbers
                [schema] => nonsense
                [catalog] => def
                [collation] => 0
                [fractional_digits] => 0
                [length] => 11
                [flags] => 0
                [content_type] => 0
            )
        [1] => mysql_xdevapi\FieldMetadata Object
            (
                [type] => 6
                [type_name] => FLOAT
                [name] => world
                [original_name] => world
                [table] => numbers
                [original_table] => numbers
                [schema] => nonsense
                [catalog] => def
                [collation] => 0
                [fractional_digits] => 31
                [length] => 12
                [flags] => 1
                [content_type] => 0
            )
    )

# ColumnResult::getCharacterSetName

(No version information available, might only be in Git)

ColumnResult::getCharacterSetName — Get character set

### Açıklama

public function mysql_xdevapi\ColumnResult::getCharacterSetName(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getCharacterSetName() example

    <?php

    /* ... */

    ?>

# ColumnResult::getCollationName

(No version information available, might only be in Git)

ColumnResult::getCollationName — Get collation name

### Açıklama

public function mysql_xdevapi\ColumnResult::getCollationName(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getCollationName() example

    <?php

    /* ... */

    ?>

# ColumnResult::getColumnLabel

(No version information available, might only be in Git)

ColumnResult::getColumnLabel — Get column label

### Açıklama

public function mysql_xdevapi\ColumnResult::getColumnLabel(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getColumnLabel() example

    <?php

    /* ... */

    ?>

# ColumnResult::getColumnName

(No version information available, might only be in Git)

ColumnResult::getColumnName — Get column name

### Açıklama

public function mysql_xdevapi\ColumnResult::getColumnName(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getColumnName() example

    <?php

    /* ... */

    ?>

# ColumnResult::getFractionalDigits

(No version information available, might only be in Git)

ColumnResult::getFractionalDigits — Get fractional digit length

### Açıklama

public function mysql_xdevapi\ColumnResult::getFractionalDigits(): int

Fetch the number of fractional digits for column.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getFractionalDigits() example

    <?php

    /* ... */

    ?>

# ColumnResult::getLength

(No version information available, might only be in Git)

ColumnResult::getLength — Get column field length

### Açıklama

public function mysql_xdevapi\ColumnResult::getLength(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getLength() example

    <?php

    /* ... */

    ?>

# ColumnResult::getSchemaName

(No version information available, might only be in Git)

ColumnResult::getSchemaName — Get schema name

### Açıklama

public function mysql_xdevapi\ColumnResult::getSchemaName(): string

Fetch the schema name where the column is stored.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getSchemaName() example

    <?php

    /* ... */

    ?>

# ColumnResult::getTableLabel

(No version information available, might only be in Git)

ColumnResult::getTableLabel — Get table label

### Açıklama

public function mysql_xdevapi\ColumnResult::getTableLabel(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getTableLabel() example

    <?php

    /* ... */

    ?>

# ColumnResult::getTableName

(No version information available, might only be in Git)

ColumnResult::getTableName — Get table name

### Açıklama

public function mysql_xdevapi\ColumnResult::getTableName(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Name of the table for the column.

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getTableName() example

    <?php

    /* ... */

    ?>

# ColumnResult::getType

(No version information available, might only be in Git)

ColumnResult::getType — Get column type

### Açıklama

public function mysql_xdevapi\ColumnResult::getType(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::getType() example

    <?php

    /* ... */

    ?>

# ColumnResult::isNumberSigned

(No version information available, might only be in Git)

ColumnResult::isNumberSigned — Check if signed type

### Açıklama

public function mysql_xdevapi\ColumnResult::isNumberSigned(): int

Retrieves a table's column information and is instantiated by the mysql_xdevapi\RowResult::getColumns() method.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if a given column has a signed type.

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::isNumberSigned() example

    <?php

    /* ... */

    ?>

# ColumnResult::isPadded

(No version information available, might only be in Git)

ColumnResult::isPadded — Check if padded

### Açıklama

public function mysql_xdevapi\ColumnResult::isPadded(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if a given column is padded.

### Örnekler

Örnek 1 mysql_xdevapi\ColumnResult::isPadded() example

    <?php

    /* ... */

    ?>

## İçindekiler

- ColumnResult::__construct — ColumnResult constructor
- ColumnResult::getCharacterSetName — Get character set
- ColumnResult::getCollationName — Get collation name
- ColumnResult::getColumnLabel — Get column label
- ColumnResult::getColumnName — Get column name
- ColumnResult::getFractionalDigits — Get fractional digit length
- ColumnResult::getLength — Get column field length
- ColumnResult::getSchemaName — Get schema name
- ColumnResult::getTableLabel — Get table label
- ColumnResult::getTableName — Get table name
- ColumnResult::getType — Get column type
- ColumnResult::isNumberSigned — Check if signed type
- ColumnResult::isPadded — Check if padded

# CrudOperationBindable interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CrudOperationBindable {
/* Yöntemler */
abstract public function bind(array `$placeholder_values`): mysql_xdevapi\CrudOperationBindable
}

# CrudOperationBindable::bind

(No version information available, might only be in Git)

CrudOperationBindable::bind — Bind value to placeholder

### Açıklama

abstract public function mysql_xdevapi\CrudOperationBindable::bind(array `$placeholder_values`): mysql_xdevapi\CrudOperationBindable

Binds a value to a specific placeholder.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`placeholder_values`

  The name of the placeholders and the values to bind.

### Dönen Değerler

A CrudOperationBindable object.

### Örnekler

Örnek 1 mysql_xdevapi\CrudOperationBindable::bind() example

    <?php

    $res = $coll->modify('name like :name')->arrayInsert('job[0]', 'Calciatore')->bind(['name' => 'ENTITY'])->execute();
    $res = $table->delete()->orderby('age desc')->where('age < 20 and age > 12 and name != :name')->bind(['name' => 'Tierney'])->limit(2)->execute();

    ?>

## İçindekiler

- CrudOperationBindable::bind — Bind value to placeholder

# CrudOperationLimitable interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CrudOperationLimitable {
/* Yöntemler */
abstract public function limit(int `$rows`): mysql_xdevapi\CrudOperationLimitable
}

# CrudOperationLimitable::limit

(No version information available, might only be in Git)

CrudOperationLimitable::limit — Set result limit

### Açıklama

abstract public function mysql_xdevapi\CrudOperationLimitable::limit(int `$rows`): mysql_xdevapi\CrudOperationLimitable

Sets the maximum number of records or documents to return.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`rows`

  The maximum number of records or documents.

### Dönen Değerler

A CrudOperationLimitable object.

### Örnekler

Örnek 1 mysql_xdevapi\CrudOperationLimitable::limit() example

    <?php

    $res = $coll->find()->fields(['name as n','age as a','job as j'])->groupBy('j')->limit(11)->execute();
    $res = $table->update()->set('age',69)->where('age > 15 and age < 22')->limit(4)->orderby(['age asc','name desc'])->execute();

    ?>

## İçindekiler

- CrudOperationLimitable::limit — Set result limit

# CrudOperationSkippable interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CrudOperationSkippable {
/* Yöntemler */
abstract public function skip(int `$skip`): mysql_xdevapi\CrudOperationSkippable
}

# CrudOperationSkippable::skip

(No version information available, might only be in Git)

CrudOperationSkippable::skip — Number of operations to skip

### Açıklama

abstract public function mysql_xdevapi\CrudOperationSkippable::skip(int `$skip`): mysql_xdevapi\CrudOperationSkippable

Skip this number of records in the returned operation.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`skip`

  Number of elements to skip.

### Dönen Değerler

A CrudOperationSkippable object.

### Örnekler

Örnek 1 mysql_xdevapi\CrudOperationSkippable::skip() example

    <?php

    $res = $coll->find('job like \'Programmatore\'')->limit(1)->skip(3)->sort('age asc')->execute();

    ?>

## İçindekiler

- CrudOperationSkippable::skip — Number of operations to skip

# CrudOperationSortable interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\CrudOperationSortable {
/* Yöntemler */
abstract public function sort(string `$sort_expr`): mysql_xdevapi\CrudOperationSortable
}

# CrudOperationSortable::sort

(No version information available, might only be in Git)

CrudOperationSortable::sort — Sort results

### Açıklama

abstract public function mysql_xdevapi\CrudOperationSortable::sort(string `$sort_expr`): mysql_xdevapi\CrudOperationSortable

Sort the result set by the field selected in the sort_expr argument. The allowed orders are ASC (Ascending) or DESC (Descending). This operation is equivalent to the 'ORDER BY' SQL operation and it follows the same set of rules.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`sort_expr`

  One or more sorting expressions can be provided. The evaluation is from left to right, and each expression is separated by a comma.

### Dönen Değerler

A CrudOperationSortable object.

### Örnekler

Örnek 1 mysql_xdevapi\CrudOperationSortable::sort() example

    <?php

    $res = $coll->find('job like \'Cavia\'')->sort('age desc', '_id desc')->execute();

    ?>

## İçindekiler

- CrudOperationSortable::sort — Sort results

# DatabaseObject interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\DatabaseObject {
/* Yöntemler */
abstract public function existsInDatabase(): bool
abstract public function getName(): string
abstract public function getSession(): mysql_xdevapi\Session
}

# DatabaseObject::existsInDatabase

(No version information available, might only be in Git)

DatabaseObject::existsInDatabase — Check if object exists in database

### Açıklama

abstract public function mysql_xdevapi\DatabaseObject::existsInDatabase(): bool

Verifies if the database object refers to an object that exists in the database.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if object exists in the database, else `false` if it does not.

### Örnekler

Örnek 1 mysql_xdevapi\DatabaseObject::existsInDatabase() example

    <?php

    $existInDb = $dbObj->existsInDatabase();

    ?>

# DatabaseObject::getName

(No version information available, might only be in Git)

DatabaseObject::getName — Get object name

### Açıklama

abstract public function mysql_xdevapi\DatabaseObject::getName(): string

Fetch name of this database object.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The name of this database object.

### Örnekler

Örnek 1 mysql_xdevapi\DatabaseObject::getName() example

    <?php

    $dbObjName = $dbObj->getName();

    ?>

# DatabaseObject::getSession

(No version information available, might only be in Git)

DatabaseObject::getSession — Get session name

### Açıklama

abstract public function mysql_xdevapi\DatabaseObject::getSession(): mysql_xdevapi\Session

Fetch session associated to the database object.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Session object.

### Örnekler

Örnek 1 mysql_xdevapi\DatabaseObject::getSession() example

    <?php

    $session = $dbObj->getSession();

    ?>

## İçindekiler

- DatabaseObject::existsInDatabase — Check if object exists in database
- DatabaseObject::getName — Get object name
- DatabaseObject::getSession — Get session name

# DocResult class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\DocResult implements mysql_xdevapi\BaseResult, Traversable {
/* Yöntemler */
public function fetchAll(): array
public function fetchOne(): array
public function getWarnings(): Array
public function getWarningsCount(): int
}

# DocResult::__construct

(No version information available, might only be in Git)

DocResult::__construct — DocResult constructor

### Açıklama

private function mysql_xdevapi\DocResult::__construct()

Fetch document results and warnings, and is instantiated by CollectionFind.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 A DocResult example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $create->add('{"name": "Reginald", "age": 42, "job": "Butler"}')->execute();

    // ...

    $collection = $schema->getCollection("people");

    // Yields a DocResult object
    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->limit(1)
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b536100000000000000f3"
        ["age"]=>
        int(42)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(8) "Reginald"
      }
    }

# DocResult::fetchAll

(No version information available, might only be in Git)

DocResult::fetchAll — Get all rows

### Açıklama

public function mysql_xdevapi\DocResult::fetchAll(): array

Fetch all results from a result set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A numerical array with all results from the query; each result is an associative array. An empty array is returned if no rows are present.

### Örnekler

Örnek 1 mysql_xdevapi\DocResult::fetchAll() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $create->add('{"name": "Reginald", "age": 42, "job": "Butler"}')->execute();

    // ...

    $collection = $schema->getCollection("people");

    // Yields a DocResult object
    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->execute();

    var_dump($result->fetchAll());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {

      [0]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b53610000000000000123"
        ["age"]=>
        int(42)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(8) "Reginald"
      }

      [1]=>
      array(4) {
        ["_id"]=>
        string(28) "00005b6b53610000000000000122"
        ["age"]=>
        int(18)
        ["job"]=>
        string(6) "Butler"
        ["name"]=>
        string(6) "Alfred"
      }

    }

# DocResult::fetchOne

(No version information available, might only be in Git)

DocResult::fetchOne — Get one row

### Açıklama

public function mysql_xdevapi\DocResult::fetchOne(): array

Fetch one result from a result set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The result, as an associative array or `null` if no results are present.

### Örnekler

Örnek 1 mysql_xdevapi\DocResult::fetchOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $create->add('{"name": "Reginald", "age": 42, "job": "Butler"}')->execute();

    // ...

    $collection = $schema->getCollection("people");

    // Yields a DocResult object
    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->execute();

    var_dump($result->fetchOne());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      ["_id"]=>
      string(28) "00005b6b53610000000000000125"
      ["age"]=>
      int(42)
      ["job"]=>
      string(6) "Butler"
      ["name"]=>
      string(8) "Reginald"
    }

# DocResult::getWarnings

(No version information available, might only be in Git)

DocResult::getWarnings — Get warnings from last operation

### Açıklama

public function mysql_xdevapi\DocResult::getWarnings(): Array

Fetches warnings generated by MySQL server's last operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of Warning objects from the last operation. Each object defines an error 'message', error 'level', and error 'code'. An empty array is returned if no errors are present.

### Örnekler

Örnek 1 mysql_xdevapi\DocResult::getWarnings() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $create->add('{"name": "Reginald", "age": 42, "job": "Butler"}')->execute();

    // ...

    $collection = $schema->getCollection("people");

    // Yields a DocResult object
    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->execute();

    if (!$result->getWarningsCount()) {
        echo "There was an error:\n";
        print_r($result->getWarnings());
        exit;
    }

    var_dump($result->fetchOne());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    There was an error:

    Array
    (
        [0] => mysql_xdevapi\Warning Object
            (
                [message] => Something bad and so on
                [level] => 2
                [code] => 1365
            )
        [1] => mysql_xdevapi\Warning Object
            (
                [message] => Something bad and so on
                [level] => 2
                [code] => 1365
            )
    )

# DocResult::getWarningsCount

(No version information available, might only be in Git)

DocResult::getWarningsCount — Get warning count from last operation

### Açıklama

public function mysql_xdevapi\DocResult::getWarningsCount(): int

Returns the number of warnings raised by the last operation. Specifically, these warnings are raised by the MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of warnings from the last operation.

### Örnekler

Örnek 1 mysql_xdevapi\DocResult::getWarningsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $create->add('{"name": "Alfred", "age": 18, "job": "Butler"}')->execute();
    $create->add('{"name": "Reginald", "age": 42, "job": "Butler"}')->execute();

    // ...

    $collection = $schema->getCollection("people");

    // Yields a DocResult object
    $result = $collection
      ->find('job like :job and age > :age')
      ->bind(['job' => 'Butler', 'age' => 16])
      ->sort('age desc')
      ->execute();

    if (!$result->getWarningsCount()) {
        echo "There was an error:\n";
        print_r($result->getWarnings());
        exit;
    }

    var_dump($result->fetchOne());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      ["_id"]=>
      string(28) "00005b6b53610000000000000135"
      ["age"]=>
      int(42)
      ["job"]=>
      string(6) "Butler"
      ["name"]=>
      string(8) "Reginald"
    }

## İçindekiler

- DocResult::__construct — DocResult constructor
- DocResult::fetchAll — Get all rows
- DocResult::fetchOne — Get one row
- DocResult::getWarnings — Get warnings from last operation
- DocResult::getWarningsCount — Get warning count from last operation

# Exception class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Exception extends RuntimeException implements Throwable {
}

# Executable interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Executable {
/* Yöntemler */
abstract public function execute(): mysql_xdevapi\Result
}

# Executable::execute

(No version information available, might only be in Git)

Executable::execute — Execute statement

### Açıklama

abstract public function mysql_xdevapi\Executable::execute(): mysql_xdevapi\Result

Execute the statement from either a collection operation or a table query; this functionality allows for method chaining.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

One of the Result objects, such as Result or SqlStatementResult.

### Örnekler

Örnek 1 execute() examples

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $result_sql = $session->sql("CREATE DATABASE addressbook")->execute();

    var_dump($result_sql);

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("humans");

    $result_collection = $collection->add(
      '{"name": "Jane",
        "jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
        "hobbies": ["Walking","Making pies"]}');

    $result_collection_executed = $result_collection->execute();

    var_dump($result_collection);
    var_dump($result_collection_executed);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\SqlStatementResult)#3 (0) {
    }

    object(mysql_xdevapi\CollectionAdd)#5 (0) {
    }

    object(mysql_xdevapi\Result)#7 (0) {
    }

## İçindekiler

- Executable::execute — Execute statement

# ExecutionStatus class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\ExecutionStatus {
/* Özellikler */
public $affectedItems;
public $matchedItems;
public $foundItems;
public $lastInsertId;
public $lastDocumentId;
/* Constructor */
private function __construct()
}

## Özellikler

affectedItems

matchedItems

foundItems

lastInsertId

lastDocumentId

# ExecutionStatus::__construct

(No version information available, might only be in Git)

ExecutionStatus::__construct — ExecutionStatus constructor

### Açıklama

private function mysql_xdevapi\ExecutionStatus::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\ExecutionStatus::__construct() example

    <?php

    /* ... */

    ?>

## İçindekiler

- ExecutionStatus::__construct — ExecutionStatus constructor

# Expression class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Expression {
/* Özellikler */
public $name;
/* Constructor */
public function __construct(string `$expression`)
}

## Özellikler

name

# Expression::__construct

(No version information available, might only be in Git)

Expression::__construct — Expression constructor

### Açıklama

public function mysql_xdevapi\Expression::__construct(string `$expression`)

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`expression`

### Örnekler

Örnek 1 mysql_xdevapi\Expression::__construct() example

    <?php

    /* ... */

    ?>

## İçindekiler

- Expression::__construct — Expression constructor

# Result class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Result implements mysql_xdevapi\BaseResult, Traversable {
/* Yöntemler */
public function getAffectedItemsCount(): int
public function getAutoIncrementValue(): int
public function getGeneratedIds(): array
public function getWarnings(): array
public function getWarningsCount(): int
}

# Result::__construct

(No version information available, might only be in Git)

Result::__construct — Result constructor

### Açıklama

private function mysql_xdevapi\Result::__construct()

An object that retrieves generated IDs, AUTO_INCREMENT values, and warnings, for a Result set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Result::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("
      CREATE TABLE addressbook.names
        (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(30), age INT, PRIMARY KEY (id))
      ")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->insert("name", "age")->values(["Suzanne", 31],["Julie", 43])->execute();
    $result = $table->insert("name", "age")->values(["Suki", 34])->execute();

    $ai = $result->getAutoIncrementValue();
    var_dump($ai);
    ?>

Yukarıdaki örneğin çıktısı:

    int(3)

# Result::getAffectedItemsCount

(No version information available, might only be in Git)

Result::getAffectedItemsCount — Get affected row count

### Açıklama

public function mysql_xdevapi\Result::getAffectedItemsCount(): int

Get the number of affected rows by the previous operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number (as an integer) of affected rows.

### Örnekler

Örnek 1 mysql_xdevapi\Result::getAffectedItemsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    $result = $collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

    var_dump( $res->getAffectedItemsCount() );
    ?>

Yukarıdaki örneğin çıktısı:

    int(1)

# Result::getAutoIncrementValue

(No version information available, might only be in Git)

Result::getAutoIncrementValue — Get autoincremented value

### Açıklama

public function mysql_xdevapi\Result::getAutoIncrementValue(): int

Get the last AUTO_INCREMENT value (last insert id).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The last AUTO_INCREMENT value.

### Örnekler

Örnek 1 mysql_xdevapi\Result::getAutoIncrementValue() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("
      CREATE TABLE addressbook.names
        (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(30), age INT, PRIMARY KEY (id))
      ")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->insert("name", "age")->values(["Suzanne", 31],["Julie", 43])->execute();
    $result = $table->insert("name", "age")->values(["Suki", 34])->execute();

    $ai = $result->getAutoIncrementValue();
    var_dump($ai);
    ?>

Yukarıdaki örneğin çıktısı:

    int(3)

# Result::getGeneratedIds

(No version information available, might only be in Git)

Result::getGeneratedIds — Get generated ids

### Açıklama

public function mysql_xdevapi\Result::getGeneratedIds(): array

Fetch the generated _id values from the last operation. The unique _id field is generated by the MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of generated _id's from the last operation, or an empty array if there are none.

### Örnekler

Örnek 1 mysql_xdevapi\Result::getGeneratedIds() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema = $session->getSchema("addressbook");
    $create = $schema->createCollection("people");

    $collection = $schema->getCollection("people");

    $result = $collection->add(
      '{"name": "Bernie",
        "jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
        "hobbies": ["Sports","Making cupcakes"]}',
      '{"name": "Jane",
        "jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
        "hobbies": ["Walking","Making pies"]}')->execute();

    $ids = $result->getGeneratedIds();
    var_dump($ids);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      [0]=>
      string(28) "00005b6b53610000000000000064"
      [1]=>
      string(28) "00005b6b53610000000000000065"
    }

# Result::getWarnings

(No version information available, might only be in Git)

Result::getWarnings — Get warnings from last operation

### Açıklama

public function mysql_xdevapi\Result::getWarnings(): array

Retrieve warnings from the last Result operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of Warning objects from the last operation. Each object defines an error 'message', error 'level', and error 'code'. An empty array is returned if no errors are present.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarnings() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();
    $warnings = $res->getWarnings();

    print_r($warnings);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
        [1] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
    )

# Result::getWarningsCount

(No version information available, might only be in Git)

Result::getWarningsCount — Get warning count from last operation

### Açıklama

public function mysql_xdevapi\Result::getWarningsCount(): int

Retrieve the number of warnings from the last Result operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of warnings generated by the last operation.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarningsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS foo")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();

    echo $res->getWarningsCount();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2

## İçindekiler

- Result::__construct — Result constructor
- Result::getAffectedItemsCount — Get affected row count
- Result::getAutoIncrementValue — Get autoincremented value
- Result::getGeneratedIds — Get generated ids
- Result::getWarnings — Get warnings from last operation
- Result::getWarningsCount — Get warning count from last operation

# RowResult class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\RowResult implements mysql_xdevapi\BaseResult, Traversable {
/* Yöntemler */
public function fetchAll(): array
public function fetchOne(): array
public function getColumnsCount(): int
public function getColumnNames(): array
public function getColumns(): array
public function getWarnings(): array
public function getWarningsCount(): int
}

# RowResult::__construct

(No version information available, might only be in Git)

RowResult::__construct — RowResult constructor

### Açıklama

private function mysql_xdevapi\RowResult::__construct()

Represents the result set obtained from querying the database.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $row = $table->select('name', 'age')->where('age > 18')->execute()->fetchAll();

    print_r($row);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 33
            )
    )

# RowResult::fetchAll

(No version information available, might only be in Git)

RowResult::fetchAll — Get all rows from result

### Açıklama

public function mysql_xdevapi\RowResult::fetchAll(): array

Fetch all the rows from the result set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A numerical array with all results from the query; each result is an associative array. An empty array is returned if no rows are present.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::fetchAll() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $row = $table->select('name', 'age')->execute()->fetchAll();

    print_r($row);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 33
            )
    )

# RowResult::fetchOne

(No version information available, might only be in Git)

RowResult::fetchOne — Get row from result

### Açıklama

public function mysql_xdevapi\RowResult::fetchOne(): array

Fetch one result from the result set.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The result, as an associative array or `null` if no results are present.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::fetchOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $row = $table->select('name', 'age')->where('age < 40')->execute()->fetchOne();

    print_r($row);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [name] => Sam
        [age] => 33
    )

# RowResult::getColumnsCount

(No version information available, might only be in Git)

RowResult::getColumnsCount — Get column count

### Açıklama

public function mysql_xdevapi\RowResult::getColumnsCount(): int

Retrieve the column count for columns present in the result set.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of columns; 0 if there are none.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.14 | Method renamed from getColumnCount() to getColumnsCount().

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getColumnsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE addressbook")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $sql = $session->sql("SELECT * from addressbook.names")->execute();

    echo $sql->getColumnsCount();

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2

# RowResult::getColumnNames

(No version information available, might only be in Git)

RowResult::getColumnNames — Get all column names

### Açıklama

public function mysql_xdevapi\RowResult::getColumnNames(): array

Retrieve column names for columns present in the result set.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A numerical array of table columns names, or an empty array if the result set is empty.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getColumnNames() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE addressbook")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $sql = $session->sql("SELECT * from addressbook.names")->execute();

    $colnames = $sql->getColumnNames();

    print_r($colnames);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => name
        [1] => age
    )

# RowResult::getColumns

(No version information available, might only be in Git)

RowResult::getColumns — Get column metadata

### Açıklama

public function mysql_xdevapi\RowResult::getColumns(): array

Retrieve column metadata for columns present in the result set.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of FieldMetadata objects representing the columns in the result, or an empty array if the result set is empty.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getColumns() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE addressbook")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $sql = $session->sql("SELECT * from addressbook.names")->execute();

    $cols = $sql->getColumns();

    print_r($cols);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\FieldMetadata Object
            (
                [type] => 7
                [type_name] => BYTES
                [name] => name
                [original_name] => name
                [table] => names
                [original_table] => names
                [schema] => addressbook
                [catalog] => def
                [collation] => 255
                [fractional_digits] => 0
                [length] => 65535
                [flags] => 0
                [content_type] => 0
            )
        [1] => mysql_xdevapi\FieldMetadata Object
            (
                [type] => 1
                [type_name] => SINT
                [name] => age
                [original_name] => age
                [table] => names
                [original_table] => names
                [schema] => addressbook
                [catalog] => def
                [collation] => 0
                [fractional_digits] => 0
                [length] => 11
                [flags] => 0
                [content_type] => 0
            )
    )

# RowResult::getWarnings

(No version information available, might only be in Git)

RowResult::getWarnings — Get warnings from last operation

### Açıklama

public function mysql_xdevapi\RowResult::getWarnings(): array

Retrieve warnings from the last RowResult operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of Warning objects from the last operation. Each object defines an error 'message', error 'level', and error 'code'. An empty array is returned if no errors are present.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarnings() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();
    $warnings = $res->getWarnings();

    print_r($warnings);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
        [1] => mysql_xdevapi\Warning Object
            (
                [message] => Division by 0
                [level] => 2
                [code] => 1365
            )
    )

# RowResult::getWarningsCount

(No version information available, might only be in Git)

RowResult::getWarningsCount — Get warning count from last operation

### Açıklama

public function mysql_xdevapi\RowResult::getWarningsCount(): int

Retrieve the number of warnings from the last RowResult operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of warnings generated by the last operation.

### Örnekler

Örnek 1 mysql_xdevapi\RowResult::getWarningsCount() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS foo")->execute();
    $session->sql("CREATE DATABASE foo")->execute();
    $session->sql("CREATE TABLE foo.test_table(x int)")->execute();

    $schema = $session->getSchema("foo");
    $table  = $schema->getTable("test_table");

    $table->insert(['x'])->values([1])->values([2])->execute();

    $res = $table->select(['x/0 as bad_x'])->execute();

    echo $res->getWarningsCount();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2

## İçindekiler

- RowResult::__construct — RowResult constructor
- RowResult::fetchAll — Get all rows from result
- RowResult::fetchOne — Get row from result
- RowResult::getColumnsCount — Get column count
- RowResult::getColumnNames — Get all column names
- RowResult::getColumns — Get column metadata
- RowResult::getWarnings — Get warnings from last operation
- RowResult::getWarningsCount — Get warning count from last operation

# Schema class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Schema implements mysql_xdevapi\DatabaseObject {
/* Özellikler */
public $name;
/* Yöntemler */
public function createCollection(string `$name`, string `$validate` = ?): mysql_xdevapi\Collection
public function dropCollection(string `$collection_name`): bool
public function existsInDatabase(): bool
public function getCollection(string `$name`): mysql_xdevapi\Collection
public function getCollectionAsTable(string `$name`): mysql_xdevapi\Table
public function getCollections(): array
public function getName(): string
public function getSession(): mysql_xdevapi\Session
public function getTable(string `$name`): mysql_xdevapi\Table
public function getTables(): array
}

## Özellikler

name

# Schema::__construct

(No version information available, might only be in Git)

Schema::__construct — Schema constructor

### Açıklama

private function mysql_xdevapi\Schema::__construct()

The Schema object provides full access to the schema (database).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS food")->execute();
    $session->sql("CREATE DATABASE food")->execute();
    $session->sql("CREATE TABLE food.fruit(name text, rating text)")->execute();

    $schema = $session->getSchema("food");
    $schema->createCollection("trees");

    print_r($schema->gettables());
    print_r($schema->getcollections());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [fruit] => mysql_xdevapi\Table Object
            (
                [name] => fruit
            )
    )
    Array
    (
        [trees] => mysql_xdevapi\Collection Object
            (
                [name] => trees
            )
    )

# Schema::createCollection

(No version information available, might only be in Git)

Schema::createCollection — Add collection to schema

### Açıklama

public function mysql_xdevapi\Schema::createCollection(string `$name`, string `$validate` = ?): mysql_xdevapi\Collection

Create a collection within the schema.

### Bağımsız Değişkenler

`name`

  Collection name.

`validate`

  Validation definition, as a JSON object.

### Dönen Değerler

The Collection object.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.20 | Added the optional validate parameter.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::createCollection() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS food")->execute();
    $session->sql("CREATE DATABASE food")->execute();
    $session->sql("CREATE TABLE food.fruit(name text, rating text)")->execute();

    $schema = $session->getSchema("food");
    $schema->createCollection("trees");

    print_r($schema->gettables());
    print_r($schema->getcollections());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [fruit] => mysql_xdevapi\Table Object
            (
                [name] => fruit
            )
    )
    Array
    (
        [trees] => mysql_xdevapi\Collection Object
            (
                [name] => trees
            )
    )

Örnek 2 mysql_xdevapi\Schema::createCollection() example

    <?php
     $collection = $schema->createCollection("mycollection", '{
        "validation": {
            "level": "strict",
            "schema": {
                "id": "http://json-schema.org/geo",
                "description": "A geographical coordinate",
                "type": "object",
                "properties": {
                    "latitude": {
                        "type": "number"
                    },
                    "longitude": {
                        "type": "number"
                    }
                },
                "required": ["latitude", "longitude"]
            }
        }
    }');
    // Succeeds
    $collection->add('{"latitude": 10, "longitude": 20}')->execute();

    // Fails, invalid types (not numbers)
    $collection->add('{"latitude": "lat", "longitude": "long"}')->execute();

# Schema::dropCollection

(No version information available, might only be in Git)

Schema::dropCollection — Drop collection from schema

### Açıklama

public function mysql_xdevapi\Schema::dropCollection(string `$collection_name`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`collection_name`

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Schema::dropCollection() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS food")->execute();
    $session->sql("CREATE DATABASE food")->execute();
    $session->sql("CREATE TABLE food.fruit(name text, rating text)")->execute();

    $schema = $session->getSchema("food");

    $schema->createCollection("trees");
    $schema->dropCollection("trees");
    $schema->createCollection("buildings");

    print_r($schema->gettables());
    print_r($schema->getcollections());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [fruit] => mysql_xdevapi\Table Object
            (
                [name] => fruit
            )
    )
    Array
    (
        [buildings] => mysql_xdevapi\Collection Object
            (
                [name] => buildings
            )
    )

# Schema::existsInDatabase

(No version information available, might only be in Git)

Schema::existsInDatabase — Check if exists in database

### Açıklama

public function mysql_xdevapi\Schema::existsInDatabase(): bool

Checks if the current object (schema, table, collection, or view) exists in the schema object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the schema, table, collection, or view still exists in the schema, else `false`.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::existsInDatabase() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS food")->execute();
    $session->sql("CREATE DATABASE food")->execute();
    $session->sql("CREATE TABLE food.fruit(name text, rating text)")->execute();

    $schema = $session->getSchema("food");
    $schema->createCollection("trees");

    // ...

    $trees = $schema->getCollection("trees");

    // ...

    // Is this collection still in the database (schema)?
    if ($trees->existsInDatabase()) {
        echo "Yes, the 'trees' collection is still present.";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yes, the 'trees' collection is still present.

# Schema::getCollection

(No version information available, might only be in Git)

Schema::getCollection — Get collection from schema

### Açıklama

public function mysql_xdevapi\Schema::getCollection(string `$name`): mysql_xdevapi\Collection

Get a collection from the schema.

### Bağımsız Değişkenler

`name`

  Collection name to retrieve.

### Dönen Değerler

The Collection object for the selected collection.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getCollection() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS food")->execute();
    $session->sql("CREATE DATABASE food")->execute();

    $schema = $session->getSchema("food");
    $schema->createCollection("trees");

    // ...

    $trees = $schema->getCollection("trees");

    var_dump($trees);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Collection)#3 (1) {
      ["name"]=>
      string(5) "trees"
    }

# Schema::getCollectionAsTable

(No version information available, might only be in Git)

Schema::getCollectionAsTable — Get collection as a Table object

### Açıklama

public function mysql_xdevapi\Schema::getCollectionAsTable(string `$name`): mysql_xdevapi\Table

Get a collection, but as a Table object instead of a Collection object.

### Bağımsız Değişkenler

`name`

  Name of the collection to instantiate a Table object from.

### Dönen Değerler

A mysql_xdevapi\Table object for the collection.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getCollectionAsTable() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema  = $session->getSchema("addressbook");
    $collect = $schema->createCollection("people");
    $collect->add('{"name": "Fred",  "age": 21, "job": "Construction"}')->execute();
    $collect->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

    $table      = $schema->getCollectionAsTable("people");
    $collection = $schema->getCollection("people");

    var_dump($table);
    var_dump($collection);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Table)#4 (1) {
      ["name"]=>
      string(6) "people"
    }

    object(mysql_xdevapi\Collection)#5 (1) {
      ["name"]=>
      string(6) "people"
    }

# Schema::getCollections

(No version information available, might only be in Git)

Schema::getCollections — Get all schema collections

### Açıklama

public function mysql_xdevapi\Schema::getCollections(): array

Fetch a list of collections for this schema.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of all collections in this schema, where each array element value is a Collection object with the collection name as the key.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getCollections() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema  = $session->getSchema("addressbook");
    $collect = $schema->createCollection("people");
    $collect->add('{"name": "Fred",  "age": 21, "job": "Construction"}')->execute();
    $collect->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

    $collections = $schema->getCollections();
    var_dump($collections);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      ["people"]=>
      object(mysql_xdevapi\Collection)#4 (1) {
        ["name"]=>
        string(6) "people"
      }
    }

# Schema::getName

(No version information available, might only be in Git)

Schema::getName — Get schema name

### Açıklama

public function mysql_xdevapi\Schema::getName(): string

Get the name of the schema.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The name of the schema connected to the schema object, as a string.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getName() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema  = $session->getSchema("addressbook");

    // ...

    var_dump($schema->getName());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(11) "addressbook"

# Schema::getSession

(No version information available, might only be in Git)

Schema::getSession — Get schema session

### Açıklama

public function mysql_xdevapi\Schema::getSession(): mysql_xdevapi\Session

Get a new Session object from the Schema object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Session object.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getSession() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema  = $session->getSchema("addressbook");

    // ...

    $newsession = $schema->getSession();

    var_dump($session);
    var_dump($newsession);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Session)#1 (0) {
    }

    object(mysql_xdevapi\Session)#3 (0) {
    }

# Schema::getTable

(No version information available, might only be in Git)

Schema::getTable — Get schema table

### Açıklama

public function mysql_xdevapi\Schema::getTable(string `$name`): mysql_xdevapi\Table

Fetch a Table object for the provided table in the schema.

### Bağımsız Değişkenler

`name`

  Name of the table.

### Dönen Değerler

A Table object.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getTable() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $row = $table->select('name', 'age')->execute()->fetchAll();

    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 33
            )
    )

# Schema::getTables

(No version information available, might only be in Git)

Schema::getTables — Get schema tables

### Açıklama

public function mysql_xdevapi\Schema::getTables(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Array of all tables in this schema, where each array element value is a Table object with the table name as the key.

### Örnekler

Örnek 1 mysql_xdevapi\Schema::getTables() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $session->sql("CREATE TABLE addressbook.cities(name text, population int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('Portland', 639863), ('Seattle', 704352)")->execute();

    $schema = $session->getSchema("addressbook");
    $tables = $schema->getTables();

    var_dump($tables);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      ["cities"]=>
      object(mysql_xdevapi\Table)#3 (1) {
        ["name"]=>
        string(6) "cities"
      }

      ["names"]=>
      object(mysql_xdevapi\Table)#4 (1) {
        ["name"]=>
        string(5) "names"
      }
    }

## İçindekiler

- Schema::__construct — Schema constructor
- Schema::createCollection — Add collection to schema
- Schema::dropCollection — Drop collection from schema
- Schema::existsInDatabase — Check if exists in database
- Schema::getCollection — Get collection from schema
- Schema::getCollectionAsTable — Get collection as a Table object
- Schema::getCollections — Get all schema collections
- Schema::getName — Get schema name
- Schema::getSession — Get schema session
- Schema::getTable — Get schema table
- Schema::getTables — Get schema tables

# SchemaObject interface

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\SchemaObject implements mysql_xdevapi\DatabaseObject {
/* Yöntemler */
abstract function getSchema(): mysql_xdevapi\Schema
}

# SchemaObject::getSchema

(No version information available, might only be in Git)

SchemaObject::getSchema — Get schema object

### Açıklama

abstract function mysql_xdevapi\SchemaObject::getSchema(): mysql_xdevapi\Schema

Used by other objects to retrieve a schema object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The current Schema object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::getSchema() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $schema  = $session->getSchema("addressbook");

    print_r($schema);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    mysql_xdevapi\Schema Object
    (
        [name] => addressbook
    )

## İçindekiler

- SchemaObject::getSchema — Get schema object

# Session class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Session {
/* Yöntemler */
public function close(): bool
public function commit(): Object
public function createSchema(string `$schema_name`): mysql_xdevapi\Schema
public function dropSchema(string `$schema_name`): bool
public function generateUUID(): string
public function getDefaultSchema(): ?mysql_xdevapi\Schema
public function getSchema(string `$schema_name`): mysql_xdevapi\Schema
public function getSchemas(): array
public function getServerVersion(): int
public function listClients(): array
public function quoteName(string `$name`): string
public function releaseSavepoint(string `$name`): void
public function rollback(): void
public function rollbackTo(string `$name`): void
public function setSavepoint(string `$name` = ?): string
public function sql(string `$query`): mysql_xdevapi\SqlStatement
public function startTransaction(): void
}

# Session::close

(No version information available, might only be in Git)

Session::close — Close session

### Açıklama

public function mysql_xdevapi\Session::close(): bool

Close the session with the server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the session closed.

### Örnekler

Örnek 1 mysql_xdevapi\Session::close() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $session->close();

# Session::commit

(PHP 4 >= 4.4.0, PHP 5, PHP 7, PHP 8)

Session::commit — Commit transaction

### Açıklama

public function mysql_xdevapi\Session::commit(): Object

Commit the transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An SqlStatementResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::commit() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("friends");

    $session->startTransaction();

    $collection->add('{"John":42, "Sam":33}')->execute();
    $savepoint = $session->setSavepoint();

    $session->commit();
    $session->close();

# Session::__construct

(No version information available, might only be in Git)

Session::__construct — Description constructor

### Açıklama

private function mysql_xdevapi\Session::__construct()

A Session object, as initiated by getSession().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Session::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->close();
    ?>

# Session::createSchema

(No version information available, might only be in Git)

Session::createSchema — Create new schema

### Açıklama

public function mysql_xdevapi\Session::createSchema(string `$schema_name`): mysql_xdevapi\Schema

Creates a new schema.

### Bağımsız Değişkenler

`schema_name`

  Name of the schema to create.

### Dönen Değerler

A Schema object on success, and emits an exception on failure.

### Örnekler

Örnek 1 mysql_xdevapi\Session::createSchema() example

    <?php
    $uri  = 'mysqlx://happyuser:password@127.0.0.1:33060/';
    $sess = mysql_xdevapi\getSession($uri);

    try {

        if ($schema = $sess->createSchema('fruit')) {
            echo "Info: I created a schema named 'fruit'\n";
        }

    } catch (Exception $e) {

       echo $e->getMessage();

    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Info: I created a schema named 'fruit'

# Session::dropSchema

(No version information available, might only be in Git)

Session::dropSchema — Drop a schema

### Açıklama

public function mysql_xdevapi\Session::dropSchema(string `$schema_name`): bool

Drop a schema (database).

### Bağımsız Değişkenler

`schema_name`

  Name of the schema to drop.

### Dönen Değerler

`true` if the schema is dropped, or `false` if it does not exist or can't be dropped.

An `E_WARNING` level error is generated if the schema does not exist.

### Örnekler

Örnek 1 mysql_xdevapi\Session::dropSchema() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->dropSchema("addressbook");

    $session->close();
    ?>

# Session::generateUUID

(No version information available, might only be in Git)

Session::generateUUID — Get new UUID

### Açıklama

public function mysql_xdevapi\Session::generateUUID(): string

Generate a Universal Unique IDentifier (UUID) generated according to » RFC 4122.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The UUID; a string with a length of 32.

### Örnekler

Örnek 1 mysql_xdevapi\Session::generateUuid() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $uuid = $session->generateUuid();

    var_dump($uuid);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(32) "484B18AC7980F8D4FE84613CDA5EE84B"

# Session::getDefaultSchema

(No version information available, might only be in Git)

Session::getDefaultSchema — Get default schema name

### Açıklama

public function mysql_xdevapi\Session::getDefaultSchema(): ?mysql_xdevapi\Schema

Retrieve the default schema that's typically set in the connection URI.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The default schema defined by the connection, or `null` if one was not set.

### Örnekler

Örnek 1 mysql_xdevapi\Session::getSchema() example

    <?php
    $uri = "mysqlx://testuser:testpasswd@localhost:33160/testx?ssl-mode=disabled";
    $session = mysql_xdevapi\getSession($uri);

    $schema = $session->getDefaultSchema();
    echo $schema->getName();
    ?>

Yukarıdaki örneğin çıktısı:

    testx

# Session::getSchema

(No version information available, might only be in Git)

Session::getSchema — Get a new schema object

### Açıklama

public function mysql_xdevapi\Session::getSchema(string `$schema_name`): mysql_xdevapi\Schema

A new Schema object for the provided schema name.

### Bağımsız Değişkenler

`schema_name`

  Name of the schema (database) to fetch a Schema object for.

### Dönen Değerler

A Schema object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::getSchema() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $schema  = $session->getSchema("addressbook");

    print_r($schema);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    mysql_xdevapi\Schema Object
    (
        [name] => addressbook
    )

# Session::getSchemas

(No version information available, might only be in Git)

Session::getSchemas — Get the schemas

### Açıklama

public function mysql_xdevapi\Session::getSchemas(): array

Get schema objects for all schemas available to the session.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array containing objects that represent all of the schemas available to the session.

### Örnekler

Örnek 1 mysql_xdevapi\Session::getSchemas() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $schemas  = $session->getSchemas();

    print_r($schemas);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => mysql_xdevapi\Schema Object
            (
                [name] => addressbook
            )
        [1] => mysql_xdevapi\Schema Object
            (
                [name] => information_schema
            )
        ...

# Session::getServerVersion

(No version information available, might only be in Git)

Session::getServerVersion — Get server version

### Açıklama

public function mysql_xdevapi\Session::getServerVersion(): int

Retrieve the MySQL server version for the session.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The MySQL server version for the session, as an integer such as "80012".

### Örnekler

Örnek 1 mysql_xdevapi\Session::getServerVersion() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $version = $session->getServerVersion();

    var_dump($version);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(80012)

# Session::listClients

(No version information available, might only be in Git)

Session::listClients — Get client list

### Açıklama

public function mysql_xdevapi\Session::listClients(): array

Get a list of client connections to the session's MySQL server.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array containing the currently logged clients. The array elements are "client_id", "user", "host", and "sql_session".

### Örnekler

Örnek 1 mysql_xdevapi\Session::listClients() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $ids = $session->listClients();

    var_dump($ids);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(1) {
      [0]=>
      array(4) {
        ["client_id"]=>
        int(61)
        ["user"]=>
        string(4) "root"
        ["host"]=>
        string(9) "localhost"
        ["sql_session"]=>
        int(72)
      }
    }

# Session::quoteName

(No version information available, might only be in Git)

Session::quoteName — Add quotes

### Açıklama

public function mysql_xdevapi\Session::quoteName(string `$name`): string

A quoting function to escape SQL names and identifiers. It escapes the identifier given in accordance to the settings of the current connection. This escape function should not be used to escape values.

### Bağımsız Değişkenler

`name`

  The string to quote.

### Dönen Değerler

The quoted string.

### Örnekler

Örnek 1 mysql_xdevapi\Session::quoteName() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $first = "MySQL's test";
    var_dump($first);
    var_dump($session->quoteName($first));

    $second = 'Another `test` "like" `this`';
    var_dump($second);
    var_dump($session->quoteName($second));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(12) "MySQL's test"
    string(14) "`MySQL's test`"

    string(28) "Another `test` "like" `this`"
    string(34) "`Another ``test`` "like" ``this```"

# Session::releaseSavepoint

(No version information available, might only be in Git)

Session::releaseSavepoint — Release set savepoint

### Açıklama

public function mysql_xdevapi\Session::releaseSavepoint(string `$name`): void

Release a previously set savepoint.

### Bağımsız Değişkenler

`name`

  Name of the savepoint to release.

### Dönen Değerler

An SqlStatementResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::releaseSavepoint() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("friends");

    $session->startTransaction();
    $collection->add( '{"test1":1, "test2":2}' )->execute();

    $savepoint = $session->setSavepoint();

    $collection->add( '{"test3":3, "test4":4}' )->execute();

    $session->releaseSavepoint($savepoint);
    $session->rollback();
    ?>

# Session::rollback

(No version information available, might only be in Git)

Session::rollback — Rollback transaction

### Açıklama

public function mysql_xdevapi\Session::rollback(): void

Rollback the transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An SqlStatementResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::rollback() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("names");

    $session->startTransaction();
    $collection->add( '{"test1":1, "test2":2}' )->execute();

    $savepoint = $session->setSavepoint();

    $collection->add( '{"test3":3, "test4":4}' )->execute();

    $session->releaseSavepoint($savepoint);
    $session->rollback();
    ?>

# Session::rollbackTo

(No version information available, might only be in Git)

Session::rollbackTo — Rollback transaction to savepoint

### Açıklama

public function mysql_xdevapi\Session::rollbackTo(string `$name`): void

Rollback the transaction back to the savepoint.

### Bağımsız Değişkenler

`name`

  Name of the savepoint to rollback to; case-insensitive.

### Dönen Değerler

An SqlStatementResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::rollbackTo() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("names");

    $session->startTransaction();
    $collection->add( '{"test1":1, "test2":2}' )->execute();

    $savepoint1 = $session->setSavepoint();

    $collection->add( '{"test3":3, "test4":4}' )->execute();

    $savepoint2 = $session->setSavepoint();

    $session->rollbackTo($savepoint1);
    ?>

# Session::setSavepoint

(No version information available, might only be in Git)

Session::setSavepoint — Create savepoint

### Açıklama

public function mysql_xdevapi\Session::setSavepoint(string `$name` = ?): string

Create a new savepoint for the transaction.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`name`

  The name of the savepoint. The name is auto-generated if the optional `name` parameter is not defined as 'SAVEPOINT1', 'SAVEPOINT2', and so on.

### Dönen Değerler

The name of the save point.

### Örnekler

Örnek 1 mysql_xdevapi\Session::setSavepoint() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("names");

    $session->startTransaction();
    $collection->add( '{"test1":1, "test2":2}' )->execute();

    $savepoint = $session->setSavepoint();

    $collection->add( '{"test3":3, "test4":4}' )->execute();

    $session->releaseSavepoint($savepoint);
    $session->rollback();
    ?>

# Session::sql

(No version information available, might only be in Git)

Session::sql — Create SQL query

### Açıklama

public function mysql_xdevapi\Session::sql(string `$query`): mysql_xdevapi\SqlStatement

Create a native SQL statement. Placeholders are supported using the native "?" syntax. Use the `execute` method to execute the SQL statement.

### Bağımsız Değişkenler

`query`

  SQL statement to execute.

### Dönen Değerler

An SqlStatement object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::sql() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("CREATE DATABASE addressbook")->execute();
    ?>

# Session::startTransaction

(No version information available, might only be in Git)

Session::startTransaction — Start transaction

### Açıklama

public function mysql_xdevapi\Session::startTransaction(): void

Start a new transaction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An SqlStatementResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Session::startTransaction() example

    <?php
    $session    = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $collection = $session->getSchema("addressbook")->getCollection("friends");

    $session->startTransaction();
    $collection->add( '{"test1":1, "test2":2}' )->execute();

    $savepoint = $session->setSavepoint();

    $collection->add( '{"test3":3, "test4":4}' )->execute();

    $session->releaseSavepoint($savepoint);
    $session->rollback();
    ?>

## İçindekiler

- Session::close — Close session
- Session::commit — Commit transaction
- Session::__construct — Description constructor
- Session::createSchema — Create new schema
- Session::dropSchema — Drop a schema
- Session::generateUUID — Get new UUID
- Session::getDefaultSchema — Get default schema name
- Session::getSchema — Get a new schema object
- Session::getSchemas — Get the schemas
- Session::getServerVersion — Get server version
- Session::listClients — Get client list
- Session::quoteName — Add quotes
- Session::releaseSavepoint — Release set savepoint
- Session::rollback — Rollback transaction
- Session::rollbackTo — Rollback transaction to savepoint
- Session::setSavepoint — Create savepoint
- Session::sql — Create SQL query
- Session::startTransaction — Start transaction

# SqlStatement class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\SqlStatement {
/* Sabitler */
const int EXECUTE_ASYNC = 1;
const int BUFFERED = 2;
/* Özellikler */
public $statement;
/* Yöntemler */
public function bind(string `$param`): mysql_xdevapi\SqlStatement
public function execute(): mysql_xdevapi\Result
public function getNextResult(): mysql_xdevapi\Result
public function getResult(): mysql_xdevapi\Result
public function hasMoreResults(): bool
}

## Özellikler

statement

## Öntanımlı Sabitler

`mysql_xdevapi\SqlStatement::EXECUTE_ASYNC`

`mysql_xdevapi\SqlStatement::BUFFERED`

# SqlStatement::bind

(No version information available, might only be in Git)

SqlStatement::bind — Bind statement parameters

### Açıklama

public function mysql_xdevapi\SqlStatement::bind(string `$param`): mysql_xdevapi\SqlStatement

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`param`

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::bind() example

    <?php

    /* ... */

    ?>

# SqlStatement::__construct

(No version information available, might only be in Git)

SqlStatement::__construct — Description constructor

### Açıklama

private function mysql_xdevapi\SqlStatement::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::__construct() example

    <?php

    /* ... */

    ?>

# SqlStatement::execute

(No version information available, might only be in Git)

SqlStatement::execute — Execute the operation

### Açıklama

public function mysql_xdevapi\SqlStatement::execute(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::execute() example

    <?php

    /* ... */

    ?>

# SqlStatement::getNextResult

(No version information available, might only be in Git)

SqlStatement::getNextResult — Get next result

### Açıklama

public function mysql_xdevapi\SqlStatement::getNextResult(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::getNextResult() example

    <?php

    /* ... */

    ?>

# SqlStatement::getResult

(No version information available, might only be in Git)

SqlStatement::getResult — Get result

### Açıklama

public function mysql_xdevapi\SqlStatement::getResult(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::getResult() example

    <?php

    /* ... */

    ?>

# SqlStatement::hasMoreResults

(No version information available, might only be in Git)

SqlStatement::hasMoreResults — Check for more results

### Açıklama

public function mysql_xdevapi\SqlStatement::hasMoreResults(): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the result set has more objects to fetch.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatement::hasMoreResults() example

    <?php

    /* ... */

    ?>

## İçindekiler

- SqlStatement::bind — Bind statement parameters
- SqlStatement::__construct — Description constructor
- SqlStatement::execute — Execute the operation
- SqlStatement::getNextResult — Get next result
- SqlStatement::getResult — Get result
- SqlStatement::hasMoreResults — Check for more results

# SqlStatementResult class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\SqlStatementResult implements mysql_xdevapi\BaseResult, Traversable {
/* Yöntemler */
public function fetchAll(): array
public function fetchOne(): array
public function getAffectedItemsCount(): int
public function getColumnsCount(): int
public function getColumnNames(): array
public function getColumns(): Array
public function getGeneratedIds(): array
public function getLastInsertId(): String
public function getWarnings(): array
public function getWarningCounts(): int
public function hasData(): bool
public function nextResult(): mysql_xdevapi\Result
}

# SqlStatementResult::__construct

(No version information available, might only be in Git)

SqlStatementResult::__construct — Description constructor

### Açıklama

private function mysql_xdevapi\SqlStatementResult::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::__construct() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::fetchAll

(No version information available, might only be in Git)

SqlStatementResult::fetchAll — Get all rows from result

### Açıklama

public function mysql_xdevapi\SqlStatementResult::fetchAll(): array

Fetch all the rows from the result set.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A numerical array with all results from the query; each result is an associative array. An empty array is returned if no rows are present.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::fetchAll() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS dbtest")->execute();
    $session->sql("CREATE DATABASE dbtest")->execute();
    $session->sql("CREATE TABLE dbtest.workers(name text, age int, job text)")->execute();
    $session->sql("INSERT INTO dbtest.workers values ('John', 42, 'bricklayer'), ('Sam', 33, 'carpenter')")->execute();

    $schema = $session->getSchema("dbtest");
    $table  = $schema->getTable("workers");

    $rows = $session->sql("SELECT * FROM dbtest.workers")->execute()->fetchAll();

    print_r($rows);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 33
            )
    )

# SqlStatementResult::fetchOne

(No version information available, might only be in Git)

SqlStatementResult::fetchOne — Get single row

### Açıklama

public function mysql_xdevapi\SqlStatementResult::fetchOne(): array

Fetch one row from the result set.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The result, as an associative array. In case there is not any result, null will be returned.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::fetchOne() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS dbtest")->execute();
    $session->sql("CREATE DATABASE dbtest")->execute();
    $session->sql("CREATE TABLE dbtest.workers(name text, age int, job text)")->execute();
    $session->sql("INSERT INTO dbtest.workers values ('John', 42, 'bricklayer'), ('Sam', 33, 'carpenter')")->execute();

    $schema = $session->getSchema("dbtest");
    $table  = $schema->getTable("workers");

    $rows = $session->sql("SELECT * FROM dbtest.workers")->execute()->fetchOne();

    print_r($rows);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [name] => John
        [age] => 42
        [job] => bricklayer
    )

# SqlStatementResult::getAffectedItemsCount

(No version information available, might only be in Git)

SqlStatementResult::getAffectedItemsCount — Get affected row count

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getAffectedItemsCount(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getAffectedItemsCount() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getColumnsCount

(No version information available, might only be in Git)

SqlStatementResult::getColumnsCount — Get column count

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getColumnsCount(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of columns; 0 if there are none.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.14 | Method renamed from getColumnCount() to getColumnsCount().

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getColumnsCount() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getColumnNames

(No version information available, might only be in Git)

SqlStatementResult::getColumnNames — Get column names

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getColumnNames(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getColumnNames() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getColumns

(No version information available, might only be in Git)

SqlStatementResult::getColumns — Get columns

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getColumns(): Array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getColumns() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getGeneratedIds

(No version information available, might only be in Git)

SqlStatementResult::getGeneratedIds — Get generated ids

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getGeneratedIds(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of generated _id's from the last operation, or an empty array if there are none.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getGeneratedIds() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getLastInsertId

(No version information available, might only be in Git)

SqlStatementResult::getLastInsertId — Get last insert id

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getLastInsertId(): String

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The ID for the last insert operation.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getLastInsertId() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getWarnings

(No version information available, might only be in Git)

SqlStatementResult::getWarnings — Get warnings from last operation

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getWarnings(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of Warning objects from the last operation. Each object defines an error 'message', error 'level', and error 'code'. An empty array is returned if no errors are present.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getWarnings() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::getWarningsCount

(No version information available, might only be in Git)

SqlStatementResult::getWarningsCount — Get warning count from last operation

### Açıklama

public function mysql_xdevapi\SqlStatementResult::getWarningCounts(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of warnings raised during the last CRUD operation.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::getWarningsCount() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::hasData

(No version information available, might only be in Git)

SqlStatementResult::hasData — Check if result has data

### Açıklama

public function mysql_xdevapi\SqlStatementResult::hasData(): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the result set has data.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::hasData() example

    <?php

    /* ... */

    ?>

# SqlStatementResult::nextResult

(No version information available, might only be in Git)

SqlStatementResult::nextResult — Get next result

### Açıklama

public function mysql_xdevapi\SqlStatementResult::nextResult(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The next Result object from the result set.

### Örnekler

Örnek 1 mysql_xdevapi\SqlStatementResult::nextResult() example

    <?php

    /* ... */

    ?>

## İçindekiler

- SqlStatementResult::__construct — Description constructor
- SqlStatementResult::fetchAll — Get all rows from result
- SqlStatementResult::fetchOne — Get single row
- SqlStatementResult::getAffectedItemsCount — Get affected row count
- SqlStatementResult::getColumnsCount — Get column count
- SqlStatementResult::getColumnNames — Get column names
- SqlStatementResult::getColumns — Get columns
- SqlStatementResult::getGeneratedIds — Get generated ids
- SqlStatementResult::getLastInsertId — Get last insert id
- SqlStatementResult::getWarnings — Get warnings from last operation
- SqlStatementResult::getWarningsCount — Get warning count from last operation
- SqlStatementResult::hasData — Check if result has data
- SqlStatementResult::nextResult — Get next result

# Statement class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Statement {
/* Sabitler */
const int EXECUTE_ASYNC = 1;
const int BUFFERED = 2;
/* Yöntemler */
public function getNextResult(): mysql_xdevapi\Result
public function getResult(): mysql_xdevapi\Result
public function hasMoreResults(): bool
}

## Öntanımlı Sabitler

`mysql_xdevapi\Statement::EXECUTE_ASYNC`

`mysql_xdevapi\Statement::BUFFERED`

# Statement::__construct

(No version information available, might only be in Git)

Statement::__construct — Description constructor

### Açıklama

private function mysql_xdevapi\Statement::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Statement::__construct() example

    <?php

    /* ... */

    ?>

# Statement::getNextResult

(No version information available, might only be in Git)

Statement::getNextResult — Get next result

### Açıklama

public function mysql_xdevapi\Statement::getNextResult(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Statement::getNextResult() example

    <?php

    /* ... */

    ?>

# Statement::getResult

(No version information available, might only be in Git)

Statement::getResult — Get result

### Açıklama

public function mysql_xdevapi\Statement::getResult(): mysql_xdevapi\Result

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Statement::getResult() example

    <?php

    /* ... */

    ?>

# Statement::hasMoreResults

(No version information available, might only be in Git)

Statement::hasMoreResults — Check if more results

### Açıklama

public function mysql_xdevapi\Statement::hasMoreResults(): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 mysql_xdevapi\Statement::hasMoreResults() example

    <?php

    /* ... */

    ?>

## İçindekiler

- Statement::__construct — Description constructor
- Statement::getNextResult — Get next result
- Statement::getResult — Get result
- Statement::hasMoreResults — Check if more results

# Table class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

Provides access to the table through INSERT/SELECT/UPDATE/DELETE statements.

## Sınıf Sözdizimi

class mysql_xdevapi\Table implements mysql_xdevapi\SchemaObject {
/* Özellikler */
public $name;
/* Yöntemler */
public function count(): int
public function delete(): mysql_xdevapi\TableDelete
public function existsInDatabase(): bool
public function getName(): string
public function getSchema(): mysql_xdevapi\Schema
public function getSession(): mysql_xdevapi\Session
public function insert(mixed `$columns`, mixed `...$more_columns`): mysql_xdevapi\TableInsert
public function isView(): bool
public function select(mixed `$columns`, mixed `...$more_columns`): mysql_xdevapi\TableSelect
public function update(): mysql_xdevapi\TableUpdate
}

## Özellikler

name

# Table::__construct

(No version information available, might only be in Git)

Table::__construct — Table constructor

### Açıklama

private function mysql_xdevapi\Table::__construct()

Construct a table object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Table::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");
    ?>

# Table::count

(No version information available, might only be in Git)

Table::count — Get row count

### Açıklama

public function mysql_xdevapi\Table::count(): int

Fetch the number of rows in the table.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The total number of rows in the table.

### Örnekler

Örnek 1 mysql_xdevapi\Table::count() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    var_dump($table->count());
    ?>

Yukarıdaki örneğin çıktısı:

    int(2)

# Table::delete

(No version information available, might only be in Git)

Table::delete — Delete rows from table

### Açıklama

public function mysql_xdevapi\Table::delete(): mysql_xdevapi\TableDelete

Deletes rows from a table.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A TableDelete object; use the execute() method to execute the delete query.

### Örnekler

Örnek 1 mysql_xdevapi\Table::delete() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()->where("name = :name")->orderby("age DESC")->limit(1)->bind(['name' => 'John'])->execute();
    ?>

# Table::existsInDatabase

(No version information available, might only be in Git)

Table::existsInDatabase — Check if table exists in database

### Açıklama

public function mysql_xdevapi\Table::existsInDatabase(): bool

Verifies if this table exists in the database.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if table exists in the database, else `false` if it does not.

### Örnekler

Örnek 1 mysql_xdevapi\Table::existsInDatabase() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    if ($table->existsInDatabase()) {
      echo "Yes, this table still exists in the session's schema.";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yes, this table still exists in the session's schema.

# Table::getName

(No version information available, might only be in Git)

Table::getName — Get table name

### Açıklama

public function mysql_xdevapi\Table::getName(): string

Returns the name of this database object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The name of this database object.

### Örnekler

Örnek 1 mysql_xdevapi\Table::getName() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    var_dump($table->getName());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(5) "names"

# Table::getSchema

(No version information available, might only be in Git)

Table::getSchema — Get table schema

### Açıklama

public function mysql_xdevapi\Table::getSchema(): mysql_xdevapi\Schema

Fetch the schema associated with the table.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Schema object.

### Örnekler

Örnek 1 mysql_xdevapi\Table::getSchema() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    var_dump($table->getSchema());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Schema)#9 (1) {
      ["name"]=>
      string(11) "addressbook"
    }

# Table::getSession

(No version information available, might only be in Git)

Table::getSession — Get table session

### Açıklama

public function mysql_xdevapi\Table::getSession(): mysql_xdevapi\Session

Get session associated with the table.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Session object.

### Örnekler

Örnek 1 mysql_xdevapi\Table::getSession() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    var_dump($table->getSession());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(mysql_xdevapi\Session)#9 (0) {
    }

# Table::insert

(No version information available, might only be in Git)

Table::insert — Insert table rows

### Açıklama

public function mysql_xdevapi\Table::insert(mixed `$columns`, mixed `...$more_columns`): mysql_xdevapi\TableInsert

Inserts rows into a table.

### Bağımsız Değişkenler

`columns`

  The columns to insert data into. Can be an array with one or more values, or a string.

`more_columns`

  Additional columns definitions.

### Dönen Değerler

A TableInsert object; use the execute() method to execute the insert statement.

### Örnekler

Örnek 1 mysql_xdevapi\Table::insert() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table ->insert("name", "age")
      ->values(["Suzanne", 31],["Julie", 43])
      ->execute();
    ?>

# Table::isView

(No version information available, might only be in Git)

Table::isView — Check if table is view

### Açıklama

public function mysql_xdevapi\Table::isView(): bool

Determine if the underlying object is a view or not.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` if the underlying object is a view, otherwise `false`.

### Örnekler

Örnek 1 mysql_xdevapi\Table::isView() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    if ($table->isView()) {
        echo "This is a view.";
    } else {
        echo "This is not a view.";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    This is not a view.

# Table::select

(No version information available, might only be in Git)

Table::select — Select rows from table

### Açıklama

public function mysql_xdevapi\Table::select(mixed `$columns`, mixed `...$more_columns`): mysql_xdevapi\TableSelect

Fetches data from a table.

### Bağımsız Değişkenler

`columns`

  The columns to select data from. Can be an array with one or more values, or a string.

`more_columns`

  Additional columns parameter definitions.

### Dönen Değerler

A TableSelect object; use the execute() method to execute the select and return a RowResult object.

### Örnekler

Örnek 1 mysql_xdevapi\Table::count() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $row = $table->select('name', 'age')->execute()->fetchAll();

    print_r($row);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 33
            )
    )

# Table::update

(No version information available, might only be in Git)

Table::update — Update rows in table

### Açıklama

public function mysql_xdevapi\Table::update(): mysql_xdevapi\TableUpdate

Updates columns in a table.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A TableUpdate object; use the execute() method to execute the update statement.

### Örnekler

Örnek 1 mysql_xdevapi\Table::update() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->update()->set('age',34)->where('name = "Sam"')->limit(1)->execute();
    ?>

## İçindekiler

- Table::__construct — Table constructor
- Table::count — Get row count
- Table::delete — Delete rows from table
- Table::existsInDatabase — Check if table exists in database
- Table::getName — Get table name
- Table::getSchema — Get table schema
- Table::getSession — Get table session
- Table::insert — Insert table rows
- Table::isView — Check if table is view
- Table::select — Select rows from table
- Table::update — Update rows in table

# TableDelete class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

A statement for delete operations on Table.

## Sınıf Sözdizimi

class mysql_xdevapi\TableDelete implements mysql_xdevapi\Executable {
/* Yöntemler */
public function bind(array `$placeholder_values`): mysql_xdevapi\TableDelete
public function execute(): mysql_xdevapi\Result
public function limit(int `$rows`): mysql_xdevapi\TableDelete
public function orderby(string `$orderby_expr`): mysql_xdevapi\TableDelete
public function where(string `$where_expr`): mysql_xdevapi\TableDelete
}

# TableDelete::bind

(No version information available, might only be in Git)

TableDelete::bind — Bind delete query parameters

### Açıklama

public function mysql_xdevapi\TableDelete::bind(array `$placeholder_values`): mysql_xdevapi\TableDelete

Binds a value to a specific placeholder.

### Bağımsız Değişkenler

`placeholder_values`

  The name of the placeholder and the value to bind.

### Dönen Değerler

A TableDelete object.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::bind() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("name = :name")
      ->bind(['name' => 'John'])
      ->orderby("age DESC")
      ->limit(1)
      ->execute();

    ?>

# TableDelete::__construct

(No version information available, might only be in Git)

TableDelete::__construct — TableDelete constructor

### Açıklama

private function mysql_xdevapi\TableDelete::__construct()

Initiated by using the delete() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("name = :name")
      ->bind(['name' => 'John'])
      ->orderby("age DESC")
      ->limit(1)
      ->execute();

    ?>

# TableDelete::execute

(No version information available, might only be in Git)

TableDelete::execute — Execute delete query

### Açıklama

public function mysql_xdevapi\TableDelete::execute(): mysql_xdevapi\Result

Execute the delete query.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Result object.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::execute() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("name = :name")
      ->bind(['name' => 'John'])
      ->orderby("age DESC")
      ->limit(1)
      ->execute();

    ?>

# TableDelete::limit

(No version information available, might only be in Git)

TableDelete::limit — Limit deleted rows

### Açıklama

public function mysql_xdevapi\TableDelete::limit(int `$rows`): mysql_xdevapi\TableDelete

Sets the maximum number of records or documents to delete.

### Bağımsız Değişkenler

`rows`

  The maximum number of records or documents to delete.

### Dönen Değerler

TableDelete object.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::limit() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("name = :name")
      ->bind(['name' => 'John'])
      ->orderby("age DESC")
      ->limit(1)
      ->execute();

    ?>

# TableDelete::orderby

(No version information available, might only be in Git)

TableDelete::orderby — Set delete sort criteria

### Açıklama

public function mysql_xdevapi\TableDelete::orderby(string `$orderby_expr`): mysql_xdevapi\TableDelete

Set the order options for a result set.

### Bağımsız Değişkenler

`orderby_expr`

  The sort definition.

### Dönen Değerler

A TableDelete object.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::orderBy() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("age = :age")
      ->bind(['age' => 42])
      ->orderby("name DESC")
      ->limit(1)
      ->execute();

    ?>

# TableDelete::where

(No version information available, might only be in Git)

TableDelete::where — Set delete search condition

### Açıklama

public function mysql_xdevapi\TableDelete::where(string `$where_expr`): mysql_xdevapi\TableDelete

Sets the search condition to filter.

### Bağımsız Değişkenler

`where_expr`

  Define the search condition to filter documents or records.

### Dönen Değerler

TableDelete object.

### Örnekler

Örnek 1 mysql_xdevapi\TableDelete::where() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->delete()
      ->where("id = :id")
      ->bind(['id' => 42])
      ->limit(1)
      ->execute();

    ?>

## İçindekiler

- TableDelete::bind — Bind delete query parameters
- TableDelete::__construct — TableDelete constructor
- TableDelete::execute — Execute delete query
- TableDelete::limit — Limit deleted rows
- TableDelete::orderby — Set delete sort criteria
- TableDelete::where — Set delete search condition

# TableInsert class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

A statement for insert operations on Table.

## Sınıf Sözdizimi

class mysql_xdevapi\TableInsert implements mysql_xdevapi\Executable {
/* Yöntemler */
public function execute(): mysql_xdevapi\Result
public function values(array `$row_values`): mysql_xdevapi\TableInsert
}

# TableInsert::__construct

(No version information available, might only be in Git)

TableInsert::__construct — TableInsert constructor

### Açıklama

private function mysql_xdevapi\TableInsert::__construct()

Initiated by using the insert() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\TableInsert::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table
      ->insert("name", "age")
      ->values(["Suzanne", 31],["Julie", 43])
      ->execute();
    ?>

# TableInsert::execute

(No version information available, might only be in Git)

TableInsert::execute — Execute insert query

### Açıklama

public function mysql_xdevapi\TableInsert::execute(): mysql_xdevapi\Result

Execute the statement.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A Result object.

### Örnekler

Örnek 1 mysql_xdevapi\TableInsert::execute() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table
      ->insert("name", "age")
      ->values(["Suzanne", 31],["Julie", 43])
      ->execute();
    ?>

# TableInsert::values

(No version information available, might only be in Git)

TableInsert::values — Add insert row values

### Açıklama

public function mysql_xdevapi\TableInsert::values(array `$row_values`): mysql_xdevapi\TableInsert

Set the values to be inserted.

### Bağımsız Değişkenler

`row_values`

  Values (an array) of columns to insert.

### Dönen Değerler

A TableInsert object.

### Örnekler

Örnek 1 mysql_xdevapi\TableInsert::values() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table
      ->insert("name", "age")
      ->values(["Suzanne", 31],["Julie", 43])
      ->execute();
    ?>

## İçindekiler

- TableInsert::__construct — TableInsert constructor
- TableInsert::execute — Execute insert query
- TableInsert::values — Add insert row values

# TableSelect class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

A statement for record retrieval operations on a Table.

## Sınıf Sözdizimi

class mysql_xdevapi\TableSelect implements mysql_xdevapi\Executable {
/* Yöntemler */
public function bind(array `$placeholder_values`): mysql_xdevapi\TableSelect
public function execute(): mysql_xdevapi\RowResult
public function groupBy(mixed `$sort_expr`): mysql_xdevapi\TableSelect
public function having(string `$sort_expr`): mysql_xdevapi\TableSelect
public function limit(int `$rows`): mysql_xdevapi\TableSelect
public function lockExclusive(int `$lock_waiting_option` = ?): mysql_xdevapi\TableSelect
public function lockShared(int `$lock_waiting_option` = ?): mysql_xdevapi\TableSelect
public function offset(int `$position`): mysql_xdevapi\TableSelect
public function orderby(mixed `$sort_expr`, mixed `...$sort_exprs`): mysql_xdevapi\TableSelect
public function where(string `$where_expr`): mysql_xdevapi\TableSelect
}

# TableSelect::bind

(No version information available, might only be in Git)

TableSelect::bind — Bind select query parameters

### Açıklama

public function mysql_xdevapi\TableSelect::bind(array `$placeholder_values`): mysql_xdevapi\TableSelect

Binds a value to a specific placeholder.

### Bağımsız Değişkenler

`placeholder_values`

  The name of the placeholder, and the value to bind.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::bind() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name','age')
      ->where('name like :name and age > :age')
      ->bind(['name' => 'John', 'age' => 42])
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
    )

# TableSelect::__construct

(No version information available, might only be in Git)

TableSelect::__construct — TableSelect constructor

### Açıklama

private function mysql_xdevapi\TableSelect::__construct()

An object returned by the select() method; use execute() to execute the query.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 33)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name','age')
      ->where('name like :name and age > :age')
      ->bind(['name' => 'John', 'age' => 42])
      ->orderBy('age desc')
      ->execute();

    $row = $result->fetchAll();
    print_r($row);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
    )

# TableSelect::execute

(No version information available, might only be in Git)

TableSelect::execute — Execute select statement

### Açıklama

public function mysql_xdevapi\TableSelect::execute(): mysql_xdevapi\RowResult

Execute the select statement by chaining it with the execute() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A RowResult object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::execute() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name','age')
      ->where('name like :name and age > :age')
      ->bind(['name' => 'John', 'age' => 42])
      ->orderBy('age desc')
      ->execute();

    $row = $result->fetchAll();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
    )

# TableSelect::groupBy

(No version information available, might only be in Git)

TableSelect::groupBy — Set select grouping criteria

### Açıklama

public function mysql_xdevapi\TableSelect::groupBy(mixed `$sort_expr`): mysql_xdevapi\TableSelect

Sets a grouping criteria for the result set.

### Bağımsız Değişkenler

`sort_expr`

  The grouping criteria.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::groupBy() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 42)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('Suki', 31)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('count(*) as count', 'age')
      ->groupBy('age')->orderBy('age asc')
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [count] => 1
                [age] => 31
            )
        [1] => Array
            (
                [count] => 2
                [age] => 42
            )
    )

# TableSelect::having

(No version information available, might only be in Git)

TableSelect::having — Set select having condition

### Açıklama

public function mysql_xdevapi\TableSelect::having(string `$sort_expr`): mysql_xdevapi\TableSelect

Sets a condition for records to consider in aggregate function operations.

### Bağımsız Değişkenler

`sort_expr`

  A condition on the aggregate functions used on the grouping criteria.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::having() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 42)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('Suki', 31)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('count(*) as count', 'age')
      ->groupBy('age')->orderBy('age asc')
      ->having('count > 1')
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [count] => 2
                [age] => 42
            )
    )

# TableSelect::limit

(No version information available, might only be in Git)

TableSelect::limit — Limit selected rows

### Açıklama

public function mysql_xdevapi\TableSelect::limit(int `$rows`): mysql_xdevapi\TableSelect

Sets the maximum number of records or documents to return.

### Bağımsız Değişkenler

`rows`

  The maximum number of records or documents.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::limit() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name', 'age')
      ->limit(1)
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
    )

# TableSelect::lockExclusive

(No version information available, might only be in Git)

TableSelect::lockExclusive — Execute EXCLUSIVE LOCK

### Açıklama

public function mysql_xdevapi\TableSelect::lockExclusive(int `$lock_waiting_option` = ?): mysql_xdevapi\TableSelect

Execute a read operation with EXCLUSIVE LOCK. Only one lock can be active at a time.

### Bağımsız Değişkenler

`lock_waiting_option`

  The optional waiting option that defaults to `MYSQLX_LOCK_DEFAULT`. Valid values are:

  - `MYSQLX_LOCK_DEFAULT`

  - `MYSQLX_LOCK_NOWAIT`

  - `MYSQLX_LOCK_SKIP_LOCKED`

### Dönen Değerler

TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::lockExclusive() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $session->startTransaction();

    $result = $table->select('name', 'age')
      ->lockExclusive(MYSQLX_LOCK_NOWAIT)
      ->execute();

    $session->commit();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 42
            )
    )

# TableSelect::lockShared

(No version information available, might only be in Git)

TableSelect::lockShared — Execute SHARED LOCK

### Açıklama

public function mysql_xdevapi\TableSelect::lockShared(int `$lock_waiting_option` = ?): mysql_xdevapi\TableSelect

Execute a read operation with SHARED LOCK. Only one lock can be active at a time.

### Bağımsız Değişkenler

`lock_waiting_option`

  The optional waiting option that defaults to `MYSQLX_LOCK_DEFAULT`. Valid values are:

  - `MYSQLX_LOCK_DEFAULT`

  - `MYSQLX_LOCK_NOWAIT`

  - `MYSQLX_LOCK_SKIP_LOCKED`

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::lockShared() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $session->startTransaction();

    $result = $table->select('name', 'age')
      ->lockShared(MYSQLX_LOCK_NOWAIT)
      ->execute();

    $session->commit();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
        [1] => Array
            (
                [name] => Sam
                [age] => 42
            )
    )

# TableSelect::offset

(No version information available, might only be in Git)

TableSelect::offset — Set limit offset

### Açıklama

public function mysql_xdevapi\TableSelect::offset(int `$position`): mysql_xdevapi\TableSelect

Skip given number of rows in result.

### Bağımsız Değişkenler

`position`

  The limit offset.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::offset() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();
    $session->sql("CREATE TABLE addressbook.names(name text, age int)")->execute();
    $session->sql("INSERT INTO addressbook.names values ('John', 42), ('Sam', 42)")->execute();

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name', 'age')
      ->limit(1)
      ->offset(1)
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => Sam
                [age] => 42
            )
    )

# TableSelect::orderby

(No version information available, might only be in Git)

TableSelect::orderby — Set select sort criteria

### Açıklama

public function mysql_xdevapi\TableSelect::orderby(mixed `$sort_expr`, mixed `...$sort_exprs`): mysql_xdevapi\TableSelect

Sets the order by criteria.

### Bağımsız Değişkenler

`sort_expr`

  The expressions that define the order by criteria. Can be an array with one or more expressions, or a string.

`sort_exprs`

  Additional sort_expr parameters.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::orderBy() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name', 'age')
      ->orderBy('name desc')
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => Sam
                [age] => 42
            )
        [1] => Array
            (
                [name] => John
                [age] => 42
            )
    )

# TableSelect::where

(No version information available, might only be in Git)

TableSelect::where — Set select search condition

### Açıklama

public function mysql_xdevapi\TableSelect::where(string `$where_expr`): mysql_xdevapi\TableSelect

Sets the search condition to filter.

### Bağımsız Değişkenler

`where_expr`

  Define the search condition to filter documents or records.

### Dönen Değerler

A TableSelect object.

### Örnekler

Örnek 1 mysql_xdevapi\TableSelect::where() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $result = $table->select('name','age')
      ->where('name like :name and age > :age')
      ->bind(['name' => 'John', 'age' => 42])
      ->execute();

    $row = $result->fetchAll();
    print_r($row);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [name] => John
                [age] => 42
            )
    )

## İçindekiler

- TableSelect::bind — Bind select query parameters
- TableSelect::__construct — TableSelect constructor
- TableSelect::execute — Execute select statement
- TableSelect::groupBy — Set select grouping criteria
- TableSelect::having — Set select having condition
- TableSelect::limit — Limit selected rows
- TableSelect::lockExclusive — Execute EXCLUSIVE LOCK
- TableSelect::lockShared — Execute SHARED LOCK
- TableSelect::offset — Set limit offset
- TableSelect::orderby — Set select sort criteria
- TableSelect::where — Set select search condition

# TableUpdate class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

A statement for record update operations on a Table.

## Sınıf Sözdizimi

class mysql_xdevapi\TableUpdate implements mysql_xdevapi\Executable {
/* Yöntemler */
public function bind(array `$placeholder_values`): mysql_xdevapi\TableUpdate
public function execute(): mysql_xdevapi\TableUpdate
public function limit(int `$rows`): mysql_xdevapi\TableUpdate
public function orderby(mixed `$orderby_expr`, mixed `...$orderby_exprs`): mysql_xdevapi\TableUpdate
public function set(string `$table_field`, string `$expression_or_literal`): mysql_xdevapi\TableUpdate
public function where(string `$where_expr`): mysql_xdevapi\TableUpdate
}

# TableUpdate::bind

(No version information available, might only be in Git)

TableUpdate::bind — Bind update query parameters

### Açıklama

public function mysql_xdevapi\TableUpdate::bind(array `$placeholder_values`): mysql_xdevapi\TableUpdate

Binds a value to a specific placeholder.

### Bağımsız Değişkenler

`placeholder_values`

  The name of the placeholder, and the value to bind, defined as a JSON array.

### Dönen Değerler

A TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::bind() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $table->update()
      ->set('status', 'admin')
      ->where('name = :name and age > :age')
      ->bind(['name' => 'Bernie', 'age' => 2000])
      ->execute();

    ?>

# TableUpdate::__construct

(No version information available, might only be in Git)

TableUpdate::__construct — TableUpdate constructor

### Açıklama

private function mysql_xdevapi\TableUpdate::__construct()

Initiated by using the update() method.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::__construct() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();

    ?>

# TableUpdate::execute

(No version information available, might only be in Git)

TableUpdate::execute — Execute update query

### Açıklama

public function mysql_xdevapi\TableUpdate::execute(): mysql_xdevapi\TableUpdate

Executes the update statement.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::execute() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();

    ?>

# TableUpdate::limit

(No version information available, might only be in Git)

TableUpdate::limit — Limit update row count

### Açıklama

public function mysql_xdevapi\TableUpdate::limit(int `$rows`): mysql_xdevapi\TableUpdate

Set the maximum number of records or documents update.

### Bağımsız Değişkenler

`rows`

  The maximum number of records or documents to update.

### Dönen Değerler

A TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::limit() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();

    ?>

# TableUpdate::orderby

(No version information available, might only be in Git)

TableUpdate::orderby — Set sorting criteria

### Açıklama

public function mysql_xdevapi\TableUpdate::orderby(mixed `$orderby_expr`, mixed `...$orderby_exprs`): mysql_xdevapi\TableUpdate

Sets the sorting criteria.

### Bağımsız Değişkenler

`orderby_expr`

  The expressions that define the order by criteria. Can be an array with one or more expressions, or a string.

`orderby_exprs`

  Additional sort_expr parameters.

### Dönen Değerler

TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::orderby() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();
    ?>

# TableUpdate::set

(No version information available, might only be in Git)

TableUpdate::set — Add field to be updated

### Açıklama

public function mysql_xdevapi\TableUpdate::set(string `$table_field`, string `$expression_or_literal`): mysql_xdevapi\TableUpdate

Updates the column value on records in a table.

### Bağımsız Değişkenler

`table_field`

  The column name to be updated.

`expression_or_literal`

  The value to be set on the specified column.

### Dönen Değerler

TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::set() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();

    ?>

# TableUpdate::where

(No version information available, might only be in Git)

TableUpdate::where — Set search filter

### Açıklama

public function mysql_xdevapi\TableUpdate::where(string `$where_expr`): mysql_xdevapi\TableUpdate

Set the search condition to filter.

### Bağımsız Değişkenler

`where_expr`

  The search condition to filter documents or records.

### Dönen Değerler

A TableUpdate object.

### Örnekler

Örnek 1 mysql_xdevapi\TableUpdate::where() example

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");

    $schema = $session->getSchema("addressbook");
    $table  = $schema->getTable("names");

    $res = $table->update()
      ->set('level', 3)
      ->where('age > 15 and age < 22')
      ->limit(4)
      ->orderby(['age asc','name desc'])
      ->execute();

    ?>

## İçindekiler

- TableUpdate::bind — Bind update query parameters
- TableUpdate::__construct — TableUpdate constructor
- TableUpdate::execute — Execute update query
- TableUpdate::limit — Limit update row count
- TableUpdate::orderby — Set sorting criteria
- TableUpdate::set — Add field to be updated
- TableUpdate::where — Set search filter

# Warning class

(PECL mysql-xdevapi >= 8.0.11)

## Giriş

## Sınıf Sözdizimi

class mysql_xdevapi\Warning {
/* Özellikler */
public $message;
public $level;
public $code;
/* Constructor */
private function __construct()
}

## Özellikler

message

level

code

# Warning::__construct

(No version information available, might only be in Git)

Warning::__construct — Warning constructor

### Açıklama

private function mysql_xdevapi\Warning::__construct()

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 mysql_xdevapi\Warning::__construct() example

    <?php

    /* ... */

    ?>

## İçindekiler

- Warning::__construct — Warning constructor

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Building / Compiling From Source
- Öntanımlı Sabitler
- Sürüm Bilgisi
- Örnekler
- Mysql_xdevapi İşlevleri
  - expression — Bind prepared statement variables as parameters
  - getSession — Connect to a MySQL server
- mysql_xdevapi\BaseResult — BaseResult interface
  - BaseResult::getWarnings — Fetch warnings from last operation
  - BaseResult::getWarningsCount — Fetch warning count from last operation
- mysql_xdevapi\Client — Client class
  - mysql_xdevapi\Client::close — Close client
  - Client::__construct — Client constructor
  - Client::getClient — Get client session
- mysql_xdevapi\Collection — Collection class
  - Collection::add — Add collection document
  - Collection::addOrReplaceOne — Add or replace collection document
  - Collection::__construct — Collection constructor
  - Collection::count — Get document count
  - Collection::createIndex — Create collection index
  - Collection::dropIndex — Drop collection index
  - Collection::existsInDatabase — Check if collection exists in database
  - Collection::find — Search for document
  - Collection::getName — Get collection name
  - Collection::getOne — Get one document
  - Collection::getSchema — Get schema object
  - Collection::getSession — Get session object
  - Collection::modify — Modify collection documents
  - Collection::remove — Remove collection documents
  - Collection::removeOne — Remove one collection document
  - Collection::replaceOne — Replace one collection document
- mysql_xdevapi\CollectionAdd — CollectionAdd class
  - CollectionAdd::__construct — CollectionAdd constructor
  - CollectionAdd::execute — Execute the statement
- mysql_xdevapi\CollectionFind — CollectionFind class
  - CollectionFind::bind — Bind value to query placeholder
  - CollectionFind::__construct — CollectionFind constructor
  - CollectionFind::execute — Execute the statement
  - CollectionFind::fields — Set document field filter
  - CollectionFind::groupBy — Set grouping criteria
  - CollectionFind::having — Set condition for aggregate functions
  - CollectionFind::limit — Limit number of returned documents
  - CollectionFind::lockExclusive — Execute operation with EXCLUSIVE LOCK
  - CollectionFind::lockShared — Execute operation with SHARED LOCK
  - CollectionFind::offset — Skip given number of elements to be returned
  - CollectionFind::sort — Set the sorting criteria
- mysql_xdevapi\CollectionModify — CollectionModify class
  - CollectionModify::arrayAppend — Append element to an array field
  - CollectionModify::arrayInsert — Insert element into an array field
  - CollectionModify::bind — Bind value to query placeholder
  - CollectionModify::__construct — CollectionModify constructor
  - CollectionModify::execute — Execute modify operation
  - CollectionModify::limit — Limit number of modified documents
  - CollectionModify::patch — Patch document
  - CollectionModify::replace — Replace document field
  - CollectionModify::set — Set document attribute
  - CollectionModify::skip — Skip elements
  - CollectionModify::sort — Set the sorting criteria
  - CollectionModify::unset — Unset the value of document fields
- mysql_xdevapi\CollectionRemove — CollectionRemove class
  - CollectionRemove::bind — Bind value to placeholder
  - CollectionRemove::__construct — CollectionRemove constructor
  - CollectionRemove::execute — Execute remove operation
  - CollectionRemove::limit — Limit number of documents to remove
  - CollectionRemove::sort — Set the sorting criteria
- mysql_xdevapi\ColumnResult — ColumnResult class
  - ColumnResult::__construct — ColumnResult constructor
  - ColumnResult::getCharacterSetName — Get character set
  - ColumnResult::getCollationName — Get collation name
  - ColumnResult::getColumnLabel — Get column label
  - ColumnResult::getColumnName — Get column name
  - ColumnResult::getFractionalDigits — Get fractional digit length
  - ColumnResult::getLength — Get column field length
  - ColumnResult::getSchemaName — Get schema name
  - ColumnResult::getTableLabel — Get table label
  - ColumnResult::getTableName — Get table name
  - ColumnResult::getType — Get column type
  - ColumnResult::isNumberSigned — Check if signed type
  - ColumnResult::isPadded — Check if padded
- mysql_xdevapi\CrudOperationBindable — CrudOperationBindable interface
  - CrudOperationBindable::bind — Bind value to placeholder
- mysql_xdevapi\CrudOperationLimitable — CrudOperationLimitable interface
  - CrudOperationLimitable::limit — Set result limit
- mysql_xdevapi\CrudOperationSkippable — CrudOperationSkippable interface
  - CrudOperationSkippable::skip — Number of operations to skip
- mysql_xdevapi\CrudOperationSortable — CrudOperationSortable interface
  - CrudOperationSortable::sort — Sort results
- mysql_xdevapi\DatabaseObject — DatabaseObject interface
  - DatabaseObject::existsInDatabase — Check if object exists in database
  - DatabaseObject::getName — Get object name
  - DatabaseObject::getSession — Get session name
- mysql_xdevapi\DocResult — DocResult class
  - DocResult::__construct — DocResult constructor
  - DocResult::fetchAll — Get all rows
  - DocResult::fetchOne — Get one row
  - DocResult::getWarnings — Get warnings from last operation
  - DocResult::getWarningsCount — Get warning count from last operation
- mysql_xdevapi\Exception — Exception class
- mysql_xdevapi\Executable — Executable interface
  - Executable::execute — Execute statement
- mysql_xdevapi\ExecutionStatus — ExecutionStatus class
  - ExecutionStatus::__construct — ExecutionStatus constructor
- mysql_xdevapi\Expression — Expression class
  - Expression::__construct — Expression constructor
- mysql_xdevapi\Result — Result class
  - Result::__construct — Result constructor
  - Result::getAffectedItemsCount — Get affected row count
  - Result::getAutoIncrementValue — Get autoincremented value
  - Result::getGeneratedIds — Get generated ids
  - Result::getWarnings — Get warnings from last operation
  - Result::getWarningsCount — Get warning count from last operation
- mysql_xdevapi\RowResult — RowResult class
  - RowResult::__construct — RowResult constructor
  - RowResult::fetchAll — Get all rows from result
  - RowResult::fetchOne — Get row from result
  - RowResult::getColumnsCount — Get column count
  - RowResult::getColumnNames — Get all column names
  - RowResult::getColumns — Get column metadata
  - RowResult::getWarnings — Get warnings from last operation
  - RowResult::getWarningsCount — Get warning count from last operation
- mysql_xdevapi\Schema — Schema class
  - Schema::__construct — Schema constructor
  - Schema::createCollection — Add collection to schema
  - Schema::dropCollection — Drop collection from schema
  - Schema::existsInDatabase — Check if exists in database
  - Schema::getCollection — Get collection from schema
  - Schema::getCollectionAsTable — Get collection as a Table object
  - Schema::getCollections — Get all schema collections
  - Schema::getName — Get schema name
  - Schema::getSession — Get schema session
  - Schema::getTable — Get schema table
  - Schema::getTables — Get schema tables
- mysql_xdevapi\SchemaObject — SchemaObject interface
  - SchemaObject::getSchema — Get schema object
- mysql_xdevapi\Session — Session class
  - Session::close — Close session
  - Session::commit — Commit transaction
  - Session::__construct — Description constructor
  - Session::createSchema — Create new schema
  - Session::dropSchema — Drop a schema
  - Session::generateUUID — Get new UUID
  - Session::getDefaultSchema — Get default schema name
  - Session::getSchema — Get a new schema object
  - Session::getSchemas — Get the schemas
  - Session::getServerVersion — Get server version
  - Session::listClients — Get client list
  - Session::quoteName — Add quotes
  - Session::releaseSavepoint — Release set savepoint
  - Session::rollback — Rollback transaction
  - Session::rollbackTo — Rollback transaction to savepoint
  - Session::setSavepoint — Create savepoint
  - Session::sql — Create SQL query
  - Session::startTransaction — Start transaction
- mysql_xdevapi\SqlStatement — SqlStatement class
  - SqlStatement::bind — Bind statement parameters
  - SqlStatement::__construct — Description constructor
  - SqlStatement::execute — Execute the operation
  - SqlStatement::getNextResult — Get next result
  - SqlStatement::getResult — Get result
  - SqlStatement::hasMoreResults — Check for more results
- mysql_xdevapi\SqlStatementResult — SqlStatementResult class
  - SqlStatementResult::__construct — Description constructor
  - SqlStatementResult::fetchAll — Get all rows from result
  - SqlStatementResult::fetchOne — Get single row
  - SqlStatementResult::getAffectedItemsCount — Get affected row count
  - SqlStatementResult::getColumnsCount — Get column count
  - SqlStatementResult::getColumnNames — Get column names
  - SqlStatementResult::getColumns — Get columns
  - SqlStatementResult::getGeneratedIds — Get generated ids
  - SqlStatementResult::getLastInsertId — Get last insert id
  - SqlStatementResult::getWarnings — Get warnings from last operation
  - SqlStatementResult::getWarningsCount — Get warning count from last operation
  - SqlStatementResult::hasData — Check if result has data
  - SqlStatementResult::nextResult — Get next result
- mysql_xdevapi\Statement — Statement class
  - Statement::__construct — Description constructor
  - Statement::getNextResult — Get next result
  - Statement::getResult — Get result
  - Statement::hasMoreResults — Check if more results
- mysql_xdevapi\Table — Table class
  - Table::__construct — Table constructor
  - Table::count — Get row count
  - Table::delete — Delete rows from table
  - Table::existsInDatabase — Check if table exists in database
  - Table::getName — Get table name
  - Table::getSchema — Get table schema
  - Table::getSession — Get table session
  - Table::insert — Insert table rows
  - Table::isView — Check if table is view
  - Table::select — Select rows from table
  - Table::update — Update rows in table
- mysql_xdevapi\TableDelete — TableDelete class
  - TableDelete::bind — Bind delete query parameters
  - TableDelete::__construct — TableDelete constructor
  - TableDelete::execute — Execute delete query
  - TableDelete::limit — Limit deleted rows
  - TableDelete::orderby — Set delete sort criteria
  - TableDelete::where — Set delete search condition
- mysql_xdevapi\TableInsert — TableInsert class
  - TableInsert::__construct — TableInsert constructor
  - TableInsert::execute — Execute insert query
  - TableInsert::values — Add insert row values
- mysql_xdevapi\TableSelect — TableSelect class
  - TableSelect::bind — Bind select query parameters
  - TableSelect::__construct — TableSelect constructor
  - TableSelect::execute — Execute select statement
  - TableSelect::groupBy — Set select grouping criteria
  - TableSelect::having — Set select having condition
  - TableSelect::limit — Limit selected rows
  - TableSelect::lockExclusive — Execute EXCLUSIVE LOCK
  - TableSelect::lockShared — Execute SHARED LOCK
  - TableSelect::offset — Set limit offset
  - TableSelect::orderby — Set select sort criteria
  - TableSelect::where — Set select search condition
- mysql_xdevapi\TableUpdate — TableUpdate class
  - TableUpdate::bind — Bind update query parameters
  - TableUpdate::__construct — TableUpdate constructor
  - TableUpdate::execute — Execute update query
  - TableUpdate::limit — Limit update row count
  - TableUpdate::orderby — Set sorting criteria
  - TableUpdate::set — Add field to be updated
  - TableUpdate::where — Set search filter
- mysql_xdevapi\Warning — Warning class
  - Warning::__construct — Warning constructor

# Özgün MySQL API

# Giriş

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir.

Bu işlevler MySQL veritabanı sunucularına erişmenizi sağlar. MySQL hakkında daha fazla bilgi » http://www.mysql.com/ adresinde bulunabilir.

MySQL belgeleri » http://dev.mysql.com/doc/ adresinde bulunabilir.

MySQL veritabanı ürünleri ve bağlanabilirlik kuralları hakkında Overview bölümünde bilgi bulabilirsiniz.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

Bu işlevleri kullanabilmek için, PHP'yi MySQL desteği ile derlemelisiniz.

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

## Kurulum

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

Derlemek için, tercihe bağlı `[DIR]` MySQL kurulum dizinine işaret edecek şekilde, --with-mysql[=DIR] ayar seçeneğini kullanın.

Bu MySQL eklentisi MySQL 4.1.0 ve üzeri ile uyumlu olduğu halde, bu sürümlerin sağladığı fazladan özellikleri desteklemez. Bunun için, MySQLi eklentisini kullanın.

Eğer mysqli eklentisinin yanısıra mysql eklentisini de kurmak isterseniz uyuşmazlıkları önlemek için aynı istemci kütüphanesini kullanmanız gerekmektedir.

## Linux Sistemlerde Kurulum

`[DIR]` MySQL istemci kütüphanesi (başlık ve kütüphane dosyaları) dosyalarının yolu olup bunlar » MySQL ile indirilebilir.

ext/mysql derleme zamanı destek matrisi
PHP Sürüm: | Öntanımlı | Yapılandırma Seçenekleri: mysqlnd | Yapılandırma Seçenekleri: `libmysqlclient` | Sürüm Bilgisi
--- | --- | --- | --- | ---
4.x.x | libmysqlclient | Kullanılabilir değil | etkisizleştirmek için --without-mysql | MySQL öntanımlı olarak etkindir. MySQL istemci kütüphaneleri dahil edilir.
5.0.x, 5.1.x, 5.2.x | libmysqlclient | Kullanılabilir değil | --with-mysql=[DIR] | MySQL artık öntanımlı olarak etkin değildir ve MySQL istemci kütüphaneleri dahil edilmez.
5.3.x | libmysqlclient | --with-mysql=mysqlnd | --with-mysql=[DIR] | mysqlnd kullanılabilir oldu
5.4.x | mysqlnd | --with-mysql | --with-mysql=[DIR] | mysqlnd öntanımlı oldu

## Windows Sistemlerde Kurulum

## PHP 5.0.x, 5.1.x, 5.2.x

MySQL artık öntanımlı olarak etkin değildir, bu yüzden php_mysql.dll DLL'i php.ini içinde seçilmelidir. Ayrıca PHP, MySQL istemci kütüphanelerine de erişmeye gereksinim duyar. Windows PHP dağıtımında libmysql.dll isimli bir dosya bulunur ve PHP'nin MySQL ile konuşabilmesi için bu dosya Windows sistem PATH'inden erişilebilir olmalıdır. Bunu nasıl yapabileceğinizi öğrenmek için "PHP dizinimi Windows'ta PATH değişkenine nasıl eklerim" başlıklı soruyu inceleyiniz. libmysql.dll'i Windows sistem dizinine kopyalamak işe yarasa da (çünkü sistem dizini öntanımlı olarak sistemin PATH'indedir), tavsiye edilmez.

Herhangi bir PHP eklentisinin (php_mysql.dll gibi) etkin kılınması sırasında, extension_dir PHP yönergesi de PHP eklentilerinin bulunduğu konumu gösterecek şekilde ayarlanmalıdır. Elle Windows Kurulumu Komutları'nı da inceleyiniz. PHP5 için örnek bir extension_dir değeri `c:\php\ext`'dir.

> Bilginize: Eğer HTTP sunucusunu başlatırken `"Unable to load dynamic library './php_mysql.dll'"` benzeri bir hata oluşuyorsa, bunun nedeni php_mysql.dll ve/veya libmysql.dll'in sistem tarafından bulunamamasıdır.

## PHP 5.3.0+

MySQL Yerli Sürücü öntanımlı olarak etkindir. php_mysql.dll buna dahildir, fakat libmysql.dll artık ne gerekmekte ne de kullanılmaktadır.

## MySQL Kurulum Notları

Uyarı

Bu eklenti recode eklentisiyle birlikte yüklendiğinde PHP'nin çakılması veya başlama sorunları ile karşılaşabilirsiniz. Daha fazla bilgi için recode eklentisine bakınız.

> Bilginize: Eğer (öntanımlı) latin karakter seti dışında karakter kümelerine ihtiyaç duyarsanız, karakter kümesi desteği ile derlenmiş olan harici bir libmysqlclient kurmalısınız.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

MySQL Ayar Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mysql.allow_local_infile | "1" | `INI_SYSTEM` |
mysql.allow_persistent | "1" | `INI_SYSTEM` |
mysql.max_persistent | "-1" | `INI_SYSTEM` |
mysql.max_links | "-1" | `INI_SYSTEM` |
mysql.trace_mode | "0" | `INI_ALL` |
mysql.default_port | NULL | `INI_ALL` |
mysql.default_socket | NULL | `INI_ALL` |
mysql.default_host | NULL | `INI_ALL` |
mysql.default_user | NULL | `INI_ALL` |
mysql.default_password | NULL | `INI_ALL` |
mysql.connect_timeout | "60" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mysql.allow_local_infile` int
  PHP'nin bakış açısından LOAD DATA deyimleriyle yerel dosyalara erişime izin verir.
`mysql.allow_persistent` bool
  MySQL'e Kalıcı bağlantı yapılmasına izin verilip verilmeyeceğini belirler.
`mysql.max_persistent` int
  Süreç başına azami kalıcı MySQL bağlantı sayısı.
`mysql.max_links` int
  Kalıcı bağlantılar da dahil, süreç başına en yüksek MySQL bağlantı sayısı.
`mysql.trace_mode` bool
  İz sürme kipi. `mysql.trace_mode` seçildiği zaman, tablo/indis taramaları, boş olmayan sonuç kümeleri ve SQL hataları için uyarı gösterilir.
`mysql.default_port` string
  Eğer başka bir port numarası belirtilmediyse, veritabanı sunucusuna bağlanırken kullanılacak öntanımlı port numarası. Eğer öntanımlı bir değer tanımlanmadıysa, port sırasıyla MYSQL_TCP_PORT ortam değişkeninden, /etc/services dosyasındaki `mysql-tcp` girdisinden veya `MYSQL_PORT` sabitinden alınır. Win32 sadece `MYSQL_PORT` sabitini kullanacaktır.
`mysql.default_socket` string
  Yereldeki bir veritabanı sunucusuna bağlanırken başka bir soket adı belirtilmediyse kullanılacak olan öntanımlı soket adı.
`mysql.default_host` string
  Veritabanı sunucusuna bağlanırken eğer başka bir konak belirtilmediyse kullanılacak olan öntanımlı konak. `sql.safe_mode`'da geçerli değildir.
`mysql.default_user` string
  Veritabanı sunucusuna bağlanırken eğer başka bir kullanıcı adı belirtilmediyse kullanılacak olan öntanımlı kullanıcı adı. `sql.safe_mode`'da geçerli değildir.
`mysql.default_password` string
  Veritabanı sunucusuna bağlanırken eğer başka bir parola belirtilmediyse kullanılacak olan öntanımlı parola. `sql.safe_mode`'da geçerli değildir.
`mysql.connect_timeout` int
  Saniye cinsinden bağlantı zaman aşımı süresi. Linux'ta, bu zaman aşımı süresi sunucudan ilk cevabı beklemek için de kullanılır.

## Özkaynak Türleri

MySQL modülünde iki kaynak türü vardır. Birincisi veritabanı bağlantısı belirteci, ikincisi de sorgu sonuçlarını tutan kaynaktır.

# Sürüm Bilgisi

Bu eklentinin sınıf/yöntem/işlevlerinde aşağıdaki değişiklikler yapıldı.

### General Changelog for the ext/mysql extension

This changelog references the ext/mysql extension.

### Global ext/mysql changes

The following is a list of changes to the entire ext/mysql extension.

Sürüm: | Açıklama
--- | ---
7.0.0 | This extension was removed from PHP. For details, see Choosing an API.

### Changes to existing functions

The following list is a compilation of changelog entries from the ext/mysql functions.

Version | Function | Description
--- | --- | ---

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

mysql_connect() ve mysql_pconnect() işlevleri için fazladan istemci seçenekleri tanımlanabilmektedir. Aşağıdaki sabitler tanımlanmıştır:

MySQL istemci sabitleri
Sabit | Açıklama
--- | ---
`MYSQL_CLIENT_COMPRESS` | Sıkıştırma protokolü kullan
`MYSQL_CLIENT_IGNORE_SPACE` | İşlev isimlerinden sonra boşluğa izin ver
`MYSQL_CLIENT_INTERACTIVE` | Bağlantıyı kapatmadan önce (wait_timeout yerine) interactive_timeout saniye hareketsizliğe izin ver. İstemci oturumunun wait_timeout değişkeninin değeri oturumun interactive_timeout değişkenine atanır.
`MYSQL_CLIENT_SSL` | SSL şifrelemesi kullan. Bu seçenek MySQL istemci kütüphanesinin sadece 4.x veya daha yeni sürümlerinde kullanılabilir. 3.23.x sürümü hem PHP 4 ile hem de PHP 5'in Windows çalıştırılabilir dosyaları ile birlikte gelir.

mysql_fetch_array() işlevi farklı türlerdeki sonuç dizileri için bir sabit kullanır. Şu sabitler tanımlanmıştır:

MySQL veri çekme sabitleri
Sabit | Açıklama
--- | ---
`MYSQL_ASSOC` | Sütunlar indisi alan adı olan bir dizi olarak döndürülür.
`MYSQL_BOTH` | Sütunlar, hem alan adı anahtarlı hem de sayısal indisli bir dizi olarak döndürülür.
`MYSQL_NUM` | Sütunlar, alanları sayısal indisli bir dizi olarak döndürülür. Bu indis 0'dan başlar.

# Örnekler

## İçindekiler

- MySQL eklentisi temel kullanım

## MySQL eklentisi temel kullanım

Bu basit örnek bir MySQL sunucuya nasıl bağlanılacağını, bir sorgunun nasıl çalıştırılacağını, sonuç satırlarının nasıl bastırılacağını ve bağlantının nasıl kesileceğini gösterir.

Örnek 1 - MySQL eklentisi örneği

    <?php
    // Bağlanıyor, veritabanı seçiliyor
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
        or die('Bağlanamadı: ' . mysql_error());
    echo 'Başarıyla bağlandı';
    mysql_select_db('my_database') or die('Veritabanı seçilemedi');

    // SQL sorgusu uygulanıyor
    $query = 'SELECT * FROM my_table';
    $result = mysql_query($query) or die('Sorgu başarısız: ' . mysql_error());

    // Sonuçlar HTML olarak gösteriliyor
    echo "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "\t<tr>\n";
        foreach ($line as $col_value) {
            echo "\t\t<td>$col_value</td>\n";
        }
        echo "\t</tr>\n";
    }
    echo "</table>\n";

    // Sonuç kümesi serbest bırakılıyor
    mysql_free_result($result);

    // Bağlantı kapatılıyor
    mysql_close($link);
    ?>

# MySQL İşlevleri

## Notlar

> Bilginize: Çoğu MySQL işlevi `bağlantı_belirteci`'ni sonuncu tercihe bağlı bağımsız değişken olarak kabul eder. Eğer verilmemişse, son açılan bağlantı kullanılır. Eğer yoksa, php.ini'de belirlenen öntanımlı bağımsız değişkenlerle bir bağlantı kurulmaya çalışılır. Eğer başarılı olamazsa, işlev `false` sonucunu döndürür.

# mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows — Önceki MySQL işleminde etkilenen satırların sayısını al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_affected_rows()
- PDOStatement::rowCount()

### Açıklama

function mysql_affected_rows(resource `$bağlantı_belirteci` = `null`): int

`bağlantı_belirteci` ile ilişkili son INSERT, UPDATE, REPLACE veya DELETE sorgusundan etkilenen satır sayısını döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Son sorgunun başarılı olması durumunda etkilenen satırların sayısını döndürür; başarısız olması durumunda -1 döndürür.

Eğer son sorgu, WHERE şartı içermeyen bir DELETE sorgusuysa, tablodaki bütün kayıtlar silinmiş demektir, ancak bu işlev MySQL'in 4.1.2'den önceki sürümlerinde 0 döndürür.

UPDATE'i kullanırken, MySQL yeni değerleri eski değerleri ile aynı olan sütunları düzeltmez. Bu da mysql_affected_rows()'un muhtemelen uyan tüm satırların değil, sadece sorgu sonucu gerçekten düzeltilen satırların sayısını döndürmesine neden olur.

REPLACE ifadesi aynı birincil anahtara sahip olan kayıtları siler, daha sonra yeni kaydı girer. Bu işlev silinen kayıtların sayısı artı girilen kayıtların sayısını döndürür.

"INSERT ... ON DUPLICATE KEY UPDATE" sorgularında, yerleştirme yapılmışsa `1`, mevcut satır güncellenmişse `2` döner.

### Örnekler

Örnek 1 - mysql_affected_rows() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    mysql_select_db('mydb');

    /* bu silinen kayıtların gerçek sayısını döndürmeli */
    mysql_query('DELETE FROM mytable WHERE id < 10');
    printf("Silinen kayıtlar: %d\n", mysql_affected_rows());

    /* WHERE şartıyla asla true olmaz, 0 döndürmeli */
    mysql_query('DELETE FROM mytable WHERE 0');
    printf("Silinen kayıtlar: %d\n", mysql_affected_rows());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Silinen kayıtlar: 10
    Silinen kayıtlar: 0

Örnek 2 - Hareket kullananılan mysql_affected_rows() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    mysql_select_db('mydb');

    /* Kayıtları güncelle */
    mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
    printf ("Güncellenen kayıtlar: %d\n", mysql_affected_rows());
    mysql_query("COMMIT");
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Güncellenen kayıtlar: 10

### Notlar

> Bilginize: Hareketler
> Eğer hareketleri kullanıyorsanız mysql_affected_rows() işlevini INSERT, UPDATE veya DELETE sorgunuzdan sonra, ama COMMIT'den önce kullanmalısınız.

> Bilginize: SELECT Deyimleri
> Bir SELECT sorgusundan döndürülen satırların sayısını almak için, mysql_num_rows() işlevini kullanmak mümkündür.

> Bilginize: Birleşik Yabancı Anahtarlar
> mysql_affected_rows() yabancı anahtar kısıtlarındaki ON DELETE CASCADE ve/veya ON UPDATE CASCADE kullanımları üzerinden dolaylı olarak etkilenen satırları saymaz.

### Ayrıca Bakınız

- mysql_num_rows() - Sonuçtaki satır sayısını al
- mysql_info() - En son sorgu hakkında bilgi al

# mysql_client_encoding

(PHP 4 >= 4.3.0, PHP 5)

mysql_client_encoding — Karakter kümesinin adını döndürür

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_character_set_name()

### Açıklama

function mysql_client_encoding(resource `$bağlantı_belirteci` = `null`): string

MySQL'den `character_set` değişkenini alır.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Geçerli bağlantı için öntanımlı karakter kümesini döndürür.

### Örnekler

Örnek 1 - mysql_client_encoding() örneği

    <?php
    $link    = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $charset = mysql_client_encoding($link);

    echo "Geçerli karakter kümesi: $charset\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Geçerli karakter kümesi: latin5

### Ayrıca Bakınız

- mysql_set_charset() - Sets the client character set
- mysql_real_escape_string() - Escapes special characters in a string for use in an SQL statement

# mysql_close

(PHP 4, PHP 5)

mysql_close — MySQL bağlantısını kapatır

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_close()
- PDO: PDO nesnesine `null` değerini atar

### Açıklama

function mysql_close(resource `$bağlantı_belirteci` = NULL): bool

mysql_close() işlevi, MySQL sunucusuna, bağlantı belirteci ile belirtilen kalıcı olmayan bağlantıyı kapatır. Eğer `bağlantı_belirteci` belirtilmemişse, son açılan bağlantı kullanılır.

Kalıcı olmayan açık MySQL bağlantıları ve sonuç kümeleri PHP betiği çalışmasını bitirdiğinde otomatik olarak yok edilir. Bu bakımdan, açık bağlantıların doğrudan kapatılması ve sonuç kümelerinin serbest bırakılması tamamen isteğe bağlıdır. Özkaynaklar beklemeden PHP ve MySQL'e döndürüldüğünden başarım artar. Ek bilgi: freeing resources

### Bağımsız Değişkenler

`link_identifier`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse son bağlantının mysql_connect() tarafından açıldığı varsayılır.Hiçbir bağlantı yoksa veya kurulmamışsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - mysql_close() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);
    ?>

Yukarıdaki örneğin çıktısı:

    Başarıyla bağlandı

### Notlar

> Bilginize: mysql_close() mysql_pconnect() ile oluşturulmuş kalıcı bağlantıları kapatmayacaktır. Diğer ayrıntılar için kalıcı bağlantılar sayfasına bakınız.

### Ayrıca Bakınız

- mysql_connect() - MySQL Sunucusuna bir bağlantı açar
- mysql_free_result() - Sonuç belleğini serbest bırakır

# mysql_connect

(PHP 4, PHP 5)

mysql_connect — MySQL Sunucusuna bir bağlantı açar

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_connect()
- PDO::__construct()

### Açıklama

function mysql_connect(
string `$sunucu` = ini_get("mysql.default_host"),
string `$kullanıcı_adı` = ini_get("mysql.default_user"),
string `$parola` = ini_get("mysql.default_password"),
bool `$yeni_bağlantı` = `false`,
int `$istemci_seçenekleri` = 0
): resource|false

Bir MySQL sunucusuna bir bağlantı açar veya var olanı tekrar kullanır.

### Bağımsız Değişkenler

`sunucu`
  MySQL sunucusu. "konak_adı:port" biçiminde ayrıca bir de port içerebileceği gibi localhost için belirtildiğinde ":/bir/yol/soket" biçiminde yerel bir sokete bir yol da belirtebilir. Eğer mysql.default_host PHP yönergesi tanımsızsa (öntanımlı), öntanımlı değer 'localhost:3306''dır. `sql.safe_mode`'da bu bağımsız değişken önemsenmez ve her zaman 'localhost:3306' değeri kullanılır.
`kullanıcı_adı`
  Kullanıcı adı. Öntanımlı değer mysql.default_user ile tanımlanır. `sql.safe_mode`'da, bu bağımsız değişken önemsenmez ve sunucu sürecinin sahibi olan kullanıcı kullanılır.
`parola`
  Parola. Öntanımlı değer mysql.default_password ile tanımlanır. `sql.safe_mode`'da, bu bağımsız değişken önemsenmez ve boş parola kullanılır.
`yeni_bağlantı`
  Eğer mysql_connect() aynı bağımsız değişkenlerle ikinci kez çağrılırsa, yeni bir bağlantı kurulmaz, zaten açık olan bağlantının belirteci döndürülür. `yeni_bağlantı` bağımsız değişkeni bu davranışı değiştirir ve mysql_connect(), daha önce aynı bağımsız değişkenlerle çağrılmış olsa bile her zaman yeni bir bağlantı açar. `sql.safe_mode`'da bu bağımsız değişken önemsenmez.
`istemci_seçenekleri`
  `istemci_seçenekleri` bağımsız değişkeni şu sabitlerin bir karışımı olabilir: 128 (`LOAD DATA LOCAL` tutamağı etkin), `MYSQL_CLIENT_SSL`, `MYSQL_CLIENT_COMPRESS`, `MYSQL_CLIENT_IGNORE_SPACE` veya `MYSQL_CLIENT_INTERACTIVE`. Daha fazla bilgi için MySQL istemci sabitleri ile ilgili bölümü okuyun. `sql.safe_mode`'da bu bağımsız değişken önemsenmez.

### Dönen Değerler

Başarı durumunda bir MySQL bağlantı belirteci döndürür, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_connect() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);
    ?>

Örnek 2 - `konak_adı:port` sözdizimini kullanan mysql_connect() örneği

    <?php
    // 3307 portundan example.com'a bağlanıyoruz
    $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);

    // 3307 portundan localhost'a bağlanıyoruz
    $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);
    ?>

Örnek 3 - ":/bir/yol/soket" sözdizimini kullanan mysql_connect() örneği

    <?php
    // localhost ve sokete, örneğin /tmp/mysql.sock, bağlanıyoruz

    // 1. yol: localhost'u ihmal ederek
    $link = mysql_connect(':/tmp/mysql', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);

    // 2. yol: localhost ile
    $link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    echo 'Başarıyla bağlandı';
    mysql_close($link);
    ?>

### Notlar

> Bilginize: Sunucu olarak "localhost" veya "localhost:port" belirttiğinizde, MySQL istemci kütüphanesi bunu geçersiz kılar ve yerel bir sokete (Windows'ta boru hattı (pipe) denir) bağlanmaya çalışır. TCP/IP kullanılmak istenirse, "localhost" yerine "127.0.0.1" kullanılır. Eğer MySQL istemci kütüphanesi yanlış bir yerel sokete bağlanmaya çalışırsa, doğru yolun php.ini dosyasında mysql.default_host yönergesine atanması ve sunucu alanının boş bırakılması gerekir.

> Bilginize: Sunucuya bağlantı, eğer daha önceden mysql_close() kullanılarak kapatılmadıysa, betiğin çalışması biter bitmez kapatılır.

> Bilginize: "Can't create TCP/IP socket (10106)" hatası genellikle variables_order yapılandırma yönergesinin `E` harfini içermediği anlamına gelir. Windows'ta, ortam kopyalanmadıysa `SYSTEMROOT` ortam değişkeni kullanılamaz ve PHP Winsock'u yüklerken sorun yaşar.

### Ayrıca Bakınız

- mysql_pconnect() - Open a persistent connection to a MySQL server
- mysql_close() - MySQL bağlantısını kapatır

# mysql_create_db

(PHP 4, PHP 5)

mysql_create_db — Bir MySQL veritabanı oluşturur

Uyarı

PHP 4.3.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- mysqli_query()
- PDO::query()

### Açıklama

function mysql_create_db(string `$veritabanı_adı`, resource `$bağlantı_belirteci` = `null`): bool

mysql_create_db() verilen bağlantı belirteci ile ilişkili sunucuda yeni bir veritabanı oluşturmaya çalışır.

### Bağımsız Değişkenler

`veritabanı_adı`
  Oluşturulacak veritabanının adı.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - mysql_create_db() yerine kullanılacak kod örneği

mysql_create_db() işlevinin kullanımı önerilmemektedir. Bunun yerine `CREATE DATABASE` deyimini çalıştırmak için mysql_query() kullanmak tercih edilebilir.

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }

    $sql = 'CREATE DATABASE benim_vt';
    if (mysql_query($sql, $link)) {
        echo "benim_vt veritabanı başarıyla oluşturuldu\n";
    } else {
        echo 'veritabanı oluşturulurken hata: ' . mysql_error() . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    benim_vt veritabanı başarıyla oluşturuldu

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_createdb()

> Bilginize: Eğer MySQL eklentisi MySQL 4.x istemci kütüphanesini kullanacak şekilde derlendiyse bu işlev kullanılamaz.

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query
- mysql_select_db() - Bir MySQL veritabanı seçer

# mysql_data_seek

(PHP 4, PHP 5)

mysql_data_seek — Move internal result pointer

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_data_seek()
- `PDO::FETCH_ORI_ABS`

### Açıklama

function mysql_data_seek(resource `$result`, int `$row_number`): bool

mysql_data_seek() moves the internal row pointer of the MySQL result associated with the specified result identifier to point to the specified row number. The next call to a MySQL fetch function, such as mysql_fetch_assoc(), would return that row.

`row_number` starts at 0. The `row_number` should be a value in the range from 0 to mysql_num_rows() - 1. However if the result set is empty (mysql_num_rows() == 0), a seek to 0 will fail with an `E_WARNING` and mysql_data_seek() will return `false`.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`row_number`
  The desired row number of the new result pointer.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysql_data_seek() example

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    $db_selected = mysql_select_db('sample_db');
    if (!$db_selected) {
        die('Could not select database: ' . mysql_error());
    }
    $query = 'SELECT last_name, first_name FROM friends';
    $result = mysql_query($query);
    if (!$result) {
        die('Query failed: ' . mysql_error());
    }
    /* fetch rows in reverse order */
    for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) {
        if (!mysql_data_seek($result, $i)) {
            echo "Cannot seek to row $i: " . mysql_error() . "\n";
            continue;
        }

        if (!($row = mysql_fetch_assoc($result))) {
            continue;
        }

        echo $row['last_name'] . ' ' . $row['first_name'] . "<br />\n";
    }

    mysql_free_result($result);
    ?>

### Notlar

> Bilginize: The function mysql_data_seek() can be used in conjunction only with mysql_query(), not with mysql_unbuffered_query().

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query
- mysql_num_rows() - Sonuçtaki satır sayısını al
- mysql_fetch_row() - Get a result row as an enumerated array
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_object() - Fetch a result row as an object

# mysql_db_name

(PHP 4, PHP 5)

mysql_db_name — mysql_list_dbs() çağrısından veritabanı adını alır

### Açıklama

function mysql_db_name(resource `$sonuç`, int `$satır`, mixed `$alan` = `null`): string

mysql_list_dbs() çağrısı ile veritabanı adını alır.

### Bağımsız Değişkenler

`sonuç`
  Bir mysql_list_dbs() çağrısının sonuç göstericisi.
`satır`
  Sonuç kümesine indis.
`alan`
  Alan adı.

### Dönen Değerler

Başarı durumunda veritabanı adını, hata durumunda `false` döndürür. Eğer `false` döndürüldüyse, hatanın mahiyetini anlamak için mysql_error() işlevini kullanın.

### Örnekler

Örnek 1 - mysql_db_name() örneği

    <?php
    error_reporting(E_ALL);

    $link = mysql_connect('dbhost', 'kullanıcı', 'parola');
    $db_list = mysql_list_dbs($link);

    $i = 0;
    $bgl = mysql_num_rows($db_list);
    while ($i < $bgl) {
        echo mysql_db_name($db_list, $i) . "\n";
        $i++;
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_dbname()

### Ayrıca Bakınız

- mysql_list_dbs() - Bir MySQL sunucusundaki kullanılabilir veritabanlarını listeler
- mysql_tablename() - Alanın tablo adını al

# mysql_db_query

(PHP 4, PHP 5)

mysql_db_query — Veritabanını seçer ve bir sorgu çalıştırır

Uyarı

PHP 5.3.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- mysqli_select_db() ardından sorgu
- PDO::__construct()

### Açıklama

function mysql_db_query(string `$veritabanı`, string `$sorgu`, resource `$bağlantı_belirteci` = `null`): resource|bool

mysql_db_query() bir veritabanı seçip üzerinde bir sorgu çalıştırır.

### Bağımsız Değişkenler

`veritabanı`
  Seçilecek veritabanının adı.
`sorgu`
  MySQL sorgusu. Sorgunun içindeki verinin gerektiği gibi öncelenmesi gerekir.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda sorgu sonucuna olumlu bir MySQL sonuç göstericisi, hata durumunda `false` döndürür. Bu işlev `INSERT`/`UPDATE`/`DELETE` sorgularında da başarı/hata durumunu bildirmek için `true`/`false` döndürür.

### Örnekler

Örnek 1 - mysql_db_query() yerine kullanılabilecek kod örneği

    <?php

    if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
        echo 'mysql\'e bağlanamadı';
        exit;
    }

    if (!mysql_select_db('mysql_dbname', $link)) {
        echo 'Veritabanını seçemedi';
        exit;
    }

    $sql    = 'SELECT foo FROM bar WHERE id = 42';
    $result = mysql_query($sql, $link);

    if (!$result) {
        echo "Veritabanı hatası, veritabanını sorgulayamıyor\n";
        echo 'MySQL Hatası: ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_assoc($result)) {
        echo $row['foo'];
    }

    mysql_free_result($result);

    ?>

### Notlar

> Bilginize: Bu işlevin daha önce bağlandığınız veritabanına kendiliğinden geri DÖNMEDİĞİNE dikkat ediniz. Başka bir deyişle, bu işlevi başka bir veritabanında geçici olarak bir sql sorgusu çalıştırmak için kullanamazsınız, önceki veritabanına kendiniz dönmeniz gerekir. Kullanıcıların sorgularında `veritabanı.tablo` sözdizimini veya bu işlev yerine mysql_select_db() işlevini kullanmaları şiddetle tavsiye edilir.

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query
- mysql_select_db() - Bir MySQL veritabanı seçer

# mysql_drop_db

(PHP 4, PHP 5)

mysql_drop_db — Drop (delete) a MySQL database

Uyarı

PHP 4.3.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- Execute a `DROP DATABASE` query

### Açıklama

function mysql_drop_db(string `$database_name`, resource `$link_identifier` = NULL): bool

mysql_drop_db() attempts to drop (remove) an entire database from the server associated with the specified link identifier. This function is deprecated, it is preferable to use mysql_query() to issue an sql `DROP DATABASE` statement instead.

### Bağımsız Değişkenler

`database_name`
  The name of the database that will be deleted.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysql_drop_db() alternative example

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    $sql = 'DROP DATABASE my_db';
    if (mysql_query($sql, $link)) {
        echo "Database my_db was successfully dropped\n";
    } else {
        echo 'Error dropping database: ' . mysql_error() . "\n";
    }
    ?>

### Notlar

Uyarı

This function will not be available if the MySQL extension was built against a MySQL 4.x client library.

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_dropdb()

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query

# mysql_errno

(PHP 4, PHP 5)

mysql_errno — Returns the numerical value of the error message from previous MySQL operation

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_errno()
- PDO::errorCode()

### Açıklama

function mysql_errno(resource `$link_identifier` = NULL): int

Returns the error number from the last MySQL function.

Errors coming back from the MySQL database backend no longer issue warnings. Instead, use mysql_errno() to retrieve the error code. Note that this function only returns the error code from the most recently executed MySQL function (not including mysql_error() and mysql_errno()), so if you want to use it, make sure you check the value before calling another MySQL function.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Returns the error number from the last MySQL function, or `0` (zero) if no error occurred.

### Örnekler

Örnek 1 mysql_errno() example

    <?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password");

    if (!mysql_select_db("nonexistentdb", $link)) {
        echo mysql_errno($link) . ": " . mysql_error($link). "\n";
    }

    mysql_select_db("kossu", $link);
    if (!mysql_query("SELECT * FROM nonexistenttable", $link)) {
        echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1049: Unknown database 'nonexistentdb'
    1146: Table 'kossu.nonexistenttable' doesn't exist

### Ayrıca Bakınız

- mysql_error() - Returns the text of the error message from previous MySQL operation
- » MySQL error codes

# mysql_error

(PHP 4, PHP 5)

mysql_error — Returns the text of the error message from previous MySQL operation

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_error()
- PDO::errorInfo()

### Açıklama

function mysql_error(resource `$link_identifier` = NULL): string

Returns the error text from the last MySQL function. Errors coming back from the MySQL database backend no longer issue warnings. Instead, use mysql_error() to retrieve the error text. Note that this function only returns the error text from the most recently executed MySQL function (not including mysql_error() and mysql_errno()), so if you want to use it, make sure you check the value before calling another MySQL function.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Returns the error text from the last MySQL function, or `''` (empty string) if no error occurred.

### Örnekler

Örnek 1 mysql_error() example

    <?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb", $link);
    echo mysql_errno($link) . ": " . mysql_error($link). "\n";

    mysql_select_db("kossu", $link);
    mysql_query("SELECT * FROM nonexistenttable", $link);
    echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1049: Unknown database 'nonexistentdb'
    1146: Table 'kossu.nonexistenttable' doesn't exist

### Ayrıca Bakınız

- mysql_errno() - Returns the numerical value of the error message from previous MySQL operation
- » MySQL error codes

# mysql_escape_string

(PHP 4 >= 4.0.3, PHP 5)

mysql_escape_string — Escapes a string for use in a mysql_query

Uyarı

PHP 4.3.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- mysqli_escape_string()
- PDO::quote()

### Açıklama

function mysql_escape_string(string `$unescaped_string`): string

This function will escape the `unescaped_string`, so that it is safe to place it in a mysql_query(). This function is deprecated.

This function is identical to mysql_real_escape_string() except that mysql_real_escape_string() takes a connection handler and escapes the string according to the current character set. mysql_escape_string() does not take a connection argument and does not respect the current charset setting.

### Bağımsız Değişkenler

`unescaped_string`
  The string that is to be escaped.

### Dönen Değerler

Returns the escaped string.

### Örnekler

Örnek 1 mysql_escape_string() example

    <?php
    $item = "Zak's Laptop";
    $escaped_item = mysql_escape_string($item);
    printf("Escaped string: %s\n", $escaped_item);
    ?>

Yukarıdaki örneğin çıktısı:

    Escaped string: Zak\'s Laptop

### Notlar

> Bilginize: mysql_escape_string() does not escape `%` and `_`.

### Ayrıca Bakınız

- mysql_real_escape_string() - Escapes special characters in a string for use in an SQL statement

# mysql_fetch_array

(PHP 4, PHP 5)

mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_array()
- PDOStatement::fetch()

### Açıklama

function mysql_fetch_array(resource `$result`, int `$result_type` = MYSQL_BOTH): array

Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`result_type`
  The type of array that is to be fetched. It's a constant and can take the following values: `MYSQL_ASSOC`, `MYSQL_NUM`, and `MYSQL_BOTH`.

### Dönen Değerler

Returns an array of strings that corresponds to the fetched row, or `false` if there are no more rows. The type of returned array depends on how `result_type` is defined. By using `MYSQL_BOTH` (default), you'll get an array with both associative and number indices. Using `MYSQL_ASSOC`, you only get associative indices (as mysql_fetch_assoc() works), using `MYSQL_NUM`, you only get number indices (as mysql_fetch_row() works).

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use the numeric index of the column or make an alias for the column. For aliased columns, you cannot access the contents with the original column name.

### Örnekler

Örnek 1 Query with aliased duplicate field names

    SELECT table1.field AS foo, table2.field AS bar FROM table1, table2

Örnek 2 mysql_fetch_array() with `MYSQL_NUM`

    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        printf("ID: %s  Name: %s", $row[0], $row[1]);
    }

    mysql_free_result($result);
    ?>

Örnek 3 mysql_fetch_array() with `MYSQL_ASSOC`

    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        printf("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysql_free_result($result);
    ?>

Örnek 4 mysql_fetch_array() with `MYSQL_BOTH`

    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysql_free_result($result);
    ?>

### Notlar

> Bilginize: Performance
> An important thing to note is that using mysql_fetch_array() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Ayrıca Bakınız

- mysql_fetch_row() - Get a result row as an enumerated array
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_data_seek() - Move internal result pointer
- mysql_query() - Send a MySQL query

# mysql_fetch_assoc

(PHP 4 >= 4.0.3, PHP 5)

mysql_fetch_assoc — Fetch a result row as an associative array

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_assoc()
- PDOStatement::fetch() with `mode` as `PDO::FETCH_ASSOC`

### Açıklama

function mysql_fetch_assoc(resource `$result`): array

Returns an associative array that corresponds to the fetched row and moves the internal data pointer ahead. mysql_fetch_assoc() is equivalent to calling mysql_fetch_array() with MYSQL_ASSOC for the optional second parameter. It only returns an associative array.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Returns an associative array of strings that corresponds to the fetched row, or `false` if there are no more rows.

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using mysql_fetch_row() or add alias names. See the example at the mysql_fetch_array() description about aliases.

### Örnekler

Örnek 1 An expanded mysql_fetch_assoc() example

    <?php

    $conn = mysql_connect("localhost", "mysql_user", "mysql_password");

    if (!$conn) {
        echo "Unable to connect to DB: " . mysql_error();
        exit;
    }

    if (!mysql_select_db("mydbname")) {
        echo "Unable to select mydbname: " . mysql_error();
        exit;
    }

    $sql = "SELECT id as userid, fullname, userstatus
            FROM   sometable
            WHERE  userstatus = 1";

    $result = mysql_query($sql);

    if (!$result) {
        echo "Could not successfully run query ($sql) from DB: " . mysql_error();
        exit;
    }

    if (mysql_num_rows($result) == 0) {
        echo "No rows found, nothing to print so am exiting";
        exit;
    }

    // While a row of data exists, put that row in $row as an associative array
    // Note: If you're expecting just one row, no need to use a loop
    // Note: If you put extract($row); inside the following loop, you'll
    //       then create $userid, $fullname, and $userstatus
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["userid"];
        echo $row["fullname"];
        echo $row["userstatus"];
    }

    mysql_free_result($result);

    ?>

### Notlar

> Bilginize: Performance
> An important thing to note is that using mysql_fetch_assoc() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Ayrıca Bakınız

- mysql_fetch_row() - Get a result row as an enumerated array
- mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- mysql_data_seek() - Move internal result pointer
- mysql_query() - Send a MySQL query
- mysql_error() - Returns the text of the error message from previous MySQL operation

# mysql_fetch_field

(PHP 4, PHP 5)

mysql_fetch_field — Get column information from a result and return as an object

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field()
- PDOStatement::getColumnMeta()

### Açıklama

function mysql_fetch_field(resource `$result`, int `$field_offset` = 0): object

Returns an object containing field information. This function can be used to obtain information about fields in the provided query result.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`field_offset`
  The numerical field offset. If the field offset is not specified, the next field that was not yet retrieved by this function is retrieved. The `field_offset` starts at `0`.

### Dönen Değerler

Returns an object containing field information. The properties of the object are:

- name - column name
- table - name of the table the column belongs to, which is the alias name if one is defined
- max_length - maximum length of the column
- not_null - 1 if the column cannot be `null`
- primary_key - 1 if the column is a primary key
- unique_key - 1 if the column is a unique key
- multiple_key - 1 if the column is a non-unique key
- numeric - 1 if the column is numeric
- blob - 1 if the column is a BLOB
- type - the type of the column
- unsigned - 1 if the column is unsigned
- zerofill - 1 if the column is zero-filled

### Örnekler

Örnek 1 mysql_fetch_field() example

    <?php
    $conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$conn) {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db('database');
    $result = mysql_query('select * from table');
    if (!$result) {
        die('Query failed: ' . mysql_error());
    }
    /* get column metadata */
    $i = 0;
    while ($i < mysql_num_fields($result)) {
        echo "Information for column $i:<br />\n";
        $meta = mysql_fetch_field($result, $i);
        if (!$meta) {
            echo "No information available<br />\n";
        }
        echo "<pre>
    blob:         $meta->blob
    max_length:   $meta->max_length
    multiple_key: $meta->multiple_key
    name:         $meta->name
    not_null:     $meta->not_null
    numeric:      $meta->numeric
    primary_key:  $meta->primary_key
    table:        $meta->table
    type:         $meta->type
    unique_key:   $meta->unique_key
    unsigned:     $meta->unsigned
    zerofill:     $meta->zerofill
    </pre>";
        $i++;
    }
    mysql_free_result($result);
    ?>

### Notlar

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: If field or tablenames are aliased in the SQL query the aliased name will be returned. The original name can be retrieved for instance by using mysqli_result::fetch_field().

### Ayrıca Bakınız

- mysql_field_seek() - Sonuç göstericisini belirtilen alan konumuna ayarla

# mysql_fetch_lengths

(PHP 4, PHP 5)

mysql_fetch_lengths — Bir sonuçtaki her bir çıktının uzunluğunu al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_lengths()
- PDOStatement::getColumnMeta()

### Açıklama

function mysql_fetch_lengths(resource `$sonuç`): array|false

MySQL'den çekilen son satırdaki alanların uzunluklarını içeren bir dizi döndürür.

mysql_fetch_lengths() işlevi, mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() ve mysql_fetch_object() tarafından döndürülen son satırdaki her bir sonuç sütununun uzunluğunu ilk elemanının indisi 0 olan bir dizide döndürür.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Başarı durumunda bir uzunluklar dizisi, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_fetch_lengths() örneği

    <?php
    $result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$result) {
        echo 'Sorgu çalıştırılamadı: ' . mysql_error();
        exit;
    }
    $row     = mysql_fetch_assoc($result);
    $lengths = mysql_fetch_lengths($result);

    print_r($row);
    print_r($lengths);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [id] => 42
        [email] => user@example.com
    )
    Array
    (
        [0] => 2
        [1] => 16
    )

### Ayrıca Bakınız

- mysql_field_len() - Belirtilen alanın uzunluğunu döndürür
- mysql_fetch_row() - Get a result row as an enumerated array
- strlen() - Dizge uzunluğunu döndürür

# mysql_fetch_object

(PHP 4, PHP 5)

mysql_fetch_object — Fetch a result row as an object

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_object()
- PDOStatement::fetch() with `mode` as `PDO::FETCH_OBJ`

### Açıklama

function mysql_fetch_object(resource `$result`, string `$class_name` = ?, array `$params` = ?): object

Returns an object with properties that correspond to the fetched row and moves the internal data pointer ahead.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`class_name`
  The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.
`params`
  An optional array of parameters to pass to the constructor for `class_name` objects.

### Dönen Değerler

Returns an object with string properties that correspond to the fetched row, or `false` if there are no more rows.

### Örnekler

Örnek 1 mysql_fetch_object() example

    <?php
    mysql_connect("hostname", "user", "password");
    mysql_select_db("mydb");
    $result = mysql_query("select * from mytable");
    while ($row = mysql_fetch_object($result)) {
        echo $row->user_id;
        echo $row->fullname;
    }
    mysql_free_result($result);
    ?>

Örnek 2 mysql_fetch_object() example

    <?php
    class foo {
        public $name;
    }

    mysql_connect("hostname", "user", "password");
    mysql_select_db("mydb");

    $result = mysql_query("select name from mytable limit 1");
    $obj = mysql_fetch_object($result, 'foo');
    var_dump($obj);
    ?>

### Notlar

> Bilginize: Performance
> Speed-wise, the function is identical to mysql_fetch_array(), and almost as quick as mysql_fetch_row() (the difference is insignificant).

> Bilginize: mysql_fetch_object() is similar to mysql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Ayrıca Bakınız

- mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_fetch_row() - Get a result row as an enumerated array
- mysql_data_seek() - Move internal result pointer
- mysql_query() - Send a MySQL query

# mysql_fetch_row

(PHP 4, PHP 5)

mysql_fetch_row — Get a result row as an enumerated array

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_row()
- PDOStatement::fetch() with `mode` as `PDO::FETCH_NUM`

### Açıklama

function mysql_fetch_row(resource `$result`): array

Returns a numerical array that corresponds to the fetched row and moves the internal data pointer ahead.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Returns an numerical array of strings that corresponds to the fetched row, or `false` if there are no more rows.

mysql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.

### Örnekler

Örnek 1 Fetching one row with mysql_fetch_row()

    <?php
    $result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$result) {
        echo 'Could not run query: ' . mysql_error();
        exit;
    }
    $row = mysql_fetch_row($result);

    echo $row[0]; // 42
    echo $row[1]; // the email value
    ?>

### Notlar

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Ayrıca Bakınız

- mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_fetch_object() - Fetch a result row as an object
- mysql_data_seek() - Move internal result pointer
- mysql_fetch_lengths() - Bir sonuçtaki her bir çıktının uzunluğunu al
- mysql_result() - Get result data

# mysql_field_flags

(PHP 4, PHP 5)

mysql_field_flags — Get the flags associated with the specified field in a result

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field_direct() [flags]
- PDOStatement::getColumnMeta() [flags]

### Açıklama

function mysql_field_flags(resource `$result`, int `$field_offset`): string|false

mysql_field_flags() returns the field flags of the specified field. The flags are reported as a single word per flag separated by a single space, so that you can split the returned value using explode().

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Returns a string of flags associated with the result başarısızlık durumunda `false` döner.

The following flags are reported, if your version of MySQL is current enough to support them: `"not_null"`, `"primary_key"`, `"unique_key"`, `"multiple_key"`, `"blob"`, `"unsigned"`, `"zerofill"`, `"binary"`, `"enum"`, `"auto_increment"` and `"timestamp"`.

### Örnekler

Örnek 1 A mysql_field_flags() example

    <?php
    $result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$result) {
        echo 'Could not run query: ' . mysql_error();
        exit;
    }
    $flags = mysql_field_flags($result, 0);

    echo $flags;
    print_r(explode(' ', $flags));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    not_null primary_key auto_increment
    Array
    (
        [0] => not_null
        [1] => primary_key
        [2] => auto_increment
    )

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_fieldflags()

### Ayrıca Bakınız

- mysql_field_type() - Get the type of the specified field in a result
- mysql_field_len() - Belirtilen alanın uzunluğunu döndürür

# mysql_field_len

(PHP 4, PHP 5)

mysql_field_len — Belirtilen alanın uzunluğunu döndürür

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field_direct() [length]
- PDOStatement::getColumnMeta() [len]

### Açıklama

function mysql_field_len(resource `$result`, int `$alan_konumu`): int|false

mysql_field_len() işlevi, belirtilen alanın uzunluğunu döndürür.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda indisi belirtilen alanın uzunluğu, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_field_len() örneği

    <?php
    $result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$result) {
        echo 'Sorgu çalıştırılamadı: ' . mysql_error();
        exit;
    }

    // id alanının veritabanı yapısında belirtilen uzunluğu
    $uzunluk = mysql_field_len($result, 0);
    echo $uzunluk;
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_fieldlen()

### Ayrıca Bakınız

- mysql_fetch_lengths() - Bir sonuçtaki her bir çıktının uzunluğunu al
- strlen() - Dizge uzunluğunu döndürür

# mysql_field_name

(PHP 4, PHP 5)

mysql_field_name — Get the name of the specified field in a result

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field_direct() [name] or [orgname]
- PDOStatement::getColumnMeta() [name]

### Açıklama

function mysql_field_name(resource `$result`, int `$field_offset`): string|false

mysql_field_name() returns the name of the specified field index.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

The name of the specified field index on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mysql_field_name() example

    <?php
    /* The users table consists of three fields:
     *   user_id
     *   username
     *   password.
     */
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect to MySQL server: ' . mysql_error());
    }
    $dbname = 'mydb';
    $db_selected = mysql_select_db($dbname, $link);
    if (!$db_selected) {
        die("Could not set $dbname: " . mysql_error());
    }
    $res = mysql_query('select * from users', $link);

    echo mysql_field_name($res, 0) . "\n";
    echo mysql_field_name($res, 2);
    ?>

Yukarıdaki örneğin çıktısı:

    user_id
    password

### Notlar

> Bilginize: Bu işlevden dönen alan isimlerinin harf büyüklüklerinde değişiklik yapılmaz.

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_fieldname()

### Ayrıca Bakınız

- mysql_field_type() - Get the type of the specified field in a result
- mysql_field_len() - Belirtilen alanın uzunluğunu döndürür

# mysql_field_seek

(PHP 4, PHP 5)

mysql_field_seek — Sonuç göstericisini belirtilen alan konumuna ayarla

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_field_seek()
- `göst_yönü` ve `göst_başlangıcı` bağımsız değişkenleri kullanılarak PDOStatement::fetch()

### Açıklama

function mysql_field_seek(resource `$sonuç`, int `$alan_konumu`): bool

Belirtilen göreli alan konumuna gider. Eğer mysql_fetch_field() işlevinin sonraki çağrısı göreli bir alan konumu içermiyorsa, mysql_field_seek() işlevinde belirtilen göreli alan konumu döndürülür.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mysql_fetch_field() - Get column information from a result and return as an object

# mysql_field_table

(PHP 4, PHP 5)

mysql_field_table — Belirtilen alanı içeren tablonun adını al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field_direct() [table] veya [orgtable]
- PDOStatement::getColumnMeta() [table]

### Açıklama

function mysql_field_table(resource `$sonuç`, int `$alan_konumu`): string

Belirtilen alanı içeren tablonun adını döndürür.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda tablonun adı.

### Örnekler

Örnek 1 - mysql_field_table() örneği

    <?php

    $sorgu = "SELECT account.*, country.* FROM account, country " .
             "WHERE country.name = 'Portugal' AND account.country_id = country.id";

    // Veritabanından sonucu al
    $sonuc = mysql_query($sorgu);

    // Önce tablo adını sonra alan adını listele
    for ($i = 0; $i < mysql_num_fields($sonuc); ++$i) {
        $tablo = mysql_field_table($sonuc, $i);
        $alan = mysql_field_name($sonuc, $i);

        echo  "$tablo: $alan\n";
    }

    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_fieldtable()

### Ayrıca Bakınız

- mysql_list_tables() - Bir MySQL veritabanındaki tabloları listele

# mysql_field_type

(PHP 4, PHP 5)

mysql_field_type — Get the type of the specified field in a result

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_fetch_field_direct() [type]
- PDOStatement::getColumnMeta() [driver:decl_type] or [pdo_type]

### Açıklama

function mysql_field_type(resource `$result`, int `$field_offset`): string

mysql_field_type() is similar to the mysql_field_name() function. The arguments are identical, but the field type is returned instead.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`alan_konumu`

  Alanın sayısal konumu. `0`'dan başlar. Eğer bir alan konumu yoksa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

The returned field type will be one of `"int"`, `"real"`, `"string"`, `"blob"`, and others as detailed in the » MySQL documentation.

### Örnekler

Örnek 1 mysql_field_type() example

    <?php
    mysql_connect("localhost", "mysql_username", "mysql_password");
    mysql_select_db("mysql");
    $result = mysql_query("SELECT * FROM func");
    $fields = mysql_num_fields($result);
    $rows   = mysql_num_rows($result);
    $table  = mysql_field_table($result, 0);
    echo "Your '" . $table . "' table has " . $fields . " fields and " . $rows . " record(s)\n";
    echo "The table has the following fields:\n";
    for ($i=0; $i < $fields; $i++) {
        $type  = mysql_field_type($result, $i);
        $name  = mysql_field_name($result, $i);
        $len   = mysql_field_len($result, $i);
        $flags = mysql_field_flags($result, $i);
        echo $type . " " . $name . " " . $len . " " . $flags . "\n";
    }
    mysql_free_result($result);
    mysql_close();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Your 'func' table has 4 fields and 1 record(s)
    The table has the following fields:
    string name 64 not_null primary_key binary
    int ret 1 not_null
    string dl 128 not_null
    string type 9 not_null enum

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_fieldtype()

### Ayrıca Bakınız

- mysql_field_name() - Get the name of the specified field in a result
- mysql_field_len() - Belirtilen alanın uzunluğunu döndürür

# mysql_free_result

(PHP 4, PHP 5)

mysql_free_result — Sonuç belleğini serbest bırakır

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_free_result()
- PDOStatement::closeCursor() yöntemine veya PDO nesnesine `null` değerini atar

### Açıklama

function mysql_free_result(resource `$sonuç`): bool

mysql_free_result() işlevi, `sonuç` sonuç göstericisine ayrılan belleği serbest bırakır.

mysql_free_result()'ın sadece büyük sonuç kümeleri döndüren sorgularda kullanılan bellek miktarını önemsiyorsanız kullanılması gerekmektedir. Sonuç belleği, betiğin çalışması sona erdiğinde otomatik olarak serbest bırakılır.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Eğer belirtilen `sonuç` bağımsız değişkeni resource türünde değilse, E_WARNING seviyesinde bir hata oluşacaktır. mysql_query() işlevinin SELECT, SHOW, EXPLAIN ve DESCRIBE sorguları için resource türünde tek bir sonuç döndürdüğünü bilmenizde yarar var.

### Örnekler

Örnek 1 - mysql_free_result() örneği

    <?php
    $sonuç = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$sonuç) {
        echo 'Sorgu çalıştırılamadı: ' . mysql_error();
        exit;
    }
    /* Sonucu kullandıktan sonra onunla işimizin bittiğini varsayıyoruz */
    $row = mysql_fetch_assoc($sonuç);

    /* Şimdi sonucu serbest bırakıyoruz ve betiğimize devam ediyoruz */
    mysql_free_result($sonuç);

    echo $row['id'];
    echo $row['email'];
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_freeresult()

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query
- is_resource() - Değişken resource türünde mi diye bakar

# mysql_get_client_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_client_info — MySQL istemci sürüm bilgisini al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_get_client_info()
- `isim` özniteliği için `PDO::ATTR_CLIENT_VERSION` kullanarak PDOStatement::getAttribute()

### Açıklama

function mysql_get_client_info(): string

mysql_get_client_info() istemci kütüphane sürümünü bildiren bir dizge döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

MySQL istemci sürümü.

### Örnekler

Örnek 1 - mysql_get_client_info() örneği

    <?php
    printf("MySQL istemci sürümü: %s\n", mysql_get_client_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    MySQL istemci sürümü: 3.23.39

### Ayrıca Bakınız

- mysql_get_host_info() - MySQL konak bilgisini al
- mysql_get_proto_info() - MySQL protokol sürüm bilgisini al
- mysql_get_server_info() - MySQL sunucu bilgisini al

# mysql_get_host_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_host_info — MySQL konak bilgisini al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_get_host_info()
- `isim` özniteliği için `PDO::ATTR_CONNECTION_STATUS` kullanarak PDOStatement::getAttribute()

### Açıklama

function mysql_get_host_info(resource `$bağlantı_belirteci` = `null`): string|false

Bağlantı için kullanılmakta olan bağlantının türünü ve sunucunun konak adını döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda bağlantı için kullanılmakta olan MySQL bağlantısının türünü içeren bir dizge, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_get_host_info() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    printf("MySQL konak bilgisi: %s\n", mysql_get_host_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    MySQL konak bilgisi: Localhost via UNIX socket

### Ayrıca Bakınız

- mysql_get_client_info() - MySQL istemci sürüm bilgisini al
- mysql_get_proto_info() - MySQL protokol sürüm bilgisini al
- mysql_get_server_info() - MySQL sunucu bilgisini al

# mysql_get_proto_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_proto_info — MySQL protokol sürüm bilgisini al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_get_proto_info()

### Açıklama

function mysql_get_proto_info(resource `$bağlantı_belirteci` = `null`): int|false

MySQL protokol sürümünü döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda MySQL protokol sürümünü, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_get_proto_info() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    printf("MySQL protokol sürümü: %s\n", mysql_get_proto_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    MySQL protokol sürümü: 10

### Ayrıca Bakınız

- mysql_get_client_info() - MySQL istemci sürüm bilgisini al
- mysql_get_host_info() - MySQL konak bilgisini al
- mysql_get_server_info() - MySQL sunucu bilgisini al

# mysql_get_server_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_server_info — MySQL sunucu bilgisini al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_get_server_info()
- `isim` özniteliği için `PDO::ATTR_SERVER_VERSION` kullanarak PDOStatement::getAttribute()

### Açıklama

function mysql_get_server_info(resource `$bağlantı_belirteci` = `null`): string|false

MySQL sunucu sürümünü döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda MySQL sunucu sürümünü, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_get_server_info() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');
    if (!$link) {
        die('Bağlanamadı: ' . mysql_error());
    }
    printf("MySQL sunucu sürümü: %s\n", mysql_get_server_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    MySQL sunucu sürümü: 4.0.1-alpha

### Ayrıca Bakınız

- mysql_get_client_info() - MySQL istemci sürüm bilgisini al
- mysql_get_host_info() - MySQL konak bilgisini al
- mysql_get_proto_info() - MySQL protokol sürüm bilgisini al
- phpversion() - Çalışan PHP'nin sürümünü döndürür

# mysql_info

(PHP 4 >= 4.3.0, PHP 5)

mysql_info — En son sorgu hakkında bilgi al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_info()

### Açıklama

function mysql_info(resource `$bağlantı_belirteci` = `null`): string

Son sorgu hakkında ayrıntılı bilgi döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda ifade ile ilgili bilgi, hata durumunda `false` döndürür. Hangi deyimlerin ne değer döndürdüğünü görmek için aşağıdaki örneğe bakın. Burada listelenmemiş deyimler `false` döndürecektir.

### Örnekler

Örnek 1 - İlgili MySQL Deyimleri

Dizge döndüren deyimler. Sayılar sadece betimleme amaçlıdır; yani, değerleri sorguya göre olacaktır.

    INSERT INTO ... SELECT ...
    String format: Records: 23 Duplicates: 0 Warnings: 0
    INSERT INTO ... VALUES (...),(...),(...)...
    String format: Records: 37 Duplicates: 0 Warnings: 0
    LOAD DATA INFILE ...
    String format: Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
    ALTER TABLE
    String format: Records: 60 Duplicates: 0 Warnings: 0
    UPDATE
    String format: Rows matched: 65 Changed: 65 Warnings: 0

### Notlar

> Bilginize: mysql_info() işlevi, INSERT ... VALUES deyimi için sadece ve sadece deyimde birden fazla değer listesi belirtildiği takdirde `false` dışında bir değer döndürecektir.

### Ayrıca Bakınız

- mysql_affected_rows() - Önceki MySQL işleminde etkilenen satırların sayısını al
- mysql_insert_id() - Get the ID generated in the last query
- mysql_stat() - Geçerli sunucu durumunu döndürür

# mysql_insert_id

(PHP 4, PHP 5)

mysql_insert_id — Get the ID generated in the last query

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_insert_id()
- PDO::lastInsertId()

### Açıklama

function mysql_insert_id(resource `$link_identifier` = NULL): int

Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT).

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

The ID generated for an AUTO_INCREMENT column by the previous query on success, `0` if the previous query does not generate an AUTO_INCREMENT value, or `false` if no MySQL connection was established.

### Örnekler

Örnek 1 mysql_insert_id() example

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db('mydb');

    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf("Last inserted record has id %d\n", mysql_insert_id());
    ?>

### Notlar

Dikkat

mysql_insert_id() will convert the return type of the native MySQL C API function `mysql_insert_id()` to a type of `long` (named int in PHP). If your AUTO_INCREMENT column has a column type of BIGINT (64 bits) the conversion may result in an incorrect value. Instead, use the internal MySQL SQL function LAST_INSERT_ID() in an SQL query. For more information about PHP's maximum integer values, please see the integer documentation.

> Bilginize: Because mysql_insert_id() acts on the last performed query, be sure to call mysql_insert_id() immediately after the query that generates the value.

> Bilginize: The value of the MySQL SQL function `LAST_INSERT_ID()` always contains the most recently generated AUTO_INCREMENT value, and is not reset between queries.

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query
- mysql_info() - En son sorgu hakkında bilgi al

# mysql_list_dbs

(PHP 4, PHP 5)

mysql_list_dbs — Bir MySQL sunucusundaki kullanılabilir veritabanlarını listeler

Uyarı

PHP 5.4.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- SQL Sorgusu: `SHOW DATABASES`

### Açıklama

function mysql_list_dbs(resource `$bağlantı_belirteci` = `null`): resource

MySQL sunucusundaki kullanılabilir veritabanlarını içeren bir sonuç göstericisi döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda resource türünde bir sonuç göstericisi, hata durumunda `false` döndürür. Bu sonuç göstericisinin veya mysql_fetch_array() gibi sonuç tabloları üreten bir işlevden elde edilen işlevselliğin tersini elde etmek için mysql_tablename() işlevini kullanın.

### Örnekler

Örnek 1 - mysql_list_dbs() kullanmama örneği

    <?php
    // mysql_list_dbs() olmaksızın kullanım
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $res = mysql_query("SHOW DATABASES");

    while ($row = mysql_fetch_assoc($res)) {
        echo $row['Database'] . "\n";
    }

    // PHP 5.4.0 itibariyle önerilmiyor
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');
    $db_list = mysql_list_dbs($link);

    while ($row = mysql_fetch_object($db_list)) {
         echo $row->Database . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    database1
    database2
    database3

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_listdbs()

### Ayrıca Bakınız

- mysql_db_name() - mysql_list_dbs çağrısından veritabanı adını alır
- mysql_select_db() - Bir MySQL veritabanı seçer

# mysql_list_fields

(PHP 4, PHP 5)

mysql_list_fields — MySQL tablosunun alanlarını listeler

Uyarı

PHP 5.4.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- SQL Sorgusu: `SHOW COLUMNS FROM tablo_adı`

### Açıklama

function mysql_list_fields(string `$veritabanı_adı`, string `$tablo_adı`, resource `$bağlantı_belirteci` = `null`): resource

Verilen tablo hakkındaki bilgileri alır.

Bu işlevin kullanımı önerilmemektedir. Bunun yerine, `SHOW COLUMNS FROM table [LIKE 'ad']` şeklinde bir ifade çalıştırmak için mysql_query() işlevini kullanmak tercih edilebilir.

### Bağımsız Değişkenler

`veritabanı_adı`
  Sorgulanan veritabanının adı.
`tablo_adı`
  Sorgulanan tablonun adı.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda resource türünde bir sonuç göstericisi, hata durumunda `false` döndürür.

Döndürülen sonuç mysql_field_flags(), mysql_field_len(), mysql_field_name() ve mysql_field_type() ile kullanılabilir.

### Örnekler

Örnek 1 - mysql_list_fields() yerine kullanılabilecek kod örneği

    <?php
    $sonuç = mysql_query("SHOW COLUMNS FROM birtablo");
    if (!$sonuç) {
        echo 'Sorguyu çalıştıramadı: ' . mysql_error();
        exit;
    }
    if (mysql_num_rows($sonuç) > 0) {
        while ($satır = mysql_fetch_assoc($sonuç)) {
            print_r($satır);
        }
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [Field] => id
        [Type] => int(7)
        [Null] =>
        [Key] => PRI
        [Default] =>
        [Extra] => auto_increment
    )
    Array
    (
        [Field] => email
        [Type] => varchar(100)
        [Null] =>
        [Key] =>
        [Default] =>
        [Extra] =>
    )

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_listfields()

### Ayrıca Bakınız

- mysql_field_flags() - Get the flags associated with the specified field in a result
- mysql_info() - En son sorgu hakkında bilgi al

# mysql_list_processes

(PHP 4 >= 4.3.0, PHP 5)

mysql_list_processes — MySQL süreçlerini listeler

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_thread_id()

### Açıklama

function mysql_list_processes(resource `$bağlantı_belirteci` = `null`): resource|false

Geçerli MySQL sunucu evrelerini alır.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda resource türünde bir sonuç göstericisi, hata durumunda `false` döner.

### Örnekler

Örnek 1 - mysql_list_processes() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_parolası');

    $result = mysql_list_processes($link);
    while ($row = mysql_fetch_assoc($result)){
        printf("%s %s %s %s %s\n", $row["Id"], $row["Host"], $row["db"],
            $row["Command"], $row["Time"]);
    }
    mysql_free_result($result);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1 localhost test Processlist 0
    4 localhost mysql sleep 5

### Ayrıca Bakınız

- mysql_thread_id() - Geçerli evre numarasını döndür
- mysql_stat() - Geçerli sunucu durumunu döndürür

# mysql_list_tables

(PHP 4, PHP 5)

mysql_list_tables — Bir MySQL veritabanındaki tabloları listele

Uyarı

PHP 4.3.0 itibariyle bu işlevin kullanımı önerilmemekte olup bu işlev ve özgün MySQL eklentisinin tamamı PHP 7.0.0 itibariyle kaldırılmıştır. Yerine, etkin olarak geliştirilmekte olan MySQLi veya PDO_MySQL extensions kullanılabilir. Ek bilgi: MySQL: Bir API Seçimi Bu işlev yerine kullanılabilecekler:

- SQL Sorgusu: `SHOW TABLES FROM veritabanı`

### Açıklama

function mysql_list_tables(string `$veritabanı`, resource `$bağlantı_belirteci` = `null`): resource|false

Bir MySQL veritabanından tabloların listesini alır.

Bu işlevin kullanımı önerilmemektedir. Bunun yerine, `SHOW TABLES [FROM db_adı] [LIKE 'şablon']` gibi bir SQL sorgusu çalıştırmak için mysql_query() işlevinin kullanımı tercih edilebilir.

### Bağımsız Değişkenler

`veritabanı`
  Veritabanının adı.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda resource türünde bir sonuç göstericisi, hata durumunda `false` döndürür.

Bu sonuç göstericisinin veya mysql_fetch_array() gibi sonuç tabloları üreten bir işlevden elde edilen işlevselliğin tersini elde etmek için mysql_tablename() işlevini kullanın.

### Örnekler

Örnek 1 - mysql_list_tables() yerine kullanılabilecek kod örneği

    <?php
    $dbname = 'mysql_dbname';

    if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
        echo 'mysql\'e bağlanılamadı';
        exit;
    }

    $sql = "SHOW TABLES FROM $dbname";
    $result = mysql_query($sql);

    if (!$result) {
        echo "Veritabanı hatası, tablolar listelenemedi\n";
        echo 'MySQL Hatası: ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_row($result)) {
        echo "Tablo: {$row[0]}\n";
    }

    mysql_free_result($result);
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_listtables()

### Ayrıca Bakınız

- mysql_list_dbs() - Bir MySQL sunucusundaki kullanılabilir veritabanlarını listeler
- mysql_tablename() - Alanın tablo adını al

# mysql_num_fields

(PHP 4, PHP 5)

mysql_num_fields — Sonuçtaki alan sayısını al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_num_fields()
- PDOStatement::columnCount()

### Açıklama

function mysql_num_fields(resource `$sonuç`): int|false

Bir sorgunun döndürdüğü alanların sayısını alır.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Başarı durumunda resource türündeki sonuç kümesinde bulunan alanların sayısını, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_num_fields() örneği

    <?php
    $result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
    if (!$result) {
        echo 'Sorgu çalıştırılamadı: ' . mysql_error();
        exit;
    }

    /* 2 döndürür, çünkü id,email === iki alan */
    echo mysql_num_fields($result);
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_numfields()

### Ayrıca Bakınız

- mysql_select_db() - Bir MySQL veritabanı seçer
- mysql_query() - Send a MySQL query
- mysql_fetch_field() - Get column information from a result and return as an object
- mysql_num_rows() - Sonuçtaki satır sayısını al

# mysql_num_rows

(PHP 4, PHP 5)

mysql_num_rows — Sonuçtaki satır sayısını al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_num_rows()
- mysqli_stmt_num_rows()
- PDOStatement::rowCount()

### Açıklama

function mysql_num_rows(resource `$sonuç`): int|false

Bir sonuç kümesinden satırların sayısını alır. Bu komut sadece SELECT veya SHOW gibi gerçek bir sonuç kümesi döndüren ifadeler için geçerlidir. INSERT, UPDATE, REPLACE veya DELETE sorgusundan etkilenen satırların sayısını almak için mysql_affected_rows() işlevini kullanın.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

### Dönen Değerler

Başarı durumunda sonuç kümesindeki satırların sayısını, hata durumunda `false` döndürür.

### Örnekler

Örnek 1 - mysql_num_rows() örneği

    <?php

    $link = mysql_connect("localhost", "mysql_user", "mysql_password");
    mysql_select_db("database", $link);

    $result = mysql_query("SELECT * FROM table1", $link);
    $num_rows = mysql_num_rows($result);

    echo "$num_rows Satır\n";

    ?>

### Notlar

> Bilginize: mysql_unbuffered_query() işlevini kullanırsanız, mysql_num_rows() sonuç kümesindeki bütün satırlar alınana kadar gerçek değeri döndürmez.

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_numrows()

### Ayrıca Bakınız

- mysql_affected_rows() - Önceki MySQL işleminde etkilenen satırların sayısını al
- mysql_connect() - MySQL Sunucusuna bir bağlantı açar
- mysql_data_seek() - Move internal result pointer
- mysql_select_db() - Bir MySQL veritabanı seçer
- mysql_query() - Send a MySQL query

# mysql_pconnect

(PHP 4, PHP 5)

mysql_pconnect — Open a persistent connection to a MySQL server

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_connect() with `p:` host prefix
- PDO::__construct() with `PDO::ATTR_PERSISTENT` as a driver option

### Açıklama

function mysql_pconnect(
string `$server` = ini_get("mysql.default_host"),
string `$username` = ini_get("mysql.default_user"),
string `$password` = ini_get("mysql.default_password"),
int `$client_flags` = 0
): resource

Establishes a persistent connection to a MySQL server.

mysql_pconnect() acts very much like mysql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).

This type of link is therefore called 'persistent'.

### Bağımsız Değişkenler

`server`
  The MySQL server. It can also include a port number. e.g. "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for the localhost. If the PHP directive mysql.default_host is undefined (default), then the default value is 'localhost:3306'
`username`
  The username. Default value is the name of the user that owns the server process.
`password`
  The password. Default value is an empty password.
`client_flags`
  The `client_flags` parameter can be a combination of the following constants: 128 (enable `LOAD DATA LOCAL` handling), `MYSQL_CLIENT_SSL`, `MYSQL_CLIENT_COMPRESS`, `MYSQL_CLIENT_IGNORE_SPACE` or `MYSQL_CLIENT_INTERACTIVE`.

### Dönen Değerler

Returns a MySQL persistent link identifier on success, or `false` on failure.

### Notlar

> Bilginize: Note, that these kind of links only work if you are using a module version of PHP. See the Persistent Database Connections section for more information.

Uyarı

Using persistent connections can require a bit of tuning of your Apache and MySQL configurations to ensure that you do not exceed the number of connections allowed by MySQL.

### Ayrıca Bakınız

- mysql_connect() - MySQL Sunucusuna bir bağlantı açar
- Persistent Database Connections

# mysql_ping

(PHP 4 >= 4.3.0, PHP 5)

mysql_ping — Bir sunucu bağlantısına ping at, bağlantı yoksa tekrar bağlan

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_ping()

### Açıklama

function mysql_ping(resource `$bağlantı_belirteci` = NULL): bool

Sunucuyla bağlantının çalışıp çalışmadığına bakar. Eğer bağlantı kesilmişse, otomatik olarak yeniden bağlanmaya çalışır. Bu işlev, uzun süre boş kalan betikler tarafından, sunucunun bağlantıyı kapatıp kapatmadığını denetlemek ve eğer kapattıysa tekrar bağlanmak için kullanılabilir.

> Bilginize: MySQL 5.0.13'ten itibaren otomatik olarak yeniden bağlanma özelliği öntanımlı olarak devre dışı bırakılmıştır.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

MySQL sunucusuyla bağlantı çalışıyorsa `true`, çalışmıyorsa `false` döndürür.

### Örnekler

Örnek 1 - mysql_ping() örneği

    <?php
    set_time_limit(0);

    $conn = mysql_connect('localhost', 'mysqluser', 'mypass');
    $db   = mysql_select_db('mydb');

    /* Bu sorgunun uzun süre alacağını varsayarak */
    $result = mysql_query($sql);
    if (!$result) {
        echo 'Sorgu #1 çalışmadı, çıkıyor.';
        exit;
    }

    /* Bağlantının hala canlı olduğundan emin ol, değilse tekrar bağlan */
    if (!mysql_ping($conn)) {
        echo 'Bağlantı kayboldu, sorgu #1\'den sonra çıkıyor';
        exit;
    }
    mysql_free_result($result);

    /* Bağlantı hala canlı olduğuna göre, başka bir sorgu çalıştıralım */
    $result2 = mysql_query($sql2);
    ?>

### Ayrıca Bakınız

- mysql_thread_id() - Geçerli evre numarasını döndür
- mysql_list_processes() - MySQL süreçlerini listeler

# mysql_query

(PHP 4, PHP 5)

mysql_query — Send a MySQL query

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_query()
- PDO::query()

### Açıklama

function mysql_query(string `$query`, resource `$link_identifier` = NULL): mixed

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified `link_identifier`.

### Bağımsız Değişkenler

`query`
  An SQL query The query string should not end with a semicolon. Data inside the query should be properly escaped.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or `false` on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns `true` on success or `false` on error.

The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.

Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

mysql_query() will also fail and return `false` if the user does not have permission to access the table(s) referenced by the query.

### Örnekler

Örnek 1 Invalid Query

The following query is syntactically invalid, so mysql_query() fails and returns `false`.

    <?php
    $result = mysql_query('SELECT * WHERE 1=1');
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }

    ?>

Örnek 2 Valid Query

The following query is valid, so mysql_query() returns a resource.

    <?php
    // This could be supplied by a user, for example
    $firstname = 'fred';
    $lastname  = 'fox';

    // Formulate Query
    // This is the best way to perform an SQL query
    // For more examples, see mysql_real_escape_string()
    $query = sprintf("SELECT firstname, lastname, address, age FROM friends
        WHERE firstname='%s' AND lastname='%s'",
        mysql_real_escape_string($firstname),
        mysql_real_escape_string($lastname));

    // Perform Query
    $result = mysql_query($query);

    // Check result
    // This shows the actual query sent to MySQL, and the error. Useful for debugging.
    if (!$result) {
        $message  = 'Invalid query: ' . mysql_error() . "\n";
        $message .= 'Whole query: ' . $query;
        die($message);
    }

    // Use result
    // Attempting to print $result won't allow access to information in the resource
    // One of the mysql result functions must be used
    // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
    while ($row = mysql_fetch_assoc($result)) {
        echo $row['firstname'];
        echo $row['lastname'];
        echo $row['address'];
        echo $row['age'];
    }

    // Free the resources associated with the result set
    // This is done automatically at the end of the script
    mysql_free_result($result);
    ?>

### Ayrıca Bakınız

- mysql_connect() - MySQL Sunucusuna bir bağlantı açar
- mysql_error() - Returns the text of the error message from previous MySQL operation
- mysql_real_escape_string() - Escapes special characters in a string for use in an SQL statement
- mysql_result() - Get result data
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_unbuffered_query() - Sonuç kümesi tamponlanmayan ve alınmayan bir SQL sorgusu gönderir

# mysql_real_escape_string

(PHP 4 >= 4.3.0, PHP 5)

mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_real_escape_string()
- PDO::quote()

### Açıklama

function mysql_real_escape_string(string `$unescaped_string`, resource `$link_identifier` = NULL): string

Escapes special characters in the `unescaped_string`, taking into account the current character set of the connection so that it is safe to place it in a mysql_query(). If binary data is to be inserted, this function must be used.

mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: `\x00`, `\n`, `\r`, `\`, `'`, `"` and `\x1a`.

This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.

Dikkat

# Security: the default character set

The character set must be set either at the server level, or with the API function mysql_set_charset() for it to affect mysql_real_escape_string(). See the concepts section on character sets for more information.

### Bağımsız Değişkenler

`unescaped_string`
  The string that is to be escaped.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Returns the escaped string, or `false` on error.

### Hatalar/İstisnalar

Executing this function without a MySQL connection present will also emit `E_WARNING` level PHP errors. Only execute this function with a valid MySQL connection present.

### Örnekler

Örnek 1 Simple mysql_real_escape_string() example

    <?php
    // Connect
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
        OR die(mysql_error());

    // Query
    $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
                mysql_real_escape_string($user),
                mysql_real_escape_string($password));
    ?>

Örnek 2 mysql_real_escape_string() requires a connection example

This example demonstrates what happens if a MySQL connection is not present when calling this function.

    <?php
    // We have not connected to MySQL

    $lastname  = "O'Reilly";
    $_lastname = mysql_real_escape_string($lastname);

    $query = "SELECT * FROM actors WHERE last_name = '$_lastname'";

    var_dump($_lastname);
    var_dump($query);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Warning: mysql_real_escape_string(): No such file or directory in /this/test/script.php on line 5
    Warning: mysql_real_escape_string(): A link to the server could not be established in /this/test/script.php on line 5

    bool(false)
    string(41) "SELECT * FROM actors WHERE last_name = ''"

Örnek 3 An example SQL Injection Attack

    <?php
    // We didn't check $_POST['password'], it could be anything the user wanted! For example:
    $_POST['username'] = 'aidan';
    $_POST['password'] = "' OR ''='";

    // Query database to check if there are any matching users
    $query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
    mysql_query($query);

    // This means the query sent to MySQL would be:
    echo $query;
    ?>

The query sent to MySQL:

    SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

This would allow anyone to log in without a valid password.

### Notlar

> Bilginize: A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level `E_WARNING` is generated, and `false` is returned. If `link_identifier` isn't defined, the last MySQL connection is used.

> Bilginize: If this function is not used to escape data, the query is vulnerable to SQL Injection Attacks.

> Bilginize: mysql_real_escape_string() does not escape `%` and `_`. These are wildcards in MySQL if combined with `LIKE`, `GRANT`, or `REVOKE`.

### Ayrıca Bakınız

- mysql_set_charset() - Sets the client character set
- mysql_client_encoding() - Karakter kümesinin adını döndürür

# mysql_result

(PHP 4, PHP 5)

mysql_result — Get result data

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_data_seek() in conjunction with mysqli_field_seek() and mysqli_fetch_field()
- PDOStatement::fetchColumn()

### Açıklama

function mysql_result(resource `$result`, int `$row`, mixed `$field` = 0): string

Retrieves the contents of one cell from a MySQL result set.

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mysql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

### Bağımsız Değişkenler

`sonuç`

  resource türünde sorgu sonucu. Bu sonuç bir mysql_query() çağrısının sonucudur.

`row`
  The row number from the result that's being retrieved. Row numbers start at `0`.
`field`
  The name or offset of the field being retrieved. It can be the field's offset, the field's name, or the field's table dot field name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name. If undefined, the first field is retrieved.

### Dönen Değerler

The contents of one cell from a MySQL result set on success, or `false` on failure.

### Örnekler

Örnek 1 mysql_result() example

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    if (!mysql_select_db('database_name')) {
        die('Could not select database: ' . mysql_error());
    }
    $result = mysql_query('SELECT name FROM work.employee');
    if (!$result) {
        die('Could not query:' . mysql_error());
    }
    echo mysql_result($result, 2); // outputs third employee's name

    mysql_close($link);
    ?>

### Notlar

> Bilginize: Calls to mysql_result() should not be mixed with calls to other functions that deal with the result set.

### Ayrıca Bakınız

- mysql_fetch_row() - Get a result row as an enumerated array
- mysql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc() - Fetch a result row as an associative array
- mysql_fetch_object() - Fetch a result row as an object

# mysql_select_db

(PHP 4, PHP 5)

mysql_select_db — Bir MySQL veritabanı seçer

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_select_db()
- PDO::__construct() (dsn parçası)

### Açıklama

function mysql_select_db(string `$veritabanı_adı`, resource `$bağlantı_belirteci` = `null`): bool

Belirtilen bağlantı belirteci ile ilişkili sunucuda, geçerli etkin veritabanını ayarlar. Takip eden bütün mysql_query() çağrıları etkin veritabanında yapılacaktır.

### Bağımsız Değişkenler

`veritabanı_adı`
  Seçilecek veritabanının adı.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - mysql_select_db() örneği

    <?php

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Bağlı değil : ' . mysql_error());
    }

    // foo'yu geçerli veritabanı yap
    $db_selected = mysql_select_db('foo', $link);
    if (!$db_selected) {
        die ('foo kullanılamaz : ' . mysql_error());
    }
    ?>

### Notlar

> Bilginize: Geriye uyumluluk adına, kullanımı önerilmese de şu takma ad kullanılabilir: mysql_selectdb()

### Ayrıca Bakınız

- mysql_connect() - MySQL Sunucusuna bir bağlantı açar
- mysql_pconnect() - Open a persistent connection to a MySQL server
- mysql_query() - Send a MySQL query

# mysql_set_charset

(PHP 5 >= 5.2.3)

mysql_set_charset — Sets the client character set

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_set_charset()
- PDO: Add `charset` to the connection string, such as `charset=utf8`

### Açıklama

function mysql_set_charset(string `$charset`, resource `$link_identifier` = NULL): bool

Sets the default character set for the current connection.

### Bağımsız Değişkenler

`charset`
  A valid character set name.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: This function requires MySQL 5.0.7 or later.

> Bilginize: This is the preferred way to change the charset. Using mysql_query() to set it (such as `SET NAMES utf8`) is not recommended. See the MySQL character set concepts section for more information.

### Ayrıca Bakınız

- Setting character sets in MySQL
- » List of character sets that MySQL supports
- mysql_client_encoding() - Karakter kümesinin adını döndürür

# mysql_stat

(PHP 4 >= 4.3.0, PHP 5)

mysql_stat — Geçerli sunucu durumunu döndürür

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_stat()
- `isim` özniteliği için `PDO::ATTR_SERVER_INFO` kullanarak PDOStatement::getAttribute()

### Açıklama

function mysql_stat(resource `$bağlantı_belirteci` = `null`): string

mysql_stat() geçerli sunucu durumunu döndürür.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Toplam çalışma süresi, evre, sorgu, açık tablo, boşaltılmış tablo ve saniyedeki sorgu sayısını bir dizge olarak döndürür. Diğer durum değişkenlerinin eksiksiz listesini almak için `SHOW STATUS` SQL komutunu kullanmalısınız. `bağlantı_belirteci` geçersizse `null` döner.

### Örnekler

Örnek 1 - mysql_stat() örneği

    <?php
    $link   = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $status = explode('  ', mysql_stat($link));
    print_r($status);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Uptime: 5380
        [1] => Threads: 2
        [2] => Questions: 1321299
        [3] => Slow queries: 0
        [4] => Opens: 26
        [5] => Flush tables: 1
        [6] => Open tables: 17
        [7] => Queries per second avg: 245.595
    )

Örnek 2 - Bir başka mysql_stat() örneği

    <?php
    $link   = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $result = mysql_query('SHOW STATUS', $link);
    while ($row = mysql_fetch_assoc($result)) {
        echo $row['Variable_name'] . ' = ' . $row['Value'] . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    back_log = 50
    basedir = /usr/local/
    bdb_cache_size = 8388600
    bdb_log_buffer_size = 32768
    bdb_home = /var/db/mysql/
    bdb_max_lock = 10000
    bdb_logdir =
    bdb_shared_data = OFF
    bdb_tmpdir = /var/tmp/
    ...

### Ayrıca Bakınız

- mysql_get_server_info() - MySQL sunucu bilgisini al
- mysql_list_processes() - MySQL süreçlerini listeler

# mysql_tablename

(PHP 4, PHP 5)

mysql_tablename — Alanın tablo adını al

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- SQL Sorgusu: `SHOW TABLES`

### Açıklama

function mysql_tablename(resource `$sonuç`, int `$i`): string|false

Bir `sonuç`'tan tablo adını alır.

Bu işlevin kullanımı önerilmemektedir. Bunun yerine, `SHOW TABLES [FROM db_adı] [LIKE 'şablon']` şeklinde bir SQL ifadesi çalıştırmak için mysql_query() kullanılması tercih edilebilir.

### Bağımsız Değişkenler

`sonuç`
  mysql_list_tables() işlevinden döndürülen resource türünde bir sonuç göstericisi.
`i`
  Tamsayı indisi (satır/tablo numarası)

### Dönen Değerler

Başarı durumunda tablo adı, hata durumunda `false` döndürülür.

Bu sonuç göstericisini veya mysql_fetch_array() gibi sonuç tabloları üreten bir işlevden elde edilen işlevselliğin tersini elde etmek için mysql_tablename() işlevini kullanın.

### Örnekler

Örnek 1 - mysql_tablename() örneği

    <?php
    mysql_connect("localhost", "mysql_user", "mysql_password");
    $result = mysql_list_tables("mydb");
    $num_rows = mysql_num_rows($result);
    for ($i = 0; $i < $num_rows; $i++) {
        echo "Tablo: ", mysql_tablename($result, $i), "\n";
    }

    mysql_free_result($result);
    ?>

### Notlar

> Bilginize: mysql_num_rows() işlevi sonuç göstericisindeki tablo sayısını belirlemek için kullanılabilir.

### Ayrıca Bakınız

- mysql_list_tables() - Bir MySQL veritabanındaki tabloları listele
- mysql_field_table() - Belirtilen alanı içeren tablonun adını al
- mysql_db_name() - mysql_list_dbs çağrısından veritabanı adını alır

# mysql_thread_id

(PHP 4 >= 4.3.0, PHP 5)

mysql_thread_id — Geçerli evre numarasını döndür

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- mysqli_thread_id()

### Açıklama

function mysql_thread_id(resource `$bağlantı_belirteci` = `null`): int|false

Geçerli evre numarasını alır. Eğer bağlantı kaybolursa ve mysql_ping() ile yeniden bağlanılırsa evre numarası da değişecektir. Bu nedenle, evre numarasını sadece gerektiğinde alın.

### Bağımsız Değişkenler

`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

Başarı durumunda evre numarası, hata durumunda `false`.

### Örnekler

Örnek 1 - mysql_thread_id() örneği

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $thread_id = mysql_thread_id($link);
    if ($thread_id){
        printf("geçerli evre numarası %d\n", $thread_id);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    geçerli evre numarası 73

### Ayrıca Bakınız

- mysql_ping() - Bir sunucu bağlantısına ping at, bağlantı yoksa tekrar bağlan
- mysql_list_processes() - MySQL süreçlerini listeler

# mysql_unbuffered_query

(PHP 4 >= 4.0.6, PHP 5)

mysql_unbuffered_query — Sonuç kümesi tamponlanmayan ve alınmayan bir SQL sorgusu gönderir

Uyarı

Bu eklentinin kullanımı PHP 5.5.0 itibariyle önerilmemekte olup PHP 7.0.0'da kaldırılmıştır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seçerken MySQL API'ye Bakış belgesi yardımcı olabilir. Bu işlevin yerine kullanılabilecekler:

- See: Tamponlu ve tamponsuz sorgular

### Açıklama

function mysql_unbuffered_query(string `$sorgu`, resource `$bağlantı_belirteci` = `null`): resource

mysql_unbuffered_query() işlevi mysql_query() işlevinin yaptığı gibi sonuç kümesini tamponlamadan ve içindekileri almamak üzere `sorgu` SQL sorgusunu MySQL'e gönderir. Başka bir deyişle, büyük sonuç kümeleri üreten SQL sorgularından kaynaklanan bellek tüketimini azaltır. Yani, ilk satırı alır almaz sonuç kümesiyle çalışmaya başlayabilirsiniz; SQL sorusunun tamamlanmasını beklemeniz gerekmez.Çok sayıda veritabanı bağlantısı kullanıyorsanız belirtilmesi isteğe bağlı olan `bağlantı_belirteci` bağımsız değişkenini de belirtmeniz gerekir.

### Bağımsız Değişkenler

`sorgu`
  Bir SQL sorgusu. Sorgunun içerdiği verinin gerektiği gibi öncelenmesi gerekir.
`bağlantı_belirteci`

  MySQL bağlantısı. Eğer bağlantı belirteci belirtilmemişse mysql_connect() tarafından açılan son bağlantı kullanılmaya çalışılır. Eğer böyle bir bağlantı yoksa mysql_connect() bağımsız değişkensiz olarak çağrılmış gibi bir bağlantı oluşturmaya çalışır. Hiçbir bağlantı yoksa ve yenisi de kurulamazsa `E_WARNING` seviyesinde bir hata üretilir.

### Dönen Değerler

SELECT, SHOW, DESCRIBE ve EXPLAIN deyimleri için mysql_unbuffered_query() başarı durumunda bir özkaynak aksi takdirde `false` döndürür.

UPDATE, DELETE, DROP gibi diğer SQL deyimi türlerinde, mysql_unbuffered_query() başarı durumunda `true` aksi takdirde `false` döndürür.

### Notlar

> Bilginize: mysql_unbuffered_query() işlevinin getirilerinin yanında götürüleri de vardır: mysql_unbuffered_query() işlevinden dönen bir sonuç kümesi üzerinde tüm satırlar alınana kadar mysql_num_rows() ve mysql_data_seek() işlevlerini kullanamazsınız. Ayrıca, MySQL'e yeni bir SQL sorgusu göndermeden önce aynı `bağlantı_belirteci`ni kullanarak tamponsuz bir SQL sorgusuyla sonuç kümesinin tamamını almak zorundasınız.

### Ayrıca Bakınız

- mysql_query() - Send a MySQL query

## İçindekiler

- mysql_affected_rows — Önceki MySQL işleminde etkilenen satırların sayısını al
- mysql_client_encoding — Karakter kümesinin adını döndürür
- mysql_close — MySQL bağlantısını kapatır
- mysql_connect — MySQL Sunucusuna bir bağlantı açar
- mysql_create_db — Bir MySQL veritabanı oluşturur
- mysql_data_seek — Move internal result pointer
- mysql_db_name — mysql_list_dbs çağrısından veritabanı adını alır
- mysql_db_query — Veritabanını seçer ve bir sorgu çalıştırır
- mysql_drop_db — Drop (delete) a MySQL database
- mysql_errno — Returns the numerical value of the error message from previous MySQL operation
- mysql_error — Returns the text of the error message from previous MySQL operation
- mysql_escape_string — Escapes a string for use in a mysql_query
- mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
- mysql_fetch_assoc — Fetch a result row as an associative array
- mysql_fetch_field — Get column information from a result and return as an object
- mysql_fetch_lengths — Bir sonuçtaki her bir çıktının uzunluğunu al
- mysql_fetch_object — Fetch a result row as an object
- mysql_fetch_row — Get a result row as an enumerated array
- mysql_field_flags — Get the flags associated with the specified field in a result
- mysql_field_len — Belirtilen alanın uzunluğunu döndürür
- mysql_field_name — Get the name of the specified field in a result
- mysql_field_seek — Sonuç göstericisini belirtilen alan konumuna ayarla
- mysql_field_table — Belirtilen alanı içeren tablonun adını al
- mysql_field_type — Get the type of the specified field in a result
- mysql_free_result — Sonuç belleğini serbest bırakır
- mysql_get_client_info — MySQL istemci sürüm bilgisini al
- mysql_get_host_info — MySQL konak bilgisini al
- mysql_get_proto_info — MySQL protokol sürüm bilgisini al
- mysql_get_server_info — MySQL sunucu bilgisini al
- mysql_info — En son sorgu hakkında bilgi al
- mysql_insert_id — Get the ID generated in the last query
- mysql_list_dbs — Bir MySQL sunucusundaki kullanılabilir veritabanlarını listeler
- mysql_list_fields — MySQL tablosunun alanlarını listeler
- mysql_list_processes — MySQL süreçlerini listeler
- mysql_list_tables — Bir MySQL veritabanındaki tabloları listele
- mysql_num_fields — Sonuçtaki alan sayısını al
- mysql_num_rows — Sonuçtaki satır sayısını al
- mysql_pconnect — Open a persistent connection to a MySQL server
- mysql_ping — Bir sunucu bağlantısına ping at, bağlantı yoksa tekrar bağlan
- mysql_query — Send a MySQL query
- mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement
- mysql_result — Get result data
- mysql_select_db — Bir MySQL veritabanı seçer
- mysql_set_charset — Sets the client character set
- mysql_stat — Geçerli sunucu durumunu döndürür
- mysql_tablename — Alanın tablo adını al
- mysql_thread_id — Geçerli evre numarasını döndür
- mysql_unbuffered_query — Sonuç kümesi tamponlanmayan ve alınmayan bir SQL sorgusu gönderir

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Sürüm Bilgisi
- Öntanımlı Sabitler
- Örnekler
  - MySQL eklentisi temel kullanım
- MySQL İşlevleri
  - mysql_affected_rows — Önceki MySQL işleminde etkilenen satırların sayısını al
  - mysql_client_encoding — Karakter kümesinin adını döndürür
  - mysql_close — MySQL bağlantısını kapatır
  - mysql_connect — MySQL Sunucusuna bir bağlantı açar
  - mysql_create_db — Bir MySQL veritabanı oluşturur
  - mysql_data_seek — Move internal result pointer
  - mysql_db_name — mysql_list_dbs çağrısından veritabanı adını alır
  - mysql_db_query — Veritabanını seçer ve bir sorgu çalıştırır
  - mysql_drop_db — Drop (delete) a MySQL database
  - mysql_errno — Returns the numerical value of the error message from previous MySQL operation
  - mysql_error — Returns the text of the error message from previous MySQL operation
  - mysql_escape_string — Escapes a string for use in a mysql_query
  - mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
  - mysql_fetch_assoc — Fetch a result row as an associative array
  - mysql_fetch_field — Get column information from a result and return as an object
  - mysql_fetch_lengths — Bir sonuçtaki her bir çıktının uzunluğunu al
  - mysql_fetch_object — Fetch a result row as an object
  - mysql_fetch_row — Get a result row as an enumerated array
  - mysql_field_flags — Get the flags associated with the specified field in a result
  - mysql_field_len — Belirtilen alanın uzunluğunu döndürür
  - mysql_field_name — Get the name of the specified field in a result
  - mysql_field_seek — Sonuç göstericisini belirtilen alan konumuna ayarla
  - mysql_field_table — Belirtilen alanı içeren tablonun adını al
  - mysql_field_type — Get the type of the specified field in a result
  - mysql_free_result — Sonuç belleğini serbest bırakır
  - mysql_get_client_info — MySQL istemci sürüm bilgisini al
  - mysql_get_host_info — MySQL konak bilgisini al
  - mysql_get_proto_info — MySQL protokol sürüm bilgisini al
  - mysql_get_server_info — MySQL sunucu bilgisini al
  - mysql_info — En son sorgu hakkında bilgi al
  - mysql_insert_id — Get the ID generated in the last query
  - mysql_list_dbs — Bir MySQL sunucusundaki kullanılabilir veritabanlarını listeler
  - mysql_list_fields — MySQL tablosunun alanlarını listeler
  - mysql_list_processes — MySQL süreçlerini listeler
  - mysql_list_tables — Bir MySQL veritabanındaki tabloları listele
  - mysql_num_fields — Sonuçtaki alan sayısını al
  - mysql_num_rows — Sonuçtaki satır sayısını al
  - mysql_pconnect — Open a persistent connection to a MySQL server
  - mysql_ping — Bir sunucu bağlantısına ping at, bağlantı yoksa tekrar bağlan
  - mysql_query — Send a MySQL query
  - mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement
  - mysql_result — Get result data
  - mysql_select_db — Bir MySQL veritabanı seçer
  - mysql_set_charset — Sets the client character set
  - mysql_stat — Geçerli sunucu durumunu döndürür
  - mysql_tablename — Alanın tablo adını al
  - mysql_thread_id — Geçerli evre numarasını döndür
  - mysql_unbuffered_query — Sonuç kümesi tamponlanmayan ve alınmayan bir SQL sorgusu gönderir

# MySQL Native Driver

# Giriş

MySQL Native Driver is a replacement for the MySQL Client Library (libmysqlclient). MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0.

The MySQL database extensions MySQL extension, `mysqli` and PDO MYSQL all communicate with the MySQL server. In the past, this was done by the extension using the services provided by the MySQL Client Library. The extensions were compiled against the MySQL Client Library in order to use its client-server protocol.

With MySQL Native Driver there is now an alternative, as the MySQL database extensions can be compiled to use MySQL Native Driver instead of the MySQL Client Library.

MySQL Native Driver is written in C as a PHP extension.

# Overview

What it is not

Although MySQL Native Driver is written as a PHP extension, it is important to note that it does not provide a new API to the PHP programmer. The programmer APIs for MySQL database connectivity are provided by the MySQL extension, `mysqli` and PDO MYSQL. These extensions can now use the services of MySQL Native Driver to communicate with the MySQL Server. Therefore, you should not think of MySQL Native Driver as an API.

Why use it?

Using the MySQL Native Driver offers a number of advantages over using the MySQL Client Library.

The older MySQL Client Library was written by MySQL AB (now Oracle Corporation) and so was released under the MySQL license. This ultimately led to MySQL support being disabled by default in PHP. However, the MySQL Native Driver has been developed as part of the PHP project, and is therefore released under the PHP license. This removes licensing issues that have been problematic in the past.

Also, in the past, you needed to build the MySQL database extensions against a copy of the MySQL Client Library. This typically meant you needed to have MySQL installed on a machine where you were building the PHP source code. Also, when your PHP application was running, the MySQL database extensions would call down to the MySQL Client library file at run time, so the file needed to be installed on your system. With MySQL Native Driver that is no longer the case as it is included as part of the standard distribution. So you do not need MySQL installed in order to build PHP or run PHP database applications.

Because MySQL Native Driver is written as a PHP extension, it is tightly coupled to the workings of PHP. This leads to gains in efficiency, especially when it comes to memory usage, as the driver uses the PHP memory management system. It also supports the PHP memory limit. Using MySQL Native Driver leads to comparable or better performance than using MySQL Client Library, it always ensures the most efficient use of memory. One example of the memory efficiency is the fact that when using the MySQL Client Library, each row is stored in memory twice, whereas with the MySQL Native Driver each row is only stored once in memory.

> Bilginize: Reporting memory usage
> Because MySQL Native Driver uses the PHP memory management system, its memory usage can be tracked with memory_get_usage(). This is not possible with libmysqlclient because it uses the C function malloc() instead.

Special features

MySQL Native Driver also provides some special features not available when the MySQL database extensions use MySQL Client Library. These special features are listed below:

- Improved persistent connections
- The special function mysqli_fetch_all()
- Performance statistics calls: mysqli_get_client_stats(), mysqli_get_connection_stats()

The performance statistics facility can prove to be very useful in identifying performance bottlenecks.

MySQL Native Driver also allows for persistent connections when used with the `mysqli` extension.

SSL Support

MySQL Native Driver supports SSL.

Compressed Protocol Support

MySQL Native Driver supports the compressed client server protocol. Extension `ext/mysqli`, if configured to use MySQL Native Driver, can also take advantage of this feature. Note that `PDO_MYSQL` does NOT support compression when used together with mysqlnd.

Named Pipes Support

Named pipes can be used to connect on Windows environments.

# Installation

Installation on Unix

In order to use the MySQL Native Driver, PHP needs to be built specifying that the MySQL database extensions are compiled with MySQL Native Driver support. This is done through configuration options prior to building the PHP source code.

For example, to build the MySQL extension, `mysqli` and PDO MYSQL using the MySQL Native Driver, the following command would be given:

    ./configure --with-mysql=mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    [other options]

Installation on Windows

In the official PHP Windows distributions, MySQL Native Driver is enabled by default, so no additional configuration is required to use it. All MySQL database extensions will use MySQL Native Driver in this case.

SHA-256 Authentication Plugin support

The MySQL Native Driver requires the OpenSSL functionality of PHP to be loaded and enabled to connect to MySQL through accounts that use the MySQL SHA-256 Authentication Plugin. For example, PHP could be configured using:

    ./configure --with-mysql=mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-openssl
    [other options]

In Autotools, the extended SSL support in `mysqlnd` is enabled implicitly when building together with the `openssl` extension using the --with-openssl configure option. When building without the `openssl` extension, the --with-mysqlnd-ssl configure option can be used to enable extended SSL support explicitly.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The --with-mysqlnd-ssl Autotools configure option was added to enable the extended SSL support explicitly when building without the `openssl` extension.

# Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

MySQL Native Driver Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mysqlnd.collect_statistics | "1" | `INI_SYSTEM` |
mysqlnd.collect_memory_statistics | "0" | `INI_SYSTEM` |
mysqlnd.debug | "" | `INI_SYSTEM` |
mysqlnd.log_mask | 0 | `INI_ALL` |
mysqlnd.mempool_default_size | 16000 | `INI_ALL` |
mysqlnd.net_read_timeout | "86400" | `INI_ALL` | Before PHP 7.2.0 the default value was "31536000" and the changeability was `INI_SYSTEM`
mysqlnd.net_cmd_buffer_size | "4096" | `INI_SYSTEM` |
mysqlnd.net_read_buffer_size | "32768" | `INI_SYSTEM` |
mysqlnd.sha256_server_public_key | "" | `INI_PERDIR` |
mysqlnd.trace_alloc | "" | `INI_SYSTEM` |
mysqlnd.fetch_data_copy | 0 | `INI_ALL` | Removed as of PHP 8.1.0

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mysqlnd.collect_statistics` bool
  Enables the collection of various client statistics which can be accessed through mysqli_get_client_stats(), mysqli_get_connection_stats(), and are shown in `mysqlnd` section of the output of the phpinfo() function as well. This configuration setting enables all MySQL Native Driver statistics except those relating to memory management.
`mysqlnd.collect_memory_statistics` bool
  Enable the collection of various memory statistics which can be accessed through mysqli_get_client_stats(), mysqli_get_connection_stats(), and are shown in `mysqlnd` section of the output of the phpinfo() function as well. This configuration setting enables the memory management statistics within the overall set of MySQL Native Driver statistics.
`mysqlnd.debug` string
  Records communication from all extensions using `mysqlnd` to the specified log file. The format of the directive is `mysqlnd.debug = "option1[,parameter_option1][:option2[,parameter_option2]]"`. The options for the format string are as follows:
  - A[,file] - Appends trace output to specified file. Also ensures that data is written after each write. This is done by closing and reopening the trace file (this is slow). It helps ensure a complete log file should the application crash.
  - a[,file] - Appends trace output to the specified file.
  - d - Enables output from DBUG_<N> macros for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. An empty list of keywords implies output for all macros.
  - f[,functions] - Limits debugger actions to the specified list of functions. An empty list of functions implies that all functions are selected.
  - F - Marks each debugger output line with the name of the source file containing the macro causing the output.
  - i - Marks each debugger output line with the PID of the current process.
  - L - Marks each debugger output line with the name of the source file line number of the macro causing the output.
  - n - Marks each debugger output line with the current function nesting depth
  - o[,file] - Similar to a[,file] but overwrites old file, and does not append.
  - O[,file] - Similar to A[,file] but overwrites old file, and does not append.
  - t[,N] - Enables function control flow tracing. The maximum nesting depth is specified by N, and defaults to 200.
  - x - This option activates profiling.
  - m - Trace memory allocation and deallocation related calls.
  Example:

      d:t:x:O,/tmp/mysqlnd.trace

  > Bilginize: This feature is only available with a debug build of PHP.

`mysqlnd.log_mask` int
  Defines which queries will be logged. The default 0, which disables logging. Define using an integer, and not with PHP constants. For example, a value of 48 (16 + 32) will log slow queries which either use 'no good index' (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) or no index at all (SERVER_QUERY_NO_INDEX_USED = 32). A value of 2043 (1 + 2 + 8 + ... + 1024) will log all slow query types. The types are as follows: SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2, SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32, SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256, SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, and SERVER_QUERY_WAS_SLOW=1024.
`mysqlnd.mempool_default_size` int
  Default size of the mysqlnd memory pool, which is used by result sets.
`mysqlnd.net_read_timeout` int
  `mysqlnd` and the MySQL Client Library, `libmysqlclient` use different networking APIs. `mysqlnd` uses PHP streams, whereas `libmysqlclient` uses its own wrapper around the operating level network calls. PHP, by default, sets a read timeout of 60s for streams. This is set via php.ini, `default_socket_timeout`. This default applies to all streams that set no other timeout value. `mysqlnd` does not set any other value and therefore connections of long running queries can be disconnected after `default_socket_timeout` seconds resulting in an error message 2006 - MySQL Server has gone away. The MySQL Client Library sets a default timeout of 24 * 3600 seconds (1 day) and waits for other timeouts to occur, such as TCP/IP timeouts. `mysqlnd` now uses the same very long timeout. The value is configurable through a new php.ini setting: `mysqlnd.net_read_timeout`. `mysqlnd.net_read_timeout` gets used by any extension (`ext/mysql`, `ext/mysqli`, `PDO_MySQL`) that uses `mysqlnd`. `mysqlnd` tells PHP Streams to use `mysqlnd.net_read_timeout`. Please note that there may be subtle differences between `MYSQL_OPT_READ_TIMEOUT` from the MySQL Client Library and PHP Streams, for example `MYSQL_OPT_READ_TIMEOUT` is documented to work only for TCP/IP connections and, prior to MySQL 5.1.2, only for Windows. PHP streams may not have this limitation. Please check the streams documentation, if in doubt.
`mysqlnd.net_cmd_buffer_size` int
  `mysqlnd` allocates an internal command/network buffer of `mysqlnd.net_cmd_buffer_size` (in php.ini) bytes for every connection. If a MySQL Client Server protocol command, for example, `COM_QUERY` (normal query), does not fit into the buffer, `mysqlnd` will grow the buffer to the size required for sending the command. Whenever the buffer gets extended for one connection, `command_buffer_too_small` will be incremented by one. If `mysqlnd` has to grow the buffer beyond its initial size of `mysqlnd.net_cmd_buffer_size` bytes for almost every connection, you should consider increasing the default size to avoid re-allocations. The default buffer size is 4096 bytes, which is the smallest value possible. The value can also be set using `mysqli_options(link, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size)`.
`mysqlnd.net_read_buffer_size` int
  Maximum read chunk size in bytes when reading the body of a MySQL command packet. The MySQL client server protocol encapsulates all its commands in packets. The packets consist of a small header and a body with the actual payload. The size of the body is encoded in the header. `mysqlnd` reads the body in chunks of `MIN(header.size, mysqlnd.net_read_buffer_size)` bytes. If a packet body is larger than `mysqlnd.net_read_buffer_size` bytes, `mysqlnd` has to call `read()` multiple times. The value can also be set using `mysqli_options(link, MYSQLI_OPT_NET_READ_BUFFER_SIZE, size)`.
`mysqlnd.sha256_server_public_key` string
  SHA-256 Authentication Plugin related. File with the MySQL server public RSA key. Clients can either omit setting a public RSA key, specify the key through this PHP configuration setting or set the key at runtime using mysqli_options(). If not public RSA key file is given by the client, then the key will be exchanged as part of the standard SHA-256 Authentication Plugin authentication procedure.
`mysqlnd.trace_alloc` string
`mysqlnd.fetch_data_copy` int
  Enforce copying result sets from the internal result set buffers into PHP variables instead of using the default reference and copy-on-write logic. Please, see the memory management implementation notes for further details. Copying result sets instead of having PHP variables reference them allows releasing the memory occupied for the PHP variables earlier. Depending on the user API code, the actual database queries and the size of their result sets this may reduce the memory footprint of mysqlnd. Do not set if using PDO_MySQL. PDO_MySQL has not yet been updated to support the new fetch mode.

  > Bilginize: Removed as of PHP 8.1.0

# Incompatibilities

MySQL Native Driver is in most cases compatible with MySQL Client Library (`libmysql`). This section documents incompatibilities between these libraries.

- Values of `bit` data type are returned as binary strings (e.g. "\0" or "\x1F") with `libmysql` and as decimal strings (e.g. "0" or "31") with `mysqlnd`. If you want the code to be compatible with both libraries then always return bit fields as numbers from MySQL with a query like this: `SELECT bit + 0 FROM table`.

# Persistent Connections

Using Persistent Connections

If `mysqli` is used with `mysqlnd`, when a persistent connection is created it generates a `COM_CHANGE_USER` (`mysql_change_user()`) call on the server. This ensures that re-authentication of the connection takes place.

As there is some overhead associated with the `COM_CHANGE_USER` call, it is possible to switch this off at compile time. Reusing a persistent connection will then generate a `COM_PING` (`mysql_ping`) call to simply test the connection is reusable.

Generation of `COM_CHANGE_USER` can be switched off with the compile flag `MYSQLI_NO_CHANGE_USER_ON_PCONNECT`. For example:

    shell# CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT" ./configure --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --enable-debug && make clean && make -j6

Or alternatively:

    shell# export CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT"
    shell# configure --whatever-option
    shell# make clean
    shell# make

Note that only `mysqli` on `mysqlnd` uses `COM_CHANGE_USER`. Other extension-driver combinations use `COM_PING` on initial use of a persistent connection.

# Statistics

MySQL Native Driver contains support for gathering statistics on the communication between the client and the server. The statistics gathered are of two main types:

- Client statistics
- Connection statistics

When using the mysqli extension, these statistics can be obtained through two API calls:

- mysqli_get_client_stats()
- mysqli_get_connection_stats()

> Bilginize: Statistics are aggregated among all extensions that use the MySQL Native Driver. For example, if the mysqli extension and the PDO MySQL driver are both set-up to use MySQLnd, then function calls from mysqli and method calls from PDO will affect the statistics. There is no way to find out how much a certain API call of any extension that has been compiled against MySQL Native Driver has impacted a certain statistic.

## Retrieving statistics

Client statistics can be retrieved by calling the mysqli_get_client_stats() function.

Connection statistics can be retrieved by calling the mysqli_get_connection_stats() function.

Both functions return an associative array, where the name of a statistic is the key for the corresponding statistical data.

## MySQL Native Driver Statistics

Most statistics are associated to a connection, but some are associated to the process in which case this will be mentioned.

The following statistics are produced by the MySQL Native Driver:

Network Related Statistics
`bytes_sent`
  Number of bytes sent from PHP to the MySQL server.
`bytes_received`
  Number of bytes received from the MySQL server.
`packets_sent`
  Number of packets sent by the MySQL Client Server protocol.
`packets_received`
  Number of packets received from the MySQL Client Server protocol.
`protocol_overhead_in`
  MySQL Client Server protocol overhead in bytes for incoming traffic. Currently only the Packet Header (4 bytes) is considered as overhead. `protocol_overhead_in = packets_received * 4`
`protocol_overhead_out`
  MySQL Client Server protocol overhead in bytes for outgoing traffic. Currently only the Packet Header (4 bytes) is considered as overhead. `protocol_overhead_out = packets_received * 4`
`bytes_received_ok_packet`
  Total size of bytes of MySQL Client Server protocol OK packets received. OK packets can contain a status message. The length of the status message can vary and thus the size of an OK packet is not fixed.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_ok`
  Number of MySQL Client Server protocol OK packets received.
`bytes_received_eof_packet`
  Total size in bytes of MySQL Client Server protocol EOF packets received. EOF can vary in size depending on the server version. Also, EOF can transport an error message.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_eof`
  Number of MySQL Client Server protocol EOF packets. Like with other packet statistics the number of packets will be increased even if PHP does not receive the expected packet but, for example, an error message.
`bytes_received_rset_header_packet`
  Total size in bytes of MySQL Client Server protocol result set header packets. The size of the packets varies depending on the payload (`LOAD LOCAL INFILE`, `INSERT`, `UPDATE`, `SELECT`, error message).

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_rset_header`
  Number of MySQL Client Server protocol result set header packets.
`bytes_received_rset_field_meta_packet`
  Total size in bytes of MySQL Client Server protocol result set metadata (field information) packets. Of course the size varies with the fields in the result set. The packet may also transport an error or an EOF packet in case of COM_LIST_FIELDS.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_rset_field_meta`
  Number of MySQL Client Server protocol result set metadata (field information) packets.
`bytes_received_rset_row_packet`
  Total size in bytes of MySQL Client Server protocol result set row data packets. The packet may also transport an error or an EOF packet. One can compute the number of error and EOF packets by subtracting `rows_fetched_from_server_normal` and `rows_fetched_from_server_ps` from `bytes_received_rset_row_packet`.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_rset_row`
  Number of MySQL Client Server protocol result set row data packets.
`bytes_received_prepare_response_packet`
  Total size in bytes of MySQL Client Server protocol OK for Prepared Statement Initialization packets (prepared statement init packets). The packet may also transport an error. The packet size depends on the MySQL version.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_prepare_response`
  Number of MySQL Client Server protocol OK for Prepared Statement Initialization packets (prepared statement init packets).
`bytes_received_change_user_packet`
  Total size in bytes of MySQL Client Server protocol COM_CHANGE_USER packets. The packet may also transport an error or EOF.

  > Bilginize: The total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).

`packets_received_change_user`
  Number of MySQL Client Server protocol COM_CHANGE_USER packets.
`packets_sent_command`
  Number of MySQL Client Server protocol commands sent from PHP to MySQL. There is no way to know which specific commands and how many of them have been sent.
`bytes_received_real_data_normal`
  Number of bytes of payload fetched by the PHP client from `mysqlnd` using the text protocol. This is the size of the actual data contained in result sets that do not originate from prepared statements and which have been fetched by the PHP client. Note that although a full result set may have been pulled from MySQL by `mysqlnd`, this statistic only counts actual data pulled from `mysqlnd` by the PHP client.

  An example of a code sequence that will increase the value is as follows:

      $mysqli = new mysqli();
      $res = $mysqli->query("SELECT 'abc'");
      $res->fetch_assoc();
      $res->close();

  Every fetch operation will increase the value.

  However, the statistic will not be increased if the result set is only buffered on the client, but not fetched, such as in the following example:

      $mysqli = new mysqli();
      $res = $mysqli->query("SELECT 'abc'");
      $res->close();

`bytes_received_real_data_ps`
  Number of bytes of the payload fetched by the PHP client from `mysqlnd` using the prepared statement protocol. This is the size of the actual data contained in result sets that originate from prepared statements and which have been fetched by the PHP client. The value will not be increased if the result set is not subsequently read by the PHP client. Note that although a full result set may have been pulled from MySQL by `mysqlnd`, this statistic only counts actual data pulled from `mysqlnd` by the PHP client. See also `bytes_received_real_data_normal`.

Result Set Related Statistics
`result_set_queries`
  Number of queries that have generated a result set. Examples of queries that generate a result set: `SELECT`, `SHOW`. The statistic will not be incremented if there is an error reading the result set header packet from the line.

  > Bilginize: This statistic can be used as an indirect measure for the number of queries PHP has sent to MySQL. This could help identifying a client that causes a high database load.

`non_result_set_queries`
  Number of queries that did not generate a result set. Examples of queries that do not generate a result set: `INSERT`, `UPDATE`, `LOAD DATA`. The statistic will not be incremented if there is an error reading the result set header packet from the line.

  > Bilginize: This statistic can be used as an indirect measure for the number of queries PHP has sent to MySQL. This could help identifying a client that causes a high database load.

`no_index_used`
  Number of queries that have generated a result set but did not use an index. (See also the mysqld start option `--log-queries-not-using-indexes`).

  > Bilginize: Those queries can be reported via an exception by calling `mysqli_report(MYSQLI_REPORT_INDEX);`. It is possible to have them be reported via a warning instead by calling `mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);`.

`bad_index_used`
  Number of queries that have generated a result set and did not use a good index. (See also the mysqld start option `--log-slow-queries`).

  > Bilginize: Those queries can be reported via an exception by calling `mysqli_report(MYSQLI_REPORT_INDEX);`. It is possible to have them be reported via a warning instead by calling `mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);`.

`slow_queries`
  SQL statements that took more than `long_query_time` seconds to execute and required at least `min_examined_row_limit` rows to be examined.
  Dikkat

  Not reported through mysqli_report().

`buffered_sets`
  Number of buffered result sets returned by normal (i.e. not via a prepared statement) queries.

  Examples of API calls that will buffer result sets on the client: mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result()

`unbuffered_sets`
  Number of unbuffered result sets returned by normal (i.e. not via a prepared statement) queries.

  Examples of API calls that will not buffer result sets on the client: mysqli_use_result()

`ps_buffered_sets`
  Number of buffered result sets returned by prepared statements.

  Examples of API calls that will buffer result sets on the client: mysqli_stmt_store_result()

`ps_unbuffered_sets`
  Number of unbuffered result sets returned by prepared statements. By default prepared statements are unbuffered, thus most prepared statements will be accounted in this statistic.
`flushed_normal_sets`
  Number of result sets returned by normal (i.e. not via a prepared statement) queries with unread data that have been silently flushed.

  > Bilginize: Flushing happens only with unbuffered result sets. Unbuffered result sets must be fetched completely before a new query can be run on the connection otherwise MySQL will throw an error. If the application does not fetch all rows from an unbuffered result set, mysqlnd does implicitly fetch the result set to clear the line. See also `rows_skipped_normal`, `rows_skipped_ps`.

  > Some possible causes for an implicit flush:

  > - Faulty client application
  > - Client stopped reading after it found what it was looking for but has made MySQL calculate more records than needed
  > - Client application has stopped unexpectedly

`flushed_ps_sets`
  Number of result sets from prepared statements with unread data that have been silently flushed.

  > Bilginize: Flushing happens only with unbuffered result sets. Unbuffered result sets must be fetched completely before a new query can be run on the connection otherwise MySQL will throw an error. If the application does not fetch all rows from an unbuffered result set, mysqlnd does implicitly fetch the result set to clear the line. See also `rows_skipped_normal`, `rows_skipped_ps`.

  > Some possible causes for an implicit flush:

  > - Faulty client application
  > - Client stopped reading after it found what it was looking for but has made MySQL calculate more records than needed
  > - Client application has stopped unexpectedly

`ps_prepared_never_executed`
  Number of statements prepared but never executed.
`ps_prepared_once_executed`
  Number of prepared statements executed only once.
`rows_fetched_from_server_normal`
`rows_fetched_from_server_ps`
  Total number of result set rows fetched from the server. This includes the rows which were not read by the client but had been implicitly fetched due to flushed unbuffered result sets. See also `packets_received_rset_row`.
`rows_buffered_from_client_normal`
  Total number of buffered rows originating from a normal query. This is the number of rows that have been fetched from MySQL and buffered on client.

  Examples of queries that will buffer results:

  - mysqli_query()
  - mysqli_store_result()
`rows_buffered_from_client_ps`
  Same as `rows_buffered_from_client_normal` but for prepared statements.
`rows_fetched_from_client_normal_buffered`
  Total number of rows fetched by the client from a buffered result set created by a normal query.
`rows_fetched_from_client_ps_buffered`
  Total number of rows fetched by the client from a buffered result set created by a prepared statement.
`rows_fetched_from_client_normal_unbuffered`
  Total number of rows fetched by the client from an unbuffered result set created by a normal query.
`rows_fetched_from_client_ps_unbuffered`
  Total number of rows fetched by the client from an unbuffered result set created by a prepared statement.
`rows_fetched_from_client_ps_cursor`
  Total number of rows fetch by the client from a cursor created by a prepared statement.
`rows_skipped_normal`
`rows_skipped_ps`
  Reserved for future use (currently not supported).
`copy_on_write_saved`
`copy_on_write_performed`
  This is a process level scope statistic. With mysqlnd, variables returned by the extensions point into mysqlnd internal network result buffers. If the data are not changed, the fetched data is kept only once in memory. However, any modification to the data will require mysqlnd to perform a copy-on-write operation.
`explicit_free_result`
`implicit_free_result`
  This is a connection and process level scope statistic. Total number of freed result sets.
`proto_text_fetched_null`
  Total number of columns of type `MYSQL_TYPE_NULL` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_null`
  Total number of columns of type `MYSQL_TYPE_NULL` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_bit`
  Total number of columns of type `MYSQL_TYPE_BIT` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_bit`
  Total number of columns of type `MYSQL_TYPE_BIT` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_tinyint`
  Total number of columns of type `MYSQL_TYPE_TINY` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_tinyint`
  Total number of columns of type `MYSQL_TYPE_TINY` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_short`
  Total number of columns of type `MYSQL_TYPE_SHORT` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_short`
  Total number of columns of type `MYSQL_TYPE_SHORT` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_int24`
  Total number of columns of type `MYSQL_TYPE_INT24` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_int24`
  Total number of columns of type `MYSQL_TYPE_INT24` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_int`
  Total number of columns of type `MYSQL_TYPE_LONG` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_int`
  Total number of columns of type `MYSQL_TYPE_LONG` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_bigint`
  Total number of columns of type `MYSQL_TYPE_LONGLONG` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_bigint`
  Total number of columns of type `MYSQL_TYPE_LONGLONG` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_decimal`
  Total number of columns of type `MYSQL_TYPE_DECIMAL`, or `MYSQL_TYPE_NEWDECIMAL` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_decimal`
  Total number of columns of type `MYSQL_TYPE_DECIMAL`, or `MYSQL_TYPE_NEWDECIMAL` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_float`
  Total number of columns of type `MYSQL_TYPE_FLOAT` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_float`
  Total number of columns of type `MYSQL_TYPE_FLOAT` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_double`
  Total number of columns of type `MYSQL_TYPE_DOUBLE` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_double`
  Total number of columns of type `MYSQL_TYPE_DOUBLE` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_date`
  Total number of columns of type `MYSQL_TYPE_DATE`, or `MYSQL_TYPE_NEWDATE` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_date`
  Total number of columns of type `MYSQL_TYPE_DATE`, or `MYSQL_TYPE_NEWDATE` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_year`
  Total number of columns of type `MYSQL_TYPE_YEAR` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_year`
  Total number of columns of type `MYSQL_TYPE_YEAR` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_time`
  Total number of columns of type `MYSQL_TYPE_TIME` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_time`
  Total number of columns of type `MYSQL_TYPE_TIME` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_datetime`
  Total number of columns of type `MYSQL_TYPE_DATETIME` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_datetime`
  Total number of columns of type `MYSQL_TYPE_DATETIME` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_timestamp`
  Total number of columns of type `MYSQL_TYPE_TIMESTAMP` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_timestamp`
  Total number of columns of type `MYSQL_TYPE_TIMESTAMP` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_string`
  Total number of columns of type `MYSQL_TYPE_STRING`, `MYSQL_TYPE_VARSTRING`, or `MYSQL_TYPE_VARCHAR` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_string`
  Total number of columns of type `MYSQL_TYPE_STRING`, `MYSQL_TYPE_VARSTRING`, or `MYSQL_TYPE_VARCHAR` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_blob`
  Total number of columns of type `MYSQL_TYPE_TINY_BLOB`, `MYSQL_TYPE_MEDIUM_BLOB`, `MYSQL_TYPE_LONG_BLOB`, or `MYSQL_TYPE_BLOB` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_blob`
  Total number of columns of type `MYSQL_TYPE_TINY_BLOB`, `MYSQL_TYPE_MEDIUM_BLOB`, `MYSQL_TYPE_LONG_BLOB`, or `MYSQL_TYPE_BLOB` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_enum`
  Total number of columns of type `MYSQL_TYPE_ENUM` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_enum`
  Total number of columns of type `MYSQL_TYPE_ENUM` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_set`
  Total number of columns of type `MYSQL_TYPE_SET` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_set`
  Total number of columns of type `MYSQL_TYPE_SET` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_geometry`
  Total number of columns of type `MYSQL_TYPE_GEOMETRY` fetched from a normal query (MySQL text protocol).
`proto_binary_fetched_geometry`
  Total number of columns of type `MYSQL_TYPE_GEOMETRY` fetched from a prepared statement (MySQL binary protocol).
`proto_text_fetched_other`
  Total number of columns of types `MYSQL_TYPE_*` not listed previously fetched from a normal query (MySQL text protocol).

  > Bilginize: In theory, this should always be `0`.

`proto_binary_fetched_other`
  Total number of columns of type `MYSQL_TYPE_*` not listed previously fetched from a prepared statement (MySQL binary protocol).

  > Bilginize: In theory, this should always be `0`.

Connection Related Statistics
`connect_success`
  Total number of successful connection attempts.

  > Bilginize: `connect_success` holds the sum of successful persistent and non-persistent connection attempts. Therefore, the number of successful non-persistent connection attempts is `connect_success - pconnect_success`.

`pconnect_success`
  Total number of successful persistent connection attempts.
`connect_failure`
  Total number of failed connection attempts.
`reconnect`
  This is a process level scope statistic.
`active_connections`
  This is a process level scope statistic. Total number of active persistent and non-persistent connections.

  > Bilginize: The total number of active non-persistent connections is `active_connections - active_persistent_connections`.

`active_persistent_connections`
  This is a process level scope statistic. Total number of active persistent connections.
`explicit_close`
  Total number of explicitly closed connections.

  Örnek 1 Examples of code snippets that cause an explicit close

  -     $link = new mysqli(/* ... */);
        $link->close(/* ... */);

  -     $link = new mysqli(/* ... */);
        $link->connect(/* ... */);

`implicit_close`
  Total number of implicitly closed connections.

  Örnek 2 Examples of code snippets that cause an implicit close

  -     $link = new mysqli(/* ... */);
        $link->real_connect(/* ... */);

  - `unset($link)`
  - Persistent connection: pooled connection has been created with real_connect and there may be unknown options set - close implicitly to avoid returning a connection with unknown options
  - Persistent connection: ping/change_user fails and ext/mysqli closes the connection
  - End of script execution: close connections that have not been closed by the user
`disconnect_close`
  Connection failures indicated by the C API call `mysql_real_connect` during an attempt to establish a connection.
`in_middle_of_command_close`
  This is a process level scope statistic. A connection has been closed in the middle of a command execution (outstanding result sets not fetched, after sending a query and before retrieving an answer, while fetching data, while transferring data with LOAD DATA).
  Uyarı

  Unless asynchronous queries are used, this should only happen if the PHP application terminated unexpectedly, and PHP shuts down the connection automatically.

`init_command_executed_count`
  Total number of init command executions. For example: `mysqli_options(MYSQLI_INIT_COMMAND , $value)`. The number of successful executions is `init_command_executed_count - init_command_failed_count`.
`init_command_failed_count`
  Total number of failed init commands.

`COM_*` Command Related Statistics
`com_quit`
`com_init_db`
`com_query`
`com_field_list`
`com_create_db`
`com_drop_db`
`com_refresh`
`com_shutdown`
`com_statistics`
`com_process_info`
`com_connect`
`com_process_kill`
`com_debug`
`com_ping`
`com_time`
`com_delayed_insert`
`com_change_user`
`com_binlog_dump`
`com_table_dump`
`com_connect_out`
`com_register_slave`
`com_stmt_prepare`
`com_stmt_execute`
`com_stmt_send_long_data`
`com_stmt_close`
`com_stmt_reset`
`com_stmt_set_option`
`com_stmt_fetch`
`com_daemon`
  Total number of attempts to send a certain `COM_*` command from PHP to MySQL. The statistics are incremented after checking the line and immediately before sending the corresponding MySQL client server protocol packet.
  Dikkat

  If MySQLnd fails to send the packet over the wire the statistics will not be decremented. In case of a failure MySQLnd emits a PHP warning Error while sending %s packet. PID=%d.

  Örnek 3 Usage examples

  - Check if PHP sends certain commands to MySQL, for example, check if a client sends `COM_PROCESS_KILL`
  - Calculate the average number of prepared statement executions by comparing `COM_EXECUTE` with `COM_PREPARE`
  - Check if PHP has run any non-prepared SQL statements by checking if `COM_QUERY` is zero
  - Identify PHP scripts that run an excessive number of SQL statements by checking `COM_QUERY` and `COM_EXECUTE`

Miscellaneous Statistics
`explicit_stmt_close`
`implicit_stmt_close`
  This is a process level scope statistic. Total number of closed prepared statements.

  > Bilginize: A prepared statement is always explicitly closed. The only time it's closed implicitly is when preparing it fails.

`mem_emalloc_count`
`mem_emalloc_ammount`
`mem_ecalloc_count`
`mem_ecalloc_ammount`
`mem_realloc_count`
`mem_realloc_ammount`
`mem_efree_count`
`mem_malloc_count`
`mem_malloc_ammount`
`mem_calloc_count`
`mem_calloc_ammount`
`mem_ealloc_count`
`mem_ealloc_ammount`
`mem_free_count`
  This is a process level scope statistic. Memory management calls.
`command_buffer_too_small`
  Number of network command buffer extensions while sending commands from PHP to MySQL. MySQLnd allocates an internal command/network buffer of mysqlnd.net_cmd_buffer_size bytes for every connection. If a MySQL Client Server protocol command, e.g. `COM_QUERY` (normal query), does not fit into the buffer, MySQLnd will grow the buffer to what is needed for sending the command. Whenever the buffer gets extended for one connection `command_buffer_too_small` will be incremented by one. If MySQLnd has to grow the buffer beyond its initial size of mysqlnd.net_cmd_buffer_size bytes for almost every connection, considerations to increase the default size should be made to avoid re-allocations.
`connection_reused`
  The total number of times a persistent connection has been reused.

# Notes

This section provides a collection of miscellaneous notes on MySQL Native Driver usage.

- Using `mysqlnd` means using PHP streams for underlying connectivity. For `mysqlnd`, the PHP streams documentation (Stream) should be consulted on such details as timeout settings, not the documentation for the MySQL Client Library.

# Memory management

Introduction

The MySQL Native Driver manages memory different than the MySQL Client Library. The libraries differ in the way memory is allocated and released, how memory is allocated in chunks while reading results from MySQL, which debug and development options exist, and how results read from MySQL are linked to PHP user variables.

The following notes are intended as an introduction and summary to users interested at understanding the MySQL Native Driver at the C code level.

Memory management functions used

All memory allocation and deallocation is done using the PHP memory management functions. Therefore, the memory consumption of mysqlnd can be tracked using PHP API calls, such as memory_get_usage(). Because memory is allocated and released using the PHP memory management, the changes may not immediately become visible at the operating system level. The PHP memory management acts as a proxy which may delay releasing memory towards the system. Due to this, comparing the memory usage of the MySQL Native Driver and the MySQL Client Library is difficult. The MySQL Client Library is using the operating system memory management calls directly, hence the effects can be observed immediately at the operating system level.

Any memory limit enforced by PHP also affects the MySQL Native Driver. This may cause out of memory errors when fetching large result sets that exceed the size of the remaining memory made available by PHP. Because the MySQL Client Library is not using PHP memory management functions, it does not comply to any PHP memory limit set. If using the MySQL Client Library, depending on the deployment model, the memory footprint of the PHP process may grow beyond the PHP memory limit. But also PHP scripts may be able to process larger result sets as parts of the memory allocated to hold the result sets are beyond the control of the PHP engine.

PHP memory management functions are invoked by the MySQL Native Driver through a lightweight wrapper. Among others, the wrapper makes debugging easier.

Handling of result sets

The various MySQL Server and the various client APIs differentiate between buffered and unbuffered result sets. Unbuffered result sets are transferred row-by-row from MySQL to the client as the client iterates over the results. Buffered results are fetched in their entirety by the client library before passing them on to the client.

The MySQL Native Driver is using PHP Streams for the network communication with the MySQL Server. Results sent by MySQL are fetched from the PHP Streams network buffers into the result buffer of mysqlnd. The result buffer is made of zvals. In a second step the results are made available to the PHP script. This final transfer from the result buffer into PHP variables impacts the memory consumption and is mostly noticeable when using buffered result sets.

By default the MySQL Native Driver tries to avoid holding buffered results twice in memory. Results are kept only once in the internal result buffers and their zvals. When results are fetched into PHP variables by the PHP script, the variables will reference the internal result buffers. Database query results are not copied and kept in memory only once. Should the user modify the contents of a variable holding the database results a copy-on-write must be performed to avoid changing the referenced internal result buffer. The contents of the buffer must not be modified because the user may decide to read the result set a second time. The copy-on-write mechanism is implemented using an additional reference management list and the use of standard zval reference counters. Copy-on-write must also be done if the user reads a result set into PHP variables and frees a result set before the variables are unset.

Generally speaking, this pattern works well for scripts that read a result set once and do not modify variables holding results. Its major drawback is the memory overhead caused by the additional reference management which comes primarily from the fact that user variables holding results cannot be entirely released until the mysqlnd reference management stops referencing them. The MySQL Native driver removes the reference to the user variables when the result set is freed or a copy-on-write is performed. An observer will see the total memory consumption grow until the result set is released. Use the statistics to check whether a script does release result sets explicitly or the driver does implicit releases and thus memory is used for a time longer than necessary. Statistics also help to see how many copy-on-write operations happened.

A PHP script reading many small rows of a buffered result set using a code snippet equal or equivalent to `while ($row = $res->fetch_assoc()) { ... }` may optimize memory consumption by requesting copies instead of references. Albeit requesting copies means keeping results twice in memory, it allows PHP to free the copy contained in `$row` as the result set is being iterated and prior to releasing the result set itself. On a loaded server optimizing peak memory usage may help improving the overall system performance although for an individual script the copy approach may be slower due to additional allocations and memory copy operations.

Monitoring and debugging

There are multiple ways of tracking the memory usage of the MySQL Native Driver. If the goal is to get a quick high level overview or to verify the memory efficiency of PHP scripts, then check the statistics collected by the library. The statistics allow you, for example, to catch SQL statements which generate more results than are processed by a PHP script.

The debug trace log can be configured to record memory management calls. This helps to see when memory is allocated or free'd. However, the size of the requested memory chunks may not be listed.

Some, recent versions of the MySQL Native Driver feature the emulation of random out of memory situations. This feature is meant to be used by the C developers of the library or mysqlnd plugin authors only. Please, search the source code for corresponding PHP configuration settings and further details. The feature is considered private and may be modified at any time without prior notice.

# MySQL Native Driver Plugin API

## İçindekiler

- A comparison of mysqlnd plugins with MySQL Proxy
- Obtaining the mysqlnd plugin API
- MySQL Native Driver Plugin Architecture
- The mysqlnd plugin API
- Getting started building a mysqlnd plugin

The MySQL Native Driver Plugin API is a feature of MySQL Native Driver, or `mysqlnd`. `Mysqlnd` plugins operate in the layer between PHP applications and the MySQL server. This is comparable to MySQL Proxy. MySQL Proxy operates on a layer between any MySQL client application, for example, a PHP application and, the MySQL server. `Mysqlnd` plugins can undertake typical MySQL Proxy tasks such as load balancing, monitoring and performance optimizations. Due to the different architecture and location, `mysqlnd` plugins do not have some of MySQL Proxy's disadvantages. For example, with plugins, there is no single point of failure, no dedicated proxy server to deploy, and no new programming language to learn (Lua).

A `mysqlnd` plugin can be thought of as an extension to `mysqlnd`. Plugins can intercept the majority of `mysqlnd` functions. The `mysqlnd` functions are called by the PHP MySQL extensions such as `ext/mysql`, `ext/mysqli`, and `PDO_MYSQL`. As a result, it is possible for a `mysqlnd` plugin to intercept all calls made to these extensions from the client application.

Internal `mysqlnd` function calls can also be intercepted, or replaced. There are no restrictions on manipulating `mysqlnd` internal function tables. It is possible to set things up so that when certain `mysqlnd` functions are called by the extensions that use `mysqlnd`, the call is directed to the appropriate function in the `mysqlnd` plugin. The ability to manipulate `mysqlnd` internal function tables in this way allows maximum flexibility for plugins.

`Mysqlnd` plugins are in fact PHP Extensions, written in C, that use the `mysqlnd` plugin API (which is built into MySQL Native Driver, `mysqlnd`). Plugins can be made 100% transparent to PHP applications. No application changes are needed because plugins operate on a different layer. The `mysqlnd` plugin can be thought of as operating in a layer below `mysqlnd`.

The following list represents some possible applications of `mysqlnd` plugins.

- Load Balancing
  - Read/Write Splitting. An example of this is the PECL/mysqlnd_ms (Master Slave) extension. This extension splits read/write queries for a replication setup.
  - Failover
  - Round-Robin, least loaded
- Monitoring
  - Query Logging
  - Query Analysis
  - Query Auditing. An example of this is the PECL/mysqlnd_sip (SQL Injection Protection) extension. This extension inspects queries and executes only those that are allowed according to a ruleset.
- Performance
  - Caching. An example of this is the PECL/mysqlnd_qc (Query Cache) extension.
  - Throttling
  - Sharding. An example of this is the PECL/mysqlnd_mc (Multi Connect) extension. This extension will attempt to split a SELECT statement into n-parts, using SELECT ... LIMIT part_1, SELECT LIMIT part_n. It sends the queries to distinct MySQL servers and merges the result at the client.

MySQL Native Driver Plugins Available

There are a number of mysqlnd plugins already available. These include:

- PECL/mysqlnd_mc - Multi Connect plugin.
- PECL/mysqlnd_ms - Master Slave plugin.
- PECL/mysqlnd_qc - Query Cache plugin.
- PECL/mysqlnd_pscache - Prepared Statement Handle Cache plugin.
- PECL/mysqlnd_sip - SQL Injection Protection plugin.
- PECL/mysqlnd_uh - User Handler plugin.

## A comparison of mysqlnd plugins with MySQL Proxy

`Mysqlnd` plugins and MySQL Proxy are different technologies using different approaches. Both are valid tools for solving a variety of common tasks such as load balancing, monitoring, and performance enhancements. An important difference is that MySQL Proxy works with all MySQL clients, whereas `mysqlnd` plugins are specific to PHP applications.

As a PHP Extension, a `mysqlnd` plugin gets installed on the PHP application server, along with the rest of PHP. MySQL Proxy can either be run on the PHP application server or can be installed on a dedicated machine to handle multiple PHP application servers.

Deploying MySQL Proxy on the application server has two advantages:

1. No single point of failure
2. Easy to scale out (horizontal scale out, scale by client)

MySQL Proxy (and `mysqlnd` plugins) can solve problems easily which otherwise would have required changes to existing applications.

However, MySQL Proxy does have some disadvantages:

- MySQL Proxy is a new component and technology to master and deploy.
- MySQL Proxy requires knowledge of the Lua scripting language.

MySQL Proxy can be customized with C and Lua programming. Lua is the preferred scripting language of MySQL Proxy. For most PHP experts Lua is a new language to learn. A `mysqlnd` plugin can be written in C. It is also possible to write plugins in PHP using » PECL/mysqlnd_uh.

MySQL Proxy runs as a daemon - a background process. MySQL Proxy can recall earlier decisions, as all state can be retained. However, a `mysqlnd` plugin is bound to the request-based lifecycle of PHP. MySQL Proxy can also share one-time computed results among multiple application servers. A `mysqlnd` plugin would need to store data in a persistent medium to be able to do this. Another daemon would need to be used for this purpose, such as Memcache. This gives MySQL Proxy an advantage in this case.

MySQL Proxy works on top of the wire protocol. With MySQL Proxy you have to parse and reverse engineer the MySQL Client Server Protocol. Actions are limited to those that can be achieved by manipulating the communication protocol. If the wire protocol changes (which happens very rarely) MySQL Proxy scripts would need to be changed as well.

`Mysqlnd` plugins work on top of the C API, which mirrors the `libmysqlclient` client. This C API is basically a wrapper around the MySQL Client Server protocol, or wire protocol, as it is sometimes called. You can intercept all C API calls. PHP makes use of the C API, therefore you can hook all PHP calls, without the need to program at the level of the wire protocol.

`Mysqlnd` implements the wire protocol. Plugins can therefore parse, reverse engineer, manipulate and even replace the communication protocol. However, this is usually not required.

As plugins allow you to create implementations that use two levels (C API and wire protocol), they have greater flexibility than MySQL Proxy. If a `mysqlnd` plugin is implemented using the C API, any subsequent changes to the wire protocol do not require changes to the plugin itself.

## Obtaining the mysqlnd plugin API

The `mysqlnd` plugin API is simply part of the MySQL Native Driver PHP extension, `ext/mysqlnd`. Development started on the `mysqlnd` plugin API in December 2009. It is developed as part of the PHP source repository, and as such is available to the public either via Git, or through source snapshot downloads.

Plugin developers can determine the `mysqlnd` version through accessing `MYSQLND_VERSION`, which is a string of the format mysqlnd 8.3.17, or through `MYSQLND_VERSION_ID`, which is an integer such as 50007. Developers can calculate the version number as follows:

MYSQLND_VERSION_ID calculation table
Version (part) | Example
--- | ---
Major*10000 | 5*10000 = 50000
Minor*100 | 0*100 = 0
Patch | 7 = 7
MYSQLND_VERSION_ID | 50007

During development, developers should refer to the `mysqlnd` version number for compatibility and version tests, as several iterations of `mysqlnd` could occur during the lifetime of a PHP development branch with a single PHP version number.

## MySQL Native Driver Plugin Architecture

This section provides an overview of the `mysqlnd` plugin architecture.

MySQL Native Driver Overview

Before developing `mysqlnd` plugins, it is useful to know a little of how `mysqlnd` itself is organized. `Mysqlnd` consists of the following modules:

The mysqlnd organization chart, per module
Modules Statistics | mysqlnd_statistics.c
--- | ---
Connection | mysqlnd.c
Resultset | mysqlnd_result.c
Resultset Metadata | mysqlnd_result_meta.c
Statement | mysqlnd_ps.c
Network | mysqlnd_net.c
Wire protocol | mysqlnd_wireprotocol.c

C Object-Oriented Paradigm

At the code level, `mysqlnd` uses a C pattern for implementing object orientation.

In C you use a `struct` to represent an object. Members of the struct represent object properties. Struct members pointing to functions represent methods.

Unlike with other languages such as C++ or Java, there are no fixed rules on inheritance in the C object-oriented paradigm. However, there are some conventions that need to be followed that will be discussed later.

The PHP Life Cycle

When considering the PHP life cycle there are two basic cycles:

- PHP engine startup and shutdown cycle
- Request cycle

When the PHP engine starts up it will call the module initialization (MINIT) function of each registered extension. This allows each module to setup variables and allocate resources that will exist for the lifetime of the PHP engine process. When the PHP engine shuts down it will call the module shutdown (MSHUTDOWN) function of each extension.

During the lifetime of the PHP engine it will receive a number of requests. Each request constitutes another life cycle. On each request the PHP engine will call the request initialization function of each extension. The extension can perform any variable setup and resource allocation required for request processing. As the request cycle ends the engine calls the request shutdown (RSHUTDOWN) function of each extension so the extension can perform any cleanup required.

How a plugin works

A `mysqlnd` plugin works by intercepting calls made to `mysqlnd` by extensions that use `mysqlnd`. This is achieved by obtaining the `mysqlnd` function table, backing it up, and replacing it by a custom function table, which calls the functions of the plugin as required.

The following code shows how the `mysqlnd` function table is replaced:

    /* a place to store original function table */
    struct st_mysqlnd_conn_methods org_methods;

    void minit_register_hooks(TSRMLS_D) {
      /* active function table */
      struct st_mysqlnd_conn_methods * current_methods
        = mysqlnd_conn_get_methods();

      /* backup original function table */
      memcpy(&org_methods, current_methods,
        sizeof(struct st_mysqlnd_conn_methods);

      /* install new methods */
      current_methods->query = MYSQLND_METHOD(my_conn_class, query);
    }

Connection function table manipulations must be done during Module Initialization (MINIT). The function table is a global shared resource. In an multi-threaded environment, with a TSRM build, the manipulation of a global shared resource during the request processing will almost certainly result in conflicts.

> Bilginize: Do not use any fixed-size logic when manipulating the `mysqlnd` function table: new methods may be added at the end of the function table. The function table may change at any time in the future.

Calling parent methods

If the original function table entries are backed up, it is still possible to call the original function table entries - the parent methods.

In some cases, such as for `Connection::stmt_init()`, it is vital to call the parent method prior to any other activity in the derived method.

    MYSQLND_METHOD(my_conn_class, query)(MYSQLND *conn,
      const char *query, unsigned int query_len TSRMLS_DC) {

      php_printf("my_conn_class::query(query = %s)\n", query);

      query = "SELECT 'query rewritten' FROM DUAL";
      query_len = strlen(query);

      return org_methods.query(conn, query, query_len); /* return with call to parent */
    }

Extending properties

A `mysqlnd` object is represented by a C struct. It is not possible to add a member to a C struct at run time. Users of `mysqlnd` objects cannot simply add properties to the objects.

Arbitrary data (properties) can be added to a `mysqlnd` objects using an appropriate function of the `mysqlnd_plugin_get_plugin_<object>_data()` family. When allocating an object `mysqlnd` reserves space at the end of the object to hold a `void *` pointer to arbitrary data. `mysqlnd` reserves space for one `void *` pointer per plugin.

The following table shows how to calculate the position of the pointer for a specific plugin:

Pointer calculations for mysqlnd
Memory address | Contents
--- | ---
0 | Beginning of the mysqlnd object C struct
n | End of the mysqlnd object C struct
n + (m x sizeof(void*)) | void* to object data of the m-th plugin

If you plan to subclass any of the `mysqlnd` object constructors, which is allowed, you must keep this in mind!

The following code shows extending properties:

    /* any data we want to associate */
    typedef struct my_conn_properties {
      unsigned long query_counter;
    } MY_CONN_PROPERTIES;

    /* plugin id */
    unsigned int my_plugin_id;

    void minit_register_hooks(TSRMLS_D) {
      /* obtain unique plugin ID */
      my_plugin_id = mysqlnd_plugin_register();
      /* snip - see Extending Connection: methods */
    }

    static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
      MY_CONN_PROPERTIES** props;
      props = (MY_CONN_PROPERTIES**)mysqlnd_plugin_get_plugin_connection_data(
        conn, my_plugin_id);
      if (!props || !(*props)) {
        *props = mnd_pecalloc(1, sizeof(MY_CONN_PROPERTIES), conn->persistent);
        (*props)->query_counter = 0;
      }
      return props;
    }

The plugin developer is responsible for the management of plugin data memory.

Use of the `mysqlnd` memory allocator is recommended for plugin data. These functions are named using the convention: `mnd_*loc()`. The `mysqlnd` allocator has some useful features, such as the ability to use a debug allocator in a non-debug build.

When and how to subclass
| When to subclass? | Each instance has its own private function table? | How to subclass?
--- | --- | --- | ---
Connection (MYSQLND) | MINIT | No | mysqlnd_conn_get_methods()
Resultset (MYSQLND_RES) | MINIT or later | Yes | mysqlnd_result_get_methods() or object method function table manipulation
Resultset Meta (MYSQLND_RES_METADATA) | MINIT | No | mysqlnd_result_metadata_get_methods()
Statement (MYSQLND_STMT) | MINIT | No | mysqlnd_stmt_get_methods()
Network (MYSQLND_NET) | MINIT or later | Yes | mysqlnd_net_get_methods() or object method function table manipulation
Wire protocol (MYSQLND_PROTOCOL) | MINIT or later | Yes | mysqlnd_protocol_get_methods() or object method function table manipulation

You must not manipulate function tables at any time later than MINIT if it is not allowed according to the above table.

Some classes contain a pointer to the method function table. All instances of such a class will share the same function table. To avoid chaos, in particular in threaded environments, such function tables must only be manipulated during MINIT.

Other classes use copies of a globally shared function table. The class function table copy is created together with the object. Each object uses its own function table. This gives you two options: you can manipulate the default function table of an object at MINIT, and you can additionally refine methods of an object without impacting other instances of the same class.

The advantage of the shared function table approach is performance. There is no need to copy a function table for each and every object.

Constructor status
Type | Allocation, construction, reset | Can be modified? | Caller
--- | --- | --- | ---
Connection (MYSQLND) | mysqlnd_init() | No | mysqlnd_connect()
Resultset(MYSQLND_RES) | Allocation: Connection::result_init() Reset and re-initialized during: Result::use_result() Result::store_result | Yes, but call parent! | Connection::list_fields() Statement::get_result() Statement::prepare() (Metadata only) Statement::resultMetaData()
Resultset Meta (MYSQLND_RES_METADATA) | Connection::result_meta_init() | Yes, but call parent! | Result::read_result_metadata()
Statement (MYSQLND_STMT) | Connection::stmt_init() | Yes, but call parent! | Connection::stmt_init()
Network (MYSQLND_NET) | mysqlnd_net_init() | No | Connection::init()
Wire protocol (MYSQLND_PROTOCOL) | mysqlnd_protocol_init() | No | Connection::init()

It is strongly recommended that you do not entirely replace a constructor. The constructors perform memory allocations. The memory allocations are vital for the `mysqlnd` plugin API and the object logic of `mysqlnd`. If you do not care about warnings and insist on hooking the constructors, you should at least call the parent constructor before doing anything in your constructor.

Regardless of all warnings, it can be useful to subclass constructors. Constructors are the perfect place for modifying the function tables of objects with non-shared object tables, such as Resultset, Network, Wire Protocol.

Destruction status
Type | Derived method must call parent? | Destructor
--- | --- | ---
Connection | yes, after method execution | free_contents(), end_psession()
Resultset | yes, after method execution | free_result()
Resultset Meta | yes, after method execution | free()
Statement | yes, after method execution | dtor(), free_stmt_content()
Network | yes, after method execution | free()
Wire protocol | yes, after method execution | free()

The destructors are the appropriate place to free properties, `mysqlnd_plugin_get_plugin_<object>_data()`.

The listed destructors may not be equivalent to the actual `mysqlnd` method freeing the object itself. However, they are the best possible place for you to hook in and free your plugin data. As with constructors you may replace the methods entirely but this is not recommended. If multiple methods are listed in the above table you will need to hook all of the listed methods and free your plugin data in whichever method is called first by `mysqlnd`.

The recommended method for plugins is to simply hook the methods, free your memory and call the parent implementation immediately following this.

## The mysqlnd plugin API

The following is a list of functions provided in the `mysqlnd` plugin API:

- mysqlnd_plugin_register()
- mysqlnd_plugin_count()
- mysqlnd_plugin_get_plugin_connection_data()
- mysqlnd_plugin_get_plugin_result_data()
- mysqlnd_plugin_get_plugin_stmt_data()
- mysqlnd_plugin_get_plugin_net_data()
- mysqlnd_plugin_get_plugin_protocol_data()
- mysqlnd_conn_get_methods()
- mysqlnd_result_get_methods()
- mysqlnd_result_meta_get_methods()
- mysqlnd_stmt_get_methods()
- mysqlnd_net_get_methods()
- mysqlnd_protocol_get_methods()

There is no formal definition of what a plugin is and how a plugin mechanism works.

Components often found in plugins mechanisms are:

- A plugin manager
- A plugin API
- Application services (or modules)
- Application service APIs (or module APIs)

The `mysqlnd` plugin concept employs these features, and additionally enjoys an open architecture.

No Restrictions

A plugin has full access to the inner workings of `mysqlnd`. There are no security limits or restrictions. Everything can be overwritten to implement friendly or hostile algorithms. It is recommended you only deploy plugins from a trusted source.

As discussed previously, plugins can use pointers freely. These pointers are not restricted in any way, and can point into another plugin's data. Simple offset arithmetic can be used to read another plugin's data.

It is recommended that you write cooperative plugins, and that you always call the parent method. The plugins should always cooperate with `mysqlnd` itself.

Issues: an example of chaining and cooperation
Extension | mysqlnd.query() pointer | call stack if calling parent
--- | --- | ---
ext/mysqlnd | mysqlnd.query() | mysqlnd.query
ext/mysqlnd_cache | mysqlnd_cache.query() | mysqlnd_cache.query() mysqlnd.query
ext/mysqlnd_monitor | mysqlnd_monitor.query() | mysqlnd_monitor.query() mysqlnd_cache.query() mysqlnd.query

In this scenario, a cache (`ext/mysqlnd_cache`) and a monitor (`ext/mysqlnd_monitor`) plugin are loaded. Both subclass `Connection::query()`. Plugin registration happens at `MINIT` using the logic shown previously. PHP calls extensions in alphabetical order by default. Plugins are not aware of each other and do not set extension dependencies.

By default the plugins call the parent implementation of the query method in their derived version of the method.

PHP Extension Recap

This is a recap of what happens when using an example plugin, `ext/mysqlnd_plugin`, which exposes the `mysqlnd` C plugin API to PHP:

- Any PHP MySQL application tries to establish a connection to 192.168.2.29
- The PHP application will either use `ext/mysql`, `ext/mysqli` or `PDO_MYSQL`. All three PHP MySQL extensions use `mysqlnd` to establish the connection to 192.168.2.29.
- `Mysqlnd` calls its connect method, which has been subclassed by `ext/mysqlnd_plugin`.
- `ext/mysqlnd_plugin` calls the userspace hook `proxy::connect()` registered by the user.
- The userspace hook changes the connection host IP from 192.168.2.29 to 127.0.0.1 and returns the connection established by `parent::connect()`.
- `ext/mysqlnd_plugin` performs the equivalent of `parent::connect(127.0.0.1)` by calling the original `mysqlnd` method for establishing a connection.
- `ext/mysqlnd` establishes a connection and returns to `ext/mysqlnd_plugin`. `ext/mysqlnd_plugin` returns as well.
- Whatever PHP MySQL extension had been used by the application, it receives a connection to 127.0.0.1. The PHP MySQL extension itself returns to the PHP application. The circle is closed.

## Getting started building a mysqlnd plugin

It is important to remember that a `mysqlnd` plugin is itself a PHP extension.

The following code shows the basic structure of the MINIT function that will be used in the typical `mysqlnd` plugin:

    /* my_php_mysqlnd_plugin.c */

     static PHP_MINIT_FUNCTION(mysqlnd_plugin) {
      /* globals, ini entries, resources, classes */

      /* register mysqlnd plugin */
      mysqlnd_plugin_id = mysqlnd_plugin_register();

      conn_m = mysqlnd_get_conn_methods();
      memcpy(org_conn_m, conn_m,
        sizeof(struct st_mysqlnd_conn_methods));

      conn_m->query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
      conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
    }

    /* my_mysqlnd_plugin.c */

     enum_func_status MYSQLND_METHOD(mysqlnd_plugin_conn, query)(/* ... */) {
      /* ... */
    }
    enum_func_status MYSQLND_METHOD(mysqlnd_plugin_conn, connect)(/* ... */) {
      /* ... */
    }

Task analysis: from C to userspace

     class proxy extends mysqlnd_plugin_connection {
      public function connect($host, ...) { .. }
    }
    mysqlnd_plugin_set_conn_proxy(new proxy());

Process:

1. PHP: user registers plugin callback
2. PHP: user calls any PHP MySQL API to connect to MySQL
3. C: ext/*mysql* calls mysqlnd method
4. C: mysqlnd ends up in ext/mysqlnd_plugin

5. C: ext/mysqlnd_plugin

   1. Calls userspace callback
   2. Or original `mysqlnd` method, if userspace callback not set

You need to carry out the following:

1. Write a class "mysqlnd_plugin_connection" in C
2. Accept and register proxy object through "mysqlnd_plugin_set_conn_proxy()"
3. Call userspace proxy methods from C (optimization - zend_interfaces.h)

Userspace object methods can either be called using `call_user_function()` or you can operate at a level closer to the Zend Engine and use `zend_call_method()`.

Optimization: calling methods from C using zend_call_method

The following code snippet shows the prototype for the `zend_call_method` function, taken from zend_interfaces.h.

     ZEND_API zval* zend_call_method(
      zval **object_pp, zend_class_entry *obj_ce,
      zend_function **fn_proxy, char *function_name,
      int function_name_len, zval **retval_ptr_ptr,
      int param_count, zval* arg1, zval* arg2 TSRMLS_DC
    );

Zend API supports only two arguments. You may need more, for example:

     enum_func_status (*func_mysqlnd_conn__connect)(
      MYSQLND *conn, const char *host,
      const char * user, const char * passwd,
      unsigned int passwd_len, const char * db,
      unsigned int db_len, unsigned int port,
      const char * socket, unsigned int mysql_flags TSRMLS_DC
    );

To get around this problem you will need to make a copy of `zend_call_method()` and add a facility for additional parameters. You can do this by creating a set of `MY_ZEND_CALL_METHOD_WRAPPER` macros.

Calling PHP userspace

This code snippet shows the optimized method for calling a userspace function from C:

    /* my_mysqlnd_plugin.c */

    MYSQLND_METHOD(my_conn_class,connect)(
      MYSQLND *conn, const char *host /* ... */ TSRMLS_DC) {
      enum_func_status ret = FAIL;
      zval * global_user_conn_proxy = fetch_userspace_proxy();
      if (global_user_conn_proxy) {
        /* call userspace proxy */
        ret = MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, host, /*...*/);
      } else {
        /* or original mysqlnd method = do nothing, be transparent */
        ret = org_methods.connect(conn, host, user, passwd,
              passwd_len, db, db_len, port,
              socket, mysql_flags TSRMLS_CC);
      }
      return ret;
    }

Calling userspace: simple arguments

    /* my_mysqlnd_plugin.c */

     MYSQLND_METHOD(my_conn_class,connect)(
      /* ... */, const char *host, /* ...*/) {
      /* ... */
      if (global_user_conn_proxy) {
        /* ... */
        zval* zv_host;
        MAKE_STD_ZVAL(zv_host);
        ZVAL_STRING(zv_host, host, 1);
        MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, zv_retval, zv_host /*, ...*/);
        zval_ptr_dtor(&zv_host);
        /* ... */
      }
      /* ... */
    }

Calling userspace: structs as arguments

    /* my_mysqlnd_plugin.c */

    MYSQLND_METHOD(my_conn_class, connect)(
      MYSQLND *conn, /* ...*/) {
      /* ... */
      if (global_user_conn_proxy) {
        /* ... */
        zval* zv_conn;
        ZEND_REGISTER_RESOURCE(zv_conn, (void *)conn, le_mysqlnd_plugin_conn);
        MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, zv_retval, zv_conn, zv_host /*, ...*/);
        zval_ptr_dtor(&zv_conn);
        /* ... */
      }
      /* ... */
    }

The first argument of many `mysqlnd` methods is a C "object". For example, the first argument of the connect() method is a pointer to `MYSQLND`. The struct MYSQLND represents a `mysqlnd` connection object.

The `mysqlnd` connection object pointer can be compared to a standard I/O file handle. Like a standard I/O file handle a `mysqlnd` connection object shall be linked to the userspace using the PHP resource variable type.

From C to userspace and back

     class proxy extends mysqlnd_plugin_connection {
      public function connect($conn, $host, ...) {
        /* "pre" hook */
        printf("Connecting to host = '%s'\n", $host);
        debug_print_backtrace();
        return parent::connect($conn);
      }

      public function query($conn, $query) {
        /* "post" hook */
        $ret = parent::query($conn, $query);
        printf("Query = '%s'\n", $query);
        return $ret;
      }
    }
    mysqlnd_plugin_set_conn_proxy(new proxy());

PHP users must be able to call the parent implementation of an overwritten method.

As a result of subclassing it is possible to refine only selected methods and you can choose to have "pre" or "post" hooks.

Built-in class: mysqlnd_plugin_connection::connect()

    /*  my_mysqlnd_plugin_classes.c */

     PHP_METHOD("mysqlnd_plugin_connection", connect) {
      /* ... simplified! ... */
      zval* mysqlnd_rsrc;
      MYSQLND* conn;
      char* host; int host_len;
      if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs",
        &mysqlnd_rsrc, &host, &host_len) == FAILURE) {
        RETURN_NULL();
      }
      ZEND_FETCH_RESOURCE(conn, MYSQLND* conn, &mysqlnd_rsrc, -1,
        "Mysqlnd Connection", le_mysqlnd_plugin_conn);
      if (PASS == org_methods.connect(conn, host, /* simplified! */ TSRMLS_CC))
        RETVAL_TRUE;
      else
        RETVAL_FALSE;
    }

- Overview
- Installation
- Çalışma Anı Yapılandırması
- Incompatibilities
- Persistent Connections
- Statistics
- Notes
- Memory management
- MySQL Native Driver Plugin API
  - A comparison of mysqlnd plugins with MySQL Proxy
  - Obtaining the mysqlnd plugin API
  - MySQL Native Driver Plugin Architecture
  - The mysqlnd plugin API
  - Getting started building a mysqlnd plugin

- Overview of the MySQL PHP drivers
  - Terminology overview
  - Choosing an API
  - Choosing a library
  - Concepts
- MySQLi — MySQL Improved Extension
  - Overview
  - Quick start guide
  - Yapılandırma/Kurulum
  - The mysqli Extension and Persistent Connections
  - Öntanımlı Sabitler
  - Notes
  - The MySQLi Extension Function Summary
  - mysqli — The mysqli class
  - mysqli_stmt — The mysqli_stmt class
  - mysqli_result — The mysqli_result class
  - mysqli_driver — The mysqli_driver class
  - mysqli_warning — The mysqli_warning class
  - mysqli_sql_exception — The mysqli_sql_exception class
  - Aliases and deprecated Mysqli İşlevleri
  - Sürüm Bilgisi
- Mysql_xdevapi
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Sürüm Bilgisi
  - Örnekler
  - Mysql_xdevapi İşlevleri
  - mysql_xdevapi\BaseResult — BaseResult interface
  - mysql_xdevapi\Client — Client class
  - mysql_xdevapi\Collection — Collection class
  - mysql_xdevapi\CollectionAdd — CollectionAdd class
  - mysql_xdevapi\CollectionFind — CollectionFind class
  - mysql_xdevapi\CollectionModify — CollectionModify class
  - mysql_xdevapi\CollectionRemove — CollectionRemove class
  - mysql_xdevapi\ColumnResult — ColumnResult class
  - mysql_xdevapi\CrudOperationBindable — CrudOperationBindable interface
  - mysql_xdevapi\CrudOperationLimitable — CrudOperationLimitable interface
  - mysql_xdevapi\CrudOperationSkippable — CrudOperationSkippable interface
  - mysql_xdevapi\CrudOperationSortable — CrudOperationSortable interface
  - mysql_xdevapi\DatabaseObject — DatabaseObject interface
  - mysql_xdevapi\DocResult — DocResult class
  - mysql_xdevapi\Exception — Exception class
  - mysql_xdevapi\Executable — Executable interface
  - mysql_xdevapi\ExecutionStatus — ExecutionStatus class
  - mysql_xdevapi\Expression — Expression class
  - mysql_xdevapi\Result — Result class
  - mysql_xdevapi\RowResult — RowResult class
  - mysql_xdevapi\Schema — Schema class
  - mysql_xdevapi\SchemaObject — SchemaObject interface
  - mysql_xdevapi\Session — Session class
  - mysql_xdevapi\SqlStatement — SqlStatement class
  - mysql_xdevapi\SqlStatementResult — SqlStatementResult class
  - mysql_xdevapi\Statement — Statement class
  - mysql_xdevapi\Table — Table class
  - mysql_xdevapi\TableDelete — TableDelete class
  - mysql_xdevapi\TableInsert — TableInsert class
  - mysql_xdevapi\TableSelect — TableSelect class
  - mysql_xdevapi\TableUpdate — TableUpdate class
  - mysql_xdevapi\Warning — Warning class
- MySQL (Özgün) — Özgün MySQL API
  - Yapılandırma/Kurulum
  - Sürüm Bilgisi
  - Öntanımlı Sabitler
  - Örnekler
  - MySQL İşlevleri
- Mysqlnd — MySQL Native Driver
  - Overview
  - Installation
  - Çalışma Anı Yapılandırması
  - Incompatibilities
  - Persistent Connections
  - Statistics
  - Notes
  - Memory management
  - MySQL Native Driver Plugin API

# Oracle OCI8

# Giriş

Uyarı

This extension is UNBUNDLED as of PHP 8.4.0.

These functions allow you to access Oracle Database. They support SQL and PL/SQL statements. Basic features include transaction control, binding of PHP variables to Oracle placeholders, and support for large object (LOB) types and collections. Oracle's scalability features such as Database Resident Connection Pooling (DRCP) and result caching are also supported.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Testing
- Çalışma Anı Yapılandırması

## Gereksinimler

OCI8 3.0 is included with PHP 8. It is also available from » PECL. For PHP 7, use OCI8 2.2 from » PECL. OCI8 requires Oracle 10g or later Oracle client libraries.

If the Oracle Database is on the same machine as PHP, the database software already contains the necessary libraries and header files. When PHP is on a different machine, use the free » Oracle Instant Client libraries.

To use Oracle Instant Client, install the `Basic` or `Basic Light` Oracle Instant Client ZIP file, RPM package, or DMG package. When building OCI8 from source code, also install the Instant Client `SDK`.

You must run PHP with the same, or a more recent, version of the Oracle libraries that OCI8 was built with.

> Bilginize:

> Oracle's standard client-server network interoperability allows connections between different versions of Oracle Client and Oracle Database. For certified configurations see Oracle Support's Doc ID 207303.1. In summary, Oracle Client 19, 18 and 12.2 can connect to Oracle Database 11.2 or greater. Oracle Client 12.1 can connect to Oracle Database 10.2 or greater. Oracle Client 11.2 can connect to Oracle Database 9.2 or greater.

> Bilginize:

> Full OCI8 feature support is only available when using the most recent versions of the Oracle client libraries and database.

## Kurulum

## Configuring PHP with OCI8

Review the previous Requirements section before configuring OCI8.

Before starting the web server, OCI8 typically requires several Oracle environment variables (see below) to locate libraries, point to configuration files, and set some basic properties such as the character set used by Oracle libraries. The variables must be set before any PHP process starts.

The PHP binary must link with the same, or more recent, major version of Oracle libraries as it was configured with. For example, if you build OCI8 with Oracle 19 libraries, then PHP should also be deployed and run with Oracle 19 libraries. PHP applications can connect to other versions of Oracle Database, since Oracle has client-server cross-version compatibility.

## Installing OCI8 from PECL Using the pecl Command

The OCI8 extension can be added to an existing PHP installation by using the » PECL repository.

- If you are behind a firewall, set PEAR's proxy, for example:

      pear config-set http_proxy http://my-proxy.example.com:80/

- Run

      pecl install oci8

  For PHP 7, use `pecl install oci8-2.2.0`

- When prompted, enter either the value of `$ORACLE_HOME`, or `instantclient,/path/to/instant/client/lib`.

  Note: Do not enter variable names like `$ORACLE_HOME` or `$HOME` because `pecl` will not expand them. Instead, enter an expanded path, for example `/opt/oracle/product/19c/dbhome_1` or `instantclient,/Users/myname/Downloads/instantclient_19_8`

- If you get an error `oci8_dtrace_gen.h: No such file or directory`, it means PHP was built with DTrace Dynamic Tracing enabled. Install using:

      $ export PHP_DTRACE=yes
      $ pecl install oci8

- Edit your php.ini file and add the line:

      extension=oci8.so

  Make sure the php.ini directive extension_dir is set to the directory that oci8.so was installed in.

## Installing OCI8 from PECL Using phpize

To install OCI8 on an existing PHP installation when the `pecl` command is not available, manually download the » PECL OCI8 package, e.g. oci8-3.0.0.tgz.

- Extract the package:

      tar -zxf oci8-3.0.0.tgz
      cd oci8-3.0.0

- Prepare the package:

      phpize

- Configure the package, either using `$ORACLE_HOME` or Instant Client

      ./configure -with-oci8=shared,$ORACLE_HOME

  or

      ./configure -with-oci8=shared,instantclient,/path/to/instant/client/lib

- Install the package:

      make install

- If you get an error `oci8_dtrace_gen.h: No such file or directory`, it means PHP was built with DTrace Dynamic Tracing enabled. Re-run the `configure` and `make` commands after setting this environment variable:

      $ export PHP_DTRACE=yes

- Edit your php.ini file and add the line:

      extension=oci8.so

  Make sure the php.ini directive extension_dir is set to the directory that oci8.so was installed in.

## Installing OCI8 as a Shared Extension when Building PHP

If you are building PHP from source code, the configuration `shared` option can be used to build OCI8 as a shared library that can be dynamically loaded into PHP. Building a shared extension allows OCI8 to be upgraded easily without impacting the rest of PHP.

Configure OCI8 using one of the following configure options.

- If using the free » Oracle Instant Client libraries, then do:

      ./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib

  If Instant Client 12.2 (or earlier) is installed from ZIP files, make sure to create the library symbolic link first, for example `ln -s libclntsh.so.12.1 libclntsh.so`.

  If using an RPM-based installation of Oracle Instant Client, the configure line will look like this:

      ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/<version>/client/lib

  For example, --with-oci8=shared,instantclient,/usr/lib/oracle/19.9/client/lib

- If using an Oracle database or full Oracle Client installation then do:

      ./configure --with-oci8=shared,$ORACLE_HOME

  Make sure the web server user (`nobody`, `www`) has access to the libraries, initialization files and tnsnames.ora (if used) under the `$ORACLE_HOME` directory. With Oracle 10gR2, you may need to run the $ORACLE_HOME/install/changePerm.sh utility to give directory access.

After configuration, follow the usual PHP building procedure, e.g. make install. The OCI8 shared extension oci8.so library will be created. It may need to be manually moved to the PHP extension directory, specified by the extension_dir option in your php.ini file.

To complete installation of OCI8, edit php.ini and add the line:

    extension=oci8.so

## Installing OCI8 as a Statically Compiled Extension when Building PHP

If you are building PHP from source code, you can configure PHP to include OCI8 as a static extension using one of the following configure options.

- If using Oracle Instant Client, then do:

      ./configure --with-oci8=instantclient,/path/to/instant/client/lib

- If using an Oracle database or full Oracle Client installation then do:

      ./configure --with-oci8=$ORACLE_HOME

After configuration, follow the usual PHP building procedure, e.g. make install. After successful compilation, you do not need to add oci8.so to php.ini. No additional build steps are required.

## Installing OCI8 on Windows

The OCI8 extension can be added to an existing PHP installation by using the DLLs from » PECL repository or the libraries in your PHP installation's `ext` directory.

With Oracle 12c (or later) libraries, uncomment one of the php.ini lines `extension=php_oci8_12c.dll` or `extension=php_oci8_11g.dll` or `extension=php_oci8.dll`. Only one of these DLLs may be enabled at a time. DLLs with higher versions may contain more functionality. Not all DLLs may be available for all versions of PHP. Make sure extension_dir is set to the directory containing the PHP extension DLLs.

If using Instant Client, set the system PATH environment variable to the Oracle library directory.

## Setting the Oracle Environment

Before using this extension, make sure that the Oracle environment variables are properly set for the web daemon user. If your web server is automatically started at boot time then make sure that the boot-time environment is also configured correctly.

> Bilginize:

> Do not set Oracle environment variables using putenv() in a PHP script because Oracle libraries may be loaded and initialized before your script runs. Variables set with putenv() may then cause conflicts, crashes, or unpredictable behavior. Some functions may work but others might give subtle errors. The variables should be set up before the web server is started.

On Red Hat Linux and variants, export variables at the end of /etc/sysconfig/httpd. Other systems with Apache 2 may use an envvars script in the Apache bin directory. A third option, the Apache `SetEnv` directive in httpd.conf, may work in some systems but is known to be insufficient in others.

To check that environment variables are set correctly, use phpinfo() and check the Environment (not the Apache Environment) section contains the expected variables.

The variables that might be needed are included in the following table. Refer to the Oracle documentation for more information on all the available variables.

Common Oracle Environment Variables
Name | Purpose
--- | ---
ORACLE_HOME | Contains the directory of the full Oracle Database software. Do not set this when using Oracle Instant Client as it is unnecessary and may cause installation problems.
ORACLE_SID | Contains the name of the database on the local machine to be connected to. There is no need to set this if you using Oracle Instant Client, or always pass the connection parameter to oci_connect().
LD_LIBRARY_PATH | Set this (or its platform equivalent, such as `LIBPATH`, or `SHLIB_PATH`) to the location of the Oracle libraries, for example $ORACLE_HOME/lib or /usr/lib/oracle/18.5/client/lib. Note with Instant Client ZIP files on Linux it is more reliable to use ldconfig instead, see the Instant Client installation instructions. With Instant Client 19 (or later) RPM files, `ldconfig` is automatically run for you. Some users use `LD_PRELOAD` instead of `LD_LIBRARY_PATH`.
NLS_LANG | This is the primary variable for setting the character set and globalization information used by the Oracle libraries.
ORA_SDTZ | Sets the Oracle session timezone.
TNS_ADMIN | Contains the directory where the Oracle Net Services configuration files such as tnsnames.ora and sqlnet.ora are kept. Not needed if the oci_connect() connection string uses the Easy Connect naming syntax such as `localhost/XE`. Not needed if the network configuration files are in one of the default locations such as /usr/lib/oracle/VERSION/client/lib/network/admin, $ORACLE_HOME/network/admin or /etc.

Less frequently used Oracle environment variables include `TWO_TASK`, `ORA_TZFILE`, and the various Oracle globalization settings like `NLS*` and the `ORA_NLS_*` variables.

## Troubleshooting

The most common problem with installing OCI8 is not having the Oracle environment correctly set. This typically appears as a problem using oci_connect() or oci_pconnect(). The error may be a PHP error such as Call to undefined function oci_connect(), an Oracle error such as ORA-12705, or even an Apache crash. Check the Apache log files for startup errors and see the sections above to resolve this problem.

While network errors like ORA-12154 or ORA-12514 indicate an Oracle network naming or configuration issue, the root cause may be because the PHP environment is incorrectly set up and Oracle libraries are unable to locate the tnsnames.ora configuration file.

On Windows, having multiple versions of Oracle on the one machine can easily cause library clashes unless care is taken to make sure PHP only uses the correct version of Oracle.

A utility to examine what libraries are being looked for and loaded can help resolve missing or clashing library issues, particularly on Windows.

> Bilginize: If the web server doesn't start or crashes at startup

> Check that Apache is linked with the pthread library:

>     # ldd /www/apache/bin/httpd
>       libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
>       libm.so.6 => /lib/libm.so.6 (0x4002f000)
>       libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
>       libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
>       libc.so.6 => /lib/libc.so.6 (0x4007e000)
>       /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

> If the libpthread is not listed, then reinstall Apache:

>     # cd /usr/src/apache_1.3.xx
>     # make clean
>     # LIBS=-lpthread ./config.status
>     # make
>     # make install

> Please note that on some systems like UnixWare, it is libthread instead of libpthread. PHP and Apache have to be configured with EXTRA_LIBS=-lthread.

## Testing

The OCI8 test suite is in ext/oci8/tests. After OCI8 tests are run this directory will also contain logs of any failures.

Before running PHP's tests, edit details.inc and set $user, $password and the $dbase connection string. The OCI8 test suite has been developed using the `SYSTEM` account. Some tests will fail if the test user does not have equivalent permissions.

If Oracle Database Resident Connection Pooling is being tested, set $test_drcp to `true` and ensure the connection string uses an appropriate DRCP pooled server.

An alternative to editing details.inc is the set environment variables, for example:

        $ export PHP_OCI8_TEST_USER=system
        $ export PHP_OCI8_TEST_PASS=oracle
        $ export PHP_OCI8_TEST_DB=localhost/XE
        $ export PHP_OCI8_TEST_DRCP=FALSE

Note in some shells these variables are not propagated correctly to the PHP process and tests will fail to connect if this method is used.

Next, set any necessary environment for the Oracle database. If you are running PHP on the same machines as Oracle Database, you can run:

        $ . /usr/local/bin/oraenv

With Oracle 11gR2 XE do:

        $ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

Some shells require that php.ini has `E` in the variables_order parameter, for example:

        variables_order = "EGPCS"

Run all the PHP tests with:

        $ cd your_php_src_directory
        $ make test

or run only the OCI8 tests with

        $ cd your_php_src_directory
        $ make test TESTS=ext/oci8

When the tests have completed, review any test failures. On slow systems, some tests may take longer than the default test timeout in run-tests.php. To correct this, set the environment variable `TEST_TIMEOUT` to a larger number of seconds.

On fast machines with a local database configured for light load (e.g. Oracle 11gR2 XE) some tests might fail with ORA-12516 or ORA-12520 errors. To prevent this, increase the database `PROCESSES` parameter using the following steps:

Connect as the oracle software owner:

        $ su - oracle

Set the necessary Oracle environment with oracle_env.sh or oraenv, as described above.

Start the SQL*Plus command line tool and increase `PROCESSES`

        $ sqlplus / as sysdba
        SQL> alter system set processes=100 scope=spfile

Restart the database:

        SQL> startup force

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

OCI8 Configuration Options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
oci8.connection_class | "" | `INI_ALL` |
oci8.default_prefetch | "100" | `INI_SYSTEM` |
oci8.events | Off | `INI_SYSTEM` |
oci8.max_persistent | "-1" | `INI_SYSTEM` |
oci8.old_oci_close_semantics | Off | `INI_SYSTEM` | Deprecated as of PHP 8.1.0.
oci8.persistent_timeout | "-1" | `INI_SYSTEM` |
oci8.ping_interval | "60" | `INI_SYSTEM` |
oci8.prefetch_lob_size | "0" | `INI_SYSTEM` | Available since PECL OCI8 3.2.
oci8.privileged_connect | Off | `INI_SYSTEM` |
oci8.statement_cache_size | "20" | `INI_SYSTEM` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`oci8.connection_class` string

  This user defined text should always be set when using Oracle Database Resident Connection Pooling (DRCP). It allows sub-partitioning of the DRCP connection pool, allowing OCI8 persistent connections from an application to reuse database sessions from a previous PHP script, giving better scalability. When an application uses a database pooled process previously used with a different connection class, the session settings such as the default Oracle date format are reset. This prevents accidental sharing of information between different applications.

  The value can be set at runtime with ini_set() prior to connecting.

  To use DRCP, OCI8 must be linked with Oracle 11g (or later) libraries and the database must be Oracle 11g (or later). The DRCP connection pool must be enabled in the database, the `oci8.connection_class` should be set to the same string for all web servers running the same application, and the OCI8 connection string must specify to use a pooled server. The application should use persistent connections.

`oci8.default_prefetch` int

  This option sets the default number of extra rows that will be fetched and cached automatically whenever a low-level request for data from the database is made. Setting a value of `0` turns off prefetching.

  The prefetch value does not alter the number of rows that functions like oci_fetch_array() return to the user; the prefetching and caching of rows is handled internally in OCI8.

  The value can be set per-statement with oci_set_prefetch() prior to statement execution.

  When using Oracle Database 12c (or later), the prefetch value set by PHP can be overridden by Oracle's client `oraaccess.xml` configuration file. Refer to Oracle documentation for more detail.

  > Bilginize: A larger prefetch can result in improved performance, at the cost of some increased memory usage. For queries that return large amounts of data, the performance benefit can be significant.

`oci8.events` bool

  Using `On` allows PHP to be notified of database Fast Application Notification (FAN) events.

  Without FAN, when a database instance or machine node fails unexpectedly, PHP applications may be blocked waiting for a database response until a TCP timeout expires. With FAN events, PHP applications are quickly notified of failures that affect their established database connections. The OCI8 extension will clean up unusable connections in the persistent connection cache.

  When using `On`, the database must also be configured to post FAN events.

  FAN support is available when OCI8 is linked with Oracle 10gR2 (or later) libraries and connected to Oracle Database 10gR2 (or later).

`oci8.max_persistent` int

  The maximum number of persistent OCI8 connections per PHP process. Setting this option to -1 means that there is no limit.

`oci8.old_oci_close_semantics` bool

  This option controls oci_close() behaviour. Enabling it means that oci_close() will do nothing; the connection will not be closed until the end of the script. This is for backward compatibility only. If you find that you need to enable this setting, you are strongly encouraged to adjust the oci_close() calls in your application instead of enabling this option.

`oci8.persistent_timeout` int

  The maximum number of seconds that a PHP process is allowed to keep an idle persistent connection open. Setting this option to -1 means that idle persistent connections will be retained until the PHP process terminates or the connection is explicitly closed with oci_close().

  > Bilginize: In PHP, the expiry of idle resources is not alarm-based. It occurs when PHP finishes processing a script and checks the last-used timestamp of resources. Hence there is a paradox that idle connections can only be closed when there is some activity (though not necessarily OCI8 related) in the PHP process. If there is more than one PHP process then each must individually be activated in order to trigger expiry of its idle resources. The introduction of Database Resident Connection Pooling (DRCP) in Oracle 11g resolves the memory and resource issues that `oci8.max_persistent` and `oci8.persistent_timeout` previously attempted to overcome.

`oci8.ping_interval` int

  The number of seconds that must pass before issuing a ping during oci_pconnect(). A ping ensures that the database connection is valid. When set to 0, persistent connections will be pinged every time oci_pconnect() is called. To disable pings completely, set this option to -1.

  > Bilginize: Disabling pings allows oci_pconnect() to operate at the highest efficiency, but PHP may not be able to detect unusable connections, such as caused by network dropout, or if the Oracle database has gone down since PHP connected, until the connection is used later in the script. Consult the oci_pconnect() documentation for more information.

`oci8.prefetch_lob_size` int

  This is a tuning parameter affecting internal buffering of LOB data. Increasing this value can improve the performance of fetching smaller LOBs by reducing round-trips between PHP and the database. Memory usage will change.

  The value affects LOBs returned as OCILob instances and also those returned using `OCI_RETURN_LOBS`.

  The value can be set per-statement with oci_set_prefetch_lob() prior to statement execution.

  > Bilginize: Use with Oracle Database 12.2 or later.

`oci8.privileged_connect` bool

  This option allows connections to use the privileged external credentials `OCI_SYSOPER` or `OCI_SYSDBA`.

  > Bilginize: Setting this `On` can allow scripts on web servers running with the appropriate OS user privileges to connect as privileged database users without requiring a database password. This can be a security risk.

`oci8.statement_cache_size` int

  This option enables statement caching, and specifies how many statements to cache. To disable statement caching just set this option to 0.

  Statement caching removes the need to transmit the statement text to the database and removes the need to transmit any meta data about the statement back to PHP. This can significantly improve overall system performance in applications which reuse statements during the lifetime of a connection. Some extra database "cursors" may be held open under the assumption that statements will be reused.

  Set this value to the size of the working set of statements used by your application. Setting too small a value can cause statements to be flushed from the cache before they are reused.

  This option is of most use with persistent connections.

  When using Oracle Database 12c (or later), this value can be overridden and automatically tuned by Oracle's client `oraaccess.xml` file. Refer to Oracle documentation for more detail.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

OCI8 Function and Method Modes
Constant | Description
--- | ---
`OCI_ASSOC` | Used with oci_fetch_all() and oci_fetch_array() to get results as an associative array.
`OCI_BOTH` | Used with oci_fetch_all() and oci_fetch_array() to get results as an array with both associative and number indices.
`OCI_COMMIT_ON_SUCCESS` | Statement execution mode for oci_execute() call. Automatically commit changes when the statement has succeeded.
`OCI_CRED_EXT` | Used with oci_connect() for using Oracles' External or OS authentication.
`OCI_DEFAULT` | See `OCI_NO_AUTO_COMMIT`.
`OCI_DESCRIBE_ONLY` | Statement execution mode for oci_execute(). Use this mode if you want meta data such as the column names but don't want to fetch rows from the query.
`OCI_EXACT_FETCH` | Obsolete. Statement fetch mode. Used when the application knows in advance exactly how many rows it will be fetching. This mode turns prefetching off for Oracle release 8 or later mode. The cursor is canceled after the desired rows are fetched which may result in reduced server-side resource usage.
`OCI_FETCHSTATEMENT_BY_COLUMN` | Default mode of oci_fetch_all().
`OCI_FETCHSTATEMENT_BY_ROW` | Alternative mode of oci_fetch_all().
`OCI_LOB_BUFFER_FREE` | Used with OCILob::flush to free buffers used.
`OCI_NO_AUTO_COMMIT` | Statement execution mode for oci_execute(). The transaction is not automatically committed when using this mode. For readability in new code, use this value instead of the older, equivalent `OCI_DEFAULT` constant.
`OCI_NUM` | Used with oci_fetch_all() and oci_fetch_array() to get results as an enumerated array.
`OCI_RETURN_LOBS` | Used with oci_fetch_array() to get the data value of the LOB instead of the descriptor.
`OCI_RETURN_NULLS` | Used with oci_fetch_array() to get empty array elements if the row items value is `null`.
`OCI_SEEK_CUR` | Used with OCILob::seek to set the seek position.
`OCI_SEEK_END` | Used with OCILob::seek to set the seek position.
`OCI_SEEK_SET` | Used with OCILob::seek to set the seek position.
`OCI_SYSDATE` | Obsolete.
`OCI_SYSDBA` | Used with oci_connect() to connect with the SYSDBA privilege. The php.ini setting oci8.privileged_connect should be enabled to use this.
`OCI_SYSOPER` | Used with oci_connect() to connect with the SYSOPER privilege. The php.ini setting oci8.privileged_connect should be enabled to use this.
`OCI_TEMP_BLOB` | Used with OCILob::writeTemporary to indicate that a temporary BLOB should be created.
`OCI_TEMP_CLOB` | Used with OCILob::writeTemporary to indicate that a temporary CLOB should be created.

OCI8 Bind and Define Types
Constant | Description
--- | ---
`OCI_B_BFILE` | Used with oci_bind_by_name() when binding BFILEs.
`OCI_B_BIN` | Used with oci_bind_by_name() to bind RAW values.
`OCI_B_BLOB` | Used with oci_bind_by_name() when binding BLOBs.
`OCI_B_BOL` | Used with oci_bind_by_name() to bind a PL/SQL BOOLEAN variable.
`OCI_B_CFILEE` | Used with oci_bind_by_name() when binding CFILEs.
`OCI_B_CLOB` | Used with oci_bind_by_name() when binding CLOBs.
`OCI_B_CURSOR` | Used with oci_bind_by_name() when binding cursors, previously allocated with oci_new_descriptor().
`OCI_B_INT` | Used with oci_bind_array_by_name() to bind arrays of INTEGER.
`OCI_B_NTY` | Used with oci_bind_by_name() when binding named data types.
`OCI_B_NUM` | Used with oci_bind_array_by_name() to bind arrays of NUMBER.
`OCI_B_ROWID` | Used with oci_bind_by_name() when binding ROWIDs.
`SQLT_AFC` | Used with oci_bind_array_by_name() to bind arrays of CHAR.
`SQLT_AVC` | Used with oci_bind_array_by_name() to bind arrays of VARCHAR2.
`SQLT_BDOUBLE` | Not supported.
`SQLT_BFILEE` | The same as `OCI_B_BFILE`.
`SQLT_BFLOAT` | Not supported.
`SQLT_BIN` | The same as `OCI_B_BIN`.
`SQLT_BLOB` | The same as `OCI_B_BLOB`.
`SQLT_BOL` | The same as `OCI_B_BOL`.
`SQLT_CFILEE` | The same as `OCI_B_CFILEE`.
`SQLT_CHR` | Used with oci_bind_array_by_name() to bind arrays of VARCHAR2. Also used with oci_bind_by_name().
`SQLT_CLOB` | The same as `OCI_B_CLOB`.
`SQLT_FLT` | Used with oci_bind_array_by_name() to bind arrays of FLOAT.
`SQLT_INT` | The same as `OCI_B_INT`.
`SQLT_LBI` | Used with oci_bind_by_name() to bind LONG RAW values.
`SQLT_LNG` | Used with oci_bind_by_name() to bind LONG values.
`SQLT_LVC` | Used with oci_bind_array_by_name() to bind arrays of LONG VARCHAR.
`SQLT_NTY` | The same as `OCI_B_NTY`.
`SQLT_NUM` | The same as `OCI_B_NUM`.
`SQLT_ODT` | Used with oci_bind_array_by_name() to bind arrays of LONG.
`SQLT_RDD` | The same as `OCI_B_ROWID`.
`SQLT_RSET` | The same as `OCI_B_CURSOR`.
`SQLT_STR` | Used with oci_bind_array_by_name() to bind arrays of STRING.
`SQLT_UIN` | Not supported.
`SQLT_VCS` | Used with oci_bind_array_by_name() to bind arrays of VARCHAR.

OCI8 Descriptor Types
Constant | Description
--- | ---
`OCI_DTYPE_FILE` | This flag tells oci_new_descriptor() to initialize a new FILE descriptor.
`OCI_DTYPE_LOB` | This flag tells oci_new_descriptor() to initialize a new LOB descriptor.
`OCI_DTYPE_ROWID` | This flag tells oci_new_descriptor() to initialize a new ROWID descriptor.
`OCI_D_FILE` | The same as `OCI_DTYPE_FILE`.
`OCI_D_LOB` | The same as `OCI_DTYPE_LOB`.
`OCI_D_ROWID` | The same as `OCI_DTYPE_ROWID`.

Sabitler | Açıklama
--- | ---
OCI8 Transparent Application Failover (TAF) Constants
`OCI_FO_ABORT` (int) | Failover was unsuccessful and there is no option of retrying.
`OCI_FO_BEGIN` (int) | Failover has detected a lost connection and failover is starting.
`OCI_FO_END` (int) | Failover completed successfully.
`OCI_FO_ERROR` (int) | Failover was unsuccessful but it gives the application the opportunity to handle the error and return `OCI_FO_RETRY` to retry failover.
`OCI_FO_NONE` (int) | The user has not requested a failover type.
`OCI_FO_REAUTH` (int) | An Oracle user has been re-authenticated.
`OCI_FO_RETRY` (int) | The failover should be attempted again by Oracle. In case of an error while failing over to a new connection, TAF is able to retry the failover. Typically, the application code should sleep for a while before returning `OCI_FO_RETRY`.
`OCI_FO_SELECT` (int) | The user has requested SELECT failover as well. It allows users with open cursors to continue fetching from them after failure.
`OCI_FO_SESSION` (int) | The user has requested only session failover. For example, if a user's connection is lost, then a new session is automatically created for the user on the backup. This type of failover does not attempt to recover SELECTs.
`OCI_FO_TXNAL` (int) | The user has requested a transaction failover.

# Örnekler

These examples connect as the `HR` user, which is the sample "Human Resources" schema supplied with the Oracle database. The account may need to be unlocked and the password reset before you can use it.

The examples connect to the `XE` database on your machine. Change the connect string to your database before running the examples.

Örnek 1 Basic query

This shows querying and displaying results. Statements in OCI8 use a prepare-execute-fetch sequence of steps.

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Prepare the statement
    $stid = oci_parse($conn, 'SELECT * FROM departments');
    if (!$stid) {
        $e = oci_error($conn);
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Perform the logic of the query
    $r = oci_execute($stid);
    if (!$r) {
        $e = oci_error($stid);
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Fetch the results of the query
    print "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        print "<tr>\n";
        foreach ($row as $item) {
            print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        print "</tr>\n";
    }
    print "</table>\n";

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 Inserting with bind variables

Bind variables improve performance by allowing reuse of execution contexts and caches. Bind variables improve security by preventing some kinds of SQL Injection problems.

    <?php

    // Before running, create the table:
    //   CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'INSERT INTO MYTABLE (mid, myd) VALUES(:myid, :mydata)');

    $id = 60;
    $data = 'Some data';

    oci_bind_by_name($stid, ':myid', $id);
    oci_bind_by_name($stid, ':mydata', $data);

    $r = oci_execute($stid);  // executes and commits

    if ($r) {
        print "One row inserted";
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 Binding in the WHERE clause of a query

This shows a single scalar bind.

    <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = 'SELECT last_name FROM employees WHERE department_id = :didbv ORDER BY last_name';
    $stid = oci_parse($conn, $sql);
    $didbv = 60;
    oci_bind_by_name($stid, ':didbv', $didbv);
    oci_execute($stid);
    while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false) {
        echo $row['LAST_NAME'] ."<br>\n";
    }

    // Output is
    //    Austin
    //    Ernst
    //    Hunold
    //    Lorentz
    //    Pataballa

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 4 Inserting and fetching a CLOB

For large data use binary long object (BLOB) or character long object (CLOB) types. This example uses CLOB.

    <?php

    // Before running, create the table:
    //     CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $mykey = 12343;  // arbitrary key for this example;

    $sql = "INSERT INTO mytable (mykey, myclob)
            VALUES (:mykey, EMPTY_CLOB())
            RETURNING myclob INTO :myclob";

    $stid = oci_parse($conn, $sql);
    $clob = oci_new_descriptor($conn, OCI_D_LOB);
    oci_bind_by_name($stid, ":mykey", $mykey, 5);
    oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
    oci_execute($stid, OCI_NO_AUTO_COMMIT);
    $clob->save("A very long string");

    oci_commit($conn);

    // Fetching CLOB data

    $query = 'SELECT myclob FROM mytable WHERE mykey = :mykey';

    $stid = oci_parse ($conn, $query);
    oci_bind_by_name($stid, ":mykey", $mykey, 5);
    oci_execute($stid);

    print '<table border="1">';
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) {
        print '<tr><td>'.$row['MYCLOB'].'</td></tr>';
        // In a loop, freeing the large variable before the 2nd fetch reduces PHP's peak memory usage
        unset($row);
    }
    print '</table>';

    ?>

Örnek 5 Using a PL/SQL stored function

You must bind a variable for the return value and optionally for any PL/SQL function arguments.

    <?php

    /*
      Before running the PHP program, create a stored function in
      SQL*Plus or SQL Developer:

      CREATE OR REPLACE FUNCTION myfunc(p IN NUMBER) RETURN NUMBER AS
      BEGIN
          RETURN p * 3;
      END;

    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $p = 8;

    $stid = oci_parse($conn, 'begin :r := myfunc(:p); end;');
    oci_bind_by_name($stid, ':p', $p);
    oci_bind_by_name($stid, ':r', $r, 40);

    oci_execute($stid);

    print "$r\n";   // prints 24

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 6 Using a PL/SQL stored procedure

With stored procedures, you should bind variables for any arguments.

    <?php

    /*
      Before running the PHP program, create a stored procedure in
      SQL*Plus or SQL Developer:

      CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
      BEGIN
          p2 := p1 * 2;
      END;

    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $p1 = 8;

    $stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
    oci_bind_by_name($stid, ':p1', $p1);
    oci_bind_by_name($stid, ':p2', $p2, 40);

    oci_execute($stid);

    print "$p2\n";   // prints 16

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 7 Calling a PL/SQL function that returns a `REF CURSOR`

Each returned value from the query is a `REF CURSOR` that can be fetched from.

    <?php
    /*
      Create the PL/SQL stored function as:

      CREATE OR REPLACE FUNCTION myfunc(p1 IN NUMBER) RETURN SYS_REFCURSOR AS
          rc SYS_REFCURSOR;
      BEGIN
          OPEN rc FOR SELECT city FROM locations WHERE ROWNUM < p1;
          RETURN rc;
      END;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'SELECT myfunc(5) AS mfrc FROM dual');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while (($row = oci_fetch_array($stid, OCI_ASSOC))) {
        echo "<tr>\n";
        $rc = $row['MFRC'];
        oci_execute($rc);  // returned column value from the query is a ref cursor
        while (($rc_row = oci_fetch_array($rc, OCI_ASSOC))) {
            echo "    <td>" . $rc_row['CITY'] . "</td>\n";
        }
        oci_free_statement($rc);
        echo "</tr>\n";
    }
    echo "</table>\n";

    // Output is:
    //   Beijing
    //   Bern
    //   Bombay
    //   Geneva

    oci_free_statement($stid);
    oci_close($conn);

    ?>

# OCI8 Connection Handling and Connection Pooling

## Connection Functions

The OCI8 extension provides three different functions for connecting to Oracle. The standard connection function is oci_connect(). This creates a connection to an Oracle database and returns a resource used by subsequent database calls.

Connecting to an Oracle server is a reasonably expensive operation in terms of the time that it takes to complete. The oci_pconnect() function uses a persistent cache of connections that can be re-used across different script requests. This means that the connection overhead will typically only occur once per PHP process (or Apache child).

If the application connects to Oracle using a different set of database credentials for each web user, the persistent cache employed by oci_pconnect() will become less useful as the number of concurrent users increases, to the point where it may start to adversely affect the overall performance of the Oracle server due to maintaining too many idle connections. If the application is structured in this way, it is recommended to either tune the application using the oci8.max_persistent and oci8.persistent_timeout configuration settings (these will give control over the persistent connection cache size and lifetime), use Oracle Database Resident Connection Pooling (in Oracle Database 11g or later), or use oci_connect() instead.

Both oci_connect() and oci_pconnect() employ a connection cache; if multiple calls to oci_connect() use the same parameters in a given script, the second and subsequent calls return the existing connection handle. The cache used by oci_connect() is cleaned up at the end of the script run, or when the connection handle is explicitly closed. The function oci_pconnect() has similar behavior, although its cache is maintained separately and survives between HTTP requests.

This caching feature means the two handles are not transactionally isolated (they are in fact the same connection handle, so there is no isolation of any kind). If the application needs two separate, transactionally isolated connections, then use oci_new_connect().

The oci_pconnect() cache is cleared and any database connections closed when the PHP process terminates, so effective use of persistent connections requires that PHP be an Apache module or used with FPM, or similar. Persistent connections will not have any benefits over oci_connect() when PHP is used with CGI or via the command-line.

The function oci_new_connect() always creates a new connection to the Oracle server, regardless of what other connections might already exist. High traffic web applications should avoid using oci_new_connect(), especially in the busiest sections of the application.

Persistent connections can be closed by the user, allowing greater control over connection resource usage. Persistent connections will now also be closed automatically when there is no PHP variable referencing them, such as at the end of scope of a PHP user function. This will rollback any uncommitted transaction. These changes to persistent connections make them behave similarly to non-persistent connections, simplifying the interface, allowing for greater application consistency and predictability. Use oci8.old_oci_close_semantics set to On to retain the historical behavior.

The automatic re-establishment of PHP persistent connections after an Apache or FPM process respawns means Oracle Database `LOGON` triggers are only recommended for setting session attributes and not for per-application user connection requests.

## DRCP Connection Pooling

PHP supports Oracle Database Resident Connection Pooling (DRCP). DRCP allows more efficient use of database machine memory and provides high scalability. No, or minimal, application changes are needed to use DRCP.

DRCP is suited for applications that connect using few database schemas and hold database connections open for a short period of time. Other applications should use Oracle's default `Dedicated` database server processes, or use `Shared` servers.

DRCP benefits all three connection functions, but gives the highest scalability when connections are created with oci_pconnect().

For DRCP to be available in OCI8, Oracle client libraries used by PHP and the version of the Oracle Database must both be 11g or greater.

Documentation on DRCP is found in several Oracle manuals. For example, see » Configuring Database Resident Connection Pooling in the Oracle documentation for usage information. A » DRCP white paper contains background information on DRCP.

To use DRCP, install the OCI8 extension and Oracle 11g (or later) libraries and then follow these steps:

- As a privileged database administrator, use a program like SQL*Plus to start the connection pool in the database:

          SQL> execute dbms_connection_pool.start_pool;

- Optionally use `dbms_connection_pool.alter_param()` to configure DRCP settings. The current pool settings can be queried from the `DBA_CPOOL_INFO` view.

- Update the connection strings used. For PHP applications that currently connect using a Network Connect Name like `MYDB`:

          $c = oci_pconnect("myuser", "mypassword", "MYDB");

  modify the tnsnames.ora file and add a `(SERVER=POOLED)` clause, for example:

          MYDB = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=myhost.dom.com)
                 (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales)
                 (SERVER=POOLED)))

  Alternatively, modify the Easy Connect syntax in PHP and add `:POOLED` after the service name:

          $c = oci_pconnect("myuser", "mypassword", "myhost.dom.com:1521/sales:POOLED");

- Edit php.ini and choose a connection class name. This name indicates a logical division of the connection pool and can be used to isolate pooling for separate applications. Any PHP applications with the same user name and connection class value will be able to share connections in the pool, giving greater scalability.

          oci8.connection_class = "MY_APPLICATION_NAME"

- Run the application, connecting to the 11g (or later) database.

> Bilginize:

> Applications using Oracle Client libraries 10g that require the performance of persistent connections can reduce the amount of database server memory needed by using Oracle `Shared` servers (previously known as Multi Threaded Servers). Refer to Oracle documentation for information.

> Bilginize:

> Changing a password over DRCP connections will fail with the error ORA-56609: Usage not supported with DRCP. This is a documented restriction of Oracle Database 11g.

# OCI8 Fast Application Notification (FAN) Support

FAN support gives fast connection failover, an Oracle Database high availability feature. This allows PHP OCI8 scripts to be notified when a database machine or database instance becomes unavailable. Without FAN, OCI8 can hang until a TCP timeout occurs and an error is returned, which might be several minutes. Enabling FAN in OCI8 can allow applications to detect errors and re-connect to an available database instance without the web user being aware of an outage.

FAN support is available when the Oracle client libraries that PHP links with and the Oracle Database are either version 10gR2 or later.

FAN benefits users of Oracle's clustering technology (RAC) because connections to surviving database instances can be immediately made. Users of Oracle's Data Guard with a broker will see the FAN events generated when the standby database goes online. Standalone databases will send FAN events when the database restarts.

For active connections, when a machine or database instance becomes unavailable, a connection failure error will be returned by the OCI8 extension function currently being called. On a subsequent PHP script re-connect, a connection to a surviving database instance will be established. The OCI8 extension also transparently cleans up any idle connections affected by a database machine or instance failure so PHP connect calls will establish a fresh connection without the script being aware of any service disruption.

When oci8.events is `On`, it is suggested to set oci8.ping_interval to -1 to disable pinging, since enabling FAN events provide pro-active connection management of idle connections made invalid by a service disruption.

To enable FAN support in PHP OCI8, build PHP OCI8 with Oracle 10gR2 or later libraries and then follow these steps:

- As a privileged database administrator, use a program like SQL*Plus to enable the database service to post FAN events, for example:

          SQL> execute dbms_service.modify_service(
                         SERVICE_NAME        => 'sales',
                         AQ_HA_NOTIFICATIONS => TRUE);

- Edit php.ini and add

          oci8.events = On

- If the application does not already handle OCI8 error conditions, modify it to detect failures and take appropriate action. This may include re-connecting and re-executing statements.
- Run the application, connecting to Oracle Database 10gR2 or later.

# OCI8 Transparent Application Failover (TAF) Support

TAF is an Oracle Database feature that provides high availability. It enables PHP OCI8 applications to automatically reconnect to a preconfigured database when database connectivity fails due to instance or network failure.

In a configured Oracle Database system, TAF occurs when the PHP application detects that the database instance is down or unreachable. It establishes a connection to another node in an Oracle » RAC configuration, a hot standby database, or the same database instance itself. See » Oracle Call Interface Programmer's Guide for more information about OCI TAF.

An application callback can be registered with oci_register_taf_callback(). During failover, normal application processing stops and the registered callback is invoked. The callback notifies the application of the failover events. If the failover succeeds, normal processing will be resumed. If the failover aborts, any following database operations in the application will fail due to no connection being available.

When a connection fails over to another database, the callback can reset any necessary connection state, for example replaying any necessary ALTER SESSION commands if the database service did not have -failover_restore enabled.

An application callback can be removed by calling oci_unregister_taf_callback().

## Configuring Transparent Application Failover

TAF can be configured on the PHP OCI8 side or in the database configuration. If both are configured, database-side settings take precedence.

Configure TAF in PHP OCI8 (the client side) by including the FAILOVER_MODE parameter in the CONNECT_DATA portion of a connect descriptor. See Configuring Transparent Application Failover in » Oracle Database Net Services Administrator's Guide for more information about client side configuration of TAF.

An example tnsnames.ora to configure TAF reconnecting to the same database instance:

        ORCL =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
            (CONNECT_DATA =
              (SERVICE_NAME = orclpdb1)
              (FAILOVER_MODE =
                (TYPE = SELECT)
                (METHOD = BASIC)
                (RETRIES = 20)
                (DELAY = 15))))

Alternatively configure TAF on the database side by modifying the target service with » srvctl (for RAC) or the » DBMS_SERVICE.MODIFY_SERVICE packaged procedure (for single instance databases).

## Using TAF Callbacks in OCI8

A TAF callback is an application function that can be registered to be called during failover. It is called several times while re-establishing the application's connection.

Callback first occurs when a loss of connection is detected. This allows the application to act accordingly for the upcoming delay of the failover. If the failover is successful, the callback is invoked after connection is re-established and usable. At this time, the application can resynchronize session settings and take actions such as informing the user that failover occurred. If failover is unsuccessful, a callback occurs to inform the application that a failover did not take place and the connection is unusable.

The interface of a TAF user-defined callback function is as follows:

function userCallbackFn(resource `$connection`, int `$event`, int `$type`): int

`connection`

  The Oracle connection on which the TAF callback was registered via oci_register_taf_callback(). The connection is not valid until the failover completes successfully.

`event`

  The failover event indicates the current status of the failover.

  - `OCI_FO_BEGIN` indicates that failover has detected a lost connection and failover is starting.

  - `OCI_FO_END` indicates successful completion of failover.

  - `OCI_FO_ABORT` indicates that failover was unsuccessful, and there is no option of retrying.

  - `OCI_FO_ERROR` also indicates that failover was unsuccessful, but it gives the application the opportunity to handle the error and return OCI_FO_RETRY to retry failover.

  - `OCI_FO_REAUTH` indicates that an Oracle user has been re-authenticated.

`type`

  The failover type. This lets the callback know what type of failover the application has requested. The usual values are as follows:

  - `OCI_FO_SESSION` indicates that the user has requested only session failover. For example, if a user's connection is lost, then a new session is automatically created for the user on the backup. This type of failover does not attempt to recover SELECTs.

  - `OCI_FO_SELECT` indicates that the user has requested SELECT failover as well. It allows users with open cursors to continue fetching from them after failure.

`return value`

  - `0` indicates the failover steps should continue normally.

  - `OCI_FO_RETRY` indicates that the failover should be attempted again by Oracle. In case of an error while failing over to a new connection, TAF is able to retry the failover. Typically, the application code should sleep for a while before returning OCI_FO_RETRY.

Örnek 1 Registering a TAF callback

    <?php

    // Define userspace callback
    class MyClass {
        public static $retry_count;
        public static function TAFCallback($conn, $event, $type)
        {
            switch ($event) {
                case OCI_FO_BEGIN:
                    printf(" Failing Over ... Please stand by\n");
                    printf(" Failover type was found to be %s \n",
                           (($type==OCI_FO_SESSION) ? "SESSION"
                            :(($type==OCI_FO_SELECT) ? "SELECT" : "UNKNOWN!")));
                    self::$retry_count = 0;
                    break;
                case OCI_FO_ABORT:
                    // The application cannot continue using the database
                    printf(" Failover aborted. Failover will not take place.\n");
                    break;
                case OCI_FO_END:
                    // Failover completes successfully. Inform users a failover occurs.
                    printf(" Failover ended ... resuming services\n");
                    break;
                case OCI_FO_REAUTH:
                    printf(" Failed over user ... resuming services\n");
                    // Replay any ALTER SESSION commands associated with this connection
                    // eg. oci_parse($conn, ‘ALTER SESSION …’) ;
                    break;
                case OCI_FO_ERROR:
                    // Stop retrying if we have already attempted for 20 times.
                    if (self::$retry_count >= 20)
                        return 0;
                    printf(" Failover error received. Sleeping...\n");
                    sleep(10);
                    self::$retry_count++;
                    return OCI_FO_RETRY; // retry failover
                    break;
                default:
                    printf("Bad Failover Event: %d.\n", $event);
                    break;
            }
            return 0;
        }
    }

    $fn_name = 'MyClass::TAFCallback';

    $conn = oci_connect('hr', 'welcome', 'orcl');
    $sysconn = oci_connect('system', 'oracle', 'orcl');

    // Use a privileged connection to construct a SQL statement that will initiate failover
    $sql = <<< 'END'
    select unique 'alter system disconnect session '''||sid||','||serial#||''''
    from v$session_connect_info
    where sid = sys_context('USERENV', 'SID')
    END;

    $s = oci_parse($conn, $sql);
    oci_execute($s);
    $r = oci_fetch_array($s);
    $disconnectssql = $r[0];

    oci_register_taf_callback($conn, $fn_name); // Register TAFCallback to Oracle TAF

    print "Parsing user query\n";
    $sql = "select systimestamp from dual";
    $stmt = oci_parse($conn, $sql);

    // For example, if a connection loss occurs at this point, oci_execute() will
    // detect the loss and failover begins. During failover, oci_execute() will
    // invoke the TAF callback function several times. If the failover is successful,
    // a new connection is transparently created and oci_execute() will continue as
    // usual. The connection session settings can be reset in the TAF callback
    // function. If the failover is aborted, oci_execute() will return an error
    // because a valid connection is not available.

    // Disconnect the user, which initiates failover
    print "Disconnecting the user\n";
    $discsql = oci_parse($sysconn, $disconnectssql);
    oci_execute($discsql);

    print "Executing user query\n";
    $e = oci_execute($stmt);
    if (!$e) {
        $m = oci_error($stmt);
        trigger_error("Could not execute statement: ". $m['message'], E_USER_ERROR);
    }
    $row = oci_fetch_array($stmt);
    print $row[0] . "\n";

    // do other SQL statements with the new connection, if it is valid
    // $stmt = oci_parse($conn,  . . .);

    ?>

## Ayrıca Bakınız

- oci_register_taf_callback()
- oci_unregister_taf_callback()

# OCI8 and DTrace Dynamic Tracing

OCI8 2.0 introduced static DTrace probes that can be used on operating systems that support DTrace. See DTrace Dynamic Tracing for an overview of PHP and DTrace.

## Installing OCI8 with DTrace Support

To enable DTrace support in PHP OCI8, build OCI8 as a shared extension after setting `PHP_DTRACE`.

    $ export PHP_DTRACE=yes
    $ pecl install oci8

Edit php.ini, set extension_dir to the directory with the created oci8.so and also enable the extension by adding:

    extension=oci8.so

If you install PHP OCI8 from PECL using phpize and configure (instead of pecl), you will still need to set `PHP_DTRACE=yes`. This is because the `--enable-dtrace` option will be ignored by the limited configure script of a PECL bundle.

See Installation of PECL extensions for general PECL installation instructions.

## DTrace Static Probes in PHP OCI8

The following static probes are available in PHP OCI8
Probe Name | Probe Description | Probe Arguments
--- | --- | ---
`oci8-connect-entry` | Initiated by oci_connect(), oci_pconnect() and oci_new_connect(). Fires before database connection is established. | char *username, char *dbname, char *charset, long session_mode, int persistent, int exclusive
`oci8-connect-return` | Fires at the end of connection. | void *connection
`oci8-check-connection` | Fires if an Oracle error might have caused the connection to become invalid. | void *connection, char *client_id, int is_open, long errcode, unsigned long server_status
`oci8-sqltext` | Fires when oci_parse() is executed. | void *connection, char *client_id, void *statement, char *sql
`oci8-connection-close` | Fires when the connection to the database is completely destroyed. | void *connection
`oci8-error` | Fires if an Oracle error occurs. | int status, long errcode
`oci8-execute-mode` | Fires at oci_execute() to show the execution mode. | void *connection, char *client_id, void *statement, unsigned int mode

These probes are useful for tracing OCI8 scripts.

The connection and statement are the pointers to internal structures used for tracking PHP connections and executed statements.

The client_id is the value set by oci_set_client_identifier().

Core PHP also has static probes. See DTrace Static Probes in Core PHP.

Internal Debugging DTrace Probes in OCI8
Probe Name
`oci8-connect-expiry`
`oci8-connect-lookup`
`oci8-connect-p-dtor-close`
`oci8-connect-p-dtor-release`
`oci8-connect-type`
`oci8-sesspool-create`
`oci8-sesspool-stats`
`oci8-sesspool-type`

These probes are useful for OCI8 maintainers. Refer to the OCI8 source code for arguments and to see when the will fire.

## Listing DTrace Static Probes in PHP OCI8

To list available probes, start a PHP process and then run:

    # dtrace -l

The output will be similar to:

       ID   PROVIDER            MODULE                          FUNCTION NAME
       [ . . . ]
       17 phpoci22116           oci8.so   php_oci_dtrace_check_connection oci8-check-connection
       18 phpoci22116           oci8.so                php_oci_do_connect oci8-connect-entry
       19 phpoci22116           oci8.so         php_oci_persistent_helper oci8-connect-expiry
       20 phpoci22116           oci8.so             php_oci_do_connect_ex oci8-connect-lookup
       21 phpoci22116           oci8.so  php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-close
       22 phpoci22116           oci8.so  php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-release
       23 phpoci22116           oci8.so                php_oci_do_connect oci8-connect-return
       24 phpoci22116           oci8.so             php_oci_do_connect_ex oci8-connect-type
       25 phpoci22116           oci8.so          php_oci_connection_close oci8-connection-close
       26 phpoci22116           oci8.so                     php_oci_error oci8-error
       27 phpoci22116           oci8.so         php_oci_statement_execute oci8-execute-mode
       28 phpoci22116           oci8.so              php_oci_create_spool oci8-sesspool-create
       29 phpoci22116           oci8.so            php_oci_create_session oci8-sesspool-stats
       30 phpoci22116           oci8.so            php_oci_create_session oci8-sesspool-type
       31 phpoci22116           oci8.so          php_oci_statement_create oci8-sqltext

The Provider column values consist of `phpoci` and the process id of the currently running PHP process.

The Function column refers to PHP's internal C implementation function names where each provider is located.

If a PHP process is not running, then no PHP probes will be shown.

## DTrace with PHP OCI8 Example

This example shows the basics of the DTrace D scripting language.

Örnek 1 user_oci8_probes.d for tracing all user-level PHP OCI8 Static Probes with DTrace

    #!/usr/sbin/dtrace -Zs

    #pragma D option quiet

    php*:::oci8-connect-entry
    {
        printf("%lld: PHP connect-entry\n", walltimestamp);
        printf("  credentials=\"%s@%s\"\n", arg0 ? copyinstr(arg0) : "", arg1 ? copyinstr(arg1) : "");
        printf("  charset=\"%s\"\n", arg2 ? copyinstr(arg2) : "");
        printf("  session_mode=%ld\n", (long)arg3);
        printf("  persistent=%d\n", (int)arg4);
        printf("  exclusive=%d\n", (int)arg5);
    }

    php*:::oci8-connect-return
    {
        printf("%lld: PHP oci8-connect-return\n", walltimestamp);
        printf("  connection=0x%p\n", (void *)arg0);
    }

    php*:::oci8-connection-close
    {
        printf("%lld: PHP oci8-connect-close\n", walltimestamp);
        printf("  connection=0x%p\n", (void *)arg0);
    }

    php*:::oci8-error
    {
        printf("%lld: PHP oci8-error\n", walltimestamp);
        printf("  status=%d\n", (int)arg0);
        printf("  errcode=%ld\n", (long)arg1);
    }

    php*:::oci8-check-connection
    {
        printf("%lld: PHP oci8-check-connection\n", walltimestamp);
        printf("  connection=0x%p\n", (void *)arg0);
        printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
        printf("  is_open=%d\n", arg2);
        printf("  errcode=%ld\n", (long)arg3);
        printf("  server_status=%lu\n", (unsigned long)arg4);
    }

    php*:::oci8-sqltext
    {
        printf("%lld: PHP oci8-sqltext\n", walltimestamp);
        printf("  connection=0x%p\n", (void *)arg0);
        printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
        printf("  statement=0x%p\n", (void *)arg2);
        printf("  sql=\"%s\"\n", arg3 ? copyinstr(arg3) : "");
    }

    php*:::oci8-execute-mode
    {
        printf("%lld: PHP oci8-execute-mode\n", walltimestamp);
        printf("  connection=0x%p\n", (void *)arg0);
        printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
        printf("  statement=0x%p\n", (void *)arg2);
        printf("  mode=0x%x\n", arg3);
    }

This script uses the `-Z` option to dtrace, allowing it to be run when there is no PHP process executing. If this option were omitted the script would immediately terminate when no PHP executable was running because it knows none of the probes to be monitored are in existence.

On multi-CPU machines the probe ordering might not appear to be sequential. This depends on which CPU was processing the probes, and how threads migrate across CPUs. Displaying probe time stamps helps reduce confusion.

The script traces all user-level PHP OCI8 static probe points throughout the duration of a running PHP script. Run the D script:

    # ./user_oci8_probes.d

Run a PHP script or application. The monitoring D script will output each probe's arguments as it fires. For example, a simple PHP script that queries a table might produce the following trace output:

    1381794982092854582: PHP connect-entry
      credentials="hr@localhost/pdborcl"
      charset=""
      session_mode=0
      persistent=0
      exclusive=0
    1381794982183158766: PHP oci8-connect-return
      connection=0x7f4a7907bfb8
    1381794982183594576: PHP oci8-sqltext
      connection=0x7f4a7907bfb8
      client_id="Chris"
      statement=0x7f4a7907c2a0
      sql="select * from employees"
    1381794982183783706: PHP oci8-execute-mode
      connection=0x7f4a7907bfb8
      client_id="Chris"
      statement=0x7f4a7907c2a0
      mode=0x20
    1381794982444344390: PHP oci8-connect-close
      connection=0x7f4a7907bfb8

When monitoring is complete, the D script can be terminated with a ``CTRL`+`C``.

## Ayrıca Bakınız

- DTrace Dynamic Tracing

# Supported Datatypes

The driver supports the following types when binding parameters using the oci_bind_by_name() function:
Type | Mapping
--- | ---
`SQLT_NTY` | Maps a native collection type from a PHP collection object, such as those created by oci_new_collection().
`SQLT_BFILEE` | Maps a native descriptor, such as those created by oci_new_descriptor().
`SQLT_CFILEE` | Maps a native descriptor, such as those created by oci_new_descriptor().
`SQLT_CLOB` | Maps a native descriptor, such as those created by oci_new_descriptor().
`SQLT_BLOB` | Maps a native descriptor, such as those created by oci_new_descriptor().
`SQLT_RDD` | Maps a native descriptor, such as those created by oci_new_descriptor().
`SQLT_NUM` | Converts the PHP parameter to a 'C' long type, and binds to that value.
`SQLT_RSET` | Maps a native statement handle, such as those created by oci_parse() or those retrieved from other OCI queries.
`SQLT_BOL` | Bind the PHP parameter to a PL/SQL BOOLEAN
`SQLT_CHR` and any other type | Converts the PHP parameter to a string type and binds as a string.

The following types are supported when retrieving columns from a result set:
Type | Mapping
--- | ---
`SQLT_RSET` | Creates an oci statement resource to represent the cursor.
`SQLT_RDD` | Creates a ROWID object.
`SQLT_BLOB` | Creates a LOB object.
`SQLT_CLOB` | Creates a LOB object.
`SQLT_BFILE` | Creates a LOB object.
`SQLT_LNG` | Bound as SQLT_CHR, returned as a string
`SQLT_LBI` | Bound as `SQLT_BIN`, returned as a string
Any other type | Bound as `SQLT_CHR`, returned as a string

# OCI8 İşlevleri

# oci_bind_array_by_name

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL OCI8 >= 1.2.0)

oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter

### Açıklama

function oci_bind_array_by_name(
resource `$statement`,
string `$param`,
array `&$var`,
int `$max_array_length`,
int `$max_item_length` = -1,
int `$type` = `SQLT_AFC`
): bool

Binds the PHP array `var` to the Oracle placeholder `param`, which points to an Oracle PL/SQL array. Whether it will be used for input or output will be determined at run-time.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`param`

  The Oracle placeholder.

`var`

  An array.

`max_array_length`

  Sets the maximum length both for incoming and result arrays.

`max_item_length`

  Sets maximum length for array items. If not specified or equals to -1, oci_bind_array_by_name() will find the longest element in the incoming array and will use it as the maximum length.

`type`

  Should be used to set the type of PL/SQL array items. See list of available types below:

  - `SQLT_NUM` - for arrays of NUMBER.

  - `SQLT_INT` - for arrays of INTEGER (Note: INTEGER it is actually a synonym for NUMBER(38), but `SQLT_NUM` type won't work in this case even though they are synonyms).

  - `SQLT_FLT` - for arrays of FLOAT.

  - `SQLT_AFC` - for arrays of CHAR.

  - `SQLT_CHR` - for arrays of VARCHAR2.

  - `SQLT_VCS` - for arrays of VARCHAR.

  - `SQLT_AVC` - for arrays of CHARZ.

  - `SQLT_STR` - for arrays of STRING.

  - `SQLT_LVC` - for arrays of LONG VARCHAR.

  - `SQLT_ODT` - for arrays of DATE.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_bind_array_by_name() example

    <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $create = "CREATE TABLE bind_example(name VARCHAR(20))";
    $stid = oci_parse($conn, $create);
    oci_execute($stid);

    $create_pkg = "
    CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
      TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
      PROCEDURE iobind(c1 IN OUT ARRTYPE);
    END ARRAYBINDPKG1;";
    $stid = oci_parse($conn, $create_pkg);
    oci_execute($stid);

    $create_pkg_body = "
    CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
      CURSOR CUR IS SELECT name FROM bind_example;
      PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
        BEGIN
        -- Bulk Insert
        FORALL i IN INDICES OF c1
          INSERT INTO bind_example VALUES (c1(i));

        -- Fetch and reverse
        IF NOT CUR%ISOPEN THEN
          OPEN CUR;
        END IF;
        FOR i IN REVERSE 1..5 LOOP
          FETCH CUR INTO c1(i);
          IF CUR%NOTFOUND THEN
            CLOSE CUR;
            EXIT;
          END IF;
        END LOOP;
      END iobind;
    END ARRAYBINDPKG1;";
    $stid = oci_parse($conn, $create_pkg_body);
    oci_execute($stid);

    $stid = oci_parse($conn, "BEGIN arraybindpkg1.iobind(:c1); END;");
    $array = array("one", "two", "three", "four", "five");
    oci_bind_array_by_name($stid, ":c1", $array, 5, -1, SQLT_CHR);
    oci_execute($stid);

    var_dump($array);

    ?>

# oci_bind_by_name

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_bind_by_name — Binds a PHP variable to an Oracle placeholder

### Açıklama

function oci_bind_by_name(
resource `$statement`,
string `$param`,
mixed `&$var`,
int `$max_length` = -1,
int `$type` = 0
): bool

Binds a PHP variable `var` to the Oracle bind variable placeholder `param`. Binding is important for Oracle database performance and also as a way to avoid SQL Injection security issues.

Binding allows the database to reuse the statement context and caches from previous executions of the statement, even if another user or process originally executed it. Binding reduces SQL Injection concerns because the data associated with a bind variable is never treated as part of the SQL statement. It does not need quoting or escaping.

PHP variables that have been bound can be changed and the statement re-executed without needing to re-parse the statement or re-bind.

In Oracle, bind variables are commonly divided into `IN` binds for values that are passed into the database, and `OUT` binds for values that are returned to PHP. A bind variable may be both `IN` and `OUT`. Whether a bind variable will be used for input or output is determined at run-time.

You must specify `max_length` when using an `OUT` bind so that PHP allocates enough memory to hold the returned value.

For `IN` binds it is recommended to set the `max_length` length if the statement is re-executed multiple times with different values for the PHP variable. Otherwise Oracle may truncate data to the length of the initial PHP variable value. If you don't know what the maximum length will be, then re-call oci_bind_by_name() with the current data size prior to each oci_execute() call. Binding an unnecessarily large length will have an impact on process memory in the database.

A bind call tells Oracle which memory address to read data from. For `IN` binds that address needs to contain valid data when oci_execute() is called. This means that the variable bound must remain in scope until execution. If it doesn't, unexpected results or errors such as "ORA-01460: unimplemented or unreasonable conversion requested" may occur. For `OUT` binds one symptom is no value being set in the PHP variable.

For a statement that is repeatedly executed, binding values that never change may reduce the ability of the Oracle optimizer to choose the best statement execution plan. Long running statements that are rarely re-executed may not benefit from binding. However in both cases, binding might be safer than joining strings into a SQL statement, as this can be a security risk if unfiltered user text is concatenated.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier.

`param`

  The colon-prefixed bind variable placeholder used in the statement. The colon is optional in `param`. Oracle does not use question marks for placeholders.

`var`

  The PHP variable to be associated with `param`

`max_length`

  Sets the maximum length for the data. If you set it to -1, this function will use the current length of `var` to set the maximum length. In this case the `var` must exist and contain data when oci_bind_by_name() is called.

`type`

  The datatype that Oracle will treat the data as. The default `type` used is `SQLT_CHR`. Oracle will convert the data between this type and the database column (or PL/SQL variable type), when possible.

  If you need to bind an abstract datatype (LOB/ROWID/BFILE) you need to allocate it first using the oci_new_descriptor() function. The `length` is not used for abstract datatypes and should be set to -1.

  Possible values for `type` are:

  - `SQLT_BFILEE` or `OCI_B_BFILE` - for BFILEs;

  - `SQLT_CFILEE` or `OCI_B_CFILEE` - for CFILEs;

  - `SQLT_CLOB` or `OCI_B_CLOB` - for CLOBs;

  - `SQLT_BLOB` or `OCI_B_BLOB` - for BLOBs;

  - `SQLT_RDD` or `OCI_B_ROWID` - for ROWIDs;

  - `SQLT_NTY` or `OCI_B_NTY` - for named datatypes;

  - `SQLT_INT` or `OCI_B_INT` - for integers;

  - `SQLT_CHR` - for VARCHARs;

  - `SQLT_BIN` or `OCI_B_BIN` - for RAW columns;

  - `SQLT_LNG` - for LONG columns;

  - `SQLT_LBI` - for LONG RAW columns;

  - `SQLT_RSET` - for cursors created with oci_new_cursor();

  - `SQLT_BOL` or `OCI_B_BOL` - for PL/SQL BOOLEANs (Requires Oracle Database 12c)

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Inserting data with oci_bind_by_name()

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (id NUMBER, text VARCHAR2(40));

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn,"INSERT INTO mytab (id, text) VALUES(:id_bv, :text_bv)");

    $id = 1;
    $text = "Data to insert     ";
    oci_bind_by_name($stid, ":id_bv", $id);
    oci_bind_by_name($stid, ":text_bv", $text);
    oci_execute($stid);

    // Table now contains: 1, 'Data to insert     '

    ?>

Örnek 2 Binding once for multiple executions

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (id NUMBER);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $a = array(1,3,5,7,11);  // data to insert

    $stid = oci_parse($conn, 'INSERT INTO mytab (id) VALUES (:bv)');
    oci_bind_by_name($stid, ':bv', $v, 20);
    foreach ($a as $v) {
        $r = oci_execute($stid, OCI_DEFAULT);  // don't auto commit
    }
    oci_commit($conn); // commit everything at once

    // Table contains five rows: 1, 3, 5, 7, 11

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 Binding with a `foreach` loop

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = 'SELECT * FROM departments WHERE department_name = :dname AND location_id = :loc';
    $stid = oci_parse($conn, $sql);

    $ba = array(':dname' => 'IT Support', ':loc' => 1700);

    foreach ($ba as $key => $val) {

        // oci_bind_by_name($stid, $key, $val) does not work
        // because it binds each placeholder to the same location: $val
        // instead use the actual location of the data: $ba[$key]
        oci_bind_by_name($stid, $key, $ba[$key]);
    }

    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);
    foreach ($row as $item) {
        print $item."<br>\n";
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 4 Binding in a WHERE clause

    <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = 'SELECT last_name FROM employees WHERE department_id = :didbv ORDER BY last_name';
    $stid = oci_parse($conn, $sql);
    $didbv = 60;
    oci_bind_by_name($stid, ':didbv', $didbv);
    oci_execute($stid);
    while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false) {
        echo $row['LAST_NAME'] ."<br>\n";
    }

    // Output is
    //    Austin
    //    Ernst
    //    Hunold
    //    Lorentz
    //    Pataballa

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 5 Binding with a LIKE clause

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    // Find all cities that begin with 'South'
    $stid = oci_parse($conn, "SELECT city FROM locations WHERE city LIKE :bv");
    $city = 'South%';  // '%' is a wildcard in SQL
    oci_bind_by_name($stid, ":bv", $city);
    oci_execute($stid);
    oci_fetch_all($stid, $res);

    foreach ($res['CITY'] as $c) {
        print $c . "<br>\n";
    }
    // Output is
    //   South Brunswick
    //   South San Francisco
    //   Southlake

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 6 Binding with REGEXP_LIKE

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    // Find all cities that contain 'ing'
    $stid = oci_parse($conn, "SELECT city FROM locations WHERE REGEXP_LIKE(city, :bv)");
    $city = '.*ing.*';
    oci_bind_by_name($stid, ":bv", $city);
    oci_execute($stid);
    oci_fetch_all($stid, $res);

    foreach ($res['CITY'] as $c) {
        print $c . "<br>\n";
    }
    // Output is
    //   Beijing
    //   Singapore

    oci_free_statement($stid);
    oci_close($conn);

    ?>

For a small, fixed number of IN clause conditions, use individual bind variables. Values unknown at run time can be set to NULL. This allows a single statement to be used by all application users, maximizing Oracle DB cache efficiency.

Örnek 7 Binding Multiple Values in an IN Clause

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = 'SELECT last_name FROM employees WHERE employee_id in (:e1, :e2, :e3)';
    $stid = oci_parse($conn, $sql);
    $mye1 = 103;
    $mye2 = 104;
    $mye3 = NULL; // pretend we were not given this value
    oci_bind_by_name($stid, ':e1', $mye1);
    oci_bind_by_name($stid, ':e2', $mye2);
    oci_bind_by_name($stid, ':e3', $mye3);
    oci_execute($stid);
    oci_fetch_all($stid, $res);
    foreach ($res['LAST_NAME'] as $name) {
        print $name ."<br>\n";
    }

    // Output is
    //   Ernst
    //   Hunold

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 8 Binding a ROWID returned by a query

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (id NUMBER, salary NUMBER, name VARCHAR2(40));
    //   INSERT INTO mytab (id, salary, name) VALUES (1, 100, 'Chris');
    //   COMMIT;

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT ROWID, name FROM mytab WHERE id = :id_bv FOR UPDATE');
    $id = 1;
    oci_bind_by_name($stid, ':id_bv', $id);
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);
    $rid = $row['ROWID'];
    $name = $row['NAME'];

    // Change name to upper case & save the changes
    $name = strtoupper($name);
    $stid = oci_parse($conn, 'UPDATE mytab SET name = :n_bv WHERE ROWID = :r_bv');
    oci_bind_by_name($stid, ':n_bv', $name);
    oci_bind_by_name($stid, ':r_bv', $rid, -1, OCI_B_ROWID);
    oci_execute($stid);

    // The table now contains 1, 100, CHRIS

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 9 Binding a ROWID on INSERT

    <?php

    // This example inserts an id & name, and then updates the salary
    // Create the table with:
    //   CREATE TABLE mytab (id NUMBER, salary NUMBER, name VARCHAR2(40));
    //
    // Based on original ROWID example by thies at thieso dot net (980221)

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = "INSERT INTO mytab (id, name) VALUES(:id_bv, :name_bv)
            RETURNING ROWID INTO :rid";

    $ins_stid = oci_parse($conn, $sql);

    $rowid = oci_new_descriptor($conn, OCI_D_ROWID);
    oci_bind_by_name($ins_stid, ":id_bv",   $id,    10);
    oci_bind_by_name($ins_stid, ":name_bv", $name,  32);
    oci_bind_by_name($ins_stid, ":rid",     $rowid, -1, OCI_B_ROWID);

    $sql = "UPDATE mytab SET salary = :salary WHERE ROWID = :rid";
    $upd_stid = oci_parse($conn, $sql);
    oci_bind_by_name($upd_stid, ":rid", $rowid, -1, OCI_B_ROWID);
    oci_bind_by_name($upd_stid, ":salary", $salary,   32);

    // ids and names to insert
    $data = array(1111 => "Larry",
                  2222 => "Bill",
                  3333 => "Jim");

    // Salary of each person
    $salary = 10000;

    // Insert and immediately update each row
    foreach ($data as $id => $name) {
        oci_execute($ins_stid);
        oci_execute($upd_stid);
    }

    $rowid->free();
    oci_free_statement($upd_stid);
    oci_free_statement($ins_stid);

    // Show the new rows
    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid);
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        var_dump($row);
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 10 Binding for a PL/SQL stored function

    <?php

    //  Before running the PHP program, create a stored function in
    //  SQL*Plus or SQL Developer:
    //
    //  CREATE OR REPLACE FUNCTION myfunc(p IN NUMBER) RETURN NUMBER AS
    //  BEGIN
    //      RETURN p * 3;
    //  END;

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $p = 8;

    $stid = oci_parse($conn, 'begin :r := myfunc(:p); end;');
    oci_bind_by_name($stid, ':p', $p);

    // The return value is an OUT bind. The default type will be a string
    // type so binding a length 40 means that at most 40 digits will be
    // returned.
    oci_bind_by_name($stid, ':r', $r, 40);

    oci_execute($stid);

    print "$r\n";   // prints 24

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 11 Binding parameters for a PL/SQL stored procedure

    <?php

    //  Before running the PHP program, create a stored procedure in
    //  SQL*Plus or SQL Developer:
    //
    //  CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
    //  BEGIN
    //      p2 := p1 * 2;
    //  END;

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $p1 = 8;

    $stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
    oci_bind_by_name($stid, ':p1', $p1);

    // The second procedure parameter is an OUT bind. The default type
    // will be a string type so binding a length 40 means that at most 40
    // digits will be returned.
    oci_bind_by_name($stid, ':p2', $p2, 40);

    oci_execute($stid);

    print "$p2\n";   // prints 16

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 12 Binding a CLOB column

    <?php

    // Before running, create the table:
    //     CREATE TABLE mytab (mykey NUMBER, myclob CLOB);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $mykey = 12343;  // arbitrary key for this example;

    $sql = "INSERT INTO mytab (mykey, myclob)
            VALUES (:mykey, EMPTY_CLOB())
            RETURNING myclob INTO :myclob";

    $stid = oci_parse($conn, $sql);
    $clob = oci_new_descriptor($conn, OCI_D_LOB);
    oci_bind_by_name($stid, ":mykey", $mykey, 5);
    oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
    oci_execute($stid, OCI_DEFAULT);
    $clob->save("A very long string");

    oci_commit($conn);

    // Fetching CLOB data

    $query = 'SELECT myclob FROM mytab WHERE mykey = :mykey';

    $stid = oci_parse ($conn, $query);
    oci_bind_by_name($stid, ":mykey", $mykey, 5);
    oci_execute($stid);

    print '<table border="1">';
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) {
        print '<tr><td>'.$row['MYCLOB'].'</td></tr>';
        // In a loop, freeing the large variable before the 2nd fetch reduces PHP's peak memory usage
        unset($row);
    }
    print '</table>';

    ?>

Örnek 13 Binding a PL/SQL BOOLEAN

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $plsql =
      "begin
        :output1 := true;
        :output2 := false;
       end;";

    $s = oci_parse($c, $plsql);
    oci_bind_by_name($s, ':output1', $output1, -1, OCI_B_BOL);
    oci_bind_by_name($s, ':output2', $output2, -1, OCI_B_BOL);
    oci_execute($s);
    var_dump($output1);  // true
    var_dump($output2);  // false

    ?>

### Notlar

Uyarı

Do not use addslashes() and oci_bind_by_name() simultaneously as no quoting is needed. Any magically applied quotes will be written into your database because oci_bind_by_name() inserts data verbatim and does not remove quotes or escape characters.

> Bilginize:

> If you bind a string to a `CHAR` column in a `WHERE` clause, remember that Oracle uses blank-padded comparison semantics for `CHAR` columns. Your PHP variable should be blank padded to the same width as the column for the `WHERE` clause to succeed.

> Bilginize:

> The PHP `var` argument is a reference. Some forms of loops do not work as expected:

>     <?php
>     foreach ($myarray as $key => $value)  {
>         oci_bind_by_name($stid, $key, $value);
>     }
>     ?>

> This binds each key to the location of $value, so all bound variables end up pointing to the last loop iteration's value. Instead use the following:

>     <?php
>     foreach ($myarray as $key => $value) {
>         oci_bind_by_name($stid, $key, $myarray[$key]);
>     }
>     ?>

### Ayrıca Bakınız

- oci_bind_array_by_name() - Binds a PHP array to an Oracle PL/SQL array parameter
- oci_parse() - Prepares an Oracle statement for execution

# oci_cancel

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_cancel — Cancels reading from cursor

### Açıklama

function oci_cancel(resource `$statement`): bool

Invalidates a cursor, freeing all associated resources and cancels the ability to read from it.

### Bağımsız Değişkenler

`statement`

  An OCI statement.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# oci_client_version

(PHP 5 >= 5.3.7, PHP 7, PHP 8, PECL OCI8 >= 1.4.6)

oci_client_version — Returns the Oracle client library version

### Açıklama

function oci_client_version(): string

Returns a string containing the version number of the Oracle C client library that PHP is linked with.

### Bağımsız Değişkenler

None

### Dönen Değerler

Returns the version number as a string.

### Örnekler

Örnek 1 oci_client_version() example

    <?php
        echo "Client Version: " . oci_client_version(); // Client version: 19.9.0.0.0
    ?>

### Notlar

> Bilginize:

> Oracle libraries before 10gR2 do not have the underlying functionality to get the client library version number. The string "Unknown" will be returned in this case.

### Ayrıca Bakınız

- oci_server_version() - Returns the Oracle Database version

# oci_close

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_close — Closes an Oracle connection

### Açıklama

function oci_close(resource `$connection`): ?bool

Unsets `connection`. The underlying database connection is closed if no other resources are using it and if it was created with oci_connect() or oci_new_connect().

It is recommended to close connections that are no longer needed because this makes database resources available for other users.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier returned by oci_connect(), oci_pconnect(), or oci_new_connect().

### Dönen Değerler

Returns `null` when oci8.old_oci_close_semantics is enabled, or `true` otherwise.

### Örnekler

Örnek 1 Closing a connection

Resources associated with a connection should be closed to ensure the underlying database connection is properly terminated and the database resources are released.

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM departments');
    $r = oci_execute($stid);
    oci_fetch_all($stid, $res);
    var_dump($res);

    // Free the statement identifier when closing the connection
    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 Database connections are not closed until all references are closed

The internal refcount of a connection identifier must be zero before the underlying connection to the database is closed.

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM departments');  // this increases the refcount on $conn
    oci_execute($stid);
    oci_fetch_all($stid, $res);
    var_dump($res);

    oci_close($conn);

    // $conn is no longer usable in the script but the underlying database
    // connection is still held open until $stid is freed.
    var_dump($conn);  // prints NULL

    // While PHP sleeps, querying the Oracle V$SESSION view in a
    // terminal window will show that the database user is still connected.
    sleep(10);

    // When $stid is freed, the database connection is physically closed
    oci_free_statement($stid);

    // While PHP sleeps, querying the Oracle V$SESSION view in a
    // terminal window will show that the database user has disconnected.
    sleep(10);

    ?>

Örnek 3 Closing a connection opened more than once

When database credentials are reused, both connections must be closed before the underlying database connection is closed.

    <?php

    $conn1 = oci_connect('hr', 'welcome', 'localhost/XE');

    // Using the same credentials reuses the same underlying database connection
    // Any uncommitted changes done on $conn1 will be visible in $conn2
    $conn2 = oci_connect('hr', 'welcome', 'localhost/XE');

    // While PHP sleeps, querying the Oracle V$SESSION view in a
    // terminal window will show that only one database user is connected.
    sleep(10);

    oci_close($conn1); // doesn't close the underlying database connection
    var_dump($conn1);  // prints NULL because the variable $conn1 is no longer usable
    var_dump($conn2);  // displays that $conn2 is still a valid connection resource

    ?>

Örnek 4 Connections are closed when variables go out of scope

When all variables referencing a connection go out of scope and are freed by PHP, a rollback occurs (if necessary) and the underlying connection to the database is closed.

    <?php

    function myfunc() {
        $conn = oci_connect('hr', 'hrpwd', 'localhost/XE');
        if (!$conn) {
            $e = oci_error();
            trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
        }

        $stid = oci_parse($conn, 'UPDATE mytab SET id = 100');
        oci_execute($stid, OCI_NO_AUTO_COMMIT);
        return "Finished";
    }

    $r = myfunc();
    // At this point a rollback occurred and the underlying database connection was released.

    print $r;  // displays the function return value "Finished"

    ?>

### Notlar

> Bilginize:

> Variables that have a dependency on the connection identifier, such as statement identifiers returned by oci_parse(), must also be freed before the underlying database connection is closed.

> Bilginize:

> The oci_close() function does not close the underlying database connections created with oci_pconnect().

### Ayrıca Bakınız

- oci_connect() - Connect to an Oracle database
- oci_free_statement() - Frees all resources associated with statement or cursor

# oci_commit

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_commit — Commits the outstanding database transaction

### Açıklama

function oci_commit(resource `$connection`): bool

Commits the outstanding transaction for the Oracle `connection`. A commit ends the current transaction and makes permanent all changes. It releases all locks held.

A transaction begins when the first SQL statement that changes data is executed with oci_execute() using the `OCI_NO_AUTO_COMMIT` flag. Further data changes made by other statements become part of the same transaction. Data changes made in a transaction are temporary until the transaction is committed or rolled back. Other users of the database will not see the changes until they are committed.

When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_commit() example

    <?php

    // Insert into several tables, rolling back the changes if an error occurs

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

    // The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
    $r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
    if (!$r) {
        $e = oci_error($stid);
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
    $r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
    if (!$r) {
        $e = oci_error($stid);
        oci_rollback($conn);  // rollback changes to both tables
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    // Commit the changes to both tables
    $r = oci_commit($conn);
    if (!$r) {
        $e = oci_error($conn);
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    ?>

### Notlar

> Bilginize:

> Transactions are automatically rolled back when you close the connection, or when the script ends, whichever is soonest. You need to explicitly call oci_commit() to commit the transaction.

> Any call to oci_execute() that uses `OCI_COMMIT_ON_SUCCESS` mode explicitly or by default will commit any previous uncommitted transaction.

> Any Oracle DDL statement such as `CREATE` or `DROP` will automatically commit any uncommitted transaction.

### Ayrıca Bakınız

- oci_execute() - Executes a statement
- oci_rollback() - Rolls back the outstanding database transaction

# oci_connect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_connect — Connect to an Oracle database

### Açıklama

function oci_connect(
string `$username`,
string `$password`,
?string `$connection_string` = `null`,
string `$encoding` = "",
int `$session_mode` = `OCI_DEFAULT`
): resource|false

Returns a connection identifier needed for most other OCI8 operations.

For performance, most applications should use persistent connections with oci_pconnect() instead of oci_connect(). See Connection Handling for general information on connection management and connection pooling.

The second and subsequent calls to oci_connect() with the same parameters will return the connection handle returned from the first call. This means that transactions in one handle are also in the other handles, because they use the same underlying database connection. If two handles need to be transactionally isolated from each other, use oci_new_connect() instead.

### Bağımsız Değişkenler

`username`

  The Oracle user name.

`password`

  The password for `username`.

`connection_string`

  Bağlanılacak `Oracle nesnesi`ni içerir. Ya » Easy Connect dizgesi, veya tnsnames.ora dosyasındaki Connect Name ya da yerel Oracle nesnesi olabilir.

  Belirtilmezse ya da `null` verilirse, PHP bağlanacağı `Oracle nesnesi`ni saptamak için `TWO_TASK` (Linux) veya `LOCAL` (Windows) ve `ORACLE_SID` gibi ortam değişkenlerini kullanır.

  To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. With Oracle [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Futher options were introduced with Oracle 19c, including timeout and keep-alive settings. Refer to Oracle documentation. Service names can be found by running the Oracle utility `lsnrctl status` on the database servermachine.

  The tnsnames.ora file can be in the Oracle Net search path, which includes /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin and /etc. Alternatively set `TNS_ADMIN` so that $TNS_ADMIN/tnsnames.ora is read. Make sure the web daemon has read access to the file.

`encoding`

  Oracle sunucusunun 9.2 ve üstü sürümlerini kullanırken, `karakter_kümesi` bağımsız değişkenini yeni bağlantıda kullanılacak bağımsız değişkene göre belirtebilirsiniz. Eğer 9.2 sürümünden daha eski bir Oracle sunucusu kullanıyorsanız bu bağımsız değişken yok sayılacak, yerine `NLS_LANG` ortam değişkeni kullanılacaktır.

  If not specified, the Oracle Client libraries determine a character set from the `NLS_LANG` environment variable.

  Passing this parameter can reduce the time taken to connect.

`session_mode`

  This parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the following values: `OCI_DEFAULT`, `OCI_SYSOPER` and `OCI_SYSDBA`. If either `OCI_SYSOPER` or `OCI_SYSDBA` were specified, this function will try to establish privileged connection using external credentials. Privileged connections are disabled by default. To enable them you need to set oci8.privileged_connect to `On`.

  PHP 5.3 (PECL OCI8 1.3.4) introduced the `OCI_CRED_EXT` mode value. This tells Oracle to use External or OS authentication, which must be configured in the database. The `OCI_CRED_EXT` flag can only be used with username of "/" and a empty password. oci8.privileged_connect may be `On` or `Off`.

  `OCI_CRED_EXT` may be combined with the `OCI_SYSOPER` or `OCI_SYSDBA` modes.

  `OCI_CRED_EXT` is not supported on Windows for security reasons.

### Dönen Değerler

Returns a connection identifier or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `connection_string` is now nullable.

### Örnekler

Örnek 1 Basic oci_connect() using Easy Connect syntax

    <?php

    // Connects to the XE service (i.e. database) on the "localhost" machine
    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

Örnek 2 Basic oci_connect() using a Network Connect name

    <?php

    // Connects to the MYDB database described in tnsnames.ora file,
    // One example tnsnames.ora entry for MYDB could be:
    //   MYDB =
    //     (DESCRIPTION =
    //       (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521))
    //       (CONNECT_DATA =
    //         (SERVER = DEDICATED)
    //         (SERVICE_NAME = XE)
    //       )
    //     )

    $conn = oci_connect('hr', 'welcome', 'MYDB');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

Örnek 3 oci_connect() with an explicit character set

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

Örnek 4 Using multiple calls to oci_connect()

    <?php

    $c1 = oci_connect("hr", "welcome", 'localhost/XE');
    $c2 = oci_connect("hr", "welcome", 'localhost/XE');

    // Both $c1 and $c2 show the same PHP resource id meaning they use the
    // same underlying database connection
    echo "c1 is $c1<br>\n";
    echo "c2 is $c2<br>\n";

    function create_table($conn)
    {
        $stmt = oci_parse($conn, "create table hallo (test varchar2(64))");
        oci_execute($stmt);
        echo "Created table<br>\n";
    }

    function drop_table($conn)
    {
        $stmt = oci_parse($conn, "drop table hallo");
        oci_execute($stmt);
        echo "Dropped table<br>\n";
    }

    function insert_data($connname, $conn)
    {
        $stmt = oci_parse($conn, "insert into hallo
                  values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
        oci_execute($stmt, OCI_DEFAULT);
        echo "$connname inserted row without committing<br>\n";
    }

    function rollback($connname, $conn)
    {
        oci_rollback($conn);
        echo "$connname rollback<br>\n";
    }

    function select_data($connname, $conn)
    {
        $stmt = oci_parse($conn, "select * from hallo");
        oci_execute($stmt, OCI_DEFAULT);
        echo "$connname ----selecting<br>\n";
        while (oci_fetch($stmt)) {
            echo "    " . oci_result($stmt, "TEST") . "<br>\n";
        }
        echo "$connname ----done<br>\n";
    }

    create_table($c1);

    insert_data('c1', $c1);   // Insert a row using c1
    sleep(2);                 // sleep to show a different timestamp for the 2nd row
    insert_data('c2', $c2);   // Insert a row using c2

    select_data('c1', $c1);   // Results of both inserts are returned
    select_data('c2', $c2);   // Results of both inserts are returned

    rollback('c1', $c1);      // Rollback using c1

    select_data('c1', $c1);   // Both inserts have been rolled back
    select_data('c2', $c2);

    drop_table($c1);

    // Closing one of the connections makes the PHP variable unusable, but
    // the other could be used
    oci_close($c1);
    echo "c1 is $c1<br>\n";
    echo "c2 is $c2<br>\n";

    // Output is:
    //    c1 is Resource id #5
    //    c2 is Resource id #5
    //    Created table
    //    c1 inserted row without committing
    //    c2 inserted row without committing
    //    c1 ----selecting
    //        09-DEC-09 12:14:43
    //        09-DEC-09 12:14:45
    //    c1 ----done
    //    c2 ----selecting
    //        09-DEC-09 12:14:43
    //        09-DEC-09 12:14:45
    //    c2 ----done
    //    c1 rollback
    //    c1 ----selecting
    //    c1 ----done
    //    c2 ----selecting
    //    c2 ----done
    //    Dropped table
    //    c1 is
    //    c2 is Resource id #5

    ?>

### Notlar

> Bilginize:

> An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.

### Ayrıca Bakınız

- oci_pconnect() - Connect to an Oracle database using a persistent connection
- oci_new_connect() - Connect to the Oracle server using a unique connection
- oci_close() - Closes an Oracle connection

# oci_define_by_name

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_define_by_name — Associates a PHP variable with a column for query fetches

### Açıklama

function oci_define_by_name(
resource `$statement`,
string `$column`,
mixed `&$var`,
int `$type` = 0
): bool

Associates a PHP variable with a column for query fetches using oci_fetch().

The oci_define_by_name() call must occur before executing oci_execute().

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

`column`

  The column name used in the query.

  Use uppercase for Oracle's default, non-case sensitive column names. Use the exact column name case for case-sensitive column names.

`var`

  The PHP variable that will contain the returned column value.

`type`

  The data type to be returned. Generally not needed. Note that Oracle-style data conversions are not performed. For example, `SQLT_INT` will be ignored and the returned data type will still be `SQLT_CHR`.

  You can optionally use oci_new_descriptor() to allocate LOB/ROWID/BFILE descriptors.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_define_by_name() example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
    $stid = oci_parse($conn, $sql);

    // The defines MUST be done before executing
    oci_define_by_name($stid, 'LOCATION_ID', $locid);
    oci_define_by_name($stid, 'CITY', $city);

    oci_execute($stid);

    // Each fetch populates the previously defined variables with the next row's data
    while (oci_fetch($stid)) {
        echo "Location id $locid is $city<br>\n";
    }

    // Displays:
    //   Location id 1000 is Roma
    //   Location id 1100 is Venice

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 oci_define_by_name() with case sensitive column names

    <?php

    /*
      Before running, create the table with a case sensitive column name:
        CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
        INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM mytab');

    // Use uppercase for non case-sensitive column names
    oci_define_by_name($stid, 'ID', $id);

    // Use the exact case for case-sensitive column names
    oci_define_by_name($stid, 'MyDescription', $mydesc);

    oci_execute($stid);

    while (oci_fetch($stid)) {
        echo "id $id is $mydesc<br>\n";
    }

    // Displays:
    //   id 1 is Iced Coffee

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 oci_define_by_name() with LOB columns

    <?php

    /*
      Before running, create the table:
        CREATE TABLE mytab (id NUMBER, fruit CLOB);
        INSERT INTO mytab (id, fruit) values (1, 'apple');
        INSERT INTO mytab (id, fruit) values (2, 'orange');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM mytab');

    // The defines MUST be done before executing
    oci_define_by_name($stid, 'ID', $id);
    oci_define_by_name($stid, 'FRUIT', $fruit);  // $fruit will become a LOB descriptor

    oci_execute($stid);

    while (oci_fetch($stid)) {
        echo $id . " is " . $fruit->load(100) . "<br>\n";
    }

    // Displays:
    //   1 is apple
    //   2 is orange

    $fruit->free();
    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 4 oci_define_by_name() with an explicit type

    <?php

    /*
      Before running, create the table:
        CREATE TABLE mytab (id NUMBER, fruit CLOB);
        INSERT INTO mytab (id, fruit) values (1, 'apple');
        INSERT INTO mytab (id, fruit) values (2, 'orange');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM mytab');

    // The defines MUST be done before executing
    oci_define_by_name($stid, 'ID', $id);

    $fruit = oci_new_descriptor($conn, OCI_D_LOB);
    oci_define_by_name($stid, 'FRUIT', $fruit, OCI_D_CLOB);

    oci_execute($stid);

    while (oci_fetch($stid)) {
        echo $id . " is " . $fruit->load(100) . "<br>\n";
    }

    // Displays:
    //   1 is apple
    //   2 is orange

    $fruit->free();
    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_new_descriptor() - Initializes a new empty LOB or FILE descriptor

# oci_error

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_error — Returns the last error found

### Açıklama

function oci_error(?resource `$connection_or_statement` = `null`): array|false

Returns the last error found.

The function should be called immediately after an error occurs. Errors are cleared by a successful statement.

### Bağımsız Değişkenler

`connection_or_statement`

  For most errors, `connection_or_statement` is the resource handle that was passed to the failing function call. For connection errors with oci_connect(), oci_new_connect() or oci_pconnect() `null` should be passed.

### Dönen Değerler

If no error is found, oci_error() returns `false`. Otherwise, oci_error() returns the error information as an associative array.

oci_error() Array Description
Array key | Type | Açıklama
--- | --- | ---
`code` | int | The Oracle error number.
`message` | string | The Oracle error text.
`offset` | int | The byte position of an error in the SQL statement. If there was no statement, this is `0`
`sqltext` | string | The SQL statement text. If there was no statement, this is an empty string.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `connection_or_statement` is now nullable.

### Örnekler

Örnek 1 Displaying the Oracle error message after a connection error

    <?php
    $conn = oci_connect("hr", "welcome", "localhost/XE");
    if (!$conn) {
        $e = oci_error();   // For oci_connect errors do not pass a handle
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }
    ?>

Örnek 2 Displaying the Oracle error message after a parsing error

    <?php
    $stid = oci_parse($conn, "select ' from dual");  // note mismatched quote
    if (!$stid) {
        $e = oci_error($conn);  // For oci_parse errors pass the connection handle
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }
    ?>

Örnek 3 Displaying the Oracle error message, the problematic statement, and the position of the problem of an execution error

    <?php
    $stid = oci_parse($conn, "select does_not_exist from dual");
    $r = oci_execute($stid);
    if (!$r) {
        $e = oci_error($stid);  // For oci_execute errors pass the statement handle
        print htmlentities($e['message']);
        print "\n<pre>\n";
        print htmlentities($e['sqltext']);
        printf("\n%".($e['offset']+1)."s", "^");
        print  "\n</pre>\n";
    }
    ?>

# oci_execute

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_execute — Executes a statement

### Açıklama

function oci_execute(resource `$statement`, int `$mode` = `OCI_COMMIT_ON_SUCCESS`): bool

Executes a `statement` previously returned from oci_parse().

After execution, statements like `INSERT` will have data committed to the database by default. For statements like `SELECT`, execution performs the logic of the query. Query results can subsequently be fetched in PHP with functions like oci_fetch_array().

Each parsed statement may be executed multiple times, saving the cost of re-parsing. This is commonly used for `INSERT` statements when data is bound with oci_bind_by_name().

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`mode`

  An optional second parameter can be one of the following constants:

  Execution Modes
  Constant | Description
  --- | ---
  `OCI_COMMIT_ON_SUCCESS` | Automatically commit all outstanding changes for this connection when the statement has succeeded. This is the default.
  `OCI_DESCRIBE_ONLY` | Make query meta data available to functions like oci_field_name() but do not create a result set. Any subsequent fetch call such as oci_fetch_array() will fail.
  `OCI_NO_AUTO_COMMIT` | Do not automatically commit changes.

  Using `OCI_NO_AUTO_COMMIT` mode starts or continues a transaction. Transactions are automatically rolled back when the connection is closed, or when the script ends. Explicitly call oci_commit() to commit a transaction, or oci_rollback() to abort it.

  When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.

  If `OCI_NO_AUTO_COMMIT` mode is used for any statement including queries, and oci_commit() or oci_rollback() is not subsequently called, then OCI8 will perform a rollback at the end of the script even if no data was changed. To avoid an unnecessary rollback, many scripts do not use `OCI_NO_AUTO_COMMIT` mode for queries or PL/SQL. Be careful to ensure the appropriate transactional consistency for the application when using oci_execute() with different modes in the same script.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_execute() for queries

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

Örnek 2 oci_execute() without specifying a mode example

    <?php

    // Before running, create the table:
    //   CREATE TABLE MYTABLE (col1 NUMBER);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');

    oci_execute($stid); // The row is committed and immediately visible to other users

    ?>

Örnek 3 oci_execute() with `OCI_NO_AUTO_COMMIT` example

    <?php

    // Before running, create the table:
    //   CREATE TABLE MYTABLE (col1 NUMBER);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (:bv)');
    oci_bind_by_name($stid, ':bv', $i, 10);
    for ($i = 1; $i <= 5; ++$i) {
        oci_execute($stid, OCI_NO_AUTO_COMMIT);
    }
    oci_commit($conn);  // commits all new values: 1, 2, 3, 4, 5

    ?>

Örnek 4 oci_execute() with different commit modes example

    <?php

    // Before running, create the table:
    //   CREATE TABLE MYTABLE (col1 NUMBER);

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);  // data not committed

    $stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (456)');
    oci_execute($stid);  // commits both 123 and 456 values

    ?>

Örnek 5 oci_execute() with `OCI_DESCRIBE_ONLY` example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'SELECT * FROM locations');
    oci_execute($s, OCI_DESCRIBE_ONLY);
    for ($i = 1; $i <= oci_num_fields($stid); ++$i) {
        echo oci_field_name($stid, $i) . "<br>\n";
    }

    ?>

### Notlar

> Bilginize:

> Transactions are automatically rolled back when connections are closed, or when the script ends, whichever is soonest. Explicitly call oci_commit() to commit a transaction.

> Any call to oci_execute() that uses `OCI_COMMIT_ON_SUCCESS` mode explicitly or by default will commit any previous uncommitted transaction.

> Any Oracle DDL statement such as `CREATE` or `DROP` will automatically commit any uncommitted transaction.

> Bilginize:

> Because the oci_execute() function generally sends the statement to the database, oci_execute() can identify some statement syntax errors that the lightweight, local oci_parse() function does not.

### Ayrıca Bakınız

- oci_parse() - Prepares an Oracle statement for execution

# oci_fetch

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch — Fetches the next row from a query into internal buffers

### Açıklama

function oci_fetch(resource `$statement`): bool

Fetches the next row from a query into internal buffers accessible either with oci_result(), or by using variables previously defined with oci_define_by_name().

See oci_fetch_array() for general information about fetching data.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

### Dönen Değerler

Returns `true` on success or `false` if there are no more rows in the `statement`.

### Örnekler

Örnek 1 oci_fetch() with defined variables

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
    $stid = oci_parse($conn, $sql);

    // The defines MUST be done before executing
    oci_define_by_name($stid, 'LOCATION_ID', $locid);
    oci_define_by_name($stid, 'CITY', $city);

    oci_execute($stid);

    // Each fetch populates the previously defined variables with the next row's data
    while (oci_fetch($stid)) {
        echo "Location id $locid is $city<br>\n";
    }

    // Displays:
    //   Location id 1000 is Roma
    //   Location id 1100 is Venice

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 oci_fetch() with oci_result()

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    while (oci_fetch($stid)) {
        echo oci_result($stid, 'LOCATION_ID') . " is ";
        echo oci_result($stid, 'CITY') . "<br>\n";
    }

    // Displays:
    //   1000 is Roma
    //   1100 is Venice

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> Will not return rows from Oracle Database Implicit Result Sets. Use oci_fetch_array() instead.

### Ayrıca Bakınız

- oci_define_by_name() - Associates a PHP variable with a column for query fetches
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_object() - Returns the next row from a query as an object
- oci_fetch_row() - Returns the next row from a query as a numeric array
- oci_result() - Returns field's value from the fetched row

# oci_fetch_all

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_all — Fetches multiple rows from a query into a two-dimensional array

### Açıklama

function oci_fetch_all(
resource `$statement`,
array `&$output`,
int `$offset` = 0,
int `$limit` = -1,
int `$flags` = OCI_FETCHSTATEMENT_BY_COLUMN | OCI_ASSOC
): int

Fetches multiple rows from a query into a two-dimensional array. By default, all rows are returned.

This function can be called only once for each query executed with oci_execute().

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

`output`

  The variable to contain the returned rows.

  LOB columns are returned as strings, where Oracle supports conversion.

  See oci_fetch_array() for more information on how data and types are fetched.

`offset`

  The number of initial rows to discard when fetching the result. The default value is 0, so the first row onwards is returned.

`limit`

  The number of rows to return. The default is -1 meaning return all the rows from `offset` + 1 onwards.

`flags`

  Parameter `flags` indicates the array structure and whether associative arrays should be used.

  oci_fetch_all() Array Structure Modes
  Constant | Description
  --- | ---
  `OCI_FETCHSTATEMENT_BY_ROW` | The outer array will contain one sub-array per query row.
  `OCI_FETCHSTATEMENT_BY_COLUMN` | The outer array will contain one sub-array per query column. This is the default.

  Arrays can be indexed either by column heading or numerically. Only one index mode will be returned.

  oci_fetch_all() Array Index Modes
  Constant | Description
  --- | ---
  `OCI_NUM` | Numeric indexes are used for each column's array.
  `OCI_ASSOC` | Associative indexes are used for each column's array. This is the default.

  Use the addition operator "+" to choose a combination of array structure and index modes.

  Oracle's default, non-case sensitive column names will have uppercase array keys. Case-sensitive column names will have array keys using the exact column case. Use var_dump() on `output` to verify the appropriate case to use for each query.

  Queries that have more than one column with the same name should use column aliases. Otherwise only one of the columns will appear in an associative array.

### Dönen Değerler

Returns the number of rows in `output`, which may be 0 or more.

### Örnekler

Örnek 1 oci_fetch_all() example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
    oci_execute($stid);

    $nrows = oci_fetch_all($stid, $res);

    echo "$nrows rows fetched<br>\n";
    var_dump($res);

    // var_dump output is:
    //    2 rows fetched
    //    array(2) {
    //      ["POSTAL_CODE"]=>
    //      array(2) {
    //        [0]=>
    //        string(6) "00989x"
    //        [1]=>
    //        string(6) "10934x"
    //      }
    //      ["CITY"]=>
    //      array(2) {
    //        [0]=>
    //        string(4) "Roma"
    //        [1]=>
    //        string(6) "Venice"
    //      }
    //    }

    // Pretty-print the results
    echo "<table border='1'>\n";
    foreach ($res as $col) {
        echo "<tr>\n";
        foreach ($col as $item) {
            echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 oci_fetch_all() example with `OCI_FETCHSTATEMENT_BY_ROW`

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
    oci_execute($stid);

    $nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);

    echo "$nrows rows fetched<br>\n";
    var_dump($res);

    // Output is:
    //    2 rows fetched
    //    array(2) {
    //      [0]=>
    //      array(2) {
    //        ["POSTAL_CODE"]=>
    //        string(6) "00989x"
    //        ["CITY"]=>
    //        string(4) "Roma"
    //      }
    //      [1]=>
    //      array(2) {
    //        ["POSTAL_CODE"]=>
    //        string(6) "10934x"
    //        ["CITY"]=>
    //        string(6) "Venice"
    //      }
    //    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 oci_fetch_all() with `OCI_NUM`

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
    oci_execute($stid);

    $nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW + OCI_NUM);

    echo "$nrows rows fetched<br>\n";
    var_dump($res);

    // Output is:
    //    2 rows fetched
    //    array(2) {
    //      [0]=>
    //      array(2) {
    //        [0]=>
    //        string(6) "00989x"
    //        [1]=>
    //        string(4) "Roma"
    //      }
    //      [1]=>
    //      array(2) {
    //        [0]=>
    //        string(6) "10934x"
    //        [1]=>
    //        string(6) "Venice"
    //      }
    //    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> Using `offset` is very inefficient. All the rows to be skipped are included in the result set that is returned from the database to PHP. They are then discarded. It is more efficient to use SQL to restrict the offset and range of rows in the query. See oci_fetch_array() for an example.

> Bilginize:

> Queries that return a large number of rows can be more memory efficient if a single-row fetching function like oci_fetch_array() is used.

> Bilginize:

> For queries returning a large number of rows, performance can be significantly improved by increasing oci8.default_prefetch or using oci_set_prefetch().

> Bilginize:

> Will not return rows from Oracle Database 12c Implicit Result Sets. Use oci_fetch_array() instead.

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_object() - Returns the next row from a query as an object
- oci_fetch_row() - Returns the next row from a query as a numeric array
- oci_set_prefetch() - Sets number of rows to be prefetched by queries

# oci_fetch_array

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_array — Returns the next row from a query as an associative or numeric array

### Açıklama

function oci_fetch_array(resource `$statement`, int `$mode` = OCI_BOTH | OCI_RETURN_NULLS): array|false

Returns an array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns `false`, indicating no more rows exist.

If `statement` corresponds to a PL/SQL block returning Oracle Database Implicit Result Sets, then rows from all sets are consecutively fetched. If `statement` is returned by oci_get_implicit_resultset(), then only the subset of rows for one child query are returned.

OCI8 sürücüsü tarafından yapılan veri türü eşlemeyle ilgili ayrıntılar için sürücü tarafından desteklenen veri türleri bölümüne bakınız.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

  Can also be a statement identifier returned by oci_get_implicit_resultset().

`mode`

  An optional second parameter can be any combination of the following constants:

  oci_fetch_array() Modes
  Constant | Description
  --- | ---
  `OCI_BOTH` | Returns an array with both associative and numeric indices. This is the same as `OCI_ASSOC` + `OCI_NUM` and is the default behavior.
  `OCI_ASSOC` | Returns an associative array.
  `OCI_NUM` | Returns a numeric array.
  `OCI_RETURN_NULLS` | Creates elements for `null` fields. The element values will be a PHP `null`.
  `OCI_RETURN_LOBS` | Returns the contents of LOBs instead of the LOB descriptors.

  The default `mode` is `OCI_BOTH`.

  Use the addition operator "+" to specify more than one mode at a time.

### Dönen Değerler

Returns an array with associative and/or numeric indices. If there are no more rows in the `statement` then `false` is returned.

By default, `LOB` columns are returned as LOB descriptors.

`DATE` columns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such as `NLS_LANG` or by a previously executed `ALTER SESSION SET NLS_DATE_FORMAT` command.

Oracle's default, non-case sensitive column names will have uppercase associative indices in the result array. Case-sensitive column names will have array indices using the exact column case. Use var_dump() on the result array to verify the appropriate case to use for each query.

The table name is not included in the array index. If your query contains two different columns with the same name, use `OCI_NUM` or add a column alias to the query to ensure name uniqueness, see example #7. Otherwise only one column will be returned via PHP.

### Örnekler

Örnek 1 oci_fetch_array() with `OCI_BOTH`

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_BOTH)) != false) {
        // Use the uppercase column names for the associative array indices
        echo $row[0] . " and " . $row['DEPARTMENT_ID']   . " are the same<br>\n";
        echo $row[1] . " and " . $row['DEPARTMENT_NAME'] . " are the same<br>\n";
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 oci_fetch_array() with `OCI_NUM`

    <?php

    /*
      Before running, create the table:
          CREATE TABLE mytab (id NUMBER, description CLOB);
          INSERT INTO mytab (id, description) values (1, 'A very long string');
          COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_NUM)) != false) {
        echo $row[0] . "<br>\n";
        echo $row[1]->read(11) . "<br>\n"; // this will output first 11 bytes from DESCRIPTION
    }

    // Output is:
    //    1
    //    A very long

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 oci_fetch_array() with `OCI_ASSOC`

    <?php

    /*
      Before running, create the table:
          CREATE TABLE mytab (id NUMBER, description CLOB);
          INSERT INTO mytab (id, description) values (1, 'A very long string');
          COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false) {
        echo $row['ID'] . "<br>\n";
        echo $row['DESCRIPTION']->read(11) . "<br>\n"; // this will output first 11 bytes from DESCRIPTION
    }

    // Output is:
    //    1
    //    A very long

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 4 oci_fetch_array() with `OCI_RETURN_NULLS`

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT 1, null FROM dual');
    oci_execute($stid);
    while (($row = oci_fetch_array ($stid, OCI_ASSOC)) != false) { // Ignore NULLs
        var_dump($row);
    }

    /*
    The above code prints:
      array(1) {
        [1]=>
        string(1) "1"
      }
    */

    $stid = oci_parse($conn, 'SELECT 1, null FROM dual');
    oci_execute($stid);
    while (($row = oci_fetch_array ($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) { // Fetch NULLs
        var_dump($row);
    }

    /*
    The above code prints:
      array(2) {
        [1]=>
        string(1) "1"
        ["NULL"]=>
        NULL
      }
    */

    ?>

Örnek 5 oci_fetch_array() with `OCI_RETURN_LOBS`

    <?php

    /*
      Before running, create the table:
          CREATE TABLE mytab (id NUMBER, description CLOB);
          INSERT INTO mytab (id, description) values (1, 'A very long string');
          COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) != false) {
        echo $row['ID'] . "<br>\n";
        echo $row['DESCRIPTION'] . "<br>\n"; // this contains all of DESCRIPTION
        // In a loop, freeing the large variable before the 2nd fetch reduces PHP's peak memory usage
        unset($row);
    }

    // Output is:
    //    1
    //    A very long string

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 6 oci_fetch_array() with case sensitive column names

    <?php

    /*
       Before running, create the table:
          CREATE TABLE mytab ("Name" VARCHAR2(20), city VARCHAR2(20));
          INSERT INTO mytab ("Name", city) values ('Chris', 'Melbourne');
          COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'select * from mytab');
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);

    // Because 'Name' was created as a case-sensitive column, that same
    // case is used for the array index.  However uppercase 'CITY' must
    // be used for the case-insensitive column index
    print $row['Name'] . "<br>\n";   //  prints Chris
    print $row['CITY'] . "<br>\n";   //  prints Melbourne

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 7 oci_fetch_array() with columns having duplicate names

    <?php

    /*
      Before running, create the tables:
          CREATE TABLE mycity (id NUMBER, name VARCHAR2(20));
          INSERT INTO mycity (id, name) values (1, 'Melbourne');
          CREATE TABLE mycountry (id NUMBER, name VARCHAR2(20));
          INSERT INTO mycountry (id, name) values (1, 'Australia');
          COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'SELECT mycity.name, mycountry.name
            FROM mycity, mycountry
            WHERE mycity.id = mycountry.id';
    $stid = oci_parse($conn, $sql);
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC);
    var_dump($row);

    // Output only contains one "NAME" entry:
    //    array(1) {
    //      ["NAME"]=>
    //      string(9) "Australia"
    //    }

    // To query a repeated column name, use an SQL column alias like "AS ctnm":
    $sql = 'SELECT mycity.name AS ctnm, mycountry.name
            FROM mycity, mycountry
            WHERE mycity.id = mycountry.id';
    $stid = oci_parse($conn, $sql);
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC);
    var_dump($row);

    // Output now contains both columns selected:
    //    array(2) {
    //      ["CTNM"]=>
    //      string(9) "Melbourne"
    //      ["NAME"]=>
    //      string(9) "Australia"
    //    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 8 oci_fetch_array() with `DATE` columns

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Set the date format for this connection.
    // For performance reasons, consider changing the format
    // in a trigger or with environment variables instead
    $stid = oci_parse($conn, "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'");
    oci_execute($stid);

    $stid = oci_parse($conn, 'SELECT hire_date FROM employees WHERE employee_id = 188');
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC);
    echo $row['HIRE_DATE'] . "<br>\n";  // prints 1997-06-14

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 9 oci_fetch_array() with `REF CURSOR`

    <?php
    /*
      Create the PL/SQL stored procedure as:

      CREATE OR REPLACE PROCEDURE myproc(p1 OUT SYS_REFCURSOR) AS
      BEGIN
        OPEN p1 FOR SELECT * FROM all_objects WHERE ROWNUM < 5000;
      END;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'BEGIN myproc(:rc); END;');
    $refcur = oci_new_cursor($conn);
    oci_bind_by_name($stid, ':rc', $refcur, -1, OCI_B_CURSOR);
    oci_execute($stid);

    // Execute the returned REF CURSOR and fetch from it like a statement identifier
    oci_execute($refcur);
    echo "<table border='1'>\n";
    while (($row = oci_fetch_array($refcur, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($refcur);
    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 10 Pagination with oci_fetch_array() using a `LIMIT`-like query

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Find the version of the database
    preg_match('/Release ([0-9]+)\./', oci_server_version($conn), $matches);
    $oracleversion = $matches[1];

    // This is the query you want to "page" through
    $sql = 'SELECT city, postal_code FROM locations ORDER BY city';

    if ($oracleversion >= 12) {
        // Make use of Oracle 12c OFFSET / FETCH NEXT syntax
        $sql = $sql . ' OFFSET :offset ROWS FETCH NEXT :numrows ROWS ONLY';
    } else {
        // Older Oracle versions need a nested query selecting a subset
        // from $sql.  Or, if the SQL statement is known at development
        // time, consider using a row_number() function instead of this
        // nested solution.  In production environments, be careful to
        // avoid SQL Injection issues with concatenation.
        $sql = "SELECT * FROM (SELECT a.*, ROWNUM AS my_rnum
                               FROM ($sql) a
                               WHERE ROWNUM <= :offset + :numrows)
                WHERE my_rnum > :offset";
    }

    $offset  = 0;  // skip this many rows
    $numrows = 5;  // return 5 rows
    $stid = oci_parse($conn, $sql);
    oci_bind_by_name($stid, ':numrows', $numrows);
    oci_bind_by_name($stid, ':offset', $offset);
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) != false) {
        echo $row['CITY'] . " " . $row['POSTAL_CODE'] . "<br>\n";
    }

    // Output is:
    //    Beijing 190518
    //    Bern 3095
    //    Bombay 490231
    //    Geneva 1730
    //    Hiroshima 6823

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 11 oci_fetch_array() with Oracle Database Implicit Result Sets

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    // Requires OCI8 2.0 (or later) and Oracle Database 12c (or later)
    // Also see oci_get_implicit_resultset()
    $sql = 'DECLARE
               c1 SYS_REFCURSOR;
            BEGIN
               OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
               OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
            END;';

    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    // Note: oci_fetch_all and oci_fetch() cannot be used in this manner
    echo "<table>\n";
    while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    // Output is:
    //    Beijing 190518
    //    Bern    3095
    //    Bombay  490231
    //    CN
    //    CH
    //    IN

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> Associative array indices need to be in uppercase for standard Oracle columns that were created with case insensitive names.

> Bilginize:

> For queries returning a large number of rows, performance can be significantly improved by increasing oci8.default_prefetch or using oci_set_prefetch().

> Bilginize:

> The function oci_fetch_array() is insignificantly slower than oci_fetch_assoc() or oci_fetch_row(), but is more flexible.

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_object() - Returns the next row from a query as an object
- oci_fetch_row() - Returns the next row from a query as a numeric array
- oci_set_prefetch() - Sets number of rows to be prefetched by queries

# oci_fetch_assoc

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_assoc — Returns the next row from a query as an associative array

### Açıklama

function oci_fetch_assoc(resource `$statement`): array|false

Returns an associative array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns `false`, indicating no more rows exist.

Calling oci_fetch_assoc() is identical to calling oci_fetch_array() with `OCI_ASSOC` + `OCI_RETURN_NULLS`.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

### Dönen Değerler

Returns an associative array. If there are no more rows in the `statement` then `false` is returned.

### Örnekler

Örnek 1 oci_fetch_assoc() Example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
    oci_execute($stid);

    while (($row = oci_fetch_assoc($stid)) != false) {
        echo $row['DEPARTMENT_ID'] . " " . $row['DEPARTMENT_NAME'] . "<br>\n";
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> See oci_fetch_array() for more examples of fetching rows.

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_object() - Returns the next row from a query as an object
- oci_fetch_row() - Returns the next row from a query as a numeric array

# oci_fetch_object

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_object — Returns the next row from a query as an object

### Açıklama

function oci_fetch_object(resource `$statement`, int `$mode` = OCI_ASSOC | OCI_RETURN_NULLS): stdClass|false

Returns an object containing the next result-set row of a query. Each attribute of the object corresponds to a column of the row. This function is typically called in a loop until it returns `false`, indicating no more rows exist.

OCI8 sürücüsü tarafından yapılan veri türü eşlemeyle ilgili ayrıntılar için sürücü tarafından desteklenen veri türleri bölümüne bakınız.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

### Dönen Değerler

Returns an object. Each attribute of the object corresponds to a column of the row. If there are no more rows in the `statement` then `false` is returned.

Any `LOB` columns are returned as LOB descriptors.

`DATE` columns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such as `NLS_LANG` or by a previously executed `ALTER SESSION SET NLS_DATE_FORMAT` command.

Oracle's default, non-case sensitive column names will have uppercase attribute names. Case-sensitive column names will have attribute names using the exact column case. Use var_dump() on the result object to verify the appropriate case for attribute access.

Attribute values will be `null` for any `NULL` data fields.

### Örnekler

Örnek 1 oci_fetch_object() example

    <?php

    /*
      Before running, create the table:
        CREATE TABLE mytab (id NUMBER, description VARCHAR2(30));
        INSERT INTO mytab (id, description) values (1, 'Fish and Chips');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_object($stid)) != false) {
        // Use upper case attribute names for each standard Oracle column
        echo $row->ID . "<br>\n";
        echo $row->DESCRIPTION . "<br>\n";
    }

    // Output is:
    //    1
    //    Fish and Chips

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 oci_fetch_object() with case sensitive column names

    <?php

    /*
      Before running, create the table with a case sensitive column name:
        CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
        INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, "MyDescription" FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_object($stid)) != false) {
        // Use upper case attribute names for each standard Oracle column
        echo $row->ID . "<br>\n";
        // Use the exact case for the case sensitive column name
        echo $row->MyDescription . "<br>\n";
    }

    // Output is:
    //    1
    //    Iced Coffee

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 oci_fetch_object() with LOBs

    <?php

    /*
      Before running, create the table:
        CREATE TABLE mytab (id NUMBER, description CLOB);
        INSERT INTO mytab (id, description) values (1, 'A very long string');
        COMMIT;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($stid);

    while (($row = oci_fetch_object($stid)) != false) {
        echo $row->ID . "<br>\n";
        // The following will output the first 11 bytes from DESCRIPTION
        echo $row->DESCRIPTION->read(11) . "<br>\n";
    }

    // Output is:
    //    1
    //    A very long

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_row() - Returns the next row from a query as a numeric array

# oci_fetch_row

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_fetch_row — Returns the next row from a query as a numeric array

### Açıklama

function oci_fetch_row(resource `$statement`): array|false

Returns a numerically indexed array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns `false`, indicating no more rows exist.

Calling oci_fetch_row() is identical to calling oci_fetch_array() with `OCI_NUM` + `OCI_RETURN_NULLS`.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

### Dönen Değerler

Returns a numerically indexed array. If there are no more rows in the `statement` then `false` is returned.

### Örnekler

Örnek 1 oci_fetch_row() Example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
    oci_execute($stid);

    while (($row = oci_fetch_row($stid)) != false) {
        echo $row[0] . " " . $row[1] . "<br>\n";
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> See oci_fetch_array() for more examples of fetching rows.

### Ayrıca Bakınız

- oci_fetch() - Fetches the next row from a query into internal buffers
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_object() - Returns the next row from a query as an object

# oci_field_is_null

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_is_null — Checks if a field in the currently fetched row is `null`

### Açıklama

function oci_field_is_null(resource `$statement`, string|int `$column`): bool

Checks if the given `column` from the current row of `statement` is `null`.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns `true` if `column` is `null`, `false` otherwise.

### Örnekler

Örnek 1 oci_field_name() example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (c1 NUMBER);
    //   INSERT INTO mytab VALUES (1);
    //   INSERT INTO mytab VALUES (NULL);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid);

    while (($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) != false) {
        $ncols = oci_num_fields($stid);
        for ($col = 1; $col <= $ncols; $col++) {
            var_dump(oci_field_is_null($stid, $col));
        }
    }

    // Outputs:
    //    bool(false)
    //    bool(true)

    oci_free_statement($stid);
    oci_close($conn);

    ?>

# oci_field_name

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_name — Returns the name of a field from the statement

### Açıklama

function oci_field_name(resource `$statement`, string|int `$column`): string|false

Returns the name of the `column`.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns the name as a string, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_name() example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1),
    //                       clob_col CLOB, date_col DATE);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    echo "<table border=\"1\">\n";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>\n";

    $ncols = oci_num_fields($stid);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stid, $i);
        $column_type  = oci_field_type($stid, $i);

        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "</tr>\n";
    }

    echo "</table>\n";

    // Outputs:
    //    Name           Type
    //    NUMBER_COL    NUMBER
    //    VARCHAR2_COL  VARCHAR2
    //    CLOB_COL      CLOB
    //    DATE_COL      DATE

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_num_fields() - Returns the number of result columns in a statement
- oci_field_type() - Returns a field's data type name
- oci_field_size() - Returns field's size

# oci_field_precision

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_precision — Tell the precision of a field

### Açıklama

function oci_field_precision(resource `$statement`, string|int `$column`): int|false

Returns precision of the `column`.

For FLOAT columns, precision is nonzero and scale is -127. If precision is 0, then column is NUMBER. Else it's NUMBER(precision, scale).

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns the precision as an integer, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_precision() Example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (c1 NUMBER, c2 FLOAT, c3 NUMBER(4), c4 NUMBER(5,3));

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    $ncols = oci_num_fields($stid);
    for ($i = 1; $i <= $ncols; $i++) {
        echo oci_field_name($stid, $i) . " "
            . oci_field_precision($stid, $i) . " "
            . oci_field_scale($stid, $i) . "<br>\n";
    }

    // Outputs:
    //   C1    0 -127
    //   C2  126 -127
    //   C3    4    0
    //   C4    5    3

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_field_scale() - Tell the scale of the field
- oci_field_type() - Returns a field's data type name

# oci_field_scale

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_scale — Tell the scale of the field

### Açıklama

function oci_field_scale(resource `$statement`, string|int `$column`): int|false

Returns the scale of the column with `column` index.

For FLOAT columns, precision is nonzero and scale is -127. If precision is 0, then column is NUMBER. Else it's NUMBER(precision, scale).

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns the scale as an integer, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_scale() Example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (c1 NUMBER, c2 FLOAT, c3 NUMBER(4), c4 NUMBER(5,3));

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    $ncols = oci_num_fields($stid);
    for ($i = 1; $i <= $ncols; $i++) {
        echo oci_field_name($stid, $i) . " "
            . oci_field_precision($stid, $i) . " "
            . oci_field_scale($stid, $i) . "<br>\n";
    }

    // Outputs:
    //   C1    0 -127
    //   C2  126 -127
    //   C3    4    0
    //   C4    5    3

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_field_precision() - Tell the precision of a field
- oci_field_type() - Returns a field's data type name

# oci_field_size

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_size — Returns field's size

### Açıklama

function oci_field_size(resource `$statement`, string|int `$column`): int|false

Returns the size of a `column`.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns the size of a `column` in bytes, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_size() example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1),
    //                       clob_col CLOB, date_col DATE);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    echo "<table border=\"1\">\n";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>\n";

    $ncols = oci_num_fields($stid);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stid, $i);
        $column_type  = oci_field_type($stid, $i);
        $column_size  = oci_field_size($stid, $i);

        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "<td>$column_size</td>";
        echo "</tr>\n";
    }

    echo "</table>\n";

    // Outputs:
    //    Name           Type       Length
    //    NUMBER_COL    NUMBER        22
    //    VARCHAR2_COL  VARCHAR2       1
    //    CLOB_COL      CLOB        4000
    //    DATE_COL      DATE           7

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_num_fields() - Returns the number of result columns in a statement
- oci_field_name() - Returns the name of a field from the statement

# oci_field_type

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_type — Returns a field's data type name

### Açıklama

function oci_field_type(resource `$statement`, string|int `$column`): string|int|false

Returns a field's data type name.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns the field data type as a string or an int, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_type() example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1),
    //                       clob_col CLOB, date_col DATE);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    echo "<table border=\"1\">\n";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>\n";

    $ncols = oci_num_fields($stid);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stid, $i);
        $column_type  = oci_field_type($stid, $i);
        $column_size  = oci_field_size($stid, $i);

        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "<td>$column_size</td>";
        echo "</tr>\n";
    }

    echo "</table>\n";

    // Outputs:
    //    Name           Type       Length
    //    NUMBER_COL    NUMBER        22
    //    VARCHAR2_COL  VARCHAR2       1
    //    CLOB_COL      CLOB        4000
    //    DATE_COL      DATE           7

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_num_fields() - Returns the number of result columns in a statement
- oci_field_name() - Returns the name of a field from the statement
- oci_field_size() - Returns field's size

# oci_field_type_raw

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_field_type_raw — Tell the raw Oracle data type of the field

### Açıklama

function oci_field_type_raw(resource `$statement`, string|int `$column`): int|false

Returns Oracle's raw "SQLT" data type of the `column`.

If you want a field's type name, then use oci_field_type() instead.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

`column`

  Can be the field's index (1-based) or name.

### Dönen Değerler

Returns Oracle's raw data type as a number, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_field_type_raw() Example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1), clob_col CLOB, date_col DATE);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'select * from mytab');
    oci_execute($stid, OCI_DESCRIBE_ONLY);  // Use OCI_DESCRIBE_ONLY if not fetching rows
    $n = oci_num_fields($stid);
    for ($i = 1; $i <= $n; ++$i) {
        echo oci_field_name($stid, $i) . " is raw type: " . oci_field_type_raw($stid, $i) . "<br>\n";
    }

    // Output is:
    //    NUMBER_COL is raw type: 2
    //    VARCHAR2_COL is raw type: 1
    //    CLOB_COL is raw type: 112
    //    DATE_COL is raw type: 12

    oci_free_statement($stid);
    oci_close($conn);

    ?>

# oci_free_descriptor

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_free_descriptor — Frees a descriptor

### Açıklama

function oci_free_descriptor(OCILob `$lob`): bool

Frees a descriptor allocated by oci_new_descriptor().

### Bağımsız Değişkenler

`lob`

  Descriptor allocated by oci_new_descriptor().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize:

> This function is commonly used as a method OCILOB::free.

### Ayrıca Bakınız

- OCILOB::free

# oci_free_statement

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_free_statement — Frees all resources associated with statement or cursor

### Açıklama

function oci_free_statement(resource `$statement`): bool

Frees resources associated with Oracle's cursor or statement, which was received from as a result of oci_parse() or obtained from Oracle.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# oci_get_implicit_resultset

(PHP 5 >= 5.6.0, PHP 7, PHP 8, PECL OCI8 >= 2.0.0)

oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database Implicit Result Sets

### Açıklama

function oci_get_implicit_resultset(resource `$statement`): resource|false

Used to fetch consecutive sets of query results after the execution of a stored or anonymous Oracle PL/SQL block where that block returns query results with the Oracle Database 12 (or later) DBMS_SQL.RETURN_RESULT PL/SQL function. This allows PL/SQL blocks to easily return query results.

The child statement can be used with any of the OCI8 fetching functions: oci_fetch(), oci_fetch_all(), oci_fetch_array(), oci_fetch_object(), oci_fetch_assoc() or oci_fetch_row()

Child statements inherit their parent statement's prefetch value, or it can be explicitly set with oci_set_prefetch().

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(). The statement identifier may or may not be associated with a SQL statement that returns Implicit Result Sets.

### Dönen Değerler

Returns a statement handle for the next child statement available on `statement`. Returns `false` when child statements do not exist, or all child statements have been returned by previous calls to oci_get_implicit_resultset().

### Örnekler

Örnek 1 Fetching Implicit Result Sets in a loop

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'DECLARE
                c1 SYS_REFCURSOR;
            BEGIN
               OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
               OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
            END;';

    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    while (($stid_c = oci_get_implicit_resultset($stid))) {
        echo "<h2>New Implicit Result Set:</h2>\n";
        echo "<table>\n";
        while (($row = oci_fetch_array($stid_c, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
            echo "<tr>\n";
            foreach ($row as $item) {
                echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
            }
            echo "</tr>\n";
        }
        echo "</table>\n";
    }

    // Output is:
    //    New Implicit Result Set:
    //     Beijing 190518
    //     Bern    3095
    //     Bombay  490231
    //    New Implicit Result Set:
    //     CN
    //     CH
    //     IN

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 Getting child statement handles individually

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'DECLARE
                c1 SYS_REFCURSOR;
            BEGIN
               OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
               OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
            END;';

    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    $stid_1 = oci_get_implicit_resultset($stid);
    $stid_2 = oci_get_implicit_resultset($stid);

    $row = oci_fetch_array($stid_1, OCI_ASSOC+OCI_RETURN_NULLS);
    var_dump($row);
    $row = oci_fetch_array($stid_2, OCI_ASSOC+OCI_RETURN_NULLS);
    var_dump($row);
    $row = oci_fetch_array($stid_1, OCI_ASSOC+OCI_RETURN_NULLS);
    var_dump($row);
    $row = oci_fetch_array($stid_2, OCI_ASSOC+OCI_RETURN_NULLS);
    var_dump($row);

    // Output is:
    //    array(2) {
    //      ["CITY"]=>
    //      string(7) "Beijing"
    //      ["POSTAL_CODE"]=>
    //      string(6) "190518"
    //    }
    //    array(1) {
    //      ["COUNTRY_ID"]=>
    //      string(2) "CN"
    //    }
    //    array(2) {
    //      ["CITY"]=>
    //      string(4) "Bern"
    //      ["POSTAL_CODE"]=>
    //      string(4) "3095"
    //    }
    //    array(1) {
    //      ["COUNTRY_ID"]=>
    //      string(2) "CH"
    //    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 3 Explicitly setting the Prefetch Count

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'DECLARE
                c1 SYS_REFCURSOR;
            BEGIN
               OPEN c1 FOR SELECT city, postal_code FROM locations ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
            END;';

    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    $stid_c = oci_get_implicit_resultset($stid);
    oci_set_prefetch($stid_c, 200);   // Set the prefetch before fetching from the child statement
    echo "<table>\n";
    while (($row = oci_fetch_array($stid_c, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 4 Implicit Result Set example without using oci_get_implicit_resultset()

All results from all queries are returned consecutively.

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'DECLARE
                c1 SYS_REFCURSOR;
            BEGIN
               OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
               OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
               DBMS_SQL.RETURN_RESULT(c1);
            END;';

    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    // Note: oci_fetch_all and oci_fetch() cannot be used in this manner
    echo "<table>\n";
    while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    // Output is:
    //    Beijing 190518
    //    Bern 3095
    //    Bombay 490231
    //    CN
    //    CH
    //    IN

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> For queries returning a large number of rows, performance can be significantly improved by increasing oci8.default_prefetch or using oci_set_prefetch().

# oci_lob_copy

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_lob_copy — Copies large object

### Açıklama

function oci_lob_copy(OCILob `$to`, OCILob `$from`, ?int `$length` = `null`): bool

Copies a large object or a part of a large object to another large object. Old LOB-recipient data will be overwritten.

If you need to copy a particular part of a LOB to a particular position of a LOB, use OCILob::seek() to move LOB internal pointers.

### Bağımsız Değişkenler

`to`

  The destination LOB.

`from`

  The copied LOB.

`length`

  Indicates the length of data to be copied.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `length` is now nullable.

### Notlar

> Bilginize:

> The OCILob class was called OCI-Lob prior to PHP 8 and PECL OCI8 3.0.0.

# oci_lob_is_equal

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_lob_is_equal — Compares two LOB/FILE locators for equality

### Açıklama

function oci_lob_is_equal(OCILob `$lob1`, OCILob `$lob2`): bool

Compares two LOB/FILE locators.

### Bağımsız Değişkenler

`lob1`

  A LOB identifier.

`lob2`

  A LOB identifier.

### Dönen Değerler

Returns `true` if these objects are equal, `false` otherwise.

### Notlar

> Bilginize:

> The OCILob class was called OCI-Lob prior to PHP 8 and PECL OCI8 3.0.0.

# oci_new_collection

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_collection — Allocates new collection object

### Açıklama

function oci_new_collection(resource `$connection`, string `$type_name`, ?string `$schema` = `null`): OCICollection|false

Allocates a new collection object.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect() or oci_pconnect().

`type_name`

  Should be a valid named type (uppercase).

`schema`

  Should point to the scheme, where the named type was created. The name of the current user is used when `null` is passed.

### Dönen Değerler

Returns a new OCICollection object or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `schema` is now nullable.

### Notlar

> Bilginize:

> The OCICollection class was called OCI-Collection prior to PHP 8 and OCI8 3.0.0.

# oci_new_connect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_connect — Connect to the Oracle server using a unique connection

### Açıklama

function oci_new_connect(
string `$username`,
string `$password`,
?string `$connection_string` = `null`,
string `$encoding` = "",
int `$session_mode` = `OCI_DEFAULT`
): resource|false

Establishes a new connection to an Oracle server and logs on.

Unlike oci_connect() and oci_pconnect(), oci_new_connect() does not cache connections and will always return a brand-new freshly opened connection handle. This is useful if your application needs transactional isolation between two sets of queries.

### Bağımsız Değişkenler

`username`

  The Oracle user name.

`password`

  The password for `username`.

`connection_string`

  Bağlanılacak `Oracle nesnesi`ni içerir. Ya » Easy Connect dizgesi, veya tnsnames.ora dosyasındaki Connect Name ya da yerel Oracle nesnesi olabilir.

  Belirtilmezse ya da `null` verilirse, PHP bağlanacağı `Oracle nesnesi`ni saptamak için `TWO_TASK` (Linux) veya `LOCAL` (Windows) ve `ORACLE_SID` gibi ortam değişkenlerini kullanır.

  To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. With Oracle [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Futher options were introduced with Oracle 19c, including timeout and keep-alive settings. Refer to Oracle documentation. Service names can be found by running the Oracle utility `lsnrctl status` on the database servermachine.

  The tnsnames.ora file can be in the Oracle Net search path, which includes /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin and /etc. Alternatively set `TNS_ADMIN` so that $TNS_ADMIN/tnsnames.ora is read. Make sure the web daemon has read access to the file.

`encoding`

  Oracle sunucusunun 9.2 ve üstü sürümlerini kullanırken, `karakter_kümesi` bağımsız değişkenini yeni bağlantıda kullanılacak bağımsız değişkene göre belirtebilirsiniz. Eğer 9.2 sürümünden daha eski bir Oracle sunucusu kullanıyorsanız bu bağımsız değişken yok sayılacak, yerine `NLS_LANG` ortam değişkeni kullanılacaktır.

  If not specified, the Oracle Client libraries determine a character set from the `NLS_LANG` environment variable.

  Passing this parameter can reduce the time taken to connect.

`session_mode`

  This parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the following values: `OCI_DEFAULT`, `OCI_SYSOPER` and `OCI_SYSDBA`. If either `OCI_SYSOPER` or `OCI_SYSDBA` were specified, this function will try to establish privileged connection using external credentials. Privileged connections are disabled by default. To enable them you need to set oci8.privileged_connect to `On`.

  PHP 5.3 (PECL OCI8 1.3.4) introduced the `OCI_CRED_EXT` mode value. This tells Oracle to use External or OS authentication, which must be configured in the database. The `OCI_CRED_EXT` flag can only be used with username of "/" and a empty password. oci8.privileged_connect may be `On` or `Off`.

  `OCI_CRED_EXT` may be combined with the `OCI_SYSOPER` or `OCI_SYSDBA` modes.

  `OCI_CRED_EXT` is not supported on Windows for security reasons.

### Dönen Değerler

Returns a connection identifier or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `connection_string` is now nullable.

### Örnekler

The following demonstrates how you can separate connections.

Örnek 1 oci_new_connect() example

    <?php

    // create table mytab (mycol number);

    function query($name, $c)
    {
        echo "Querying $name\n";
        $s = oci_parse($c, "select * from mytab");
        oci_execute($s, OCI_NO_AUTO_COMMIT);
        $row = oci_fetch_array($s, OCI_ASSOC);
        if (!$row) {
            echo "No rows\n";
        } else {
            do {
                foreach ($row as $item)
                    echo $item . " ";
                echo "\n";
            } while (($row = oci_fetch_array($s, OCI_ASSOC)) != false);
        }
    }

    $c1 = oci_connect("hr", "welcome", "localhost/orcl");
    $c2 = oci_new_connect("hr", "welcome", "localhost/orcl");

    $s = oci_parse($c1, "insert into mytab values(1234)");
    oci_execute($s, OCI_NO_AUTO_COMMIT);

    query("basic connection", $c1);
    query("new connection", $c2);
    oci_commit($c1);
    query("new connection after commit", $c2);

    // Output is:
    //   Querying basic connection
    //   1234
    //   Querying new connection
    //   No rows
    //   Querying new connection after commit
    //   1234

    ?>

See oci_connect() for further examples of parameter usage.

### Ayrıca Bakınız

- oci_connect() - Connect to an Oracle database
- oci_pconnect() - Connect to an Oracle database using a persistent connection

# oci_new_cursor

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_cursor — Allocates and returns a new cursor (statement handle)

### Açıklama

function oci_new_cursor(resource `$connection`): resource|false

Allocates a new statement handle on the specified connection.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect() or oci_pconnect().

### Dönen Değerler

Returns a new statement handle, or `false` on error.

### Örnekler

Örnek 1 Binding a REF CURSOR in an Oracle stored procedure call

    <?php

    // Precreate:
    //   create or replace procedure myproc(myrc out sys_refcursor) as
    //   begin
    //     open myrc for select first_name from employees;
    //   end;

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $curs = oci_new_cursor($conn);
    $stid = oci_parse($conn, "begin myproc(:cursbv); end;");
    oci_bind_by_name($stid, ":cursbv", $curs, -1, OCI_B_CURSOR);
    oci_execute($stid);

    oci_execute($curs);  // Execute the REF CURSOR like a normal statement id
    while (($row = oci_fetch_array($curs, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo $row['FIRST_NAME'] . "<br />\n";
    }

    oci_free_statement($stid);
    oci_free_statement($curs);
    oci_close($conn);

    ?>

# oci_new_descriptor

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_descriptor — Initializes a new empty LOB or FILE descriptor

### Açıklama

function oci_new_descriptor(resource `$connection`, int `$type` = `OCI_DTYPE_LOB`): ?OCILob

Allocates resources to hold descriptor or LOB locator.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect() or oci_pconnect().

`type`

  Valid values for `type` are: `OCI_DTYPE_FILE`, `OCI_DTYPE_LOB` and `OCI_DTYPE_ROWID`.

### Dönen Değerler

Returns a new LOB or FILE descriptor on success, or `null` on failure.

### Örnekler

Örnek 1 oci_new_descriptor() example

    <?php
    /* This script is designed to be called from a HTML form.
     * It expects $user, $password, $table, $where, and $commitsize
     * to be passed in from the form.  The script then deletes
     * the selected rows using the ROWID and commits after each
     * set of $commitsize rows. (Use with care, there is no rollback)
     */
    $conn = oci_connect($user, $password);
    $stmt = oci_parse($conn, "select rowid from $table $where");
    $rowid = oci_new_descriptor($conn, OCI_D_ROWID);
    oci_define_by_name($stmt, "ROWID", $rowid);
    oci_execute($stmt);
    while (oci_fetch($stmt)) {
        $nrows = oci_num_rows($stmt);
        $delete = oci_parse($conn, "delete from $table where ROWID = :rid");
        oci_bind_by_name($delete, ":rid", $rowid, -1, OCI_B_ROWID);
        oci_execute($delete);
        echo "$nrows\n";
        if (($nrows % $commitsize) == 0) {
            oci_commit($conn);
        }
    }
    $nrows = oci_num_rows($stmt);
    echo "$nrows deleted...\n";
    oci_free_statement($stmt);
    oci_close($conn);
    ?>

    <?php
        /* This script demonstrates file upload to LOB columns
         * The formfield used for this example looks like this
         * <form action="upload.php" method="post" enctype="multipart/form-data">
         * <input type="file" name="lob_upload" />
         * ...
         */
      if (!isset($lob_upload) || $lob_upload == 'none'){
    ?>
    <form action="upload.php" method="post" enctype="multipart/form-data">
    Upload file: <input type="file" name="lob_upload" /><br />
    <input type="submit" value="Upload" /> - <input type="reset" value="Reset" />
    </form>
    <?php
      } else {

         // $lob_upload contains the temporary filename of the uploaded file

         // see also the features section on file upload,
         // if you would like to use secure uploads

         $conn = oci_connect($user, $password);
         $lob = oci_new_descriptor($conn, OCI_D_LOB);
         $stmt = oci_parse($conn, "insert into $table (id, the_blob)
                   values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob");
         oci_bind_by_name($stmt, ':the_blob', $lob, -1, OCI_B_BLOB);
         oci_execute($stmt, OCI_DEFAULT);
         if ($lob->savefile($lob_upload)){
            oci_commit($conn);
            echo "Blob successfully uploaded\n";
         }else{
            echo "Couldn't upload Blob\n";
         }
         $lob->free();
         oci_free_statement($stmt);
         oci_close($conn);
      }
    ?>

Örnek 2 oci_new_descriptor() example

    <?php
    /* Calling PL/SQL stored procedures which contain clobs as input
     * parameters.
     * Example PL/SQL stored procedure signature is:
     *
     * PROCEDURE save_data
     *   Argument Name                  Type                    In/Out Default?
     *   ------------------------------ ----------------------- ------ --------
     *   KEY                            NUMBER(38)              IN
     *   DATA                           CLOB                    IN
     *
     */

    $conn = oci_connect($user, $password);
    $stmt = oci_parse($conn, "begin save_data(:key, :data); end;");
    $clob = oci_new_descriptor($conn, OCI_D_LOB);
    oci_bind_by_name($stmt, ':key', $key);
    oci_bind_by_name($stmt, ':data', $clob, -1, OCI_B_CLOB);
    $clob->write($data);
    oci_execute($stmt, OCI_DEFAULT);
    oci_commit($conn);
    $clob->free();
    oci_free_statement($stmt);
    ?>

### Ayrıca Bakınız

- oci_bind_by_name() - Binds a PHP variable to an Oracle placeholder

# oci_num_fields

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_num_fields — Returns the number of result columns in a statement

### Açıklama

function oci_num_fields(resource `$statement`): int

Gets the number of columns in the given `statement`.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

### Dönen Değerler

Returns the number of columns as an int.

### Örnekler

Örnek 1 oci_num_fields() example

    <?php

    // Create the table with:
    //   CREATE TABLE mytab (id NUMBER, quantity NUMBER);

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "SELECT * FROM mytab");
    oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows

    $ncols = oci_num_fields($stid);
    for ($i = 1; $i <= $ncols; $i++) {
        echo oci_field_name($stid, $i) . " " . oci_field_type($stid, $i) . "<br>\n";
    }

    // Outputs:
    //    ID NUMBER
    //    QUANTITY NUMBER

    oci_free_statement($stid);
    oci_close($conn);

    ?>

# oci_num_rows

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_num_rows — Returns number of rows affected during statement execution

### Açıklama

function oci_num_rows(resource `$statement`): int|false

Gets the number of rows affected during statement execution.

### Bağımsız Değişkenler

`statement`

  A valid OCI statement identifier.

### Dönen Değerler

Returns the number of rows affected as an integer, başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 oci_num_rows() example

    <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, "create table emp2 as select * from employees");
    oci_execute($stid);
    echo oci_num_rows($stid) . " rows inserted.<br />\n";
    oci_free_statement($stid);

    $stid = oci_parse($conn, "delete from emp2");
    oci_execute($stid, OCI_DEFAULT);
    echo oci_num_rows($stid) . " rows deleted.<br />\n";
    oci_commit($conn);
    oci_free_statement($stid);

    $stid = oci_parse($conn, "drop table emp2");
    oci_execute($stid);
    oci_free_statement($stid);

    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> This function does not return number of rows selected! For SELECT statements this function will return the number of rows, that were fetched to the buffer with oci_fetch*() functions.

# oci_parse

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_parse — Prepares an Oracle statement for execution

### Açıklama

function oci_parse(resource `$connection`, string `$sql`): resource|false

Prepares `sql` using `connection` and returns the statement identifier, which can be used with oci_bind_by_name(), oci_execute() and other functions.

Statement identifiers can be freed with oci_free_statement() or by setting the variable to `null`.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`sql`

  The SQL or PL/SQL statement.

  SQL statements should not end with a semi-colon (";"). PL/SQL statements should end with a semi-colon (";").

### Dönen Değerler

Returns a statement handle on success, or `false` on error.

### Örnekler

Örnek 1 oci_parse() example for SQL statements

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    // Parse the statement. Note there is no final semi-colon in the SQL statement
    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

Örnek 2 oci_parse() example for PL/SQL statements

    <?php

    /*
      Before running the PHP program, create a stored procedure in
      SQL*Plus or SQL Developer:

      CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
      BEGIN
          p2 := p1 * 2;
      END;

    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $p1 = 8;

    // When parsing PL/SQL programs, there should be a final semi-colon in the string
    $stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
    oci_bind_by_name($stid, ':p1', $p1);
    oci_bind_by_name($stid, ':p2', $p2, 40);

    oci_execute($stid);

    print "$p2\n";   // prints 16

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Notlar

> Bilginize:

> This function does not validate `sql`. The only way to find out if `sql` is a valid SQL or PL/SQL statement is to execute it.

### Ayrıca Bakınız

- oci_execute() - Executes a statement
- oci_free_statement() - Frees all resources associated with statement or cursor

# oci_password_change

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_password_change — Changes password of Oracle's user

### Açıklama

function oci_password_change(
resource `$connection`,
string `$username`,
string `$old_password`,
string `$new_password`
): bool
function oci_password_change(
string `$database_name`,
string `$username`,
string `$old_password`,
string `$new_password`
): resource

Changes password for user with `username`.

The oci_password_change() function is most useful for PHP command-line scripts, or when non-persistent connections are used throughout the PHP application.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect() or oci_pconnect().

`username`

  The Oracle user name.

`old_password`

  The old password.

`new_password`

  The new password to be set.

`database_name`

  The database name.

### Dönen Değerler

When `database_name` is provided, oci_password_change() returns `true` on success, başarısızlık durumunda `false` döner. When `connection` is provided, oci_password_change() returns the connection resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_password_change() example changing the password of an already connected user

    <?php

    $dbase      = 'localhost/orcl';
    $user       = 'cj';
    $current_pw = 'welcome';
    $new_pw     = 'geelong';

    $c = oci_pconnect($user, $current_pw, $dbase);
    oci_password_change($c, $user, $current_pw, $new_pw);
    echo "New password is : " . $new_pw . "\n";

    ?>

Örnek 2 oci_password_change() example of connecting and changing the password in one step

    <?php

    $dbase      = 'localhost/orcl';
    $user       = 'cj';
    $current_pw = 'welcome';
    $new_pw     = 'geelong';

    $c = oci_pconnect($user, $current_pw, $dbase);
    if (!$c) {
        $m = oci_error();
        if ($m['code'] == 28001) { // "ORA-28001: the password has expired"
            // Login and reset password at the same time
            $c = oci_password_change($dbase, $user, $current_pw, $new_pw);
            if ($c) {
                echo "New password is : " . $new_pw . "\n";
            }
        }
    }

    if (!$c) {  // The original error wasn't 28001, or the password change failed
        $m = oci_error();
        trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
    }

    // Use the connection $c
    // ...

    ?>

### Notlar

> Bilginize:

> Changing the password either with this function or directly in Oracle should be done carefully. This is because PHP applications may continue to successfully reuse persistent connections by authenticating with the old password. The best practice is to restart all web servers whenever the user password is changed.

> Bilginize:

> If upgrading the Oracle client libraries or the database from a release prior to 11.2.0.3 to version 11.2.0.3 or higher, oci_password_change() may give the error "ORA-1017: invalid username/password" unless both client and server versions are upgraded at the same time.

> Bilginize:

> The second oci_password_change() syntax is available since OCI8 version 1.1.

# oci_pconnect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_pconnect — Connect to an Oracle database using a persistent connection

### Açıklama

function oci_pconnect(
string `$username`,
string `$password`,
?string `$connection_string` = `null`,
string `$encoding` = "",
int `$session_mode` = `OCI_DEFAULT`
): resource|false

Creates a persistent connection to an Oracle server and logs on.

Persistent connections are cached and re-used between requests, resulting in reduced overhead on each page load; a typical PHP application will have a single persistent connection open against an Oracle server per Apache child process (or PHP FPM process). See the OCI8 Connection Handling and Connection Pooling section for more information.

### Bağımsız Değişkenler

`username`

  The Oracle user name.

`password`

  The password for `username`.

`connection_string`

  Bağlanılacak `Oracle nesnesi`ni içerir. Ya » Easy Connect dizgesi, veya tnsnames.ora dosyasındaki Connect Name ya da yerel Oracle nesnesi olabilir.

  Belirtilmezse ya da `null` verilirse, PHP bağlanacağı `Oracle nesnesi`ni saptamak için `TWO_TASK` (Linux) veya `LOCAL` (Windows) ve `ORACLE_SID` gibi ortam değişkenlerini kullanır.

  To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. With Oracle [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Futher options were introduced with Oracle 19c, including timeout and keep-alive settings. Refer to Oracle documentation. Service names can be found by running the Oracle utility `lsnrctl status` on the database servermachine.

  The tnsnames.ora file can be in the Oracle Net search path, which includes /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin and /etc. Alternatively set `TNS_ADMIN` so that $TNS_ADMIN/tnsnames.ora is read. Make sure the web daemon has read access to the file.

`encoding`

  Oracle sunucusunun 9.2 ve üstü sürümlerini kullanırken, `karakter_kümesi` bağımsız değişkenini yeni bağlantıda kullanılacak bağımsız değişkene göre belirtebilirsiniz. Eğer 9.2 sürümünden daha eski bir Oracle sunucusu kullanıyorsanız bu bağımsız değişken yok sayılacak, yerine `NLS_LANG` ortam değişkeni kullanılacaktır.

  If not specified, the Oracle Client libraries determine a character set from the `NLS_LANG` environment variable.

  Passing this parameter can reduce the time taken to connect.

`session_mode`

  This parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the following values: `OCI_DEFAULT`, `OCI_SYSOPER` and `OCI_SYSDBA`. If either `OCI_SYSOPER` or `OCI_SYSDBA` were specified, this function will try to establish privileged connection using external credentials. Privileged connections are disabled by default. To enable them you need to set oci8.privileged_connect to `On`.

  PHP 5.3 (PECL OCI8 1.3.4) introduced the `OCI_CRED_EXT` mode value. This tells Oracle to use External or OS authentication, which must be configured in the database. The `OCI_CRED_EXT` flag can only be used with username of "/" and a empty password. oci8.privileged_connect may be `On` or `Off`.

  `OCI_CRED_EXT` may be combined with the `OCI_SYSOPER` or `OCI_SYSDBA` modes.

  `OCI_CRED_EXT` is not supported on Windows for security reasons.

### Dönen Değerler

Returns a connection identifier or `false` on error.

### Örnekler

Örnek 1 Basic oci_pconnect() Example using Easy Connect syntax

    <?php

    // Connects to the XE service (i.e. database) on the "localhost" machine
    $conn = oci_pconnect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'SELECT * FROM employees');
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    ?>

See oci_connect() for further examples of parameter usage.

### Notlar

> Bilginize: The lifetime and maximum number of persistent Oracle connections per PHP process can be tuned by setting the following configuration values: oci8.persistent_timeout, oci8.ping_interval and oci8.max_persistent.

### Ayrıca Bakınız

- oci_connect() - Connect to an Oracle database
- oci_new_connect() - Connect to the Oracle server using a unique connection

# oci_register_taf_callback

(PHP 7.0 >= 7.0.21, PHP 8, PHP 7 >= 7.1.7, PHP 8, PECL OCI8 >= 2.1.7)

oci_register_taf_callback — Register a user-defined callback function for Oracle Database TAF

### Açıklama

function oci_register_taf_callback(resource `$connection`, ?callable `$callback`): bool

Registers a user-defined callback function to `connection`. If `connection` fails due to instance or network failure, the registered callback function will be invoked for several times during failover. See OCI8 Transparent Application Failover (TAF) Support for information.

When oci_register_taf_callback() is called multiple times, each registration overwrites the previous one.

Use oci_unregister_taf_callback() to explicitly unregister a user-defined callback.

TAF callback registration will NOT be saved across persistent connections, therefore the callback needs to be re-registered for a new persistent connection.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier.

`callback`

  A user-defined callback to register for Oracle TAF. It can be a string of the function name or a Closure (anonymous function).

  The interface of a TAF user-defined callback function is as follows:

  function userCallbackFn(resource `$connection`, int `$event`, int `$type`): int

  See the parameter description and an example on OCI8 Transparent Application Failover (TAF) Support page.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- oci_unregister_taf_callback() - Unregister a user-defined callback function for Oracle Database TAF

# oci_result

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_result — Returns field's value from the fetched row

### Açıklama

function oci_result(resource `$statement`, string|int `$column`): mixed

Returns the data from `column` in the current row, fetched by oci_fetch().

OCI8 sürücüsü tarafından yapılan veri türü eşlemeyle ilgili ayrıntılar için sürücü tarafından desteklenen veri türleri bölümüne bakınız.

### Bağımsız Değişkenler

`statement`

`column`

  Can be either use the column number (1-based) or the column name. The case of the column name must be the case that Oracle meta data describes the column as, which is uppercase for columns created case insensitively.

### Dönen Değerler

Returns everything as strings except for abstract types (ROWIDs, LOBs and FILEs). Returns `false` on error.

### Örnekler

Örnek 1 oci_fetch() with oci_result()

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
    $stid = oci_parse($conn, $sql);
    oci_execute($stid);

    while (oci_fetch($stid)) {
        echo oci_result($stid, 'LOCATION_ID') . " is ";
        echo oci_result($stid, 'CITY') . "<br>\n";
    }

    // Displays:
    //   1000 is Roma
    //   1100 is Venice

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_fetch_array() - Returns the next row from a query as an associative or numeric array
- oci_fetch_assoc() - Returns the next row from a query as an associative array
- oci_fetch_object() - Returns the next row from a query as an object
- oci_fetch_row() - Returns the next row from a query as a numeric array
- oci_fetch_all() - Fetches multiple rows from a query into a two-dimensional array

# oci_rollback

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_rollback — Rolls back the outstanding database transaction

### Açıklama

function oci_rollback(resource `$connection`): bool

Reverts all uncommitted changes for the Oracle `connection` and ends the transaction. It releases all locks held. All Oracle `SAVEPOINTS` are erased.

A transaction begins when the first SQL statement that changes data is executed with oci_execute() using the `OCI_NO_AUTO_COMMIT` flag. Further data changes made by other statements become part of the same transaction. Data changes made in a transaction are temporary until the transaction is committed or rolled back. Other users of the database will not see the changes until they are committed.

When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect() or oci_new_connect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 oci_rollback() example

    <?php

    // Insert into several tables, rolling back the changes if an error occurs

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

    // The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
    $r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
    if (!$r) {
        $e = oci_error($stid);
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
    $r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
    if (!$r) {
        $e = oci_error($stid);
        oci_rollback($conn);  // rollback changes to both tables
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    // Commit the changes to both tables
    $r = oci_commit($conn);
    if (!r) {
        $e = oci_error($conn);
        trigger_error(htmlentities($e['message']), E_USER_ERROR);
    }

    ?>

Örnek 2 Rolling back to a `SAVEPOINT` example

    <?php
    $stid = oci_parse($conn, 'UPDATE mytab SET id = 1111');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);

    // Create the savepoint
    $stid = oci_parse($conn, 'SAVEPOINT mysavepoint');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);

    $stid = oci_parse($conn, 'UPDATE mytab SET id = 2222');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);

    // Use an explicit SQL statement to rollback to the savepoint
    $stid = oci_parse($conn, 'ROLLBACK TO SAVEPOINT mysavepoint');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);

    oci_commit($conn);  // mytab now has id of 1111
    ?>

### Notlar

> Bilginize:

> Transactions are automatically rolled back when you close the connection, or when the script ends, whichever is soonest. You need to explicitly call oci_commit() to commit the transaction.

> Any call to oci_execute() that uses `OCI_COMMIT_ON_SUCCESS` mode explicitly or by default will commit any previous uncommitted transaction.

> Any Oracle DDL statement such as `CREATE` or `DROP` will automatically commit any uncommitted transaction.

### Ayrıca Bakınız

- oci_commit() - Commits the outstanding database transaction
- oci_execute() - Executes a statement

# oci_server_version

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_server_version — Returns the Oracle Database version

### Açıklama

function oci_server_version(resource `$connection`): string|false

Returns a string with the Oracle Database version and available options

### Bağımsız Değişkenler

`connection`

### Dönen Değerler

Returns the version information as a string or `false` on error.

### Örnekler

Örnek 1 oci_server_version() example

    <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    echo "Server Version: " . oci_server_version($conn);

    // Displays:
    // Server Version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    // With the Partitioning, OLAP, Data Mining and Real Application Testing option

    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci_client_version() - Returns the Oracle client library version

# oci_set_action

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_action — Sets the action name

### Açıklama

function oci_set_action(resource `$connection`, string `$action`): bool

Sets the action name for Oracle tracing.

The action name is registered with the database when the next 'round-trip' from PHP to the database occurs, typically when an SQL statement is executed.

The action name can subsequently be queried from database administration views such as `V$SESSION`. It can be used for tracing and monitoring such as with `V$SQLAREA` and `DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE`.

The value may be retained across persistent connections.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`action`

  User chosen string up to 32 bytes long.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the action

    <?php

    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    // Record the action
    oci_set_action($c, 'Friend Lookup');

    // Code that causes a round-trip, for example a query:
    $s = oci_parse($c, 'select * from dual');
    oci_execute($s);
    oci_fetch_all($s, $res);

    sleep(30);

    ?>

    // While the script is running, the administrator can see the actions
    // being performed:

    sqlplus system/welcome
    SQL> select action from v$session;

### Notlar

> Bilginize: Oracle version requirement

> This function is available when PHP is linked with Oracle Database libraries from version 10g onwards.

İpucu

# Performance

With older versions of OCI8 or the Oracle Database, the client information can be set using the Oracle `DBMS_APPLICATION_INFO` package. This is less efficient than using oci_set_client_info().

Dikkat

# Round-trip Gotcha

Some but not all OCI8 functions cause round-trips. Round-trips to the database may not occur with queries when result caching is enabled.

### Ayrıca Bakınız

- oci_set_module_name() - Sets the module name
- oci_set_client_info() - Sets the client information
- oci_set_client_identifier() - Sets the client identifier
- oci_set_db_operation() - Sets the database operation

# oci_set_call_timeout

(PHP 7.2 >= 7.2.14, PHP 8, PHP 7 >= 7.3.1, PHP 8, PECL OCI8 >= 2.2.0)

oci_set_call_timeout — Sets a millisecond timeout for database calls

### Açıklama

function oci_set_call_timeout(resource `$connection`, int `$timeout`): bool

Sets a timeout limiting the maximum time a database round-trip using this connection may take.

Each OCI8 operation may make zero or more calls to Oracle's client library. These internal calls may then may make zero or more round-trips to Oracle Database. If any one of those round-trips takes more than `time_out` milliseconds, then the operation is cancelled and an error is returned to the application.

The `time_out` value applies to each round-trip individually, not to the sum of all round-trips. Time spent processing in PHP OCI8 before or after the completion of each round-trip is not counted.

When a call is interrupted, Oracle will attempt to clean up the connection for reuse. This operation is allowed to run for another `time_out` period. Depending on the outcome of the cleanup, the connection may or may not be reusable.

When persistent connections are used, the timeout value will be retained across PHP requests.

The oci_set_call_timeout() function is available when OCI8 uses Oracle 18 (or later) Client libraries.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`timeout`

  The maximum time in milliseconds that any single round-trip between PHP and Oracle Database may take.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the timeout

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    oci_set_call_timeout($conn, 5000);

    ?>

# oci_set_client_identifier

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_client_identifier — Sets the client identifier

### Açıklama

function oci_set_client_identifier(resource `$connection`, string `$client_id`): bool

Sets the client identifier used by various database components to identify lightweight application users who authenticate as the same database user.

The client identifier is registered with the database when the next 'round-trip' from PHP to the database occurs, typically when an SQL statement is executed.

The identifier can subsequently be queried, for example with `SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') FROM DUAL`. Database administration views such as `V$SESSION` will also contain the value. It can be used with `DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE` for tracing and can also be used for auditing.

The value may be retained across page requests that use the same persistent connection.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`client_id`

  User chosen string up to 64 bytes long.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the client identifier to the application user

    <?php

    // Find the application user's login name
    session_start();
    $un = my_validate_session($_SESSION['username']);
    $c = oci_connect('myschema', 'welcome', 'localhost/XE');

    // Tell Oracle who that user is
    oci_set_client_identifier($c, $un);

    // The next round-trip to the database will piggyback the identifier
    $s = oci_parse($c, 'select mydata from mytable');
    oci_execute($s);

    // ...

    ?>

### Notlar

Dikkat

# Round-trip Gotcha

Some but not all OCI8 functions cause round-trips. Round-trips to the database may not occur with queries when result caching is enabled.

### Ayrıca Bakınız

- oci_set_module_name() - Sets the module name
- oci_set_action() - Sets the action name
- oci_set_client_info() - Sets the client information
- oci_set_db_operation() - Sets the database operation

# oci_set_client_info

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_client_info — Sets the client information

### Açıklama

function oci_set_client_info(resource `$connection`, string `$client_info`): bool

Sets the client information for Oracle tracing.

The client information is registered with the database when the next 'round-trip' from PHP to the database occurs, typically when an SQL statement is executed.

The client information can subsequently be queried from database administration views such as `V$SESSION`.

The value may be retained across persistent connections.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`client_info`

  User chosen string up to 64 bytes long.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the client information

    <?php

    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    // Record the client information
    oci_set_client_info($c, 'My Application Version 2');

    // Code that causes a round-trip, for example a query:
    $s = oci_parse($c, 'select * from dual');
    oci_execute($s);
    oci_fetch_all($s, $res);

    sleep(30);

    ?>

    // While the script is running, the administrator can see the client
    // information:

    sqlplus system/welcome
    SQL> select client_info from v$session;

### Notlar

> Bilginize: Oracle version requirement

> This function is available when PHP is linked with Oracle Database libraries from version 10g onwards.

İpucu

# Performance

With older versions of OCI8 or the Oracle Database, the client information can be set using the Oracle `DBMS_APPLICATION_INFO` package. This is less efficient than using oci_set_client_info().

Dikkat

# Round-trip Gotcha

Some but not all OCI8 functions cause round-trips. Round-trips to the database may not occur with queries when result caching is enabled.

### Ayrıca Bakınız

- oci_set_module_name() - Sets the module name
- oci_set_action() - Sets the action name
- oci_set_client_identifier() - Sets the client identifier
- oci_set_db_operation() - Sets the database operation

# oci_set_db_operation

(PHP 7 >= 7.2.14, PHP 8, PHP 7 >= 7.3.1, PHP 8, PECL OCI8 >= 2.2.0)

oci_set_db_operation — Sets the database operation

### Açıklama

function oci_set_db_operation(resource `$connection`, string `$action`): bool

Sets the DBOP for Oracle tracing.

The database operation name is registered with the database when the next 'round-trip' from PHP to the database occurs, typically when a SQL statement is executed.

The database operation can subsequently be queried from database administration views such as `V$SQL_MONITOR`.

The oci_set_db_operation() function is available when OCI8 uses Oracle 12 (or later) Client libraries and Oracle Database 12 (or later).

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`action`

  User chosen string.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the DBOP

    <?php

    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    // Record the operation
    oci_set_db_operation($c, 'main query');

    // Code that causes a round-trip, for example a query:
    $s = oci_parse($c, 'select * from dual');
    oci_execute($s);
    oci_fetch_all($s, $res);

    sleep(30);

    ?>

    // While the script is running, the administrator can see the database operations
    // being performed:

    sqlplus system/welcome
    SQL> select dbop_name from v$sql_monitor;

### Notlar

Dikkat

# Round-trip Gotcha

Some but not all OCI8 functions cause round-trips. Round-trips to the database may not occur with queries when result caching is enabled.

### Ayrıca Bakınız

- oci_set_action() - Sets the action name
- oci_set_module_name() - Sets the module name
- oci_set_client_info() - Sets the client information
- oci_set_client_identifier() - Sets the client identifier

# oci_set_edition

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_edition — Sets the database edition

### Açıklama

function oci_set_edition(string `$edition`): bool

Sets the database "edition" of objects to be used by a subsequent connections.

Oracle Editions allow concurrent versions of applications to run using the same schema and object names. This is useful for upgrading live systems.

Call oci_set_edition() before calling oci_connect(), oci_pconnect() or oci_new_connect().

If an edition is set that is not valid in the database, connection will fail even if oci_set_edition() returns success.

When using persistent connections, if a connection with the requested edition setting already exists, it is reused. Otherwise, a different persistent connection is created

### Bağımsız Değişkenler

`edition`

  Oracle Database edition name previously created with the SQL "`CREATE EDITION`" command.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Two scripts can use different versions of myfunc() at the same time

    <?php

    // File 1

    echo "Version 1 of application\n";

    oci_set_edition('ORA$BASE');
    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    $s = oci_parse($c, "begin :r := myfunc(); end;");
    oci_bind_by_name($s, ":r", $r, 20);
    oci_execute($s);
    echo "The result is $r\n";

    ?>

    <?php

    // File 2

    echo "Version 2 of application\n";

    oci_set_edition('E1');
    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    $s = oci_parse($c, "begin :r := myfunc(); end;");
    oci_bind_by_name($s, ":r", $r, 20);
    oci_execute($s);
    echo "The result is $r\n";

    ?>

### Notlar

> Bilginize: Oracle version requirement

> This function is available from Oracle 11gR2 onwards.

Dikkat

# Persistent connections

To avoid inconsistencies and unexpected errors, do not use ALTER SESSION SET EDITION to change the edition on persistent connections.

Dikkat

# DRCP Connection Pooling

To avoid inconsistencies and unexpected errors when using editions and DRCP with Oracle 11.2.0.1, keep a one-to-one correspondence between the oci8.connection_class and the edition name used by applications. Each pooled server of a given connection class should only be used with one edition. This restriction has been removed with Oracle 11.2.0.2.

# oci_set_module_name

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_module_name — Sets the module name

### Açıklama

function oci_set_module_name(resource `$connection`, string `$name`): bool

Sets the module name for Oracle tracing.

The module name is registered with the database when the next 'round-trip' from PHP to the database occurs, typically when an SQL statement is executed.

The name can subsequently be queried from database administration views such as `V$SESSION`. It can be used for tracing and monitoring such as with `V$SQLAREA` and `DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE`.

The value may be retained across persistent connections.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

`name`

  User chosen string up to 48 bytes long.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Setting the module name

    <?php

    $c = oci_connect('hr', 'welcome', 'localhost/XE');

    // Record the module
    oci_set_module_name($c, 'Home Page');

    // Code that causes a round-trip, for example a query:
    $s = oci_parse($c, 'select * from dual');
    oci_execute($s);
    oci_fetch_all($s, $res);

    sleep(30);
    ?>

    // While the script is running, the administrator can see the
    // modules in use:

    sqlplus system/welcome
    SQL> select module from v$session;

### Notlar

> Bilginize: Oracle version requirement

> This function is available when PHP is linked with Oracle Database libraries from version 10g onwards.

İpucu

# Performance

With older versions of OCI8 or the Oracle Database, the client information can be set using the Oracle `DBMS_APPLICATION_INFO` package. This is less efficient than using oci_set_client_info().

Dikkat

# Round-trip Gotcha

Some but not all OCI8 functions cause round-trips. Round-trips to the database may not occur with queries when result caching is enabled.

### Ayrıca Bakınız

- oci_set_action() - Sets the action name
- oci_set_client_info() - Sets the client information
- oci_set_client_identifier() - Sets the client identifier
- oci_set_db_operation() - Sets the database operation

# oci_set_prefetch

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_set_prefetch — Sets number of rows to be prefetched by queries

### Açıklama

function oci_set_prefetch(resource `$statement`, int `$rows`): bool

Sets the number of rows to be buffered by the Oracle Client libraries after a successful query call to oci_execute() and for each subsequent internal fetch request to the database. For queries returning a large number of rows, performance can be significantly improved by increasing the prefetch count above the default oci8.default_prefetch value.

Prefetching is Oracle's efficient way of returning more than one data row from the database in each network request. This can result in better network and CPU utilization. The buffering of rows is internal to OCI8 and the behavior of OCI8 fetching functions is unchanged regardless of the prefetch count. For example, oci_fetch_row() will always return one row. The prefetch buffer is per-statement and is not used by re-executed statements or by other connections.

Call oci_set_prefetch() before calling oci_execute().

A tuning goal is to set the prefetch value to a reasonable size for the network and database to handle. For queries returning a very large number of rows, overall system efficiency might be better if rows are retrieved from the database in several chunks (i.e set the prefetch value smaller than the number of rows). This allows the database to handle other users' statements while the PHP script is processing the current set of rows.

Query prefetching was introduced in Oracle 8i. REF CURSOR prefetching was introduced in Oracle 11gR2 and occurs when PHP is linked with Oracle 11gR2 (or later) Client libraries. Nested cursor prefetching was introduced in Oracle 11gR2 and requires both the Oracle Client libraries and the database to be version 11gR2 or greater.

Prefetching is not supported when queries contain LONG or LOB columns. The prefetch value is ignored and single-row fetches will be used in all the situations when prefetching is not supported.

When using Oracle Database 12c, the prefetch value set by PHP can be overridden by Oracle's client `oraaccess.xml` configuration file. Refer to Oracle documentation for more detail.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

`rows`

  The number of rows to be prefetched, >= 0

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Changing the default prefetch value for a query

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'SELECT * FROM myverybigtable');
    oci_set_prefetch($stid, 300);  // Set before calling oci_execute()
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($stid);
    oci_close($conn);

    ?>

Örnek 2 Changing the default prefetch for a REF CURSOR fetch

    <?php
    /*
      Create the PL/SQL stored procedure as:

      CREATE OR REPLACE PROCEDURE myproc(p1 OUT SYS_REFCURSOR) AS
      BEGIN
        OPEN p1 FOR SELECT * FROM all_objects WHERE ROWNUM < 5000;
      END;
    */

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'BEGIN myproc(:rc); END;');
    $refcur = oci_new_cursor($conn);
    oci_bind_by_name($stid, ':rc', $refcur, -1, OCI_B_CURSOR);
    oci_execute($stid);

    // Change the prefetch before executing the cursor.
    // REF CURSOR prefetching works when PHP is linked with Oracle 11gR2 or later Client libraries
    oci_set_prefetch($refcur, 200);
    oci_execute($refcur);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($refcur, OCI_ASSOC+OCI_RETURN_NULLS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($refcur);
    oci_free_statement($stid);
    oci_close($conn);

    ?>

If PHP OCI8 fetches from a REF CURSOR and then passes the REF CURSOR back to a second PL/SQL procedure for further processing, then set the REF CURSOR prefetch count to `0` to avoid rows being "lost" from the result set. The prefetch value is the number of extra rows fetched in each OCI8 internal request to the database, so setting it to `0` means only fetch one row at a time.

Örnek 3 Setting the prefetch value when passing a REF CURSOR back to Oracle

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/orcl');

    // get the REF CURSOR
    $stid = oci_parse($conn, 'BEGIN myproc(:rc_out); END;');
    $refcur = oci_new_cursor($conn);
    oci_bind_by_name($stid, ':rc_out', $refcur, -1, OCI_B_CURSOR);
    oci_execute($stid);

    // Display two rows, but don't prefetch any extra rows otherwise
    // those extra rows would not be passed back to myproc_use_rc().
    oci_set_prefetch($refcur, 0);
    oci_execute($refcur);
    $row = oci_fetch_array($refcur);
    var_dump($row);
    $row = oci_fetch_array($refcur);
    var_dump($row);

    // pass the REF CURSOR to myproc_use_rc() to do more data processing
    // with the result set
    $stid = oci_parse($conn, 'begin myproc_use_rc(:rc_in); end;');
    oci_bind_by_name($stid, ':rc_in', $refcur, -1, OCI_B_CURSOR);
    oci_execute($stid);

    ?>

### Ayrıca Bakınız

- oci8.default_prefetch ini option

# oci_set_prefetch_lob

(PHP 8.2, PECL OCI8 >= 3.2)

oci_set_prefetch_lob — Sets the amount of data prefetched for each CLOB or BLOB.

### Açıklama

function oci_set_prefetch_lob(resource `$statement`, int `$prefetch_lob_size`): bool

Sets the internal buffer size used to fetch each CLOB or BLOB value when the implementation gets the internal Oracle LOB locator from the database after a successful query call to oci_execute() and for each subsequent internal fetch request to the database. Increasing this value can improve the performance of fetching smaller LOBs by reducing round-trips between PHP and the database. Memory usage will change.

The value affects LOBs returned as OCILob instances and also those returned using `OCI_RETURN_LOBS`.

Call oci_set_prefetch_lob() before calling oci_execute(). If it is not called, the value of oci8.prefetch_lob_size is used.

The LOB prefetch value should only be set with Oracle Database 12.2 or later.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(), or a `REF CURSOR` statement identifier.

`prefetch_lob_size`

  The number of bytes of each LOB to be prefetched, >= 0

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Changing the LOB prefetch value for a query

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'SELECT myclob FROM mytable');
    oci_set_prefetch_lob($stid, 100000);  // Set before calling oci_execute()
    oci_execute($stid);

    echo "<table border='1'>\n";
    while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS)) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";

    oci_free_statement($stid);
    oci_close($conn);

    ?>

### Ayrıca Bakınız

- oci8.prefetch_lob_size ini option

# oci_statement_type

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_statement_type — Returns the type of a statement

### Açıklama

function oci_statement_type(resource `$statement`): string|false

Returns a keyword identifying the type of the OCI8 `statement`.

### Bağımsız Değişkenler

`statement`

  A valid OCI8 statement identifier from oci_parse().

### Dönen Değerler

Returns the type of `statement` as one of the following strings.

Statement type
Return String | Notes
--- | ---
`ALTER` |
`BEGIN` |
`CALL` |
`CREATE` |
`DECLARE` |
`DELETE` |
`DROP` |
`INSERT` |
`SELECT` |
`UPDATE` |
`UNKNOWN` |

Returns `false` on error.

### Örnekler

Örnek 1 oci_statement_type() example

    <?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');

    $stid = oci_parse($conn, 'DELETE FROM departments WHERE department_id = 130;');
    if (oci_statement_type($stid) == "DELETE") {
        trigger_error('You are not allowed to delete from this table', E_USER_ERROR);
    }
    else {
        oci_execute($stid);  // delete the row
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>

# oci_unregister_taf_callback

(PHP 7.0 >= 7.0.23, PHP 8, PHP 7 >= 7.1.9, PHP 8, PECL OCI8 >= 2.1.7)

oci_unregister_taf_callback — Unregister a user-defined callback function for Oracle Database TAF

### Açıklama

function oci_unregister_taf_callback(resource `$connection`): bool

Unregister the user-defined callback function registered to `connection` by oci_register_taf_callback(). See OCI8 Transparent Application Failover (TAF) Support for information.

### Bağımsız Değişkenler

`connection`

  An Oracle connection identifier.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- oci_register_taf_callback() - Register a user-defined callback function for Oracle Database TAF

## İçindekiler

- oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter
- oci_bind_by_name — Binds a PHP variable to an Oracle placeholder
- oci_cancel — Cancels reading from cursor
- oci_client_version — Returns the Oracle client library version
- oci_close — Closes an Oracle connection
- oci_commit — Commits the outstanding database transaction
- oci_connect — Connect to an Oracle database
- oci_define_by_name — Associates a PHP variable with a column for query fetches
- oci_error — Returns the last error found
- oci_execute — Executes a statement
- oci_fetch — Fetches the next row from a query into internal buffers
- oci_fetch_all — Fetches multiple rows from a query into a two-dimensional array
- oci_fetch_array — Returns the next row from a query as an associative or numeric array
- oci_fetch_assoc — Returns the next row from a query as an associative array
- oci_fetch_object — Returns the next row from a query as an object
- oci_fetch_row — Returns the next row from a query as a numeric array
- oci_field_is_null — Checks if a field in the currently fetched row is null
- oci_field_name — Returns the name of a field from the statement
- oci_field_precision — Tell the precision of a field
- oci_field_scale — Tell the scale of the field
- oci_field_size — Returns field's size
- oci_field_type — Returns a field's data type name
- oci_field_type_raw — Tell the raw Oracle data type of the field
- oci_free_descriptor — Frees a descriptor
- oci_free_statement — Frees all resources associated with statement or cursor
- oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database Implicit Result Sets
- oci_lob_copy — Copies large object
- oci_lob_is_equal — Compares two LOB/FILE locators for equality
- oci_new_collection — Allocates new collection object
- oci_new_connect — Connect to the Oracle server using a unique connection
- oci_new_cursor — Allocates and returns a new cursor (statement handle)
- oci_new_descriptor — Initializes a new empty LOB or FILE descriptor
- oci_num_fields — Returns the number of result columns in a statement
- oci_num_rows — Returns number of rows affected during statement execution
- oci_parse — Prepares an Oracle statement for execution
- oci_password_change — Changes password of Oracle's user
- oci_pconnect — Connect to an Oracle database using a persistent connection
- oci_register_taf_callback — Register a user-defined callback function for Oracle Database TAF
- oci_result — Returns field's value from the fetched row
- oci_rollback — Rolls back the outstanding database transaction
- oci_server_version — Returns the Oracle Database version
- oci_set_action — Sets the action name
- oci_set_call_timeout — Sets a millisecond timeout for database calls
- oci_set_client_identifier — Sets the client identifier
- oci_set_client_info — Sets the client information
- oci_set_db_operation — Sets the database operation
- oci_set_edition — Sets the database edition
- oci_set_module_name — Sets the module name
- oci_set_prefetch — Sets number of rows to be prefetched by queries
- oci_set_prefetch_lob — Sets the amount of data prefetched for each CLOB or BLOB.
- oci_statement_type — Returns the type of a statement
- oci_unregister_taf_callback — Unregister a user-defined callback function for Oracle Database TAF

# The OCICollection class

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

## Giriş

OCI8 Collection functionality.

> Bilginize:

> The OCI-Collection class was renamed to OCICollection in PHP 8 OCI8 3.0.0 to align with PHP naming standards.

## Sınıf Sözdizimi

class OCICollection {
/* Yöntemler */
public function append(string `$value`): bool
public function assign(OCICollection `$from`): bool
public function assignElem(int `$index`, string `$value`): bool
public function free(): bool
public function getElem(int `$index`): string|float|null|false
public function max(): int|false
public function size(): int|false
public function trim(int `$num`): bool
}

# OCICollection::append

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::append — Appends element to the collection

### Açıklama

public function OCICollection::append(string `$value`): bool

Appends element to the end of the collection.

### Bağımsız Değişkenler

`value`

  The value to be added to the collection.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::assign

# OCICollection::assign

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::assign — Assigns a value to the collection from another existing collection

### Açıklama

public function OCICollection::assign(OCICollection `$from`): bool

Assigns a value to the collection from another, previously created collection. Both collections must be created with oci_new_collection() prior to using them.

### Bağımsız Değişkenler

`from`

  An instance of OCICollection.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::append

# OCICollection::assignElem

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::assignElem — Assigns a value to the element of the collection

### Açıklama

public function OCICollection::assignElem(int `$index`, string `$value`): bool

Assigns a value to the element with index `index`.

### Bağımsız Değişkenler

`index`

  The element index. First index is 0.

`value`

  Can be a string or a number.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::getElem

# OCICollection::free

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::free — Frees the resources associated with the collection object

### Açıklama

public function OCICollection::free(): bool

Frees the resources associated with the collection object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- oci_new_collection

# OCICollection::getElem

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::getElem — Returns value of the element

### Açıklama

public function OCICollection::getElem(int `$index`): string|float|null|false

Returns element's value with the index `index` (0-based).

### Bağımsız Değişkenler

`index`

  The element index. First index is 0.

### Dönen Değerler

Returns `false` if such element doesn't exist; `null` if element is `null`; string if element is column of a string datatype or number if element is numeric field.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::assignElem

# OCICollection::max

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::max — Returns the maximum number of elements in the collection

### Açıklama

public function OCICollection::max(): int|false

Returns the maximum number of elements in the collection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the maximum number as an integer, or `false` on errors.

If the returned value is 0, then the number of elements is not limited.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::size

# OCICollection::size

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::size — Returns size of the collection

### Açıklama

public function OCICollection::size(): int|false

Returns the size of the collection.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the number of elements in the collection or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::max

# OCICollection::trim

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCICollection::trim — Trims elements from the end of the collection

### Açıklama

public function OCICollection::trim(int `$num`): bool

Trims `num` of elements from the end of the collection.

### Bağımsız Değişkenler

`num`

  The number of elements to be trimmed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Collection class was renamed to OCICollection to align with PHP naming standards.

### Ayrıca Bakınız

- OCICollection::size

## İçindekiler

- OCICollection::append — Appends element to the collection
- OCICollection::assign — Assigns a value to the collection from another existing collection
- OCICollection::assignElem — Assigns a value to the element of the collection
- OCICollection::free — Frees the resources associated with the collection object
- OCICollection::getElem — Returns value of the element
- OCICollection::max — Returns the maximum number of elements in the collection
- OCICollection::size — Returns size of the collection
- OCICollection::trim — Trims elements from the end of the collection

# The OCILob class

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

## Giriş

OCI8 LOB functionality for large binary (BLOB) and character (CLOB) objects.

> Bilginize:

> The OCI-Lob class was renamed to OCILob in PHP 8 and PECL OCI8 3.0.0 to align with PHP naming standards.

## Sınıf Sözdizimi

class OCILob {
/* Yöntemler */
public function append(OCILob `$from`): bool
public function close(): bool
public function eof(): bool
public function erase(?int `$offset` = `null`, ?int `$length` = `null`): int|false
public function export(string `$filename`, ?int `$offset` = `null`, ?int `$length` = `null`): bool
public function flush(int `$flag` = 0): bool
public function free(): bool
public function getBuffering(): bool
public function import(string `$filename`): bool
public function load(): string|false
public function read(int `$length`): string|false
public function rewind(): bool
public function save(string `$data`, int `$offset` = 0): bool
public function seek(int `$offset`, int `$whence` = `OCI_SEEK_SET`): bool
public function setBuffering(bool `$mode`): bool
public function size(): int|false
public function tell(): int|false
public function truncate(int `$length` = 0): bool
public function write(string `$data`, ?int `$length` = `null`): int|false
public function writeTemporary(string `$data`, int `$type` = `OCI_TEMP_CLOB`): bool
}

# OCILob::append

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::append — Appends data from the large object to another large object

### Açıklama

public function OCILob::append(OCILob `$from`): bool

Appends data from the large object to the end of another large object.

Writing to the large object with this method will fail if buffering was previously enabled. You must disable buffering before appending. You may need to flush buffers with OCILob::flush before disabling buffering.

### Bağımsız Değişkenler

`from`

  The copied LOB.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::flush
- OCILob::setBuffering
- OCILob::getBuffering

# OCILob::close

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::close — Closes LOB descriptor

### Açıklama

public function OCILob::close(): bool

Closes descriptor of LOB or FILE. This function should be used only with OCILob::writeTemporary.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::writeTemporary

# OCILob::eof

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::eof — Tests for end-of-file on a large object's descriptor

### Açıklama

public function OCILob::eof(): bool

Tells whether the internal pointer of large object is at the end of LOB.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if internal pointer of large object is at the end of LOB. Otherwise returns `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Notlar

> Bilginize:

> This function will return an Oracle error if OCILob::setBuffering is enabled on the LOB.

### Ayrıca Bakınız

- OCILob::size

# OCILob::erase

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::erase — Erases a specified portion of the internal LOB data

### Açıklama

public function OCILob::erase(?int `$offset` = `null`, ?int `$length` = `null`): int|false

Erases a specified portion of the internal LOB data starting at a specified `offset`. If called without parameters, it erases all LOB data.

For BLOBs, erasing means that the existing LOB value is overwritten with zero-bytes. For CLOBs, the existing LOB value is overwritten with spaces.

### Bağımsız Değişkenler

`offset`

`length`

### Dönen Değerler

Returns the actual number of characters/bytes erased başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `offset` and `length` are now nullable.
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::truncate

# OCILob::export

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::export — Exports LOB's contents to a file

### Açıklama

public function OCILob::export(string `$filename`, ?int `$offset` = `null`, ?int `$length` = `null`): bool

Exports LOB contents to a file.

### Bağımsız Değişkenler

`filename`

  Path to the file.

`offset`

  Indicates from where to start exporting.

`length`

  Indicates the length of data to be exported.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `offset` and `length` are now nullable.
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::import

# OCILob::flush

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::flush — Flushes/writes buffer of the LOB to the server

### Açıklama

public function OCILob::flush(int `$flag` = 0): bool

OCILob::flush() actually writes data to the server.

### Bağımsız Değişkenler

`flag`

  By default, resources are not freed, but using flag `OCI_LOB_BUFFER_FREE` you can do it explicitly. Be sure you know what you're doing - next read/write operation to the same part of LOB will involve a round-trip to the server and initialize new buffer resources. It is recommended to use `OCI_LOB_BUFFER_FREE` flag only when you are not going to work with the LOB anymore.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Returns `false` if buffering was not enabled or an error occurred.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::getBuffering
- OCILob::setBuffering

# OCILob::free

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::free — Frees resources associated with the LOB descriptor

### Açıklama

public function OCILob::free(): bool

Frees resources associated with the descriptor, previously allocated with oci_new_descriptor().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

# OCILob::getBuffering

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::getBuffering — Returns current state of buffering for the large object

### Açıklama

public function OCILob::getBuffering(): bool

Tells whether the buffering for the large object is on or off.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `false` if buffering for the large object is off and `true` if buffering is used.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::setBuffering

# OCILob::import

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::import — Imports file data to the LOB

### Açıklama

public function OCILob::import(string `$filename`): bool

Writes data from the `filename` in to the current position of large object.

### Bağımsız Değişkenler

`filename`

  Path to the file.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::export
- OCILob::write

# OCILob::load

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::load — Returns large object's contents

### Açıklama

public function OCILob::load(): string|false

Returns large object's contents. As script execution is terminated when the memory_limit is reached, ensure that the LOB does not exceed this limit. In most cases it's recommended to use OCILob::read instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the contents of the object, or `false` on errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::read

# OCILob::read

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::read — Reads part of the large object

### Açıklama

public function OCILob::read(int `$length`): string|false

Reads `length` of bytes (BLOB) or characters (CLOB) from the current position of LOB's internal pointer.

Reading stops when `length` of bytes have been read for a BLOB, when `length` of characters have been read for a CLOB, or when the end of the large object is reached. Internal pointer of the large object will be shifted on the amount of bytes/characters read.

### Bağımsız Değişkenler

`length`

  The length of data to read, in bytes (BLOB) or characters (CLOB). Large values will be rounded down to 1 MB.

### Dönen Değerler

Returns the contents as a string, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::load
- OCILob::write

# OCILob::rewind

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::rewind — Moves the internal pointer to the beginning of the large object

### Açıklama

public function OCILob::rewind(): bool

Sets the internal pointer to the beginning of the large object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::seek
- OCILob::tell

# OCILob::save

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::save — Saves data to the large object

### Açıklama

public function OCILob::save(string `$data`, int `$offset` = 0): bool

Saves `data` to the large object.

### Bağımsız Değişkenler

`data`

  The data to be saved.

`offset`

  Can be used to indicate offset from the beginning of the large object.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::write
- OCILob::import

# OCILob::saveFile

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::saveFile — Takma Adı: OCILob::import()

### Açıklama

Bu işlev şu işlevin takma adıdır: OCILob::import().

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

# OCILob::seek

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::seek — Sets the internal pointer of the large object

### Açıklama

public function OCILob::seek(int `$offset`, int `$whence` = `OCI_SEEK_SET`): bool

Sets the internal pointer of the large object.

### Bağımsız Değişkenler

`offset`

  Indicates the amount of bytes, on which internal pointer should be moved from the position, pointed by `whence`.

`whence`

  May be one of:

  - `OCI_SEEK_SET` - sets the position equal to `offset`
  - `OCI_SEEK_CUR` - adds `offset` bytes to the current position
  - `OCI_SEEK_END` - adds `offset` bytes to the end of large object (use negative value to move to a position before the end of large object)

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::rewind
- OCILob::tell
- OCILob::eof

# OCILob::setBuffering

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::setBuffering — Changes current state of buffering for the large object

### Açıklama

public function OCILob::setBuffering(bool `$mode`): bool

Sets the buffering for the large object, depending on the value of the `mode` parameter.

Use of this function may provide performance improvements by buffering small reads and writes of LOBs by reducing the number of network round-trips and LOB versions. OCILob::flush() should be used to flush buffers, when you have finished working with the large object.

### Bağımsız Değişkenler

`mode`

  `true` for on and `false` for off.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Repeated calls to this method with the same flag will return `true`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::getBuffering

# OCILob::size

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::size — Returns size of large object

### Açıklama

public function OCILob::size(): int|false

Gets the size of the large object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns length of large object value başarısızlık durumunda `false` döner. Empty objects have zero length.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

# OCILob::tell

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::tell — Returns the current position of internal pointer of large object

### Açıklama

public function OCILob::tell(): int|false

Gets the current position of a LOB's internal pointer.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns current position of a LOB's internal pointer or `false` if an error occurred.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::rewind
- OCILob::size
- OCILob::eof

# OCILob::truncate

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::truncate — Truncates large object

### Açıklama

public function OCILob::truncate(int `$length` = 0): bool

Truncates the LOB.

### Bağımsız Değişkenler

`length`

  If provided, this method will truncate the LOB to `length` bytes. Otherwise, it will completely purge the LOB.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::erase

# OCILob::write

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::write — Writes data to the large object

### Açıklama

public function OCILob::write(string `$data`, ?int `$length` = `null`): int|false

Writes data from the parameter `data` into the current position of LOB's internal pointer.

### Bağımsız Değişkenler

`data`

  The data to write in the LOB.

`length`

  If this parameter is an integer, writing will stop after `length` bytes have been written or the end of `data` is reached, whichever comes first.

### Dönen Değerler

Returns the number of bytes written başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `length` is now nullable.
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::read

# OCILob::writeTemporary

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::writeTemporary — Writes a temporary large object

### Açıklama

public function OCILob::writeTemporary(string `$data`, int `$type` = `OCI_TEMP_CLOB`): bool

Creates a temporary large object and writes `data` to it.

You should use OCILob::close when you are done with this object.

### Bağımsız Değişkenler

`data`

  The data to write.

`type`

  Can be one of the following:

  - `OCI_TEMP_BLOB` is used to create temporary BLOBs
  - `OCI_TEMP_CLOB` is used to create temporary CLOBs

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

### Ayrıca Bakınız

- OCILob::close

# OCILob::writeToFile

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

OCILob::writeToFile — Takma Adı: OCILob::export()

### Açıklama

Bu işlev şu işlevin takma adıdır: OCILob::export().

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0, PECL OCI8 3.0.0 | `offset` and `length` are now nullable.
8.0.0, PECL OCI8 3.0.0 | The OCI-Lob class was renamed to OCILob to align with PHP naming standards.

## İçindekiler

- OCILob::append — Appends data from the large object to another large object
- OCILob::close — Closes LOB descriptor
- OCILob::eof — Tests for end-of-file on a large object's descriptor
- OCILob::erase — Erases a specified portion of the internal LOB data
- OCILob::export — Exports LOB's contents to a file
- OCILob::flush — Flushes/writes buffer of the LOB to the server
- OCILob::free — Frees resources associated with the LOB descriptor
- OCILob::getBuffering — Returns current state of buffering for the large object
- OCILob::import — Imports file data to the LOB
- OCILob::load — Returns large object's contents
- OCILob::read — Reads part of the large object
- OCILob::rewind — Moves the internal pointer to the beginning of the large object
- OCILob::save — Saves data to the large object
- OCILob::saveFile — Takma Adı: OCILob::import
- OCILob::seek — Sets the internal pointer of the large object
- OCILob::setBuffering — Changes current state of buffering for the large object
- OCILob::size — Returns size of large object
- OCILob::tell — Returns the current position of internal pointer of large object
- OCILob::truncate — Truncates large object
- OCILob::write — Writes data to the large object
- OCILob::writeTemporary — Writes a temporary large object
- OCILob::writeToFile — Takma Adı: OCILob::export

# OCI8 Obsolete Aliases and Functions

# oci_internal_debug

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0, PECL OCI8 <= 2.2.0)

oci_internal_debug — Enables or disables internal debug output

### Açıklama

function oci_internal_debug(bool `$onoff`): void

Enables or disables internal debug output.

### Bağımsız Değişkenler

`onoff`

  Set this to `false` to turn debug output off or `true` to turn it on.

### Dönen Değerler

Hiçbir değer dönmez.

### Notlar

> Bilginize:

> This function was removed in PHP 8 and PECL OCI8 3.0.

# ocibindbyname

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocibindbyname — Takma Adı: oci_bind_by_name()

### Açıklama

Takma Adı: oci_bind_by_name()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicancel

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicancel — Takma Adı: oci_cancel()

### Açıklama

Takma Adı: oci_cancel()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicloselob

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 1.0)

ocicloselob — Takma Adı: OCILob::close()

### Açıklama

Takma Adı: OCILob::close()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollappend

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicollappend — Takma Adı: OCICollection::append()

### Açıklama

Takma Adı: OCICollection::append()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollassign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollassign — Takma Adı: OCICollection::assign()

### Açıklama

Takma Adı: OCICollection::assign()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollassignelem

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicollassignelem — Takma Adı: OCICollection::assignElem()

### Açıklama

Takma Adı: OCICollection::assignElem()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollgetelem

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicollgetelem — Takma Adı: OCICollection::getElem()

### Açıklama

Takma Adı: OCICollection::getElem()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollmax

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicollmax — Takma Adı: OCICollection::max()

### Açıklama

Takma Adı: OCICollection::max()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicollsize

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicollsize — Takma Adı: OCICollection::size()

### Açıklama

Takma Adı: OCICollection::size()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolltrim

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolltrim — Takma Adı: OCICollection::trim()

### Açıklama

Takma Adı: OCICollection::trim()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumnisnull

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumnisnull — Takma Adı: oci_field_is_null()

### Açıklama

Takma Adı: oci_field_is_null()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumnname

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumnname — Takma Adı: oci_field_name()

### Açıklama

Takma Adı: oci_field_name()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumnprecision

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumnprecision — Takma Adı: oci_field_precision()

### Açıklama

Takma Adı: oci_field_precision()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumnscale

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumnscale — Takma Adı: oci_field_scale()

### Açıklama

Takma Adı: oci_field_scale()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumnsize

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumnsize — Takma Adı: oci_field_size()

### Açıklama

Takma Adı: oci_field_size()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumntype

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumntype — Takma Adı: oci_field_type()

### Açıklama

Takma Adı: oci_field_type()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicolumntyperaw

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicolumntyperaw — Takma Adı: oci_field_type_raw()

### Açıklama

Takma Adı: oci_field_type_raw()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocicommit

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocicommit — Takma Adı: oci_commit()

### Açıklama

Takma Adı: oci_commit()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocidefinebyname

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocidefinebyname — Takma Adı: oci_define_by_name()

### Açıklama

Takma Adı: oci_define_by_name()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocierror

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocierror — Takma Adı: oci_error()

### Açıklama

Takma Adı: oci_error()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociexecute

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociexecute — Takma Adı: oci_execute()

### Açıklama

Takma Adı: oci_execute()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifetch

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifetch — Takma Adı: oci_fetch()

### Açıklama

Takma Adı: oci_fetch()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifetchinto

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifetchinto — Obsolete variant of oci_fetch_array(), oci_fetch_object(), oci_fetch_assoc() and oci_fetch_row()

### Açıklama

Obsolete variant of oci_fetch_array(), oci_fetch_object(), oci_fetch_assoc() and oci_fetch_row()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifetchstatement

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifetchstatement — Takma Adı: oci_fetch_all()

### Açıklama

Takma Adı: oci_fetch_all()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifreecollection

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifreecollection — Takma Adı: OCICollection::free()

### Açıklama

Takma Adı: OCICollection::free()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifreecursor

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifreecursor — Takma Adı: oci_free_statement()

### Açıklama

Takma Adı: oci_free_statement()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifreedesc

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifreedesc — Takma Adı: OCILob::free()

### Açıklama

Takma Adı: OCILob::free()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocifreestatement

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocifreestatement — Takma Adı: oci_free_statement()

### Açıklama

Takma Adı: oci_free_statement()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociinternaldebug

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0, PECL OCI8 <= 2.2.0)

ociinternaldebug — Takma Adı: oci_internal_debug()

### Açıklama

Takma Adı: oci_internal_debug()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociloadlob

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociloadlob — Takma Adı: OCILob::load()

### Açıklama

Takma Adı: OCILob::load()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocilogoff

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocilogoff — Takma Adı: oci_close()

### Açıklama

Takma Adı: oci_close()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocilogon

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocilogon — Takma Adı: oci_connect()

### Açıklama

Takma Adı: oci_connect()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocinewcollection

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocinewcollection — Takma Adı: oci_new_collection()

### Açıklama

Takma Adı: oci_new_collection()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocinewcursor

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocinewcursor — Takma Adı: oci_new_cursor()

### Açıklama

Takma Adı: oci_new_cursor()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocinewdescriptor

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocinewdescriptor — Takma Adı: oci_new_descriptor()

### Açıklama

Takma Adı: oci_new_descriptor()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocinlogon

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocinlogon — Takma Adı: oci_new_connect()

### Açıklama

Takma Adı: oci_new_connect()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocinumcols

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocinumcols — Takma Adı: oci_num_fields()

### Açıklama

Takma Adı: oci_num_fields()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociparse

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociparse — Takma Adı: oci_parse()

### Açıklama

Takma Adı: oci_parse()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociplogon

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociplogon — Takma Adı: oci_pconnect()

### Açıklama

Takma Adı: oci_pconnect()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociresult

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociresult — Takma Adı: oci_result()

### Açıklama

Takma Adı: oci_result()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocirollback

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocirollback — Takma Adı: oci_rollback()

### Açıklama

Takma Adı: oci_rollback()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocirowcount

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocirowcount — Takma Adı: oci_num_rows()

### Açıklama

Takma Adı: oci_num_rows()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocisavelob

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocisavelob — Takma Adı: OCILob::save()

### Açıklama

Takma Adı: OCILob::save()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocisavelobfile

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocisavelobfile — Takma Adı: OCILob::import()

### Açıklama

Takma Adı: OCILob::import()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociserverversion

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociserverversion — Takma Adı: oci_server_version()

### Açıklama

Takma Adı: oci_server_version()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocisetprefetch

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocisetprefetch — Takma Adı: oci_set_prefetch()

### Açıklama

Takma Adı: oci_set_prefetch()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ocistatementtype

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ocistatementtype — Takma Adı: oci_statement_type()

### Açıklama

Takma Adı: oci_statement_type()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociwritelobtofile

(PHP 4, PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.0.0)

ociwritelobtofile — Takma Adı: OCILob::export()

### Açıklama

Takma Adı: OCILob::export()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

# ociwritetemporarylob

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 1.0)

ociwritetemporarylob — Takma Adı: OCILob::writeTemporary()

### Açıklama

Takma Adı: OCILob::writeTemporary()

Uyarı

Bu takma adın kullanımı PHP 5.4.0'dan beri ÖNERİLMEMEKTEDİR. Bu takma ada kesinlikle güvenilmemelidir.

## İçindekiler

- oci_internal_debug — Enables or disables internal debug output
- ocibindbyname — Takma Adı: oci_bind_by_name
- ocicancel — Takma Adı: oci_cancel
- ocicloselob — Takma Adı: OCILob::close
- ocicollappend — Takma Adı: OCICollection::append
- ocicollassign — Takma Adı: OCICollection::assign
- ocicollassignelem — Takma Adı: OCICollection::assignElem
- ocicollgetelem — Takma Adı: OCICollection::getElem
- ocicollmax — Takma Adı: OCICollection::max
- ocicollsize — Takma Adı: OCICollection::size
- ocicolltrim — Takma Adı: OCICollection::trim
- ocicolumnisnull — Takma Adı: oci_field_is_null
- ocicolumnname — Takma Adı: oci_field_name
- ocicolumnprecision — Takma Adı: oci_field_precision
- ocicolumnscale — Takma Adı: oci_field_scale
- ocicolumnsize — Takma Adı: oci_field_size
- ocicolumntype — Takma Adı: oci_field_type
- ocicolumntyperaw — Takma Adı: oci_field_type_raw
- ocicommit — Takma Adı: oci_commit
- ocidefinebyname — Takma Adı: oci_define_by_name
- ocierror — Takma Adı: oci_error
- ociexecute — Takma Adı: oci_execute
- ocifetch — Takma Adı: oci_fetch
- ocifetchinto — Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row
- ocifetchstatement — Takma Adı: oci_fetch_all
- ocifreecollection — Takma Adı: OCICollection::free
- ocifreecursor — Takma Adı: oci_free_statement
- ocifreedesc — Takma Adı: OCILob::free
- ocifreestatement — Takma Adı: oci_free_statement
- ociinternaldebug — Takma Adı: oci_internal_debug
- ociloadlob — Takma Adı: OCILob::load
- ocilogoff — Takma Adı: oci_close
- ocilogon — Takma Adı: oci_connect
- ocinewcollection — Takma Adı: oci_new_collection
- ocinewcursor — Takma Adı: oci_new_cursor
- ocinewdescriptor — Takma Adı: oci_new_descriptor
- ocinlogon — Takma Adı: oci_new_connect
- ocinumcols — Takma Adı: oci_num_fields
- ociparse — Takma Adı: oci_parse
- ociplogon — Takma Adı: oci_pconnect
- ociresult — Takma Adı: oci_result
- ocirollback — Takma Adı: oci_rollback
- ocirowcount — Takma Adı: oci_num_rows
- ocisavelob — Takma Adı: OCILob::save
- ocisavelobfile — Takma Adı: OCILob::import
- ociserverversion — Takma Adı: oci_server_version
- ocisetprefetch — Takma Adı: oci_set_prefetch
- ocistatementtype — Takma Adı: oci_statement_type
- ociwritelobtofile — Takma Adı: OCILob::export
- ociwritetemporarylob — Takma Adı: OCILob::writeTemporary

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Testing
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
- OCI8 Connection Handling and Connection Pooling
- OCI8 Fast Application Notification (FAN) Support
- OCI8 Transparent Application Failover (TAF) Support
- OCI8 and DTrace Dynamic Tracing
- Supported Datatypes
- OCI8 İşlevleri
  - oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter
  - oci_bind_by_name — Binds a PHP variable to an Oracle placeholder
  - oci_cancel — Cancels reading from cursor
  - oci_client_version — Returns the Oracle client library version
  - oci_close — Closes an Oracle connection
  - oci_commit — Commits the outstanding database transaction
  - oci_connect — Connect to an Oracle database
  - oci_define_by_name — Associates a PHP variable with a column for query fetches
  - oci_error — Returns the last error found
  - oci_execute — Executes a statement
  - oci_fetch — Fetches the next row from a query into internal buffers
  - oci_fetch_all — Fetches multiple rows from a query into a two-dimensional array
  - oci_fetch_array — Returns the next row from a query as an associative or numeric array
  - oci_fetch_assoc — Returns the next row from a query as an associative array
  - oci_fetch_object — Returns the next row from a query as an object
  - oci_fetch_row — Returns the next row from a query as a numeric array
  - oci_field_is_null — Checks if a field in the currently fetched row is null
  - oci_field_name — Returns the name of a field from the statement
  - oci_field_precision — Tell the precision of a field
  - oci_field_scale — Tell the scale of the field
  - oci_field_size — Returns field's size
  - oci_field_type — Returns a field's data type name
  - oci_field_type_raw — Tell the raw Oracle data type of the field
  - oci_free_descriptor — Frees a descriptor
  - oci_free_statement — Frees all resources associated with statement or cursor
  - oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database Implicit Result Sets
  - oci_lob_copy — Copies large object
  - oci_lob_is_equal — Compares two LOB/FILE locators for equality
  - oci_new_collection — Allocates new collection object
  - oci_new_connect — Connect to the Oracle server using a unique connection
  - oci_new_cursor — Allocates and returns a new cursor (statement handle)
  - oci_new_descriptor — Initializes a new empty LOB or FILE descriptor
  - oci_num_fields — Returns the number of result columns in a statement
  - oci_num_rows — Returns number of rows affected during statement execution
  - oci_parse — Prepares an Oracle statement for execution
  - oci_password_change — Changes password of Oracle's user
  - oci_pconnect — Connect to an Oracle database using a persistent connection
  - oci_register_taf_callback — Register a user-defined callback function for Oracle Database TAF
  - oci_result — Returns field's value from the fetched row
  - oci_rollback — Rolls back the outstanding database transaction
  - oci_server_version — Returns the Oracle Database version
  - oci_set_action — Sets the action name
  - oci_set_call_timeout — Sets a millisecond timeout for database calls
  - oci_set_client_identifier — Sets the client identifier
  - oci_set_client_info — Sets the client information
  - oci_set_db_operation — Sets the database operation
  - oci_set_edition — Sets the database edition
  - oci_set_module_name — Sets the module name
  - oci_set_prefetch — Sets number of rows to be prefetched by queries
  - oci_set_prefetch_lob — Sets the amount of data prefetched for each CLOB or BLOB.
  - oci_statement_type — Returns the type of a statement
  - oci_unregister_taf_callback — Unregister a user-defined callback function for Oracle Database TAF
- OCICollection — The OCICollection class
  - OCICollection::append — Appends element to the collection
  - OCICollection::assign — Assigns a value to the collection from another existing collection
  - OCICollection::assignElem — Assigns a value to the element of the collection
  - OCICollection::free — Frees the resources associated with the collection object
  - OCICollection::getElem — Returns value of the element
  - OCICollection::max — Returns the maximum number of elements in the collection
  - OCICollection::size — Returns size of the collection
  - OCICollection::trim — Trims elements from the end of the collection
- OCILob — The OCILob class
  - OCILob::append — Appends data from the large object to another large object
  - OCILob::close — Closes LOB descriptor
  - OCILob::eof — Tests for end-of-file on a large object's descriptor
  - OCILob::erase — Erases a specified portion of the internal LOB data
  - OCILob::export — Exports LOB's contents to a file
  - OCILob::flush — Flushes/writes buffer of the LOB to the server
  - OCILob::free — Frees resources associated with the LOB descriptor
  - OCILob::getBuffering — Returns current state of buffering for the large object
  - OCILob::import — Imports file data to the LOB
  - OCILob::load — Returns large object's contents
  - OCILob::read — Reads part of the large object
  - OCILob::rewind — Moves the internal pointer to the beginning of the large object
  - OCILob::save — Saves data to the large object
  - OCILob::saveFile — Takma Adı: OCILob::import
  - OCILob::seek — Sets the internal pointer of the large object
  - OCILob::setBuffering — Changes current state of buffering for the large object
  - OCILob::size — Returns size of large object
  - OCILob::tell — Returns the current position of internal pointer of large object
  - OCILob::truncate — Truncates large object
  - OCILob::write — Writes data to the large object
  - OCILob::writeTemporary — Writes a temporary large object
  - OCILob::writeToFile — Takma Adı: OCILob::export
- OCI8 Obsolete Aliases and Functions
  - oci_internal_debug — Enables or disables internal debug output
  - ocibindbyname — Takma Adı: oci_bind_by_name
  - ocicancel — Takma Adı: oci_cancel
  - ocicloselob — Takma Adı: OCILob::close
  - ocicollappend — Takma Adı: OCICollection::append
  - ocicollassign — Takma Adı: OCICollection::assign
  - ocicollassignelem — Takma Adı: OCICollection::assignElem
  - ocicollgetelem — Takma Adı: OCICollection::getElem
  - ocicollmax — Takma Adı: OCICollection::max
  - ocicollsize — Takma Adı: OCICollection::size
  - ocicolltrim — Takma Adı: OCICollection::trim
  - ocicolumnisnull — Takma Adı: oci_field_is_null
  - ocicolumnname — Takma Adı: oci_field_name
  - ocicolumnprecision — Takma Adı: oci_field_precision
  - ocicolumnscale — Takma Adı: oci_field_scale
  - ocicolumnsize — Takma Adı: oci_field_size
  - ocicolumntype — Takma Adı: oci_field_type
  - ocicolumntyperaw — Takma Adı: oci_field_type_raw
  - ocicommit — Takma Adı: oci_commit
  - ocidefinebyname — Takma Adı: oci_define_by_name
  - ocierror — Takma Adı: oci_error
  - ociexecute — Takma Adı: oci_execute
  - ocifetch — Takma Adı: oci_fetch
  - ocifetchinto — Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row
  - ocifetchstatement — Takma Adı: oci_fetch_all
  - ocifreecollection — Takma Adı: OCICollection::free
  - ocifreecursor — Takma Adı: oci_free_statement
  - ocifreedesc — Takma Adı: OCILob::free
  - ocifreestatement — Takma Adı: oci_free_statement
  - ociinternaldebug — Takma Adı: oci_internal_debug
  - ociloadlob — Takma Adı: OCILob::load
  - ocilogoff — Takma Adı: oci_close
  - ocilogon — Takma Adı: oci_connect
  - ocinewcollection — Takma Adı: oci_new_collection
  - ocinewcursor — Takma Adı: oci_new_cursor
  - ocinewdescriptor — Takma Adı: oci_new_descriptor
  - ocinlogon — Takma Adı: oci_new_connect
  - ocinumcols — Takma Adı: oci_num_fields
  - ociparse — Takma Adı: oci_parse
  - ociplogon — Takma Adı: oci_pconnect
  - ociresult — Takma Adı: oci_result
  - ocirollback — Takma Adı: oci_rollback
  - ocirowcount — Takma Adı: oci_num_rows
  - ocisavelob — Takma Adı: OCILob::save
  - ocisavelobfile — Takma Adı: OCILob::import
  - ociserverversion — Takma Adı: oci_server_version
  - ocisetprefetch — Takma Adı: oci_set_prefetch
  - ocistatementtype — Takma Adı: oci_statement_type
  - ociwritelobtofile — Takma Adı: OCILob::export
  - ociwritetemporarylob — Takma Adı: OCILob::writeTemporary

# PostgreSQL

# Giriş

PostgreSQL database is an open source product and available without cost. Postgres, developed originally in the UC Berkeley Computer Science Department, pioneered many of the object-relational concepts now becoming available in some commercial databases. It provides SQL92/SQL99 language support, transactions, referential integrity, stored procedures and type extensibility. PostgreSQL is an open source descendant of this original Berkeley code.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

To use PostgreSQL support, you need libpq (the PostgreSQL C client library). As of PHP 8.0.0, libpq 9.1 or later is required. As of PHP 8.4.0, libpq 10.0 or later is required. PostgreSQL supports many character encodings including multibyte character encoding. The current version and more information about PostgreSQL is available at » http://www.postgresql.org/ and the » PostgreSQL Documentation.

## Kurulum

In order to enable PostgreSQL support, --with-pgsql[=DIR] is required when you compile PHP. `DIR` is the PostgreSQL base install directory, defaults to /usr/local/pgsql. If shared object module is available, PostgreSQL module may be loaded using extension directive in php.ini or dl() function.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

PostgreSQL configuration options
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
pgsql.allow_persistent | "1" | `INI_SYSTEM` |
pgsql.max_persistent | "-1" | `INI_SYSTEM` |
pgsql.max_links | "-1" | `INI_SYSTEM` |
pgsql.auto_reset_persistent | "0" | `INI_SYSTEM` |
pgsql.ignore_notice | "0" | `INI_ALL` |
pgsql.log_notice | "0" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`pgsql.allow_persistent` bool

  Whether to allow persistent Postgres connections.

`pgsql.max_persistent` int

  The maximum number of persistent Postgres connections per process.

`pgsql.max_links` int

  The maximum number of Postgres connections per process, including persistent connections.

`pgsql.auto_reset_persistent` int

  Detect broken persistent links with pg_pconnect(). Needs a little overhead.

`pgsql.ignore_notice` int

  Whether or not to ignore PostgreSQL backend notices.

`pgsql.log_notice` int

  Whether or not to log PostgreSQL backends notice messages. The PHP directive pgsql.ignore_notice must be off in order to log notice messages.

## Özkaynak Türleri

Prior to PHP 8.1.0, there were two resource types used in the PostgreSQL module. The first one is the link identifier for a database connection, the second a resource which holds the result of a query.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`PGSQL_LIBPQ_VERSION` (string)
  Short libpq version that contains only numbers and dots.
`PGSQL_LIBPQ_VERSION_STR` (string)
  Prior to PHP 8.0.0, the long libpq version that includes compiler information. As of PHP 8.0.0, the value is identical to `PGSQL_LIBPQ_VERSION`, and using `PGSQL_LIBPQ_VERSION_STR` is deprecated.
`PGSQL_ASSOC` (int)
  Passed to pg_fetch_array(). Return an associative array of field names and values.
`PGSQL_NUM` (int)
  Passed to pg_fetch_array(). Return a numerically indexed array of field numbers and values.
`PGSQL_BOTH` (int)
  Passed to pg_fetch_array(). Return an array of field values that is both numerically indexed (by field number) and associated (by field name).
`PGSQL_CONNECT_FORCE_NEW` (int)
  Passed to pg_connect() to force the creation of a new connection, rather than re-using an existing identical connection.
`PGSQL_CONNECT_ASYNC` (int)
  Passed to pg_connect() to create an asynchronous connection.
`PGSQL_CONNECTION_AUTH_OK` (int)
`PGSQL_CONNECTION_AWAITING_RESPONSE` (int)
`PGSQL_CONNECTION_BAD` (int)
  Returned by pg_connection_status() indicating that the database connection is in an invalid state.
`PGSQL_CONNECTION_MADE` (int)
`PGSQL_CONNECTION_OK` (int)
  Returned by pg_connection_status() indicating that the database connection is in a valid state.
`PGSQL_CONNECTION_SETENV` (int)
`PGSQL_CONNECTION_SSL_STARTUP` (int)
`PGSQL_CONNECTION_STARTED` (int)
`PGSQL_SEEK_SET` (int)
  Passed to pg_lo_seek(). Seek operation is to begin from the start of the object.
`PGSQL_SEEK_CUR` (int)
  Passed to pg_lo_seek(). Seek operation is to begin from the current position.
`PGSQL_SEEK_END` (int)
  Passed to pg_lo_seek(). Seek operation is to begin from the end of the object.
`PGSQL_EMPTY_QUERY` (int)
  Returned by pg_result_status(). The string sent to the server was empty.
`PGSQL_COMMAND_OK` (int)
  Returned by pg_result_status(). Successful completion of a command returning no data.
`PGSQL_TUPLES_OK` (int)
  Returned by pg_result_status(). Successful completion of a command returning data (such as a `SELECT` or `SHOW`).
`PGSQL_TUPLES_CHUNK` (int)
  Returned by pg_result_status(). Indicates the successful completion of a command returning data in chunked mode. Returned for `SELECT` commands when pg_set_chunked_rows_size() is set. The result set is divided into multiple chunks, each containing a predefined number of rows. Available as of PHP 8.4.0 and libpq 17.
`PGSQL_COPY_OUT` (int)
  Returned by pg_result_status(). Copy Out (from server) data transfer started.
`PGSQL_COPY_IN` (int)
  Returned by pg_result_status(). Copy In (to server) data transfer started.
`PGSQL_BAD_RESPONSE` (int)
  Returned by pg_result_status(). The server's response was not understood.
`PGSQL_NONFATAL_ERROR` (int)
  Returned by pg_result_status(). A nonfatal error (a notice or warning) occurred.
`PGSQL_FATAL_ERROR` (int)
  Returned by pg_result_status(). A fatal error occurred.
`PGSQL_TRANSACTION_IDLE` (int)
  Returned by pg_transaction_status(). Connection is currently idle, not in a transaction.
`PGSQL_TRANSACTION_ACTIVE` (int)
  Returned by pg_transaction_status(). A command is in progress on the connection. A query has been sent via the connection and not yet completed.
`PGSQL_TRANSACTION_INTRANS` (int)
  Returned by pg_transaction_status(). The connection is idle, in a transaction block.
`PGSQL_TRANSACTION_INERROR` (int)
  Returned by pg_transaction_status(). The connection is idle, in a failed transaction block.
`PGSQL_TRANSACTION_UNKNOWN` (int)
  Returned by pg_transaction_status(). The connection is bad.
`PGSQL_DIAG_SEVERITY` (int)
  Passed to pg_result_error_field(). The severity; the field contents are `ERROR`, `FATAL`, or `PANIC` (in an error message), or `WARNING`, `NOTICE`, `DEBUG`, `INFO`, or `LOG` (in a notice message), or a localized translation of one of these. Always present.
`PGSQL_DIAG_SQLSTATE` (int)
  Passed to pg_result_error_field(). The SQLSTATE code for the error. The SQLSTATE code identifies the type of error that has occurred; it can be used by front-end applications to perform specific operations (such as error handling) in response to a particular database error. This field is not localizable, and is always present.
`PGSQL_DIAG_MESSAGE_PRIMARY` (int)
  Passed to pg_result_error_field(). The primary human-readable error message (typically one line). Always present.
`PGSQL_DIAG_MESSAGE_DETAIL` (int)
  Passed to pg_result_error_field(). Detail: an optional secondary error message carrying more detail about the problem. May run to multiple lines.
`PGSQL_DIAG_MESSAGE_HINT` (int)
  Passed to pg_result_error_field(). Hint: an optional suggestion what to do about the problem. This is intended to differ from detail in that it offers advice (potentially inappropriate) rather than hard facts. May run to multiple lines.
`PGSQL_DIAG_STATEMENT_POSITION` (int)
  Passed to pg_result_error_field(). A string containing a decimal integer indicating an error cursor position as an index into the original statement string. The first character has index 1, and positions are measured in characters not bytes.
`PGSQL_DIAG_INTERNAL_POSITION` (int)
  Passed to pg_result_error_field(). This is defined the same as the `PG_DIAG_STATEMENT_POSITION` field, but it is used when the cursor position refers to an internally generated command rather than the one submitted by the client. The `PG_DIAG_INTERNAL_QUERY` field will always appear when this field appears.
`PGSQL_DIAG_INTERNAL_QUERY` (int)
  Passed to pg_result_error_field(). The text of a failed internally-generated command. This could be, for example, a SQL query issued by a PL/pgSQL function.
`PGSQL_DIAG_CONTEXT` (int)
  Passed to pg_result_error_field(). An indication of the context in which the error occurred. Presently this includes a call stack traceback of active procedural language functions and internally-generated queries. The trace is one entry per line, most recent first.
`PGSQL_DIAG_SOURCE_FILE` (int)
  Passed to pg_result_error_field(). The file name of the PostgreSQL source-code location where the error was reported.
`PGSQL_DIAG_SOURCE_LINE` (int)
  Passed to pg_result_error_field(). The line number of the PostgreSQL source-code location where the error was reported.
`PGSQL_DIAG_SOURCE_FUNCTION` (int)
  Passed to pg_result_error_field(). The name of the PostgreSQL source-code function reporting the error.
`PGSQL_DIAG_SCHEMA_NAME` (int)
  Available since PHP 7.3.0.
`PGSQL_DIAG_TABLE_NAME` (int)
  Available since PHP 7.3.0.
`PGSQL_DIAG_COLUMN_NAME` (int)
  Available since PHP 7.3.0.
`PGSQL_DIAG_DATATYPE_NAME` (int)
  Available since PHP 7.3.0.
`PGSQL_DIAG_CONSTRAINT_NAME` (int)
  Available since PHP 7.3.0.
`PGSQL_ERRORS_TERSE` (int)
  Passed to pg_set_error_verbosity(). Specified that returned messages include severity, primary text, and position only; this will normally fit on a single line.
`PGSQL_ERRORS_DEFAULT` (int)
  Passed to pg_set_error_verbosity(). The default mode produces messages that include the above plus any detail, hint, or context fields (these may span multiple lines).
`PGSQL_ERRORS_VERBOSE` (int)
  Passed to pg_set_error_verbosity(). The verbose mode includes all available fields.
`PGSQL_ERRORS_SQLSTATE` (int)
  Passed to pg_set_error_verbosity(). Includes only the error severity and the `SQLSTATE` error code. If no error code is available, the output is like `PGSQL_ERRORS_TERSE` mode. Before PostgreSQL 11.1, the output is always the same as in `PGSQL_ERRORS_TERSE` mode.
`PGSQL_NOTICE_LAST` (int)
  Used by pg_last_notice(). Available since PHP 7.1.0.
`PGSQL_NOTICE_ALL` (int)
  Used by pg_last_notice(). Available since PHP 7.1.0.
`PGSQL_NOTICE_CLEAR` (int)
  Used by pg_last_notice(). Available since PHP 7.1.0.
`PGSQL_STATUS_LONG` (int)
  Passed to pg_result_status(). Indicates that numerical result code is desired.
`PGSQL_STATUS_STRING` (int)
  Passed to pg_result_status(). Indicates that textual result command tag is desired.
`PGSQL_CONV_IGNORE_DEFAULT` (int)
  Passed to pg_convert(). Ignore default values in the table during conversion.
`PGSQL_CONV_FORCE_NULL` (int)
  Passed to pg_convert(). Use SQL `NULL` in place of an empty string.
`PGSQL_CONV_IGNORE_NOT_NULL` (int)
  Passed to pg_convert(). Ignore conversion of `null` into SQL `NOT NULL` columns.
`PGSQL_DML_NO_CONV` (int)
  Passed to pg_insert(), pg_select(), pg_update() and pg_delete(). All parameters passed as is. Manual escape is required if parameters contain user supplied data. Use pg_escape_string() for it.
`PGSQL_DML_EXEC` (int)
  Passed to pg_insert(), pg_select(), pg_update() and pg_delete(). Execute query by these functions.
`PGSQL_DML_ASYNC` (int)
  Passed to pg_insert(), pg_select(), pg_update() and pg_delete(). Execute asynchronous query by these functions.
`PGSQL_DML_STRING` (int)
  Passed to pg_insert(), pg_select(), pg_update() and pg_delete(). Return executed query string.
`PGSQL_DML_ESCAPE` (int)
  Passed to pg_insert(), pg_select(), pg_update() and pg_delete(). Apply escape to all parameters instead of calling pg_convert() internally. This option omits meta data look up. Query could be as fast as pg_query() and pg_send_query().
`PGSQL_POLLING_FAILED` (int)
  Returned by pg_connect_poll() to indicate that the connection attempt failed.
`PGSQL_POLLING_READING` (int)
  Returned by pg_connect_poll() to indicate that the connection is waiting for the PostgreSQL socket to be readable.
`PGSQL_POLLING_WRITING` (int)
  Returned by pg_connect_poll() to indicate that the connection is waiting for the PostgreSQL socket to be writable.
`PGSQL_POLLING_OK` (int)
  Returned by pg_connect_poll() to indicate that the connection is ready to be used.
`PGSQL_POLLING_ACTIVE` (int)
  Returned by pg_connect_poll() to indicate that the connection is currently active.
`PGSQL_DIAG_SEVERITY_NONLOCALIZED` (int)
  The severity; the field contents are ERROR, FATAL, or PANIC (in an error message), or WARNING, NOTICE, DEBUG, INFO, or LOG (in a notice message). This is identical to the PG_DIAG_SEVERITY field except that the contents are never localized. This is present only in versions 9.6 and later / PHP 7.3.0 and later.
`PGSQL_SHOW_CONTEXT_NEVER` (int)
  To be used with pg_set_error_context_visibility(), the context is never shown. Available as of PHP 8.3.0.
`PGSQL_SHOW_CONTEXT_ERRORS` (int)
  To be used with pg_set_error_context_visibility(), the context's fields are included in error messages only. This is the default behaviour. Available as of PHP 8.3.0.
`PGSQL_SHOW_CONTEXT_ALWAYS` (int)
  To be used with pg_set_error_context_visibility(), the context's fields are included in error, notice and warning messages. Available as of PHP 8.3.0.
`PGSQL_TRACE_SUPPRESS_TIMESTAMPS` (int)
  To be used with pg_trace(), the timestamp is not included in the trace's messages. Available as of PHP 8.4.20.
`PGSQL_TRACE_REGRESS_MODE` (int)
  To be used with pg_trace(), fields such as OIDs are included in the trace's messages. Available as of PHP 8.3.0.

# Örnekler

## İçindekiler

- Basic usage
- Basic usage

## Basic usage

This simple example shows how to connect, execute a query, print resulting rows and disconnect from a PostgreSQL database.

Örnek 1 PostgreSQL extension overview example

    <?php

    // Connecting, selecting database
    $dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo")
        or die('Could not connect: ' . pg_last_error());

    // Performing SQL query
    $query = 'SELECT * FROM authors';
    $result = pg_query($dbconn, $query) or die('Query failed: ' . pg_last_error());

    // Printing results in HTML
    echo "<table>\n";
    while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
        echo "\t<tr>\n";
        foreach ($line as $col_value) {
            echo "\t\t<td>$col_value</td>\n";
        }
        echo "\t</tr>\n";
    }
    echo "</table>\n";

    // Free resultset
    pg_free_result($result);

    // Closing connection
    pg_close($dbconn);

    ?>

## Basic usage

These examples contain user defined functions similar to legacy MySQL functions.

Örnek 1 PostgreSQL user defined functions example

    <?php
    // This function should be needed, since PostgreSQL connection binds database.
    function pg_list_dbs($db)
    {
        assert(is_resource($db));
        $query = '
    SELECT
     d.datname as "Name",
     u.usename as "Owner",
     pg_encoding_to_char(d.encoding) as "Encoding"
    FROM
     pg_database d LEFT JOIN pg_user u ON d.datdba = u.usesysid
    ORDER BY 1;
    ';
        return pg_query($db, $query);
    }

    // List tables.
    function pg_list_tables($db)
    {
        assert(is_resource($db));
        $query = "
    SELECT
     c.relname as \"Name\",
     CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as \"Type\",
      u.usename as \"Owner\"
    FROM
     pg_class c LEFT JOIN pg_user u ON c.relowner = u.usesysid
    WHERE
     c.relkind IN ('r','v','S','')
     AND c.relname !~ '^pg_'
    ORDER BY 1;
    ";
        return pg_query($db, $query);
    }

    // See also pg_meta_data(). It returns field definition as array.
    function pg_list_fields($db, $table)
    {
        assert(is_resource($db));
        $query = "
    SELECT
     a.attname,
     format_type(a.atttypid, a.atttypmod),
     a.attnotnull,
     a.atthasdef,
     a.attnum
    FROM
     pg_class c,
     pg_attribute a
    WHERE
     c.relname = '".$table."'
     AND a.attnum > 0 AND a.attrelid = c.oid
    ORDER BY a.attnum;
    ";
        return pg_query($db, $query);
    }
    ?>

# PostgreSQL İşlevleri

## Notlar

> Bilginize:

> Not all functions are supported by all builds. It depends on your libpq (The PostgreSQL C client library) version and how libpq is compiled. If PHP PostgreSQL extensions are missing, then it is because your libpq version does not support them.

> Bilginize:

> Most PostgreSQL functions accept `connection` as the optional first parameter. If it is not provided, the last opened connection is used. If it doesn't exist, functions return `false`.

> Bilginize:

> PostgreSQL automatically folds all identifiers (e.g. table/column names) to lower-case values at object creation time and at query time. To force the use of mixed or upper case identifiers, you must escape the identifier using double quotes ("").

> Bilginize:

> PostgreSQL does not have special commands for fetching database schema information (eg. all the tables in the current database). Instead, there is a standard schema named `information_schema` containing system views with all the necessary information, in an easily queryable form. See the » PostgreSQL Documentation for full details.

# pg_affected_rows

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_affected_rows — Returns number of affected records (tuples)

### Açıklama

function pg_affected_rows(PgSql\Result `$result`): int

pg_affected_rows() returns the number of tuples (instances/records/rows) affected by `INSERT`, `UPDATE`, and `DELETE` queries.

The server also returns the number of SELECTed rows.

> Bilginize:

> This function used to be called pg_cmdtuples().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

The number of rows affected by the query. If no tuple is affected, it will return `0`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_affected_rows() example

    <?php
    $result = pg_query($conn, "INSERT INTO authors VALUES ('Orwell', 2002, 'Animal Farm')");

    $cmdtuples = pg_affected_rows($result);

    echo $cmdtuples . " tuples are affected.\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1 tuples are affected.

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_query_params() - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text
- pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result
- pg_num_rows() - Returns the number of rows in a result

# pg_cancel_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_cancel_query — Cancel an asynchronous query

### Açıklama

function pg_cancel_query(PgSql\Connection `$connection`): bool

pg_cancel_query() cancels an asynchronous query sent with pg_send_query(), pg_send_query_params() or pg_send_execute(). You cannot cancel a query executed using pg_query().

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_cancel_query() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from authors; select count(*) from authors;");
      }

      $res1 = pg_get_result($dbconn);
      echo "First call to pg_get_result(): $res1\n";
      $rows1 = pg_num_rows($res1);
      echo "$res1 has $rows1 records\n\n";

      // Cancel the currently running query.  Will be the second query if it is
      // still running.
      pg_cancel_query($dbconn);
    ?>

Yukarıdaki örneğin çıktısı:

    First call to pg_get_result(): Resource id #3
    Resource id #3 has 3 records

### Ayrıca Bakınız

- pg_send_query() - Sends asynchronous query
- pg_connection_busy() - Get connection is busy or not

# pg_change_password

(PHP 8 >= 8.4.0)

pg_change_password — Change a PostgreSQL user's password

### Açıklama

function pg_change_password(PgSql\Connection `$connection`, string `$user`, string `$password`): bool

pg_change_password() changes the password of a PostgreSQL user. This function uses the `PQchangePassword` libpq function which handles password encryption automatically based on the server's settings.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`user`
  The name of the PostgreSQL user whose password to change.
`password`
  The new password.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection

# pg_client_encoding

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pg_client_encoding — Gets the client encoding

### Açıklama

function pg_client_encoding(?PgSql\Connection `$connection` = `null`): string

PostgreSQL supports automatic character set conversion between server and client for certain character sets. pg_client_encoding() returns the client encoding as a string. The returned string will be one of the standard PostgreSQL encoding identifiers.

> Bilginize:

> If libpq is compiled without multibyte encoding support, pg_client_encoding() always returns `SQL_ASCII`. Supported encoding depends on PostgreSQL version. Refer to the PostgreSQL Documentation supported encodings.

> The function used to be called pg_clientencoding().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

The client encoding.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_client_encoding() example

    <?php
    // Assume $conn is a connection to a ISO-8859-1 database
    $encoding = pg_client_encoding($conn);

    echo "Client encoding is: ", $encoding, "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Client encoding is: ISO-8859-1

### Ayrıca Bakınız

- pg_set_client_encoding() - Set the client encoding

# pg_close

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_close — Closes a PostgreSQL connection

### Açıklama

function pg_close(?PgSql\Connection `$connection` = `null`): true

pg_close() closes the non-persistent connection to a PostgreSQL database associated with the given `connection` instance.

> Bilginize:

> Using pg_close() is not usually necessary, as non-persistent open connections are automatically closed at the end of the script.

If there is open PgSql\Lob instance on the connection, do not close the connection before closing all PgSql\Lob instances.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_close() example

    <?php
    $dbconn = pg_connect("host=localhost port=5432 dbname=mary")
       or die("Could not connect");
    echo "Connected successfully";
    pg_close($dbconn);
    ?>

Yukarıdaki örneğin çıktısı:

    Connected successfully

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection

# pg_connect

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_connect — Open a PostgreSQL connection

### Açıklama

function pg_connect(string `$connection_string`, int `$flags` = 0): PgSql\Connection|false

pg_connect() opens a connection to a PostgreSQL database specified by the `connection_string`.

If a second call is made to pg_connect() with the same `connection_string` as an existing connection, the existing connection will be returned unless you pass `PGSQL_CONNECT_FORCE_NEW` as `flags`.

The old syntax with multiple parameters $conn = pg_connect("host", "port", "options", "tty", "dbname") has been deprecated.

### Bağımsız Değişkenler

`connection_string`

  The `connection_string` can be empty to use all default parameters, or it can contain one or more parameter settings separated by whitespace. Each parameter setting is in the form `keyword = value`. Spaces around the equal sign are optional. To write an empty value or a value containing spaces, surround it with single quotes, e.g., `keyword = 'a value'`. Single quotes and backslashes within the value must be escaped with a backslash, i.e., \' and \\.

  The currently recognized parameter keywords are: `host`, `hostaddr`, `port`, `dbname` (defaults to value of `user`), `user`, `password`, `connect_timeout`, `options`, `tty` (ignored), `sslmode`, `requiressl` (deprecated in favor of `sslmode`), and `service`. Which of these arguments exist depends on your PostgreSQL version.

  The `options` parameter can be used to set command line parameters to be invoked by the server.

`flags`

  If `PGSQL_CONNECT_FORCE_NEW` is passed, then a new connection is created, even if the `connection_string` is identical to an existing connection.

  If `PGSQL_CONNECT_ASYNC` is given, then the connection is established asynchronously. The state of the connection can then be checked via pg_connect_poll() or pg_connection_status().

### Dönen Değerler

Returns an PgSql\Connection instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns an PgSql\Connection instance now; previously, a resource was returned.

### Örnekler

Örnek 1 Using pg_connect()

    <?php
    $dbconn = pg_connect("dbname=mary");
    //connect to a database named "mary"

    $dbconn2 = pg_connect("host=localhost port=5432 dbname=mary");
    // connect to a database named "mary" on "localhost" at port "5432"

    $dbconn3 = pg_connect("host=sheep port=5432 dbname=mary user=lamb password=foo");
    //connect to a database named "mary" on the host "sheep" with a username and password

    $conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
    $dbconn4 = pg_connect($conn_string);
    //connect to a database named "test" on the host "sheep" with a username and password

    $dbconn5 = pg_connect("host=localhost options='--client_encoding=UTF8'");
    //connect to a database on "localhost" and set the command line parameter which tells the encoding is in UTF-8
    ?>

### Ayrıca Bakınız

- pg_pconnect() - Open a persistent PostgreSQL connection
- pg_close() - Closes a PostgreSQL connection
- pg_host() - Returns the host name associated with the connection
- pg_port() - Return the port number associated with the connection
- pg_tty() - Return the TTY name associated with the connection
- pg_options() - Get the options associated with the connection
- pg_dbname() - Get the database name

# pg_connect_poll

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

pg_connect_poll — Poll the status of an in-progress asynchronous PostgreSQL connection attempt

### Açıklama

function pg_connect_poll(PgSql\Connection `$connection`): int

pg_connect_poll() polls the status of a PostgreSQL connection created by calling pg_connect() with the `PGSQL_CONNECT_ASYNC` option.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

Returns `PGSQL_POLLING_FAILED`, `PGSQL_POLLING_READING`, `PGSQL_POLLING_WRITING`, `PGSQL_POLLING_OK`, or `PGSQL_POLLING_ACTIVE`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

# pg_connection_busy

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_connection_busy — Get connection is busy or not

### Açıklama

function pg_connection_busy(PgSql\Connection `$connection`): bool

pg_connection_busy() determines whether or not a connection is busy. If it is busy, a previous query is still executing. If pg_get_result() is used on the connection, it will be blocked.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

Returns `true` if the connection is busy, `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_connection_busy() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
      $bs = pg_connection_busy($dbconn);
      if ($bs) {
          echo 'connection is busy';
      } else {
         echo 'connection is not busy';
      }
    ?>

### Ayrıca Bakınız

- pg_connection_status() - Get connection status
- pg_get_result() - Get asynchronous query result

# pg_connection_reset

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_connection_reset — Reset connection (reconnect)

### Açıklama

function pg_connection_reset(PgSql\Connection `$connection`): bool

pg_connection_reset() resets the connection. It is useful for error recovery.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_connection_reset() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
      $dbconn2 = pg_connection_reset($dbconn);
      if ($dbconn2) {
          echo "reset successful\n";
      } else {
          echo "reset failed\n";
      }
    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection
- pg_pconnect() - Open a persistent PostgreSQL connection
- pg_connection_status() - Get connection status

# pg_connection_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_connection_status — Get connection status

### Açıklama

function pg_connection_status(PgSql\Connection `$connection`): int

pg_connection_status() returns the status of the specified `connection`.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

`PGSQL_CONNECTION_OK` or `PGSQL_CONNECTION_BAD`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_connection_status() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
      $stat = pg_connection_status($dbconn);
      if ($stat === PGSQL_CONNECTION_OK) {
          echo 'Connection status ok';
      } else {
          echo 'Connection status bad';
      }
    ?>

### Ayrıca Bakınız

- pg_connection_busy() - Get connection is busy or not

# pg_consume_input

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

pg_consume_input — Reads input on the connection

### Açıklama

function pg_consume_input(PgSql\Connection `$connection`): bool

pg_consume_input() consumes any input waiting to be read from the database server.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

`true` if no error occurred, or `false` if there was an error. Note that `true` does not necessarily indicate that input was waiting to be read.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

# pg_convert

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_convert — Convert associative array values into forms suitable for SQL statements

### Açıklama

function pg_convert(
PgSql\Connection `$connection`,
string `$table_name`,
array `$values`,
int `$flags` = 0
): array|false

pg_convert() checks and converts the values in `values` into suitable values for use in an SQL statement. Precondition for pg_convert() is the existence of a table `table_name` which has at least as many columns as `values` has elements. The fieldnames in `table_name` must match the indices in `values` and the corresponding datatypes must be compatible. Returns an array with the converted values on success, `false` otherwise.

> Bilginize:

> Boolean values are accepted and converted to PostgreSQL booleans. String representations of boolean values are also supported. `null` is converted to PostgreSQL NULL.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table against which to convert types.

`values`

  Data to be converted.

`flags`

  Any number of `PGSQL_CONV_IGNORE_DEFAULT`, `PGSQL_CONV_FORCE_NULL` or `PGSQL_CONV_IGNORE_NOT_NULL`, combined.

### Dönen Değerler

An array of converted values, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

A ValueError or TypeError is thrown when the value or type of field does not match properly with a PostgreSQL's type.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a ValueError or TypeError error when the value or type of field does not match properly with a PostgreSQL's type; previously an `E_WARNING` was emitted.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_convert() example

    <?php
      $dbconn = pg_connect('dbname=foo');

      $tmp = array(
          'author' => 'Joe Thackery',
          'year' => 2005,
          'title' => 'My Life, by Joe Thackery'
      );

      $vals = pg_convert($dbconn, 'authors', $tmp);
    ?>

### Ayrıca Bakınız

- pg_meta_data() - Get meta data for table
- pg_insert() - Insert array into table
- pg_select() - Select records
- pg_update() - Update table
- pg_delete() - Deletes records

# pg_copy_from

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_copy_from — Insert records into a table from an array

### Açıklama

function pg_copy_from(
PgSql\Connection `$connection`,
string `$table_name`,
array|Traversable `$rows`,
string `$separator` = "\t",
string `$null_as` = "\\\\N"
): bool

pg_copy_from() inserts records into a table from `rows`. It issues a `COPY FROM` SQL command internally to insert records.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table into which to copy the `rows`.

`rows`

  An iterable data to be copied into `table_name`. Each value in `rows` becomes a row in `table_name`. Each value in `rows` should be a delimited string of the values to insert into each field. Values should be linefeed terminated.

`separator`

  The token that separates values for each field in each element of `rows`. Default is `\t`.

`null_as`

  How SQL `NULL` values are represented in the `rows`. Default is `\\N` (`"\\\\N"`).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | `rows` is now of type iterable. Previously, it was of type array.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_copy_from() example

    <?php
       $db = pg_connect("dbname=publisher") or die("Could not connect");

       $rows = pg_copy_to($db, $table_name);

       pg_query($db, "DELETE FROM $table_name");

       pg_copy_from($db, $table_name, $rows);
    ?>

### Ayrıca Bakınız

- pg_copy_to() - Copy a table to an array

# pg_copy_to

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_copy_to — Copy a table to an array

### Açıklama

function pg_copy_to(
PgSql\Connection `$connection`,
string `$table_name`,
string `$separator` = "\t",
string `$null_as` = "\\\\N"
): array|false

pg_copy_to() copies a table to an array. It issues `COPY TO` SQL command internally to retrieve records.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table from which to copy the data into `rows`.

`separator`

  The token that separates values for each field in each element of `rows`. Default is `\t`.

`null_as`

  How SQL `NULL` values are represented in the `rows`. Default is `\\N` (`"\\\\N"`).

### Dönen Değerler

An array with one element for each line of `COPY` data, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_copy_to() example

    <?php
       $db = pg_connect("dbname=publisher") or die("Could not connect");

       $rows = pg_copy_to($db, $table_name);

       pg_query($db, "DELETE FROM $table_name");

       pg_copy_from($db, $table_name, $rows);
    ?>

### Ayrıca Bakınız

- pg_copy_from() - Insert records into a table from an array

# pg_dbname

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_dbname — Get the database name

### Açıklama

function pg_dbname(?PgSql\Connection `$connection` = `null`): string

pg_dbname() returns the name of the database that the given PostgreSQL `connection` instance.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the name of the database the `connection` is to.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_dbname() example

    <?php
      error_reporting(E_ALL);

      pg_connect("host=localhost port=5432 dbname=mary");
      echo pg_dbname(); // mary
    ?>

# pg_delete

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_delete — Deletes records

### Açıklama

function pg_delete(
PgSql\Connection `$connection`,
string `$table_name`,
array `$conditions`,
int `$flags` = `PGSQL_DML_EXEC`
): string|bool

pg_delete() deletes records from a table specified by the keys and values in `conditions`.

If `flags` is specified, pg_convert() is applied to `conditions` with the specified flags.

By default pg_delete() passes raw values. Values must be escaped or the `PGSQL_DML_ESCAPE` flag must be specified in `flags`. `PGSQL_DML_ESCAPE` quotes and escapes parameters/identifiers. Therefore, table/column names become case sensitive.

Note that neither escape nor prepared query can protect LIKE query, JSON, Array, Regex, etc. These parameters should be handled according to their contexts. i.e. Escape/validate values.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table from which to delete rows.

`conditions`

  An array whose keys are field names in the table `table_name`, and whose values are the values of those fields that are to be deleted.

`flags`

  Any number of `PGSQL_CONV_FORCE_NULL`, `PGSQL_DML_NO_CONV`, `PGSQL_DML_ESCAPE`, `PGSQL_DML_EXEC`, `PGSQL_DML_ASYNC` or `PGSQL_DML_STRING` combined. If `PGSQL_DML_STRING` is part of the `flags` then query string is returned. When `PGSQL_DML_NO_CONV` or `PGSQL_DML_ESCAPE` is set, it does not call pg_convert() internally.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Returns string if `PGSQL_DML_STRING` is passed via `flags`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_delete() example

    <?php
      $db = pg_connect('dbname=foo');
      // This is safe somewhat, since all values are escaped.
      // However PostgreSQL supports JSON/Array. These are not
      // safe by neither escape nor prepared query.
      $res = pg_delete($db, 'post_log', $_POST, PG_DML_ESCAPE);
      if ($res) {
          echo "POST data is deleted: $res\n";
      } else {
          echo "User must have sent wrong inputs\n";
      }
    ?>

### Ayrıca Bakınız

- pg_convert() - Convert associative array values into forms suitable for SQL statements

# pg_end_copy

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pg_end_copy — Sync with PostgreSQL backend

### Açıklama

function pg_end_copy(?PgSql\Connection `$connection` = `null`): bool

pg_end_copy() syncs the PostgreSQL frontend (usually a web server process) with the PostgreSQL server after doing a copy operation performed by pg_put_line(). pg_end_copy() must be issued, otherwise the PostgreSQL server may get out of sync with the frontend and will report an error.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_end_copy() example

    <?php
      $conn = pg_pconnect("dbname=foo");
      pg_query($conn, "create table bar (a int4, b char(16), d float8)");
      pg_query($conn, "copy bar from stdin");
      pg_put_line($conn, "3\thello world\t4.5\n");
      pg_put_line($conn, "4\tgoodbye world\t7.11\n");
      pg_put_line($conn, "\\.\n");
      pg_end_copy($conn);
    ?>

### Ayrıca Bakınız

- pg_put_line() - Send a NULL-terminated string to PostgreSQL backend

# pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_escape_bytea — Escape a string for insertion into a bytea field

### Açıklama

function pg_escape_bytea(PgSql\Connection `$connection` = ?, string `$string`): string

pg_escape_bytea() escapes string for bytea datatype. It returns escaped string.

> Bilginize:

> When you `SELECT` a bytea type, PostgreSQL returns octal byte values prefixed with '\' (e.g. \032). Users are supposed to convert back to binary format manually.

> This function requires PostgreSQL 7.2 or later. With PostgreSQL 7.2.0 and 7.2.1, bytea values must be cast when you enable multi-byte support. i.e. `INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);` PostgreSQL 7.2.2 or later does not need a cast. The exception is when the client and backend character encoding does not match, and there may be multi-byte stream error. User must then cast to bytea to avoid this error.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`string`

  A string containing text or binary data to be inserted into a bytea column.

### Dönen Değerler

A string containing the escaped data.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_escape_bytea() example

    <?php
      // Connect to the database
      $dbconn = pg_connect('dbname=foo');

      // Read in a binary file
      $data = file_get_contents('image1.jpg');

      // Escape the binary data
      $escaped = pg_escape_bytea($data);

      // Insert it into the database
      pg_query("INSERT INTO gallery (name, data) VALUES ('Pine trees', '{$escaped}')");
    ?>

### Ayrıca Bakınız

- pg_unescape_bytea() - Unescape binary for bytea type
- pg_escape_string() - Escape a string for query

# pg_escape_identifier

(PHP 5 >= 5.4.4, PHP 7, PHP 8)

pg_escape_identifier — Escape an identifier for insertion into a text field

### Açıklama

function pg_escape_identifier(PgSql\Connection `$connection` = ?, string `$string`): string|false

pg_escape_identifier() escapes an identifier (e.g. table, field names) for querying the database. It returns an escaped identifier string for PostgreSQL server. pg_escape_identifier() adds double quotes before and after data. Users should not add double quotes. Use of this function is recommended for identifier parameters in query. For SQL literals (i.e. parameters except bytea), pg_escape_literal() or pg_escape_string() must be used. For bytea type fields, pg_escape_bytea() must be used instead.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`string`

  A string containing text to be escaped.

### Dönen Değerler

A string containing the escaped data, or `false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_escape_identifier() example

    <?php
      // Connect to the database
      $dbconn = pg_connect('dbname=foo');

      // Escape the table name data
      $escaped = pg_escape_identifier($table_name);

      // Select rows from $table_name
      pg_query("SELECT * FROM {$escaped};");
    ?>

### Ayrıca Bakınız

- pg_escape_literal() - Escape a literal for insertion into a text field
- pg_escape_bytea() - Escape a string for insertion into a bytea field
- pg_escape_string() - Escape a string for query

# pg_escape_literal

(PHP 5 >= 5.4.4, PHP 7, PHP 8)

pg_escape_literal — Escape a literal for insertion into a text field

### Açıklama

function pg_escape_literal(PgSql\Connection `$connection` = ?, string `$string`): string|false

pg_escape_literal() escapes a literal for querying the PostgreSQL database. It returns an escaped literal in the PostgreSQL format. pg_escape_literal() adds quotes before and after data. Users should not add quotes. Use of this function is recommended instead of pg_escape_string(). If the type of the column is bytea, pg_escape_bytea() must be used instead. For escaping identifiers (e.g. table, field names), pg_escape_identifier() must be used.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`string`

  A string containing text to be escaped.

### Dönen Değerler

A string containing the escaped data, or `false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_escape_literal() example

    <?php
      // Connect to the database
      $dbconn = pg_connect('dbname=foo');

      // Read in a text file (containing apostrophes and backslashes)
      $data = file_get_contents('letter.txt');

      // Escape the text data
      $escaped = pg_escape_literal($data);

      // Insert it into the database. Note that no quotes around {$escaped}
      pg_query("INSERT INTO correspondence (name, data) VALUES ('My letter', {$escaped})");
    ?>

### Ayrıca Bakınız

- pg_escape_identifier() - Escape an identifier for insertion into a text field
- pg_escape_bytea() - Escape a string for insertion into a bytea field
- pg_escape_string() - Escape a string for query

# pg_escape_string

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_escape_string — Escape a string for query

### Açıklama

function pg_escape_string(PgSql\Connection `$connection` = ?, string `$string`): string

pg_escape_string() escapes a string for querying the database. It returns an escaped string in the PostgreSQL format without quotes. pg_escape_literal() is more preferred way to escape SQL parameters for PostgreSQL. addslashes() must not be used with PostgreSQL. If the type of the column is bytea, pg_escape_bytea() must be used instead. pg_escape_identifier() must be used to escape identifiers (e.g. table names, field names)

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`string`

  A string containing text to be escaped.

### Dönen Değerler

A string containing the escaped data.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_escape_string() example

    <?php
      // Connect to the database
      $dbconn = pg_connect('dbname=foo');

      // Read in a text file (containing apostrophes and backslashes)
      $data = file_get_contents('letter.txt');

      // Escape the text data
      $escaped = pg_escape_string($data);

      // Insert it into the database
      pg_query("INSERT INTO correspondence (name, data) VALUES ('My letter', '{$escaped}')");
    ?>

### Ayrıca Bakınız

- pg_escape_bytea() - Escape a string for insertion into a bytea field

# pg_execute

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result

### Açıklama

function pg_execute(PgSql\Connection `$connection` = ?, string `$statement_name`, array `$params`): PgSql\Result|false

Sends a request to execute a prepared statement with given parameters, and waits for the result.

pg_execute() is like pg_query_params(), but the command to be executed is specified by naming a previously-prepared statement, instead of giving a query string. This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. The statement must have been prepared previously in the current session.

The parameters are identical to pg_query_params(), except that the name of a prepared statement is given instead of a query string.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`statement_name`

  The name of the prepared statement to execute. if "" is specified, then the unnamed statement is executed. The name must have been previously prepared using pg_prepare(), pg_send_prepare() or a `PREPARE` SQL command.

`params`

  An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

  Uyarı

  Elements are converted to strings by calling this function.

### Dönen Değerler

An PgSql\Result instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_execute()

    <?php
    // Connect to a database named "mary"
    $dbconn = pg_connect("dbname=mary");

    // Prepare a query for execution
    $result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');

    // Execute the prepared query.  Note that it is not necessary to escape
    // the string "Joe's Widgets" in any way
    $result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));

    // Execute the same prepared query, this time with a different parameter
    $result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));

    ?>

### Ayrıca Bakınız

- pg_prepare() - Submits a request to the server to create a prepared statement with the given parameters, and waits for completion
- pg_send_prepare() - Sends a request to create a prepared statement with the given parameters, without waiting for completion
- pg_query_params() - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text

# pg_fetch_all

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_fetch_all — Fetches all rows from a result as an array

### Açıklama

function pg_fetch_all(PgSql\Result `$result`, int `$mode` = `PGSQL_ASSOC`): array

pg_fetch_all() returns an array that contains all rows (records) in the PgSql\Result instance.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`mode`

  Dizinin nasıl indisleneceğini belirleyen seçimlik bağımsız değişken. `kip` bir sabit olup şu değerleri alabilir: `PGSQL_ASSOC`, `PGSQL_NUM` ve `PGSQL_BOTH`. `PGSQL_NUM` ile işlev sayısal indisli bir dizi, `PGSQL_ASSOC` ile ilişkisel bir dizi ve `PGSQL_BOTH` ile hem sayısal hem de ilişkisel indisli bir dizi döndürür.

### Dönen Değerler

An array with all rows in the result. Each row is an array of field values indexed by field name.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | pg_fetch_all() will now return an empty array instead of `false` for result sets with zero rows.
7.1.0 | The `mode` parameter was added.

### Örnekler

Örnek 1 PostgreSQL fetch all

    <?php
    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
        echo "An error occurred.\n";
        exit;
    }

    $result = pg_query($conn, "SELECT * FROM authors");
    if (!$result) {
        echo "An error occurred.\n";
        exit;
    }

    $arr = pg_fetch_all($result);

    print_r($arr);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => Fred
            )

        [1] => Array
            (
                [id] => 2
                [name] => Bob
            )

    )

### Ayrıca Bakınız

- pg_fetch_row() - Get a row as an enumerated array
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_object() - Fetch a row as an object
- pg_fetch_result() - Returns values from a result instance

# pg_fetch_all_columns

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_fetch_all_columns — Fetches all rows in a particular result column as an array

### Açıklama

function pg_fetch_all_columns(PgSql\Result `$result`, int `$field` = 0): array

pg_fetch_all_columns() returns an array that contains all rows (records) in a particular column of the PgSql\Result instance.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Column number. Defaults to the first column if not specified.

### Dönen Değerler

An array with all values in the result column.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_all_columns() example

    <?php
    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT title, name, address FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    // Get an array of all author names
    $arr = pg_fetch_all_columns($result, 1);

    var_dump($arr);

    ?>

### Ayrıca Bakınız

- pg_fetch_all() - Fetches all rows from a result as an array

# pg_fetch_array

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_fetch_array — Fetch a row as an array

### Açıklama

function pg_fetch_array(PgSql\Result `$result`, ?int `$row` = `null`, int `$mode` = `PGSQL_BOTH`): array|false

pg_fetch_array() returns an array that corresponds to the fetched row (record).

pg_fetch_array() is an extended version of pg_fetch_row(). In addition to storing the data in the numeric indices (field number) to the result array, it can also store the data using associative indices (field name). It stores both indices by default.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

pg_fetch_array() is NOT significantly slower than using pg_fetch_row(), and is significantly easier to use.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or `null`, the next row is fetched.

`mode`

  Dizinin nasıl indisleneceğini belirleyen seçimlik bağımsız değişken. `kip` bir sabit olup şu değerleri alabilir: `PGSQL_ASSOC`, `PGSQL_NUM` ve `PGSQL_BOTH`. `PGSQL_NUM` ile işlev sayısal indisli bir dizi, `PGSQL_ASSOC` ile ilişkisel bir dizi ve `PGSQL_BOTH` ile hem sayısal hem de ilişkisel indisli bir dizi döndürür.

### Dönen Değerler

An array indexed numerically (beginning with 0) or associatively (indexed by field name), or both. Each value in the array is represented as a string. Database `NULL` values are returned as `null`.

`false` is returned if `row` exceeds the number of rows in the set, there are no more rows, or on any other error. Fetching from the result of a query other than SELECT will also return `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_array() example

    <?php

    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    $arr = pg_fetch_array($result, 0, PGSQL_NUM);
    echo $arr[0] . " <- Row 1 Author\n";
    echo $arr[1] . " <- Row 1 E-mail\n";

    // The row parameter is optional; NULL can be passed instead,
    // to pass a result_type.  Successive calls to pg_fetch_array
    // will return the next row.
    $arr = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    echo $arr["author"] . " <- Row 2 Author\n";
    echo $arr["email"] . " <- Row 2 E-mail\n";

    $arr = pg_fetch_array($result);
    echo $arr["author"] . " <- Row 3 Author\n";
    echo $arr[1] . " <- Row 3 E-mail\n";

    ?>

### Ayrıca Bakınız

- pg_fetch_row() - Get a row as an enumerated array
- pg_fetch_object() - Fetch a row as an object
- pg_fetch_result() - Returns values from a result instance

# pg_fetch_assoc

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_fetch_assoc — Fetch a row as an associative array

### Açıklama

function pg_fetch_assoc(PgSql\Result `$result`, ?int `$row` = `null`): array|false

pg_fetch_assoc() returns an associative array that corresponds to the fetched row (records).

pg_fetch_assoc() is equivalent to calling pg_fetch_array() with `PGSQL_ASSOC` as the optional third parameter. It only returns an associative array. If you need the numeric indices, use pg_fetch_row().

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

pg_fetch_assoc() is NOT significantly slower than using pg_fetch_row(), and is significantly easier to use.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or `null`, the next row is fetched.

### Dönen Değerler

An array indexed associatively (by field name). Each value in the array is represented as a string. Database `NULL` values are returned as `null`.

`false` is returned if `row` exceeds the number of rows in the set, there are no more rows, or on any other error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_assoc() example

    <?php
    $conn = pg_connect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT id, author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    while ($row = pg_fetch_assoc($result)) {
      echo $row['id'];
      echo $row['author'];
      echo $row['email'];
    }
    ?>

### Ayrıca Bakınız

- pg_fetch_row() - Get a row as an enumerated array
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_object() - Fetch a row as an object
- pg_fetch_result() - Returns values from a result instance

# pg_fetch_object

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_fetch_object — Fetch a row as an object

### Açıklama

function pg_fetch_object(
PgSql\Result `$result`,
?int `$row` = `null`,
string `$class` = "stdClass",
array `$constructor_args` = []
): object|false

pg_fetch_object() returns an object with properties that correspond to the fetched row's field names. It can optionally instantiate an object of a specific class, and pass parameters to that class's constructor.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

Speed-wise, the function is identical to pg_fetch_array(), and almost as fast as pg_fetch_row() (the difference is insignificant).

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or `null`, the next row is fetched.

`class`

  The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.

`constructor_args`

  An optional array of parameters to pass to the constructor for `class` objects.

### Dönen Değerler

An object with one attribute for each field name in the result. Database `NULL` values are returned as `null`.

`false` is returned if `row` exceeds the number of rows in the set, there are no more rows, or on any other error.

### Hatalar/İstisnalar

A ValueError is thrown when the `constructor_args` is non-empty with the class not having constructor.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a ValueError exception when the `constructor_args` is non-empty with the class not having constructor; previously an Exception was thrown.
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_object() example

    <?php

    $database = "store";

    $db_conn = pg_connect("host=localhost port=5432 dbname=$database");
    if (!$db_conn) {
      echo "Failed connecting to postgres database $database\n";
      exit;
    }

    $qu = pg_query($db_conn, "SELECT * FROM books ORDER BY author");

    while ($data = pg_fetch_object($qu)) {
      echo $data->author . " (";
      echo $data->year . "): ";
      echo $data->title . "<br />";
    }

    pg_free_result($qu);
    pg_close($db_conn);

    ?>

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_assoc() - Fetch a row as an associative array
- pg_fetch_row() - Get a row as an enumerated array
- pg_fetch_result() - Returns values from a result instance

# pg_fetch_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_fetch_result — Returns values from a result instance

### Açıklama

function pg_fetch_result(PgSql\Result `$result`, string|false|null `$row`, mixed `$field`): string|false|null
function pg_fetch_result(PgSql\Result `$result`, mixed `$field`): string|false|null

pg_fetch_result() returns the value of a particular row and field (column) in an PgSql\Result instance.

> Bilginize:

> This function used to be called pg_result().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted, next row is fetched.

`field`

  A string representing the name of the field (column) to fetch, otherwise an int representing the field number to fetch. Fields are numbered from 0 upwards.

### Dönen Değerler

Boolean is returned as "t" or "f". All other types, including arrays are returned as strings formatted in the same default PostgreSQL manner that you would see in the psql program. Database `NULL` values are returned as `null`.

`false` is returned if `row` exceeds the number of rows in the set, or on any other error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | `row` is now nullable.
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_result() example

    <?php
    $db = pg_connect("dbname=users user=me");

    $res = pg_query($db, "SELECT 1 UNION ALL SELECT 2");

    $val = pg_fetch_result($res, 1, 0);

    echo "First field in the second row is: ", $val, "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    First field in the second row is: 2

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_fetch_array() - Fetch a row as an array

# pg_fetch_row

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_fetch_row — Get a row as an enumerated array

### Açıklama

function pg_fetch_row(PgSql\Result `$result`, ?int `$row` = `null`, int `$mode` = `PGSQL_NUM`): array|false

pg_fetch_row() fetches one row of data from the result associated with the specified `result` instance.

> Bilginize: Bu işlev NULL alanlara PHP `null` değerini atar.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or `null`, the next row is fetched.

`mode`

  Dizinin nasıl indisleneceğini belirleyen seçimlik bağımsız değişken. `kip` bir sabit olup şu değerleri alabilir: `PGSQL_ASSOC`, `PGSQL_NUM` ve `PGSQL_BOTH`. `PGSQL_NUM` ile işlev sayısal indisli bir dizi, `PGSQL_ASSOC` ile ilişkisel bir dizi ve `PGSQL_BOTH` ile hem sayısal hem de ilişkisel indisli bir dizi döndürür.

### Dönen Değerler

An array, indexed from 0 upwards, with each value represented as a string. Database `NULL` values are returned as `null`.

`false` is returned if `row` exceeds the number of rows in the set, there are no more rows, or on any other error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_fetch_row() example

    <?php

    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    while ($row = pg_fetch_row($result)) {
      echo "Author: $row[0]  E-mail: $row[1]";
      echo "<br />\n";
    }

    ?>

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_object() - Fetch a row as an object
- pg_fetch_result() - Returns values from a result instance

# pg_field_is_null

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_is_null — Test if a field is SQL `NULL`

### Açıklama

function pg_field_is_null(PgSql\Result `$result`, string|false|null `$row`, mixed `$field`): int
function pg_field_is_null(PgSql\Result `$result`, mixed `$field`): int

pg_field_is_null() tests if a field in an PgSql\Result instance is SQL `NULL` or not.

> Bilginize:

> This function used to be called pg_fieldisnull().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result to fetch. Rows are numbered from 0 upwards. If omitted, current row is fetched.

`field`

  Field number (starting from 0) as an int or the field name as a string.

### Dönen Değerler

Returns `1` if the field in the given row is SQL `NULL`, `0` if not. `false` is returned if the row is out of range, or upon any other error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | `row` is now nullable.
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_field_is_null() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die ("Could not connect");
      $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
      if ($res) {
          if (pg_field_is_null($res, 0, "year") == 1) {
              echo "The value of the field year is null.\n";
          }
          if (pg_field_is_null($res, 0, "year") == 0) {
              echo "The value of the field year is not null.\n";
        }
     }
    ?>

# pg_field_name

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_name — Returns the name of a field

### Açıklama

function pg_field_name(PgSql\Result `$result`, int `$field`): string

pg_field_name() returns the name of the field occupying the given `field` in the given `result` instance. Field numbering starts from 0.

> Bilginize:

> This function used to be called pg_fieldname().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Field number, starting from 0.

### Dönen Değerler

The field name.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
      $i = pg_num_fields($res);
      for ($j = 0; $j < $i; $j++) {
          echo "column $j\n";
          $fieldname = pg_field_name($res, $j);
          echo "fieldname: $fieldname\n";
          echo "printed length: " . pg_field_prtlen($res, $fieldname) . " characters\n";
          echo "storage length: " . pg_field_size($res, $j) . " bytes\n";
          echo "field type: " . pg_field_type($res, $j) . " \n\n";
      }
    ?>

Yukarıdaki örneğin çıktısı:

    column 0
    fieldname: author
    printed length: 6 characters
    storage length: -1 bytes
    field type: varchar

    column 1
    fieldname: year
    printed length: 4 characters
    storage length: 2 bytes
    field type: int2

    column 2
    fieldname: title
    printed length: 24 characters
    storage length: -1 bytes
    field type: varchar

### Ayrıca Bakınız

- pg_field_num() - Returns the field number of the named field

# pg_field_num

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_num — Returns the field number of the named field

### Açıklama

function pg_field_num(PgSql\Result `$result`, string `$field`): int

pg_field_num() will return the number of the field number that corresponds to the `field` in the given `result` instance.

> Bilginize:

> This function used to be called pg_fieldnum().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  The name of the field. The given name is treated like an identifier in an SQL command, that is, it is downcased unless double-quoted.

### Dönen Değerler

The field number (numbered from 0), or -1 on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      $res = pg_query($dbconn, "select author, year, title from authors where author = 'Orwell'");

      echo "Column 'title' is field number: ", pg_field_num($res, 'title');
    ?>

Yukarıdaki örneğin çıktısı:

    Column 'title' is field number: 2

### Ayrıca Bakınız

- pg_field_name() - Returns the name of a field

# pg_field_prtlen

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_prtlen — Returns the printed length

### Açıklama

function pg_field_prtlen(PgSql\Result `$result`, string|false|null `$row`, mixed `$field_name_or_number`): int
function pg_field_prtlen(PgSql\Result `$result`, mixed `$field_name_or_number`): int

pg_field_prtlen() returns the actual printed length (number of characters) of a specific value in a PostgreSQL `result`. Row numbering starts at 0. This function will return `false` on an error.

`field_name_or_number` can be passed either as an int or as a string. If it is passed as an int, PHP recognises it as the field number, otherwise as field name.

See the example given at the pg_field_name() page.

> Bilginize:

> This function used to be called pg_fieldprtlen().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row number in result. Rows are numbered from 0 upwards. If omitted, current row is fetched.

### Dönen Değerler

The field printed length.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | `row` is now nullable.
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
      $i = pg_num_fields($res);
      for ($j = 0; $j < $i; $j++) {
          echo "column $j\n";
          $fieldname = pg_field_name($res, $j);
          echo "fieldname: $fieldname\n";
          echo "printed length: " . pg_field_prtlen($res, $fieldname) . " characters\n";
          echo "storage length: " . pg_field_size($res, $j) . " bytes\n";
          echo "field type: " . pg_field_type($res, $j) . " \n\n";
      }
    ?>

Yukarıdaki örneğin çıktısı:

    column 0
    fieldname: author
    printed length: 6 characters
    storage length: -1 bytes
    field type: varchar

    column 1
    fieldname: year
    printed length: 4 characters
    storage length: 2 bytes
    field type: int2

    column 2
    fieldname: title
    printed length: 24 characters
    storage length: -1 bytes
    field type: varchar

### Ayrıca Bakınız

- pg_field_size() - Returns the internal storage size of the named field

# pg_field_size

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_size — Returns the internal storage size of the named field

### Açıklama

function pg_field_size(PgSql\Result `$result`, int `$field`): int

pg_field_size() returns the internal storage size (in bytes) of the field number in the given PostgreSQL `result`.

> Bilginize:

> This function used to be called pg_fieldsize().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Field number, starting from 0.

### Dönen Değerler

The internal field storage size (in bytes). -1 indicates a variable length field.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
      $i = pg_num_fields($res);
      for ($j = 0; $j < $i; $j++) {
          echo "column $j\n";
          $fieldname = pg_field_name($res, $j);
          echo "fieldname: $fieldname\n";
          echo "printed length: " . pg_field_prtlen($res, $fieldname) . " characters\n";
          echo "storage length: " . pg_field_size($res, $j) . " bytes\n";
          echo "field type: " . pg_field_type($res, $j) . " \n\n";
      }
    ?>

Yukarıdaki örneğin çıktısı:

    column 0
    fieldname: author
    printed length: 6 characters
    storage length: -1 bytes
    field type: varchar

    column 1
    fieldname: year
    printed length: 4 characters
    storage length: 2 bytes
    field type: int2

    column 2
    fieldname: title
    printed length: 24 characters
    storage length: -1 bytes
    field type: varchar

### Ayrıca Bakınız

- pg_field_prtlen() - Returns the printed length
- pg_field_type() - Returns the type name for the corresponding field number

# pg_field_table

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

pg_field_table — Returns the name or oid of the tables field

### Açıklama

function pg_field_table(PgSql\Result `$result`, int `$field`, bool `$oid_only` = `false`): string|int|false

pg_field_table() returns the name of the table that field belongs to, or the table's oid if `oid_only` is `true`.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Field number, starting from 0.

`oid_only`

  By default the tables name that field belongs to is returned but if `oid_only` is set to `true`, then the oid will instead be returned.

### Dönen Değerler

On success either the fields table name or oid, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting table information about a field

    <?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

    $res = pg_query($dbconn, "SELECT bar FROM foo");

    echo pg_field_table($res, 0);
    echo pg_field_table($res, 0, true);

    $res = pg_query($dbconn, "SELECT version()");
    var_dump(pg_field_table($res, 0));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    foo
    14379580

    bool(false)

### Notlar

> Bilginize:

> Returning the oid is much faster than returning the table name because fetching the table name requires a query to the database system table.

### Ayrıca Bakınız

- pg_field_name() - Returns the name of a field
- pg_field_type() - Returns the type name for the corresponding field number

# pg_field_type

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_field_type — Returns the type name for the corresponding field number

### Açıklama

function pg_field_type(PgSql\Result `$result`, int `$field`): string

pg_field_type() returns a string containing the base type name of the given `field` in the given `result` instance.

> Bilginize:

> If the field uses a PostgreSQL domain (rather than a basic type), it is the name of the domain's underlying type that is returned, rather than the name of the domain itself.

> Bilginize:

> This function used to be called pg_fieldtype().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Field number, starting from 0.

### Dönen Değerler

A string containing the base name of the field's type.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Assume 'title' is a varchar type
      $res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

      echo "Title field type: ", pg_field_type($res, 0);
    ?>

Yukarıdaki örneğin çıktısı:

    Title field type: varchar

### Ayrıca Bakınız

- pg_field_prtlen() - Returns the printed length
- pg_field_name() - Returns the name of a field
- pg_field_type_oid() - Returns the type ID (OID) for the corresponding field number

# pg_field_type_oid

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_field_type_oid — Returns the type ID (OID) for the corresponding field number

### Açıklama

function pg_field_type_oid(PgSql\Result `$result`, int `$field`): string|int

pg_field_type_oid() returns an integer containing the OID of the base type of the given `field` in the given `result` instance.

You can get more information about the field type by querying PostgreSQL's `pg_type` system table using the OID obtained with this function. The PostgreSQL format_type() function will convert a type OID into an SQL standard type name.

> Bilginize:

> If the field uses a PostgreSQL domain (rather than a basic type), it is the OID of the domain's underlying type that is returned, rather than the OID of the domain itself.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field`

  Field number, starting from 0.

### Dönen Değerler

The OID of the field's base type.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting information about fields

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Assume 'title' is a varchar type
      $res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

      echo "Title field type OID: ", pg_field_type_oid($res, 0);
    ?>

Yukarıdaki örneğin çıktısı:

    Title field type OID: 1043

### Ayrıca Bakınız

- pg_field_type() - Returns the type name for the corresponding field number
- pg_field_prtlen() - Returns the printed length
- pg_field_name() - Returns the name of a field

# pg_flush

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

pg_flush — Flush outbound query data on the connection

### Açıklama

function pg_flush(PgSql\Connection `$connection`): int|bool

pg_flush() flushes any outbound query data waiting to be sent on the connection.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

Returns `true` if the flush was successful or no data was waiting to be flushed, `0` if part of the pending data was flushed but more remains başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

# pg_free_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_free_result — Free result memory

### Açıklama

function pg_free_result(PgSql\Result `$result`): bool

pg_free_result() frees the memory and data associated with the specified PgSql\Result instance.

This function need only be called if memory consumption during script execution is a problem. Otherwise, all result memory will be automatically freed when the script ends.

> Bilginize:

> This function used to be called pg_freeresult().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_free_result() example

    <?php
    $db = pg_connect("dbname=users user=me");

    $res = pg_query($db, "SELECT 1 UNION ALL SELECT 2");

    $val = pg_fetch_result($res, 1, 0);

    echo "First field in the second row is: ", $val, "\n";

    pg_free_result($res);
    ?>

Yukarıdaki örneğin çıktısı:

    First field in the second row is: 2

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_query_params() - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text
- pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result
- pg_result_memory_size() - Returns the amount of memory allocated for a query result

# pg_get_notify

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_get_notify — Gets SQL NOTIFY message

### Açıklama

function pg_get_notify(PgSql\Connection `$connection`, int `$mode` = `PGSQL_ASSOC`): array|false

pg_get_notify() gets notifications generated by a `NOTIFY` SQL command. To receive notifications, the `LISTEN` SQL command must be issued.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`mode`

  Dizinin nasıl indisleneceğini belirleyen seçimlik bağımsız değişken. `kip` bir sabit olup şu değerleri alabilir: `PGSQL_ASSOC`, `PGSQL_NUM` ve `PGSQL_BOTH`. `PGSQL_NUM` ile işlev sayısal indisli bir dizi, `PGSQL_ASSOC` ile ilişkisel bir dizi ve `PGSQL_BOTH` ile hem sayısal hem de ilişkisel indisli bir dizi döndürür.

### Dönen Değerler

An array containing the `NOTIFY` message name and backend PID. If supported by the server, the array also contains the server version and the payload. Otherwise if no `NOTIFY` is waiting, then `false` is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 PostgreSQL NOTIFY message

    <?php
    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    // Listen 'author_updated' message from other processes
    pg_query($conn, 'LISTEN author_updated;');
    $notify = pg_get_notify($conn);
    if (!$notify) {
      echo "No messages\n";
    } else {
      print_r($notify);
    }
    ?>

### Ayrıca Bakınız

- pg_get_pid() - Gets the backend's process ID

# pg_get_pid

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_get_pid — Gets the backend's process ID

### Açıklama

function pg_get_pid(PgSql\Connection `$connection`): int

pg_get_pid() gets the backend's (database server process) PID. The PID is useful to determine whether or not a `NOTIFY` message received via pg_get_notify() is sent from another process or not.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

The backend database process ID.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 PostgreSQL backend PID

    <?php
    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    // Backend process PID. Use PID with pg_get_notify()
    $pid = pg_get_pid($conn);
    ?>

### Ayrıca Bakınız

- pg_get_notify() - Gets SQL NOTIFY message

# pg_get_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_get_result — Get asynchronous query result

### Açıklama

function pg_get_result(PgSql\Connection `$connection`): PgSql\Result|false

pg_get_result() gets an PgSql\Result instance from an asynchronous query executed by pg_send_query(), pg_send_query_params() or pg_send_execute().

pg_send_query() and the other asynchronous query functions can send multiple queries to a PostgreSQL server and pg_get_result() is used to get each query's results, one by one.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

An PgSql\Result instance, or `false` if no more results are available.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_get_result() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from authors; select count(*) from authors;");
      }

      $res1 = pg_get_result($dbconn);
      echo "First call to pg_get_result(): $res1\n";
      $rows1 = pg_num_rows($res1);
      echo "$res1 has $rows1 records\n\n";

      $res2 = pg_get_result($dbconn);
      echo "Second call to pg_get_result(): $res2\n";
      $rows2 = pg_num_rows($res2);
      echo "$res2 has $rows2 records\n";
    ?>

Yukarıdaki örneğin çıktısı:

    First call to pg_get_result(): Resource id #3
    Resource id #3 has 3 records

    Second call to pg_get_result(): Resource id #4
    Resource id #4 has 1 records

### Ayrıca Bakınız

- pg_send_query() - Sends asynchronous query

# pg_host

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_host — Returns the host name associated with the connection

### Açıklama

function pg_host(?PgSql\Connection `$connection` = `null`): string

pg_host() returns the host name of the given PostgreSQL `connection` instance is connected to.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the name of the host the `connection` is to, or an empty string on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_host() example

    <?php
    $pgsql_conn = pg_connect("dbname=mark host=localhost");

    if ($pgsql_conn) {
       print "Successfully connected to: " . pg_host($pgsql_conn) . "<br/>\n";
    } else {
       print pg_last_error($pgsql_conn);
       exit;
    }
    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection
- pg_pconnect() - Open a persistent PostgreSQL connection

# pg_insert

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_insert — Insert array into table

### Açıklama

function pg_insert(
PgSql\Connection `$connection`,
string `$table_name`,
array `$values`,
int `$flags` = `PGSQL_DML_EXEC`
): PgSql\Result|string|bool

pg_insert() inserts the values of `values` into the table specified by `table_name`.

If `flags` is specified, pg_convert() is applied to `values` with the specified flags.

By default pg_insert() passes raw values. Values must be escaped or the `PGSQL_DML_ESCAPE` flag must be specified in `flags`. `PGSQL_DML_ESCAPE` quotes and escapes parameters/identifiers. Therefore, table/column names become case sensitive.

Note that neither escape nor prepared query can protect LIKE query, JSON, Array, Regex, etc. These parameters should be handled according to their contexts. i.e. Escape/validate values.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table into which to insert rows. The table `table_name` must at least have as many columns as `values` has elements.

`values`

  An array whose keys are field names in the table `table_name`, and whose values are the values of those fields that are to be inserted.

`flags`

  Any number of `PGSQL_CONV_OPTS`, `PGSQL_DML_NO_CONV`, `PGSQL_DML_ESCAPE`, `PGSQL_DML_EXEC`, `PGSQL_DML_ASYNC` or `PGSQL_DML_STRING` combined. If `PGSQL_DML_STRING` is part of the `flags` then query string is returned. When `PGSQL_DML_NO_CONV` or `PGSQL_DML_ESCAPE` is set, it does not call pg_convert() internally.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.. Or returns a string on success if `PGSQL_DML_STRING` is passed via `flags`.

### Hatalar/İstisnalar

A ValueError is thrown when the specified table is invalid.

A ValueError or TypeError is thrown when the value or type of field does not match properly with a PostgreSQL's type.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a ValueError error when the specified table is invalid; previously an `E_WARNING` was emitted.
8.3.0 | Now throws a ValueError or TypeError error when the value or type of field does not match properly with a PostgreSQL's type; previously an `E_WARNING` was emitted.
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_insert() example

    <?php
      $dbconn = pg_connect('dbname=foo');
      // This is safe somewhat, since all values are escaped.
      // However PostgreSQL supports JSON/Array. These are not
      // safe by neither escape nor prepared query.
      $res = pg_insert($dbconn, 'post_log', $_POST, PGSQL_DML_ESCAPE);
      if ($res) {
          echo "POST data is successfully logged\n";
      } else {
          echo "User must have sent wrong inputs\n";
      }
    ?>

### Ayrıca Bakınız

- pg_convert() - Convert associative array values into forms suitable for SQL statements

# pg_jit

(PHP 8 >= 8.4.0)

pg_jit — Returns the JIT information of the server

### Açıklama

function pg_jit(?PgSql\Connection `$connection` = `null`): array

pg_jit() returns an array with the JIT (Just-In-Time compilation) information of the PostgreSQL server.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Returns an array containing the JIT information of the server.

### Ayrıca Bakınız

- pg_version() - Returns an array with client, protocol and server version (when available)

# pg_last_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_last_error — Get the last error message string of a connection

### Açıklama

function pg_last_error(?PgSql\Connection `$connection` = `null`): string

pg_last_error() returns the last error message for a given `connection`.

Error messages may be overwritten by internal PostgreSQL (libpq) function calls. It may not return an appropriate error message if multiple errors occur inside a PostgreSQL module function.

Use pg_result_error(), pg_result_error_field(), pg_result_status() and pg_connection_status() for better error handling.

> Bilginize:

> This function used to be called pg_errormessage().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the last error message on the given `connection`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_last_error() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Query that fails
      $res = pg_query($dbconn, "select * from doesnotexist");

      echo pg_last_error($dbconn);
    ?>

### Ayrıca Bakınız

- pg_result_error() - Get error message associated with result
- pg_result_error_field() - Returns an individual field of an error report

# pg_last_notice

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

pg_last_notice — Returns the last notice message from PostgreSQL server

### Açıklama

function pg_last_notice(PgSql\Connection `$connection`, int `$mode` = `PGSQL_NOTICE_LAST`): array|string|bool

pg_last_notice() returns the last notice message from the PostgreSQL server on the specified `connection`. The PostgreSQL server sends notice messages in several cases, for instance when creating a `SERIAL` column in a table.

With pg_last_notice(), you can avoid issuing useless queries by checking whether or not the notice is related to your transaction.

Notice message tracking can be set to optional by setting 1 for `pgsql.ignore_notice` in php.ini.

Notice message logging can be set to optional by setting 0 for `pgsql.log_notice` in php.ini. Unless `pgsql.ignore_notice` is set to 0, notice message cannot be logged.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`mode`

  One of `PGSQL_NOTICE_LAST` (to return last notice), `PGSQL_NOTICE_ALL` (to return all notices), or `PGSQL_NOTICE_CLEAR` (to clear notices).

### Dönen Değerler

A string containing the last notice on the given `connection` with `PGSQL_NOTICE_LAST`, an array with `PGSQL_NOTICE_ALL`, a bool with `PGSQL_NOTICE_CLEAR`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
7.1.0 | The `mode` parameter was added.

### Örnekler

Örnek 1 pg_last_notice() example

    <?php
      $pgsql_conn = pg_connect("dbname=mark host=localhost");

      $res = pg_query("CREATE TABLE test (id SERIAL)");

      $notice = pg_last_notice($pgsql_conn);

      echo $notice;
    ?>

Yukarıdaki örneğin çıktısı:

    CREATE TABLE will create implicit sequence "test_id_seq" for "serial" column "test.id"

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_last_error() - Get the last error message string of a connection

# pg_last_oid

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_last_oid — Returns the last row's OID

### Açıklama

function pg_last_oid(PgSql\Result `$result`): string|int|false

pg_last_oid() is used to retrieve the OID assigned to an inserted row.

OID field became an optional field from PostgreSQL 7.2 and will not be present by default in PostgreSQL 8.1. When the OID field is not present in a table, the programmer must use pg_result_status() to check for successful insertion.

To get the value of a `SERIAL` field in an inserted row, it is necessary to use the PostgreSQL `CURRVAL` function, naming the sequence whose last value is required. If the name of the sequence is unknown, the `pg_get_serial_sequence` PostgreSQL 8.0 function is necessary.

PostgreSQL 8.1 has a function `LASTVAL` that returns the value of the most recently used sequence in the session. This avoids the need for naming the sequence, table or column altogether.

> Bilginize:

> This function used to be called pg_getlastoid().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

An int or string containing the OID assigned to the most recently inserted row in the specified `connection`, or `false` on error or no available OID.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_last_oid() example

    <?php
      // Connect to the database
      pg_connect("dbname=mark host=localhost");

      // Create a sample table
      pg_query("CREATE TABLE test (a INTEGER) WITH OIDS");

      // Insert some data into it
      $res = pg_query("INSERT INTO test VALUES (1)");

      $oid = pg_last_oid($res);
    ?>

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_result_status() - Get status of query result

# pg_lo_close

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_close — Close a large object

### Açıklama

function pg_lo_close(PgSql\Lob `$lob`): bool

pg_lo_close() closes a large object.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loclose().

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_close() example

    <?php
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $oid = pg_lo_create($database);
       echo "$oid\n";
       $handle = pg_lo_open($database, $oid, "w");
       echo "$handle\n";
       pg_lo_write($handle, "large object data");
       pg_lo_close($handle);
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_open() - Open a large object
- pg_lo_create() - Create a large object
- pg_lo_import() - Import a large object from file

# pg_lo_create

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_create — Create a large object

### Açıklama

function pg_lo_create(PgSql\Connection `$connection` = ?, mixed `$object_id` = ?): int
function pg_lo_create(mixed `$object_id`): int

pg_lo_create() creates a large object and returns the OID of the large object. PostgreSQL access modes `INV_READ` and `INV_WRITE` are not supported, the object is created always with both read and write access.

To use the large object interface, it is necessary to enclose it within a transaction block.

Instead of using the large object interface (which has no access controls and is cumbersome to use), try PostgreSQL's bytea column type and pg_escape_bytea().

> Bilginize:

> This function used to be called pg_locreate().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`object_id`

  If an `object_id` is given the function will try to create a large object with this id, else a free object id is assigned by the server.

### Dönen Değerler

A large object OID, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_create() example

    <?php
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $oid = pg_lo_create($database);
       echo "$oid\n";
       $handle = pg_lo_open($database, $oid, "w");
       echo "$handle\n";
       pg_lo_write($handle, "large object data");
       pg_lo_close($handle);
       pg_query($database, "commit");
    ?>

# pg_lo_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_export — Export a large object to file

### Açıklama

function pg_lo_export(PgSql\Connection `$connection` = ?, int `$oid`, string `$filename`): bool

pg_lo_export() takes a large object in a PostgreSQL database and saves its contents to a file on the local filesystem.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loexport().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`oid`

  The OID of the large object in the database.

`filename`

  The full path and file name of the file in which to write the large object on the client filesystem.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_export() example

    <?php
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $oid = pg_lo_create($database);
       $handle = pg_lo_open($database, $oid, "w");
       pg_lo_write($handle, "large object data");
       pg_lo_close($handle);
       pg_lo_export($database, $oid, '/tmp/lob.dat');
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_import() - Import a large object from file

# pg_lo_import

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_import — Import a large object from file

### Açıklama

function pg_lo_import(PgSql\Connection `$connection` = ?, string `$filename`, int|string `$oid` = ?): int|string|false

pg_lo_import() creates a new large object in the database using a file on the filesystem as its data source.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loimport().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`filename`

  The full path and file name of the file on the client filesystem from which to read the large object data.

`oid`

  If an `oid` is given the function will try to create a large object with this id, else a free object id is assigned by the server. The parameter relies on functionality that first appeared in PostgreSQL 8.1.

### Dönen Değerler

The OID of the newly created large object, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_import() example

    <?php
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $oid = pg_lo_import($database, '/tmp/lob.dat');
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_export() - Export a large object to file
- pg_lo_open() - Open a large object

# pg_lo_open

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_open — Open a large object

### Açıklama

function pg_lo_open(PgSql\Connection `$connection`, int `$oid`, string `$mode`): PgSql\Lob|false

pg_lo_open() opens a large object in the database and returns an PgSql\Lob instance so that it can be manipulated.

Uyarı

Do not close the database connection before closing the PgSql\Lob instance.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loopen().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`oid`

  The OID of the large object in the database.

`mode`

  Can be either "r" for read-only, "w" for write only or "rw" for read and write.

### Dönen Değerler

An PgSql\Lob instance, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns an PgSql\Lob instance now; previously, a resource was returned.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_open() example

    <?php
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $oid = pg_lo_create($database);
       echo "$oid\n";
       $handle = pg_lo_open($database, $oid, "w");
       echo "$handle\n";
       pg_lo_write($handle, "large object data");
       pg_lo_close($handle);
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_close() - Close a large object
- pg_lo_create() - Create a large object

# pg_lo_read

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_read — Read a large object

### Açıklama

function pg_lo_read(PgSql\Lob `$lob`, int `$length` = 8192): string|false

pg_lo_read() reads at most `length` bytes from a large object and returns it as a string.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loread().

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

`length`

  An optional maximum number of bytes to return.

### Dönen Değerler

A string containing `length` bytes from the large object, or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_read() example

    <?php
       $doc_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $doc_oid, "r");
       $data = pg_lo_read($handle, 50000);
       pg_query($database, "commit");
       echo $data;
    ?>

### Ayrıca Bakınız

- pg_lo_read_all() - Reads an entire large object and send straight to browser

# pg_lo_read_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_read_all — Reads an entire large object and send straight to browser

### Açıklama

function pg_lo_read_all(PgSql\Lob `$lob`): int

pg_lo_read_all() reads a large object and passes it straight through to the browser after sending all pending headers. Mainly intended for sending binary data like images or sound.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_loreadall().

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

### Dönen Değerler

Number of bytes read.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_read_all() example

    <?php
       header('Content-type: image/jpeg');
       $image_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $image_oid, "r");
       pg_lo_read_all($handle);
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_read() - Read a large object

# pg_lo_seek

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_seek — Seeks position within a large object

### Açıklama

function pg_lo_seek(PgSql\Lob `$lob`, int `$offset`, int `$whence` = `SEEK_CUR`): bool

pg_lo_seek() seeks a position within an PgSql\Lob instance.

To use the large object interface, it is necessary to enclose it within a transaction block.

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

`offset`

  The number of bytes to seek.

`whence`

  One of the constants `PGSQL_SEEK_SET` (seek from object start), `PGSQL_SEEK_CUR` (seek from current position) or `PGSQL_SEEK_END` (seek from object end) .

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_seek() example

    <?php
       $doc_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $doc_oid, "r");
       // Skip first 50000 bytes
       pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
       // Read the next 10000 bytes
       $data = pg_lo_read($handle, 10000);
       pg_query($database, "commit");
       echo $data;
    ?>

### Ayrıca Bakınız

- pg_lo_tell() - Returns current seek position a of large object

# pg_lo_tell

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_tell — Returns current seek position a of large object

### Açıklama

function pg_lo_tell(PgSql\Lob `$lob`): int

pg_lo_tell() returns the current position (offset from the beginning) of a large object.

To use the large object interface, it is necessary to enclose it within a transaction block.

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

### Dönen Değerler

The current seek offset (in number of bytes) from the beginning of the large object. If there is an error, the return value is negative.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_tell() example

    <?php
       $doc_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $doc_oid, "r");
       // Skip first 50000 bytes
       pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
       // See how far we've skipped
       $offset = pg_lo_tell($handle);
       echo "Seek position is: $offset";
       pg_query($database, "commit");
    ?>

Yukarıdaki örneğin çıktısı:

    Seek position is: 50000

### Ayrıca Bakınız

- pg_lo_seek() - Seeks position within a large object

# pg_lo_truncate

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

pg_lo_truncate — Truncates a large object

### Açıklama

function pg_lo_truncate(PgSql\Lob `$lob`, int `$size`): bool

pg_lo_truncate() truncates an PgSql\Lob instance.

To use the large object interface, it is necessary to enclose it within a transaction block.

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

`size`

  The number of bytes to truncate.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_truncate() example

    <?php
       $doc_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $doc_oid, "r");
       // Truncate to 0
       pg_lo_truncate($handle, 0);
       pg_query($database, "commit");
       echo $data;
    ?>

### Ayrıca Bakınız

- pg_lo_tell() - Returns current seek position a of large object

# pg_lo_unlink

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_unlink — Delete a large object

### Açıklama

function pg_lo_unlink(PgSql\Connection `$connection`, int `$oid`): bool

pg_lo_unlink() deletes a large object with the `oid`. Başarı durumunda `true`, başarısızlık durumunda `false` döner.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_lounlink().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`oid`

  The OID of the large object in the database.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_lo_unlink() example

    <?php
       // OID of the large object to delete
       $doc_oid = 189762345;
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       pg_lo_unlink($database, $doc_oid);
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_create() - Create a large object
- pg_lo_import() - Import a large object from file

# pg_lo_write

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_write — Write to a large object

### Açıklama

function pg_lo_write(PgSql\Lob `$lob`, string `$data`, ?int `$length` = `null`): int|false

pg_lo_write() writes data into a large object at the current seek position.

To use the large object interface, it is necessary to enclose it within a transaction block.

> Bilginize:

> This function used to be called pg_lowrite().

### Bağımsız Değişkenler

`lob`

  pg_lo_open()işlevinden dönen PgSql\Lob nesnesi.

`data`

  The data to be written to the large object. If `length` is an int and is less than the length of `data`, only `length` bytes will be written.

`length`

  An optional maximum number of bytes to write. Must be greater than zero and no greater than the length of `data`. Defaults to the length of `data`.

### Dönen Değerler

The number of bytes written to the large object, or `false` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `lob` bağımsız değişkeni artık PgSql\Lob nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `length` is now nullable.

### Örnekler

Örnek 1 pg_lo_write() example

    <?php
       $doc_oid = 189762345;
       $data = "This will overwrite the start of the large object.";
       $database = pg_connect("dbname=jacarta");
       pg_query($database, "begin");
       $handle = pg_lo_open($database, $doc_oid, "w");
       $data = pg_lo_write($handle, $data);
       pg_query($database, "commit");
    ?>

### Ayrıca Bakınız

- pg_lo_create() - Create a large object
- pg_lo_open() - Open a large object

# pg_meta_data

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_meta_data — Get meta data for table

### Açıklama

function pg_meta_data(PgSql\Connection `$connection`, string `$table_name`, bool `$extended` = `false`): array|false

pg_meta_data() returns table definition for `table_name` as an array.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  The name of the table.

`extended`

  Flag for returning extended meta data. Default to `false`.

### Dönen Değerler

An array of the table definition, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Getting table metadata

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      $meta = pg_meta_data($dbconn, 'authors');
      if (is_array($meta)) {
          echo '<pre>';
          var_dump($meta);
          echo '</pre>';
      }
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
    ["author"]=>
    array(5) {
      ["num"]=>
      int(1)
      ["type"]=>
      string(7) "varchar"
      ["len"]=>
      int(-1)
      ["not null"]=>
      bool(false)
      ["has default"]=>
      bool(false)
    }
    ["year"]=>
    array(5) {
      ["num"]=>
      int(2)
      ["type"]=>
      string(4) "int2"
      ["len"]=>
      int(2)
      ["not null"]=>
      bool(false)
      ["has default"]=>
      bool(false)
    }
    ["title"]=>
    array(5) {
      ["num"]=>
      int(3)
      ["type"]=>
      string(7) "varchar"
      ["len"]=>
      int(-1)
      ["not null"]=>
      bool(false)
      ["has default"]=>
      bool(false)
    }
    }

### Ayrıca Bakınız

- pg_convert() - Convert associative array values into forms suitable for SQL statements

# pg_num_fields

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_num_fields — Returns the number of fields in a result

### Açıklama

function pg_num_fields(PgSql\Result `$result`): int

pg_num_fields() returns the number of fields (columns) in the PgSql\Result instance.

> Bilginize:

> This function used to be called pg_numfields().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

The number of fields (columns) in the result. On error, -1 is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_num_fields() example

    <?php
    $result = pg_query($conn, "SELECT 1, 2");

    $num = pg_num_fields($result);

    echo $num . " field(s) returned.\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2 field(s) returned.

### Ayrıca Bakınız

- pg_num_rows() - Returns the number of rows in a result
- pg_affected_rows() - Returns number of affected records (tuples)

# pg_num_rows

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_num_rows — Returns the number of rows in a result

### Açıklama

function pg_num_rows(PgSql\Result `$result`): int

pg_num_rows() will return the number of rows in an PgSql\Result instance.

> Bilginize:

> This function used to be called pg_numrows().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

The number of rows in the result. On error, `-1` is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_num_rows() example

    <?php
    $result = pg_query($conn, "SELECT 1");

    $rows = pg_num_rows($result);

    echo $rows . " row(s) returned.\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1 row(s) returned.

### Ayrıca Bakınız

- pg_num_fields() - Returns the number of fields in a result
- pg_affected_rows() - Returns number of affected records (tuples)

# pg_options

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_options — Get the options associated with the connection

### Açıklama

function pg_options(?PgSql\Connection `$connection` = `null`): string

pg_options() will return a string containing the options specified on the given PostgreSQL `connection` instance.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the `connection` options.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_options() example

    <?php
       $pgsql_conn = pg_connect("dbname=mark host=localhost");
       echo pg_options($pgsql_conn);
    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection

# pg_parameter_status

(PHP 5, PHP 7, PHP 8)

pg_parameter_status — Looks up a current parameter setting of the server

### Açıklama

function pg_parameter_status(PgSql\Connection `$connection` = ?, string `$name`): string|false

Looks up a current parameter setting of the server.

Certain parameter values are reported by the server automatically at connection startup or whenever their values change. pg_parameter_status() can be used to interrogate these settings. It returns the current value of a parameter if known, or `false` if the parameter is not known.

Parameters reported by the server include `server_version`, `server_encoding`, `client_encoding`, `is_superuser`, `session_authorization`, `DateStyle`, `TimeZone`, and `integer_datetimes`. Note that `server_version`, `server_encoding` and `integer_datetimes` cannot change after PostgreSQL startup.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`name`

  Possible `name` values include `server_version`, `server_encoding`, `client_encoding`, `is_superuser`, `session_authorization`, `DateStyle`, `TimeZone`, and `integer_datetimes`. Note that this value is case-sensitive.

### Dönen Değerler

A string containing the value of the parameter, `false` on failure or invalid `name`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_parameter_status() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      echo "Server encoding: ", pg_parameter_status($dbconn, "server_encoding");
    ?>

Yukarıdaki örneğin çıktısı:

    Server encoding: SQL_ASCII

# pg_pconnect

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_pconnect — Open a persistent PostgreSQL connection

### Açıklama

function pg_pconnect(string `$connection_string`, int `$flags` = 0): PgSql\Connection|false

pg_pconnect() opens a connection to a PostgreSQL database. It returns a PgSql\Connection instance that is needed by other PostgreSQL functions.

If a second call is made to pg_pconnect() with the same `connection_string` as an existing connection, the existing connection will be returned unless you pass `PGSQL_CONNECT_FORCE_NEW` as `flags`.

To enable persistent connections, the pgsql.allow_persistent php.ini directive must be set to `"On"` (which is the default). The maximum number of persistent connections can be defined with the pgsql.max_persistent php.ini directive (defaults to `-1` for no limit). The total number of connections can be set with the pgsql.max_links php.ini directive.

pg_close() will not close persistent links generated by pg_pconnect().

### Bağımsız Değişkenler

`connection_string`

  The `connection_string` can be empty to use all default parameters, or it can contain one or more parameter settings separated by whitespace. Each parameter setting is in the form `keyword = value`. Spaces around the equal sign are optional. To write an empty value or a value containing spaces, surround it with single quotes, e.g., `keyword = 'a value'`. Single quotes and backslashes within the value must be escaped with a backslash, i.e., `\'` and `\\`.

  The currently recognized parameter keywords are: `host`, `hostaddr`, `port`, `dbname`, `user`, `password`, `connect_timeout`, `options`, `tty` (ignored), `sslmode`, `requiressl` (deprecated in favor of `sslmode`), and `service`. Which of these arguments exist depends on the PostgreSQL version.

`flags`

  If `PGSQL_CONNECT_FORCE_NEW` is passed, then a new connection is created, even if the `connection_string` is identical to an existing connection.

### Dönen Değerler

Returns a PgSql\Connection instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns a PgSql\Connection instance now; previously, a resource was returned.

### Örnekler

Örnek 1 Using pg_pconnect()

    <?php
    // Connect to a database named "mary"
    $dbconn = pg_pconnect("dbname=mary");

    // Connect to a database named "mary" on "localhost" at port "5432"
    $dbconn2 = pg_pconnect("host=localhost port=5432 dbname=mary");

    // Connect to a database named "mary" on the host "sheep" with a username and password
    $dbconn3 = pg_pconnect("host=sheep port=5432 dbname=mary user=lamb password=foo");

    // Connect to a database named "test" on the host "sheep" with a username and password
    $conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
    $dbconn4 = pg_pconnect($conn_string);
    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection
- Persistent Database Connections

# pg_ping

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_ping — Ping database connection

### Açıklama

function pg_ping(?PgSql\Connection `$connection` = `null`): bool

pg_ping() pings a database connection and tries to reconnect it if it is broken.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_ping() example

    <?php
    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    if (!pg_ping($conn))
      die("Connection is broken\n");
    ?>

### Ayrıca Bakınız

- pg_connection_status() - Get connection status
- pg_connection_reset() - Reset connection (reconnect)

# pg_port

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_port — Return the port number associated with the connection

### Açıklama

function pg_port(?PgSql\Connection `$connection` = `null`): string

pg_port() returns the port number that the given PostgreSQL `connection` instance is connected to.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the port number of the database server the `connection` is to, or empty string on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_port() example

    <?php
    $pgsql_conn = pg_connect("dbname=mark host=localhost");

    if ($pgsql_conn) {
       print "Successfully connected to port: " . pg_port($pgsql_conn) . "<br/>\n";
    } else {
       print pg_last_error($pgsql_conn);
       exit;
    }
    ?>

# pg_prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_prepare — Submits a request to the server to create a prepared statement with the given parameters, and waits for completion

### Açıklama

function pg_prepare(PgSql\Connection `$connection` = ?, string `$statement_name`, string `$query`): PgSql\Result|false

pg_prepare() creates a prepared statement for later execution with pg_execute() or pg_send_execute(). This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed.

The function creates a prepared statement named `statement_name` from the `query` string, which must contain a single SQL command. `statement_name` may be `""` to create an unnamed statement, in which case any pre-existing unnamed statement is automatically replaced; otherwise it is an error if the statement name is already defined in the current session. If any parameters are used, they are referred to in the `query` as `$1`, `$2`, etc.

Prepared statements for use with pg_prepare() can also be created by executing SQL `PREPARE` statements. (But pg_prepare() is more flexible since it does not require parameter types to be pre-specified.) Also, although there is no PHP function for deleting a prepared statement, the SQL `DEALLOCATE` statement can be used for that purpose.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`statement_name`

  The name to give the prepared statement. Must be unique per-connection. If `""` is specified, then an unnamed statement is created, overwriting any previously defined unnamed statement.

`query`

  The parameterized SQL statement. Must contain only a single statement (multiple statements separated by semi-colons are not allowed). If any parameters are used, they are referred to as `$1`, `$2`, etc.

### Dönen Değerler

An PgSql\Result instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_prepare()

    <?php

    // Connect to a database named "mary"
    $dbconn = pg_connect("dbname=mary");

    // Prepare a query for execution
    $result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');

    // Execute the prepared query.  Note that it is not necessary to escape
    // the string "Joe's Widgets" in any way
    $result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));

    // Execute the same prepared query, this time with a different parameter
    $result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));

    ?>

### Ayrıca Bakınız

- pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result
- pg_send_execute() - Sends a request to execute a prepared statement with given parameters, without waiting for the result(s)

# pg_put_copy_data

(PHP 8 >= 8.4.0)

pg_put_copy_data — Send data to the server during a COPY operation

### Açıklama

function pg_put_copy_data(PgSql\Connection `$connection`, string `$cmd`): int

Sends data to the server during a `COPY FROM STDIN` operation. A `COPY` command must have been issued via pg_query() before calling this function.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`cmd`
  The data to send to the server. A final newline is automatically added if not present. The data must be formatted according to the `COPY` command's format.

### Dönen Değerler

Returns `1` on success, `0` if the data could not be queued (only in non-blocking mode), or `-1` on error.

### Ayrıca Bakınız

- pg_put_copy_end() - Signal the completion of a COPY operation to the server
- pg_query() - Execute a query

# pg_put_copy_end

(PHP 8 >= 8.4.0)

pg_put_copy_end — Signal the completion of a COPY operation to the server

### Açıklama

function pg_put_copy_end(PgSql\Connection `$connection`, ?string `$error` = `null`): int

Sends an end-of-data indication to the server during a `COPY FROM STDIN` operation.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`error`
  If not `null`, the `COPY` operation is forced to fail with the given error message.

### Dönen Değerler

Returns `1` on success, `0` if the data could not be queued (only in non-blocking mode), or `-1` on error.

### Ayrıca Bakınız

- pg_put_copy_data() - Send data to the server during a COPY operation
- pg_query() - Execute a query

# pg_put_line

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pg_put_line — Send a NULL-terminated string to PostgreSQL backend

### Açıklama

function pg_put_line(PgSql\Connection `$connection` = ?, string `$query`): bool

pg_put_line() sends a NULL-terminated string to the PostgreSQL backend server. This is needed in conjunction with PostgreSQL's `COPY FROM` command.

`COPY` is a high-speed data loading interface supported by PostgreSQL. Data is passed in without being parsed, and in a single transaction.

An alternative to using raw pg_put_line() commands is to use pg_copy_from(). This is a far simpler interface.

> Bilginize:

> The application must explicitly send the two characters "\." on the last line to indicate to the backend that it has finished sending its data, before issuing pg_end_copy().

Uyarı

Use of the pg_put_line() causes most large object operations, including pg_lo_read() and pg_lo_tell(), to subsequently fail. You can use pg_copy_from() and pg_copy_to() instead.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`query`

  A line of text to be sent directly to the PostgreSQL backend. A `NULL` terminator is added automatically.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_put_line() example

    <?php
      $conn = pg_pconnect("dbname=foo");
      pg_query($conn, "create table bar (a int4, b char(16), d float8)");
      pg_query($conn, "copy bar from stdin");
      pg_put_line($conn, "3\thello world\t4.5\n");
      pg_put_line($conn, "4\tgoodbye world\t7.11\n");
      pg_put_line($conn, "\\.\n");
      pg_end_copy($conn);
    ?>

### Ayrıca Bakınız

- pg_end_copy() - Sync with PostgreSQL backend

# pg_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_query — Execute a query

### Açıklama

function pg_query(PgSql\Connection `$connection` = ?, string `$query`): PgSql\Result|false

pg_query() executes the `query` on the specified database `connection`. pg_query_params() should be preferred in most cases.

If an error occurs, and `false` is returned, details of the error can be retrieved using the pg_last_error() function if the connection is valid.

> Bilginize: Although `connection` can be omitted, it is not recommended, since it can be the cause of hard to find bugs in scripts.

> Bilginize:

> This function used to be called pg_exec(). pg_exec() is still available for compatibility reasons, but users are encouraged to use the newer name.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`query`

  The SQL statement or statements to be executed. When multiple statements are passed to the function, they are automatically executed as one transaction, unless there are explicit BEGIN/COMMIT commands included in the query string. However, using multiple transactions in one function call is not recommended.

  Uyarı

  String interpolation of user-supplied data is extremely dangerous and is likely to lead to SQL injection vulnerabilities. In most cases pg_query_params() should be preferred, passing user-supplied values as parameters rather than substituting them into the query string.

  Any user-supplied data substituted directly into a query string should be properly escaped.

### Dönen Değerler

An PgSql\Result instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_query() example

    <?php

    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    while ($row = pg_fetch_row($result)) {
      echo "Author: $row[0]  E-mail: $row[1]";
      echo "<br />\n";
    }

    ?>

Örnek 2 Using pg_query() with multiple statements

    <?php

    $conn = pg_pconnect("dbname=publisher");

    // these statements will be executed as one transaction

    $query = "UPDATE authors SET author=UPPER(author) WHERE id=1;";
    $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;";
    $query .= "UPDATE authors SET author=NULL WHERE id=3;";

    pg_query($conn, $query);

    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection
- pg_pconnect() - Open a persistent PostgreSQL connection
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_object() - Fetch a row as an object
- pg_num_rows() - Returns the number of rows in a result
- pg_affected_rows() - Returns number of affected records (tuples)

# pg_query_params

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text

### Açıklama

function pg_query_params(PgSql\Connection `$connection` = ?, string `$query`, array `$params`): PgSql\Result|false

Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.

pg_query_params() is like pg_query(), but offers additional functionality: parameter values can be specified separately from the command string proper.

If parameters are used, they are referred to in the `query` string as $1, $2, etc. The same parameter may appear more than once in the `query`; the same value will be used in that case. `params` specifies the actual values of the parameters. A `null` value in this array means the corresponding parameter is SQL `NULL`.

The primary advantage of pg_query_params() over pg_query() is that parameter values may be separated from the `query` string, thus avoiding the need for tedious and error-prone quoting and escaping. Unlike pg_query(), pg_query_params() allows at most one SQL command in the given string. (There can be semicolons in it, but not more than one nonempty command.)

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`query`

  The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

  User-supplied values should always be passed as parameters, not interpolated into the query string, where they form possible SQL injection attack vectors and introduce bugs when handling data containing quotes. If for some reason you cannot use a parameter, ensure that interpolated values are properly escaped.

`params`

  An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

  Values intended for `bytea` fields are not supported as parameters. Use pg_escape_bytea() instead, or use the large object functions.

### Dönen Değerler

An PgSql\Result instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık PgSql\Result nesnesi dönüyor; evvelce bir özkaynak dönerdi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_query_params()

    <?php
    // Connect to a database named "mary"
    $dbconn = pg_connect("dbname=mary");

    // Find all shops named Joe's Widgets.  Note that it is not necessary to
    // escape "Joe's Widgets"
    $result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));

    // Compare against just using pg_query
    $str = pg_escape_string("Joe's Widgets");
    $result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");

    ?>

### Ayrıca Bakınız

- pg_query() - Execute a query

# pg_result_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_result_error — Get error message associated with result

### Açıklama

function pg_result_error(PgSql\Result `$result`): string|false

pg_result_error() returns any error message associated with the `result` instance. Therefore, the user has a better chance of getting the correct error message than with pg_last_error().

The function pg_result_error_field() can give much greater detail on result errors than pg_result_error().

Because pg_query() returns `false` if the query fails, you must use pg_send_query() and pg_get_result() to get the result handle.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

Returns a string. Returns empty string if there is no error. If there is an error associated with the `result` parameter, returns `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_result_error() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from doesnotexist;");
      }

      $res1 = pg_get_result($dbconn);
      echo pg_result_error($res1);
    ?>

### Ayrıca Bakınız

- pg_result_error_field() - Returns an individual field of an error report
- pg_query() - Execute a query
- pg_send_query() - Sends asynchronous query
- pg_get_result() - Get asynchronous query result
- pg_last_error() - Get the last error message string of a connection
- pg_last_notice() - Returns the last notice message from PostgreSQL server

# pg_result_error_field

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_result_error_field — Returns an individual field of an error report

### Açıklama

function pg_result_error_field(PgSql\Result `$result`, int `$field_code`): string|false|null

pg_result_error_field() returns one of the detailed error message fields associated with `result` instance. The error field is specified by the `field_code`.

Because pg_query() and pg_query_params() return `false` if the query fails, you must use pg_send_query() and pg_get_result() to get the result handle.

If you need to get additional error information from failed pg_query() queries, use pg_set_error_verbosity() and pg_last_error() and then parse the result.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`field_code`

  Possible `field_code` values are: `PGSQL_DIAG_SEVERITY`, `PGSQL_DIAG_SQLSTATE`, `PGSQL_DIAG_MESSAGE_PRIMARY`, `PGSQL_DIAG_MESSAGE_DETAIL`, `PGSQL_DIAG_MESSAGE_HINT`, `PGSQL_DIAG_STATEMENT_POSITION`, `PGSQL_DIAG_INTERNAL_POSITION`, `PGSQL_DIAG_INTERNAL_QUERY`, `PGSQL_DIAG_CONTEXT`, `PGSQL_DIAG_SOURCE_FILE`, `PGSQL_DIAG_SOURCE_LINE` or `PGSQL_DIAG_SOURCE_FUNCTION`.

### Dönen Değerler

A string containing the contents of the error field, `null` if the field does not exist or `false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_result_error_field() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from doesnotexist;");
      }

      $res1 = pg_get_result($dbconn);
      echo pg_result_error_field($res1, PGSQL_DIAG_SQLSTATE);
    ?>

### Ayrıca Bakınız

- pg_result_error() - Get error message associated with result

# pg_result_memory_size

(PHP 8 >= 8.4.0)

pg_result_memory_size — Returns the amount of memory allocated for a query result

### Açıklama

function pg_result_memory_size(PgSql\Result `$result`): int

Returns the amount of memory, in bytes, allocated to the specified query result PgSql\Result instance. This value is the same amount that would be freed by pg_free_result().

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

### Dönen Değerler

Returns the memory amount in bytes.

### Örnekler

Örnek 1 pg_result_memory_size() example

    <?php
    $db = pg_connect("dbname=users user=me");

    $res = pg_query($db, 'SELECT 1');

    $size = pg_result_memory_size($res);

    var_dump($size);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(3288)

### Ayrıca Bakınız

- pg_free_result() - Free result memory

# pg_result_seek

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_result_seek — Set internal row offset in result instance

### Açıklama

function pg_result_seek(PgSql\Result `$result`, int `$row`): bool

pg_result_seek() sets the internal row offset in the `result` instance.

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`row`

  Row to move the internal offset to in the PgSql\Result instance. Rows are numbered starting from zero.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_result_seek() example

    <?php

    // Connect to the database
    $conn = pg_pconnect("dbname=publisher");

    // Execute a query
    $result = pg_query($conn, "SELECT author, email FROM authors");

    // Seek to the 3rd row (assuming there are 3 rows)
    pg_result_seek($result, 2);

    // Fetch the 3rd row
    $row = pg_fetch_row($result);

    ?>

### Ayrıca Bakınız

- pg_fetch_row() - Get a row as an enumerated array
- pg_fetch_assoc() - Fetch a row as an associative array
- pg_fetch_array() - Fetch a row as an array
- pg_fetch_object() - Fetch a row as an object
- pg_fetch_result() - Returns values from a result instance

# pg_result_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_result_status — Get status of query result

### Açıklama

function pg_result_status(PgSql\Result `$result`, int `$mode` = `PGSQL_STATUS_LONG`): string|int

pg_result_status() returns the status of the PgSql\Result instance, or the PostgreSQL command completion tag associated with the result

### Bağımsız Değişkenler

`result`

  pg_query(), pg_query_params() veya pg_execute() işlevinden dönen PgSql\Result nesnesi.

`mode`

  Either `PGSQL_STATUS_LONG` to return the numeric status of the `result`, or `PGSQL_STATUS_STRING` to return the command tag of the `result`. If not specified, `PGSQL_STATUS_LONG` is the default.

### Dönen Değerler

Possible return values are `PGSQL_EMPTY_QUERY`, `PGSQL_COMMAND_OK`, `PGSQL_TUPLES_OK`, `PGSQL_TUPLES_CHUNK`, `PGSQL_COPY_OUT`, `PGSQL_COPY_IN`, `PGSQL_BAD_RESPONSE`, `PGSQL_NONFATAL_ERROR` and `PGSQL_FATAL_ERROR` if `PGSQL_STATUS_LONG` is specified. Otherwise, a string containing the PostgreSQL command tag is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `sonuç` bağımsız değişkeni artık PgSql\Result nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_result_status() example

    <?php

    // Connect to the database
    $conn = pg_pconnect("dbname=publisher");

    // Execute a COPY
    $result = pg_query($conn, "COPY authors FROM STDIN;");

    // Get the result status
    $status = pg_result_status($result);

    // Determine status
    if ($status == PGSQL_COPY_IN)
       echo "Copy began.";
    else
       echo "Copy failed.";

    ?>

Yukarıdaki örneğin çıktısı:

    Copy began.

### Ayrıca Bakınız

- pg_connection_status() - Get connection status

# pg_select

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_select — Select records

### Açıklama

function pg_select(
PgSql\Connection `$connection`,
string `$table_name`,
array `$conditions` = [],
int `$flags` = `PGSQL_DML_EXEC`,
int `$mode` = `PGSQL_ASSOC`
): array|string|false

pg_select() selects records specified by `conditions` which has `field=>value`. For a successful query, it returns an array containing all records and fields that match the condition specified by `conditions`.

If `flags` is set, pg_convert() is applied to `conditions` with the specified flags.

If `mode` is set, the return value will be in the form of an array with `PGSQL_NUM`, an associative array with `PGSQL_ASSOC` (default) or both with `PGSQL_BOTH`.

By default pg_select() passes raw values. Values must be escaped or PGSQL_DML_ESCAPE option must be specified. PGSQL_DML_ESCAPE quotes and escapes parameters/identifiers. Therefore, table/column names became case sensitive.

Note that neither escape nor prepared query can protect LIKE query, JSON, Array, Regex, etc. These parameters should be handled according to their contexts. i.e. Escape/validate values.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table from which to select rows.

`conditions`

  An array whose keys are field names in the table `table_name`, and whose values are the conditions that a row must meet to be retrieved. As of PHP 8.4.0, when an empty array is provided, no conditions will apply. Previously, the function failed with an empty `conditions` argument.

`flags`

  Any number of `PGSQL_CONV_FORCE_NULL`, `PGSQL_DML_NO_CONV`, `PGSQL_DML_ESCAPE`, `PGSQL_DML_EXEC`, `PGSQL_DML_ASYNC` or `PGSQL_DML_STRING` combined. If `PGSQL_DML_STRING` is part of the `flags` then the query string is returned. When `PGSQL_DML_NO_CONV` or `PGSQL_DML_ESCAPE` is set, it does not call pg_convert() internally.

`mode`

  Any number of `PGSQL_ASSOC`, `PGSQL_NUM` or `PGSQL_BOTH` If `PGSQL_ASSOC` is set the return value will be an associative array, with `PGSQL_NUM` the return value will be an array, and with `PGSQL_BOTH` the return value will be both an associative and numerically indexed array.

### Dönen Değerler

Returns string if `PGSQL_DML_STRING` is passed via `flags`, otherwise it returns an array on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | `conditions` is now optional.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
7.1.0 | The `mode` parameter was added.

### Örnekler

Örnek 1 pg_select() example

    <?php
      $db = pg_connect('dbname=foo');
      // This is safe somewhat, since all values are escaped.
      // However PostgreSQL supports JSON/Array. These are not
      // safe by neither escape nor prepared query.
      $rec = pg_select($db, 'post_log', $_POST, PG_DML_ESCAPE);
      if ($rec) {
          echo "Records selected\n";
          var_dump($rec);
      } else {
          echo "User must have sent wrong inputs\n";
      }
    ?>

### Ayrıca Bakınız

- pg_convert() - Convert associative array values into forms suitable for SQL statements

# pg_send_execute

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s)

### Açıklama

function pg_send_execute(PgSql\Connection `$connection`, string `$statement_name`, array `$params`): int|bool

Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).

This is similar to pg_send_query_params(), but the command to be executed is specified by naming a previously-prepared statement, instead of giving a query string. The function's parameters are handled identically to pg_execute(). Like pg_execute(), it will not work on pre-7.4 versions of PostgreSQL.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`statement_name`

  The name of the prepared statement to execute. If "" is specified, then the unnamed statement is executed. The name must have been previously prepared using pg_prepare(), pg_send_prepare() or a `PREPARE` SQL command.

`params`

  An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

### Dönen Değerler

Returns `true` on success, `false` or `0` on failure. Use pg_get_result() to determine the query result.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_send_execute()

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Prepare a query for execution
      if (!pg_connection_busy($dbconn)) {
        pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
        $res1 = pg_get_result($dbconn);
      }

      // Execute the prepared query.  Note that it is not necessary to escape
      // the string "Joe's Widgets" in any way
      if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
        $res2 = pg_get_result($dbconn);
      }

      // Execute the same prepared query, this time with a different parameter
      if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
        $res3 = pg_get_result($dbconn);
      }

    ?>

### Ayrıca Bakınız

- pg_prepare() - Submits a request to the server to create a prepared statement with the given parameters, and waits for completion
- pg_send_prepare() - Sends a request to create a prepared statement with the given parameters, without waiting for completion
- pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result

# pg_send_prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion

### Açıklama

function pg_send_prepare(PgSql\Connection `$connection`, string `$statement_name`, string `$query`): int|bool

Sends a request to create a prepared statement with the given parameters, without waiting for completion.

This is an asynchronous version of pg_prepare(): it returns `true` if it was able to dispatch the request, and `false` if not. After a successful call, call pg_get_result() to determine whether the server successfully created the prepared statement. The function's parameters are handled identically to pg_prepare(). Like pg_prepare(), it will not work on pre-7.4 versions of PostgreSQL.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`statement_name`

  The name to give the prepared statement. Must be unique per-connection. If "" is specified, then an unnamed statement is created, overwriting any previously defined unnamed statement.

`query`

  The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

### Dönen Değerler

Returns `true` on success, `false` or `0` on failure. Use pg_get_result() to determine the query result.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_send_prepare()

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Prepare a query for execution
      if (!pg_connection_busy($dbconn)) {
        pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
        $res1 = pg_get_result($dbconn);
      }

      // Execute the prepared query.  Note that it is not necessary to escape
      // the string "Joe's Widgets" in any way
      if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
        $res2 = pg_get_result($dbconn);
      }

      // Execute the same prepared query, this time with a different parameter
      if (!pg_connection_busy($dbconn)) {
        pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
        $res3 = pg_get_result($dbconn);
      }

    ?>

### Ayrıca Bakınız

- pg_connect() - Open a PostgreSQL connection
- pg_pconnect() - Open a persistent PostgreSQL connection
- pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result
- pg_send_execute() - Sends a request to execute a prepared statement with given parameters, without waiting for the result(s)
- pg_send_query_params() - Submits a command and separate parameters to the server without waiting for the result(s)

# pg_send_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_send_query — Sends asynchronous query

### Açıklama

function pg_send_query(PgSql\Connection `$connection`, string `$query`): int|bool

pg_send_query() sends a query or queries asynchronously to the `connection`. Unlike pg_query(), it can send multiple queries at once to PostgreSQL and get the results one by one using pg_get_result().

Script execution is not blocked while the queries are executing. Use pg_connection_busy() to check if the connection is busy (i.e. the query is executing). Queries may be cancelled using pg_cancel_query().

Although the user can send multiple queries at once, multiple queries cannot be sent over a busy connection. If a query is sent while the connection is busy, it waits until the last query is finished and discards all its results.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`query`

  The SQL statement or statements to be executed.

  Data inside the query should be properly escaped.

### Dönen Değerler

Returns `true` on success, `false` or `0` on failure. Use pg_get_result() to determine the query result.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_send_query() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from authors; select count(*) from authors;");
      }

      $res1 = pg_get_result($dbconn);
      echo "First call to pg_get_result(): $res1\n";
      $rows1 = pg_num_rows($res1);
      echo "$res1 has $rows1 records\n\n";

      $res2 = pg_get_result($dbconn);
      echo "Second call to pg_get_result(): $res2\n";
      $rows2 = pg_num_rows($res2);
      echo "$res2 has $rows2 records\n";
    ?>

Yukarıdaki örneğin çıktısı:

    First call to pg_get_result(): Resource id #3
    Resource id #3 has 3 records

    Second call to pg_get_result(): Resource id #4
    Resource id #4 has 1 records

### Ayrıca Bakınız

- pg_query() - Execute a query
- pg_cancel_query() - Cancel an asynchronous query
- pg_get_result() - Get asynchronous query result
- pg_connection_busy() - Get connection is busy or not

# pg_send_query_params

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s)

### Açıklama

function pg_send_query_params(PgSql\Connection `$connection`, string `$query`, array `$params`): int|bool

Submits a command and separate parameters to the server without waiting for the result(s).

This is equivalent to pg_send_query() except that query parameters can be specified separately from the `query` string. The function's parameters are handled identically to pg_query_params(). Like pg_query_params(), it will not work on pre-7.4 PostgreSQL connections, and it allows only one command in the query string.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`query`

  The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

`params`

  An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

### Dönen Değerler

Returns `true` on success, `false` or `0` on failure. Use pg_get_result() to determine the query result.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 Using pg_send_query_params()

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      // Using parameters.  Note that it is not necessary to quote or escape
      // the parameter.
      pg_send_query_params($dbconn, 'select count(*) from authors where city = $1', array('Perth'));

      // Compare against basic pg_send_query usage
      $str = pg_escape_string('Perth');
      pg_send_query($dbconn, "select count(*) from authors where city = '{$str}'");
    ?>

### Ayrıca Bakınız

- pg_send_query() - Sends asynchronous query

# pg_set_chunked_rows_size

(PHP 8 >= 8.4.0)

pg_set_chunked_rows_size — Set the query results to be retrieved in chunk mode

### Açıklama

function pg_set_chunked_rows_size(PgSql\Connection `$connection`, int `$size`): bool

Set the query results to be retrieved in chunk mode. The query results returned afterward will be divided into multiple chunks, each containing up to `size` rows. This function must be called before retrieving results with pg_get_result(). This function is only available when libpq is version 17 or higher.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`size`
  The number of rows to be retrieved in each chunk.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If `size` is less than `1`, a ValueError will be thrown.

### Örnekler

Örnek 1 pg_result_memory_size() example

    <?php

    $conn = pg_connect($conn_str);

    for ($i = 0; $i < 10; $i ++) {
      pg_query($conn, "INSERT INTO users DEFAULT VALUES");
    }

    pg_send_query($conn, "SELECT * FROM users");
    pg_set_chunked_rows_size($conn, 1);

    $result = pg_get_result($conn);
    var_dump(pg_num_rows($result));

    // No effect after the result is retrieved
    var_dump(pg_set_chunked_rows_size($conn, 10));

Yukarıdaki örneğin çıktısı:

    int(1)
    bool(false)

### Ayrıca Bakınız

- pg_get_result() - Get asynchronous query result
- pg_result_status() - Get status of query result

# pg_set_client_encoding

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pg_set_client_encoding — Set the client encoding

### Açıklama

function pg_set_client_encoding(PgSql\Connection `$connection` = ?, string `$encoding`): int

pg_set_client_encoding() sets the client encoding and returns 0 if success or -1 if error.

PostgreSQL will automatically convert data in the backend database encoding into the frontend encoding.

> Bilginize:

> The function used to be called pg_setclientencoding().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`encoding`

  The required client encoding. One of `SQL_ASCII`, `EUC_JP`, `EUC_CN`, `EUC_KR`, `EUC_TW`, `UNICODE`, `MULE_INTERNAL`, `LATINX` (X=1...9), `KOI8`, `WIN`, `ALT`, `SJIS`, `BIG5` or `WIN1250`.

  The exact list of available encodings depends on your PostgreSQL version, so check your PostgreSQL manual for a more specific list.

### Dönen Değerler

Returns `0` on success or `-1` on error.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_set_client_encoding() example

    <?php

    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    // Set the client encoding to UNICODE.  Data will be automatically
    // converted from the backend encoding to the frontend.
    pg_set_client_encoding($conn, "UNICODE");

    $result = pg_query($conn, "SELECT author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    // Write out UTF-8 data
    while ($row = pg_fetch_row($result)) {
      echo "Author: $row[0]  E-mail: $row[1]";
      echo "<br />\n";
    }

    ?>

### Ayrıca Bakınız

- pg_client_encoding() - Gets the client encoding

# pg_set_error_context_visibility

(PHP 8 >= 8.3.0)

pg_set_error_context_visibility — Determines the visibility of the context's error messages returned by pg_last_error() and pg_result_error()

### Açıklama

function pg_set_error_context_visibility(PgSql\Connection `$connection`, int `$visibility`): int

Determines the visibility of the context's error messages returned by pg_last_error() and pg_result_error()

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`visibility`

  The required visibility: `PGSQL_SHOW_CONTEXT_NEVER`, `PGSQL_SHOW_CONTEXT_ERRORS` or `PGSQL_SHOW_CONTEXT_ALWAYS`.

### Dönen Değerler

The previous visibility level: `PGSQL_SHOW_CONTEXT_NEVER`, `PGSQL_SHOW_CONTEXT_ERRORS` or `PGSQL_SHOW_CONTEXT_ALWAYS`.

### Örnekler

Örnek 1 pg_set_error_context_visibility() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from doesnotexist;");
      }

      pg_set_error_context_visibility($dbconn, PGSQL_SHOW_CONTEXT_ALWAYS);
      $res1 = pg_get_result($dbconn);
      echo pg_result_error($res1);
    ?>

### Ayrıca Bakınız

- pg_last_error() - Get the last error message string of a connection
- pg_result_error() - Get error message associated with result

# pg_set_error_verbosity

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error() and pg_result_error()

### Açıklama

function pg_set_error_verbosity(PgSql\Connection `$connection` = ?, int `$verbosity`): int|false

Determines the verbosity of messages returned by pg_last_error() and pg_result_error().

pg_set_error_verbosity() sets the verbosity mode, returning the connection's previous setting. In `PGSQL_ERRORS_TERSE` mode, returned messages include severity, primary text, and position only; this will normally fit on a single line. The default mode (`PGSQL_ERRORS_DEFAULT`) produces messages that include the above plus any detail, hint, or context fields (these may span multiple lines). The `PGSQL_ERRORS_VERBOSE` mode includes all available fields. Changing the verbosity does not affect the messages available from already-existing result objects, only subsequently-created ones.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` belirtilmemişse öntanımlı bağlantı kullanılır. Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`verbosity`

  The required verbosity: `PGSQL_ERRORS_TERSE`, `PGSQL_ERRORS_DEFAULT` or `PGSQL_ERRORS_VERBOSE`.

### Dönen Değerler

The previous verbosity level: `PGSQL_ERRORS_TERSE`, `PGSQL_ERRORS_DEFAULT` or `PGSQL_ERRORS_VERBOSE`, or `false` on failure.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_set_error_verbosity() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

      if (!pg_connection_busy($dbconn)) {
          pg_send_query($dbconn, "select * from doesnotexist;");
      }

      pg_set_error_verbosity($dbconn, PGSQL_ERRORS_VERBOSE);
      $res1 = pg_get_result($dbconn);
      echo pg_result_error($res1);
    ?>

### Ayrıca Bakınız

- pg_last_error() - Get the last error message string of a connection
- pg_result_error() - Get error message associated with result

# pg_socket

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection

### Açıklama

function pg_socket(PgSql\Connection `$connection`): resource|false

pg_socket() returns a read only resource corresponding to the socket underlying the given PostgreSQL connection.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

A socket resource on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

# pg_socket_poll

(PHP 8 >= 8.4.0)

pg_socket_poll — Poll a PostgreSQL connection socket for read/write readiness

### Açıklama

function pg_socket_poll(
resource `$socket`,
int `$read`,
int `$write`,
int `$timeout` = -1
): int

Polls a PostgreSQL connection socket for read and/or write readiness. The socket can be obtained using pg_socket(). This function is useful for implementing non-blocking, asynchronous query workflows.

### Bağımsız Değişkenler

`socket`
  A socket resource obtained from pg_socket().
`read`
  Whether to check for read readiness. Pass `1` to check, `0` to skip.
`write`
  Whether to check for write readiness. Pass `1` to check, `0` to skip.
`timeout`
  The maximum number of milliseconds to wait. Pass `-1` to wait indefinitely, or `0` to not wait at all.

### Dönen Değerler

Returns a positive value if the socket is ready, `0` if the timeout was reached, or `-1` on error.

### Ayrıca Bakınız

- pg_socket() - Get a read only handle to the socket underlying a PostgreSQL connection
- pg_consume_input() - Reads input on the connection
- pg_send_query() - Sends asynchronous query

# pg_trace

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

pg_trace — Enable tracing a PostgreSQL connection

### Açıklama

function pg_trace(
string `$filename`,
string `$mode` = "w",
?PgSql\Connection `$connection` = `null`,
int `$trace_mode` = 0
): bool

pg_trace() enables tracing of the PostgreSQL frontend/backend communication to a file. To fully understand the results, one needs to be familiar with the internals of PostgreSQL communication protocol.

For those who are not, it can still be useful for tracing errors in queries sent to the server, you could do for example grep '^To backend' trace.log and see what queries actually were sent to the PostgreSQL server. For more information, refer to the » PostgreSQL Documentation.

### Bağımsız Değişkenler

`filename`

  The full path and file name of the file in which to write the trace log. Same as in fopen().

`mode`

  An optional file access mode, same as for fopen().

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

`trace_mode`

  An optional trace mode with the following constants `PGSQL_TRACE_SUPPRESS_TIMESTAMPS` and `PGSQL_TRACE_REGRESS_MODE`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | `trace_mode` has been added.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_trace() example

    <?php
    $pgsql_conn = pg_connect("dbname=mark host=localhost");

    if ($pgsql_conn) {
       pg_trace('/tmp/trace.log', 'w', $pgsql_conn);
       pg_query("SELECT 1");
       pg_untrace($pgsql_conn);
       // Now /tmp/trace.log will contain backend communication
    } else {
       print pg_last_error($pgsql_conn);
       exit;
    }
    ?>

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar
- pg_untrace() - Disable tracing of a PostgreSQL connection

# pg_transaction_status

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_transaction_status — Returns the current in-transaction status of the server

### Açıklama

function pg_transaction_status(PgSql\Connection `$connection`): int

Returns the current in-transaction status of the server.

Dikkat

pg_transaction_status() will give incorrect results when using a PostgreSQL 7.3 server that has the parameter `autocommit` set to off. The server-side autocommit feature has been deprecated and does not exist in later server versions.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

### Dönen Değerler

The status can be `PGSQL_TRANSACTION_IDLE` (currently idle), `PGSQL_TRANSACTION_ACTIVE` (a command is in progress), `PGSQL_TRANSACTION_INTRANS` (idle, in a valid transaction block), or `PGSQL_TRANSACTION_INERROR` (idle, in a failed transaction block). `PGSQL_TRANSACTION_UNKNOWN` is reported if the connection is bad. `PGSQL_TRANSACTION_ACTIVE` is reported only when a query has been sent to the server and not yet completed.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_transaction_status() example

    <?php
      $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
      $stat = pg_transaction_status($dbconn);
      if ($stat === PGSQL_TRANSACTION_UNKNOWN) {
          echo 'Connection is bad';
      } else if ($stat === PGSQL_TRANSACTION_IDLE) {
          echo 'Connection is currently idle';
      } else {
          echo 'Connection is in a transaction state';
      }
    ?>

# pg_tty

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_tty — Return the TTY name associated with the connection

### Açıklama

function pg_tty(?PgSql\Connection `$connection` = `null`): string

pg_tty() returns the TTY name that server side debugging output is sent to on the given PostgreSQL `connection` instance.

> Bilginize:

> pg_tty() is obsolete, since the server no longer pays attention to the TTY setting, but the function remains for backwards compatibility.

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

A string containing the debug TTY of the `connection`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_tty() example

    <?php
    $pgsql_conn = pg_connect("dbname=mark host=localhost");

    if ($pgsql_conn) {
       print "Server debug TTY is: " . pg_tty($pgsql_conn) . "<br/>\n";
    } else {
       print pg_last_error($pgsql_conn);
       exit;
    }
    ?>

# pg_unescape_bytea

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_unescape_bytea — Unescape binary for bytea type

### Açıklama

function pg_unescape_bytea(string `$string`): string

pg_unescape_bytea() unescapes PostgreSQL bytea data values. It returns the unescaped string, possibly containing binary data.

> Bilginize:

> When you `SELECT` a bytea type, PostgreSQL returns octal byte values prefixed with '\' (e.g. \032). Users are supposed to convert back to binary format manually.

### Bağımsız Değişkenler

`string`

  A string containing PostgreSQL bytea data to be converted into a PHP binary string.

### Dönen Değerler

A string containing the unescaped data.

### Örnekler

Örnek 1 pg_unescape_bytea() example

    <?php
      // Connect to the database
      $dbconn = pg_connect('dbname=foo');

      // Get the bytea data
      $res = pg_query("SELECT data FROM gallery WHERE name='Pine trees'");
      $raw = pg_fetch_result($res, 'data');

      // Convert to binary and send to the browser
      header('Content-type: image/jpeg');
      echo pg_unescape_bytea($raw);
    ?>

### Ayrıca Bakınız

- pg_escape_bytea() - Escape a string for insertion into a bytea field
- pg_escape_string() - Escape a string for query

# pg_untrace

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

pg_untrace — Disable tracing of a PostgreSQL connection

### Açıklama

function pg_untrace(?PgSql\Connection `$connection` = `null`): true

Stop tracing started by pg_trace().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_untrace() example

    <?php
    $pgsql_conn = pg_connect("dbname=mark host=localhost");

    if ($pgsql_conn) {
       pg_trace('/tmp/trace.log', 'w', $pgsql_conn);
       pg_query("SELECT 1");
       pg_untrace($pgsql_conn);
       // Now tracing of backend communication is disabled
    } else {
       print pg_last_error($pgsql_conn);
       exit;
    }
    ?>

### Ayrıca Bakınız

- pg_trace() - Enable tracing a PostgreSQL connection

# pg_update

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_update — Update table

### Açıklama

function pg_update(
PgSql\Connection `$connection`,
string `$table_name`,
array `$values`,
array `$conditions`,
int `$flags` = `PGSQL_DML_EXEC`
): string|bool

pg_update() updates records that matches `conditions` with `values`.

If `flags` is specified, pg_convert() is applied to `values` with the specified flags.

By default pg_update() passes raw values. Values must be escaped or the `PGSQL_DML_ESCAPE` flag must be specified in `flags`. `PGSQL_DML_ESCAPE` quotes and escapes parameters/identifiers. Therefore, table/column names become case sensitive.

Note that neither escape nor prepared query can protect LIKE query, JSON, Array, Regex, etc. These parameters should be handled according to their contexts. i.e. Escape/validate values.

### Bağımsız Değişkenler

`connection`

  PostgreSQL veritabanı bağlantısı özkaynağı.

`table_name`

  Name of the table into which to update rows.

`values`

  An array whose keys are field names in the table `table_name`, and whose values are what matched rows are to be updated to.

`conditions`

  An array whose keys are field names in the table `table_name`, and whose values are the conditions that a row must meet to be updated.

`flags`

  Any number of `PGSQL_CONV_FORCE_NULL`, `PGSQL_DML_NO_CONV`, `PGSQL_DML_ESCAPE`, `PGSQL_DML_EXEC`, `PGSQL_DML_ASYNC` or `PGSQL_DML_STRING` combined. If `PGSQL_DML_STRING` is part of the `flags` then query string is returned. When `PGSQL_DML_NO_CONV` or `PGSQL_DML_ESCAPE` is set, it does not call pg_convert() internally.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Returns string if `PGSQL_DML_STRING` is passed via `flags`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.

### Örnekler

Örnek 1 pg_update() example

    <?php
      $db = pg_connect('dbname=foo');
      $data = array('field1'=>'AA', 'field2'=>'BB');
      // This is safe somewhat, since all values are escaped.
      // However PostgreSQL supports JSON/Array. These are not
      // safe by neither escape nor prepared query.
      $res = pg_update($db, 'post_log', $_POST, $data);
      if ($res) {
          echo "Data is updated: $res\n";
      } else {
          echo "User must have sent wrong inputs\n";
      }
    ?>

### Ayrıca Bakınız

- pg_convert() - Convert associative array values into forms suitable for SQL statements

# pg_version

(PHP 5, PHP 7, PHP 8)

pg_version — Returns an array with client, protocol and server version (when available)

### Açıklama

function pg_version(?PgSql\Connection `$connection` = `null`): array

pg_version() returns an array with the client, protocol and server version.

For more detailed server information, use pg_parameter_status().

### Bağımsız Değişkenler

`connection`

  PgSql\Connection nesnesi. `bağlantı` `null` ise, öntanımlı bağlantı kullanılır.Öntanımlı bağlantı pg_connect() veya pg_pconnect() işleviyle kurulmuş son bağlantıdır.

  Uyarı

  PHP 8.1.0 ve sonrasında, öntanımlı bağlantının kullanımı önerilmemektedir.

### Dönen Değerler

Returns an array with `client`, `protocol` and `server` keys and values (if available).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `bağlantı` bağımsız değişkeni artık PgSql\Connection nesnesi kabul ediyor, evvelce bir özkaynak kabul ederdi.
8.0.0 | `connection` is now nullable.

### Örnekler

Örnek 1 pg_version() example

    <?php
      $dbconn = pg_connect("host=localhost port=5432 dbname=mary")
         or die("Could not connect");

      $v = pg_version($dbconn);

      echo $v['client'];
    ?>

Yukarıdaki örneğin çıktısı:

    7.4

### Ayrıca Bakınız

- pg_parameter_status() - Looks up a current parameter setting of the server

## İçindekiler

- pg_affected_rows — Returns number of affected records (tuples)
- pg_cancel_query — Cancel an asynchronous query
- pg_change_password — Change a PostgreSQL user's password
- pg_client_encoding — Gets the client encoding
- pg_close — Closes a PostgreSQL connection
- pg_connect — Open a PostgreSQL connection
- pg_connect_poll — Poll the status of an in-progress asynchronous PostgreSQL connection attempt
- pg_connection_busy — Get connection is busy or not
- pg_connection_reset — Reset connection (reconnect)
- pg_connection_status — Get connection status
- pg_consume_input — Reads input on the connection
- pg_convert — Convert associative array values into forms suitable for SQL statements
- pg_copy_from — Insert records into a table from an array
- pg_copy_to — Copy a table to an array
- pg_dbname — Get the database name
- pg_delete — Deletes records
- pg_end_copy — Sync with PostgreSQL backend
- pg_escape_bytea — Escape a string for insertion into a bytea field
- pg_escape_identifier — Escape an identifier for insertion into a text field
- pg_escape_literal — Escape a literal for insertion into a text field
- pg_escape_string — Escape a string for query
- pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result
- pg_fetch_all — Fetches all rows from a result as an array
- pg_fetch_all_columns — Fetches all rows in a particular result column as an array
- pg_fetch_array — Fetch a row as an array
- pg_fetch_assoc — Fetch a row as an associative array
- pg_fetch_object — Fetch a row as an object
- pg_fetch_result — Returns values from a result instance
- pg_fetch_row — Get a row as an enumerated array
- pg_field_is_null — Test if a field is SQL NULL
- pg_field_name — Returns the name of a field
- pg_field_num — Returns the field number of the named field
- pg_field_prtlen — Returns the printed length
- pg_field_size — Returns the internal storage size of the named field
- pg_field_table — Returns the name or oid of the tables field
- pg_field_type — Returns the type name for the corresponding field number
- pg_field_type_oid — Returns the type ID (OID) for the corresponding field number
- pg_flush — Flush outbound query data on the connection
- pg_free_result — Free result memory
- pg_get_notify — Gets SQL NOTIFY message
- pg_get_pid — Gets the backend's process ID
- pg_get_result — Get asynchronous query result
- pg_host — Returns the host name associated with the connection
- pg_insert — Insert array into table
- pg_jit — Returns the JIT information of the server
- pg_last_error — Get the last error message string of a connection
- pg_last_notice — Returns the last notice message from PostgreSQL server
- pg_last_oid — Returns the last row's OID
- pg_lo_close — Close a large object
- pg_lo_create — Create a large object
- pg_lo_export — Export a large object to file
- pg_lo_import — Import a large object from file
- pg_lo_open — Open a large object
- pg_lo_read — Read a large object
- pg_lo_read_all — Reads an entire large object and send straight to browser
- pg_lo_seek — Seeks position within a large object
- pg_lo_tell — Returns current seek position a of large object
- pg_lo_truncate — Truncates a large object
- pg_lo_unlink — Delete a large object
- pg_lo_write — Write to a large object
- pg_meta_data — Get meta data for table
- pg_num_fields — Returns the number of fields in a result
- pg_num_rows — Returns the number of rows in a result
- pg_options — Get the options associated with the connection
- pg_parameter_status — Looks up a current parameter setting of the server
- pg_pconnect — Open a persistent PostgreSQL connection
- pg_ping — Ping database connection
- pg_port — Return the port number associated with the connection
- pg_prepare — Submits a request to the server to create a prepared statement with the given parameters, and waits for completion
- pg_put_copy_data — Send data to the server during a COPY operation
- pg_put_copy_end — Signal the completion of a COPY operation to the server
- pg_put_line — Send a NULL-terminated string to PostgreSQL backend
- pg_query — Execute a query
- pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text
- pg_result_error — Get error message associated with result
- pg_result_error_field — Returns an individual field of an error report
- pg_result_memory_size — Returns the amount of memory allocated for a query result
- pg_result_seek — Set internal row offset in result instance
- pg_result_status — Get status of query result
- pg_select — Select records
- pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s)
- pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion
- pg_send_query — Sends asynchronous query
- pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s)
- pg_set_chunked_rows_size — Set the query results to be retrieved in chunk mode
- pg_set_client_encoding — Set the client encoding
- pg_set_error_context_visibility — Determines the visibility of the context's error messages returned by pg_last_error and pg_result_error
- pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error and pg_result_error
- pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection
- pg_socket_poll — Poll a PostgreSQL connection socket for read/write readiness
- pg_trace — Enable tracing a PostgreSQL connection
- pg_transaction_status — Returns the current in-transaction status of the server
- pg_tty — Return the TTY name associated with the connection
- pg_unescape_bytea — Unescape binary for bytea type
- pg_untrace — Disable tracing of a PostgreSQL connection
- pg_update — Update table
- pg_version — Returns an array with client, protocol and server version (when available)

# The PgSql\Connection class

(PHP 8 >= 8.1.0)

## Giriş

A fully opaque class which replaces a `pgsql link` resource as of PHP 8.1.0.

## Sınıf Sözdizimi

namespace PgSql;
final class Connection {
}

# The PgSql\Result class

(PHP 8 >= 8.1.0)

## Giriş

A fully opaque class which replaces a `pgsql result` resource as of PHP 8.1.0.

## Sınıf Sözdizimi

namespace PgSql;
final class Result {
}

# The PgSql\Lob class

(PHP 8 >= 8.1.0)

## Giriş

A fully opaque class which replaces a `pgsql large object` resource as of PHP 8.1.0.

## Sınıf Sözdizimi

namespace PgSql;
final class Lob {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
  - Basic usage
  - Basic usage
- PostgreSQL İşlevleri
  - pg_affected_rows — Returns number of affected records (tuples)
  - pg_cancel_query — Cancel an asynchronous query
  - pg_change_password — Change a PostgreSQL user's password
  - pg_client_encoding — Gets the client encoding
  - pg_close — Closes a PostgreSQL connection
  - pg_connect — Open a PostgreSQL connection
  - pg_connect_poll — Poll the status of an in-progress asynchronous PostgreSQL connection attempt
  - pg_connection_busy — Get connection is busy or not
  - pg_connection_reset — Reset connection (reconnect)
  - pg_connection_status — Get connection status
  - pg_consume_input — Reads input on the connection
  - pg_convert — Convert associative array values into forms suitable for SQL statements
  - pg_copy_from — Insert records into a table from an array
  - pg_copy_to — Copy a table to an array
  - pg_dbname — Get the database name
  - pg_delete — Deletes records
  - pg_end_copy — Sync with PostgreSQL backend
  - pg_escape_bytea — Escape a string for insertion into a bytea field
  - pg_escape_identifier — Escape an identifier for insertion into a text field
  - pg_escape_literal — Escape a literal for insertion into a text field
  - pg_escape_string — Escape a string for query
  - pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result
  - pg_fetch_all — Fetches all rows from a result as an array
  - pg_fetch_all_columns — Fetches all rows in a particular result column as an array
  - pg_fetch_array — Fetch a row as an array
  - pg_fetch_assoc — Fetch a row as an associative array
  - pg_fetch_object — Fetch a row as an object
  - pg_fetch_result — Returns values from a result instance
  - pg_fetch_row — Get a row as an enumerated array
  - pg_field_is_null — Test if a field is SQL NULL
  - pg_field_name — Returns the name of a field
  - pg_field_num — Returns the field number of the named field
  - pg_field_prtlen — Returns the printed length
  - pg_field_size — Returns the internal storage size of the named field
  - pg_field_table — Returns the name or oid of the tables field
  - pg_field_type — Returns the type name for the corresponding field number
  - pg_field_type_oid — Returns the type ID (OID) for the corresponding field number
  - pg_flush — Flush outbound query data on the connection
  - pg_free_result — Free result memory
  - pg_get_notify — Gets SQL NOTIFY message
  - pg_get_pid — Gets the backend's process ID
  - pg_get_result — Get asynchronous query result
  - pg_host — Returns the host name associated with the connection
  - pg_insert — Insert array into table
  - pg_jit — Returns the JIT information of the server
  - pg_last_error — Get the last error message string of a connection
  - pg_last_notice — Returns the last notice message from PostgreSQL server
  - pg_last_oid — Returns the last row's OID
  - pg_lo_close — Close a large object
  - pg_lo_create — Create a large object
  - pg_lo_export — Export a large object to file
  - pg_lo_import — Import a large object from file
  - pg_lo_open — Open a large object
  - pg_lo_read — Read a large object
  - pg_lo_read_all — Reads an entire large object and send straight to browser
  - pg_lo_seek — Seeks position within a large object
  - pg_lo_tell — Returns current seek position a of large object
  - pg_lo_truncate — Truncates a large object
  - pg_lo_unlink — Delete a large object
  - pg_lo_write — Write to a large object
  - pg_meta_data — Get meta data for table
  - pg_num_fields — Returns the number of fields in a result
  - pg_num_rows — Returns the number of rows in a result
  - pg_options — Get the options associated with the connection
  - pg_parameter_status — Looks up a current parameter setting of the server
  - pg_pconnect — Open a persistent PostgreSQL connection
  - pg_ping — Ping database connection
  - pg_port — Return the port number associated with the connection
  - pg_prepare — Submits a request to the server to create a prepared statement with the given parameters, and waits for completion
  - pg_put_copy_data — Send data to the server during a COPY operation
  - pg_put_copy_end — Signal the completion of a COPY operation to the server
  - pg_put_line — Send a NULL-terminated string to PostgreSQL backend
  - pg_query — Execute a query
  - pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text
  - pg_result_error — Get error message associated with result
  - pg_result_error_field — Returns an individual field of an error report
  - pg_result_memory_size — Returns the amount of memory allocated for a query result
  - pg_result_seek — Set internal row offset in result instance
  - pg_result_status — Get status of query result
  - pg_select — Select records
  - pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s)
  - pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion
  - pg_send_query — Sends asynchronous query
  - pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s)
  - pg_set_chunked_rows_size — Set the query results to be retrieved in chunk mode
  - pg_set_client_encoding — Set the client encoding
  - pg_set_error_context_visibility — Determines the visibility of the context's error messages returned by pg_last_error and pg_result_error
  - pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error and pg_result_error
  - pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection
  - pg_socket_poll — Poll a PostgreSQL connection socket for read/write readiness
  - pg_trace — Enable tracing a PostgreSQL connection
  - pg_transaction_status — Returns the current in-transaction status of the server
  - pg_tty — Return the TTY name associated with the connection
  - pg_unescape_bytea — Unescape binary for bytea type
  - pg_untrace — Disable tracing of a PostgreSQL connection
  - pg_update — Update table
  - pg_version — Returns an array with client, protocol and server version (when available)
- PgSql\Connection — The PgSql\Connection class
- PgSql\Result — The PgSql\Result class
- PgSql\Lob — The PgSql\Lob class

# SQLite3

# Giriş

SQLite'ın 3. sürüm veritabanları için destek.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

PHP 7.4.0 itibariyle » libsqlite ≥ 3.7.4 gerekir. Evvelce, yerine PHP paketinde gelen libsqlite kullanılabiliyordu.

## Kurulum

SQLite3 eklentisi öntanımlı olarak etkindir. Derleme sırasında `--without-sqlite3` seçeneğini kullanarak iptal etmek mümkündür.

Windows kullanıcılarının bu eklentiyi kullanabilmeleri için php.ini içinde php_sqlite3.dll'i etkin kılmaları gerekmektedir. Bu DLL, PHP'nin Windows dağıtımlarına dahil edilmektedir.

> Bilginize: PHP 7.4.0 itibariyle Windows üzerinde ek kurulum

> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: libsqlite3.dll.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

SQLite3 Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | >Sürüm Bilgisi
--- | --- | --- | ---
sqlite3.extension_dir | "" | `INI_SYSTEM` |
sqlite3.defensive | 1 | `INI_USER` | libsqlite ≥ 3.26.0 için PHP 7.2.17 ve PHP 7.3.4 ve sonrasında kullanılabilir. PHP 8.2.0'dan önce bu atama yalnızca `INI_SYSTEM` olarak değiştirilebilirdi.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`sqlite3.extension_dir` string

  SQLite yüklenebilir eklentilerinin yeri.

`sqlite3.defensive` bool

  Savunma bayrağı etkinleştirildiğinde, sıradan SQL'in kasıtlı olarak veritabanı dosyasını bozmasına izin veren dil özellikleri devre dışı bırakılır. Bu, doğrudan şemaya, gölge tablolara (örn. FTS veri tabloları) veya sqlite_dbpage sanal tablosuna yazmayı yasaklar. Bu php.ini ayarı yalnız libsqlite ≥ 3.26.0 için etkilidir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`SQLITE3_ASSOC` (int)
  SQLite3Result::fetchArray() yönteminin ilgili sonuç kümesinde bulunan sütun isimlerine göre indislenmiş bir dizi döndüreceğini belirtir.
`SQLITE3_NUM` (int)
  Sqlite3Result::fetchArray() yönteminin ilgili sonuç kümesinde bulunan sütun numaralarına göre indislenmiş bir dizi döndüreceğini belirtir. Sütun numaraları 0'dan başlar.
`SQLITE3_BOTH` (int)
  Sqlite3Result::fetchArray() yönteminin ilgili sonuç kümesinde bulunan sütun isimlerine ve sütün numaralarına göre indislenmiş bir dizi döndüreceğini belirtir. Sütun numaraları 0'dan başlar.
`SQLITE3_INTEGER` (int)
  SQLite3 INTEGER (tamsayı) saklama sınıfını temsil eder.
`SQLITE3_FLOAT` (int)
  SQLite3 REAL (FLOAT) (gerçek sayı) saklama sınıfını temsil eder.
`SQLITE3_TEXT` (int)
  SQLite3 TEXT (metin) saklama sınıfını temsil eder.
`SQLITE3_BLOB` (int)
  SQLite3 BLOB (ikil veri) saklama sınıfını temsil eder..
`SQLITE3_NULL` (int)
  SQLite3 NULL saklama sınıfını temsil eder.
`SQLITE3_OPEN_READONLY` (int)
  SQLite3 veritabanının salt-okunur açılacağını belirtir.
`SQLITE3_OPEN_READWRITE` (int)
  SQLite3 veritabanının okuma ve yazma amacıyla açılacağını belirtir.
`SQLITE3_OPEN_CREATE` (int)
  SQLite3 veritabanının mevcut değilse oluşturulacağını belirtir.
`SQLITE3_DETERMINISTIC` (int)
  SQLite3::createFunction() ile oluşturulan bir işlevin belirlenimsel olduğunu belirtir, yani tek bir SQL ifadesi içinde aynı girdiler verildiğinde her zaman aynı sonucu döndürür. (PHP 7.1.4 ve sonrasında kullanılabilir.)

# SQLite3 sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

SQLite 3 veritabanlarına arayüzlük eden sınıf.

## Sınıf Sözdizimi

class SQLite3 {
/* Sabitler */
public const int OK;
public const int DENY;
public const int IGNORE;
public const int CREATE_INDEX;
public const int CREATE_TABLE;
public const int CREATE_TEMP_INDEX;
public const int CREATE_TEMP_TABLE;
public const int CREATE_TEMP_TRIGGER;
public const int CREATE_TEMP_VIEW;
public const int CREATE_TRIGGER;
public const int CREATE_VIEW;
public const int DELETE;
public const int DROP_INDEX;
public const int DROP_TABLE;
public const int DROP_TEMP_INDEX;
public const int DROP_TEMP_TABLE;
public const int DROP_TEMP_TRIGGER;
public const int DROP_TEMP_VIEW;
public const int DROP_TRIGGER;
public const int DROP_VIEW;
public const int INSERT;
public const int PRAGMA;
public const int READ;
public const int SELECT;
public const int TRANSACTION;
public const int UPDATE;
public const int ATTACH;
public const int DETACH;
public const int ALTER_TABLE;
public const int REINDEX;
public const int ANALYZE;
public const int CREATE_VTABLE;
public const int DROP_VTABLE;
public const int FUNCTION;
public const int SAVEPOINT;
public const int COPY;
public const int RECURSIVE;
/* Yöntemler */
public function __construct(string `$dosya`, int `$seçenekler` = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string `$anahtar` = "")
public function backup(SQLite3 `$destination`, string `$sourceDatabase` = "main", string `$destinationDatabase` = "main"): bool
public function busyTimeout(int `$milliseconds`): bool
public function changes(): int
public function close(): bool
public function createAggregate(
string `$isim`,
callable `$sekme_işlevi`,
callable `$son_işlev`,
int `$değş_sayısı` = -1
): bool
public function createCollation(string `$name`, callable `$callback`): bool
public function createFunction(
string `$isim`,
callable `$işlev`,
int `$değş_sayısı` = -1,
int `$seçenekler` = 0
): bool
public function enableExceptions(bool `$enable` = `false`): bool
public static function escapeString(string `$veri`): string
public function exec(string `$sorgu`): bool
public function lastErrorCode(): int
public function lastErrorMsg(): string
public function lastInsertRowID(): int
public function loadExtension(string `$isim`): bool
public function open(string `$dosya`, int `$seçenekler` = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string `$anahtar` = ""): void
public function openBlob(
string `$table`,
string `$column`,
int `$rowid`,
string `$database` = "main",
int `$flags` = `SQLITE3_OPEN_READONLY`
): resource|false
public function prepare(string `$sorgu`): SQLite3Stmt|false
public function query(string `$sorgu`): SQLite3Result|false
public function querySingle(string `$sorgu`, bool `$tüm_satır` = `false`): mixed
public function setAuthorizer(?callable `$callback`): bool
public static function version(): array
}

## Öntanımlı Sabitler

`SQLite3::OK`

`SQLite3::DENY`

`SQLite3::IGNORE`

`SQLite3::CREATE_INDEX`

`SQLite3::CREATE_TABLE`

`SQLite3::CREATE_TEMP_INDEX`

`SQLite3::CREATE_TEMP_TABLE`

`SQLite3::CREATE_TEMP_TRIGGER`

`SQLite3::CREATE_TEMP_VIEW`

`SQLite3::CREATE_TRIGGER`

`SQLite3::CREATE_VIEW`

`SQLite3::DELETE`

`SQLite3::DROP_INDEX`

`SQLite3::DROP_TABLE`

`SQLite3::DROP_TEMP_INDEX`

`SQLite3::DROP_TEMP_TABLE`

`SQLite3::DROP_TEMP_TRIGGER`

`SQLite3::DROP_TEMP_VIEW`

`SQLite3::DROP_TRIGGER`

`SQLite3::DROP_VIEW`

`SQLite3::INSERT`

`SQLite3::PRAGMA`

`SQLite3::READ`

`SQLite3::SELECT`

`SQLite3::TRANSACTION`

`SQLite3::UPDATE`

`SQLite3::ATTACH`

`SQLite3::DETACH`

`SQLite3::ALTER_TABLE`

`SQLite3::REINDEX`

`SQLite3::ANALYZE`

`SQLite3::CREATE_VTABLE`

`SQLite3::DROP_VTABLE`

`SQLite3::FUNCTION`

`SQLite3::SAVEPOINT`

`SQLite3::COPY`

`SQLite3::RECURSIVE`

# SQLite3::backup

(PHP 7 >= 7.4.0, PHP 8)

SQLite3::backup — Backup one database to another database

### Açıklama

public function SQLite3::backup(SQLite3 `$destination`, string `$sourceDatabase` = "main", string `$destinationDatabase` = "main"): bool

SQLite3::backup() copies the contents of one database into another, overwriting the contents of the destination database. It is useful either for creating backups of databases or for copying in-memory databases to or from persistent files.

İpucu

As of SQLite 3.27.0 (2019-02-07), it is also possible to use the statement `VACUUM INTO 'file.db';` to backup the database to a new file.

### Bağımsız Değişkenler

`destination`

  A database connection opened with SQLite3::open().

`sourceDatabase`

  The database name is `"main"` for the main database, `"temp"` for the temporary database, or the name specified after the `AS` keyword in an `ATTACH` statement for an attached database.

`destinationDatabase`

  Analogous to `sourceDatabase` but for the `destination`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Backup an existing database

    <?php
    // $conn is a connection to an already opened sqlite3 database

    $backup = new SQLite3('backup.sqlite');
    $conn->backup($backup);
    ?>

# SQLite3::busyTimeout

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

SQLite3::busyTimeout — Sets the busy connection handler

### Açıklama

public function SQLite3::busyTimeout(int `$milliseconds`): bool

Sets a busy handler that will sleep until the database is not locked or the timeout is reached.

### Bağımsız Değişkenler

`milliseconds`

  The milliseconds to sleep. Setting this value to a value less than or equal to zero, will turn off an already set timeout handler.

### Dönen Değerler

Returns `true` on success, başarısızlık durumunda `false` döner.

# SQLite3::changes

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::changes — Veritabanında son SQL deyimi ile işlem gören satır sayısını döndürür

### Açıklama

public function SQLite3::changes(): int

Veritabanında son SQL deyimi ile değişikliğe uğrayan, silinen veya yerleştirilen satır sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İşlem gören satır sayısını bir int değer olarak döndürür.

### Örnekler

Örnek 1 - SQLite3::changes() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');

    $query = $db->exec('UPDATE counter SET views=0 WHERE page="test"');
    if ($query) {
        echo 'İşlem gören satır sayısı: ', $db->changes();
    }
    ?>

# SQLite3::close

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::close — Veritabanı bağlantısını kapatır

### Açıklama

public function SQLite3::close(): bool

Veritabanı bağlantısını kapatır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - SQLite3::close() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');
    $db->close();
    ?>

# SQLite3::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::__construct — Yeni bir SQLite3 nesnesini ilklendirdikten sonra bir SQLite veritabanını açar

### Açıklama

public function SQLite3::__construct(string `$dosya`, int `$seçenekler` = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string `$anahtar` = "")

Yeni bir SQLite3 nesnesini ilklendirdikten sonra `dosya` ile belirtilen SQLite veritabanına bir bağlantı açar. Eğer veritabanı şifreliyse `anahtar` ile şifresini çözmeye çalışır.

### Bağımsız Değişkenler

`dosya`

  SQLite veritabanını içeren dosyanın yolu veya veritabanını bellek içinde kullanmak için `:memory:`. `dosya` olarak boş bir dize verilmişse, disk üzerinde geçici olarak özel bir veritabanı oluşturulur. Bu özel veritabanı, veritabanı bağlantısı kapanır kapanmaz otomatik olarak silinir.

`seçenekler`

  SQLite veritabanının nasıl açılacağını belirleyen seçimlik seçenekler. Öntanımlı olarak, `SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE` kullanılır.

  - `SQLITE3_OPEN_READONLY`: Veritabanı okumak için açılır.

  - `SQLITE3_OPEN_READWRITE`: Veritabanı hem okumak hem de yazmak için açılır.

  - `SQLITE3_OPEN_CREATE`: Veritabanı yoksa oluşturulur.

`anahtar`

  SQLite veritabanını şifrelemek/şifresini çözmek için kullanılan şifreleme anahtarı. SQLite şifreleme modülü kurulu değilse, bu bağımsız değişkenin etkisi yoktur.

### Hatalar/İstisnalar

Başarısızlık durumunda bir Exception yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.0.10 | Disk üzerinde geçici olarak oluşturulacak özel bir veritabanı kullanmak için `dosya` artık boş dize olabiliyor.

### Örnekler

Örnek 1 - SQLite3::__construct() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');

    $db->exec('CREATE TABLE foo (bar TEXT)');
    $db->exec("INSERT INTO foo (bar) VALUES ('Bu bir denemedir.')");

    $result = $db->query('SELECT bar FROM foo');
    var_dump($result->fetchArray());
    ?>

# SQLite3::createAggregate

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::createAggregate — Toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir

### Açıklama

public function SQLite3::createAggregate(
string `$isim`,
callable `$sekme_işlevi`,
callable `$son_işlev`,
int `$değş_sayısı` = -1
): bool

SQL deyimlerinde toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini veya bir kullanıcı tanımlı işlevi kayda geçirir.

### Bağımsız Değişkenler

`isim`

  Oluşturulacak veya yeniden tanımlanacak toparlayıcı SQL işlevinin ismi.

`sekme_işlevi`

  Sonuç kümesinin her satırı için çalıştırılacak geriçağırım işlevinin ismi. Bu geriçağırım işlevi sonucu biriktirmeli ve toparlayıcı bir bağlamda saklamalıdır.

  Bu işlev şöyle tanımlanmalıdır:

  function sekme_işlevi(
  mixed `$bağlam`,
  int `$satır_num`,
  mixed `$değer`,
  mixed `...$değerler`
  ): mixed
  `bağlam`

    İlk satır için `null`; sonraki satırlarda sekme_işlevinden evvelce dönmüş değer. Bunu toparlayıcı bağlamı oluşturmakta kullanmalısınız.

  `satır_num`

    İşlenen satır numarası.

  `değer`

    Toparlayıcı bağlama aktarılacak ilk bağımsız değişken.

  `değerler`

    Toparlayıcı bağlama aktarılacak diğer bağımsız değişkenler.

  Bu işlevin dönüş değeri ardından çağrılacak sekme_işlevi veya son_işlevin `bağlam` bağımsız değişkeninde kullanılmalıdır.
`son_işlev`

  Veri toplama işlemi bittikten sonra çalıştırılacak geriçağırım işlevinin ismi. Tüm satırlar işlendikten sonra, bu işlev çağrılmalı ve ardından verileri toparlama bağlamından alıp sonucu döndürmelidir. Bu geri çağırım işlevi, SQLite tarafından bilinen türde bir değer (yani değişmez bir değer) döndürmelidir.

  Bu işlev şöyle tanımlanmalıdır:

  function son_işlev(mixed `$bağlam`, int `$satır_num`): mixed
  `bağlam`

    Son sekme_işlevinden dönen değer.

  `satır_num`

    Daima `0`.

  Bu işlevin dönüş değeri toparlayıcı için dönüş değeri olarak kullanılır.
`değş_sayısı`

  SQL işlevinin alacağı bağımsız değişken sayısı. Negatif bir sayı belirtilirse SQL işlevi herhangi bir sayıda bağımsız değişken alabilir demektir.

### Dönen Değerler

Toparlayıcı başarıyla oluşturulmuşsa `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - en_uzun toparlayıcı işlev örneği

    <?php
    $data = array(
       'one',
       'two',
       'three',
       'four',
       'five',
       'six',
       'seven',
       'eight',
       'nine',
       'ten',
       );
    $db = new SQLite3(':memory:');
    $db->exec("CREATE TABLE strings(a)");
    $insert = $db->prepare('INSERT INTO strings VALUES (?)');
    foreach ($data as $str) {
        $insert->bindValue(1, $str);
        $insert->execute();
    }
    $insert = null;

    function en_uzun_sekme($baglam, $str_num, $dizge)
    {
        if (strlen($dizge) > $baglam) {
            $baglam = strlen($dizge);
        }
        return $baglam;
    }

    function en_uzun_son($baglam, $str_num)
    {
        return $baglam === null ? 0 : $baglam;
    }

    $db->createAggregate('en_uzun', 'en_uzun_sekme', 'en_uzun_son');

    var_dump($db->querySingle('SELECT en_uzun(a) from strings'));
    ?>

Yukarıdaki örneğin çıktısı:

    int(5)

Bu örnekte, tablonun sütunlarından birindeki en uzun dizenin uzunluğunu hesaplayacak bir toparlama işlevi oluşturulmaktadır. Her satır için `en_uzun_sekme` işlevi çağrılmakta ve bir `$baglam` bağımsız değişkenine aktarılmaktadır. `$baglam` bağımsız değişkeni, diğer PHP değişkenleri gibidir ve bir diziyi veya hatta bir nesne değerini tutacak şekilde ayarlanabilir. Bu örnekte, bulunan en büyük uzunluğu tutmak için kullanılmaktadır. `$dizge` önceki en uzun dizgeden daha uzunsa, `$baglam` bağımsız değişkeni bu yeni değeri tutacak şekilde güncellenmektedir.

Tüm satırlar işlendikten sonra SQLite, toparlama sonucunu belirlemek için `en_uzun_son` işlevini çağırır. Burada, `$baglam`da bulunan verilere dayanarak bir tür hesaplama yapılabilir. Yine de bu basit örnekte, sorgu ilerledikçe sonuç hesaplanmakta, bu nedenle bağlam değerini döndürmek yeterli olmaktadır.

İpucu

SQLite'ın sorguyu işlemek için çok fazla bellek kullanmasına neden olacağından, değerlerin bir kopyasının bağlamda saklanması ve ardından bunların en sonda işlenmesi ÖNERİLMEZ. Her biri 32 bayt uzunluğunda bir dizge içeren bir milyon satır...

İpucu

SQLite3::createAggregate() yöntemi SQLite'ın dahili SQL işlevlerini geçersiz kılmak için kullanılabilir.

# SQLite3::createCollation

(PHP 5 >= 5.3.11, PHP 7, PHP 8)

SQLite3::createCollation — Registers a PHP function for use as an SQL collating function

### Açıklama

public function SQLite3::createCollation(string `$name`, callable `$callback`): bool

Registers a PHP function or user-defined function for use as a collating function within SQL statements.

### Bağımsız Değişkenler

`name`

  Name of the SQL collating function to be created or redefined

`callback`

  The name of a PHP function or user-defined function to apply as a callback, defining the behavior of the collation. It should accept two values and return as strcmp() does, i.e. it should return -1, 1, or 0 if the first string sorts before, sorts after, or is equal to the second.

  This function need to be defined as:

  function collation(mixed `$value1`, mixed `$value2`): int

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 SQLite3::createCollation() example

Register the PHP function strnatcmp() as a collating sequence in the SQLite3 database.

    <?php

    $db = new SQLite3(":memory:");
    $db->exec("CREATE TABLE test (col1 string)");
    $db->exec("INSERT INTO test VALUES ('a1')");
    $db->exec("INSERT INTO test VALUES ('a10')");
    $db->exec("INSERT INTO test VALUES ('a2')");

    $db->createCollation('NATURAL_CMP', 'strnatcmp');

    $defaultSort = $db->query("SELECT col1 FROM test ORDER BY col1");
    $naturalSort = $db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP");

    echo "default:\n";
    while ($row = $defaultSort->fetchArray()){
        echo $row['col1'], "\n";
    }

    echo "\nnatural:\n";
    while ($row = $naturalSort->fetchArray()){
        echo $row['col1'], "\n";
    }

    $db->close();

    ?>

Yukarıdaki örneğin çıktısı:

    default:
    a1
    a10
    a2

    natural:
    a1
    a2
    a10

### Ayrıca Bakınız

- The SQLite collation documentation: » http://sqlite.org/datatype3.html#collation

# SQLite3::createFunction

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::createFunction — Sayıl bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir

### Açıklama

public function SQLite3::createFunction(
string `$isim`,
callable `$işlev`,
int `$değş_sayısı` = -1,
int `$seçenekler` = 0
): bool

Mevcut veya yeni bir SQL işlevinin davranışını tanımlamak üzere bir geriçağırım işlevi olarak kullanılacak bir geriçağırım işlevini kayda geçirir.

### Bağımsız Değişkenler

`isim`

  Oluşturulacak veya yeniden tanımlanacak SQL işlevi.

`işlev`

  SQL işlevinin davranışını tanımlamak üzere bir geriçağırım işlevi olarak kullanılacak bir PHP işlevi veya kullanıcı tanımlı bir işlevin ismi.

  Bu işlev şöyle tanımlanmalıdır:

  function işlev(mixed `$değer`, mixed `...$değerler`): mixed
  `değer`

    SQL işlevine aktarılacak ilk bağımsız değişken.

  `değerler`

    SQL işlevine aktarılacak diğer bağımsız değişkenler.

`değ_sayısı`

  SQL işlevinin alacağı bağımsız değişken sayısı. `-1` belirtilirse SQL işlevi herhangi bir sayıda bağımsız değişken alabilir demektir.

`seçenekler`

  Seçeneklerin bitsel birleşimi. Şimdilik sadece, işlevin tek bir SQL deyiminde aynı girdiler verildiğinde her zaman aynı sonucu döndüreceğini belirten `SQLITE3_DETERMINISTIC` desteklenmektedir.

### Dönen Değerler

İşlev başarıyla oluşturulmuşsa `true` yoksa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.4 | `seçenekler` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - SQLite3::createFunction() örneği

    <?php
    function my_udf_md5($string) {
        return hash('md5', $string);
    }

    $db = new SQLite3('mysqlitedb.db');
    $db->createFunction('my_udf_md5', 'my_udf_md5');

    var_dump($db->querySingle('SELECT my_udf_md5("test")'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(32) "098f6bcd4621d373cade4e832627b4f6"

# SQLite3::enableExceptions

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::enableExceptions — Enable throwing exceptions

### Açıklama

public function SQLite3::enableExceptions(bool `$enable` = `false`): bool

Controls whether the SQLite3 instance will throw exceptions or warnings on error.

### Bağımsız Değişkenler

`enable`

  When `true`, the SQLite3 instance, and SQLite3Stmt and SQLite3Result instances derived from it, will throw exceptions on error.

  When `false`, the SQLite3 instance, and SQLite3Stmt and SQLite3Result instances derived from it, will raise warnings on error.

  For either mode, the error code and message, if any, will be available via SQLite3::lastErrorCode() and SQLite3::lastErrorMsg() respectively.

### Dönen Değerler

Returns the old value; `true` if exceptions were enabled, `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Calling SQLite3::enableExceptions() with `enable` as `false` will trigger a `E_DEPRECATED` warning.

### Örnekler

Örnek 1 SQLite3::enableExceptions() example

    <?php
    $sqlite = new SQLite3(':memory:');
    try {
        $sqlite->exec('create table foo');
        $sqlite->enableExceptions(true);
        $sqlite->exec('create table bar');
    } catch (Exception $e) {
        echo 'Caught exception: ' . $e->getMessage();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Warning: SQLite3::exec(): near "foo": syntax error in example.php on line 4
    Caught exception: near "bar": syntax error

# SQLite3::escapeString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::escapeString — Gerektiği gibi öncelenmiş bir dizge döndürür

### Açıklama

public static function SQLite3::escapeString(string `$veri`): string

Belirtilen `veri` gerekli öncelemlerle bir SQL deyiminde güvenle kullanılabilir hale getirilip bir dizge olarak döndürülür.

Uyarı

Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirebilir.

`null` karakterler içerebilen BLOB alanlarını düzgünce işlemek için bunun yerine SQLite3Stmt::bindParam() işlevi kullanılmalıdır.

### Bağımsız Değişkenler

`veri`

  Öncelenecek dizge.

### Dönen Değerler

Bir SQL deyiminde güvenle kullanılabilir hale getirilmiş dizgeyi döndürür.

### Notlar

Uyarı

SQLite sorgularında kullanacığınız dizgeleri addslashes() kullanarak öncelememelisiniz. Aksi takdirde tuhaf sonuçlar alabilirsiniz.

# SQLite3::exec

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::exec — Sonuç döndürmeyen bir SQL sorgusu çalıştırır

### Açıklama

public function SQLite3::exec(string `$sorgu`): bool

Sonuç döndürmeyen bir SQL sorgusu çalıştırır.

> Bilginize: SQLite3, sorguların çalıştırılması sırasında » geçici dosyalar oluşturabilir, bu bakımdan ilgili dizinler yazılabilir olmalıdır

### Bağımsız Değişkenler

`sorgu`

  Sonuç döndürmeyen CREATE, INSERT, UPDATE, DELETE gibi bir sorgu.

### Dönen Değerler

İstek başarıyla yerine getirilirse `true` yoksa `false` döner.

### Örnekler

Örnek 1 - SQLite3::exec() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');

    $db->exec('CREATE TABLE bar (bar TEXT)');
    ?>

# SQLite3::lastErrorCode

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::lastErrorCode — Başarısız olan son SQLite isteğinin sayısal sonuç kodunu döndürür

### Açıklama

public function SQLite3::lastErrorCode(): int

Başarısız olan son SQLite isteğinin sayısal sonuç kodunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sonuç kodu bir tamsayı olarak döner.

# SQLite3::lastErrorMsg

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::lastErrorMsg — Başarısız olan son SQLite isteği ile ilgili İngilizce iletiyi döndürür

### Açıklama

public function SQLite3::lastErrorMsg(): string

Başarısız olan son SQLite isteğinin başarısızlığını açıklayan İngilizce iletiyi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarısızlığın sebebini açıklayan iletiyi içeren bir dizge döner.

# SQLite3::lastInsertRowID

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::lastInsertRowID — Veritabanına en son yerleştirilen satırın kimliğini döndürür

### Açıklama

public function SQLite3::lastInsertRowID(): int

Veritabanına en son yerleştirilen (INSERT) satırın kimliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Satır kimliği bir tamsayı olarak döner. Veritabanı bağlantısı boyunca hiçbir satır yerleştirilmemişse işlev `0` döndürür.

# SQLite3::loadExtension

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::loadExtension — Belirtilen SQLite eklenti kütüphanesini yüklemeye çalışır

### Açıklama

public function SQLite3::loadExtension(string `$isim`): bool

`isim` ile ismi belirtilen SQLite eklenti kütüphanesini yüklemeye çalışır.

### Bağımsız Değişkenler

`isim`

  Yüklenecek paylaşımlı kütüphanenin ismi. Kütüphane sqlite3.extension_dir yapılandırma yönergesinde belirtilen dizinde olmalıdır.

### Dönen Değerler

Eklenti başarıyla yüklendiği takdirde `true` yoksa `false` döner.

### Örnekler

Örnek 1 - SQLite3::loadExtension() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');
    $db->loadExtension('libagg.so');
    ?>

# SQLite3::open

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::open — Bir SQLite veritabanını açar

### Açıklama

public function SQLite3::open(string `$dosya`, int `$seçenekler` = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string `$anahtar` = ""): void

`dosya` ile belirtilen SQLite3 veritabanını açar. Veritabanı şifreli ise belirtilen `anahtar` ile şifresi çözülmeye çalışılır.

### Bağımsız Değişkenler

`dosya`

  SQLite veritabanını içeren dosyanın yolu veya veritabanı bellekte tutulacaksa `:memory:`.

`seçenekler`

  SQLite veritabanının nasıl açılacağını belirleyen seçimlik seçenekler. Öntanımlı olarak, `SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE` kullanılır.

  - `SQLITE3_OPEN_READONLY`: Veritabanı okumak için açılır.

  - `SQLITE3_OPEN_READWRITE`: Veritabanı hem okumak hem de yazmak için açılır.

  - `SQLITE3_OPEN_CREATE`: Veritabanı yoksa oluşturulur.

`anahtar`

  SQLite veritabanını şifrelemek/şifresini çözmek için kullanılan şifreleme anahtarı. SQLite şifreleme modülü kurulu değilse bu bağımsız değişken etkisizdir.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - SQLite3::open() örneği

    <?php
    /**
     * SQLite3 sınıfını genişleten ve kurucu bağımsız değişkenleri ile veritabanını
     * ilklendirmek için open yöntemini kullanan basit bir örnek
     */
    class MyDB extends SQLite3
    {
        function __construct()
        {
            $this->open('mysqlitedb.db');
        }
    }

    $db = new MyDB();

    $db->exec('CREATE TABLE foo (bar STRING)');
    $db->exec("INSERT INTO foo (bar) VALUES ('Bu bir denemedir')");

    $result = $db->query('SELECT bar FROM foo');
    var_dump($result->fetchArray());
    ?>

# SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::openBlob — Opens a stream resource to read a BLOB

### Açıklama

public function SQLite3::openBlob(
string `$table`,
string `$column`,
int `$rowid`,
string `$database` = "main",
int `$flags` = `SQLITE3_OPEN_READONLY`
): resource|false

Opens a stream resource to read or write a BLOB, which would be selected by:

SELECT `column` FROM `database`.`table` WHERE rowid = `rowid`

> Bilginize: It is not possible to change the size of a BLOB by writing to the stream. Instead, an UPDATE statement has to be executed, possibly using SQLite's zeroblob() function to set the desired BLOB size.

### Bağımsız Değişkenler

`table`

  The table name.

`column`

  The column name.

`rowid`

  The row ID.

`database`

  The symbolic name of the DB

`flags`

  Either `SQLITE3_OPEN_READONLY` or `SQLITE3_OPEN_READWRITE` to open the stream for reading only, or for reading and writing, respectively.

### Dönen Değerler

Returns a stream resource, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | The `flags` parameter has been added, allowing to write BLOBs; formerly only reading was supported.

### Örnekler

Örnek 1 SQLite3::openBlob() example

    <?php
    $conn = new SQLite3(':memory:');
    $conn->exec('CREATE TABLE test (text text)');
    $conn->exec("INSERT INTO test VALUES ('Lorem ipsum')");
    $stream = $conn->openBlob('test', 'text', 1);
    echo stream_get_contents($stream);
    fclose($stream); // mandatory, otherwise the next line would fail
    $conn->close();
    ?>

Yukarıdaki örneğin çıktısı:

    Lorem ipsum

Örnek 2 Incrementally writing a BLOB

    <?php
    $conn = new SQLite3(':memory:');
    $conn->exec('CREATE TABLE test (text text)');
    $conn->exec("INSERT INTO test VALUES (zeroblob(36))");
    $stream = $conn->openBlob('test', 'text', 1, 'main', SQLITE3_OPEN_READWRITE);
    for ($i = 0; $i < 3; $i++) {
        fwrite($stream,  "Lorem ipsum\n");
    }
    fclose($stream);
    echo $conn->querySingle("SELECT text FROM test");
    $conn->close();
    ?>

Yukarıdaki örneğin çıktısı:

    Lorem ipsum
    Lorem ipsum
    Lorem ipsum

# SQLite3::prepare

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::prepare — Çalıştırılmak üzere bir SQL sorgusu hazırlar

### Açıklama

public function SQLite3::prepare(string `$sorgu`): SQLite3Stmt|false

Çalıştırılmak üzere bir SQL sorgusu hazırlar ve bir SQLite3Stmt nesnesi olarak döndürür.

### Bağımsız Değişkenler

`sorgu`

  Hazırlanacak SQL sorgusu.

### Dönen Değerler

İşlem başarılı olursa bir SQLite3Stmt nesnesi, yoksa `false` döner.

### Örnekler

Örnek 1 - SQLite3::prepare() örneği

    <?php
    unlink('mysqlitedb.db');
    $db = new SQLite3('mysqlitedb.db');

    $db->exec('CREATE TABLE foo (id INTEGER, bar STRING)');
    $db->exec("INSERT INTO foo (id, bar) VALUES (1, 'Bu bir denemedir')");

    $stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
    $stmt->bindValue(':id', 1, SQLITE3_INTEGER);

    $result = $stmt->execute();
    var_dump($result->fetchArray());
    ?>

### Ayrıca Bakınız

- SQLite3Stmt::paramCount() - Hazır deyimdeki değişken sayısını döndürür
- SQLite3Stmt::bindValue() - Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir
- SQLite3Stmt::bindParam() - Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir

# SQLite3::query

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::query — Bir SQL sorgusu çalıştırır

### Açıklama

public function SQLite3::query(string `$sorgu`): SQLite3Result|false

SQLite3Result nesnesi döndürerek bir SQL sorgusu çalıştırır. Sorgu bir sonuç üretmezse (DML deyimleri gibi), dönen SQLite3Result nesnesi kullanılabilir durumda olmaz. Böyle sorgular için SQLite3::exec() kullanılmalıdır.

### Bağımsız Değişkenler

`sorgu`

  Çalıştırılacak SQL sorgusu.

### Dönen Değerler

Bir SQLite3Result nesnesi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - SQLite3::query() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');

    $results = $db->query('SELECT bar FROM foo');
    while ($row = $results->fetchArray()) {
        var_dump($row);
    }
    ?>

# SQLite3::querySingle

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::querySingle — Bir sorgu çalıştırıp tek bir sonuç döndürür

### Açıklama

public function SQLite3::querySingle(string `$sorgu`, bool `$tüm_satır` = `false`): mixed

Bir sorgu çalıştırıp tek bir sonuç döndürür.

### Bağımsız Değişkenler

`sorgu`

  Çalıştırılacak SQL sorgusu.

`tüm_satır`

  Öntanımlı olarak sorgudan ilk sütunun değeri döner. Bu bağımsız değişkende `true` belirtilirse ilk satırın tamamı bir dizi olarak döndürülür.

### Dönen Değerler

`tüm_satır` bağımsız değişkeninde `true` belirtilmişse sonucun ilk satırını içeren bir dizi yoksa ilk sütunun değeri döner.

Sorgu geçerli olduğu halde sonuç dönmezse ve `tüm_satır` bağımsız değişkeninde `true` belirtilmişse boş bir dizi, `false` belirtilmişse `null` döner.

Geçersiz ve başarısız sorgular `false` döndürür.

### Örnekler

Örnek 1 - SQLite3::querySingle() örneği

    <?php
    $db = new SQLite3('mysqlitedb.db');

    var_dump($db->querySingle('SELECT username FROM user WHERE userid=1'));
    print_r($db->querySingle('SELECT username, email FROM user WHERE userid=1',
          true));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(5) "Scott"
    Array
    (
        [username] => Scott
        [email] => scott@example.com
    )

# SQLite3::setAuthorizer

(PHP 8)

SQLite3::setAuthorizer — Configures a callback to be used as an authorizer to limit what a statement can do

### Açıklama

public function SQLite3::setAuthorizer(?callable `$callback`): bool

Sets a callback that will be called by SQLite every time an action is performed (reading, deleting, updating, etc.). This is used when preparing a SQL statement from an untrusted source to ensure that the SQL statements do not try to access data they are not allowed to see, or that they do not try to execute malicious statements that damage the database. For example, an application may allow a user to enter arbitrary SQL queries for evaluation by a database. But the application does not want the user to be able to make arbitrary changes to the database. An authorizer could then be put in place while the user-entered SQL is being prepared that disallows everything except SELECT statements.

The authorizer callback may be called multiple times for each statement prepared by SQLite. A `SELECT` or `UPDATE` query will call the authorizer for every column that would be read or updated.

The authorizer is called with up to five parameters. The first parameter is always given, and is an int (action code) matching a constant from `SQLite3`. The other parameters are only passed for some actions. The following table describes the second and third parameters according to the action:

List of action codes and parameters
Action | Second parameter | Third parameter
--- | --- | ---
`SQLite3::CREATE_INDEX` | Index Name | Table Name
`SQLite3::CREATE_TABLE` | Table Name | `null`
`SQLite3::CREATE_TEMP_INDEX` | Index Name | Table Name
`SQLite3::CREATE_TEMP_TABLE` | Table Name | `null`
`SQLite3::CREATE_TEMP_TRIGGER` | Trigger Name | Table Name
`SQLite3::CREATE_TEMP_VIEW` | View Name | `null`
`SQLite3::CREATE_TRIGGER` | Trigger Name | Table Name
`SQLite3::CREATE_VIEW` | View Name | `null`
`SQLite3::DELETE` | Table Name | `null`
`SQLite3::DROP_INDEX` | Index Name | Table Name
`SQLite3::DROP_TABLE` | Table Name | `null`
`SQLite3::DROP_TEMP_INDEX` | Index Name | Table Name
`SQLite3::DROP_TEMP_TABLE` | Table Name | `null`
`SQLite3::DROP_TEMP_TRIGGER` | Trigger Name | Table Name
`SQLite3::DROP_TEMP_VIEW` | View Name | `null`
`SQLite3::DROP_TRIGGER` | Trigger Name | Table Name
`SQLite3::DROP_VIEW` | View Name | `null`
`SQLite3::INSERT` | Table Name | `null`
`SQLite3::PRAGMA` | Pragma Name | First argument passed to the pragma, or `null`
`SQLite3::READ` | Table Name | Column Name
`SQLite3::SELECT` | `null` | `null`
`SQLite3::TRANSACTION` | Operation | `null`
`SQLite3::UPDATE` | Table Name | Column Name
`SQLite3::ATTACH` | Filename | `null`
`SQLite3::DETACH` | Database Name | `null`
`SQLite3::ALTER_TABLE` | Database Name | Table Name
`SQLite3::REINDEX` | Index Name | `null`
`SQLite3::ANALYZE` | Table Name | `null`
`SQLite3::CREATE_VTABLE` | Table Name | Module Name
`SQLite3::DROP_VTABLE` | Table Name | Module Name
`SQLite3::FUNCTION` | `null` | Function Name
`SQLite3::SAVEPOINT` | Operation | Savepoint Name
`SQLite3::RECURSIVE` | `null` | `null`

The 4th parameter will be the name of the database (`"main"`, `"temp"`, etc.) if applicable.

The 5th parameter to the authorizer callback is the name of the inner-most trigger or view that is responsible for the access attempt or `null` if this access attempt is directly from top-level SQL code.

When the callback returns `SQLite3::OK`, that means the operation requested is accepted. When the callback returns `SQLite3::DENY`, the call that triggered the authorizer will fail with an error message explaining that access is denied.

If the action code is `SQLite3::READ` and the callback returns `SQLite3::IGNORE` then the prepared statement is constructed to substitute a `null` value in place of the table column that would have been read if `SQLite3::OK` had been returned. The `SQLite3::IGNORE` return can be used to deny an untrusted user access to individual columns of a table.

When a table is referenced by a `SELECT` but no column values are extracted from that table (for example in a query like `"SELECT count(*) FROM table"`) then the `SQLite3::READ` authorizer callback is invoked once for that table with a column name that is an empty string.

If the action code is `SQLite3::DELETE` and the callback returns `SQLite3::IGNORE` then the DELETE operation proceeds but the truncate optimization is disabled and all rows are deleted individually.

Only a single authorizer can be in place on a database connection at a time. Each call to SQLite3::setAuthorizer() overrides the previous call. Disable the authorizer by installing a `null` callback. The authorizer is disabled by default.

The authorizer callback must not do anything that will modify the database connection that invoked the authorizer callback.

Note that the authorizer is only called when a statement is prepared, not when it's executed.

More details can be found in the » SQLite3 documentation.

### Bağımsız Değişkenler

`callback`

  The callable to be called.

  If `null` is passed instead, this will disable the current authorizer callback.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

This method doesn't throw any error, but if an authorizer is enabled and returns an invalid value, the statement preparation will throw an error (or exception, depending on the use of the SQLite3::enableExceptions() method).

### Örnekler

Örnek 1 SQLite3::setAuthorizer() example

This only allows access to reading, and only some columns of the `users` table will be returned. Other columns will be replaced with `null`.

    <?php
    $db = new SQLite3('data.sqlite');
    $db->exec('CREATE TABLE users (id, name, password);');
    $db->exec('INSERT INTO users VALUES (1, \'Pauline\', \'Snails4eva\');');

    $allowed_columns = ['id', 'name'];

    $db->setAuthorizer(function (int $action, ...$args) use ($allowed_columns) {
        if ($action === SQLite3::READ) {
            list($table, $column) = $args;

            if ($table === 'users' && in_array($column, $allowed_columns)) {
                return SQLite3::OK;
            }

            return SQLite3::IGNORE;
        }

        return SQLite3::DENY;
    });

    print_r($db->querySingle('SELECT * FROM users WHERE id = 1;'));

Yukarıdaki örneğin çıktısı:

    Array
    (
        [id] => 1
        [name] => Pauline
        [password] =>
    )

# SQLite3::version

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::version — SQLite3 kütüphanesinin sürüm numarasını dizge ve sayı olarak döndürür

### Açıklama

public static function SQLite3::version(): array

SQLite3 kütüphanesinin sürüm numarasını dizge ve sayı olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

"versionString" ve "versionNumber" anahtarlarına sahip bir ilişkisel dizi döndürür.

### Örnekler

Örnek 1 - SQLite3::version() örneği

    <?php
    print_r(SQLite3::version());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [versionString] => 3.5.9
        [versionNumber] => 3005009
    )

## İçindekiler

- SQLite3::backup — Backup one database to another database
- SQLite3::busyTimeout — Sets the busy connection handler
- SQLite3::changes — Veritabanında son SQL deyimi ile işlem gören satır sayısını döndürür
- SQLite3::close — Veritabanı bağlantısını kapatır
- SQLite3::__construct — Yeni bir SQLite3 nesnesini ilklendirdikten sonra bir SQLite veritabanını açar
- SQLite3::createAggregate — Toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir
- SQLite3::createCollation — Registers a PHP function for use as an SQL collating function
- SQLite3::createFunction — Sayıl bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir
- SQLite3::enableExceptions — Enable throwing exceptions
- SQLite3::escapeString — Gerektiği gibi öncelenmiş bir dizge döndürür
- SQLite3::exec — Sonuç döndürmeyen bir SQL sorgusu çalıştırır
- SQLite3::lastErrorCode — Başarısız olan son SQLite isteğinin sayısal sonuç kodunu döndürür
- SQLite3::lastErrorMsg — Başarısız olan son SQLite isteği ile ilgili İngilizce iletiyi döndürür
- SQLite3::lastInsertRowID — Veritabanına en son yerleştirilen satırın kimliğini döndürür
- SQLite3::loadExtension — Belirtilen SQLite eklenti kütüphanesini yüklemeye çalışır
- SQLite3::open — Bir SQLite veritabanını açar
- SQLite3::openBlob — Opens a stream resource to read a BLOB
- SQLite3::prepare — Çalıştırılmak üzere bir SQL sorgusu hazırlar
- SQLite3::query — Bir SQL sorgusu çalıştırır
- SQLite3::querySingle — Bir sorgu çalıştırıp tek bir sonuç döndürür
- SQLite3::setAuthorizer — Configures a callback to be used as an authorizer to limit what a statement can do
- SQLite3::version — SQLite3 kütüphanesinin sürüm numarasını dizge ve sayı olarak döndürür

# The SQLite3Exception class

(PHP 8 >= 8.3.0)

## Giriş

Represents a SQLite3 specific exception.

## Sınıf Sözdizimi

class SQLite3Exception extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# SQLite3Stmt sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

SQLite 3 eklentisi için hazır deyimleri içeren sınıf.

## Sınıf Sözdizimi

class SQLite3Stmt {
/* Yöntemler */
private function __construct(SQLite3 `$sqlite3`, string `$query`)
public function bindParam(string `$sql_değişkeni`, string|int `&$php_değişkeni`, int `$tür` = `SQLITE3_TEXT`): bool
public function bindValue(string|int `$değişken`, mixed `$değer`, int `$tür` = `SQLITE3_TEXT`): bool
public function clear(): bool
public function close(): bool
public function execute(): SQLite3Result|false
public function getSQL(bool `$expand` = `false`): string|false
public function paramCount(): int
public function readOnly(): bool
public function reset(): bool
}

# SQLite3Stmt::bindParam

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::bindParam — Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir

### Açıklama

public function SQLite3Stmt::bindParam(string `$sql_değişkeni`, string|int `&$php_değişkeni`, int `$tür` = `SQLITE3_TEXT`): bool

`php_değişkeni` ile `sql_değişkeni`ni ilişkilendirir.

Dikkat

PHP 7.2.14 ve 7.3.0 öncesinde, `sql_değişkeni`nin izleyen SQLite3Stmt::execute() çağrıları ile uygun şekilde güncellenmesi gerekiyorsa ilk SQLite3Stmt::execute() çağrısından sonra SQLite3Stmt::reset() çağrılmalıdır. SQLite3Stmt::reset() çağrılmazsa, SQLite3Stmt::bindParam() yöntemine aktarılan `php_değişkeni`e atanan değer değişse veya SQLite3Stmt::bindParam() yeniden çağrılsa bile `sql_değişkeni`nin değeri değişmeyecektir.

### Bağımsız Değişkenler

`sql_değişkeni`

  `php_değişkeni`nin ilişkilendirileceği `sql_değişkeni`ni tanımlayan bir dizge (isimli bağımsız değişkenler için) veya tamsayı (konumsal bağımsız değişkenler için). İki nokta üst üste (`:`) imi veya `@` imi ile öncelenmemiş bir isimli `sql_değişkeni` iki nokta üst üste imi ile otomatik olarak öncelenir. Konumsal değişkenler `1`'den başlar.

`php_değişkeni`

  `sql_değişkeni`i ile ilişkilendirilecek değişken.

`tür`

  İlişkilendirilecek `php_değişkeni`nin veri türü

  - `SQLITE3_INTEGER`: İşaretli tamsayı. Değerin büyüklüğüne göre 1, 2, 3, 4, 6 veya 8 bayt genişlikte olabilir.

  - `SQLITE3_FLOAT`: Gerçek sayı. Bir 8 baytlık IEEE kayan noktalı sayı olarak saklanır.

  - `SQLITE3_TEXT`: Bir dizge. Veritabanının karakter kodlamasıyla kodlanır (UTF-8, UTF-16BE veya UTF-16-LE).

  - `SQLITE3_BLOB`: İkil veri. Veri girildiği haliyle saklanır.

  - `SQLITE3_NULL`: `null` değer.

  PHP 7.0.7 itibariyle, `tür` atlanmışsa, `php_değişkeni`: bool türünden otomatik olarak saptanır. int türü `SQLITE3_INTEGER` olarak, float türü `SQLITE3_FLOAT` olarak, null türü `SQLITE3_NULL` ve tüm diğerleri`SQLITE3_TEXT` olarak ele alınır. Evvelce, `tür` atlanmışsa, `SQLITE3_TEXT` öntanımlıydı.

  > Bilginize:

  > `php_değişkeni` için `null` belirtilmişse, belirtilen `tür`e bakılmaksızın daima `SQLITE3_NULL` olarak ele alınır.

### Dönen Değerler

`php_değişkeni` ile `sql_değişkeni` ilişkilendirilebilmişse `true` yoksa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `sql_değişkeni` için artık `@sql_değişkeni` gösterimi de destekleniyor.

### Örnekler

Örnek 1 - SQLite3Stmt::bindParam() kullanımı

Bu örnekte, tek bir bağımsız değişken ile ilişkilendirilmiş tek bir hazırlanmış deyimin farklı değerlere sahip çok sayıda satırı yerleştirmek için nasıl kulllanılacağı gösterilmiştir.

    <?php
    $db = new SQLite3(':memory:');
    $db->exec("CREATE TABLE foo (bar TEXT)");

    $stmt = $db->prepare("INSERT INTO foo VALUES (:bar)");
    $stmt->bindParam(':bar', $bar, SQLITE3_TEXT);

    $bar = 'baz';
    $stmt->execute();

    $bar = 42;
    $stmt->execute();

    $res = $db->query("SELECT * FROM foo");
    while (($row = $res->fetchArray(SQLITE3_ASSOC))) {
        var_dump($row);
    }
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bar"]=>
      string(3) "baz"
    }
    array(1) {
      ["bar"]=>
      string(2) "42"
    }

### Ayrıca Bakınız

- SQLite3Stmt::bindValue() - Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir
- SQLite3::prepare() - Çalıştırılmak üzere bir SQL sorgusu hazırlar

# SQLite3Stmt::bindValue

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::bindValue — Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir

### Açıklama

public function SQLite3Stmt::bindValue(string|int `$değişken`, mixed `$değer`, int `$tür` = `SQLITE3_TEXT`): bool

`değer`'i deyim `değişken`i ile ilişkilendirir.

Dikkat

PHP 7.2.14 ve 7.3.0 öncesinde, deyimin her çalıştırılışında, ilişkili bağımsız değişkenlerin güncellenebilmesi için SQLite3Stmt::reset() çağrılması gerekirdi.

### Bağımsız Değişkenler

`değişken`

  `değer`in ilişkilendirileceği `değişken`i tanımlayan bir dizge (isimli bağımsız değişkenler için) veya tamsayı (konumsal bağımsız değişkenler için). İki nokta üst üste (`:`) imi veya `@` imi ile öncelenmemiş bir isimli `değişken` iki nokta üst üste imi ile otomatik olarak öncelenir. Konumsal değişkenler `1`'den başlar.

`değer`

  Deyim değişkeni ile ilişkilendirilecek değer.

`tür`

  İlişkilendirilecek değerin veri türü.

  - `SQLITE3_INTEGER`: İşaretli tamsayı. Değerin büyüklüğüne göre 1, 2, 3, 4, 6 veya 8 bayt genişlikte olabilir.

  - `SQLITE3_FLOAT`: Gerçek sayı. Bir 8 baytlık IEEE kayan noktalı sayı olarak saklanır.

  - `SQLITE3_TEXT`: Bir dizge. Veritabanının karakter kodlamasıyla kodlanır (UTF-8, UTF-16BE veya UTF-16-LE).

  - `SQLITE3_BLOB`: İkil veri. Veri girildiği haliyle saklanır.

  - `SQLITE3_NULL`: `null` değer.

  PHP 7.0.7 itibariyle, `tür` atlanmışsa, `değer`: bool türünden otomatik olarak saptanır. int türü `SQLITE3_INTEGER` olarak, float türü `SQLITE3_FLOAT` olarak, null türü `SQLITE3_NULL` ve tüm diğerleri`SQLITE3_TEXT` olarak ele alınır. Evvelce, `tür` atlanmışsa, `SQLITE3_TEXT` öntanımlıydı.

  > Bilginize:

  > `değer` için `null` belirtilmişse, belirtilen `tür`e bakılmaksızın daima `SQLITE3_NULL` olarak ele alınır.

### Dönen Değerler

Değer, deyim değişkeni ile ilişkilendirilebilmişse `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `değişken` için artık `@değişken` gösterimi de destekleniyor.

### Örnekler

Örnek 1 - SQLite3Stmt::bindValue() örneği

    <?php
    $db = new SQLite3(':memory:');

    $db->exec('CREATE TABLE foo (id INTEGER, bar STRING)');
    $db->exec("INSERT INTO foo (id, bar) VALUES (1, 'Bu bir denemedir')");

    $stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
    $stmt->bindValue(':id', 1, SQLITE3_INTEGER);

    $result = $stmt->execute();
    var_dump($result->fetchArray(SQLITE3_ASSOC));
    ?>

Yukarıdaki örneğin çıktısı:

    array(1) {
      ["bar"]=>
      string(16) "Bu bir denemedir"
    }

### Ayrıca Bakınız

- SQLite3Stmt::bindParam() - Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir
- SQLite3::prepare() - Çalıştırılmak üzere bir SQL sorgusu hazırlar

# SQLite3Stmt::clear

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::clear — Tüm bağımsız değişken ilişkilendirmelerini temizler

### Açıklama

public function SQLite3Stmt::clear(): bool

Tüm bağımsız değişken ilişkilendirmelerini temizler (`null` atar).

Dikkat

Bu yöntem SQLite3Stmt::reset() kullanımını gerektirir. Kullanılmazsa, herhangi bir SQLite3Stmt::bindValue() veya SQLite3Stmt::bindParam() çağrısı etkisiz ve tüm ilişkili değişkenlerin değeri `null` olacaktır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Tüm bağımsız değişken ilişkilendirmelerini temizlenebilmişse `true` yoksa `false` döner.

# SQLite3Result::close

(No version information available, might only be in Git)

::close — Hazır deyimi kapatır

### Açıklama

public function SQLite3Stmt::close(): bool

Hazır deyimi kapatır.

> Bilginize: Bu SQLite3Stmt çalıştırılarak elde edilen tüm SQLite3Resultlar deyim kapandığında geçersiz olur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` döner.

# SQLite3Stmt::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::__construct — Constructs an SQLite3Stmt object

### Açıklama

private function SQLite3Stmt::__construct(SQLite3 `$sqlite3`, string `$query`)

SQLite3Stmt instances are created by SQLite3::prepare().

### Bağımsız Değişkenler

`sqlite3`

`query`

# SQLite3Stmt::execute

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::execute — Hazır deyimi çalıştırır ve sonuç kümesini bir nesne olarak döndürür

### Açıklama

public function SQLite3Stmt::execute(): SQLite3Result|false

Hazır deyimi çalıştırır ve sonuç kümesini bir nesne olarak döndürür

Dikkat

Aynı deyim nesnesi üzerinde bu yöntem çağrılarak elde edilen sonuç kümesi nesneleri bağımsızdır, ancak aynı alt yapıyı paylaşırlar. Bu bakımdan aynı deyim nesnesi üzerinde tekrar SQLite3Stmt::execute() çağırmadan önce SQLite3Result::finalize() çağrılması önerilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

İşlem başarılı olmuşsa bir SQLite3Result nesnesi yoksa `false` döner.

### Ayrıca Bakınız

- SQLite3::prepare() - Çalıştırılmak üzere bir SQL sorgusu hazırlar
- SQLite3Stmt::bindValue() - Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir
- SQLite3Stmt::bindParam() - Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir

# SQLite3Stmt::getSQL

(PHP 7 >= 7.4.0, PHP 8)

SQLite3Stmt::getSQL — Get the SQL of the statement

### Açıklama

public function SQLite3Stmt::getSQL(bool `$expand` = `false`): string|false

Retrieves the SQL of the prepared statement. If `expand` is `false`, the unmodified SQL is retrieved. If `expand` is `true`, all query parameters are replaced with their bound values, or with an SQL `NULL`, if not already bound.

### Bağımsız Değişkenler

`expand`

  Whether to retrieve the expanded SQL. Passing `true` is only supported as of libsqlite 3.14.

### Dönen Değerler

Returns the SQL of the prepared statement, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If `expand` is `true`, but the libsqlite version is less than 3.14, an error of level `E_WARNING` or an Exception is issued, according to SQLite3::enableExceptions().

### Örnekler

Örnek 1 Inspecting the expanded SQL

    <?php
    $db = new SQLite3(':memory:');
    $stmt = $db->prepare("SELECT :a, ?, :c");
    $stmt->bindValue(':a', 'foo');
    $answer = 42;
    $stmt->bindParam(2, $answer);
    var_dump($stmt->getSQL(true));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(24) "SELECT 'foo', '42', NULL"

# SQLite3Stmt::paramCount

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::paramCount — Hazır deyimdeki değişken sayısını döndürür

### Açıklama

public function SQLite3Stmt::paramCount(): int

Hazır deyimdeki değişken sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hazır deyimdeki değişken sayısını bir tamsayı olarak döndürür.

### Ayrıca Bakınız

- SQLite3::prepare() - Çalıştırılmak üzere bir SQL sorgusu hazırlar

# SQLite3Stmt::readOnly

(PHP 5 >= 5.3.6, PHP 7, PHP 8)

SQLite3Stmt::readOnly — Returns whether a statement is definitely read only

### Açıklama

public function SQLite3Stmt::readOnly(): bool

Returns whether a statement is definitely read only. A statement is considered read only, if it makes no direct changes to the content of the database file. Note that user defined SQL functions might change the database indirectly as a side effect.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if a statement is definitely read only, `false` otherwise.

# SQLite3Stmt::reset

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Stmt::reset — Hazır deyimi sıfırlar

### Açıklama

public function SQLite3Stmt::reset(): bool

Hazır deyimi çalıştırılmadan önceki durumuna getirir. Sıfırlama sonrası bağımsız değişken ilişkileri dokunulmamış olarak kalır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Deyim başarıyla sıfırlanabilmişse `true`, başarısızlık durumunda `false` döner.

## İçindekiler

- SQLite3Stmt::bindParam — Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir
- SQLite3Stmt::bindValue — Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir
- SQLite3Stmt::clear — Tüm bağımsız değişken ilişkilendirmelerini temizler
- SQLite3Result::close — Hazır deyimi kapatır
- SQLite3Stmt::__construct — Constructs an SQLite3Stmt object
- SQLite3Stmt::execute — Hazır deyimi çalıştırır ve sonuç kümesini bir nesne olarak döndürür
- SQLite3Stmt::getSQL — Get the SQL of the statement
- SQLite3Stmt::paramCount — Hazır deyimdeki değişken sayısını döndürür
- SQLite3Stmt::readOnly — Returns whether a statement is definitely read only
- SQLite3Stmt::reset — Hazır deyimi sıfırlar

# SQLite3Result sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

SQLite 3 eklentisi için sonuç kümesini temsil eden sınıf.

## Sınıf Sözdizimi

class SQLite3Result {
/* Yöntemler */
private function __construct()
public function columnName(int `$sütun`): string|false
public function columnType(int `$sütun`): int|false
public function fetchArray(int `$kip` = SQLITE3_BOTH): array|false
public function finalize(): bool
public function numColumns(): int
public function reset(): bool
}

# SQLite3Result::columnName

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::columnName — Numarası belirtilen sütunun ismini döndürür

### Açıklama

public function SQLite3Result::columnName(int `$sütun`): string|false

`sütun` ile numarası belirtilen sütunun ismini döndürür. Sonuçlanan sütunun ismi bir `AS` tümcesi varsa, bu sütun için `AS` tümcesinin değeridir. Bir `AS` tümcesi yoksa sütun ismi belirsizdir ve libsqlite3'ün sonraki sürümlerinden birinde bu değişebilir.

### Bağımsız Değişkenler

`sütunnum`

  Sütunun sıra numarası. İlk sütunun numarası 0'dır.

### Dönen Değerler

Belirtilen sütunun ismini bir dizge olarak döner, sütun yoksa `false` döner.

# SQLite3Result::columnType

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::columnType — Numarası belirtilen sütunun türünü döndürür

### Açıklama

public function SQLite3Result::columnType(int `$sütun`): int|false

`sütun` ile numarası belirtilen sütunun türünü dönürür.

### Bağımsız Değişkenler

`sütunnum`

  Sütunun sıra numarası. İlk sütunun numarası 0'dır.

### Dönen Değerler

Sütunun yoksa `false`, varsa veri türü olarak şu sabitlerden biri döner: `SQLITE3_INTEGER`, `SQLITE3_FLOAT`, `SQLITE3_TEXT`, `SQLITE3_BLOB`, `SQLITE3_NULL`.

# SQLite3Result::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::__construct — Constructs an SQLite3Result

### Açıklama

private function SQLite3Result::__construct()

SQLite3Result instances are created by SQLite3::query() and SQLite3Stmt::execute().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# SQLite3Result::fetchArray

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::fetchArray — Sonuç satırını bir dizi olarak döndürür

### Açıklama

public function SQLite3Result::fetchArray(int `$kip` = SQLITE3_BOTH): array|false

Sonuç satırını `kip` ile belirtildiği gibi satır isimleriyle veya satır numaraları ile ya da her ikisiyle de indisleyerek bir dizi olarak döndürür.

### Bağımsız Değişkenler

`kip`

  Döndürülecek dizinin nasıl düzenleneceğini belirler. Aşağıdaki sabitlerden biri olabilir. `SQLITE3_BOTH` öntanımlıdır.

  - `SQLITE3_ASSOC`: Dizi sütun isimleriyle indislenir.

  - `SQLITE3_NUM`: Dizi sütun numaraları ile indislenir. İlk sütunun indisi 0'dır.

  - `SQLITE3_BOTH`: Dizi hem sütun isimleriyle hem de sütun numaraları ile indislenir. İlk sütunun indisi 0'dır.

### Dönen Değerler

Satır isimleriyle veya satır numaraları ile ya da her ikisiyle de indislenmiş bir dizi döner. Hiç satır yoksa `false` döner.

Dönen dizinin değerlerinin türü şu SQLite3 türleriyle eşleştirilir: `PHP_INT_MIN`..`PHP_INT_MAX` aralığındaki tamsayılar int türüne, aksi takdirde string türüne, gerçel sayılar float türüne, `NULL` değerler null türüne, dizgeler ve blob'lar ise string türüne eşlenir.

# SQLite3Result::finalize

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::finalize — Sonuç kümesini kapatır

### Açıklama

public function SQLite3Result::finalize(): bool

Sonuç kümesini kapatır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`true` döner.

# SQLite3Result::numColumns

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::numColumns — Sonuç kümesindeki sütun sayısını döndürür

### Açıklama

public function SQLite3Result::numColumns(): int

Sonuç kümesindeki sütun sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sütun sayısı bir tamsayı olarak döner.

# SQLite3Result::reset

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3Result::reset — Sonuç kümesindeki geçerli satırı ilk satır yapar

### Açıklama

public function SQLite3Result::reset(): bool

Sonuç kümesindeki geçerli satırı ilk satır yapar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sonuç kümesindeki geçerli satır, ilk satır yapılabilmişse `true` yoksa `false` döner.

## İçindekiler

- SQLite3Result::columnName — Numarası belirtilen sütunun ismini döndürür
- SQLite3Result::columnType — Numarası belirtilen sütunun türünü döndürür
- SQLite3Result::__construct — Constructs an SQLite3Result
- SQLite3Result::fetchArray — Sonuç satırını bir dizi olarak döndürür
- SQLite3Result::finalize — Sonuç kümesini kapatır
- SQLite3Result::numColumns — Sonuç kümesindeki sütun sayısını döndürür
- SQLite3Result::reset — Sonuç kümesindeki geçerli satırı ilk satır yapar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- SQLite3 — SQLite3 sınıfı
  - SQLite3::backup — Backup one database to another database
  - SQLite3::busyTimeout — Sets the busy connection handler
  - SQLite3::changes — Veritabanında son SQL deyimi ile işlem gören satır sayısını döndürür
  - SQLite3::close — Veritabanı bağlantısını kapatır
  - SQLite3::__construct — Yeni bir SQLite3 nesnesini ilklendirdikten sonra bir SQLite veritabanını açar
  - SQLite3::createAggregate — Toparlayıcı bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir
  - SQLite3::createCollation — Registers a PHP function for use as an SQL collating function
  - SQLite3::createFunction — Sayıl bir SQL işlevi olarak kullanılmak üzere bir PHP işlevini kayda geçirir
  - SQLite3::enableExceptions — Enable throwing exceptions
  - SQLite3::escapeString — Gerektiği gibi öncelenmiş bir dizge döndürür
  - SQLite3::exec — Sonuç döndürmeyen bir SQL sorgusu çalıştırır
  - SQLite3::lastErrorCode — Başarısız olan son SQLite isteğinin sayısal sonuç kodunu döndürür
  - SQLite3::lastErrorMsg — Başarısız olan son SQLite isteği ile ilgili İngilizce iletiyi döndürür
  - SQLite3::lastInsertRowID — Veritabanına en son yerleştirilen satırın kimliğini döndürür
  - SQLite3::loadExtension — Belirtilen SQLite eklenti kütüphanesini yüklemeye çalışır
  - SQLite3::open — Bir SQLite veritabanını açar
  - SQLite3::openBlob — Opens a stream resource to read a BLOB
  - SQLite3::prepare — Çalıştırılmak üzere bir SQL sorgusu hazırlar
  - SQLite3::query — Bir SQL sorgusu çalıştırır
  - SQLite3::querySingle — Bir sorgu çalıştırıp tek bir sonuç döndürür
  - SQLite3::setAuthorizer — Configures a callback to be used as an authorizer to limit what a statement can do
  - SQLite3::version — SQLite3 kütüphanesinin sürüm numarasını dizge ve sayı olarak döndürür
- SQLite3Exception — The SQLite3Exception class
- SQLite3Stmt — SQLite3Stmt sınıfı
  - SQLite3Stmt::bindParam — Bir PHP değişkenini bir SQL değişkeni ile ilişkilendirir
  - SQLite3Stmt::bindValue — Bir bağımsız değişkenin değerini bir deyim değişkeni ile ilişkilendirir
  - SQLite3Stmt::clear — Tüm bağımsız değişken ilişkilendirmelerini temizler
  - SQLite3Result::close — Hazır deyimi kapatır
  - SQLite3Stmt::__construct — Constructs an SQLite3Stmt object
  - SQLite3Stmt::execute — Hazır deyimi çalıştırır ve sonuç kümesini bir nesne olarak döndürür
  - SQLite3Stmt::getSQL — Get the SQL of the statement
  - SQLite3Stmt::paramCount — Hazır deyimdeki değişken sayısını döndürür
  - SQLite3Stmt::readOnly — Returns whether a statement is definitely read only
  - SQLite3Stmt::reset — Hazır deyimi sıfırlar
- SQLite3Result — SQLite3Result sınıfı
  - SQLite3Result::columnName — Numarası belirtilen sütunun ismini döndürür
  - SQLite3Result::columnType — Numarası belirtilen sütunun türünü döndürür
  - SQLite3Result::__construct — Constructs an SQLite3Result
  - SQLite3Result::fetchArray — Sonuç satırını bir dizi olarak döndürür
  - SQLite3Result::finalize — Sonuç kümesini kapatır
  - SQLite3Result::numColumns — Sonuç kümesindeki sütun sayısını döndürür
  - SQLite3Result::reset — Sonuç kümesindeki geçerli satırı ilk satır yapar

# Microsoft SQL Server Driver for PHP

# Giriş

The SQLSRV extension allows you to access Microsoft SQL Server and SQL Azure databases. The 3.0 release of the driver supports SQL Server, beginning with SQL Server 2005, including SQL Server 2012 and SQL Server 2012 LocalDB. (For more information about LocalDB, see » PHP Driver for SQL Server Support for LocalDB and » SQL Server 2012 Express LocalDB.)

The SQLSRV extension is supported by Microsoft and available for download here: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx. SQL Server 2012 LocalDB can be downloaded here: » http://go.microsoft.com/fwlink/?LinkID=237665.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

The SQLSRV extension can be used on the following operating systems:

- Windows Vista Service Pack 2 or later
- Windows Server 2008 Service Pack 2 or later
- Windows Server 2008 R2
- Windows 7

The SQLSRV extension requires that the Microsoft SQL Server 2012 Native Client be installed on the same computer that is running PHP. If the Microsoft SQL Server 2012 Native Client is not already installed, click the appropriate link below to download it:

- » Download the x86 package
- » Download the x64 package

The SQLSRV download comes 8 driver files, four of which are for PDO support.

The most recent version of the driver is available for download here: » SQLSRV download.

For more information about SQLSRV requirements, see » SQLSRV System Requirements.

## Kurulum

The SQLSRV extension is enabled by adding appropriate DLL file to your PHP extension directory and the corresponding entry to the php.ini file. The SQLSRV download comes with 8 driver files, four of which are for PDO support.

The most recent version of the driver is available for download here: » SQLSRV download.

For more information about SQLSRV requirements, see » SQLSRV System Requirements.

Since version 4.0 the SQLSRV extension is compatible only with PHP 7.0 running on Linux or Windows.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

The following table lists the configuration options available in the SQLSRV extension. For more information about these options, see » Handling SQLSRV Warnings and Errors.

SQLSRV Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
sqlsrv.WarningsReturnAsErrors | 1 (`true`) | `INI_ALL` | Available since SQLSRV 1.0
sqlsrv.LogSubsystems | 0 | `INI_ALL` | Available since SQLSRV 1.0
sqlsrv.LogSeverity | 1 | `INI_ALL` | Available since SQLSRV 1.0

## Özkaynak Türleri

## Connection resource

A connection resource returned by sqlsrv_connect().

## Statement resource

A statement resource returned by sqlsrv_query() or by sqlsrv_prepare().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`SQLSRV_FETCH_ASSOC` (int)
  Forces sqlsrv_fetch_array() to return an associative array when passed as a parameter.
`SQLSRV_FETCH_NUMERIC` (int)
  Forces sqlsrv_fetch_array() to return an array with numeric when passed as a parameter.
`SQLSRV_FETCH_BOTH` (int)
  Forces sqlsrv_fetch_array() to return an array with both associative and numeric keys when passed as a parameter (the default behavior).
`SQLSRV_ERR_ALL` (int)
  Forces sqlsrv_errors() to return both errors and warnings when passed as a parameter (the default behavior).
`SQLSRV_ERR_ERRORS` (int)
  Forces sqlsrv_errors() to return errors only (no warnings) when passed as a parameter.
`SQLSRV_ERR_WARNINGS` (int)
  Forces sqlsrv_errors() to return warnings only (no errors) when passed as a parameter.
`SQLSRV_LOG_SYSTEM_ALL` (int)
  Turns on logging of all subsystems when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SYSTEM_CONN` (int)
  Turns on logging of connection activity when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SYSTEM_INIT` (int)
  Turns on logging of initialization activity when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SYSTEM_OFF` (int)
  Turns off logging of all subsystems when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SYSTEM_STMT` (int)
  Turns on logging of statement activity when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SYSTEM_UTIL` (int)
  Turns on logging of error function activity when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SEVERITY_ALL` (int)
  Specifies that errors, warnings, and notices will be logged when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SEVERITY_ERROR` (int)
  Specifies that errors will be logged when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SEVERITY_NOTICE` (int)
  Specifies that notices will be logged when passed to sqlsrv_configure() as a parameter.
`SQLSRV_LOG_SEVERITY_WARNING` (int)
  Specifies that warnings will be logged when passed to sqlsrv_configure() as a parameter.
`SQLSRV_NULLABLE_YES` (int)
  Indicates that a column is nullable.
`SQLSRV_NULLABLE_NO` (int)
  Indicates that a column is not nullable.
`SQLSRV_NULLABLE_UNKNOWN` (int)
  Indicates that it is not known if a column is nullable.
`SQLSRV_PARAM_IN` (int)
  Indicates an input parameter when passed to sqlsrv_query() or sqlsrv_prepare().
`SQLSRV_PARAM_INOUT` (int)
  Indicates a bidirectional parameter when passed to sqlsrv_query() or sqlsrv_prepare().
`SQLSRV_PARAM_OUT` (int)
  Indicates an output parameter when passed to sqlsrv_query() or sqlsrv_prepare().
`SQLSRV_PHPTYPE_INT` (int)
  Specifies an integer PHP data type. For usage information, see » How to: Specify PHP Types.
`SQLSRV_PHPTYPE_DATETIME` (int)
  Specifies a datetime PHP data type. For usage information, see » How to: Specify PHP Types.
`SQLSRV_PHPTYPE_FLOAT` (int)
  Specifies a float PHP data type. For usage information, see » How to: Specify PHP Types.
`SQLSRV_PHPTYPE_STREAM` (int)
  Specifies a PHP stream. This constant works like a function and accepts an encoding constant. See the SQLSRV_ENC_* constants. For usage information, see » How to: Specify PHP Types.
`SQLSRV_PHPTYPE_STRING` (int)
  Specifies a string PHP data type. This constant works like a function and accepts an encoding constant. See the SQLSRV_ENC_* constants. For usage information, see » How to: Specify PHP Types.
`SQLSRV_ENC_BINARY` (int)
  Specifies that data is returned as a raw byte stream from the server without performing encoding or translation. For usage information, see » How to: Specify PHP Types.
`SQLSRV_ENC_CHAR` (int)
  Data is returned in 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This is the default encoding. For usage information, see » How to: Specify PHP Types.
`SQLSRV_SQLTYPE_BIGINT` (int)
  Describes the bigint SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_BINARY` (int)
  Describes the binary SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_BIT` (int)
  Describes the bit SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_CHAR` (int)
  Describes the char SQL Server data type. This constant works like a function and accepts a parameter indicating the number characters. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_DATE` (int)
  Describes the date SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_DATETIME` (int)
  Describes the datetime SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_DATETIME2` (int)
  Describes the datetime2 SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_DATETIMEOFFSET` (int)
  Describes the datetimeoffset SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_DECIMAL` (int)
  Describes the decimal SQL Server data type. This constant works like a function and accepts two parameters indicating (in order) precision and scale. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_FLOAT` (int)
  Describes the float SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_IMAGE` (int)
  Describes the image SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_INT` (int)
  Describes the int SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_MONEY` (int)
  Describes the money SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_NCHAR` (int)
  Describes the nchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_NUMERIC` (int)
  Describes the numeric SQL Server data type. This constant works like a function and accepts two parameter indicating (in order) precision and scale. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_NVARCHAR` (int)
  Describes the nvarchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_NVARCHAR`('max') (int)
  Describes the nvarchar(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_NTEXT` (int)
  Describes the ntext SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_REAL` (int)
  Describes the real SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_SMALLDATETIME` (int)
  Describes the smalldatetime SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_SMALLINT` (int)
  Describes the smallint SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_SMALLMONEY` (int)
  Describes the smallmoney SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_TEXT` (int)
  Describes the text SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_TIME` (int)
  Describes the time SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_TIMESTAMP` (int)
  Describes the timestamp SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_TINYINT` (int)
  Describes the tinyint SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_UNIQUEIDENTIFIER` (int)
  Describes the uniqueidentifier SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_UDT` (int)
  Describes the UDT SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_VARBINARY` (int)
  Describes the varbinary SQL Server data type. This constant works like a function and accepts a single parameter indicating the byte count. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_VARBINARY`('max') (int)
  Describes the varbinary(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_VARCHAR` (int)
  Describes the varchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_VARCHAR`('max') (int)
  Describes the varchar(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_SQLTYPE_XML` (int)
  Describes the XML SQL Server data type. For usage information, see » How to: Specify SQL Types.
`SQLSRV_TXN_READ_UNCOMMITTED` (int)
  Indicates a transaction isolation level of READ UNCOMMITTED. This value is used to set the TransactionIsolation level in the $connectionOptions array passed to sqlsrv_connect().
`SQLSRV_TXN_READ_COMMITTED` (int)
  Indicates a transaction isolation level of READ COMMITTED. This value is used to set the TransactionIsolation level in the $connectionOptions array passed to sqlsrv_connect().
`SQLSRV_TXN_REPEATABLE_READ` (int)
  Indicates a transaction isolation level of REPEATABLE READ. This value is used to set the TransactionIsolation level in the $connectionOptions array passed to sqlsrv_connect().
`SQLSRV_TXN_SNAPSHOT` (int)
  Indicates a transaction isolation level of SNAPSHOT. This value is used to set the TransactionIsolation level in the $connectionOptions array passed to sqlsrv_connect().
`SQLSRV_TXN_READ_SERIALIZABLE` (int)
  Indicates a transaction isolation level of SERIALIZABLE. This value is used to set the TransactionIsolation level in the $connectionOptions array passed to sqlsrv_connect().
`SQLSRV_CURSOR_FORWARD` (int)
  Indicates a forward-only cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_CURSOR_STATIC` (int)
  Indicates a static cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_CURSOR_DYNAMIC` (int)
  Indicates a dynamic cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_CURSOR_KEYSET` (int)
  Indicates a keyset cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_CURSOR_BUFFERED` (int)
  Creates a client-side cursor query. Lets you access rows in any order. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_NEXT` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_PRIOR` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_FIRST` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_LAST` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_ABSOLUTE` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
`SQLSRV_SCROLL_RELATIVE` (int)
  Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.

# SQLSRV İşlevleri

# sqlsrv_begin_transaction

(No version information available, might only be in Git)

sqlsrv_begin_transaction — Begins a database transaction

### Açıklama

function sqlsrv_begin_transaction(resource `$conn`): bool

The transaction begun by sqlsrv_begin_transaction() includes all statements that were executed after the call to sqlsrv_begin_transaction() and before calls to sqlsrv_rollback() or sqlsrv_commit(). Explicit transactions should be started and committed or rolled back using these functions instead of executing SQL statements that begin and commit/roll back transactions. For more information, see » SQLSRV Transactions.

### Bağımsız Değişkenler

`conn`
  The connection resource returned by a call to sqlsrv_connect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_begin_transaction() example

The following example demonstrates how to use sqlsrv_begin_transaction() together with sqlsrv_commit() and sqlsrv_rollback().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true ));
    }

    /* Begin the transaction. */
    if ( sqlsrv_begin_transaction( $conn ) === false ) {
         die( print_r( sqlsrv_errors(), true ));
    }

    /* Initialize parameter values. */
    $orderId = 1; $qty = 10; $productId = 100;

    /* Set up and execute the first query. */
    $sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
              VALUES (?, ?, ?)";
    $params1 = array( $orderId, $qty, $productId );
    $stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

    /* Set up and execute the second query. */
    $sql2 = "UPDATE InventoryTable
              SET Quantity = (Quantity - ?)
              WHERE ProductID = ?";
    $params2 = array($qty, $productId);
    $stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

    /* If both queries were successful, commit the transaction. */
    /* Otherwise, rollback the transaction. */
    if( $stmt1 && $stmt2 ) {
         sqlsrv_commit( $conn );
         echo "Transaction committed.<br />";
    } else {
         sqlsrv_rollback( $conn );
         echo "Transaction rolled back.<br />";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- sqlsrv_commit() - Commits a transaction that was begun with sqlsrv_begin_transaction
- sqlsrv_rollback() - Rolls back a transaction that was begun with sqlsrv_begin_transaction

# sqlsrv_cancel

(No version information available, might only be in Git)

sqlsrv_cancel — Cancels a statement

### Açıklama

function sqlsrv_cancel(resource `$stmt`): bool

Cancels a statement. Any results associated with the statement that have not been consumed are deleted. After sqlsrv_cancel() has been called, the specified statement can be re-executed if it was created with sqlsrv_prepare(). Calling sqlsrv_cancel() is not necessary if all the results associated with the statement have been consumed.

### Bağımsız Değişkenler

`stmt`
  The statement resource to be cancelled.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_cancel() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT Sales FROM Table_1";

    $stmt = sqlsrv_prepare( $conn, $sql);

    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    if( sqlsrv_execute( $stmt ) === false) {
         die( print_r( sqlsrv_errors(), true));
    }

    $salesTotal = 0;
    $count = 0;

    while( ($row = sqlsrv_fetch_array( $stmt)) && $salesTotal <=100000)
    {
         $qty = $row[0];
         $price = $row[1];
         $salesTotal += ( $price * $qty);
         $count++;
    }

    echo "$count sales accounted for the first $$salesTotal in revenue.<br />";

    // Cancel the pending results. The statement can be reused.
    sqlsrv_cancel( $stmt);
    ?>

### Notlar

The main difference between sqlsrv_cancel() and sqlsrv_free_stmt() is that a statement resource cancelled with sqlsrv_cancel() can be re-executed if it was created with sqlsrv_prepare(). A statement resource cancelled with sqlsrv_free_statement() cannot be re-executed.

### Ayrıca Bakınız

- sqlsrv_free_stmt() - Frees all resources for the specified statement
- sqlsrv_prepare() - Prepares a query for execution

# sqlsrv_client_info

(No version information available, might only be in Git)

sqlsrv_client_info — Returns information about the client and specified connection

### Açıklama

function sqlsrv_client_info(resource `$conn`): array

Returns information about the client and specified connection

### Bağımsız Değişkenler

`conn`
  The connection about which information is returned.

### Dönen Değerler

Returns an associative array with keys described in the table below. Returns `false` otherwise.

Array returned by sqlsrv_client_info
Key | Description
--- | ---
DriverDllName | SQLNCLI10.DLL
DriverODBCVer | ODBC version (xx.yy)
DriverVer | SQL Server Native Client DLL version (10.5.xxx)
ExtensionVer | php_sqlsrv.dll version (2.0.xxx.x)

### Örnekler

Örnek 1 sqlsrv_client_info() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connOptions = array("UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connOptions );

    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true));
    }

    if( $client_info = sqlsrv_client_info( $conn)) {
        foreach( $client_info as $key => $value) {
            echo $key.": ".$value."<br />";
        }
    } else {
        echo "Error in retrieving client info.<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_server_info() - Returns information about the server

# sqlsrv_close

(No version information available, might only be in Git)

sqlsrv_close — Closes an open connection and releases resources associated with the connection

### Açıklama

function sqlsrv_close(resource `$conn`): bool

Closes an open connection and releases resources associated with the connection.

### Bağımsız Değişkenler

`conn`
  The connection to be closed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_close() example

    <?php
    $serverName = "serverName\sqlexpres";
    $connOptions = array("UID"=>"username", "PWD"=>"password", "Database"=>"dbname");
    $conn = sqlsrv_connect( $serverName, $connOptions );
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    //-------------------------------------
    // Perform database operations here.
    //-------------------------------------

    // Close the connection.
    sqlsrv_close( $conn );
    ?>

### Ayrıca Bakınız

- sqlsrv_connect() - Opens a connection to a Microsoft SQL Server database

# sqlsrv_commit

(No version information available, might only be in Git)

sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction()

### Açıklama

function sqlsrv_commit(resource `$conn`): bool

Commits a transaction that was begun with sqlsrv_begin_transaction(). The connection is returned to auto-commit mode after sqlsrv_commit() is called. The transaction that is committed includes all statements that were executed after the call to sqlsrv_begin_transaction(). Explicit transactions should be started and committed or rolled back using these functions instead of executing SQL statements that begin and commit/roll back transactions. For more information, see » SQLSRV Transactions.

### Bağımsız Değişkenler

`conn`
  The connection on which the transaction is to be committed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_commit() example

The following example demonstrates how to use sqlsrv_commit() together with sqlsrv_begin_transaction() and sqlsrv_rollback().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true ));
    }

    /* Begin the transaction. */
    if ( sqlsrv_begin_transaction( $conn ) === false ) {
         die( print_r( sqlsrv_errors(), true ));
    }

    /* Initialize parameter values. */
    $orderId = 1; $qty = 10; $productId = 100;

    /* Set up and execute the first query. */
    $sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
             VALUES (?, ?, ?)";
    $params1 = array( $orderId, $qty, $productId );
    $stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

    /* Set up and execute the second query. */
    $sql2 = "UPDATE InventoryTable
             SET Quantity = (Quantity - ?)
             WHERE ProductID = ?";
    $params2 = array($qty, $productId);
    $stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

    /* If both queries were successful, commit the transaction. */
    /* Otherwise, rollback the transaction. */
    if( $stmt1 && $stmt2 ) {
         sqlsrv_commit( $conn );
         echo "Transaction committed.<br />";
    } else {
         sqlsrv_rollback( $conn );
         echo "Transaction rolled back.<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_begin_transaction() - Begins a database transaction
- sqlsrv_rollback() - Rolls back a transaction that was begun with sqlsrv_begin_transaction

# sqlsrv_configure

(No version information available, might only be in Git)

sqlsrv_configure — Changes the driver error handling and logging configurations

### Açıklama

function sqlsrv_configure(string `$setting`, mixed `$value`): bool

Changes the driver error handling and logging configurations.

### Bağımsız Değişkenler

`setting`
  The name of the setting to set. The possible values are "WarningsReturnAsErrors", "LogSubsystems", and "LogSeverity".
`value`

  The value of the specified setting. The following table shows possible values:

  Error and Logging Setting Options
  Setting | Options
  --- | ---
  WarningsReturnAsErrors | 1 (`true`) or 0 (`false`)
  LogSubsystems | SQLSRV_LOG_SYSTEM_ALL (-1) SQLSRV_LOG_SYSTEM_CONN (2) SQLSRV_LOG_SYSTEM_INIT (1) SQLSRV_LOG_SYSTEM_OFF (0) SQLSRV_LOG_SYSTEM_STMT (4) SQLSRV_LOG_SYSTEM_UTIL (8)
  LogSeverity | SQLSRV_LOG_SEVERITY_ALL (-1) SQLSRV_LOG_SEVERITY_ERROR (1) SQLSRV_LOG_SEVERITY_NOTICE (4) SQLSRV_LOG_SEVERITY_WARNING (2)

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- » SQLSRV Error Handling.
- » Logging SQLSRV Activity.

# sqlsrv_connect

(No version information available, might only be in Git)

sqlsrv_connect — Opens a connection to a Microsoft SQL Server database

### Açıklama

function sqlsrv_connect(string `$serverName`, array `$connectionInfo` = ?): resource

Opens a connection to a Microsoft SQL Server database. By default, the connection is attempted using Windows Authentication. To connect using SQL Server Authentication, include "UID" and "PWD" in the connection options array.

### Bağımsız Değişkenler

`serverName`
  The name of the server to which a connection is established. To connect to a specific instance, follow the server name with a backward slash and the instance name (e.g. serverName\sqlexpress).
`connectionInfo`
  An associative array that specifies options for connecting to the server. If values for the UID and PWD keys are not specified, the connection will be attempted using Windows Authentication. For a complete list of supported keys, see » SQLSRV Connection Options.

### Dönen Değerler

A connection resource. If a connection cannot be successfully opened, `false` is returned.

### Örnekler

Örnek 1 Connect using Windows Authentication.

    <?php
    $serverName = "serverName\\sqlexpress"; //serverName\instanceName

    // Since UID and PWD are not specified in the $connectionInfo array,
    // The connection will be attempted using Windows Authentication.
    $connectionInfo = array( "Database"=>"dbName");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);

    if( $conn ) {
         echo "Connection established.<br />";
    }else{
         echo "Connection could not be established.<br />";
         die( print_r( sqlsrv_errors(), true));
    }
    ?>

Örnek 2 Connect by specifying a user name and password.

    <?php
    $serverName = "serverName\\sqlexpress"; //serverName\instanceName
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);

    if( $conn ) {
         echo "Connection established.<br />";
    }else{
         echo "Connection could not be established.<br />";
         die( print_r( sqlsrv_errors(), true));
    }
    ?>

Örnek 3 Connect on a specified port.

    <?php
    $serverName = "serverName\\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433)
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);

    if( $conn ) {
         echo "Connection established.<br />";
    }else{
         echo "Connection could not be established.<br />";
         die( print_r( sqlsrv_errors(), true));
    }
    ?>

### Notlar

By default, the sqlsrv_connect() uses connection pooling to improve connection performance. To turn off connection pooling (i.e. force a new connection on each call), set the "ConnectionPooling" option in the $connectionOptions array to 0 (or `false`). For more information, see » SQLSRV Connection Pooling.

The SQLSRV extension does not have a dedicated function for changing which database is connected to. The target database is specified in the $connectionOptions array that is passed to sqlsrv_connect. To change the database on an open connection, execute the following query "USE dbName" (e.g. sqlsrv_query($conn, "USE dbName")).

### Ayrıca Bakınız

- sqlsrv_close() - Closes an open connection and releases resources associated with the connection
- sqlsrv_errors() - Returns error and warning information about the last SQLSRV operation performed
- sqlsrv_query() - Prepares and executes a query

# sqlsrv_errors

(No version information available, might only be in Git)

sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed

### Açıklama

function sqlsrv_errors(int `$errorsOrWarnings` = ?): mixed

Returns error and warning information about the last SQLSRV operation performed.

### Bağımsız Değişkenler

`errorsOrWarnings`
  Determines whether error information, warning information, or both are returned. If this parameter is not supplied, both error information and warning information are returned. The following are the supported values for this parameter: SQLSRV_ERR_ALL, SQLSRV_ERR_ERRORS, SQLSRV_ERR_WARNINGS.

### Dönen Değerler

If errors and/or warnings occurred on the last sqlsrv operation, an array of arrays containing error information is returned. If no errors and/or warnings occurred on the last sqlsrv operation, `null` is returned. The following table describes the structure of the returned arrays:

Array returned by sqlsrv_errors
Key | Description
--- | ---
SQLSTATE | For errors that originate from the ODBC driver, the SQLSTATE returned by ODBC. For errors that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of IMSSP. For warnings that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of 01SSP.
code | For errors that originate from SQL Server, the native SQL Server error code. For errors that originate from the ODBC driver, the error code returned by ODBC. For errors that originate from the Microsoft Drivers for PHP for SQL Server, the Microsoft Drivers for PHP for SQL Server error code.
message | A description of the error.

### Örnekler

Örnek 1 functionname() example

    <?php
    $serverName = "serverName/sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    /* Set up a query to select an invalid column name. */
    $sql = "SELECT BadColumnName FROM Table_1";

    /* Execution of the query will fail because of the bad column name. */
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false ) {
        if( ($errors = sqlsrv_errors() ) != null) {
            foreach( $errors as $error ) {
                echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
                echo "code: ".$error[ 'code']."<br />";
                echo "message: ".$error[ 'message']."<br />";
            }
        }
    }
    ?>

### Notlar

By default, warnings generated on a call to any SQLSRV function are treated as errors. This means that if a warning occurs on a call to a SQLSRV function, the function returns `false`. However, warnings that correspond to SQLSTATE values 01000, 01001, 01003, and 01S02 are never treated as errors. For information about changing this behavior, see sqlsrv_configure() and the WarningsReturnAsErrors setting.

### Ayrıca Bakınız

- sqlsrv_configure() - Changes the driver error handling and logging configurations

# sqlsrv_execute

(No version information available, might only be in Git)

sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare()

### Açıklama

function sqlsrv_execute(resource `$stmt`): bool

Executes a statement prepared with sqlsrv_prepare(). This function is ideal for executing a prepared statement multiple times with different parameter values.

### Bağımsız Değişkenler

`stmt`
  A statement resource returned by sqlsrv_prepare().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_execute() example

This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false) {
        die( print_r( sqlsrv_errors(), true));
    }

    $sql = "UPDATE Table_1
            SET OrderQty = ?
            WHERE SalesOrderID = ?";

    // Initialize parameters and prepare the statement.
    // Variables $qty and $id are bound to the statement, $stmt.
    $qty = 0; $id = 0;
    $stmt = sqlsrv_prepare( $conn, $sql, array( &$qty, &$id));
    if( !$stmt ) {
        die( print_r( sqlsrv_errors(), true));
    }

    // Set up the SalesOrderDetailID and OrderQty information.
    // This array maps the order ID to order quantity in key=>value pairs.
    $orders = array( 1=>10, 2=>20, 3=>30);

    // Execute the statement for each order.
    foreach( $orders as $id => $qty) {
        // Because $id and $qty are bound to $stmt1, their updated
        // values are used with each execution of the statement.
        if( sqlsrv_execute( $stmt ) === false ) {
              die( print_r( sqlsrv_errors(), true));
        }
    }
    ?>

### Notlar

When you prepare a statement that uses variables as parameters, the variables are bound to the statement. This means that if you update the values of the variables, the next time you execute the statement it will run with updated parameter values. For statements that you plan to execute only once, use sqlsrv_query().

### Ayrıca Bakınız

- sqlsrv_prepare() - Prepares a query for execution
- sqlsrv_query() - Prepares and executes a query

# sqlsrv_fetch

(No version information available, might only be in Git)

sqlsrv_fetch — Makes the next row in a result set available for reading

### Açıklama

function sqlsrv_fetch(resource `$stmt`, int `$row` = ?, int `$offset` = ?): mixed

Makes the next row in a result set available for reading. Use sqlsrv_get_field() to read the fields of the row.

### Bağımsız Değişkenler

`stmt`
  A statement resource created by executing sqlsrv_query() or sqlsrv_execute().
`row`

  The row to be accessed. This parameter can only be used if the specified statement was prepared with a scrollable cursor. In that case, this parameter can take on one of the following values:

  - SQLSRV_SCROLL_NEXT
  - SQLSRV_SCROLL_PRIOR
  - SQLSRV_SCROLL_FIRST
  - SQLSRV_SCROLL_LAST
  - SQLSRV_SCROLL_ABSOLUTE
  - SQLSRV_SCROLL_RELATIVE
`offset`
  Specifies the row to be accessed if the row parameter is set to `SQLSRV_SCROLL_ABSOLUTE` or `SQLSRV_SCROLL_RELATIVE`. Note that the first row in a result set has index 0.

### Dönen Değerler

Returns `true` if the next row of a result set was successfully retrieved, `false` if an error occurs, and `null` if there are no more rows in the result set.

### Örnekler

Örnek 1 sqlsrv_fetch() example

The following example demonstrates how to retrieve a row with sqlsrv_fetch() and get the row fields with sqlsrv_get_field().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT Name, Comment
            FROM Table_1
            WHERE ReviewID=1";
    $stmt = sqlsrv_query( $conn, $sql);
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    // Make the first (and in this case, only) row of the result set available for reading.
    if( sqlsrv_fetch( $stmt ) === false) {
         die( print_r( sqlsrv_errors(), true));
    }

    // Get the row fields. Field indices start at 0 and must be retrieved in order.
    // Retrieving row fields by name is not supported by sqlsrv_get_field.
    $name = sqlsrv_get_field( $stmt, 0);
    echo "$name: ";

    $comment = sqlsrv_get_field( $stmt, 1);
    echo $comment;
    ?>

### Ayrıca Bakınız

- sqlsrv_get_field() - Gets field data from the currently selected row
- sqlsrv_fetch_array() - Returns a row as an array
- sqlsrv_fetch_object() - Retrieves the next row of data in a result set as an object

# sqlsrv_fetch_array

(No version information available, might only be in Git)

sqlsrv_fetch_array — Returns a row as an array

### Açıklama

function sqlsrv_fetch_array(
resource `$stmt`,
int `$fetchType` = ?,
int `$row` = ?,
int `$offset` = ?
): array

Returns the next available row of data as an associative array, a numeric array, or both (the default).

### Bağımsız Değişkenler

`stmt`
  A statement resource returned by sqlsrv_query or sqlsrv_prepare.
`fetchType`
  A predefined constant specifying the type of array to return. Possible values are `SQLSRV_FETCH_ASSOC`, `SQLSRV_FETCH_NUMERIC`, and `SQLSRV_FETCH_BOTH` (the default). A fetch type of SQLSRV_FETCH_ASSOC should not be used when consuming a result set with multiple columns of the same name.
`row`
  Specifies the row to access in a result set that uses a scrollable cursor. Possible values are `SQLSRV_SCROLL_NEXT`, `SQLSRV_SCROLL_PRIOR`, `SQLSRV_SCROLL_FIRST`, `SQLSRV_SCROLL_LAST`, `SQLSRV_SCROLL_ABSOLUTE` and, `SQLSRV_SCROLL_RELATIVE` (the default). When this parameter is specified, the `fetchType` must be explicitly defined.
`offset`
  Specifies the row to be accessed if the row parameter is set to `SQLSRV_SCROLL_ABSOLUTE` or `SQLSRV_SCROLL_RELATIVE`. Note that the first row in a result set has index 0.

### Dönen Değerler

Returns an array on success, `null` if there are no more rows to return, and `false` if an error occurs.

### Örnekler

Örnek 1 Retrieving an associative array.

    <?php
    $serverName = "serverName\instanceName";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo );
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT FirstName, LastName FROM SomeTable";
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
          echo $row['LastName'].", ".$row['FirstName']."<br />";
    }

    sqlsrv_free_stmt( $stmt);
    ?>

Örnek 2 Retrieving a numeric array.

    <?php
    $serverName = "serverName\instanceName";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo );
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT FirstName, LastName FROM SomeTable";
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
          echo $row[0].", ".$row[1]."<br />";
    }

    sqlsrv_free_stmt( $stmt);
    ?>

### Notlar

Not specifying the `fetchType` or explicitly using the `SQLSRV_FETCH_TYPE` constant in the examples above will return an array that has both associative and numeric keys.

If more than one column is returned with the same name, the last column will take precedence. To avoid field name collisions, use aliases.

If a column with no name is returned, the associative key for the array element will be an empty string ("").

### Ayrıca Bakınız

- sqlsrv_connect() - Opens a connection to a Microsoft SQL Server database
- sqlsrv_query() - Prepares and executes a query
- sqlsrv_errors() - Returns error and warning information about the last SQLSRV operation performed
- sqlsrv_fetch() - Makes the next row in a result set available for reading

# sqlsrv_fetch_object

(No version information available, might only be in Git)

sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object

### Açıklama

function sqlsrv_fetch_object(
resource `$stmt`,
string `$className` = ?,
array `$ctorParams` = ?,
int `$row` = ?,
int `$offset` = ?
): mixed

Retrieves the next row of data in a result set as an instance of the specified class with properties that match the row field names and values that correspond to the row field values.

### Bağımsız Değişkenler

`stmt`
  A statement resource created by sqlsrv_query() or sqlsrv_execute().
`className`
  The name of the class to instantiate. If no class name is specified, stdClass is instantiated.
`ctorParams`
  Values passed to the constructor of the specified class. If the constructor of the specified class takes parameters, the ctorParams array must be supplied.
`row`

  The row to be accessed. This parameter can only be used if the specified statement was prepared with a scrollable cursor. In that case, this parameter can take on one of the following values:

  - SQLSRV_SCROLL_NEXT
  - SQLSRV_SCROLL_PRIOR
  - SQLSRV_SCROLL_FIRST
  - SQLSRV_SCROLL_LAST
  - SQLSRV_SCROLL_ABSOLUTE
  - SQLSRV_SCROLL_RELATIVE
`offset`
  Specifies the row to be accessed if the row parameter is set to `SQLSRV_SCROLL_ABSOLUTE` or `SQLSRV_SCROLL_RELATIVE`. Note that the first row in a result set has index 0.

### Dönen Değerler

Returns an object on success, `null` if there are no more rows to return, and `false` if an error occurs or if the specified class does not exist.

### Örnekler

Örnek 1 sqlsrv_fetch_object() example

The following example demonstrates how to retrieve a row as a stdClass object.

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT fName, lName FROM Table_1";
    $stmt = sqlsrv_query( $conn, $sql);
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    // Retrieve each row as an object.
    // Because no class is specified, each row will be retrieved as a stdClass object.
    // Property names correspond to field names.
    while( $obj = sqlsrv_fetch_object( $stmt)) {
          echo $obj->fName.", ".$obj->lName."<br />";
    }
    ?>

### Notlar

If a class name is specified with the optional $className parameter and the class has properties whose names match the result set field names, the corresponding result set values are applied to the properties. If a result set field name does not match a class property, a property with the result set field name is added to the object and the result set value is applied to the property. The following rules apply when using the $className parameter:

- Field-property name matching is case-sensitive.
- Field-property matching occurs regardless of access modifiers.
- Class property data types are ignored when applying a field value to a property.
- If the class does not exist, the function returns `false` and adds an error to the error collection.

Regardless of whether the $className parameter is supplied, if a field with no name is returned, the field value will be ignored and a warning will be added to the error collection.

When consuming a result set that has multiple columns with the same name, it may be better to use sqlsrv_fetch_array() or the combination of sqlsrv_fetch() and sqlsrv_get_field().

### Ayrıca Bakınız

- sqlsrv_fetch() - Makes the next row in a result set available for reading
- sqlsrv_fetch_array() - Returns a row as an array

# sqlsrv_field_metadata

(No version information available, might only be in Git)

sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare() or sqlsrv_query()

### Açıklama

function sqlsrv_field_metadata(resource `$stmt`): mixed

Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare() or sqlsrv_query(). sqlsrv_field_metadata() can be called on a statement before or after statement execution.

### Bağımsız Değişkenler

`stmt`
  The statement resource for which metadata is returned.

### Dönen Değerler

Returns an array of arrays on success. Otherwise, `false` is returned. Each returned array is described by the following table:

Array returned by sqlsrv_field_metadata
Key | Description
--- | ---
Name | The name of the field.
Type | The numeric value for the SQL type.
Size | The number of characters for fields of character type, the number of bytes for fields of binary type, or `null` for other types.
Precision | The precision for types of variable precision, `null` for other types.
Scale | The scale for types of variable scale, `null` for other types.
Nullable | An enumeration indicating whether the column is nullable, not nullable, or if it is not known.

For more information, see » sqlsrv_field_metadata in the Microsoft SQLSRV documentation.

### Örnekler

Örnek 1 sqlsrv_field_metadata() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"AdventureWorks", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
       die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT * FROM Table_1";
    $stmt = sqlsrv_prepare( $conn, $sql );

    foreach( sqlsrv_field_metadata( $stmt ) as $fieldMetadata ) {
        foreach( $fieldMetadata as $name => $value) {
           echo "$name: $value<br />";
        }
          echo "<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_client_info() - Returns information about the client and specified connection

# sqlsrv_free_stmt

(No version information available, might only be in Git)

sqlsrv_free_stmt — Frees all resources for the specified statement

### Açıklama

function sqlsrv_free_stmt(resource `$stmt`): bool

Frees all resources for the specified statement. The statement cannot be used after sqlsrv_free_stmt() has been called on it. If sqlsrv_free_stmt() is called on an in-progress statement that alters server state, statement execution is terminated and the statement is rolled back.

### Bağımsız Değişkenler

`stmt`
  The statement for which resources are freed. Note that `null` is a valid parameter value. This allows the function to be called multiple times in a script.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_free_stmt() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $stmt = sqlsrv_query( $conn, "SELECT * FROM Table_1");
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    /*-------------------------------
         Process query results here.
    -------------------------------*/

    /* Free the statement resources. */
    sqlsrv_free_stmt( $stmt);

    ?>

### Notlar

The main difference between sqlsrv_free_stmt() and sqlsrv_cancel() is that a statement resource cancelled with sqlsrv_cancel() can be re-executed if it was created with sqlsrv_prepare(). A statement resource cancelled with sqlsrv_free_statement() cannot be re-executed.

### Ayrıca Bakınız

- sqlsrv_cancel() - Cancels a statement

# sqlsrv_get_config

(No version information available, might only be in Git)

sqlsrv_get_config — Returns the value of the specified configuration setting

### Açıklama

function sqlsrv_get_config(string `$setting`): mixed

Returns the value of the specified configuration setting.

### Bağımsız Değişkenler

`setting`
  The name of the setting for which the value is returned. For a list of configurable settings, see sqlsrv_configure().

### Dönen Değerler

Returns the value of the specified setting. If an invalid setting is specified, `false` is returned.

### Ayrıca Bakınız

- sqlsrv_configure() - Changes the driver error handling and logging configurations

# sqlsrv_get_field

(No version information available, might only be in Git)

sqlsrv_get_field — Gets field data from the currently selected row

### Açıklama

function sqlsrv_get_field(resource `$stmt`, int `$fieldIndex`, int `$getAsType` = ?): mixed

Gets field data from the currently selected row. Fields must be accessed in order. Field indices start at 0.

### Bağımsız Değişkenler

`stmt`
  A statement resource returned by sqlsrv_query() or sqlsrv_execute().
`fieldIndex`
  The index of the field to be retrieved. Field indices start at 0. Fields must be accessed in order. i.e. If you access field index 1, then field index 0 will not be available.
`getAsType`
  The PHP data type for the returned field data. If this parameter is not set, the field data will be returned as its default PHP data type. For information about default PHP data types, see » Default PHP Data Types in the Microsoft SQLSRV documentation.

### Dönen Değerler

Returns data from the specified field on success. Returns `false` otherwise.

### Örnekler

Örnek 1 sqlsrv_get_field() example

The following example demonstrates how to retrieve a row with sqlsrv_fetch() and get the row fields with sqlsrv_get_field().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT Name, Comment
            FROM Table_1
            WHERE ReviewID=1";
    $stmt = sqlsrv_query( $conn, $sql);
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    // Make the first (and in this case, only) row of the result set available for reading.
    if( sqlsrv_fetch( $stmt ) === false) {
         die( print_r( sqlsrv_errors(), true));
    }

    // Get the row fields. Field indices start at 0 and must be retrieved in order.
    // Retrieving row fields by name is not supported by sqlsrv_get_field.
    $name = sqlsrv_get_field( $stmt, 0);
    echo "$name: ";

    $comment = sqlsrv_get_field( $stmt, 1);
    echo $comment;
    ?>

### Ayrıca Bakınız

- sqlsrv_fetch() - Makes the next row in a result set available for reading
- sqlsrv_fetch_array() - Returns a row as an array
- sqlsrv_fetch_object() - Retrieves the next row of data in a result set as an object

# sqlsrv_has_rows

(No version information available, might only be in Git)

sqlsrv_has_rows — Indicates whether the specified statement has rows

### Açıklama

function sqlsrv_has_rows(resource `$stmt`): bool

Indicates whether the specified statement has rows.

### Bağımsız Değişkenler

`stmt`
  A statement resource returned by sqlsrv_query() or sqlsrv_execute().

### Dönen Değerler

Returns `true` if the specified statement has rows and `false` if the statement does not have rows or if an error occurred.

### Örnekler

Örnek 1 sqlsrv_has_rows() example

    <?php
    $server = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
    $conn = sqlsrv_connect( $server, $connectionInfo );

    $stmt = sqlsrv_query( $conn, "SELECT * FROM Table_1");

    if ($stmt) {
       $rows = sqlsrv_has_rows( $stmt );
       if ($rows === true)
          echo "There are rows. <br />";
       else
          echo "There are no rows. <br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_num_rows() - Retrieves the number of rows in a result set
- sqlsrv_query() - Prepares and executes a query

# sqlsrv_next_result

(No version information available, might only be in Git)

sqlsrv_next_result — Makes the next result of the specified statement active

### Açıklama

function sqlsrv_next_result(resource `$stmt`): mixed

Makes the next result of the specified statement active. Results include result sets, row counts, and output parameters.

### Bağımsız Değişkenler

`stmt`
  The statement on which the next result is being called.

### Dönen Değerler

Returns `true` if the next result was successfully retrieved, `false` if an error occurred, and `null` if there are no more results to retrieve.

### Örnekler

Örnek 1 sqlsrv_next_result() example

The following example executes a batch query that inserts into a table and then selects from the table. This produces two results on the statement: one for the rows affected by the INSERT and one for the rows returned by the SELECT. To get to the rows returned by the SELECT, sqlsrv_next_result() must be called to move past the first result.

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array("Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);

    $query = "INSERT INTO Table_1 (id, data) VALUES (?,?); SELECT * FROM TABLE_1;";
    $params = array(1, "some data");
    $stmt = sqlsrv_query($conn, $query, $params);

    // Consume the first result (rows affected by INSERT) without calling sqlsrv_next_result.
    echo "Rows affected: ".sqlsrv_rows_affected($stmt)."<br />";

    // Move to the next result and display results.
    $next_result = sqlsrv_next_result($stmt);
    if( $next_result ) {
       while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
          echo $row['id'].": ".$row['data']."<br />";
       }
    } elseif( is_null($next_result)) {
         echo "No more results.<br />";
    } else {
         die(print_r(sqlsrv_errors(), true));
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_query() - Prepares and executes a query
- sqlsrv_fetch_array() - Returns a row as an array
- sqlsrv_rows_affected() - Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

# sqlsrv_num_fields

(No version information available, might only be in Git)

sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement

### Açıklama

function sqlsrv_num_fields(resource `$stmt`): mixed

Retrieves the number of fields (columns) on a statement.

### Bağımsız Değişkenler

`stmt`
  The statement for which the number of fields is returned. sqlsrv_num_fields() can be called on a statement before or after statement execution.

### Dönen Değerler

Returns the number of fields on success. Returns `false` otherwise.

### Örnekler

Örnek 1 sqlsrv_num_fields() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
       die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT * FROM Table_1";
    $stmt = sqlsrv_query($conn, $sql);
    if( $stmt === false) {
       die( print_r( sqlsrv_errors(), true));
    }

    $numFields = sqlsrv_num_fields( $stmt );

    while( sqlsrv_fetch( $stmt )) {
       // Iterate through the fields of each row.
       for($i = 0; $i < $numFields; $i++) {
          echo sqlsrv_get_field($stmt, $i)." ";
       }
       echo "<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_field_metadata() - Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
- sqlsrv_fetch() - Makes the next row in a result set available for reading
- sqlsrv_get_field() - Gets field data from the currently selected row

# sqlsrv_num_rows

(No version information available, might only be in Git)

sqlsrv_num_rows — Retrieves the number of rows in a result set

### Açıklama

function sqlsrv_num_rows(resource `$stmt`): mixed

Retrieves the number of rows in a result set. This function requires that the statement resource be created with a static or keyset cursor. For more information, see sqlsrv_query(), sqlsrv_prepare(), or » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

### Bağımsız Değişkenler

`stmt`
  The statement for which the row count is returned. The statement resource must be created with a static or keyset cursor. For more information, see sqlsrv_query(), sqlsrv_prepare(), or » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

### Dönen Değerler

Returns the number of rows retrieved on success and `false` if an error occurred. If a forward cursor (the default) or dynamic cursor is used, `false` is returned.

### Örnekler

Örnek 1 sqlsrv_num_rows() example

    <?php
    $server = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
    $conn = sqlsrv_connect( $server, $connectionInfo );

    $sql = "SELECT * FROM Table_1";
    $params = array();
    $options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
    $stmt = sqlsrv_query( $conn, $sql , $params, $options );

    $row_count = sqlsrv_num_rows( $stmt );

    if ($row_count === false)
       echo "Error in retrieving row count.";
    else
       echo $row_count;
    ?>

### Ayrıca Bakınız

- sqlsrv_has_rows() - Indicates whether the specified statement has rows
- sqlsrv_rows_affected() - Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

# sqlsrv_prepare

(No version information available, might only be in Git)

sqlsrv_prepare — Prepares a query for execution

### Açıklama

function sqlsrv_prepare(
resource `$conn`,
string `$sql`,
array `$params` = ?,
array `$options` = ?
): mixed

Prepares a query for execution. This function is ideal for preparing a query that will be executed multiple times with different parameter values.

### Bağımsız Değişkenler

`conn`
  A connection resource returned by sqlsrv_connect().
`sql`
  The string that defines the query to be prepared and executed.
`params`

  An array specifying parameter information when executing a parameterized query. Array elements can be any of the following:

  - A literal value
  - A PHP variable
  - An array with this structure: array($value [, $direction [, $phpType [, $sqlType]]])
  The following table describes the elements in the array structure above:

  Array structure
  Element | Description
  --- | ---
  $value | A literal value, a PHP variable, or a PHP by-reference variable.
  $direction (optional) | One of the following SQLSRV constants used to indicate the parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN.
  $phpType (optional) | A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
  $sqlType (optional) | A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.

`options`
  An array specifying query property options. The supported keys are described in the following table:

  Query Options
  Key | Values | Description
  --- | --- | ---
  QueryTimeout | A positive integer value. | Sets the query timeout in seconds. By default, the driver will wait indefinitely for results.
  SendStreamParamsAtExec | `true` or `false` (the default is `true`) | Configures the driver to send all stream data at execution (`true`), or to send stream data in chunks (`false`). By default, the value is set to `true`. For more information, see sqlsrv_send_stream_data().
  Scrollable | SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, or SQLSRV_CURSOR_KEYSET | See » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

### Dönen Değerler

Returns a statement resource on success and `false` if an error occurred.

### Örnekler

Örnek 1 sqlsrv_prepare() example

This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false) {
        die( print_r( sqlsrv_errors(), true));
    }

    $sql = "UPDATE Table_1
            SET OrderQty = ?
            WHERE SalesOrderID = ?";

    // Initialize parameters and prepare the statement.
    // Variables $qty and $id are bound to the statement, $stmt.
    $qty = 0; $id = 0;
    $stmt = sqlsrv_prepare( $conn, $sql, array( &$qty, &$id));
    if( !$stmt ) {
        die( print_r( sqlsrv_errors(), true));
    }

    // Set up the SalesOrderDetailID and OrderQty information.
    // This array maps the order ID to order quantity in key=>value pairs.
    $orders = array( 1=>10, 2=>20, 3=>30);

    // Execute the statement for each order.
    foreach( $orders as $id => $qty) {
        // Because $id and $qty are bound to $stmt1, their updated
        // values are used with each execution of the statement.
        if( sqlsrv_execute( $stmt ) === false ) {
              die( print_r( sqlsrv_errors(), true));
        }
    }
    ?>

### Notlar

When you prepare a statement that uses variables as parameters, the variables are bound to the statement. This means that if you update the values of the variables, the next time you execute the statement it will run with updated parameter values. For statements that you plan to execute only once, use sqlsrv_query().

### Ayrıca Bakınız

- sqlsrv_execute() - Executes a statement prepared with sqlsrv_prepare
- sqlsrv_query() - Prepares and executes a query

# sqlsrv_query

(No version information available, might only be in Git)

sqlsrv_query — Prepares and executes a query

### Açıklama

function sqlsrv_query(
resource `$conn`,
string `$sql`,
array `$params` = ?,
array `$options` = ?
): mixed

Prepares and executes a query.

### Bağımsız Değişkenler

`conn`
  A connection resource returned by sqlsrv_connect().
`sql`
  The string that defines the query to be prepared and executed.
`params`

  An array specifying parameter information when executing a parameterized query. Array elements can be any of the following:

  - A literal value
  - A PHP variable
  - An array with this structure: array($value [, $direction [, $phpType [, $sqlType]]])
  The following table describes the elements in the array structure above:

  Array structure
  Element | Description
  --- | ---
  $value | A literal value, a PHP variable, or a PHP by-reference variable.
  $direction (optional) | One of the following SQLSRV constants used to indicate the parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN.
  $phpType (optional) | A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
  $sqlType (optional) | A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.

`options`
  An array specifying query property options. The supported keys are described in the following table:

  Query Options
  Key | Values | Description
  --- | --- | ---
  QueryTimeout | A positive integer value. | Sets the query timeout in seconds. By default, the driver will wait indefinitely for results.
  SendStreamParamsAtExec | `true` or `false` (the default is `true`) | Configures the driver to send all stream data at execution (`true`), or to send stream data in chunks (`false`). By default, the value is set to `true`. For more information, see sqlsrv_send_stream_data().
  Scrollable | SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, or SQLSRV_CURSOR_KEYSET | See » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

### Dönen Değerler

Returns a statement resource on success and `false` if an error occurred.

### Örnekler

Örnek 1 sqlsrv_query() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)";
    $params = array(1, "some data");

    $stmt = sqlsrv_query( $conn, $sql, $params);
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }
    ?>

### Notlar

For statements that you plan to execute only once, use sqlsrv_query(). If you intend to re-execute a statement with different parameter values, use the combination of sqlsrv_prepare() and sqlsrv_execute().

### Ayrıca Bakınız

- sqlsrv_prepare() - Prepares a query for execution
- sqlsrv_execute() - Executes a statement prepared with sqlsrv_prepare

# sqlsrv_rollback

(No version information available, might only be in Git)

sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction()

### Açıklama

function sqlsrv_rollback(resource `$conn`): bool

Rolls back a transaction that was begun with sqlsrv_begin_transaction() and returns the connection to auto-commit mode.

### Bağımsız Değişkenler

`conn`
  The connection resource returned by a call to sqlsrv_connect().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 sqlsrv_rollback() example

The following example demonstrates how to use sqlsrv_begin_transaction() together with sqlsrv_commit() and sqlsrv_rollback().

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true ));
    }

    /* Begin the transaction. */
    if ( sqlsrv_begin_transaction( $conn ) === false ) {
         die( print_r( sqlsrv_errors(), true ));
    }

    /* Initialize parameter values. */
    $orderId = 1; $qty = 10; $productId = 100;

    /* Set up and execute the first query. */
    $sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
             VALUES (?, ?, ?)";
    $params1 = array( $orderId, $qty, $productId );
    $stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

    /* Set up and execute the second query. */
    $sql2 = "UPDATE InventoryTable
             SET Quantity = (Quantity - ?)
             WHERE ProductID = ?";
    $params2 = array($qty, $productId);
    $stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

    /* If both queries were successful, commit the transaction. */
    /* Otherwise, rollback the transaction. */
    if( $stmt1 && $stmt2 ) {
         sqlsrv_commit( $conn );
         echo "Transaction committed.<br />";
    } else {
         sqlsrv_rollback( $conn );
         echo "Transaction rolled back.<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_begin_transaction() - Begins a database transaction
- sqlsrv_commit() - Commits a transaction that was begun with sqlsrv_begin_transaction

# sqlsrv_rows_affected

(No version information available, might only be in Git)

sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

### Açıklama

function sqlsrv_rows_affected(resource `$stmt`): int|false

Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed. For information about the number of rows returned by a SELECT query, see sqlsrv_num_rows().

### Bağımsız Değişkenler

`stmt`
  The executed statement resource for which the number of affected rows is returned.

### Dönen Değerler

Returns the number of rows affected by the last INSERT, UPDATE, or DELETE query. If no rows were affected, 0 is returned. If the number of affected rows cannot be determined, -1 is returned. If an error occurred, `false` is returned.

### Örnekler

Örnek 1 sqlsrv_rows_affected() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "UPDATE Table_1 SET data = ? WHERE id = ?";

    $params = array("updated data", 1);

    $stmt = sqlsrv_query( $conn, $sql, $params);

    $rows_affected = sqlsrv_rows_affected( $stmt);
    if( $rows_affected === false) {
         die( print_r( sqlsrv_errors(), true));
    } elseif( $rows_affected == -1) {
          echo "No information available.<br />";
    } else {
          echo $rows_affected." rows were updated.<br />";
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_num_rows() - Retrieves the number of rows in a result set

# sqlsrv_send_stream_data

(No version information available, might only be in Git)

sqlsrv_send_stream_data — Sends data from parameter streams to the server

### Açıklama

function sqlsrv_send_stream_data(resource `$stmt`): bool

Send data from parameter streams to the server. Up to 8 KB of data is sent with each call.

### Bağımsız Değişkenler

`stmt`
  A statement resource returned by sqlsrv_query() or sqlsrv_execute().

### Dönen Değerler

Returns `true` if there is more data to send and `false` if there is not.

### Örnekler

Örnek 1 sqlsrv_send_stream_data() example

    <?php
    $serverName = "serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "UPDATE Table_1 SET data = ( ?) WHERE id = 100";

    // Open parameter data as a stream and put it in the $params array.
    $data = fopen( "data://text/plain,[ Lengthy content here. ]", "r");
    $params = array( &$data);

    // Prepare the statement. Use the $options array to turn off the
    // default behavior, which is to send all stream data at the time of query
    // execution.
    $options = array("SendStreamParamsAtExec"=>0);
    $stmt = sqlsrv_prepare( $conn, $sql, $params, $options);

    sqlsrv_execute( $stmt);

    // Send up to 8K of parameter data to the server
    // with each call to sqlsrv_send_stream_data.
    $i = 1;
    while( sqlsrv_send_stream_data( $stmt)) {
          $i++;
    }
    echo "$i calls were made.";
    ?>

### Ayrıca Bakınız

- sqlsrv_prepare() - Prepares a query for execution
- sqlsrv_query() - Prepares and executes a query

# sqlsrv_server_info

(No version information available, might only be in Git)

sqlsrv_server_info — Returns information about the server

### Açıklama

function sqlsrv_server_info(resource `$conn`): array

Returns information about the server.

### Bağımsız Değişkenler

`conn`
  The connection resource that connects the client and the server.

### Dönen Değerler

Returns an array as described in the following table:

Returned Array
CurrentDatabase | The connected-to database.
--- | ---
SQLServerVersion | The SQL Server version.
SQLServerName | The name of the server.

### Örnekler

Örnek 1 sqlsrv_server_info() example

    <?php
    $serverName = "serverName\sqlexpress";
    $conn = sqlsrv_connect( $serverName);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $server_info = sqlsrv_server_info( $conn);
    if( $server_info )
    {
        foreach( $server_info as $key => $value) {
           echo $key.": ".$value."<br />";
        }
    } else {
          die( print_r( sqlsrv_errors(), true));
    }
    ?>

### Ayrıca Bakınız

- sqlsrv_client_info() - Returns information about the client and specified connection

## İçindekiler

- sqlsrv_begin_transaction — Begins a database transaction
- sqlsrv_cancel — Cancels a statement
- sqlsrv_client_info — Returns information about the client and specified connection
- sqlsrv_close — Closes an open connection and releases resources associated with the connection
- sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction
- sqlsrv_configure — Changes the driver error handling and logging configurations
- sqlsrv_connect — Opens a connection to a Microsoft SQL Server database
- sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed
- sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare
- sqlsrv_fetch — Makes the next row in a result set available for reading
- sqlsrv_fetch_array — Returns a row as an array
- sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object
- sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
- sqlsrv_free_stmt — Frees all resources for the specified statement
- sqlsrv_get_config — Returns the value of the specified configuration setting
- sqlsrv_get_field — Gets field data from the currently selected row
- sqlsrv_has_rows — Indicates whether the specified statement has rows
- sqlsrv_next_result — Makes the next result of the specified statement active
- sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement
- sqlsrv_num_rows — Retrieves the number of rows in a result set
- sqlsrv_prepare — Prepares a query for execution
- sqlsrv_query — Prepares and executes a query
- sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction
- sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed
- sqlsrv_send_stream_data — Sends data from parameter streams to the server
- sqlsrv_server_info — Returns information about the server

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- SQLSRV İşlevleri
  - sqlsrv_begin_transaction — Begins a database transaction
  - sqlsrv_cancel — Cancels a statement
  - sqlsrv_client_info — Returns information about the client and specified connection
  - sqlsrv_close — Closes an open connection and releases resources associated with the connection
  - sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction
  - sqlsrv_configure — Changes the driver error handling and logging configurations
  - sqlsrv_connect — Opens a connection to a Microsoft SQL Server database
  - sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed
  - sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare
  - sqlsrv_fetch — Makes the next row in a result set available for reading
  - sqlsrv_fetch_array — Returns a row as an array
  - sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object
  - sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
  - sqlsrv_free_stmt — Frees all resources for the specified statement
  - sqlsrv_get_config — Returns the value of the specified configuration setting
  - sqlsrv_get_field — Gets field data from the currently selected row
  - sqlsrv_has_rows — Indicates whether the specified statement has rows
  - sqlsrv_next_result — Makes the next result of the specified statement active
  - sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement
  - sqlsrv_num_rows — Retrieves the number of rows in a result set
  - sqlsrv_prepare — Prepares a query for execution
  - sqlsrv_query — Prepares and executes a query
  - sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction
  - sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed
  - sqlsrv_send_stream_data — Sends data from parameter streams to the server
  - sqlsrv_server_info — Returns information about the server

- CUBRID
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - CUBRID İşlevleri
  - CUBRID MySQL Compatibility Functions
  - CUBRID Obsolete Aliases and Functions
- dBase
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - dBase İşlevleri
- Firebird/InterBase
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Firebird/InterBase İşlevleri
- IBM DB2 — IBM DB2, Cloudscape and Apache Derby
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - IBM DB2 İşlevleri
- MongoDB — MongoDB Extension
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Tutorials
  - Driver Architecture and Internals — Explains the driver architecture, and special features
  - Security
  - MongoDB\Driver — MongoDB Extension Classes
  - MongoDB\BSON — MongoDB BSON Classes and Functions
  - MongoDB\Driver\Monitoring — Monitoring classes and subscriber functions
  - MongoDB\Driver\Exception — Exception classes
- MySQL — MySQL Drivers and Plugins
  - Overview of the MySQL PHP drivers
  - MySQLi — MySQL Improved Extension
  - Mysql_xdevapi
  - MySQL (Özgün) — Özgün MySQL API
  - Mysqlnd — MySQL Native Driver
- OCI8 — Oracle OCI8
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - OCI8 Connection Handling and Connection Pooling
  - OCI8 Fast Application Notification (FAN) Support
  - OCI8 Transparent Application Failover (TAF) Support
  - OCI8 and DTrace Dynamic Tracing
  - Supported Datatypes
  - OCI8 İşlevleri
  - OCICollection — The OCICollection class
  - OCILob — The OCILob class
  - OCI8 Obsolete Aliases and Functions
- PostgreSQL
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - PostgreSQL İşlevleri
  - PgSql\Connection — The PgSql\Connection class
  - PgSql\Result — The PgSql\Result class
  - PgSql\Lob — The PgSql\Lob class
- SQLite3
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - SQLite3 — SQLite3 sınıfı
  - SQLite3Exception — The SQLite3Exception class
  - SQLite3Stmt — SQLite3Stmt sınıfı
  - SQLite3Result — SQLite3Result sınıfı
- SQLSRV — Microsoft SQL Server Driver for PHP
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - SQLSRV İşlevleri

- Soyutlama Katmanları
  - DBA — Database (dbm-style) Abstraction Layer
  - ODBC — ODBC (Tekilleştirilmiş)
  - PDO — PHP Veri Nesneleri
- Sağlayıcıya Göre Veritabanı Eklentileri
  - CUBRID
  - dBase
  - Firebird/InterBase
  - IBM DB2 — IBM DB2, Cloudscape and Apache Derby
  - MongoDB — MongoDB Extension
  - MySQL — MySQL Drivers and Plugins
  - OCI8 — Oracle OCI8
  - PostgreSQL
  - SQLite3
  - SQLSRV — Microsoft SQL Server Driver for PHP

# Tarih ve Saat ile İlgili Eklentiler

# Takvim

# Giriş

Takvim eklentisi farklı takvim biçimleri arasında dönüşüm işlemlerini basitleştirmek için işlevler sunar. Ara biçim veya standart olarak Jülyen Gün Sayısını alır. Jülyen Gün Sayısı M.Ö. 1 Ocak 4713 tarihinden başlayarak geçen günlerin sayısıdır. Takvim biçimleri arasında dönüşüm yapmak için önce Jülyen Gün Sayısını bulmalı ve sonra bu bilgiyi istediğiniz takvim bilgisine dönüştürmelisiniz. Jülyen Gün Sayısı, Jülyen takviminden çok farklıdır! Jülyen Gün Sayısı hakkında daha fazla bilgi için » http://www.hermetic.ch/cal_stud/jdn.htm adresini ziyaret edebilirsiniz. Takvim biçimleri hakkında ise » http://www.fourmilab.ch/documents/calendar/ adresinden yararlanabilirsiniz. Bu adresten yapılan alıntılar tırnak işaretleri içerisinde gösterilmiştir.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

İşlevlerin çalışabilmesi için, PHP'yi --enable-calendar seçeneği ile derlemelisiniz.

PHP'nin Windows sürümünde bu eklenti yerleşik olarak gelmektedir. Bu işlevleri Windows'ta kullanmak için herhangi bir eklenti kurulmasına gerek yoktur.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`CAL_EASTER_DEFAULT` (int)
  easter_days() için: Paskalya tatilini 1753'den önceki yıllar için Jülyen takvimine göre, sonraki yıllar için ise Miladî takvime göre hesaplar.
`CAL_EASTER_ROMAN` (int)
  easter_days() için: Paskalya tatilini 1582'den önceki yıllar için Jülyen takvimine göre, sonraki yıllar için ise Miladî takvime göre hesaplar.
`CAL_EASTER_ALWAYS_GREGORIAN` (int)
  easter_days() için: Paskalya tatilini ilerisini düşünerek Miladî takvime göre hesaplar.
`CAL_EASTER_ALWAYS_JULIAN` (int)
  easter_days() için: Paskalya tatilini Jülyen takvimine göre hesaplar.
`CAL_GREGORIAN` (int)
  cal_days_in_month(), cal_from_jd(), cal_info() ve cal_to_jd() için: İlerisini düşünen Miladî takvim kullanılır.
`CAL_JULIAN` (int)
  cal_days_in_month(), cal_from_jd(), cal_info() ve cal_to_jd() için: Jülyen takvimi kullanılır.
`CAL_JEWISH` (int)
  cal_days_in_month(), cal_from_jd(), cal_info() ve cal_to_jd() için: Yahudi takvimi kullanılır.
`CAL_FRENCH` (int)
  cal_days_in_month(), cal_from_jd(), cal_info() ve cal_to_jd() için: Fransız Cumhuriyetçi takvimi kullanılır.
`CAL_NUM_CALS` (int)
  Kullanılabilen takvim sayısı.
`CAL_JEWISH_ADD_ALAFIM_GERESH` (int)
  jdtojewish() için: Yıllara binlik ayracı olarak gereş simge (tek tırnağa benzer) ekler.
`CAL_JEWISH_ADD_ALAFIM` (int)
  jdtojewish() için: Yıllara binlik ayracı olarak alafim kelimesi ekler.
`CAL_JEWISH_ADD_GERESHAYIM` (int)
  jdtojewish() için: Gün ve yıl sayılarının son harfinden önce gerşayim simge (çift tırnağa benzer) ekler.
`CAL_DOW_DAYNO` (int)
  jddayofweek() için: Haftanın günleri int olarak ele alınır; Pazar için `0`, Cumartesi için `6`.
`CAL_DOW_SHORT` (int)
  jddayofweek() için: Günün ingilizce kısa ismi.
`CAL_DOW_LONG` (int)
  jddayofweek() için: Günün ingilizce ismi.
`CAL_MONTH_GREGORIAN_SHORT` (int)
  jdmonthname() için: Kısaltılmış Miladî ay ismi.
`CAL_MONTH_GREGORIAN_LONG` (int)
  jdmonthname() için: Miladî ay ismi.
`CAL_MONTH_JULIAN_SHORT` (int)
  jdmonthname() için: Kısaltılmış Jülyen ay ismi.
`CAL_MONTH_JULIAN_LONG` (int)
  jdmonthname() için: Jülyen ay ismi.
`CAL_MONTH_JEWISH` (int)
  jdmonthname() için: Yahudi ay ismi.
`CAL_MONTH_FRENCH` (int)
  jdmonthname() için: Fransız Cumhuriyetçi ay ismi.

# Takvim İşlevleri

# cal_days_in_month

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cal_days_in_month — Seçilen takvime ve yıla göre istenen aydaki gün sayısını geri döndürür

### Açıklama

function cal_days_in_month(int `$takvim`, int `$ay`, int `$yil`): int

İşlev seçilen `takvim`, `yil` ve `ay` bağımsız değişkenlerine göre gün sayısını geri döndürecektir.

### Bağımsız Değişkenler

`takvim`

  Hesaplama yapılacak takvim

`ay`

  Seçilen takvimdeki ay

`yil`

  Seçilen takvimdeki yıl

### Dönen Değerler

Bağımsız değişken olarak verilen takvimde, seçilen aydaki gün sayısı

### Örnekler

Örnek 1 cal_days_in_month() örneği

    <?php
    $num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
    echo "2003 yılı Ağustos ayında {$num} gün vardır";
    ?>

# cal_from_jd

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cal_from_jd — Jülyen Gün Sayısını, istenen takvim biçimine çevirir

### Açıklama

function cal_from_jd(int `$jülyen_günü`, int `$takvim`): array

cal_from_jd() işlevi `jülyen_günü` bağımsız değişkeni ile verilen Jülyen gününü `takvim` bağımsız değişkeni ile verilen takvim gününe çevirir. Desteklenen `takvim` değerleri `CAL_GREGORIAN`, `CAL_JULIAN`, `CAL_JEWISH` ve `CAL_FRENCH`'dir.

### Bağımsız Değişkenler

`jülyen_günü`

  Tamsayı olarak Jülyen günü

`takvim`

  İstenen takvim

### Dönen Değerler

Ay, gün, yıl, haftanın günü, gün ve ayın kısa ve uzun isimleri, "ay/gün/yıl" biçiminde tarih dizgesi öğelerini içeren dizi değişken döner. Haftanın günleri `0` (Pazar) ile `6` (Cumartesi) arasıdır.

### Örnekler

Örnek 1 cal_from_jd() örneği

    <?php
    $today = unixtojd(mktime(0, 0, 0, 8, 16, 2003));
    print_r(cal_from_jd($today, CAL_GREGORIAN));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [date] => 8/16/2003
        [month] => 8
        [day] => 16
        [year] => 2003
        [dow] => 6
        [abbrevdayname] => Sat
        [dayname] => Saturday
        [abbrevmonth] => Aug
        [monthname] => August
    )

### Ayrıca Bakınız

- cal_to_jd() - Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar
- jdtofrench() - Jülyen gün sayısını, Fransız İhtilali takvimine çevirir
- jdtogregorian() - Jülyen Gün Sayısını, Gregoryen tarihine çevirir
- jdtojewish() - Jülyen Gün Sayısını, Yahudi takvimine çevirir
- jdtojulian() - Jülyen Gün Sayısını, Jülyen takvim tarihine çevirir
- jdtounix() - Jülyen Gün Sayısını, Unix zaman damgasına çevirir

# cal_info

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cal_info — Bağımsız değişken olarak verilen takvim hakkında bilgi döner

### Açıklama

function cal_info(int `$takvim` = -1): array

cal_info() işlevi, verilmiş `takvim` bağımsız değişkenine ait bilgiler içeren dizi değişken döner.

Dizi değişken şu öğeleri içerir; `calname`, `calsymbol`, `month`, `abbrevmonth` ve `maxdaysinmonth`. `takvim` bağımsız değişkeni olarak:

- Gregoryen (Miladi) takvimi için 0 veya `CAL_GREGORIAN`
- Jülyen (Rumi) takvimi için 1 veya `CAL_JULIAN`
- Yahudi takvimi için 2 veya `CAL_JEWISH`
- Fransız ihtilali takvimi için 3 veya `CAL_FRENCH`

Eğer `takvim` değeri verilmez ise, desteklenen bütün takvimler hakkında bilgi içeren dizi dönecektir.

### Bağımsız Değişkenler

`takvim`

  Bilgi verilecek takvim. Eğer belirtilmezse, bütün takvimler hakkında bilgi döner.

### Dönen Değerler

### Örnekler

Örnek 1 cal_info() örneği

    <?php
    $info = cal_info(0);
    print_r($info);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [months] => Array
            (
                [1] => January
                [2] => February
                [3] => March
                [4] => April
                [5] => May
                [6] => June
                [7] => July
                [8] => August
                [9] => September
                [10] => October
                [11] => November
                [12] => December
            )

        [abbrevmonths] => Array
            (
                [1] => Jan
                [2] => Feb
                [3] => Mar
                [4] => Apr
                [5] => May
                [6] => Jun
                [7] => Jul
                [8] => Aug
                [9] => Sep
                [10] => Oct
                [11] => Nov
                [12] => Dec
            )

        [maxdaysinmonth] => 31
        [calname] => Gregorian
        [calsymbol] => CAL_GREGORIAN
    )

# cal_to_jd

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cal_to_jd — Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar

### Açıklama

function cal_to_jd(
int `$takvim`,
int `$ay`,
int `$gun`,
int `$yil`
): int

cal_to_jd() işlevi `calendar` bağımsız değişkenine göre Jülyen Gün Sayısını hesaplar. Desteklenen `takvim` türleri `CAL_GREGORIAN`, `CAL_JULIAN`, `CAL_JEWISH` ve `CAL_FRENCH`'dir.

### Bağımsız Değişkenler

`takvim`

  Dönüşüm yapılacak takvim `CAL_GREGORIAN`, `CAL_JULIAN`, `CAL_JEWISH` veya `CAL_FRENCH` değerlerinden biri olabilir.

`ay`

  Sayı olarak ay değeri, geçerli olan değer aralığı `takvim` bağımsız değişkenine bağlıdır

`gun`

  Sayı olarak gün değeri, gerçerli olan değer aralığı `takvim` bağımsız değişkenine bağlıdır

`yil`

  Sayı olarak yıl değeri, geçerli olan değer aralığı `takvim` bağımsız değişkenine bağlıdır

### Dönen Değerler

Jülyen Gün Sayısı.

### Ayrıca Bakınız

- cal_from_jd() - Jülyen Gün Sayısını, istenen takvim biçimine çevirir
- frenchtojd() - Fransız İhtilali takvim tarihini, Jülyen Gün Sayısına çevirir
- gregoriantojd() - Gregoryen tarihini, Jülyen Gün Sayısına çevirir
- jewishtojd() - Yahudi takvimindeki bir tarihi, Jülyen Gün Sayısına çevirir
- juliantojd() - Jülyen takvimindeki tarihi, Jülyen Gün Sayısına çevirir
- unixtojd() - Unix zaman damgasını, Jülyen Gün Sayısına çevirir

# easter_date

(PHP 4, PHP 5, PHP 7, PHP 8)

easter_date — Verilen yıl için paskalya gece yarısının unix zaman damgasını döner

### Açıklama

function easter_date(?int `$yıl` = `null`, int `$kip` = `CAL_EASTER_DEFAULT`): int

Verilen yıl için paskalya gece yarısının unix zaman damgasını döner.

Paskalya günü, ilk olarak M.S. 325 yılında İznik Konseyi tarafından, İlk dolunaydan veya Bahar ılımından (ekinoks) sonraki ilk pazar günü olarak tanımlanmıştır. Ilımın daima 21 Mart tarihine rastladığı varsayılır ve hesaplama dolunayın ve sonraki pazar gününün hesaplanmasına indirgenir. Kullanılan algoritma Dionysius Exiguus tarafından 532 yılında tanıtıldı. Jülyen takvimi döneminde (1753'den önceki yıllar) ayın evrelerini takip etmek için basit 19 yıllık çevrim kullanıldı. Gregoryen takvimi döneminde (1753'den sonraki yıllar - Clavius ve Lilius tarafından hazırlandı ve XIII Papa Gregory tarafından Ekim 1582'de tanıtıldı, Eylül 1752'de Britanya ve kolonilerine yayıldı) çevrimin daha doğru olması için 2 düzeltme değişkeni eklendi.

### Bağımsız Değişkenler

`yil`

  32 bitlik sistemlerde 1970-2037, 64 bitlik sistemlerde 1970-2,000,000,000 aralığındaki değerlerden biri. Atlanırsa veya `null` belirtilirse yerel zamana göre geçerli yıl öntanımlıdır.

`kip`

  `CAL_EASTER_ALWAYS_JULIAN` atanırsa Paskalya günlerinin Jülyen takvimine göre hesaplanmasını sağlar. Ayrıca, bkz. takvim sabitleri.

### Dönen Değerler

Unix zaman damgası olarak paskalya günü.

### Hatalar/İstisnalar

32 bitlik sistemlerde `yıl` 1970'ten önceyse veya 2037'den sonraysa veya 64 bitlik sistemlerde 2,000,000,000'dan sonraysa ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | 64 bitlik sistemlerde `yıl` artık 1970-2,000,000,000 aralığında değer kabul ediyor.
8.0.0 | `yıl` artık `null` olabiliyor.
8.0.0 | `yıl` izin verilen aralığın dışındaysa artık ValueError istisnası oluşuyor. Evvelce bir `E_WARNING` oluşur ve işlev `false` döndürürdü.

### Örnekler

Örnek 1 easter_date() örneği

    <?php

    echo date("M-d-Y", easter_date(1999));        // Apr-04-1999
    echo date("M-d-Y", easter_date(2000));        // Apr-23-2000
    echo date("M-d-Y", easter_date(2001));        // Apr-15-2001

    ?>

### Notlar

> Bilginize:

> easter_date(), PHP'nin dahili tarih ve saat işlevlerinden ziyade, sisteminizin C kütüphanesinin zaman işlevlerine dayanır. Sonuç olarak, easter_date(), PHP'nin öntanımlı saat dilimini kullanmak yerine, çalışması gereken saat dilimini belirlemek için `TZ` ortam değişkenini kullandığından, bu işlevi PHP'deki diğer tarih işlevleriyle birlikte kullanmak beklenmedik davranışlara neden olabilir.

> Geçici bir çözüm olarak, Paskalya'nın başlangıcını PHP saat diliminizde hesaplamak için easter_days() işlevi DateTime ve DateInterval ile aşağıdaki gibi kullanılabilir:

>     <?php
>     function get_easter_datetime($year) {
>         $base = new DateTime("$year-03-21");
>         $days = easter_days($year);

>         return $base->add(new DateInterval("P{$days}D"));
>     }

>     foreach (range(2012, 2015) as $year) {
>         printf("Easter in %d is on %s\n",
>                $year,
>                get_easter_datetime($year)->format('F j'));
>     }
>     ?>

> Yukarıdaki örneğin çıktısı:

>     Easter in 2012 is on April 8
>     Easter in 2013 is on March 31
>     Easter in 2014 is on April 20
>     Easter in 2015 is on April 5

Örnek 2 - easter_date() ile DateTime kullanımı

    <?php

    $timestamp = easter_date(2023);

    $datetime = new \DateTime();
    $datetime->setTimestamp($timestamp);

    echo $datetime->format('M-d-Y'); // Apr-09-2023

    ?>

### Ayrıca Bakınız

- 1970'den önce veya 2037'den sonraki Paskalya günleri için easter_days() - Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.

# easter_days

(PHP 4, PHP 5, PHP 7, PHP 8)

easter_days — Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.

### Açıklama

function easter_days(?int `$yıl` = `null`, int `$kip` = `CAL_EASTER_DEFAULT`): int

Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir. Yıl belirtilmezse öntanımlı olarak içinde bulunulan yıl alınır.

Bu işlev Unix zaman damgasının dışına düşen yıllarda (1970'den önce, 2037'den sonra), Paskalya gününü hesaplamak için easter_date() işlevi yerine kullanılabilir.

Paskalya günü, ilk olarak M.S. 325 yılında İznik Konseyi tarafından, İlk dolunaydan veya Bahar ılımından (ekinoks) sonraki ilk pazar günü olarak tanımlanmıştır. Ilımın daima 21 Mart tarihine rastladığı varsayılır ve hesaplama dolunayın ve sonraki pazar gününün hesaplanmasına indirgenir. Kullanılan algoritma Dionysius Exiguus tarafından 532 yılında tanıtıldı. Jülyen takvimi döneminde (1753'den önceki yıllar) ayın evrelerini takip etmek için basit 19 yıllık çevrim kullanıldı. Gregoryen takvimi döneminde (1753'den sonraki yıllar - Clavius ve Lilius tarafından hazırlandı ve XIII Papa Gregory tarafından Ekim 1582'de tanıtıldı, Eylül 1752'de Britanya ve kolonilerine yayıldı) çevrimin daha doğru olması için 2 düzeltme değişkeni eklendi.

(Simon Kershaw tarafından yazılan C programı temel alınmıştır, <webmaster at ely.anglican dot org>)

### Bağımsız Değişkenler

`yil`

  Pozitif sayı olarak yıl. Atlanırsa veya `null` belirtilirseyerel zamana göre geçerli yıl öntanımlıdır.

`kip`

  `CAL_EASTER_ROMAN` sabiti verildiği zaman 1582 - 1752 yılları için Gregoryen takvimi temel alınarak hesaplama yapar. Diğer sabitler için takvim sabitleri adresine bakınız.

### Dönen Değerler

Verilen `yil` bağımsız değişkeni için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 sürümünden beri | `yil` artık `null` olabiliyor.

### Örnekler

Örnek 1 easter_days() örneği

    <?php

    echo easter_days(1999);        // 14, i.e. April 4
    echo easter_days(1492);        // 32, i.e. April 22
    echo easter_days(1913);        //  2, i.e. March 23

    ?>

### Ayrıca Bakınız

- easter_date() - Verilen yıl için paskalya gece yarısının unix zaman damgasını döner

# frenchtojd

(PHP 4, PHP 5, PHP 7, PHP 8)

frenchtojd — Fransız İhtilali takvim tarihini, Jülyen Gün Sayısına çevirir

### Açıklama

function frenchtojd(int `$ay`, int `$gun`, int `$yil`): int

Fransız Cumhuriyet Takvim tarihini, Jülyen Gün Sayısına çevirir.

Bu işlev, sadece 1'den 14'e kadar olan yılları çevirir (Gregoryen tarihleri 22 Eylül 1792'den 22 Eylül 1806'ya kadar). Bu aralık takvimin kullanımda olduğu zamanlardan daha geniş bir dönemi kapsar.

### Bağımsız Değişkenler

`ay`

  1'den (Vendémiaire için), 13'e (her yılın sonundaki 5-6 gün için) kadar sayı olarak ay değeri

`gun`

  1'den 30'a kadar sayı olarak gün değeri

`yil`

  1 ile 14 arasında yıl değeri.

### Dönen Değerler

Tamsayı olarak, verilmiş Fransız İhtilali Tarihine karşılık gelen Jülyen Gün Sayısı.

### Ayrıca Bakınız

- jdtofrench() - Jülyen gün sayısını, Fransız İhtilali takvimine çevirir
- cal_to_jd() - Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar

# gregoriantojd

(PHP 4, PHP 5, PHP 7, PHP 8)

gregoriantojd — Gregoryen tarihini, Jülyen Gün Sayısına çevirir

### Açıklama

function gregoriantojd(int `$ay`, int `$gun`, int `$yil`): int

Gregoryen Takvimi için geçerli olan aralık M.Ö. 25 Kasım 4714 ile M.S. 31 Aralık 9999 arasıdır.

Bu işlev M.Ö. 4714'e kadar olan tarihleri işleyebilse de, bu tip bir kullanım anlamlı değildir. Gregoryen takvimi 15 Ekim 1582'ye (Jülyen takvimine göre 5 Ekim 1582) kadar kullanılmamıştır. Hatta bazı ülkeler bu tarihten daha sonra kullanmaya başlamıştır, örneğin; İngiliz krallığı 1752, SSCB 1918 ve Yunanistan 1923'de geçmiştir. Birçok Avrupa ülkesi Gregoryen takviminden önce Jülyen takvimini kullanmıştır.

### Bağımsız Değişkenler

`ay`

  1'den (Ocak), 12'ye (Aralık) kadar ay değeri

`gun`

  1 ile 31 arasında gün değeri. Ay belirtilenden daha az güne sahipse fazla günler sonraki aya taşar; bkz. aşağıdaki örnek.

`yil`

  -4714 ile 9999 arasında yıl değeri. Negatif sayılar M.Ö. yıllar, pozitif sayılar M.S. yıllardır. Sıfır yılı yoktur. 31 Aralık -1'den sonra 1 Ocak 1 gelir.

### Dönen Değerler

Gregoryen tarihine karşılık tamsayı olarak Jülyen Gün Sayısı. Geçerli aralığın dışında kalan tarihler için `0` döner.

### Örnekler

Örnek 1 Takvim işlevleri örneği

    <?php
    $jd = gregoriantojd(10, 11, 1970);
    echo "$jd\n";
    $gregorian = gregoriantojd($jd);
    echo "$gregorian\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2440871
    10/11/1970

Örnek 2 - Taşma durumu

    <?php
    echo gregoriantojd(2, 31, 2018), PHP_EOL,
         gregoriantojd(3,  3, 2018), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    2458181
    2458181

### Ayrıca Bakınız

- jdtogregorian() - Jülyen Gün Sayısını, Gregoryen tarihine çevirir
- cal_to_jd() - Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar

# JDDayOfWeek

(PHP 4, PHP 5, PHP 7, PHP 8)

JDDayOfWeek — Haftanın gününü verir

### Açıklama

function jddayofweek(int `$julyen_gunu`, int `$yöntem` = `CAL_DOW_DAYNO`): int|string

Haftanın gününü verir. Bağımsız değişken olarak verilen yöntem'e göre dizge veya tamsayı geri döner.

### Bağımsız Değişkenler

`julyen_gunu`

  Tamsayı olarak Jülyen Gün Sayısı

`yontem`

  Takvim hafta yöntemleri
  Yöntem | Anlamı
  --- | ---
  0 (Öntanımlı) | Tamsayı olarak gün sayısını döner (0=Pazar, 1=Pazartesi, v.b.)
  1 | Haftanın gününün dizge karşılığını döner (İngilizce-Gregoryen)
  2 | Günün kısaltılmış değerini döner (İngilizce-Gregoryen)

### Dönen Değerler

Dizge ya da tamsayı olarak, hafta gününün gregoryen değeri.

# jdmonthname

(PHP 4, PHP 5, PHP 7, PHP 8)

jdmonthname — Ay adını döndürür

### Açıklama

function jdmonthname(int `$julyen_gunu`, int `$kip`): string

Ay adını dizge olarak döndürür. `kip` Jülyen Gün Sayısının hangi takvim ve ay adına çevrileceğini belirler.

Takvim kipi değerleri
Yöntem | Anlamı | Değerleri
--- | --- | ---
`CAL_MONTH_GREGORIAN_SHORT` | Gregoryen - kısaltılmış | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
`CAL_MONTH_GREGORIAN_LONG` | Gregoryen | January, February, March, April, May, June, July, August, September, October, November, December
`CAL_MONTH_JULIAN_SHORT` | Jülyen - kısaltılmış | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
`CAL_MONTH_JULIAN_LONG` | Jülyen | January, February, March, April, May, June, July, August, September, October, November, December
`CAL_MONTH_JEWISH` | Yahudi | Tishri, Heshvan, Kislev, Tevet, Shevat, Adar, Adar I, Adar II, Nisan, Iyyar, Sivan, Tammuz, Av, Elul
`CAL_MONTH_FRENCH` | Fransız İhtilali | Vendemiaire, Brumaire, Frimaire, Nivose, Pluviose, Ventose, Germinal, Floreal, Prairial, Messidor, Thermidor, Fructidor, Extra

### Bağımsız Değişkenler

`julyen_gunu`

  Üzerinde işlem yapılacak Jülyen Günü

`kip`

  Ay adının alınacağı takvim kipi; bkz. yukarıdaki tablo.

### Dönen Değerler

Verilen Jülyen Günü ve `kip` bağımsız değişkenine göre ay adı.

# jdtofrench

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtofrench — Jülyen gün sayısını, Fransız İhtilali takvimine çevirir

### Açıklama

function jdtofrench(int `$julyen_gunu`): string

Jülyen gün sayısını, Fransız İhtilali takvimine çevirir.

### Bağımsız Değişkenler

`julyen_gunu`

  Tamsayı olarak Jülyen Gün Sayısı

### Dönen Değerler

"ay/gün/yıl" biçiminde, dizge olarak Fransız İhtilal takvimi tarihi

### Ayrıca Bakınız

- frenchtojd() - Fransız İhtilali takvim tarihini, Jülyen Gün Sayısına çevirir
- cal_from_jd() - Jülyen Gün Sayısını, istenen takvim biçimine çevirir

# jdtogregorian

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtogregorian — Jülyen Gün Sayısını, Gregoryen tarihine çevirir

### Açıklama

function jdtogregorian(int `$julyen_gunu`): string

Jülyen Gün Sayısını, "ay/gün/yıl" biçimindeki Gregoryen tarih dizgesine çevirir.

### Bağımsız Değişkenler

`julyen_gunu`

  Tamsayı olarak, Jülyen Gün Sayısı

### Dönen Değerler

"ay/gün/yıl" biçiminde, Gregoryen tarih dizgesi

### Ayrıca Bakınız

- gregoriantojd() - Gregoryen tarihini, Jülyen Gün Sayısına çevirir
- cal_from_jd() - Jülyen Gün Sayısını, istenen takvim biçimine çevirir

# jdtojewish

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtojewish — Jülyen Gün Sayısını, Yahudi takvimine çevirir

### Açıklama

function jdtojewish(int `$julyen_gunu`, bool `$ibrani` = `false`, int `$bicim` = 0): string

Jülyen Gün Sayısını, Yahudi takvimine çevirir.

### Bağımsız Değişkenler

`julyen_gunu`

  Tamsayı olarak Jülyen Gün Sayısı

`ibrani`

  `ibrani` bağımsız değişkeni `true` olarak ayarlanırsa, `bicim` bağımsız değişkeni, İbranice çıktıyı ISO-8859-8 kodlu dizge olarak biçimlendirmekte kullanılır.

`bicim`

  Geçerli sabitler şunlardır: `CAL_JEWISH_ADD_ALAFIM_GERESH`, `CAL_JEWISH_ADD_ALAFIM`, `CAL_JEWISH_ADD_GERESHAYIM`.

### Dönen Değerler

Dizge olarak, "ay/gün/yıl" biçiminde Yahudi takvimi tarihi veya `ibrani` `true` ise ISO-8859-8 kodlu İbranice tarih dizgesi

### Örnekler

Örnek 1 jdtojewish() örneği

    <?php
    $jd = gregoriantojd(10, 8, 2002);
    echo jdtojewish($jd, true), PHP_EOL,
         jdtojewish($jd, true, CAL_JEWISH_ADD_GERESHAYIM), PHP_EOL,
         jdtojewish($jd, true, CAL_JEWISH_ADD_ALAFIM), PHP_EOL,
         jdtojewish($jd, true,CAL_JEWISH_ADD_ALAFIM_GERESH), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    ב חשון התשסג
    ב' חשון התשס"ג
    ב חשון ה אלפים תשסג
    ב חשון ה'תשסג

### Ayrıca Bakınız

- jewishtojd() - Yahudi takvimindeki bir tarihi, Jülyen Gün Sayısına çevirir
- cal_from_jd() - Jülyen Gün Sayısını, istenen takvim biçimine çevirir

# jdtojulian

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtojulian — Jülyen Gün Sayısını, Jülyen takvim tarihine çevirir

### Açıklama

function jdtojulian(int `$julyen_gunu`): string

Jülyen Gün Sayısını, "ay/gün/yıl" biçiminde Jülyen takvim tarihine çevirir.

### Bağımsız Değişkenler

`julyen_gunu`

  Tamsayı olarak Jülyen Gün Sayısı

### Dönen Değerler

"ay/gün/yıl" biçiminde dizge olarak Jülyen takvimi tarihi

### Ayrıca Bakınız

- juliantojd() - Jülyen takvimindeki tarihi, Jülyen Gün Sayısına çevirir
- cal_from_jd() - Jülyen Gün Sayısını, istenen takvim biçimine çevirir

# jdtounix

(PHP 4, PHP 5, PHP 7, PHP 8)

jdtounix — Jülyen Gün Sayısını, Unix zaman damgasına çevirir

### Açıklama

function jdtounix(int `$julyen_gunu`): int

İşlev `julyengunu`'ne karşılık gelen Unix zaman damgasını döndürür. Zaman UTC'ye göredir.

### Bağımsız Değişkenler

`julyen_gunu`

  32 bit için `2440588` ve `2465443`, 64 bit için `2440588` ve `106751993607888` aralığında Jülyen gün sayısı.

### Dönen Değerler

Jülyen Gün Sayısına karşılık gelen günün başlangıcı (geceyarısı) için Unix zaman damgası.

### Hatalar/İstisnalar

`julyen_gunu` izin verilen aralığın dışındaysa bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu işlev başarısızlık durumunda artık `false` döndürmüyor, bir ValueError yavruluyor.
7.3.24, 7.4.12 | `julyen_gunu` için üst sınır genişletildi. Evvelce, mimariye bakılmaksızın `2465342` idi.

### Ayrıca Bakınız

- unixtojd() - Unix zaman damgasını, Jülyen Gün Sayısına çevirir

# jewishtojd

(PHP 4, PHP 5, PHP 7, PHP 8)

jewishtojd — Yahudi takvimindeki bir tarihi, Jülyen Gün Sayısına çevirir

### Açıklama

function jewishtojd(int `$ay`, int `$gun`, int `$yil`): int

İşlev, 1. yıldan (M.Ö. 3761) itibaren bütün tarihleri çevirebilse de, bu tip kullanım anlamlı değildir. Yahudi takvimi birkaç bin yıldan beri kullanımdadır, bununla birlikte ilk dönemlerinde bir ayın başlangıcı belirlemek için herhangi bir yol yoktu. Yeni bir ay, ilk hilal gözlendiğinde başlıyordu.

### Bağımsız Değişkenler

`ay`

  1'in Tişri, 13'ün Elul anlamına geldiği ve 1'den 13'e kadar bir sayı olarak ay. (6 ve 7 normal yıllarda Adar, ancak artık yıllarda Adar I ve Adar II adını alır.)

`gun`

  1 ile 30 aralığında sayı olarak gün. Ay 29 gün ise artan gün sonraki ayın birinci günü olur.

`yil`

  1 ile 9999 aralığında sayı olarak yıl

### Dönen Değerler

Yahudi tarihine karşılık gelen Jülyen Gün Sayısı.

### Ayrıca Bakınız

- jdtojewish() - Jülyen Gün Sayısını, Yahudi takvimine çevirir
- cal_to_jd() - Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar

# juliantojd

(PHP 4, PHP 5, PHP 7, PHP 8)

juliantojd — Jülyen takvimindeki tarihi, Jülyen Gün Sayısına çevirir

### Açıklama

function juliantojd(int `$ay`, int `$gun`, int `$yil`): int

Jülyen takviminin geçerli olduğu aralık M.Ö. 4713 ile M.S. 9999'dur.

İşlev, M.Ö. 4713 yılına kadar tarihler için dönüşüm yapabilse de, böyle kullanımlar anlamlı değildir. Takvim M.Ö. 46 yılında başlamıştır fakat M.S. 8 ve belki de 4. yüzyılın sonlarına kadar yaygın hale gelmemiştir. Ayrıca, yılın başlangıcı bir kültürden diğerine değişiyordu, hepsi Ocak ayını ilk ay olarak kabul etmemişti.

Dikkat

Şimdi dünya genelinde kullanılan takvim sistemin Gregoryen olduğunu unutmayın, gregoriantojd() işlevi tarihleri Jülyen Gün Sayısına çevirmek için kullanılabilir.

### Bağımsız Değişkenler

`ay`

  1 (Ocak) ile 12 (Aralık) aralığında sayı olarak ay

`gun`

  1 ile 31 aralığında sayı olarak gün

`yil`

  -4713 ile 9999 aralığında sayı olarak yıl değeri

### Dönen Değerler

Verilen Jülyen tarihine karşılık gelen Jülyen Gün Sayısı.

### Ayrıca Bakınız

- jdtojulian() - Jülyen Gün Sayısını, Jülyen takvim tarihine çevirir
- cal_to_jd() - Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar

# unixtojd

(PHP 4, PHP 5, PHP 7, PHP 8)

unixtojd — Unix zaman damgasını, Jülyen Gün Sayısına çevirir

### Açıklama

function unixtojd(?int `$zaman_damgası` = `null`): int|false

Verilen Unix `zaman_damgası` (1.1.1970'den başlayarak geçen saniye sayısı) için Jülyen Gün Sayısını döndürür, eğer `zaman_damgası` verilmez ise içinde bulunulan gün için Jülyen Gün Sayısını verir. Her iki durumda da zaman, yerel zamandır (UTC değil).

### Bağımsız Değişkenler

`zaman_damgası`

  Çevrilecek unix zaman damgası.

### Dönen Değerler

Tamsayı olarak jülyen gün sayısı, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Ayrıca Bakınız

- jdtounix() - Jülyen Gün Sayısını, Unix zaman damgasına çevirir

## İçindekiler

- cal_days_in_month — Seçilen takvime ve yıla göre istenen aydaki gün sayısını geri döndürür
- cal_from_jd — Jülyen Gün Sayısını, istenen takvim biçimine çevirir
- cal_info — Bağımsız değişken olarak verilen takvim hakkında bilgi döner
- cal_to_jd — Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar
- easter_date — Verilen yıl için paskalya gece yarısının unix zaman damgasını döner
- easter_days — Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.
- frenchtojd — Fransız İhtilali takvim tarihini, Jülyen Gün Sayısına çevirir
- gregoriantojd — Gregoryen tarihini, Jülyen Gün Sayısına çevirir
- JDDayOfWeek — Haftanın gününü verir
- jdmonthname — Ay adını döndürür
- jdtofrench — Jülyen gün sayısını, Fransız İhtilali takvimine çevirir
- jdtogregorian — Jülyen Gün Sayısını, Gregoryen tarihine çevirir
- jdtojewish — Jülyen Gün Sayısını, Yahudi takvimine çevirir
- jdtojulian — Jülyen Gün Sayısını, Jülyen takvim tarihine çevirir
- jdtounix — Jülyen Gün Sayısını, Unix zaman damgasına çevirir
- jewishtojd — Yahudi takvimindeki bir tarihi, Jülyen Gün Sayısına çevirir
- juliantojd — Jülyen takvimindeki tarihi, Jülyen Gün Sayısına çevirir
- unixtojd — Unix zaman damgasını, Jülyen Gün Sayısına çevirir

- Yapılandırma/Kurulum
  - Kurulum
- Öntanımlı Sabitler
- Takvim İşlevleri
  - cal_days_in_month — Seçilen takvime ve yıla göre istenen aydaki gün sayısını geri döndürür
  - cal_from_jd — Jülyen Gün Sayısını, istenen takvim biçimine çevirir
  - cal_info — Bağımsız değişken olarak verilen takvim hakkında bilgi döner
  - cal_to_jd — Desteklenen bir takvimden Jülyen Gün Sayısına dönüşüm yapar
  - easter_date — Verilen yıl için paskalya gece yarısının unix zaman damgasını döner
  - easter_days — Verilen yıl için Paskalya zamanına, 21 Marttan sonraki kalan gün sayısını verir.
  - frenchtojd — Fransız İhtilali takvim tarihini, Jülyen Gün Sayısına çevirir
  - gregoriantojd — Gregoryen tarihini, Jülyen Gün Sayısına çevirir
  - JDDayOfWeek — Haftanın gününü verir
  - jdmonthname — Ay adını döndürür
  - jdtofrench — Jülyen gün sayısını, Fransız İhtilali takvimine çevirir
  - jdtogregorian — Jülyen Gün Sayısını, Gregoryen tarihine çevirir
  - jdtojewish — Jülyen Gün Sayısını, Yahudi takvimine çevirir
  - jdtojulian — Jülyen Gün Sayısını, Jülyen takvim tarihine çevirir
  - jdtounix — Jülyen Gün Sayısını, Unix zaman damgasına çevirir
  - jewishtojd — Yahudi takvimindeki bir tarihi, Jülyen Gün Sayısına çevirir
  - juliantojd — Jülyen takvimindeki tarihi, Jülyen Gün Sayısına çevirir
  - unixtojd — Unix zaman damgasını, Jülyen Gün Sayısına çevirir

# Tarih ve Zaman

# Giriş

DateTimeImmutable ve ilgili diğer sınıflar tarih/zaman bilgisiyle işlem yapmak için kullanılabilir. Bu nesneler, geçerli sistem zamanından veya tarih/zaman bilgisini gösteren bir dizge aktarılarak oluşturulabilir.

Zaman dilimlerinin eldesi ve geçişleri de dahil olmak üzere bu bilgi üzerinde biçemleme ve değişiklik yapmak için zengin bir yöntem kümesi de sağlanmıştır.

PHP'deki tarih/saat özellikleri, Miladi takvimin yürürlüğe girmesinden önceki mevcut artık gün kurallarını hesaba katan ve aynı zamanda `MÖ 1` ve `MS 1` arasındaki yıl farkını `0` olarak ele alan ve bir » proleptik Miladi takvim olan ISO 8601 takvimini gerçekler. Artık saniyeler desteklenmez.

Tarih ve zaman bilgisi dahili olarak 64 bitlik bir sayı olarak saklanır, dolayısıyla mantıken kullanışlı tarihler (negatif yıllar dahil) desteklenir. Aralık, geçmişte yaklaşık 292 milyar yıldan, gelecekte yaklaşık 292 milyar yıla kadardır.

> Bilginize: Bu işlevlerde kullanılabilecek zaman dilimleri Desteklenen Zaman Dilimlerinin Listesi bölümünde bulunabilir.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

Bu işlevleri kullanmak için hiçbir şey kurmaya gerek yoktur; PHP çekirdeğinin parçasıdırlar.

> Bilginize: Güncel zaman dilimi veritabanının yüklenmesi

> Zaman dilimi veritabanın güncel sürümü, PECL'nin » zaman dilimi veritabanı olarak yüklenebilir.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Tarih/Saat Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
date.default_latitude | "31.7667" | `INI_ALL` |
date.default_longitude | "35.2333" | `INI_ALL` |
date.sunrise_zenith | "90.833333" | `INI_ALL` | PHP 8.0.0 öncesinde, "90.583333" öntanımlıydı.
date.sunset_zenith | "90.833333" | `INI_ALL` | PHP 8.0.0 öncesinde, "90.583333" öntanımlıydı.
date.timezone | "UTC" | `INI_ALL` | PHP 8.2 ve sonrasında, geçersiz bir değer veya boş dizge atanması bir uyarı ile sonuçlanmaktadır.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`date.default_latitude` float

  Varsayılan enlem. Ekvatorda `0`'dan başlar, kuzeye doğru `+90` ve güneye doğru `-90`'a kadardır.

`date.default_longitude` float

  Varsayılan boylam. Başlangıç meridyeninde `0`'dan başlar, doğuya doğru `+180` ve batıya doğru `-180`'e kadardır.

`date.sunrise_zenith` float

  Varsayılan gün doğumu başucu noktası.

  90°50' öntanımlı değerdir. Ek 50' iki bileşenden kaynaklanır: 16' Güneşin yarıçapından ve 34' atmosferik kırılmadan.

`date.sunset_zenith` float

  Varsayılan gün batımı başucu noktası.

`date.timezone` string

  Tüm tarih/saat işlevleri için öntanımlı zaman dilimi kullanılır. Öncelik sıralaması date_default_timezone_get() işlevinin sayfasında tanımlanmıştır. Desteklenen zaman dilimleri için Desteklenen Zaman Dilimlerinin Listesi sayfasına bakın.

> Bilginize: İlk dört yapılandırma seçeneği halen sadece date_sunrise() ile date_sunset() işlevlerinde kullanılmaktadır.

# Öntanımlı Sabitler

`DATE_*` sabitleri standart tarih gösterimi için tarih biçimlendirme işlevleriyle kullanılabilirler. (date() işlevi gibi).

Aşağıdaki sabitler date_sunrise() ile date_sunset() işlevleri tarafından biçim belirtmek için döndürülürler.

`SUNFUNCS_RET_TIMESTAMP` (int)
  Zaman damgası
`SUNFUNCS_RET_STRING` (int)
  Saat:dakika (örnek: `08:02`)
`SUNFUNCS_RET_DOUBLE` (int)
  Gerçek sayı olarak saat (örnek: `8.75`)

Sabitler | Açıklama
--- | ---
`DATE_*` sabitleri
`DATE_ATOM` | Atom (örnek: `2005-08-15T15:52:01+00:00`)
`DATE_COOKIE` | HTTP Çerezleri (örnek: `Monday, 15-Aug-2005 15:52:01 UTC`)
`DATE_ISO8601` | ISO-8601 (örnek: `2005-08-15T15:52:01+0000`) Bilginize: Bu biçem ISO-8601 ile uyumlu değildir, ancak geriye dönük uyumluluk nedeniyle bu şekilde bırakılmıştır. ISO-8601 ile uyumluluk için yerine `DATE_ISO8601_EXPANDED`, `DATE_ATOM` kullanılmalıdır (bkz. ISO8601:2004 bölüm 4.3.3 bent d).
`DATE_ISO8601_EXPANDED` | Genişletimiş ISO-8601 (örnek: `+10191-07-26T08:59:52+01:00`) Bilginize: Bu biçem ISO-8601'in normal `0000`-`9999` aralığının dışındaki yıllara bir im karakteri dahil ederek izin verir. Ayrıca ISO-8601 ile uyumlu olan zaman dilimi (`+01:00`) parçasını da içerir.
`DATE_RFC822` | RFC 822 (örnek: `Mon, 15 Aug 05 15:52:01 +0000`)
`DATE_RFC850` | RFC 850 (örnek: `Monday, 15-Aug-05 15:52:01 UTC`)
`DATE_RFC1036` | RFC 1036 (örnek: `Mon, 15 Aug 05 15:52:01 +0000`)
`DATE_RFC1123` | RFC 1123 (örnek: `Mon, 15 Aug 2005 15:52:01 +0000`)
`DATE_RFC7231` | RFC 7231 (PHP 7.0.19 ve 7.1.5 itibariyle) (örnek: `Sat, 30 Apr 2016 17:52:13 GMT`)
`DATE_RFC2822` | RFC 2822 (örnek: `Mon, 15 Aug 2005 15:52:01 +0000`)
`DATE_RFC3339` | `DATE_ATOM` ile aynı.
`DATE_RFC3339_EXTENDED` | RFC 3339 genişletilmiş biçem (örnek: `2005-08-15T15:52:01.000+00:00`)
`DATE_RSS` | RSS (örnek: `Mon, 15 Aug 2005 15:52:01 +0000`). `DATE_RFC1123` için takma ad.
`DATE_W3C` | World Wide Web uluslararası ticaret birliği. (örnek: `2005-08-15T15:52:01+00:00`). `DATE_RFC3339` için takma ad.

# Örnekler

## İçindekiler

- Date/Time Arithmetic

## Date/Time Arithmetic

The following examples show some pitfalls of Date/Time arithmetic with regard to DST transitions and months having different numbers of days.

Örnek 1 DateTimeImmutable::add/sub add intervals which cover elapsed time

Adding PT24H over a DST transition will appear to add 23/25 hours (for most timezones).

    <?php
    $dt = new DateTimeImmutable("2015-11-01 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->add(new DateInterval("PT3H"));
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    Start: 2015-11-01 00:00:00 -04:00
    End:   2015-11-01 02:00:00 -05:00

Örnek 2 DateTimeImmutable::modify and strtotime increment or decrement individual component values

Adding +24 hours over a DST transition will add exactly 24 hours as seen in the date/time string (unless the start or end time is on a transition point).

    <?php
    $dt = new DateTimeImmutable("2015-11-01 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->modify("+24 hours");
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    Start: 2015-11-01 00:00:00 -04:00
    End:   2015-11-02 00:00:00 -05:00

Örnek 3 Adding or subtracting times can over- or underflow dates

Like where January 31st + 1 month will result in March 2nd (leap year) or 3rd (normal year).

    <?php
    echo "Normal year:\n"; // February has 28 days
    $dt = new DateTimeImmutable("2015-01-31 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->modify("+1 month");
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

    echo "Leap year:\n"; // February has 29 days
    $dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->modify("+1 month");
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    Normal year:
    Start: 2015-01-31 00:00:00 -05:00
    End:   2015-03-03 00:00:00 -05:00
    Leap year:
    Start: 2016-01-31 00:00:00 -05:00
    End:   2016-03-02 00:00:00 -05:00

To get the last day of the next month (i.e. to prevent the overflow), the `last day of` format is available.

    <?php
    echo "Normal year:\n"; // February has 28 days
    $dt = new DateTimeImmutable("2015-01-31 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->modify("last day of next month");
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

    echo "Leap year:\n"; // February has 29 days
    $dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York"));
    echo "Start: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;
    $dt = $dt->modify("last day of next month");
    echo "End:   ", $dt->format("Y-m-d H:i:s P"), PHP_EOL;

Yukarıdaki örneğin çıktısı:

    Normal year:
    Start: 2015-01-31 00:00:00 -05:00
    End:   2015-02-28 00:00:00 -05:00
    Leap year:
    Start: 2016-01-31 00:00:00 -05:00
    End:   2016-02-29 00:00:00 -05:00

# DateTime sınıfı

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

## Giriş

Tarih ve zaman gösterimi.

Bu sınıf, DateTimeImmutable gibi davranır, ancak DateTime::modify() gibi değişiklik yapma yöntemleri çağrıldığında nesnelerin kendisi değiştirilir.

Uyarı

DateTime sınıfının nesnelerindeki yöntemlerin çağrılması bu nesnelerde tutulan bilgiyi değiştirir. Bunu engellemek için `clone` işleci kullanılarak yeni bir nesne oluşturulmalıdır. Önerilen bu davranışı öntanımlı olarak elde etmek için DateTime yerine DateTimeImmutable kullanılabilir.

## Sınıf Sözdizimi

class DateTime implements DateTimeInterface {
/* Miras alınan sabitler */
public const string DateTimeInterface::ATOM = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::COOKIE = "l, d-M-Y H:i:s T";
public const string DateTimeInterface::ISO8601 = "Y-m-d\\TH:i:sO";
public const string DateTimeInterface::ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC822 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC850 = "l, d-M-y H:i:s T";
public const string DateTimeInterface::RFC1036 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC1123 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string DateTimeInterface::RFC2822 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC3339 = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string DateTimeInterface::RSS = "D, d M Y H:i:s O";
public const string DateTimeInterface::W3C = "Y-m-d\\TH:i:sP";
/* Yöntemler */
public function __construct(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`)
public function add(DateInterval `$interval`): DateTime
public static function createFromFormat(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTime|false
public static function createFromImmutable(DateTimeImmutable `$object`): static
public static function createFromInterface(DateTimeInterface `$object`): DateTime
public static function createFromTimestamp(int|float `$timestamp`): static
public function modify(string `$modifier`): DateTime
public static function __set_state(array `$array`): DateTime
public function setDate(int `$year`, int `$month`, int `$day`): DateTime
public function setISODate(int `$year`, int `$week`, int `$dayOfWeek` = 1): DateTime
public function setMicrosecond(int `$microsecond`): static
public function setTime(
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTime
public function setTimestamp(int `$timestamp`): DateTime
public function setTimezone(DateTimeZone `$timezone`): DateTime
public function sub(DateInterval `$interval`): DateTime
public function diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public function format(string `$format`): string
public function getMicrosecond(): int
public function getOffset(): int
public function getTimestamp(): int
public function getTimezone(): DateTimeZone|false
public function __serialize(): array
public function __unserialize(array `$data`): void
#[\Deprecated]
public function __wakeup(): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | DateTime sınıfının sabitleri şimdi DateTimeInterface üzerinde tanımlı.
7.1.0 | DateTime kurucusu artık yapılandırılan değerdeki mikrosaniyeleri içerebiliyor, evvelce mikrosaniyeler daima `0` ile ilklendirilirdi.

# DateTime::add

# date_add

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::add -- date_add — Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds

### Açıklama

Nesne yönelimli kullanım

public function DateTime::add(DateInterval `$interval`): DateTime

Yordamsal kullanım

function date_add(DateTime `$object`, DateInterval `$interval`): DateTime

Adds the specified DateInterval object to the specified DateTime object.

Like DateTimeImmutable::add() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`interval`

  A DateInterval object

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Ayrıca Bakınız

- DateTimeImmutable::add() - Returns a new object, with added amount of days, months, years, hours, minutes and seconds

# DateTime::__construct

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::__construct — Returns new DateTime object

### Açıklama

public function DateTime::__construct(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`)

Like DateTimeImmutable::__construct() but works with DateTime. Consider using the DateTimeImmutable and features instead.

Returns a new DateTime object.

### Bağımsız Değişkenler

`datetime`

  Bir tarih/zaman dizgesi. Geçerli biçemler Tarih ve Zaman Biçemleri bölümünde açıklanmıştır.

  Enter `"now"` here to obtain the current time when using the `timezone` parameter.
`timezone`
  A DateTimeZone object representing the timezone of `datetime`. If `timezone` is omitted or `null`, the current timezone will be used.

  > Bilginize: The `timezone` parameter and the current timezone are ignored when the `datetime` parameter either is a UNIX timestamp (e.g. `@946684800`) or specifies a timezone (e.g. `2010-01-28T15:00:00+02:00`).

### Dönen Değerler

Returns a new DateTime instance.

### Hatalar/İstisnalar

If an invalid Date/Time string is passed, DateMalformedStringException is thrown. Previous to PHP 8.3, this was Exception.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws DateMalformedStringException if an invalid string is passed, instead of Exception.

### Ayrıca Bakınız

- DateTimeImmutable::__construct() - Returns new DateTimeImmutable object

# DateTime::createFromFormat

# date_create_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::createFromFormat -- date_create_from_format — Parses a time string according to a specified format

### Açıklama

Nesne yönelimli kullanım

public static function DateTime::createFromFormat(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTime|false

Yordamsal kullanım

function date_create_from_format(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTime|false

Returns a new DateTime object representing the date and time specified by the `datetime` string, which was formatted in the given `format`.

Like DateTimeImmutable::createFromFormat() and date_create_immutable_from_format(), respectively, but creates a DateTime object.

This method, including parameters, examples, and considerations are documented on the DateTimeImmutable::createFromFormat page.

### Bağımsız Değişkenler

See DateTimeImmutable::createFromFormat.

### Dönen Değerler

Returns a new DateTime instance başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

This method throws ValueError when the `datetime` contains NULL-bytes.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.21, 8.1.8, 8.2.0 | Now throws ValueError when NULL-bytes are passed into `datetime`, which previously was silently ignored.

### Örnekler

For an extensive set of examples, see DateTimeImmutable::createFromFormat.

### Ayrıca Bakınız

- DateTimeImmutable::createFromFormat() - Parses a time string according to a specified format

# DateTime::createFromImmutable

(PHP 7 >= 7.3.0, PHP 8)

DateTime::createFromImmutable — Returns new DateTime instance encapsulating the given DateTimeImmutable object

### Açıklama

public static function DateTime::createFromImmutable(DateTimeImmutable `$object`): static

### Bağımsız Değişkenler

`object`

  The immutable DateTimeImmutable object that needs to be converted to a mutable version. This object is not modified, but instead a new DateTime instance is created containing the same date, time, and timezone information.

### Dönen Değerler

Returns a new DateTime instance.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTime.

### Örnekler

Örnek 1 Creating a mutable date time object

    <?php
    $date = new DateTimeImmutable("2014-06-20 11:45 Europe/London");
    $mutable = DateTime::createFromImmutable( $date );

# DateTime::createFromInterface

(PHP 8)

DateTime::createFromInterface — Returns new DateTime object encapsulating the given DateTimeInterface object

### Açıklama

public static function DateTime::createFromInterface(DateTimeInterface `$object`): DateTime

### Bağımsız Değişkenler

`object`

  The DateTimeInterface object that needs to be converted to a mutable version. This object is not modified, but instead a new DateTime object is created containing the same date, time, and timezone information.

### Dönen Değerler

Returns a new DateTime instance.

### Örnekler

Örnek 1 Creating a mutable date time object

    <?php
    $date = new DateTimeImmutable("2014-06-20 11:45 Europe/London");
    $mutable = DateTime::createFromInterface($date);

    $date = new DateTime("2014-06-20 11:45 Europe/London");
    $also_mutable = DateTime::createFromInterface($date);

# DateTime::createFromTimestamp

(PHP 8 >= 8.4.0)

DateTime::createFromTimestamp — Creates an instance from a Unix timestamp

### Açıklama

public static function DateTime::createFromTimestamp(int|float `$timestamp`): static

Creates an instance from a Unix timestamp.

### Bağımsız Değişkenler

`timestamp`
  Unix timestamp representing the date. A float value is also accepted which allows for microsecond precision.

### Dönen Değerler

Returns a new DateTime instance.

### Hatalar/İstisnalar

If the `timestamp` is outside the range [`PHP_INT_MIN`, `PHP_INT_MAX`], a DateRangeError is thrown.

### Örnekler

Örnek 1 DateTime::createFromTimestamp() example

    <?php
    $date = DateTime::createFromTimestamp(123.456789);
    echo $date->format('Y-m-d H:i:s.u');
    ?>

Yukarıdaki örneğin çıktısı:

    1970-01-01 00:02:03.456789

# DateTime::getLastErrors

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::getLastErrors — Takma Adı: DateTimeImmutable::getLastErrors()

### Açıklama

Bu işlev şu işlevin takma adıdır: DateTimeImmutable::getLastErrors()

# DateTime::modify

# date_modify

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::modify -- date_modify — Alters the timestamp

### Açıklama

Nesne yönelimli kullanım

public function DateTime::modify(string `$modifier`): DateTime

Yordamsal kullanım

function date_modify(DateTime `$object`, string `$modifier`): DateTime|false

Alter the timestamp of a DateTime object by incrementing or decrementing in a format accepted by DateTimeImmutable::__construct().

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`modifier`

  Bir tarih/zaman dizgesi. Geçerli biçemler Tarih ve Zaman Biçemleri bölümünde açıklanmıştır.

### Dönen Değerler

Returns DateTime on success. Yordamsal kullanım başarısızlık durumunda `false` döndürür.

### Hatalar/İstisnalar

Object Oriented API only: If an invalid Date/Time string is passed, DateMalformedStringException is thrown.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Now has a tentative return type of DateTime. Previously it was DateTime|false.
8.3.0 | DateTime::modify() now throws DateMalformedStringException if an invalid string is passed. Previously, it returned `false`, and a warning was emitted. date_modify() has not been changed.

### Örnekler

Örnek 1 DateTime::modify() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTime('2006-12-12');
    $date->modify('+1 day');
    echo $date->format('Y-m-d');

Yukarıdaki örneğin çıktısı:

    2006-12-13

Yordamsal kullanım

    <?php
    $date = date_create('2006-12-12');
    date_modify($date, '+1 day');
    echo date_format($date, 'Y-m-d');

Yukarıdaki örneğin çıktısı:

    2006-12-13

Örnek 2 Beware when adding or subtracting months

    <?php
    $date = new DateTime('2000-12-31');

    $date->modify('+1 month');
    echo $date->format('Y-m-d') . "\n";

    $date->modify('+1 month');
    echo $date->format('Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2001-01-31
    2001-03-03

Örnek 3 All formats of Date and Time are supported

    <?php
    $date = new DateTime('2020-12-31');

    $date->modify('July 1st, 2023');
    echo $date->format('Y-m-d H:i') . "\n";

    $date->modify('Monday next week');
    echo $date->format('Y-m-d H:i') . "\n";

    $date->modify('17:30');
    echo $date->format('Y-m-d H:i') . "\n";

Yukarıdaki örneğin çıktısı:

    2023-07-01 00:00
    2023-07-03 00:00
    2023-07-03 17:30

### Ayrıca Bakınız

- strtotime() - Parse about any English textual datetime description into a Unix timestamp
- DateTimeImmutable::modify() - Creates a new object with modified timestamp
- DateTime::add() - Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
- DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
- DateTime::setDate() - Sets the date
- DateTime::setISODate() - Sets the ISO date
- DateTime::setTime() - Sets the time
- DateTime::setTimestamp() - Sets the date and time based on an Unix timestamp

# DateTime::__set_state

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::__set_state — The __set_state handler

### Açıklama

public static function DateTime::__set_state(array `$array`): DateTime

The __set_state() handler.

Like DateTimeImmutable::__set_state() but works with DateTime.

### Bağımsız Değişkenler

`array`

  Initialization array.

### Dönen Değerler

Returns a new instance of a DateTime object.

# DateTime::setDate

# date_date_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::setDate -- date_date_set — Sets the date

### Açıklama

Nesne yönelimli kullanım

public function DateTime::setDate(int `$year`, int `$month`, int `$day`): DateTime

Yordamsal kullanım

function date_date_set(
DateTime `$object`,
int `$year`,
int `$month`,
int `$day`
): DateTime

Resets the current date of the DateTime object to a different date.

Like DateTimeImmutable::setDate() but works with DateTime, and changes the existing object.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`year`

  Year of the date.

`month`

  Month of the date.

`day`

  Day of the date.

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Ayrıca Bakınız

- DateTimeImmutable::setDate() - Sets the date

# DateTime::setISODate

# date_isodate_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::setISODate -- date_isodate_set — Sets the ISO date

### Açıklama

Nesne yönelimli kullanım

public function DateTime::setISODate(int `$year`, int `$week`, int `$dayOfWeek` = 1): DateTime

Yordamsal kullanım

function date_isodate_set(
DateTime `$object`,
int `$year`,
int `$week`,
int `$dayOfWeek` = 1
): DateTime

Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.

Like DateTimeImmutable::setISODate() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`year`

  Year of the date.

`week`

  Week of the date.

`dayOfWeek`

  Offset from the first day of the week.

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Ayrıca Bakınız

- DateTimeImmutable::setISODate() - Sets the ISO date

# DateTime::setMicrosecond

(PHP 8 >= 8.4.0)

DateTime::setMicrosecond — Sets microsecond part of the time

### Açıklama

public function DateTime::setMicrosecond(int `$microsecond`): static

Sets microsecond part of the time.

Like DateTimeImmutable::setMicrosecond() but works with DateTime.

### Bağımsız Değişkenler

`microsecond`
  The microsecond value to set (`0` to `999999`).

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Hatalar/İstisnalar

If the `microsecond` is outside the range [`0`, `999999`], a DateRangeError is thrown.

### Örnekler

Örnek 1 DateTime::setMicrosecond() example

    <?php
    $date = DateTime::createFromTimestamp(123.456789);
    echo $date->format('Y-m-d H:i:s.u') . PHP_EOL;
    $date->setMicrosecond(987654);
    echo $date->format('Y-m-d H:i:s.u') . PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    1970-01-01 00:02:03.456789
    1970-01-01 00:02:03.987654

### Ayrıca Bakınız

- DateTimeInterface::getMicrosecond() - Gets the microsecond part of the Unix timestamp

# DateTime::setTime

# date_time_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::setTime -- date_time_set — Sets the time

### Açıklama

Nesne yönelimli kullanım

public function DateTime::setTime(
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTime

Yordamsal kullanım

function date_time_set(
DateTime `$object`,
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTime

Resets the current time of the DateTime object to a different time.

Like DateTimeImmutable::setTime() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`hour`

  Hour of the time.

`minute`

  Minute of the time.

`second`

  Second of the time.

`microsecond`

  Microsecond of the time.

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
7.1.0 | The `microsecond` parameter was added.

### Ayrıca Bakınız

- DateTimeImmutable::setTime() - Sets the time

# DateTime::setTimestamp

# date_timestamp_set

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::setTimestamp -- date_timestamp_set — Sets the date and time based on an Unix timestamp

### Açıklama

Nesne yönelimli kullanım

public function DateTime::setTimestamp(int `$timestamp`): DateTime

Yordamsal kullanım

function date_timestamp_set(DateTime `$object`, int `$timestamp`): DateTime

Sets the date and time based on an Unix timestamp.

Like DateTimeImmutable::setTimestamp() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`timestamp`

  Unix timestamp representing the date. Setting timestamps outside the range of int is possible by using DateTimeImmutable::modify() with the `@` format.

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Ayrıca Bakınız

- DateTimeImmutable::setTimestamp() - Sets the date and time based on a Unix timestamp
- DateTime::setMicrosecond() - Sets microsecond part of the time

# DateTime::setTimezone

# date_timezone_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::setTimezone -- date_timezone_set — Sets the time zone for the DateTime object

### Açıklama

Nesne yönelimli kullanım

public function DateTime::setTimezone(DateTimeZone `$timezone`): DateTime

Yordamsal kullanım

function date_timezone_set(DateTime `$object`, DateTimeZone `$timezone`): DateTime

Sets a new timezone for a DateTime object.

Like DateTimeImmutable::setTimezone() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`timezone`

  A DateTimeZone object representing the desired time zone.

### Dönen Değerler

Returns the DateTime object for method chaining. The underlying point-in-time is not changed when calling this method.

### Örnekler

Örnek 1 DateTime::setTimeZone() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    $date->setTimezone(new DateTimeZone('Pacific/Chatham'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

Yukarıdaki örneğin çıktısı:

    2000-01-01 00:00:00+12:00
    2000-01-01 01:45:00+13:45

Yordamsal kullanım

    <?php
    $date = date_create('2000-01-01', timezone_open('Pacific/Nauru'));
    echo date_format($date, 'Y-m-d H:i:sP') . "\n";

    date_timezone_set($date, timezone_open('Pacific/Chatham'));
    echo date_format($date, 'Y-m-d H:i:sP') . "\n";

Yukarıdaki örneğin çıktısı:

    2000-01-01 00:00:00+12:00
    2000-01-01 01:45:00+13:45

### Ayrıca Bakınız

- DateTimeImmutable::setTimezone() - Sets the time zone
- DateTime::getTimezone() - Return time zone relative to given DateTime
- DateTimeZone::__construct() - Yeni bir DateTimeZone nesnesi oluşturur

# DateTime::sub

# date_sub

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::sub -- date_sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

### Açıklama

Nesne yönelimli kullanım

public function DateTime::sub(DateInterval `$interval`): DateTime

Yordamsal kullanım

function date_sub(DateTime `$object`, DateInterval `$interval`): DateTime

Modifies the specified DateTime object, by subtracting the specified DateInterval object.

Like DateTimeImmutable::sub() but works with DateTime.

The procedural version takes the DateTime object as its first argument.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`interval`

  A DateInterval object

### Dönen Değerler

Yöntem zincirleme için değişmiş DateTime nesnesi döner.

### Hatalar/İstisnalar

Object Oriented API only: If an unsupported operation is attempted, such as using a DateInterval object representing relative time specifications such as `next weekday`, a DateInvalidOperationException is thrown.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a DateInvalidOperationException with DateTime::sub(), instead of a warning when an unsupported operation is attempted. date_sub() has not been changed.

### Ayrıca Bakınız

- DateTimeImmutable::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds

## İçindekiler

- DateTime::add — Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
- DateTime::__construct — Returns new DateTime object
- DateTime::createFromFormat — Parses a time string according to a specified format
- DateTime::createFromImmutable — Returns new DateTime instance encapsulating the given DateTimeImmutable object
- DateTime::createFromInterface — Returns new DateTime object encapsulating the given DateTimeInterface object
- DateTime::createFromTimestamp — Creates an instance from a Unix timestamp
- DateTime::getLastErrors — Takma Adı: DateTimeImmutable::getLastErrors
- DateTime::modify — Alters the timestamp
- DateTime::__set_state — The __set_state handler
- DateTime::setDate — Sets the date
- DateTime::setISODate — Sets the ISO date
- DateTime::setMicrosecond — Sets microsecond part of the time
- DateTime::setTime — Sets the time
- DateTime::setTimestamp — Sets the date and time based on an Unix timestamp
- DateTime::setTimezone — Sets the time zone for the DateTime object
- DateTime::sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

# DateTimeImmutable sınıfı

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

Tarih ve zaman gösterimi.

Bu sınıf, DateTime gibi davranır, ancak DateTime::modify() gibi değişiklik yapma yöntemleri çağrıldığında yeni nesneler döndürür.

## Sınıf Sözdizimi

class DateTimeImmutable implements DateTimeInterface {
/* Miras alınan sabitler */
public const string DateTimeInterface::ATOM = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::COOKIE = "l, d-M-Y H:i:s T";
public const string DateTimeInterface::ISO8601 = "Y-m-d\\TH:i:sO";
public const string DateTimeInterface::ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC822 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC850 = "l, d-M-y H:i:s T";
public const string DateTimeInterface::RFC1036 = "D, d M y H:i:s O";
public const string DateTimeInterface::RFC1123 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string DateTimeInterface::RFC2822 = "D, d M Y H:i:s O";
public const string DateTimeInterface::RFC3339 = "Y-m-d\\TH:i:sP";
public const string DateTimeInterface::RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string DateTimeInterface::RSS = "D, d M Y H:i:s O";
public const string DateTimeInterface::W3C = "Y-m-d\\TH:i:sP";
/* Yöntemler */
public function __construct(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`)
#[\NoDiscard(message: "as DateTimeImmutable::add() does not modify the object itself")]
public function add(DateInterval `$interval`): DateTimeImmutable
public static function createFromFormat(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = null): DateTimeImmutable|false
public static function createFromInterface(DateTimeInterface `$object`): DateTimeImmutable
public static function createFromMutable(DateTime `$object`): static
public static function createFromTimestamp(int|float `$timestamp`): static
public static function getLastErrors(): array|false
#[\NoDiscard(message: "as DateTimeImmutable::modify() does not modify the object itself")]
public function modify(string `$modifier`): DateTimeImmutable
public static function __set_state(array `$array`): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::setDate() does not modify the object itself")]
public function setDate(int `$year`, int `$month`, int `$day`): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::setISODate() does not modify the object itself")]
public function setISODate(int `$year`, int `$week`, int `$dayOfWeek` = 1): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::setMicrosecond() does not modify the object itself")]
public function setMicrosecond(int `$microsecond`): static
#[\NoDiscard(message: "as DateTimeImmutable::setTime() does not modify the object itself")]
public function setTime(
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::setTimestamp() does not modify the object itself")]
public function setTimestamp(int `$timestamp`): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::setTimezone() does not modify the object itself")]
public function setTimezone(DateTimeZone `$timezone`): DateTimeImmutable
#[\NoDiscard(message: "as DateTimeImmutable::sub() does not modify the object itself")]
public function sub(DateInterval `$interval`): DateTimeImmutable
public function diff(DateTimeInterface `$targetObject`, bool `$absolute` = false): DateInterval
public function format(string `$format`): string
public function getMicrosecond(): int
public function getOffset(): int
public function getTimestamp(): int
public function getTimezone(): DateTimeZone|false
public function __serialize(): array
public function __unserialize(array `$data`): void
#[\Deprecated]
public function __wakeup(): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | DateTimeImmutable kurucusu artık yapılandırılan değerdeki mikrosaniyeleri içerebiliyor, evvelce mikrosaniyeler daima `0` ile ilklendirilirdi.

# DateTimeImmutable::add

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::add — Returns a new object, with added amount of days, months, years, hours, minutes and seconds

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::add() does not modify the object itself")]
public function DateTimeImmutable::add(DateInterval `$interval`): DateTimeImmutable

Creates a new DateTimeImmutable object, and adds the specified DateInterval object to this, to represent the new value.

### Bağımsız Değişkenler

`interval`

  A DateInterval object

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Örnekler

Örnek 1 DateTimeImmutable::add() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2000-01-01');
    $newDate = $date->add(new DateInterval('P10D'));
    echo $newDate->format('Y-m-d') . "\n";
    ?>

Örnek 2 Further DateTimeImmutable::add() examples

    <?php
    $date = new DateTimeImmutable('2000-01-01');
    $newDate = $date->add(new DateInterval('PT10H30S'));
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $date = new DateTimeImmutable('2000-01-01');
    $newDate = $date->add(new DateInterval('P7Y5M4DT4H3M2S'));
    echo $newDate->format('Y-m-d H:i:s') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-01 10:00:30
    2007-06-05 04:03:02

Örnek 3 Beware when adding months

    <?php
    $date = new DateTimeImmutable('2000-12-31');
    $interval = new DateInterval('P1M');

    $newDate1 = $date->add($interval);
    echo $newDate1->format('Y-m-d') . "\n";

    $newDate2 = $newDate1->add($interval);
    echo $newDate2->format('Y-m-d') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2001-01-31
    2001-03-03

### Ayrıca Bakınız

- DateTimeImmutable::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds
- DateTimeImmutable::diff() - Returns the difference between two DateTime objects
- DateTimeImmutable::modify() - Creates a new object with modified timestamp

# DateTimeImmutable::__construct

# date_create_immutable

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::__construct -- date_create_immutable — Returns new DateTimeImmutable object

### Açıklama

Nesne yönelimli kullanım

public function DateTimeImmutable::__construct(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`)

Yordamsal kullanım

function date_create_immutable(string `$datetime` = "now", ?DateTimeZone `$timezone` = `null`): DateTimeImmutable|false

Returns new a DateTimeImmutable object.

### Bağımsız Değişkenler

`datetime`

  Bir tarih/zaman dizgesi. Geçerli biçemler Tarih ve Zaman Biçemleri bölümünde açıklanmıştır.

  Enter `"now"` here to obtain the current time when using the `timezone` parameter.
`timezone`
  A DateTimeZone object representing the timezone of `datetime`. If `timezone` is omitted or `null`, the current timezone will be used.

  > Bilginize: The `timezone` parameter and the current timezone are ignored when the `datetime` parameter either is a UNIX timestamp (e.g. `@946684800`) or specifies a timezone (e.g. `2010-01-28T15:00:00+02:00`, or `2010-07-05T06:00:00Z`).

### Dönen Değerler

Returns a new DateTimeImmutable instance.

### Hatalar/İstisnalar

If an invalid Date/Time string is passed, DateMalformedStringException is thrown. Previous to PHP 8.3, this was Exception.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws DateMalformedStringException if an invalid string is passed, instead of Exception.
7.1.0 | From now on microseconds are filled with actual value. Not with '00000'.

### Örnekler

Örnek 1 DateTimeImmutable::__construct() example

Nesne yönelimli kullanım

    <?php
    try {
        $date = new DateTimeImmutable('2000-01-01');
    } catch (Exception $e) {
        echo $e->getMessage();
        exit(1);
    }

    echo $date->format('Y-m-d');

Yukarıdaki örneğin çıktısı:

    2000-01-01

Yordamsal kullanım

    <?php
    $date = date_create('2000-01-01');
    if (!$date) {
        $e = date_get_last_errors();
        foreach ($e['errors'] as $error) {
            echo "$error\n";
        }
        exit(1);
    }

    echo date_format($date, 'Y-m-d');

Yukarıdaki örneğin çıktısı:

    2000-01-01

Örnek 2 Intricacies of DateTimeImmutable::__construct()

    <?php
    date_default_timezone_set('America/Jamaica');

    // Specified date/time in PHP's default time zone.
    $date = new DateTimeImmutable('2000-01-01');
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Specified date/time in the specified time zone.
    $date = new DateTimeImmutable('2000-01-01', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Current date/time in your PHP's default time zone.
    $date = new DateTimeImmutable();
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Current date/time in the specified time zone.
    $date = new DateTimeImmutable('now', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Using a UNIX timestamp.  Notice the result is in the UTC time zone.
    $date = new DateTimeImmutable('@946684800');
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Non-existent values roll over.
    $date = new DateTimeImmutable('2000-02-30');
    echo $date->format('Y-m-d H:i:sP') . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2000-01-01 00:00:00-05:00
    2000-01-01 00:00:00+12:00
    2010-04-24 10:24:16-04:00
    2010-04-25 02:24:16+12:00
    2000-01-01 00:00:00+00:00
    2000-03-01 00:00:00-05:00

> Bilginize:

> Rolled over dates can be detected by checking for warnings using DateTimeImmutable::getLastErrors().

Örnek 3 Changing the associated timezone

    <?php
    $timeZone = new \DateTimeZone('Asia/Tokyo');

    $time = new \DateTimeImmutable();
    $time = $time->setTimezone($timeZone);

    echo $time->format('Y/m/d H:i:s e'), "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2022/08/12 23:49:23 Asia/Tokyo

Örnek 4 Using a relative date/time string

    <?php
    $time = new \DateTimeImmutable("-1 year");

    echo $time->format('Y/m/d H:i:s'), "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2021/08/12 15:43:51

# DateTimeImmutable::createFromFormat

# date_create_immutable_from_format

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::createFromFormat -- date_create_immutable_from_format — Parses a time string according to a specified format

### Açıklama

Nesne yönelimli kullanım

public static function DateTimeImmutable::createFromFormat(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTimeImmutable|false

Yordamsal kullanım

function date_create_immutable_from_format(string `$format`, string `$datetime`, ?DateTimeZone `$timezone` = `null`): DateTimeImmutable|false

Returns a new DateTimeImmutable object representing the date and time specified by the `datetime` string, which was formatted in the given `format`.

### Bağımsız Değişkenler

`format`

  The format that the passed in string should be in. See the formatting options below. In most cases, the same letters as for the date() can be used.

  All fields are initialised with the current date/time. In most cases you would want to reset these to "zero" (the Unix epoch, `1970-01-01 00:00:00 UTC`). You do that by including the `!` character as first character in your `format`, or `|` as your last. Please see the documentation for each character below for more information.

  The format is parsed from left to right, which means that in some situations the order in which the format characters are present affects the result. In the case of `z` (the day of the year), it is required that a year has already been parsed, for example through the `Y` or `y` characters.

  Letters that are used for parsing numbers allow a wide range of values, outside of what the logical range would be. For example, the `d` (day of the month) accepts values in the range from `00` to `99`. The only constraint is on the amount of digits. The date/time parser's overflow mechanism is used when out-of-range values are given. The examples below show some of this behaviour.

  This also means that the data parsed for a format letter is greedy, and will read up to the amount of digits its format allows for. That can then also mean that there are no longer enough characters in the `datetime` string for following format characters. An example on this page also illustrates this issue.

  The following characters are recognized in the `format` parameter string
  `format` character | Description | Example parsable values
  --- | --- | ---
  Day | --- | ---
  `d` and `j` | Day of the month, 2 digits with or without leading zeros | `01` to `31` or `1` to `31`. (2 digit numbers higher than the number of days in the month are accepted, in which case they will make the month overflow. For example using 33 with January, means February 2nd)
  `D` and `l` | A textual representation of a day | `Mon` through `Sun` or `Sunday` through `Saturday`. If the day name given is different than the day name belonging to a parsed (or default) date is different, then an overflow occurs to the next date with the given day name. See the examples below for an explanation.
  `S` | English ordinal suffix for the day of the month, 2 characters. It's ignored while processing. | `st`, `nd`, `rd` or `th`.
  `z` | The day of the year (starting from 0); must be preceded by `Y` or `y`. | `0` through `365`. (3 digit numbers higher than the numbers in a year are accepted, in which case they will make the year overflow. For example using 366 with 2022, means January 2nd, 2023)
  Month | --- | ---
  `F` and `M` | A textual representation of a month, such as January or Sept | `January` through `December` or `Jan` through `Dec`
  `m` and `n` | Numeric representation of a month, with or without leading zeros | `01` through `12` or `1` through `12`. (2 digit numbers higher than 12 are accepted, in which case they will make the year overflow. For example using 13 means January in the next year)
  Year | --- | ---
  `X` and `x` | A full numeric representation of a year, up to 19 digits, optionally prefixed by `+` or `-` | Examples: `0055`, `787`, `1999`, `-2003`, `+10191`
  `Y` | A full numeric representation of a year, up to 4 digits | Examples: `25` (same as `0025`), `787`, `1999`, `2003`
  `y` | A two digit representation of a year (which is assumed to be in the range 1970-2069, inclusive) | Examples: `99` or `03` (which will be interpreted as `1999` and `2003`, respectively)
  Time | --- | ---
  `a` and `A` | Ante meridiem and Post meridiem | `am` or `pm`
  `g` and `h` | 12-hour format of an hour with or without leading zero | `1` through `12` or `01` through `12` (2 digit numbers higher than 12 are accepted, in which case they will make the day overflow. For example using `14` means `02` in the next AM/PM period)
  `G` and `H` | 24-hour format of an hour with or without leading zeros | `0` through `23` or `00` through `23` (2 digit numbers higher than 24 are accepted, in which case they will make the day overflow. For example using `26` means `02:00` the next day)
  `i` | Minutes with leading zeros | `00` to `59`. (2 digit numbers higher than 59 are accepted, in which case they will make the hour overflow. For example using `66` means `:06` the next hour)
  `s` | Seconds, with leading zeros | `00` through `59` (2 digit numbers higher than 59 are accepted, in which case they will make the minute overflow. For example using `90` means `:30` the next minute)
  `v` | Fraction in milliseconds (up to three digits) | Example: `12` (`0.12` seconds), `345` (`0.345` seconds)
  `u` | Fraction in microseconds (up to six digits) | Example: `45` (`0.45` seconds), `654321` (`0.654321` seconds)
  Timezone | --- | ---
  `e`, `O`, `p`, `P` and `T` | Timezone identifier, or difference to UTC in hours, or difference to UTC with colon between hours and minutes, or timezone abbreviation | Examples: `UTC`, `GMT`, `Atlantic/Azores` or `+0200` or `+02:00` or `EST`, `MDT`
  Full Date/Time | --- | ---
  `U` | Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | Example: `1292177455`
  Whitespace and Separators | --- | ---
  `` (space) | Zero or more spaces, tabs, NBSP (U+A0), or NNBSP (U+202F) characters | Example: `"\t"`, `" "`
  `#` | One of the following separation symbol: `;`, `:`, `/`, `.`, `,`, `-`, `(` or `)` | Example: `/`
  `;`, `:`, `/`, `.`, `,`, `-`, `(` or `)` | The specified character. | Example: `-`
  `?` | A random byte | Example: `^` (Be aware that for UTF-8 characters you might need more than one `?`. In this case, using `*` is probably what you want instead)
  `*` | Random bytes until the next separator or digit | Example: `*` in `Y-*-d` with the string `2009-aWord-08` will match `aWord`
  `!` | Resets all fields (year, month, day, hour, minute, second, fraction and timezone information) to zero-like values ( `0` for hour, minute, second and fraction, `1` for month and day, `1970` for year and the default timezone) | Without `!,` all fields will be set to the current date and time.
  `|` | Resets all fields (year, month, day, hour, minute, second, fraction and timezone information) to zero-like values if they have not been parsed yet | `Y-m-d|` will set the year, month and day to the information found in the string to parse, and sets the hour, minute and second to 0.
  `+` | If this format specifier is present, trailing data in the string will not cause an error, but a warning instead | Use DateTimeImmutable::getLastErrors() to find out whether trailing data was present.

  Unrecognized characters in the format string will cause the parsing to fail and an error message is appended to the returned structure. You can query error messages with DateTimeImmutable::getLastErrors().

  To include literal characters in `format`, you have to escape them with a backslash (`\`).

  If `format` does not contain the character `!` then portions of the generated date/time which are not specified in `format` will be set to the current system time.

  If `format` contains the character `!`, then portions of the generated date/time not provided in `format`, as well as values to the left-hand side of the `!`, will be set to corresponding values from the Unix epoch.

  If any time character is parsed, then all other time-related fields are set to "0", unless also parsed.

  The Unix epoch is 1970-01-01 00:00:00 UTC.

`datetime`

  String representing the time.

`timezone`

  A DateTimeZone object representing the desired time zone.

  If `timezone` is omitted or `null` and `datetime` contains no timezone, the current timezone will be used.

  > Bilginize:

  > The `timezone` parameter and the current timezone are ignored when the `datetime` parameter either contains a UNIX timestamp (e.g. `946684800`) or specifies a timezone (e.g. `2010-01-28T15:00:00+02:00`).

### Dönen Değerler

Returns a new DateTimeImmutable instance başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

This method throws ValueError when the `datetime` contains NULL-bytes.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.9 | The `` (space) specifier now also supports NBSP (U+A0) and NNBSP (U+202F) characters.
8.2.0 | The `X` and `x` `format` specifiers have been added.
8.0.21, 8.1.8, 8.2.0 | Now throws ValueError when NULL-bytes are passed into `datetime`, which previously was silently ignored.
7.3.0 | The `v` `format` specifier has been added.

### Örnekler

Örnek 1 DateTimeImmutable::createFromFormat() example

Nesne yönelimli kullanım

    <?php
    $date = DateTimeImmutable::createFromFormat('j-M-Y', '15-Feb-2009');
    echo $date->format('Y-m-d');

Örnek 2 Using predefined format constants with DateTimeImmutable::createFromFormat()

Nesne yönelimli kullanım

    <?php
    $date = DateTimeImmutable::createFromFormat(
        DateTimeInterface::ISO8601,
        '2004-02-12T15:19:21+00:00'
    );
    echo $date->format('c e') . "\n";

    $date = DateTimeImmutable::createFromFormat(
        DateTimeInterface::RFC3339_EXTENDED,
        '2013-10-14T09:00:00.000+02:00'
    );
    echo $date->format('c e') . "\n";

The formatting constants as used in this example consist of a string of characters for formatting a DateTimeImmutable object. In most cases, these letters match with the same elements of date/time information as the ones defined in the parameters section above, but they tend to be more lenient.

Örnek 3 Intricacies of DateTimeImmutable::createFromFormat()

    <?php
    echo 'Current time: ' . date('Y-m-d H:i:s') . "\n";

    $format = 'Y-m-d';
    $date = DateTimeImmutable::createFromFormat($format, '2009-02-15');
    echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

    $format = 'Y-m-d H:i:s';
    $date = DateTimeImmutable::createFromFormat($format, '2009-02-15 15:16:17');
    echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

    $format = 'Y-m-!d H:i:s';
    $date = DateTimeImmutable::createFromFormat($format, '2009-02-15 15:16:17');
    echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

    $format = '!d';
    $date = DateTimeImmutable::createFromFormat($format, '15');
    echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

    $format = 'i';
    $date = DateTimeImmutable::createFromFormat($format, '15');
    echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Current time: 2022-06-02 15:50:46
    Format: Y-m-d; 2009-02-15 15:50:46
    Format: Y-m-d H:i:s; 2009-02-15 15:16:17
    Format: Y-m-!d H:i:s; 1970-01-15 15:16:17
    Format: !d; 1970-01-15 00:00:00
    Format: i; 2022-06-02 00:15:00

Örnek 4 Format string with literal characters

    <?php
    echo DateTimeImmutable::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    23:15:03

Örnek 5 Overflow behaviour

    <?php
    echo DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2021-17-35 16:60:97')->format(DateTimeImmutable::RFC2822);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Sat, 04 Jun 2022 17:01:37 +0000

Although the result looks odd, it is correct, as the following overflows happen:

1. `97` seconds overflows to `1` minute, leaving `37` seconds.
2. `61` minutes overflows to `1` hour, leaving `1` minutes.
3. `35` days overflows to `1` month, leaving `4` days. The amount of days that are left over depends on the month, as not every month has the same amount of days.
4. `18` months overflows to `1` year, leaving `6` months.

Örnek 6 Overflowing day name behaviour

    <?php
    $d = DateTime::createFromFormat(DateTimeInterface::RFC1123, 'Mon, 3 Aug 2020 25:00:00 +0000');
    echo $d->format(DateTime::RFC1123), "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Mon, 10 Aug 2020 01:00:00 +0000

Although the result looks odd, it is correct, as the following overflows happen:

1. `3 Aug 2020 25:00:00` overflows to `(Tue) 4 Aug 2020 01:00`.
2. `Mon` gets applied, which advances the date to `Mon, 10 Aug 2020 01:00:00`. The explanation of relative keywords such as `Mon` is explained in the section on relative formats.

In order to detect overflows in dates, you can use DateTimeImmutable::getLastErrors(), which will include a warning if an overflow occurred.

Örnek 7 Detecting overflown dates

    <?php
    $d = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2021-17-35 16:60:97');
    echo $d->format(DateTimeImmutable::RFC2822), "\n\n";

    var_dump(DateTimeImmutable::getLastErrors());

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Sat, 04 Jun 2022 17:01:37 +0000

    array(4) {
      'warning_count' =>
      int(2)
      'warnings' =>
      array(1) {
        [19] =>
        string(27) "The parsed date was invalid"
      }
      'error_count' =>
      int(0)
      'errors' =>
      array(0) {
      }
    }

Örnek 8 Greedy parsing behaviour

    <?php
    print_r(date_parse_from_format('Gis', '60101'));

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [year] =>
        [month] =>
        [day] =>
        [hour] => 60
        [minute] => 10
        [second] => 0
        [fraction] => 0
        [warning_count] => 1
        [warnings] => Array
            (
                [5] => The parsed time was invalid
            )

        [error_count] => 1
        [errors] => Array
            (
                [4] => A two digit second could not be found
            )

        [is_localtime] =>
    )

The `G` format is to parse 24 hour clock hours, with or without leading zero. This requires to parse 1 or 2 digits. Because there are two following digits, it greedily reads this as `60`.

The following `i` and `s` format characters both require two digits. This means that `10` is passed as minute (`i`), and that there are then not enough digits left to parse for as second (`s`).

The `errors` array indicates this problem.

Additionally, an hour of `60` is outside the range `0`-`24`, which causes the `warnings` array to include a warning that the time is invalid.

### Ayrıca Bakınız

- DateTimeImmutable::__construct() - Returns new DateTimeImmutable object
- DateTimeImmutable::getLastErrors() - Returns the warnings and errors
- checkdate() - Miladi tarihi doğrular
- strptime() - strftime işleviyle üretilen zaman ve tarihleri çözümler

# DateTimeImmutable::createFromInterface

(PHP 8)

DateTimeImmutable::createFromInterface — Returns new DateTimeImmutable object encapsulating the given DateTimeInterface object

### Açıklama

public static function DateTimeImmutable::createFromInterface(DateTimeInterface `$object`): DateTimeImmutable

### Bağımsız Değişkenler

`object`

  The DateTimeInterface object that needs to be converted to an immutable version. This object is not modified, but instead a new DateTimeImmutable object is created containing the same date, time, and timezone information.

### Dönen Değerler

Returns a new DateTimeImmutable instance.

### Örnekler

Örnek 1 Creating an immutable date time object

    <?php
    $date = new DateTime("2014-06-20 11:45 Europe/London");
    $immutable = DateTimeImmutable::createFromInterface($date);

    $date = new DateTimeImmutable("2014-06-20 11:45 Europe/London");
    $also_immutable = DateTimeImmutable::createFromInterface($date);

# DateTimeImmutable::createFromMutable

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable instance encapsulating the given DateTime object

### Açıklama

public static function DateTimeImmutable::createFromMutable(DateTime `$object`): static

### Bağımsız Değişkenler

`object`

  The mutable DateTime object that you want to convert to an immutable version. This object is not modified, but instead a new DateTimeImmutable instance is created containing the same date time and timezone information.

### Dönen Değerler

Returns a new DateTimeImmutable instance.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | The method returns an instance of the currently invoked class now. Previously, it created a new instance of DateTimeImmutable.

### Örnekler

Örnek 1 Creating an immutable date time object

    <?php
    $date = new DateTime("2014-06-20 11:45 Europe/London");
    $immutable = DateTimeImmutable::createFromMutable( $date );

# DateTimeImmutable::createFromTimestamp

(PHP 8 >= 8.4.0)

DateTimeImmutable::createFromTimestamp — Creates an instance from a Unix timestamp

### Açıklama

public static function DateTimeImmutable::createFromTimestamp(int|float `$timestamp`): static

Creates an instance from a Unix timestamp.

### Bağımsız Değişkenler

`timestamp`
  Unix timestamp representing the date. A float value is also accepted which allows for microsecond precision.

### Dönen Değerler

Returns a new DateTimeImmutable instance.

### Hatalar/İstisnalar

If the `timestamp` is outside the range [`PHP_INT_MIN`, `PHP_INT_MAX`], a DateRangeError is thrown.

### Örnekler

Örnek 1 DateTimeImmutable::createFromTimestamp() example

    <?php
    $date = DateTimeImmutable::createFromTimestamp(123.456789);
    echo $date->format('Y-m-d H:i:s.u');
    ?>

Yukarıdaki örneğin çıktısı:

    1970-01-01 00:02:03.456789

# DateTimeImmutable::getLastErrors

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::getLastErrors — Returns the warnings and errors

### Açıklama

public static function DateTimeImmutable::getLastErrors(): array|false

Returns an array of warnings and errors found while parsing a date/time string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns array containing info about warnings and errors, or `false` if there are neither warnings nor errors.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Before PHP 8.2.0, this function did not return `false` when there were no warnings or errors. Instead, it would always return the documented array structure.

### Örnekler

Örnek 1 DateTimeImmutable::getLastErrors() example

    <?php
    try {
        $date = new DateTimeImmutable('asdfasdf');
    } catch (Exception $e) {
        // For demonstration purposes only...
        print_r(DateTimeImmutable::getLastErrors());

        // The real object-oriented way to do this is
        echo $e->getMessage();
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [warning_count] => 1
        [warnings] => Array
            (
                [6] => Double timezone specification
            )

        [error_count] => 1
        [errors] => Array
            (
                [0] => The timezone could not be found in the database
            )
    )
    Failed to parse time string (asdfasdf) at position 0 (a): The timezone could not be found in the database

The indexes 6, and 0 in the example output refer to the character index in the string where the error occurred.

Örnek 2 Detecting rolled over dates

    <?php
    $date = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-02-30');
    print_r(DateTimeImmutable::getLastErrors());

Yukarıdaki örneğin çıktısı:

    Array
    (
        [warning_count] => 1
        [warnings] => Array
            (
                [10] => The parsed date was invalid
            )

        [error_count] => 0
        [errors] => Array
            (
            )
    )

# DateTimeImmutable::modify

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::modify — Creates a new object with modified timestamp

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::modify() does not modify the object itself")]
public function DateTimeImmutable::modify(string `$modifier`): DateTimeImmutable

Creates a new DateTimeImmutable object with modified timestamp. The original object is not modified.

### Bağımsız Değişkenler

`modifier`

  Bir tarih/zaman dizgesi. Geçerli biçemler Tarih ve Zaman Biçemleri bölümünde açıklanmıştır.

### Dönen Değerler

Returns DateTimeImmutable on success. Yordamsal kullanım başarısızlık durumunda `false` döndürür.

### Hatalar/İstisnalar

If an invalid Date/Time string is passed, DateMalformedStringException is thrown. Previous to PHP 8.3, this was a warning.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Now has a tentative return type of DateTimeImmutable. Previously it was DateTimeImmutable|false.
8.3.0 | DateTimeImmutable::modify() now throws DateMalformedStringException if an invalid string is passed. Previously, it returned `false`, and a warning was emitted.

### Örnekler

Örnek 1 DateTimeImmutable::modify() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2006-12-12');
    $newDate = $date->modify('+1 day');
    echo $newDate->format('Y-m-d');

Yukarıdaki örneğin çıktısı:

    2006-12-13

Örnek 2 Beware when adding or subtracting months

    <?php
    $date = new DateTimeImmutable('2000-12-31');

    $newDate1 = $date->modify('+1 month');
    echo $newDate1->format('Y-m-d') . "\n";

    $newDate2 = $newDate1->modify('+1 month');
    echo $newDate2->format('Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2001-01-31
    2001-03-03

### Ayrıca Bakınız

- DateTimeImmutable::add() - Returns a new object, with added amount of days, months, years, hours, minutes and seconds
- DateTimeImmutable::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds
- DateTimeImmutable::setDate() - Sets the date
- DateTimeImmutable::setISODate() - Sets the ISO date
- DateTimeImmutable::setTime() - Sets the time
- DateTimeImmutable::setTimestamp() - Sets the date and time based on a Unix timestamp

# DateTimeImmutable::__set_state

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::__set_state — The __set_state handler

### Açıklama

public static function DateTimeImmutable::__set_state(array `$array`): DateTimeImmutable

The __set_state() handler.

### Bağımsız Değişkenler

`array`

  Initialization array.

### Dönen Değerler

Returns a new instance of a DateTimeImmutable object.

# DateTimeImmutable::setDate

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setDate — Sets the date

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setDate() does not modify the object itself")]
public function DateTimeImmutable::setDate(int `$year`, int `$month`, int `$day`): DateTimeImmutable

Returns a new DateTimeImmutable object with the current date of the DateTimeImmutable object set to the given date.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal tarz: date_create() tarafından bir DateTime nesnesi döndürülür. İşlev bu nesnede değişiklik yapar.

`year`

  Year of the date.

`month`

  Month of the date.

`day`

  Day of the date.

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Örnekler

Örnek 1 DateTimeImmutable::setDate() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable();
    $newDate = $date->setDate(2001, 2, 3);
    echo $newDate->format('Y-m-d');

Yukarıdaki örneğin çıktısı:

    2001-02-03

Örnek 2 Values exceeding ranges are added to their parent values

    <?php
    $date = new DateTimeImmutable();

    $newDate = $date->setDate(2001, 2, 28);
    echo $newDate->format('Y-m-d') . "\n";

    $newDate = $date->setDate(2001, 2, 29);
    echo $newDate->format('Y-m-d') . "\n";

    $newDate = $date->setDate(2001, 14, 3);
    echo $newDate->format('Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2001-02-28
    2001-03-01
    2002-02-03

### Ayrıca Bakınız

- DateTimeImmutable::setISODate() - Sets the ISO date
- DateTimeImmutable::setTime() - Sets the time

# DateTimeImmutable::setISODate

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setISODate — Sets the ISO date

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setISODate() does not modify the object itself")]
public function DateTimeImmutable::setISODate(int `$year`, int `$week`, int `$dayOfWeek` = 1): DateTimeImmutable

Returns a new DateTimeImmutable object with the date set according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.

### Bağımsız Değişkenler

`year`

  Year of the date.

`week`

  Week of the date.

`dayOfWeek`

  Offset from the first day of the week.

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Örnekler

Örnek 1 DateTimeImmutable::setISODate() example

Nesne yönelimli kullanım

    <?php

    $date = new DateTimeImmutable();

    $newDate = $date->setISODate(2008, 2);
    echo $newDate->format('Y-m-d') . "\n";

    $newDate = $date->setISODate(2008, 2, 7);
    echo $newDate->format('Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2008-01-07
    2008-01-13

Yordamsal kullanım

    <?php

    $date = date_create();

    date_isodate_set($date, 2008, 2);
    echo date_format($date, 'Y-m-d') . "\n";

    date_isodate_set($date, 2008, 2, 7);
    echo date_format($date, 'Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2008-01-07
    2008-01-13

Örnek 2 Values exceeding ranges are added to their parent values

    <?php

    $date = new DateTimeImmutable();

    $newDate = $date->setISODate(2008, 2, 7);
    echo $newDate->format('Y-m-d') . "\n";

    $newDate = $date->setISODate(2008, 2, 8);
    echo $newDate->format('Y-m-d') . "\n";

    $newDate = $date->setISODate(2008, 53, 7);
    echo $newDate->format('Y-m-d') . "\n";

Yukarıdaki örneğin çıktısı:

    2008-01-13
    2008-01-14
    2009-01-04

Örnek 3 Finding the month a week is in

    <?php

    $date = new DateTimeImmutable();
    $newDate = $date->setISODate(2008, 14);
    echo $newDate->format('n');

Yukarıdaki örneğin çıktısı:

    3

### Ayrıca Bakınız

- DateTimeImmutable::setDate() - Sets the date
- DateTimeImmutable::setTime() - Sets the time

# DateTimeImmutable::setMicrosecond

(PHP 8 >= 8.4.0)

DateTimeImmutable::setMicrosecond — Sets microsecond part of the time

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setMicrosecond() does not modify the object itself")]
public function DateTimeImmutable::setMicrosecond(int `$microsecond`): static

Returns a new DateTimeImmutable object constructed from the old one, with modified microsecond part.

### Bağımsız Değişkenler

`microsecond`
  The microsecond value to set (`0` to `999999`).

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Hatalar/İstisnalar

If the `microsecond` is outside the range [`0`, `999999`], a DateRangeError is thrown.

### Örnekler

Örnek 1 DateTimeImmutable::setMicrosecond() example

    <?php
    $date = DateTimeImmutable::createFromTimestamp(123.456789);
    echo $date->format('Y-m-d H:i:s.u') . PHP_EOL;
    $date = $date->setMicrosecond(987654);
    echo $date->format('Y-m-d H:i:s.u') . PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    1970-01-01 00:02:03.456789
    1970-01-01 00:02:03.987654

### Ayrıca Bakınız

- DateTimeInterface::getMicrosecond() - Gets the microsecond part of the Unix timestamp

# DateTimeImmutable::setTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setTime — Sets the time

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setTime() does not modify the object itself")]
public function DateTimeImmutable::setTime(
int `$hour`,
int `$minute`,
int `$second` = 0,
int `$microsecond` = 0
): DateTimeImmutable

Returns a new DateTimeImmutable object with the time set to the given time.

### Bağımsız Değişkenler

`hour`

  Hour of the time.

`minute`

  Minute of the time.

`second`

  Second of the time.

`microsecond`

  Microsecond of the time.

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The behaviour with double existing hours (during the fall-back DST transition) changed. Previously PHP would pick the second occurrence (after the DST transition), instead of the first occurrence (before DST transition).
7.1.0 | The `microsecond` parameter was added.

### Örnekler

Örnek 1 DateTimeImmutable::setTime() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2001-01-01');

    $newDate = $date->setTime(14, 55);
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $newDate = $date->setTime(14, 55, 24);
    echo $newDate->format('Y-m-d H:i:s') . "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2001-01-01 14:55:00
    2001-01-01 14:55:24

Örnek 2 Values exceeding ranges are added to their parent values

    <?php
    $date = new DateTimeImmutable('2001-01-01');

    $newDate = $date->setTime(14, 55, 24);
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $newDate = $date->setTime(14, 55, 65);
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $newDate = $date->setTime(14, 65, 24);
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $newDate = $date->setTime(25, 55, 24);
    echo $newDate->format('Y-m-d H:i:s') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2001-01-01 14:55:24
    2001-01-01 14:56:05
    2001-01-01 15:05:24
    2001-01-02 01:55:24

### Ayrıca Bakınız

- DateTimeImmutable::setDate() - Sets the date
- DateTimeImmutable::setISODate() - Sets the ISO date

# DateTimeImmutable::setTimestamp

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setTimestamp — Sets the date and time based on a Unix timestamp

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setTimestamp() does not modify the object itself")]
public function DateTimeImmutable::setTimestamp(int `$timestamp`): DateTimeImmutable

Returns a new DateTimeImmutable object constructed from the old one, with the date and time set based on an Unix timestamp.

### Bağımsız Değişkenler

`timestamp`

  Unix timestamp representing the date. Setting timestamps outside the range of int is possible by using DateTimeImmutable::modify() with the `@` format.

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Örnekler

Örnek 1 DateTimeImmutable::setTimestamp() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable();
    echo $date->format('U = Y-m-d H:i:s') . "\n";

    $newDate = $date->setTimestamp(1171502725);
    echo $newDate->format('U = Y-m-d H:i:s') . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1272508903 = 2010-04-28 22:41:43
    1171502725 = 2007-02-14 20:25:25

### Ayrıca Bakınız

- DateTimeImmutable::getTimestamp() - Gets the Unix timestamp
- DateTimeImmutable::setMicrosecond() - Sets microsecond part of the time

# DateTimeImmutable::setTimezone

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::setTimezone — Sets the time zone

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::setTimezone() does not modify the object itself")]
public function DateTimeImmutable::setTimezone(DateTimeZone `$timezone`): DateTimeImmutable

Returns a new DateTimeImmutable object with a new timezone set.

### Bağımsız Değişkenler

`timezone`

  A DateTimeZone object representing the desired time zone.

### Dönen Değerler

Returns a new modified DateTimeImmutable object for method chaining. The underlying point-in-time is not changed when calling this method.

### Örnekler

Örnek 1 DateTimeImmutable::setTimeZone() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2000-01-01', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    $newDate = $date->setTimezone(new DateTimeZone('Pacific/Chatham'));
    echo $newDate->format('Y-m-d H:i:sP') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-01 00:00:00+12:00
    2000-01-01 01:45:00+13:45

### Ayrıca Bakınız

- DateTimeImmutable::getTimezone() - Return time zone relative to given DateTime
- DateTimeZone::__construct() - Yeni bir DateTimeZone nesnesi oluşturur

# DateTimeImmutable::sub

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds

### Açıklama

#[\NoDiscard(message: "as DateTimeImmutable::sub() does not modify the object itself")]
public function DateTimeImmutable::sub(DateInterval `$interval`): DateTimeImmutable

Returns a new DateTimeImmutable object, with the specified DateInterval object subtracted from the specified DateTimeImmutable object.

### Bağımsız Değişkenler

`interval`

  A DateInterval object

### Dönen Değerler

Verisi değişmiş DateTimeImmutable nesnesi döner.

### Hatalar/İstisnalar

If an unsupported operation is attempted, such as using a DateInterval object representing relative time specifications such as `next weekday`, a DateInvalidOperationException is thrown.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Now throws a DateInvalidOperationException instead of a warning when an unsupported operation is attempted.

### Örnekler

Örnek 1 DateTimeImmutable::sub() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2000-01-20');
    $newDate = $date->sub(new DateInterval('P10D'));
    echo $newDate->format('Y-m-d') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-10

Örnek 2 Further DateTimeImmutable::sub() examples

    <?php
    $date = new DateTimeImmutable('2000-01-20');
    $newDate = $date->sub(new DateInterval('PT10H30S'));
    echo $newDate->format('Y-m-d H:i:s') . "\n";

    $date = new DateTimeImmutable('2000-01-20');
    $newDate = $date->sub(new DateInterval('P7Y5M4DT4H3M2S'));
    echo $newDate->format('Y-m-d H:i:s') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-19 13:59:30
    1992-08-15 19:56:58

Örnek 3 Beware when subtracting months

    <?php
    $date = new DateTimeImmutable('2001-04-30');
    $interval = new DateInterval('P1M');

    $newDate1 = $date->sub($interval);
    echo $newDate1->format('Y-m-d') . "\n";

    $newDate2 = $newDate1->sub($interval);
    echo $newDate2->format('Y-m-d') . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2001-03-30
    2001-03-02

### Ayrıca Bakınız

- DateTimeImmutable::add() - Returns a new object, with added amount of days, months, years, hours, minutes and seconds
- DateTimeImmutable::diff() - Returns the difference between two DateTime objects
- DateTimeImmutable::modify() - Creates a new object with modified timestamp

## İçindekiler

- DateTimeImmutable::add — Returns a new object, with added amount of days, months, years, hours, minutes and seconds
- DateTimeImmutable::__construct — Returns new DateTimeImmutable object
- DateTimeImmutable::createFromFormat — Parses a time string according to a specified format
- DateTimeImmutable::createFromInterface — Returns new DateTimeImmutable object encapsulating the given DateTimeInterface object
- DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable instance encapsulating the given DateTime object
- DateTimeImmutable::createFromTimestamp — Creates an instance from a Unix timestamp
- DateTimeImmutable::getLastErrors — Returns the warnings and errors
- DateTimeImmutable::modify — Creates a new object with modified timestamp
- DateTimeImmutable::__set_state — The __set_state handler
- DateTimeImmutable::setDate — Sets the date
- DateTimeImmutable::setISODate — Sets the ISO date
- DateTimeImmutable::setMicrosecond — Sets microsecond part of the time
- DateTimeImmutable::setTime — Sets the time
- DateTimeImmutable::setTimestamp — Sets the date and time based on a Unix timestamp
- DateTimeImmutable::setTimezone — Sets the time zone
- DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds

# DateTimeInterface arayüzü

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

DateTimeInterface arayüzü, bağımsız değişken, dönüş değeri veya özellik türü bildirimlerinde değer olarak DateTime veya DateTimeImmutable kullanılabilsin diye oluşturuldu. Bu arayüzü kullanıcı tabanlı sınıflarla gerçeklemek mümkün değildir.

Ayrıca, DateTimeImmutable ve DateTime nesnelerini DateTimeImmutable::format() ve DateTime::format() üzerinden biçemlemeye izin veren ortak sabitler de bu arayüz ile tanımlanabilir.

## Arayüz Sözdizimi

interface DateTimeInterface {
/* Sabitler */
public const string ATOM = "Y-m-d\\TH:i:sP";
public const string COOKIE = "l, d-M-Y H:i:s T";
public const string ISO8601 = "Y-m-d\\TH:i:sO";
public const string ISO8601_EXPANDED = "X-m-d\\TH:i:sP";
public const string RFC822 = "D, d M y H:i:s O";
public const string RFC850 = "l, d-M-y H:i:s T";
public const string RFC1036 = "D, d M y H:i:s O";
public const string RFC1123 = "D, d M Y H:i:s O";
public const string RFC7231 = "D, d M Y H:i:s \\G\\M\\T";
public const string RFC2822 = "D, d M Y H:i:s O";
public const string RFC3339 = "Y-m-d\\TH:i:sP";
public const string RFC3339_EXTENDED = "Y-m-d\\TH:i:s.vP";
public const string RSS = "D, d M Y H:i:s O";
public const string W3C = "Y-m-d\\TH:i:sP";
/* Yöntemler */
public function diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public function format(string `$format`): string
public function getMicrosecond(): int
public function getOffset(): int
public function getTimestamp(): int
public function getTimezone(): DateTimeZone|false
public function __serialize(): array
public function __unserialize(array `$data`): void
#[\Deprecated]
public function __wakeup(): void
}

## Öntanımlı Sabitler

DateTimeInterface::ATOM
DATE_ATOM
  Atom (örnek: 2005-08-15T15:52:01+00:00)
DateTimeInterface::COOKIE
DATE_COOKIE
  HTTP çerezleri (örnek: Monday, 15-Aug-2005 15:52:01 UTC)
DateTimeInterface::ISO8601
DATE_ISO8601
  ISO-8601 (örnek: 2005-08-15T15:52:01+0000)

  > Bilginize: Bu gösterim ISO-8601 ile uyumlu değildir, fakat geriye uyumluluk için kaldı. ISO-8601 ile uyumluluk için bunun yerine DateTimeInterface::ISO8601_EXPANDED, DateTimeInterface::ATOM kullanılmalıdır. (bkz: ISO8601:2004 bölüm 4.3.3 bent d)

DateTimeInterface::ISO8601_EXPANDED
DATE_ISO8601_EXPANDED
  ISO-8601 Expanded (example: +10191-07-26T08:59:52+01:00)

  > Bilginize: Bu biçim, her zaman bir işaret karakteri ekleyerek, ISO-8601'in normal aralığı olan `0000`-`9999` dışındaki yıl aralıklarına izin verir. Ayrıca, bu zaman dilimi bölümünün (`+01:00`) ISO-8601 ile uyumlu olduğunu da belirtir.

DateTimeInterface::RFC822
DATE_RFC822
  RFC 822 (örnek: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC850
DATE_RFC850
  RFC 850 (örnek: Monday, 15-Aug-05 15:52:01 UTC)
DateTimeInterface::RFC1036
DATE_RFC1036
  RFC 1036 (örnek: Mon, 15 Aug 05 15:52:01 +0000)
DateTimeInterface::RFC1123
DATE_RFC1123
  RFC 1123 (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC7231
DATE_RFC7231
  RFC 7231 (PHP 7.0.19 ve 7.1.5'ten beri) (örnek: Sat, 30 Apr 2016 17:52:13 GMT)
DateTimeInterface::RFC2822
DATE_RFC2822
  RFC 2822 (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::RFC3339
DATE_RFC3339
  DATE_ATOM gibidir.
DateTimeInterface::RFC3339_EXTENDED
DATE_RFC3339_EXTENDED
  RFC 3339 uzun gösterim. (örnek: 2005-08-15T15:52:01.000+00:00)
DateTimeInterface::RSS
DATE_RSS
  RSS (örnek: Mon, 15 Aug 2005 15:52:01 +0000)
DateTimeInterface::W3C
DATE_W3C
  Dünya Çapında Web Konsorsiyumu (örnek: 2005-08-15T15:52:01+00:00)

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | DateTimeInterface::ISO8601_EXPANDED sabiti eklendi.
7.2.0 | DateTime sınıf sabitleri artık DateTimeInterface üzerinde tanımlı.

# DateTimeInterface::diff

# DateTimeImmutable::diff

# DateTime::diff

# date_diff

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diff — Returns the difference between two DateTime objects

### Açıklama

Nesne yönelimli kullanım

public function DateTimeInterface::diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public function DateTimeImmutable::diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval
public function DateTime::diff(DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval

Yordamsal kullanım

function date_diff(DateTimeInterface `$baseObject`, DateTimeInterface `$targetObject`, bool `$absolute` = `false`): DateInterval

Returns the difference between two DateTimeInterface objects.

### Bağımsız Değişkenler

`datetime`

  The date to compare to.

`absolute`

  Should the interval be forced to be positive?

### Dönen Değerler

The DateInterval object represents the difference between the two dates.

The `absolute` parameter only affects the `invert` property of a DateInterval object.

The return value more specifically represents the clock-time interval to apply to the original object (`$this` or `$originObject`) to arrive at the `$targetObject`. This process is not always reversible.

The method is aware of DST changeovers, and hence can return an interval of `24 hours and 30 minutes`, as per one of the examples. If you want to calculate with absolute time, you need to convert both the `$this`/`$baseObject`, and `$targetObject` to UTC first.

### Örnekler

Örnek 1 DateTimeImmutable::diff() example

Nesne yönelimli kullanım

    <?php
    $origin = new DateTimeImmutable('2009-10-11');
    $target = new DateTimeImmutable('2009-10-13');
    $interval = $origin->diff($target);
    echo $interval->format('%R%a days');

Yukarıdaki örneğin çıktısı:

    +2 days

Yordamsal kullanım

    <?php
    $origin = date_create('2009-10-11');
    $target = date_create('2009-10-13');
    $interval = date_diff($origin, $target);
    echo $interval->format('%R%a days');

Yukarıdaki örneğin çıktısı:

    +2 days

Örnek 2 DateTimeInterface::diff() during DST changeover

    <?php
    $originalTime = new DateTimeImmutable("2021-10-30 09:00:00 Europe/London");
    $targetTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
    $interval = $originalTime->diff($targetTime);
    echo $interval->format("%H:%I:%S (Full days: %a)"), "\n";

Yukarıdaki örneğin çıktısı:

    24:30:00 (Full days: 0)

Örnek 3 DateTimeInterface::diff() range

The value that the method returns is the exact amount of time to get from `$this` to `$targetObject`. Comparing January 1st to December 31st returns therefore 364, and not 365, days (for non-leap years).

    <?php
    $originalTime = new DateTimeImmutable("2023-01-01 UTC");
    $targetTime = new DateTimeImmutable("2023-12-31 UTC");
    $interval = $originalTime->diff($targetTime);
    echo "Full days: ", $interval->format("%a"), "\n";

Yukarıdaki örneğin çıktısı:

    Full days: 364

Örnek 4 DateTime object comparison

> Bilginize:

> DateTimeImmutable and DateTime objects can be compared using comparison operators.

    <?php
    $date1 = new DateTime("now");
    $date2 = new DateTime("tomorrow");

    var_dump($date1 == $date2);
    var_dump($date1 < $date2);
    var_dump($date1 > $date2);

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- DateInterval::format() - Zaman aralığını biçimler
- DateTime::add() - Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
- DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

# DateTimeInterface::format

# DateTimeImmutable::format

# DateTime::format

# date_format

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format — Returns date formatted according to given format

### Açıklama

Nesne yönelimli kullanım

public function DateTimeInterface::format(string `$format`): string
public function DateTimeImmutable::format(string `$format`): string
public function DateTime::format(string `$format`): string

Yordamsal kullanım

function date_format(DateTimeInterface `$object`, string `$format`): string

Returns date formatted according to given format.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: date_create() işlevinden dönen bir DateTime nesnesi.

`format`

  The format of the outputted date string. See the formatting options below. There are also several predefined date constants that may be used instead, so for example `DATE_RSS` contains the format string `'D, d M Y H:i:s'`.

  The following characters are recognized in the `format` parameter string
  `format` character | Description | Example returned values
  --- | --- | ---
  Day | --- | ---
  `d` | Day of the month, 2 digits with leading zeros | `01` to `31`
  `D` | A textual representation of a day, three letters | `Mon` through `Sun`
  `j` | Day of the month without leading zeros | `1` to `31`
  `l` (lowercase 'L') | A full textual representation of the day of the week | `Sunday` through `Saturday`
  `N` | ISO 8601 numeric representation of the day of the week | `1` (for Monday) through `7` (for Sunday)
  `S` | English ordinal suffix for the day of the month, 2 characters | `st`, `nd`, `rd` or `th`. Works well with `j`
  `w` | Numeric representation of the day of the week | `0` (for Sunday) through `6` (for Saturday)
  `z` | The day of the year (starting from 0) | `0` through `365`
  Week | --- | ---
  `W` | ISO 8601 week number of year, weeks starting on Monday | Example: `42` (the 42nd week in the year)
  Month | --- | ---
  `F` | A full textual representation of a month, such as January or March | `January` through `December`
  `m` | Numeric representation of a month, with leading zeros | `01` through `12`
  `M` | A short textual representation of a month, three letters | `Jan` through `Dec`
  `n` | Numeric representation of a month, without leading zeros | `1` through `12`
  `t` | Number of days in the given month | `28` through `31`
  Year | --- | ---
  `L` | Whether it's a leap year | `1` if it is a leap year, `0` otherwise.
  `o` | ISO 8601 week-numbering year. This has the same value as `Y`, except that if the ISO week number (`W`) belongs to the previous or next year, that year is used instead. | Examples: `1999` or `2003`
  `X` | An expanded full numeric representation of a year, at least 4 digits, with `-` for years BCE, and `+` for years CE. | Examples: `-0055`, `+0787`, `+1999`, `+10191`
  `x` | An expanded full numeric representation if required, or a standard full numeral representation if possible (like `Y`). At least four digits. Years BCE are prefixed with a `-`. Years beyond (and including) `10000` are prefixed by a `+`. | Examples: `-0055`, `0787`, `1999`, `+10191`
  `Y` | A full numeric representation of a year, at least 4 digits, with `-` for years BCE. | Examples: `-0055`, `0787`, `1999`, `2003`, `10191`
  `y` | A two digit representation of a year | Examples: `99` or `03`
  Time | --- | ---
  `a` | Lowercase Ante meridiem and Post meridiem | `am` or `pm`
  `A` | Uppercase Ante meridiem and Post meridiem | `AM` or `PM`
  `B` | Swatch Internet time | `000` through `999`
  `g` | 12-hour format of an hour without leading zeros | `1` through `12`
  `G` | 24-hour format of an hour without leading zeros | `0` through `23`
  `h` | 12-hour format of an hour with leading zeros | `01` through `12`
  `H` | 24-hour format of an hour with leading zeros | `00` through `23`
  `i` | Minutes with leading zeros | `00` to `59`
  `s` | Seconds with leading zeros | `00` through `59`
  `u` | Microseconds. Note that date() will always generate `000000` since it takes an int parameter, whereas DateTimeInterface::format() does support microseconds if an object of type DateTimeInterface was created with microseconds. | Example: `654321`
  `v` | Milliseconds. Same note applies as for `u`. | Example: `654`
  Timezone | --- | ---
  `e` | Timezone identifier | Examples: `UTC`, `GMT`, `Atlantic/Azores`
  `I` (capital i) | Whether or not the date is in daylight saving time | `1` if Daylight Saving Time, `0` otherwise.
  `O` | Difference to Greenwich time (GMT) without colon between hours and minutes | Example: `+0200`
  `P` | Difference to Greenwich time (GMT) with colon between hours and minutes | Example: `+02:00`
  `p` | The same as `P`, but returns `Z` instead of `+00:00` (available as of PHP 8.0.0) | Examples: `Z` or `+02:00`
  `T` | Timezone abbreviation, if known; otherwise the GMT offset. | Examples: `EST`, `MDT`, `+05`
  `Z` | Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. | `-43200` through `50400`
  Full Date/Time | --- | ---
  `c` | ISO 8601 date. Only compatible with the non-expanded format (up to year 9999). Later dates will result in an invalid string. For later dates and expanded format, see `x` and `X`. | 2004-02-12T15:19:21+00:00
  `r` | » RFC 2822/» RFC 5322 formatted date | Example: `Thu, 21 Dec 2000 16:01:07 +0200`
  `U` | Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | See also time()

  Unrecognized characters in the format string will be printed as-is. The `Z` format will always return `0` when using gmdate().

  > Bilginize:

  > Since this function only accepts int timestamps the `u` format character is only useful when using the date_format() function with user based timestamps created with date_create().

### Dönen Değerler

Returns the formatted date string on success.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | The format characters `X` and `x` have been added.
8.0.0 | The format character `p` has been added.

### Örnekler

Örnek 1 DateTimeInterface::format() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable('2000-01-01');
    echo $date->format('Y-m-d H:i:s');
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-01 00:00:00

Yordamsal kullanım

    <?php
    $date = date_create('2000-01-01');
    echo date_format($date, 'Y-m-d H:i:s');
    ?>

Yukarıdaki örneğin çıktısı:

    2000-01-01 00:00:00

Örnek 2 More examples

    <?php
    // set the default timezone to use.
    date_default_timezone_set('UTC');

    // now
    $date = new DateTimeImmutable();

    // Prints something like: Wednesday
    echo $date->format('l'), "\n";

    // Prints something like: Wednesday 19th of October 2022 08:40:48 AM
    echo $date->format('l jS \o\f F Y h:i:s A'), "\n";

    /* use the constants in the format parameter */
    // prints something like: Wed, 19 Oct 2022 08:40:48 +0000
    echo $date->format(DateTimeInterface::RFC2822), "\n";
    ?>

You can prevent a recognized character in the format string from being expanded by escaping it with a preceding backslash. If the character with a backslash is already a special sequence, you may need to also escape the backslash.

Örnek 3 Escaping characters while formatting

    <?php
    $date = new DateTimeImmutable();

    // prints something like: Wednesday the 19th
    echo $date->format('l \t\h\e jS');
    ?>

To format dates in other languages, IntlDateFormatter::format() can be used instead of DateTimeInterface::format().

### Notlar

This method does not use locales. All output is in English.

### Ayrıca Bakınız

- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler

# DateTimeInterface::getMicrosecond

# DateTimeImmutable::getMicrosecond

# DateTime::getMicrosecond

(PHP 8 >= 8.4.0)

DateTimeInterface::getMicrosecond -- DateTimeImmutable::getMicrosecond -- DateTime::getMicrosecond — Gets the microsecond part of the Unix timestamp

### Açıklama

public function DateTimeInterface::getMicrosecond(): int
public function DateTimeImmutable::getMicrosecond(): int
public function DateTime::getMicrosecond(): int

Gets the microsecond part of the Unix timestamp.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the microsecond part of the Unix timestamp representing the date.

### Örnekler

Örnek 1 DateTimeInterface::getMicrosecond() example

    <?php
    $date = new DateTimeImmutable('2024-01-01 12:34:56.789123');
    var_dump($date->format('u'));
    var_dump($date->getMicrosecond());
    ?>

Yukarıdaki örneğin çıktısı:

    string(6) "789123"
    int(789123)

### Ayrıca Bakınız

- DateTimeInterface::getTimestamp() - Gets the Unix timestamp
- DateTimeInterface::format() - Returns date formatted according to given format

# DateTimeInterface::getOffset

# DateTimeImmutable::getOffset

# DateTime::getOffset

# date_offset_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::getOffset -- DateTimeImmutable::getOffset -- DateTime::getOffset -- date_offset_get — Returns the timezone offset

### Açıklama

Nesne yönelimli kullanım

public function DateTimeInterface::getOffset(): int
public function DateTimeImmutable::getOffset(): int
public function DateTime::getOffset(): int

Yordamsal kullanım

function date_offset_get(DateTimeInterface `$object`): int

Returns the timezone offset.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: date_create() işlevinden dönen bir DateTime nesnesi.

### Dönen Değerler

Returns the timezone offset in seconds from UTC on success.

### Örnekler

Örnek 1 DateTime::getOffset() example

Nesne yönelimli kullanım

    <?php
    $winter = new DateTimeImmutable('2010-12-21', new DateTimeZone('America/New_York'));
    $summer = new DateTimeImmutable('2008-06-21', new DateTimeZone('America/New_York'));

    echo $winter->getOffset() . "\n";
    echo $summer->getOffset() . "\n";

Yukarıdaki örneğin çıktısı:

    -18000
    -14400

Yordamsal kullanım

    <?php
    $winter = date_create('2010-12-21', timezone_open('America/New_York'));
    $summer = date_create('2008-06-21', timezone_open('America/New_York'));

    echo date_offset_get($winter) . "\n";
    echo date_offset_get($summer) . "\n";

Yukarıdaki örneğin çıktısı:

    -18000
    -14400

Note: -18000 = -5 hours, -14400 = -4 hours.

# DateTimeInterface::getTimestamp

# DateTimeImmutable::getTimestamp

# DateTime::getTimestamp

# date_timestamp_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTimeInterface::getTimestamp -- DateTimeImmutable::getTimestamp -- DateTime::getTimestamp -- date_timestamp_get — Gets the Unix timestamp

### Açıklama

Nesne yönelimli kullanım

public function DateTimeInterface::getTimestamp(): int
public function DateTimeImmutable::getTimestamp(): int
public function DateTime::getTimestamp(): int

Yordamsal kullanım

function date_timestamp_get(DateTimeInterface `$object`): int

Gets the Unix timestamp.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Unix timestamp representing the date.

### Hatalar/İstisnalar

If the timestamp cannot be represented as int, a DateRangeError is thrown. Prior to PHP 8.3.0, a ValueError is thrown. And, prior to PHP 8.0.0, `false` was returned in this case. Still, the timestamp can be retrieved as string by using DateTimeInterface::format() with the `U` format.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | The out-of-range exception is now DateRangeError.
8.0.0 | These functions no longer return `false` on failure.

### Örnekler

Örnek 1 DateTime::getTimestamp() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable();
    echo $date->getTimestamp();

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1272509157

Yordamsal kullanım

    <?php
    $date = date_create();
    echo date_timestamp_get($date);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1272509157

If you need to retrieve the timestamp with millisecond or microsecond resolution, then you can use the DateTimeInterface::format() function.

Örnek 2 Retrieving timestamp with milli and microsecond resolution

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable();
    $milli = (int) $date->format('Uv'); // Timestamp in milliseconds
    $micro = (int) $date->format('Uu'); // Timestamp in microseconds

    echo $milli, "\n", $micro, "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1674057635586
    1674057635586918

### Ayrıca Bakınız

- DateTime::setTimestamp() - Sets the date and time based on an Unix timestamp
- DateTimeImmutable::setTimestamp() - Sets the date and time based on a Unix timestamp
- DateTimeInterface::format() - Returns date formatted according to given format
- DateTimeInterface::getMicrosecond() - Gets the microsecond part of the Unix timestamp

# DateTimeInterface::getTimezone

# DateTimeImmutable::getTimezone

# DateTime::getTimezone

# date_timezone_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::getTimezone -- DateTimeImmutable::getTimezone -- DateTime::getTimezone -- date_timezone_get — Return time zone relative to given DateTime

### Açıklama

Nesne yönelimli kullanım

public function DateTimeInterface::getTimezone(): DateTimeZone|false
public function DateTimeImmutable::getTimezone(): DateTimeZone|false
public function DateTime::getTimezone(): DateTimeZone|false

Yordamsal kullanım

function date_timezone_get(DateTimeInterface `$object`): DateTimeZone|false

Return time zone relative to given DateTime.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: date_create() işlevinden dönen bir DateTime nesnesi.

### Dönen Değerler

Returns a DateTimeZone object on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 DateTime::getTimezone() example

Nesne yönelimli kullanım

    <?php
    $date = new DateTimeImmutable("now", new DateTimeZone('Europe/London'));
    $tz = $date->getTimezone();
    echo $tz->getName();

Yukarıdaki örneğin çıktısı:

    Europe/London

Yordamsal kullanım

    <?php
    $date = date_create("now", timezone_open('Europe/London'));
    $tz = date_timezone_get($date);
    echo timezone_name_get($tz);

Yukarıdaki örneğin çıktısı:

    Europe/London

### Ayrıca Bakınız

- DateTime::setTimezone() - Sets the time zone for the DateTime object

# DateTime::__serialize

# DateTimeImmutable::__serialize

# DateTimeInterface::__serialize

(PHP 8 >= 8.2.0)

DateTime::__serialize -- DateTimeImmutable::__serialize -- DateTimeInterface::__serialize — Serialize a DateTime

### Açıklama

public function DateTime::__serialize(): array
public function DateTimeImmutable::__serialize(): array
public function DateTimeInterface::__serialize(): array

The __serialize() handler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The serialized representation of the DateTime object.

### Örnekler

Örnek 1 DateTime::serialize() example

    <?php
    $date = new DateTime('2025-03-27');
    var_dump(serialize($date));

Yukarıdaki örneğin çıktısı:

    string(114) "O:8:"DateTime":3:{s:4:"date";s:26:"2025-03-27 00:00:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}"

### Ayrıca Bakınız

- DateTime::__unserialize() - Unserialize an Datetime

# DateTime::__unserialize

# DateTimeImmutable::__unserialize

# DateTimeInterface::__unserialize

(PHP 8 >= 8.2.0)

DateTime::__unserialize -- DateTimeImmutable::__unserialize -- DateTimeInterface::__unserialize — Unserialize an Datetime

### Açıklama

public function DateTime::__unserialize(array `$data`): void
public function DateTimeImmutable::__unserialize(array `$data`): void
public function DateTimeInterface::__unserialize(array `$data`): void

The __unserialize() handler.

### Bağımsız Değişkenler

`data`

  The serialized DateTime.

### Dönen Değerler

The DateTime object.

### Örnekler

Örnek 1 DateTime::unserialize() example

    <?php
    $serializedDate = 'O:8:"DateTime":3:{s:4:"date";s:26:"2025-03-27 00:00:00.000000";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}';
    var_dump(unserialize($serializedDate));

Yukarıdaki örneğin çıktısı:

    object(DateTime)#1 (3) {
      ["date"]=>
      string(26) "2025-03-27 00:00:00.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(3) "UTC"
    }

### Ayrıca Bakınız

- DateTime::__serialize() - Serialize a DateTime

# DateTime::__wakeup

# DateTimeImmutable::__wakeup

# DateTimeInterface::__wakeup

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::__wakeup -- DateTimeImmutable::__wakeup -- DateTimeInterface::__wakeup — The __wakeup handler

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
public function DateTime::__wakeup(): void
#[\Deprecated]
public function DateTimeImmutable::__wakeup(): void
#[\Deprecated]
public function DateTimeInterface::__wakeup(): void

The __wakeup() handler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Initializes a DateTime object.

## İçindekiler

- DateTimeInterface::diff — Returns the difference between two DateTime objects
- DateTimeInterface::format — Returns date formatted according to given format
- DateTimeInterface::getMicrosecond — Gets the microsecond part of the Unix timestamp
- DateTimeInterface::getOffset — Returns the timezone offset
- DateTimeInterface::getTimestamp — Gets the Unix timestamp
- DateTimeInterface::getTimezone — Return time zone relative to given DateTime
- DateTime::__serialize — Serialize a DateTime
- DateTime::__unserialize — Unserialize an Datetime
- DateTime::__wakeup — The __wakeup handler

# DateTimeZone sınıfı

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

## Giriş

Zaman dilimi gösterimi.

## Sınıf Sözdizimi

class DateTimeZone {
/* Sabitler */
const int AFRICA = 1;
const int AMERICA = 2;
const int ANTARCTICA = 4;
const int ARCTIC = 8;
const int ASIA = 16;
const int ATLANTIC = 32;
const int AUSTRALIA = 64;
const int EUROPE = 128;
const int INDIAN = 256;
const int PACIFIC = 512;
const int UTC = 1024;
const int ALL = 2047;
const int ALL_WITH_BC = 4095;
const int PER_COUNTRY = 4096;
/* Yöntemler */
public function __construct(string `$timezone`)
function timezone_open(string `$timezone`): DateTimeZone|false
public function getLocation(): array|false
function timezone_location_get(DateTimeZone `$nesne`): array|false
public function getName(DateTimeZone `$nesne`): string
public function getOffset(DateTimeInterface `$datetime`): int
public function getTransitions(int `$timestampBegin` = `PHP_INT_MIN`, int `$timestampEnd` = 2147483647): array|false
public static function listAbbreviations(): array
public static function listIdentifiers(int `$timezoneGroup` = `DateTimeZone::ALL`, ?string `$countryCode` = `null`): array
}

## Öntanımlı Sabitler

`DateTimeZone::AFRICA`

  Afrika zaman dilimleri.

`DateTimeZone::AMERICA`

  Amerika zaman dilimleri.

`DateTimeZone::ANTARCTICA`

  Antarktika zaman dilimleri.

`DateTimeZone::ARCTIC`

  Kuzey Kutup Dairesi zaman dilimleri.

`DateTimeZone::ASIA`

  Asya zaman dilimleri.

`DateTimeZone::ATLANTIC`

  Atlantik zaman dilimleri.

`DateTimeZone::AUSTRALIA`

  Avustralya zaman dilimleri.

`DateTimeZone::EUROPE`

  Avrupa zaman dilimleri.

`DateTimeZone::INDIAN`

  Hindistan zaman dilimleri.

`DateTimeZone::PACIFIC`

  Pasifik zaman dilimleri.

`DateTimeZone::UTC`

  UTC zaman dilimleri.

`DateTimeZone::ALL`

  Tüm zaman dilimleri.

`DateTimeZone::ALL_WITH_BC`

  Geriye uyumluluk dahil tüm zaman dilimleri.

`DateTimeZone::PER_COUNTRY`

  Ülkelere göre zaman dilimleri.

# DateTimeZone::__construct

# timezone_open

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::__construct -- timezone_open — Yeni bir DateTimeZone nesnesi oluşturur

### Açıklama

Nesne yönelimli kullanım

public function DateTimeZone::__construct(string `$timezone`)

Yordamsal kullanım

function timezone_open(string `$timezone`): DateTimeZone|false

Yeni bir DateTimeZone nesnesi oluşturur.

DateTimeZone nesnesi farklı türde üç zaman dilimi kuralına erişim sağlar: UTC başlangıcı (`1`. tür), zaman dilimi kısaltması (`2`. tür) ve IANA zaman dilimi veritabanında yayınlanan zaman dilimi belirteçleri (`3`. tür).

DateTimeZone nesnesi, yerel bir saat diliminde DateTime ve DateTimeImmutable nesneleriyle gösterilen saat dilimini oluşturabilmek için bu nesnelere eklenebilir.

### Bağımsız Değişkenler

`timezone`

  Desteklenen zaman dilimlerinden biri, saat farkı (+0200) veya zaman dilimi kısaltması (BST).

### Dönen Değerler

Başarılı olduğunda yeni bir DateTimeZone nesnesi döndürür. Yordamsal kullanım başarısızlık durumunda `false` döndürür.

### Hatalar/İstisnalar

Eğer zaman dilimi geçerli bir zaman dilimi değilse bu işlev DateInvalidTimeZoneException istisnası oluşturur. PHP 8.3 öncesinde Exception istisnası oluşuyordu.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Geçersiz değerler Exception yerine artık DateInvalidTimeZoneException istisnası oluşturuyor.

### Örnekler

Örnek 1 - DateTimeZone oluşturmak ve DateTimeImmutable nesnesine eklemek

    <?php
    $d = new DateTimeImmutable("2022-06-02 15:44:48 UTC");

    $timezones = [ 'Europe/London', 'GMT+04:45', '-06:00', 'CEST' ];

    foreach ($timezones as $tz) {
        $tzo = new DateTimeZone($tz);

        $local = $d->setTimezone($tzo);
        echo $local->format(DateTimeInterface::RFC2822 . ' — e'), "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

Thu, 02 Jun 2022 16:44:48 +0100 — Europe/London
Thu, 02 Jun 2022 20:29:48 +0445 — +04:45
Thu, 02 Jun 2022 09:44:48 -0600 — -06:00
Thu, 02 Jun 2022 16:44:48 +0100 — CEST

Örnek 2 - DateTimeZone örneklenirken hataların yakalanması

    <?php
    // Yakalanan istisna nesneleriyle hata işlenmesine örnek
    $zamandilimleri = array('Europe/Istanbul', 'Mars/Phobos', 'Jupiter/Europa');

    foreach ($zamandilimleri as $zd) {
        try {
            $mars = new DateTimeZone($zd);
        } catch(Exception $e) {
            echo $e->getMessage() . '<br />';
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
    DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)

# DateTimeZone::getLocation

# timezone_location_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTimeZone::getLocation -- timezone_location_get — Zaman dilimi konum bilgisini döndürür

### Açıklama

Nesne yönelimli kullanım

public function DateTimeZone::getLocation(): array|false

Yordamsal kullanım

function timezone_location_get(DateTimeZone `$nesne`): array|false

Zaman dilimi için konum bilgisini; ülke kodu, enlem/boylam değerlerini ve yorumları döndürür.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: timezone_open() işlevinden dönen bir DateTimeZone nesnesi.

### Dönen Değerler

Zaman dilimi hakkında konum bilgisini içeren bir dizi başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - DateTimeZone::getLocation() örneği

    <?php
    $tz = new DateTimeZone("Europe/Prague");
    print_r($tz->getLocation());
    print_r(timezone_location_get($tz));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [country_code] => CZ
        [latitude] => 50.08333
        [longitude] => 14.43333
        [comments] =>
    )
    Array
    (
        [country_code] => CZ
        [latitude] => 50.08333
        [longitude] => 14.43333
        [comments] =>
    )

### Ayrıca Bakınız

- Desteklenen zaman dilimi tanımlayıcıların kısmi veya tam listesi için: DateTimeZone::listIdentifiers() - Returns a numerically indexed array containing all defined timezone identifiers

# DateTimeZone::getName

# timezone_name_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::getName -- timezone_name_get — Zaman diliminin adını döndürür

### Açıklama

Nesne yönelimli kullanım

public function DateTimeZone::getName(DateTimeZone `$nesne`): string

Yordamsal kullanım

function timezone_name_get(): string

Zaman diliminin adını döndürür.

### Bağımsız Değişkenler

`nesne`

  Bir isim almak için DateTimeZone.

### Dönen Değerler

Aynı saat farkı ve/veya kurallarıyla yeni bir DateTimeZone nesnesi oluşturmak için kullanılabilecek açıklayıcı bir dizge, dilim türüne bağlı olarak, UTC farkı (1. tür), zaman dilimi kısaltması (2. tür) veya IANA zaman dilimi veritabanında yayınlanan zaman dilimi belirteçlerinden biri (3. tür). Örneğin, `02:00`, `CEST` veya zaman dilimleri listesi içindeki zaman dilimi isimlerinden biri.

# DateTimeZone::getOffset

# timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::getOffset -- timezone_offset_get — Returns the timezone offset from GMT

### Açıklama

Nesne yönelimli kullanım

public function DateTimeZone::getOffset(DateTimeInterface `$datetime`): int

Yordamsal kullanım

function timezone_offset_get(DateTimeZone `$object`, DateTimeInterface `$datetime`): int

This function returns the offset to GMT for the date/time specified in the `datetime` parameter. The GMT offset is calculated with the timezone information contained in the DateTimeZone object being used.

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: timezone_open() işlevinden dönen bir DateTimeZone nesnesi.

`datetime`

  DateTime that contains the date/time to compute the offset from.

### Dönen Değerler

Returns time zone offset in seconds.

### Örnekler

Örnek 1 DateTimeZone::getOffset() examples

    <?php
    // Create two timezone objects, one for Taipei (Taiwan) and one for
    // Tokyo (Japan)
    $dateTimeZoneTaipei = new DateTimeZone("Asia/Taipei");
    $dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");

    // Create two DateTime objects that will contain the same Unix timestamp, but
    // have different timezones attached to them.
    $dateTimeTaipei = new DateTime("now", $dateTimeZoneTaipei);
    $dateTimeJapan = new DateTime("now", $dateTimeZoneJapan);

    // Calculate the GMT offset for the date/time contained in the $dateTimeTaipei
    // object, but using the timezone rules as defined for Tokyo
    // ($dateTimeZoneJapan).
    $timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);

    // Should show int(32400) (for dates after Sat Sep 8 01:00:00 1951 JST).
    var_dump($timeOffset);

Yukarıdaki örneğin çıktısı:

    int(32400)

# DateTimeZone::getTransitions

# timezone_transitions_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::getTransitions -- timezone_transitions_get — Returns all transitions for the timezone

### Açıklama

Nesne yönelimli kullanım

public function DateTimeZone::getTransitions(int `$timestampBegin` = `PHP_INT_MIN`, int `$timestampEnd` = 2147483647): array|false

Yordamsal kullanım

function timezone_transitions_get(DateTimeZone `$object`, int `$timestampBegin` = `PHP_INT_MIN`, int `$timestampEnd` = 2147483647): array|false

### Bağımsız Değişkenler

`nesne`

  Sadece yordamsal biçem: timezone_open() işlevinden dönen bir DateTimeZone nesnesi.

`timestampBegin`

  Begin timestamp.

`timestampEnd`

  End timestamp.

### Dönen Değerler

Returns a numerically indexed array of transition arrays on success, başarısızlık durumunda `false` döner. DateTimeZone objects wrapping type 1 (UTC offsets) and type 2 (abbreviations) do not contain any transitions, and calling this method on them will return `false`.

If `timestampBegin` is given, the first entry in the returned array will contain a transition element at the time of `timestampBegin`.

Transition Array Structure
Key | Type | Description
--- | --- | ---
`ts` | int | Unix timestamp
`time` | string | `DateTimeInterface::ISO8601_EXPANDED` (PHP 8.2 and later), or `DateTimeInterface::ISO8601` (PHP 8.1 and lower) time string
`offset` | int | Offset to UTC in seconds
`isdst` | bool | Whether daylight saving time is active
`abbr` | string | Timezone abbreviation

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The default value of `timestampEnd` has been changed to 2147483647. Previously, it was `PHP_INT_MAX`.

### Örnekler

Örnek 1 A timezone_transitions_get() example

    <?php
    $timezone = new DateTimeZone("Europe/London");
    $transitions = $timezone->getTransitions();
    print_r(array_slice($transitions, 0, 3));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [ts] => -2147483648
                [time] => 1901-12-13T20:45:52+00:00
                [offset] => -75
                [isdst] =>
                [abbr] => LMT
            )

        [1] => Array
            (
                [ts] => 442304971
                [time] => 1847-12-01T00:01:15+00:00
                [offset] => 0
                [isdst] =>
                [abbr] => GMT
            )

        [2] => Array
            (
                [ts] => -1691964000
                [time] => 1916-05-21T02:00:00+00:00
                [offset] => 3600
                [isdst] => 1
                [abbr] => BST
            )

    )

Örnek 2 A timezone_transitions_get() example with `timestampBegin` set

    <?php
    $timezone = new DateTimeZone("Europe/London");
    $transitions = $timezone->getTransitions(time());
    print_r(array_slice($transitions, 0, 3));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [ts] => 1759058251
                [time] => 2025-09-28T11:17:31+00:00
                [offset] => 3600
                [isdst] => 1
                [abbr] => BST
            )

        [1] => Array
            (
                [ts] => 1761440400
                [time] => 2025-10-26T01:00:00+00:00
                [offset] => 0
                [isdst] =>
                [abbr] => GMT
            )

        [2] => Array
            (
                [ts] => 1774746000
                [time] => 2026-03-29T01:00:00+00:00
                [offset] => 3600
                [isdst] => 1
                [abbr] => BST
            )

    )

# DateTimeZone::listAbbreviations

# timezone_abbreviations_list

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::listAbbreviations -- timezone_abbreviations_list — Returns associative array containing dst, offset and the timezone name

### Açıklama

Nesne yönelimli kullanım

public static function DateTimeZone::listAbbreviations(): array

Yordamsal kullanım

function timezone_abbreviations_list(): array

The returned list of abbreviations includes all historical use of abbreviations, which can lead to correct, but confusing entries. There are also conflicts, as `PST` is used both in the US and in the Philippines.

The list that this function returns is therefore not suitable for building an array with options to present a choice of timezone to users.

> Bilginize:

> The data for this function are precompiled for performance reasons, and are not updated when using a newer » timezonedb.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the array of timezone abbreviations.

### Örnekler

Örnek 1 A timezone_abbreviations_list() example

    <?php
    $timezone_abbreviations = DateTimeZone::listAbbreviations();
    print_r($timezone_abbreviations["acst"]);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/Adelaide
            )

        [1] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/Broken_Hill
            )

        [2] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/Darwin
            )

        [3] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/North
            )

        [4] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/South
            )

        [5] => Array
            (
                [dst] =>
                [offset] => 34200
                [timezone_id] => Australia/Yancowinna
            )

    )

### Ayrıca Bakınız

- timezone_identifiers_list() - DateTimeZone::listIdentifiers işlevinin takma adıdır

# DateTimeZone::listIdentifiers

# timezone_identifiers_list

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::listIdentifiers -- timezone_identifiers_list — Returns a numerically indexed array containing all defined timezone identifiers

### Açıklama

Nesne yönelimli kullanım

public static function DateTimeZone::listIdentifiers(int `$timezoneGroup` = `DateTimeZone::ALL`, ?string `$countryCode` = `null`): array

Yordamsal kullanım

function timezone_identifiers_list(int `$timezoneGroup` = `DateTimeZone::ALL`, ?string `$countryCode` = `null`): array

Return the list of » IANA Time Zone identifiers.

> Bilginize: It's possible to detect the client (browser) timezone with JavaScript using » Intl.DateTimeFormat or » Temporal.ZonedDateTime.

### Bağımsız Değişkenler

`timezoneGroup`

  One of the DateTimeZone class constants (or a combination).

`countryCode`

  A two-letter (uppercase) ISO 3166-1 compatible country code.

  > Bilginize: This option is only used when `timezoneGroup` is set to `DateTimeZone::PER_COUNTRY`.

### Dönen Değerler

Returns the array of timezone identifiers. Only non-outdated items are returned. To get all, including outdated timezone identifiers, use the `DateTimeZone::ALL_WITH_BC` as value for `timezoneGroup`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Prior to this version, `false` was returned on failure.
7.1.0 | `countryCode` is nullable now.

### Örnekler

Örnek 1 List identifiers with location comments

    <?php
    $identifiers = DateTimeZone::listIdentifiers(DateTimeZone::ALL);

    foreach ($identifiers as $tzid) {
        $tz = new DateTimeZone($tzid);
        $comments = $tz->getLocation()['comments'];
        echo $tzid . " (" . ($comments ?: 'Whole region') . ")\n";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    America/Antigua (Whole region)
    America/Araguaina (Tocantins)
    America/Argentina/Buenos_Aires (Buenos Aires (BA, CF))
    America/Argentina/Catamarca (Catamarca (CT), Chubut (CH))
    America/Argentina/Cordoba (Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF))
    // (Output trimmed due to length)

Örnek 2 Listing identifiers for a specific region

    <?php
    $timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::ASIA );
    for ($i=0; $i < 5; $i++) {
        echo "$timezone_identifiers[$i]\n";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Asia/Aden
    Asia/Almaty
    Asia/Amman
    Asia/Anadyr
    Asia/Aqtau

Örnek 3 Listing identifiers for multiple regions

    <?php
    $timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::ASIA | DateTimeZone::PACIFIC );
    echo join( ', ', $timezone_identifiers );

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Asia/Aden, Asia/Almaty, Asia/Amman, Asia/Anadyr, Asia/Aqtau, Asia/Aqtobe,
    Asia/Ashgabat, Asia/Atyrau, Asia/Baghdad, Asia/Bahrain, Asia/Baku,
    Asia/Bangkok, Asia/Barnaul, Asia/Beirut, Asia/Bishkek, Asia/Brunei,
    Asia/Chita, Asia/Choibalsan, Asia/Colombo, Asia/Damascus, Asia/Dhaka,
    Asia/Dili, Asia/Dubai, Asia/Dushanbe, Asia/Famagusta, Asia/Gaza, Asia/Hebron,
    Asia/Ho_Chi_Minh, Asia/Hong_Kong, Asia/Hovd, Asia/Irkutsk, Asia/Jakarta,
    Asia/Jayapura, Asia/Jerusalem, Asia/Kabul, Asia/Kamchatka, Asia/Karachi,
    Asia/Kathmandu, Asia/Khandyga, Asia/Kolkata, Asia/Krasnoyarsk,
    Asia/Kuala_Lumpur, Asia/Kuching, Asia/Kuwait, Asia/Macau, Asia/Magadan,
    Asia/Makassar, Asia/Manila, Asia/Muscat, Asia/Nicosia, Asia/Novokuznetsk,
    Asia/Novosibirsk, Asia/Omsk, Asia/Oral, Asia/Phnom_Penh, Asia/Pontianak,
    Asia/Pyongyang, Asia/Qatar, Asia/Qostanay, Asia/Qyzylorda, Asia/Riyadh,
    Asia/Sakhalin, Asia/Samarkand, Asia/Seoul, Asia/Shanghai, Asia/Singapore,
    Asia/Srednekolymsk, Asia/Taipei, Asia/Tashkent, Asia/Tbilisi, Asia/Tehran,
    Asia/Thimphu, Asia/Tokyo, Asia/Tomsk, Asia/Ulaanbaatar, Asia/Urumqi,
    Asia/Ust-Nera, Asia/Vientiane, Asia/Vladivostok, Asia/Yakutsk, Asia/Yangon,
    Asia/Yekaterinburg, Asia/Yerevan, Pacific/Apia, Pacific/Auckland,
    Pacific/Bougainville, Pacific/Chatham, Pacific/Chuuk, Pacific/Easter,
    Pacific/Efate, Pacific/Fakaofo, Pacific/Fiji, Pacific/Funafuti,
    Pacific/Galapagos, Pacific/Gambier, Pacific/Guadalcanal, Pacific/Guam,
    Pacific/Honolulu, Pacific/Kanton, Pacific/Kiritimati, Pacific/Kosrae,
    Pacific/Kwajalein, Pacific/Majuro, Pacific/Marquesas, Pacific/Midway,
    Pacific/Nauru, Pacific/Niue, Pacific/Norfolk, Pacific/Noumea,
    Pacific/Pago_Pago, Pacific/Palau, Pacific/Pitcairn, Pacific/Pohnpei,
    Pacific/Port_Moresby, Pacific/Rarotonga, Pacific/Saipan, Pacific/Tahiti,
    Pacific/Tarawa, Pacific/Tongatapu, Pacific/Wake, Pacific/Wallis

Örnek 4 Listing identifiers for a single country

    <?php
    $timezone_identifiers = DateTimeZone::listIdentifiers( DateTimeZone::PER_COUNTRY, "UA" );
    foreach( $timezone_identifiers as $identifier ) {
        echo "$identifier\n";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Europe/Kyiv
    Europe/Simferopol
    Europe/Uzhgorod
    Europe/Zaporozhye

### Ayrıca Bakınız

- timezone_abbreviations_list() - DateTimeZone::listAbbreviations işlevinin takma adıdır

## İçindekiler

- DateTimeZone::__construct — Yeni bir DateTimeZone nesnesi oluşturur
- DateTimeZone::getLocation — Zaman dilimi konum bilgisini döndürür
- DateTimeZone::getName — Zaman diliminin adını döndürür
- DateTimeZone::getOffset — Returns the timezone offset from GMT
- DateTimeZone::getTransitions — Returns all transitions for the timezone
- DateTimeZone::listAbbreviations — Returns associative array containing dst, offset and the timezone name
- DateTimeZone::listIdentifiers — Returns a numerically indexed array containing all defined timezone identifiers

# DateInterval sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

Bir tarih aralığı gösterir.

Ya sabit bir süre (yıl, ay, gün saat sayısı gibi) ya da DateTimeImmutable ve DateTime kurucusunun desteklediği biçemde göreli bir zaman dizgesi saklanır.

Daha açıkçası, bir DateInterval nesnesindeki bilgiler, bir tarih/saatten başka bir tarih/saate gitme talimatıdır. Bu işlem her zaman tersine çevrilebilir değildir.

DateInterval nesnesi oluşturmanın yaygın yolu, DateTimeInterface::diff() aracılığıyla iki tarih/saat nesnesi arasındaki farkı hesaplamaktır.

Tarih aralıklarını karşılaştırmak için uygun bir yöntem bulunmadığından DateInterval örneklerinin eşsiz olduğu varsayılır.

## Sınıf Sözdizimi

class DateInterval {
/* Özellikler */
public int $y;
public int $m;
public int $d;
public int $h;
public int $i;
public int $s;
public float $f;
public int $invert;
public mixed $days;
public bool $from_string;
public string $date_string;
/* Yöntemler */
public function __construct(string `$duration`)
public static function createFromDateString(string `$zaman`): DateInterval|false
public function format(string `$biçem`): string
}

## Özellikler

Uyarı

Aşağıda sıralanmış özellikler PHP sürümüne bağlı olup salt-okunur olarak ele alınmalıdır.

y

  Yıl sayısı.

m

  Ay sayısı.

d

  Gün sayısı.

h

  Saat sayısı.

i

  Dakika sayısı.

s

  Saniye sayısı.

f

  Saniyenin kesri olarak mikrosaniye.

invert

  Zaman aralığı negatifse `1` değilse `0` Bakınız: DateInterval::format().

days

  DateInterval nesnesi DateTimeImmutable::diff() veya DateTime::diff() tarafından oluşturulmuşsa, başlangıç ve son tarihler arasındaki toplam tam gün sayısıdır. Aksi takdirde, days `false`'dır.

from_string

  DateInterval nesnesi DateInterval::createFromDateString() tarafından oluşturulmuşsa, özelliğin değeri `true` olur ve date_string özelliği oluşturulur. Aksi takdirde değer `false` olur ve y'den f'ye kadar özellikler ile invert ve days özellikleri oluşturulur.

date_string

  Dizge DateInterval::createFromDateString() için bir bağımsız değişken olarak kullanılır.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | DateInterval::createFromDateString() yöntemiyle oluşturulan DateInterval nesneleri için from_string ve date_string özellikleri eklendi.
8.2.0 | Yalnızca `y`'den `f`'ye kadar, `invert` ve `days` görünür olacaktır.
7.4.0 | Artık, DateInterval örneklerinin eşsiz olduğu varsayılıyor; evvelce tüm DateInterval örneklerinin eşit olduğu varsayılırdı.
7.1.0 | f özelliği eklendi.

# DateInterval::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::__construct — Yeni bir DateInterval nesnesi oluşturur

### Açıklama

public function DateInterval::__construct(string `$duration`)

Yeni bir DateInterval nesnesi oluşturur.

### Bağımsız Değişkenler

`duration`

  Dizge türünde zaman aralığı belirtimi.

  Zaman aralığını (period) belirtmek için biçem `P` harfiyle başlar, ardından süreyi belirten bir tamsayı değer gelir. Süre zaman bileşenleri içeriyorsa bunların önüne `T` harfi getirilir.

  `duration` Belirteçleri
  Belirteç | Açıklama
  --- | ---
  `Y` | Yıl
  `M` | Ay
  `D` | Gün
  `W` | Hafta. Gün sayısına dönüştürülebilir. PHP 8.0.0 öncesinde, D harfiyle birlikte belirtilemiyordu.
  `H` | Saat
  `M` | Dakika
  `S` | saniye

  Burada bazı basit örneklere yer verilmiştir. İki gün: `P2D`. İki saniye: `PT2S`. Altı yıl, 5 dakika: `P6YT5M`.

  > Bilginize:

  > Birimler belirtilirken en büyük ölçekli birim solda en küçük ölçekli birim sağda kalacak şekilde veri girilir. Dolayısıyla, örneğin, aylar yıllardan sonra, günlerden önce yer alır. Bur yıl dört gün `P4D1Y` değil `P1Y4D` olarak ifade edilir.

  Belirtim bir tarih saat olarak da gösterilebilir. Örneğin, bir yıl dört gün `P0001-00-04T00:00:00` olarak gösterilebilir. Fakat bu biçemde belirtilen değerler birime tanınan azami değeri aşmamalıdır (örneğin `25` saat geçersizdir).

  Bu biçemler » ISO 8601 süre belirtimine dayanır.

### Hatalar/İstisnalar

`zaman_aralığı` bir zaman aralığına çözümlenemediğinde DateMalformedIntervalStringException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Exception yerine artık DateMalformedIntervalStringException istisnası oluşuyor.
8.2.0 | Yalnızca `y`'den `f`'ye kadar özellikler ile `invert` ve `days` özelliklerine ek olarak yeni mantıksal `from_string` özelliği görünür olacaktır.
8.0.0 | `W` artık `D` ile birlikte belirtilebiliyor.

### Örnekler

Örnek 1 - DateInterval nesnelerinin oluşturulması ve kullanılması

    <?php
    // Belli bir tarih oluştur
    $someDate = \DateTime::createFromFormat("Y-m-d H:i", "2022-08-25 14:18");

    // Tarih aralığı oluştur
    $interval = new \DateInterval("P7D");

    // Tarih aralığını ekle
    $someDate->add($interval);

    // Tarih aralığını dizgeye dönüştür
    echo $interval->format("%d");

Yukarıdaki örneğin çıktısı:

7

Örnek 2 - DateInterval örneği

    <?php

    $interval = new DateInterval('P1W2D');
    var_dump($interval);

    ?>

Yukarıdaki örneğin PHP 8.2 çıktısı:

    object(DateInterval)#1 (10) {
      ["y"]=>
      int(0)
      ["m"]=>
      int(0)
      ["d"]=>
      int(9)
      ["h"]=>
      int(0)
      ["i"]=>
      int(0)
      ["s"]=>
      int(0)
      ["f"]=>
      float(0)
      ["invert"]=>
      int(0)
      ["days"]=>
      bool(false)
      ["from_string"]=>
      bool(false)
    }

Yukarıdaki örneğin PHP 8 çıktısı:

    object(DateInterval)#1 (16) {
      ["y"]=>
      int(0)
      ["m"]=>
      int(0)
      ["d"]=>
      int(9)
      ["h"]=>
      int(0)
      ["i"]=>
      int(0)
      ["s"]=>
      int(0)
      ["f"]=>
      float(0)
      ["weekday"]=>
      int(0)
      ["weekday_behavior"]=>
      int(0)
      ["first_last_day_of"]=>
      int(0)
      ["invert"]=>
      int(0)
      ["days"]=>
      bool(false)
      ["special_type"]=>
      int(0)
      ["special_amount"]=>
      int(0)
      ["have_weekday_relative"]=>
      int(0)
      ["have_special_relative"]=>
      int(0)
    }

Yukarıdaki örneğin PHP 7 çıktısı:

    object(DateInterval)#1 (16) {
      ["y"]=>
      int(0)
      ["m"]=>
      int(0)
      ["d"]=>
      int(2)
      ["h"]=>
      int(0)
      ["i"]=>
      int(0)
      ["s"]=>
      int(0)
      ["f"]=>
      float(0)
      ["weekday"]=>
      int(0)
      ["weekday_behavior"]=>
      int(0)
      ["first_last_day_of"]=>
      int(0)
      ["invert"]=>
      int(0)
      ["days"]=>
      bool(false)
      ["special_type"]=>
      int(0)
      ["special_amount"]=>
      int(0)
      ["have_weekday_relative"]=>
      int(0)
      ["have_special_relative"]=>
      int(0)
    }

### Ayrıca Bakınız

- DateInterval::format() - Zaman aralığını biçimler
- DateTime::add() - Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
- DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
- DateTime::diff() - Returns the difference between two DateTime objects

# DateInterval::createFromDateString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::createFromDateString — Dizgenin göreli kısımlarından bir DateInterval nesnesi döndürür

### Açıklama

Nesne yönelimli kullanım

public static function DateInterval::createFromDateString(string `$zaman`): DateInterval|false

Yordamsal kullanım

function date_interval_create_from_date_string(string `$zaman`): DateInterval|false

DateTimeImmutable kurucusunu normal tarih/saat ayrıştırcısı ile kullanarak çözümlenen dizgenin göreli kısımlarından bir DateInterval nesnesi oluşturur.

### Bağımsız Değişkenler

`zaman`

  Göreli gösterimle tarih. DateInterval'i oluşturmak için özellikle, DateTimeImmutable,strtotime() ve DateTime için kullanılan ayrıştırıcı tarafından desteklenen göreli gösterimler kullanılır.

  `P7D` gibi bir ISO-8601 biçem dizgesini kullanmak için kurucu gerekir.

### Dönen Değerler

Başarılıysa yeni bir DateInterval nesnesi döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | DateInterval bu yöntem ile oluşturulduğunda yalnızca `from_string` ve `date_string` özellikleri görünür olur.

### Örnekler

Örnek 1 - Geçerli tarih aralıklarının çözümlenmesi

    <?php
    // Aralıklar her birinde eşittir.
    $i = new DateInterval('P1D');
    $i = DateInterval::createFromDateString('1 day');

    $i = new DateInterval('P2W');
    $i = DateInterval::createFromDateString('2 weeks');

    $i = new DateInterval('P3M');
    $i = DateInterval::createFromDateString('3 months');

    $i = new DateInterval('P4Y');
    $i = DateInterval::createFromDateString('4 years');

    $i = new DateInterval('P1Y1D');
    $i = DateInterval::createFromDateString('1 year + 1 day');

    $i = new DateInterval('P1DT12H');
    $i = DateInterval::createFromDateString('1 day + 12 hours');

    $i = new DateInterval('PT3600S');
    $i = DateInterval::createFromDateString('3600 seconds');
    ?>

Örnek 2 - Birleşik ve negatif tarih aralıklarının çözümlenmesi

    <?php
    $i = DateInterval::createFromDateString('62 weeks + 1 day + 2 weeks + 2 hours + 70 minutes');
    echo $i->format('%d %h %i'), "\n";

    $i = DateInterval::createFromDateString('1 year - 10 days');
    echo $i->format('%y %d'), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

449 2 70
1 -10

Örnek 3 - Özel göreli tarih aralıklarının çözümlenmesi

    <?php
    //gelecek ayın son günü
    $i = DateInterval::createFromDateString('last day of next month');
    var_dump($i);

    // haftanın son günü
    $i = DateInterval::createFromDateString('last weekday');
    var_dump($i);

Yukarıdaki örneğin PHP 8.2 çıktısı:

    object(DateInterval)#1 (2) {
      ["from_string"]=>
      bool(true)
      ["date_string"]=>
      string(22) "last day of next month"
    }
    object(DateInterval)#2 (2) {
      ["from_string"]=>
      bool(true)
      ["date_string"]=>
      string(12) "last weekday"
    }

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

    object(DateInterval)#1 (16) {
      ["y"]=>
      int(0)
      ["m"]=>
      int(1)
      ["d"]=>
      int(0)
      ["h"]=>
      int(0)
      ["i"]=>
      int(0)
      ["s"]=>
      int(0)
      ["f"]=>
      float(0)
      ["weekday"]=>
      int(0)
      ["weekday_behavior"]=>
      int(0)
      ["first_last_day_of"]=>
      int(2)
      ["invert"]=>
      int(0)
      ["days"]=>
      bool(false)
      ["special_type"]=>
      int(0)
      ["special_amount"]=>
      int(0)
      ["have_weekday_relative"]=>
      int(0)
      ["have_special_relative"]=>
      int(0)
    }
    object(DateInterval)#2 (16) {
      ["y"]=>
      int(0)
      ["m"]=>
      int(0)
      ["d"]=>
      int(0)
      ["h"]=>
      int(0)
      ["i"]=>
      int(0)
      ["s"]=>
      int(0)
      ["f"]=>
      float(0)
      ["weekday"]=>
      int(0)
      ["weekday_behavior"]=>
      int(0)
      ["first_last_day_of"]=>
      int(0)
      ["invert"]=>
      int(0)
      ["days"]=>
      bool(false)
      ["special_type"]=>
      int(1)
      ["special_amount"]=>
      int(-1)
      ["have_weekday_relative"]=>
      int(0)
      ["have_special_relative"]=>
      int(1)
    }

# DateInterval::format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::format — Zaman aralığını biçimler

### Açıklama

public function DateInterval::format(string `$biçem`): string

Zaman aralığını biçimlendirir.

### Bağımsız Değişkenler

`biçem`

  `biçem` dizgesinde tanınan karakterler aşağıda listelenmiştir. Her biçem karakterinin başına bir yüzde (`%`) işareti konmalıdır.
  Karakter | Açıklama | Örnek değerler
  --- | --- | ---
  `%` | `%` iminin kendisi | `%`
  `Y` | Başına 0 getirilerek iki haneli yıl | `01`, `03`
  `y` | 0 ile öncelenmeksizin yıl | `1`, `3`
  `M` | Başına 0 getirilerek iki haneli ay | `01`, `03`, `12`
  `m` | 0 ile öncelenmeksizin ay | `1`, `3`, `12`
  `D` | Başına 0 getirilerek iki haneli ayın günü | `01`, `03`, `31`
  `d` | 0 ile öncelenmeksizin ayın günü | `1`, `3`, `31`
  `a` | DateTime::diff()'in sonucu olarak toplam gün sayısı, aksi takdirde `(unknown)` | `4`, `18`, `8123`
  `H` | Başına 0 getirilerek iki haneli saat | `01`, `03`, `23`
  `h` | 0 ile öncelenmeksizin saat | `1`, `3`, `23`
  `I` | Başına 0 getirilerek iki haneli dakika | `01`, `03`, `59`
  `i` | 0 ile öncelenmeksizin dakika | `1`, `3`, `59`
  `S` | Başına 0 getirilerek iki haneli saniye | `01`, `03`, `57`
  `s` | 0 ile öncelenmeksizin saniye | `1`, `3`, `57`
  `F` | Baştan 0 ile doldurulmuş en az 6 hanelik sayısal microsaniye. | `007701`, `052738`, `428291`
  `f` | Sayısal olarak mikrosaniye | `7701`, `52738`, `428291`
  `R` | Negatifse "`-`", pozitifse "`+`" imi | `-`, `+`
  `r` | Negatifse "`-`", pozitifse boş dizge | `-`,

### Dönen Değerler

Biçimlendirilmiş zaman aralığını bir dizge olarak döndürür.

### Sürüm Bilgisi

7.2.12 | `F` ve `f` biçemi artık daima pozitif oluyor.
--- | ---
Sürüm: | Açıklama
7.1.0 | `F` ve `f` biçem karakterleri eklendi.

### Örnekler

Örnek 1 - DateInterval örneği

    <?php

    $interval = new DateInterval('P2Y4DT6H8M');
    echo $interval->format('%d gün');

    ?>

Yukarıdaki örneğin çıktısı:

    4 gün

Örnek 2 - DateInterval ve büyük değerler

    <?php

    $interval = new DateInterval('P32D');
    echo $interval->format('%d gün');

    ?>

Yukarıdaki örneğin çıktısı:

    32 gün

Örnek 3 - DateInterval ve DateTime::diff() ile %a ve %d değiştiricileri

    <?php

    $january = new DateTime('2010-01-01');
    $february = new DateTime('2010-02-01');
    $interval = $february->diff($january);

    // %a toplam gün sayısını çıktılar.
    echo $interval->format('toplam %a gün')."\n";

    // %d ise aya dahil olmayan gün sayısını çıktılar.
    echo $interval->format('%m ay, %d gün');

    ?>

Yukarıdaki örneğin çıktısı:

    toplam 31 gün
    1 ay, 0 gün

### Notlar

> Bilginize:

> DateInterval::format() yöntemi ne zaman dizgelerinde ne de tarih bölümlerinde tehir edilen kısımları yeniden hesaplar. Bunun sebebi `"32 gün"` gibi büyük değerlerin olanaksız oluşudur. Olanaklı olsaydı böyle bir değer `"1 ay 4 gün"` ile `"1 ay 1 gün"` arasında bir değer olarak yorumlanabilirdi.

### Ayrıca Bakınız

- DateTime::diff() - Returns the difference between two DateTime objects

## İçindekiler

- DateInterval::__construct — Yeni bir DateInterval nesnesi oluşturur
- DateInterval::createFromDateString — Dizgenin göreli kısımlarından bir DateInterval nesnesi döndürür
- DateInterval::format — Zaman aralığını biçimler

# DatePeriod sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Giriş

Dönemselliğin gösterimi.

Bir tarih aralığı, belirli bir süre boyunca düzenli aralıklarla yinelenen bir tarih ve zaman kümesi üzerinde yinelemeye izin verir.

## Sınıf Sözdizimi

class DatePeriod implements IteratorAggregate {
/* Sabitler */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Özellikler */
public readonly ?DateTimeInterface $start;
public readonly ?DateTimeInterface $current;
public readonly ?DateTimeInterface $end;
public readonly ?DateInterval $interval;
public readonly int $recurrences;
public readonly bool $include_start_date;
public readonly bool $include_end_date;
/* Yöntemler */
public function __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public function __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
public function __construct(string `$isostr`, int `$options` = 0)
public static function createFromISO8601String(string `$specification`, int `$options` = 0): static
public function getDateInterval(): DateInterval
public function getEndDate(): ?DateTimeInterface
public function getRecurrences(): ?int
public function getStartDate(): DateTimeInterface
}

## Öntanımlı Sabitler

`DatePeriod::EXCLUDE_START_DATE`

  DatePeriod::__construct() yönteminde kullanılan başlangıç tarihi dışlanır.

`DatePeriod::INCLUDE_END_DATE`

  DatePeriod::__construct() yönteminde kullanılan bitiş tarihi dışlanmaz.

## Özellikler

recurrences

  Yineleyici tarafından döndürülen örneklerin asgari miktarı.

  Yineleme sayısı DatePeriod örneğinin kurucusunda doğrudan `recurrences` özniteliği ile aktarılarak oluşturulmuşsa, bu özellik bu değere ek olarak, başlangıç tarihi `DatePeriod::EXCLUDE_START_DATE` aracılığıyla iptal edilmişse artı bir, bitiş tarihi `DatePeriod::INCLUDE_END_DATE` aracılığıyla etkin kılınmışsa artı bir içerir.

  Yineleme sayısı doğrudan aktarılmamışsa bu özellik dönen örneklerin asgari sayısını içerir. Bu 0 olurdu, buna ek olarak, başlangıç tarihi `DatePeriod::EXCLUDE_START_DATE` aracılığıyla devre dışı bırakılmamışsa artı bir, bitiş tarihi `DatePeriod::INCLUDE_END_DATE` aracılığıyla etkinleştirilmişse artı bir olur.

      <?php
      $start = new DateTime('2018-12-31 00:00:00');
      $end   = new DateTime('2021-12-31 00:00:00');
      $interval = new DateInterval('P1M');
      $recurrences = 5; // yineleme sayısı

      // yineleme sayısını kurucu üzerinden doğrudan belirt
      $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
      echo $period->recurrences, "\n";

      $period = new DatePeriod($start, $interval, $recurrences);
      echo $period->recurrences, "\n";

      $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
      echo $period->recurrences, "\n";

      // yineleme sayısını kurucu üzerinden belirtME
      $period = new DatePeriod($start, $interval, $end);
      echo $period->recurrences, "\n";

      $period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
      echo $period->recurrences, "\n";
      ?>

  Yukarıdaki örneğin çıktısı:

  5
  6
  7
  1
  0

  Ayrıca bkz: DatePeriod::getRecurrences()

include_end_date

  Bitiş tarihinin yinelenen tarihler kümesine dahil edilip edilmeyeceği.

include_start_date

  Başlangıç tarihinin yinelenen tarihler kümesine dahil edilip edilmeyeceği.

start

  Dönemin başlangıç tarihi.

current

  Yineleme sırasında, dönem içindeki şimdiki tarihi içerecektir.

end

  Dönemin bitiş tarihi.

interval

  Bir ISO 8601 tekrarlanan aralık belirtimi.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | `DatePeriod::INCLUDE_END_DATE` sabiti ve include_end_date özeliği eklendi.
8.0.0 | DatePeriod artık IteratorAggregate arayüzünü gerçekliyor. Evvelce, Traversable arayüzünü gerçekliyordu.

# DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DatePeriod::__construct — Yeni bir DatePeriod nesnesi oluşturur

### Açıklama

public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
Uyarı
public function DatePeriod::__construct(string `$isostr`, int `$options` = 0)

Bu kullanım artık önerilmiyor, yerine DatePeriod::createFromISO8601String() kullanılmalıdır.

Yeni bir DatePeriod nesnesi oluşturur.

DatePeriod nesneleri, bir başlangıç (`start`) tarihinden, bir aralıktan (`interval`) ve bir bitiş (`end`) tarihinden veya yineleme sayısından (`recurrences`) bir dizi DateTimeImmutable veya DateTime nesnesi oluşturmak için yineleyici olarak kullanılabilir.

Nesnelerden dönen sınıf başlangıç (`start`) nesnesinin ata sınıfı olan DateTimeImmutable veya DateTime sınıfına eşdeğerdir.

### Bağımsız Değişkenler

`start`

  Dönemin başlangıç tarihi. Öntanımlı olarak, sonuç kümesine dahil edilir.

`interval`

  Dönemsel yinelemeler arasındaki boşluk.

`recurrences`

  Yineleme sayısı. `0`'dan büyük olmalıdır. Dönen sonuç sayısı, başlangıç tarihi öntanımlı olarak sonuç kümesine dahil edildiğinden bundan büyük olmalıdır.

`end`

  Dönemin bitiş tarihi. Öntanımlı olarak, sonuç kümesine dahil edilmez.

`isostr`

  » ISO 8601 tekrarlanan aralık belirtiminin bir alt kümesi.

  PHP'nin desteklediği ISO 8601 tekrarlanan aralık belirtimi özelliklerinden bazı örnekler:

  1. sıfır oluşumları (`R0/`)
  2. `+02:00` gibi, UTC (`Z`) dışında kalan diğer zaman dilimleri.
`options`

  Başlangıç ve bitiş tarihleri ile belirli davranışları denetlemek için kullanılan bit alanı.

  Başlangıç tarihini, dönem içindeki yinelenen tarihler kümesinden hariç tutmak için `DatePeriod::EXCLUDE_START_DATE` sabiti kullanılır.

  Bitiş tarihini, dönem içindeki yinelenen tarihler kümesine dahil etmek için `DatePeriod::INCLUDE_END_DATE` sabiti kullanılır.

### Hatalar/İstisnalar

`isostr` geçerli bir ISO 8601 dönemi olarak çözümlenemediğine DateMalformedPeriodStringException istisnası oluşur. PHP 8.3 öncesinde, Exception istisnası oluşuyordu.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Exception yerine artık DateMalformedPeriodStringException istisnası oluşuyor.
8.2.0 | `DatePeriod::INCLUDE_END_DATE` sabiti eklendi.
7.2.19, 7.3.6, 7.4.0 | `recurrences` artık `0`'dan büyük olmak zorunda.

### Örnekler

Örnek 1 - DatePeriod örneği

    <?php
    $start = new DateTime('2012-07-01');
    $interval = new DateInterval('P7D');
    $end = new DateTime('2012-07-31');
    $recurrences = 4;
    $iso = 'R4/2012-07-01T00:00:00Z/P7D';

    // Hepsi eşdeğer
    $period = new DatePeriod($start, $interval, $recurrences);
    $period = new DatePeriod($start, $interval, $end);
    $period = new DatePeriod($iso);

    // DatePeriod nesnesi üzerinde yineleme yaparak
    // yinelenen dönemlerin tarihleri basılabilir.
    foreach ($period as $date) {
        echo $date->format('Y-m-d')."\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    2012-07-01
    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Örnek 2 - `DatePeriod::EXCLUDE_START_DATE` ile DatePeriod örneği

    <?php
    $start = new DateTime('2012-07-01');
    $interval = new DateInterval('P7D');
    $end = new DateTime('2012-07-31');

    $period = new DatePeriod($start, $interval, $end,
                             DatePeriod::EXCLUDE_START_DATE);

    // DatePeriod nesnesi üzerinde yineleme yaparak
    // yinelenen dönemlerin tarihleri basılabilir.
    // Bu defa, 2012-07-01 basılmayacak.
    foreach ($period as $date) {
        echo $date->format('Y-m-d')."\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Örnek 3 - Bir yıldaki tüm son Perşembeleri gösteren DatePeriod örneği

    <?php
    $begin = new DateTime('2021-12-31');
    $end = new DateTime('2022-12-31 23:59:59');

    $interval = DateInterval::createFromDateString('last thursday of next month');
    $period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

    foreach ($period as $dt) {
        echo $dt->format('l Y-m-d'), "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Thursday 2022-01-27
    Thursday 2022-02-24
    Thursday 2022-03-31
    Thursday 2022-04-28
    Thursday 2022-05-26
    Thursday 2022-06-30
    Thursday 2022-07-28
    Thursday 2022-08-25
    Thursday 2022-09-29
    Thursday 2022-10-27
    Thursday 2022-11-24
    Thursday 2022-12-29

### Notlar

ISO 8601 belirtiminin 4.5 "Recurring time interval" bölümünde belirtilen sınırsız sayıda tekrarlama desteklenmemektedir. Yani, `isostr` için `"R/..."` çalışmayacağı gibi `end` için `null` da çalışmayacaktır

# DatePeriod::createFromISO8601String

(PHP 8 >= 8.3.0)

DatePeriod::createFromISO8601String — Creates a new DatePeriod object from an ISO8601 string

### Açıklama

public static function DatePeriod::createFromISO8601String(string `$specification`, int `$options` = 0): static

Creates a new DatePeriod object from an ISO8601 string, as specified with `specification`.

### Bağımsız Değişkenler

`specification`

  A subset of the » ISO 8601 repeating interval specification.

  An example of an accepted ISO 8601 interval specifications is `R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M`, which specifies:

  - 5 iterations (`R5/`)
  - Starting at `2008-03-01T13:00:00Z`.
  - Each iteration is an 1 year, 2 months, 10 days, 2 hours, and 30 minute interval (`/P1Y2M10DT2H30M`).

  Examples of some ISO 8601 interval specification features that PHP does not support are:

  1. zero occurrences (`R0/`)
  2. time offsets other than UTC (`Z`), such as `+02:00`.
`options`

  A bit field which can be used to control certain behaviour with start- and end- dates.

  With `DatePeriod::EXCLUDE_START_DATE` you exclude the start date from the set of recurring dates within the period.

  With `DatePeriod::INCLUDE_END_DATE` you include the end date in the set of recurring dates within the period.

### Dönen Değerler

Creates a new DatePeriod object.

DatePeriod objects created with this method can be used as an iterator to generate a number of DateTimeImmutable objects.

### Hatalar/İstisnalar

Throws an DateMalformedPeriodStringException when the `specification` cannot be parsed as a valid ISO 8601 period.

### Örnekler

Örnek 1 DatePeriod::createFromISO8601String example

    <?php
    $iso = 'R4/2023-07-01T00:00:00Z/P7D';
    $period = DatePeriod::createFromISO8601String($iso);

    // By iterating over the DatePeriod object, all of the
    // recurring dates within that period are printed.
    foreach ($period as $date) {
        echo $date->format('Y-m-d'), "\n";
    }

Yukarıdaki örneğin çıktısı:

    2023-07-01
    2023-07-08
    2023-07-15
    2023-07-22
    2023-07-29

# DatePeriod::getDateInterval

(PHP 5 >= 5.6.5, PHP 7, PHP 8)

DatePeriod::getDateInterval — Gets the interval

### Açıklama

Nesne yönelimli kullanım

public function DatePeriod::getDateInterval(): DateInterval

Gets a DateInterval object representing the interval used for the period.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a DateInterval object

### Örnekler

Örnek 1 DatePeriod::getDateInterval() example

    <?php
    $period = DatePeriod::createFromIso8601String('R7/2016-05-16T00:00:00Z/P1D');
    $interval = $period->getDateInterval();
    echo $interval->format('%d day');

Yukarıdaki örneğin çıktısı:

    1 day

### Ayrıca Bakınız

- DatePeriod::getStartDate() - Gets the start date
- DatePeriod::getEndDate() - Gets the end date

# DatePeriod::getEndDate

(PHP 5 >= 5.6.5, PHP 7, PHP 8)

DatePeriod::getEndDate — Gets the end date

### Açıklama

Nesne yönelimli kullanım

public function DatePeriod::getEndDate(): ?DateTimeInterface

Gets the end date of the period.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `null` if the DatePeriod does not have an end date. For example, when initialized with the `recurrences` parameter, or the `isostr` parameter without an end date.

Returns a DateTimeImmutable object when the DatePeriod is initialized with a DateTimeImmutable object as the `end` parameter.

Returns a cloned DateTime object representing the end date otherwise.

### Örnekler

Örnek 1 DatePeriod::getEndDate() example

    <?php
    $period = new DatePeriod(
        new DateTime('2016-05-16T00:00:00Z'),
        new DateInterval('P1D'),
        new DateTime('2016-05-20T00:00:00Z')
    );
    $start = $period->getEndDate();
    echo $start->format(DateTime::ISO8601);

Yukarıdaki örneklerin çıktısı:

    2016-05-20T00:00:00+0000

Örnek 2 DatePeriod::getEndDate() without an end date

    <?php
    $period = new DatePeriod(
        new DateTime('2016-05-16T00:00:00Z'),
        new DateInterval('P1D'),
        7
    );
    var_dump($period->getEndDate());

Yukarıdaki örneğin çıktısı:

    NULL

### Ayrıca Bakınız

- DatePeriod::getStartDate() - Gets the start date
- DatePeriod::getDateInterval() - Gets the interval

# DatePeriod::getRecurrences

(PHP 7 >= 7.2.17/7.3.4, PHP 8)

DatePeriod::getRecurrences — Gets the number of recurrences

### Açıklama

Nesne yönelimli kullanım

public function DatePeriod::getRecurrences(): ?int

Get the number of recurrences.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of recurrences as set by explicitly passing the `$recurrences` to the constructor of the DatePeriod class, or `null` otherwise.

### Örnekler

Örnek 1 Different values for DatePeriod::getRecurrences()

    <?php
    $start = new DateTime('2018-12-31 00:00:00');
    $end   = new DateTime('2021-12-31 00:00:00');
    $interval = new DateInterval('P1M');
    $recurrences = 5;

    // recurrences explicitly set through the constructor
    $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
    echo $period->getRecurrences(), "\n";

    $period = new DatePeriod($start, $interval, $recurrences);
    echo $period->getRecurrences(), "\n";

    $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
    echo $period->getRecurrences(), "\n\n";

    // recurrences not set in the constructor
    $period = new DatePeriod($start, $interval, $end);
    var_dump($period->getRecurrences());

    $period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
    var_dump($period->getRecurrences());

Yukarıdaki örneğin çıktısı:

    5
    5
    5

    NULL
    NULL

### Ayrıca Bakınız

- DatePeriod::$recurrences

# DatePeriod::getStartDate

(PHP 5 >= 5.6.5, PHP 7, PHP 8)

DatePeriod::getStartDate — Gets the start date

### Açıklama

Nesne yönelimli kullanım

public function DatePeriod::getStartDate(): DateTimeInterface

Gets the start date of the period.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a DateTimeImmutable object when the DatePeriod is initialized with a DateTimeImmutable object as the `start` parameter.

Returns a DateTime object otherwise.

### Örnekler

Örnek 1 DatePeriod::getStartDate() example

    <?php
    $period = DatePeriod::createFromIso8601String('R7/2016-05-16T00:00:00Z/P1D');
    $start = $period->getStartDate();
    echo $start->format(DateTime::ISO8601);

Yukarıdaki örneğin çıktısı:

    2016-05-16T00:00:00+0000

### Ayrıca Bakınız

- DatePeriod::getEndDate() - Gets the end date
- DatePeriod::getDateInterval() - Gets the interval

## İçindekiler

- DatePeriod::__construct — Yeni bir DatePeriod nesnesi oluşturur
- DatePeriod::createFromISO8601String — Creates a new DatePeriod object from an ISO8601 string
- DatePeriod::getDateInterval — Gets the interval
- DatePeriod::getEndDate — Gets the end date
- DatePeriod::getRecurrences — Gets the number of recurrences
- DatePeriod::getStartDate — Gets the start date

# Tarih ve Zaman İşlevleri

# checkdate

(PHP 4, PHP 5, PHP 7, PHP 8)

checkdate — Miladi tarihi doğrular

### Açıklama

function checkdate(int `$ay`, int `$gün`, int `$yıl`): bool

Verilen bağımsız değişkenlerle şekillenen tarihin geçerliliğini sınar. Her bağımsız değişken doğru tanımlanmışsa, tarih geçerli sayılır.

### Bağımsız Değişkenler

`ay`

  Ay 1 ve 12 arasında olmalıdır.

`gün`

  Gün, verilen `ay`'ın gün sayıları içerisinde olmalıdır. Artık `yıl`lar dikkate alınacaktır.

`yıl`

  Yıl 1 ve 32767 arasında olmalıdır.

### Dönen Değerler

Verilen tarih geçerli ise `true` değeriyle, değilse `false` değeriyle döner.

### Örnekler

Örnek 1 - checkdate() örneği

    <?php
    var_dump(checkdate(12, 31, 2000));
    var_dump(checkdate(2, 29, 2001));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

### Ayrıca Bakınız

- mktime() - Bir tarih için Unix zaman damgasını döndürür
- strtotime() - Parse about any English textual datetime description into a Unix timestamp

# date

(PHP 4, PHP 5, PHP 7, PHP 8)

date — Unix zaman damgasını biçimlendirir

### Açıklama

function date(string `$biçim`, ?int `$zaman_damgası` = `null`): string

Unix `zaman_damgası` bağımsız değişkeni ile belirtilen zamanı ya da bağımsız değişken kullanılmamışsa geçerli zamanı, belirtilen `biçim`e göre biçimlendirerek döndürür. Başka bir deyişle, `zaman_damgası` bağımsız değişkenini belirtmek isteğe bağlıdır ve varsayılan değeri time() işlevinin değeridir.

Uyarı

Unix zaman damgaları yerel zaman dilimi hakkında herhangi bir bilgi içermez. Tarih ve saat bilgilerini işlerken zaman dilimini de hesaba katabilmek için DateTimeImmutable sınıfı ve bu sınıfın biçemleme yöntemi olan DateTimeInterface::format() kullanılabilir.

### Bağımsız Değişkenler

`biçim`

  DateTimeInterface::format() tarafından kabul edilen biçim.

  > Bilginize: date() int değer aldığından mikrosaniye olarak daima `000000` üretirken, DateTimeInterface mikrosaniyeler ile oluşturulmuşsa DateTimeInterface::format() mikrosaniyeleri destekler.

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

Biçimlendirilmiş tarih dizgesi döner.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - date() örnekleri

    <?php
    // varsayılan zaman dilimini ayarla.
    date_default_timezone_set('UTC');

    // Şöyle bir şey basar: Monday
    echo date("l") . "\n";

    // Şöyle bir şey basar: Monday 8th of August 2005 03:12:46 PM
    echo date('l jS \of F Y h:i:s A') . "\n";

    // Şöyle bir şey basar: July 1, 2000 is on a Saturday
    echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)) . "\n";

    /* biçim bağımsız değişkeni için sabit kullanımı*/
    // Şöyle bir şey basar: Wed, 25 Sep 2013 15:28:57 -0700
    echo date(DATE_RFC2822) . "\n";

    // Şöyle bir şey basar: 2000-07-01T00:00:00+00:00
    echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

Biçim dizgesinin içinde tanınan bir karakterin önüne bir tersbölü imi koyarak yorumlanması engellenebilir. Eğer tersbölülü karakter zaten özel bir dizilimi ifade ediyorsa, bir tane daha tersbölü karakteri gerekir.

Örnek 2 - date() işlevinde önceleme karakterleri

    <?php
    // Şöyle bir şey basar: Wednesday the 15th
    echo date('l \t\h\e jS');

Bazı date() işlevi biçimlendirme örnekleri. Diğer öncelenen karakterlerin, geçerli bir özel anlama sahip olabileceklerinden istenmeyen sonuçlara neden olacağı ve gelecekteki PHP sürümlerinde kullanılmak üzere tahsis edilebilecekleri dikkate alınmalıdır. Önceleme yaparken \n gibi özel karakterlerin oluşmasını önlemek için dizgeyi tek tırnaklar arasına almak gerekir.

Örnek 3 - date() Biçemlemesi

    <?php
    // Bugünün; March 10th, 2001, 5:16:18 pm olduğunu ve
    // Mountain Standard Time (MST) Zaman Diliminde olduğumuzu varsayıyoruz
    date_default_timezone_set("America/Phoenix");

    echo date("F j, Y, g:i a") . "\n";                 // March 10, 2001, 5:16 pm
    echo date("m.d.y") . "\n";                         // 03.10.01
    echo date("j, n, Y") . "\n";                       // 10, 3, 2001
    echo date("Ymd") . "\n";                           // 20010310
    echo date('h-i-s, j-m-y, it is w Day') . "\n";     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
    echo date('\i\t \i\s \t\h\e jS \d\a\y.') . "\n";   // it is the 10th day.
    echo date("D M j G:i:s T Y") . "\n";               // Sat Mar 10 17:16:18 MST 2001
    echo date('H:m:s \m \i\s\ \m\o\n\t\h') . "\n";     // 17:03:18 m is month
    echo date("H:i:s") . "\n";                         // 17:16:18
    echo date("Y-m-d H:i:s") . "\n";                   // 2001-03-10 17:16:18 (MySQL DATETIME biçimi)

Tarihi farklı dillerde biçimlendirmek için, date() işlevi yerine IntlDateFormatter::format() yöntemi kullanılmalıdır.

### Notlar

> Bilginize:

> Tarihin dizge gösteriminden zaman damgası üretirken, strtotime() işlevi kullanılabilir. Ayrıca, bazı veritabanları girilen zaman damgalarını kendi biçimine çeviren işlevlere sahiptir (MySQL'in » UNIX_TIMESTAMP işlevi gibi).

İpucu

İstek başlangıcının zaman damgası $_SERVER['REQUEST_TIME'] değişkenine atanır.

### Ayrıca Bakınız

- DateTimeImmutable::__construct() - Returns new DateTimeImmutable object
- DateTimeInterface::format() - Returns date formatted according to given format
- gmdate() - Bir tarih/saati GMT/UTC tarih/saati olarak biçemler
- idate() - Yerel zaman/tarih kısmını tamsayı olarak biçimlendirir
- getdate() - Tarih/zaman bilgisi getirir
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür
- mktime() - Bir tarih için Unix zaman damgasını döndürür
- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler
- time() - Geçerli Unix zaman damgasını döndürür
- Öntanımlı Tarih/Saat Sabitleri

# date_add

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_add — DateTime::add() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::add() işlevinin takma adıdır.

# date_create

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_create — Yeni bir DateTime nesnesi oluşturur

### Açıklama

function date_create(string `$zaman` = "now", ?DateTimeZone `$zaman_dilimi` = `null`): DateTime|false

DateTime::__construct() için yordamsal sürüm.

DateTime kurucusundan farklı olarak, belirtilen `zaman` dizgesi geçersiz ise bir istisna yerine `false` döndürür.

### Bağımsız Değişkenler

Bkz: DateTimeImmutable::__construct.

### Dönen Değerler

Başarı durumunda yeni bir DateTime örneği, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- DateTimeImmutable::__construct() - Returns new DateTimeImmutable object
- DateTimeImmutable::createFromFormat() - Parses a time string according to a specified format
- DateTime::__construct() - Returns new DateTime object

# date_create_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_create_from_format — DateTime::createFromFormat() işlevinin takma adıdır

### Açıklama

Bu işlev DateTime::createFromFormat() işlevinin takma adıdır.

# date_create_immutable

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

date_create_immutable — Yeni bir DateTimeImmutable nesnesi oluşturur

### Açıklama

function date_create_immutable(string `$zaman` = "now", ?DateTimeZone `$zamandilimi` = `null`): DateTimeImmutable|false

DateTimeImmutable::__construct() yönteminin işlev karşılığıdır.

`zaman` bağımsız değişkeninde aktarılan değer geçersizse işlev karşılığı olduğu kurucunun tersine bir istisna oluşturmak yerine `false` döndürür.

### Bağımsız Değişkenler

Bkz, DateTimeImmutable::__construct.

### Dönen Değerler

Başarı durumunda yeni bir DateTimeImmutable örneği, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- DateTimeImmutable::createFromFormat() - Parses a time string according to a specified format

# date_create_immutable_from_format

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

date_create_immutable_from_format — DateTimeImmutable::createFromFormat() işlevinin takma adı

### Açıklama

Bu işlev DateTimeImmutable::createFromFormat() işlevinin takma adıdır.

# date_date_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_date_set — DateTime::setDate() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::setDate() işlevinin takma adıdır.

# date_default_timezone_get

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

date_default_timezone_get — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini getirir

### Açıklama

function date_default_timezone_get(): string

Bu işlev tercih sırasına göre öntanımlı zaman dilimini şöyle döndürür:

- date_default_timezone_set() işlevi kullanılarak atanan zaman dilimiyle (eğer varsa).

- date.timezone ini yönergesindeki değerle (ayarlanmışsa).

Eğer yukarıdakilerin hiçbirisi başarılı değilse, date_default_timezone_get() işlevi öntanımlı `UTC` zaman dilimini döndürecektir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

string türünde geri döner.

### Örnekler

Örnek 1 - Öntanımlı zaman diliminin getirilmesi

    <?php
    date_default_timezone_set('Europe/Istanbul');

    if (date_default_timezone_get()) {
        echo 'date_default_timezone_set: '. date_default_timezone_get() .'<br />';
    }

    if (ini_get('date.timezone')) {
        echo 'date.timezone: ' . ini_get('date.timezone');
    }

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    date_default_timezone_set: Europe/Istanbul
    date.timezone: Europe/Istanbul

Örnek 2 - Zaman diliminin kısaltmasının getirilmesi

    <?php
    date_default_timezone_set('Europe/Istanbul');
    echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
    ?>

Yukarıdaki örneğin çıktısı:

    Europe/Istanbul => Europe/Istanbul => EET

### Ayrıca Bakınız

- date_default_timezone_set() - Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini ayarlar
- Desteklenen Zaman Dilimlerinin Listesi

# date_default_timezone_set

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

date_default_timezone_set — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini ayarlar

### Açıklama

function date_default_timezone_set(string `$zamandilimi_belirteci`): bool

date_default_timezone_set() işlevi, tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini ayarlar.

Öntanımlı zaman dilimini ayarlamak için, bu işlevi betiğinizde kullanmak yerine, INI ayarlarındaki date.timezone yönergesini de kullanabilirsiniz.

### Bağımsız Değişkenler

`zamandilimi_belirteci`

  Zaman dilimi belirteci, `UTC` ya da `Africa/Lagos`, `Asia/Hong_Kong`, `Europe/Istanbul` gibi bir değer olabilir. Geçerli belirteçlerin listesi Desteklenen Zaman Dilimlerinin Listesi bölümünde bulunmaktadır.

### Dönen Değerler

Bu işlev `zamandilimi_belirteci` geçersizse `false`, aksi takdirde `true` döndürür.

### Örnekler

Örnek 1 - Öntanımlı zaman dilimini almak

    <?php
    date_default_timezone_set('Europe/Istanbul');

    $betik_zd = date_default_timezone_get();

    if (strcmp($betik_zd, ini_get('date.timezone'))){
        echo 'Betik zaman dilimi ini dosyasında belirtilenden farklı.';
    } else {
        echo 'Betik zaman dilimi ini dosyasında belirtilenle aynı.';
    }
    ?>

### Ayrıca Bakınız

- date_default_timezone_get() - Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini getirir
- Desteklenen Zaman Dilimlerinin Listesi

# date_diff

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_diff — DateTime::diff() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::diff() işlevinin takma adıdır.

# date_format

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_format — DateTime::format() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::format() işlevinin takma adıdır.

# date_get_last_errors

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_get_last_errors — DateTimeImmutable::getLastErrors() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeImmutable::getLastErrors() işlevinin takma adıdır.

# date_interval_create_from_date_string

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_interval_create_from_date_string — DateInterval::createFromDateString() işlevinin takma adıdır

### Açıklama

Bu işlev, DateInterval::createFromDateString() işlevinin takma adıdır.

# date_interval_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_interval_format — DateInterval::format() işlevinin takma adıdır

### Açıklama

Bu işlev, DateInterval::format() işlevinin takma adıdır.

# date_isodate_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_isodate_set — DateTime::setISODate() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::setISODate() işlevinin takma adıdır.

# date_modify

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_modify — DateTime::modify() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::modify() işlevinin takma adıdır.

# date_offset_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_offset_get — DateTime::getOffset() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::getOffset() işlevinin takma adıdır.

# date_parse

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_parse — Verilen tarih/zaman hakkındaki ayrıntılı bilgiyi ilişkisel dizi olarak döndürür

### Açıklama

function date_parse(string `$tarihzaman`): array

date_parse() belirtilen `tarihzaman` dizgesini strtotime() ve DateTimeImmutable::__construct()'ın bağlı olduğu kurallara uygun olarak çözümler. Bir zaman damgası (strtotime() ile) veya DateTimeImmutable nesnesi (DateTimeImmutable::__construct() ile) döndürmek yerine, belirtilen `tarihzaman` dizgesinden saptanan bilgiyi içeren bir ilişkisel dizi döndürür.

Belli öğelerle ilgili bilgi yoksa, ya bu dizi elemanlarına `false` atanır ya da elemanlar dizide yer almaz. Bir zaman damgası veya DateTimeImmutable nesnesi oluşturmak için gerekliyse bazı alanlara `false`'tan farklı değerler atanabilir. Bunun olduğu durumlar aşağıda örneklenmiştir.

### Bağımsız Değişkenler

`tarihzaman`

  DateTimeImmutable::__construct() işlevi tarafından kabul edilen biçimde tarih/zaman.

### Dönen Değerler

Başarılı olduğunda çözümlenen tarih/zaman bilgilerini içeren diziyle döner.

Dönen dizinin anahtarları: `year`, `month`, `day`, `hour`, `minute`, `second`, `fraction` ve `is_localtime`.

`is_localtime` mevcutsa`zone_type` zaman dilimi türünü betimler. `1`. tür (UTC farkı) için `zone`, `is_dst` alanları eklendi; `2`. tür (kısaltma) için `tz_abbr`, `is_dst` alanları eklendi; ve `3`.tür (zaman dilimi betimleyici) için `tz_abbr`, `tz_id` alanları eklendi.

`tarihzaman` dizgesi içinde, `+3 days` (+3 gün) gibi göreli zaman elemanları mevcutsa, dönen dizi `relative` anahtarlı gömülü bir dizi içerir. Bu dizinin anahtarları `year`, `month`, `day`, `hour`, `minute`, `second` ve gerekiyorsa `weekday` ve `weekdays` olup değerleri aktarılan dizgeye bağlıdır.

Dizi `warning_count` ve `warnings` alanlarını içerir. İlki, gelen uyarı sayısıdır. `warnings` dizisinin anahtarları uyarının kendisini açıklayan dizge değerini ve verilen `tarihzaman` içinde uyarının oluştuğu konumu betimler.

Dizi ayrıca, `error_count` ve `errors` alanlarını da içerir. İlki bulunan hata sayısıdır. `errors` dizisinin anahtarları hatanın kendini açıklayan dizge değerini ve verilen `tarihzaman` içinde hatanın oluştuğu konumu betimler.

Uyarı

`warnings` ve `errors` dizilerindeki eleman sayısı, ikisi de aynı konumda oluşmuşsa `warning_count` veya `error_count` değerlerinden küçük olmalıdır.

### Hatalar/İstisnalar

Tarih biçimi hatalı olduğu taktirde, dizinin 'errors' elemanı hata iletilerini içerecektir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | Dönen dizinin `zone` elemeanı artık dakika yerine saniye sayısını gösteriyor, ayrıca işareti ters çevrildi. Örneğin, `-120` yerine şimdi `7200` dönüyor.

### Örnekler

Örnek 1 - Kapsamlı bir `tarihzaman` dizgesi ile date_parse() örneği

    <?php
    var_dump(date_parse("2006-12-12 10:00:00.5"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(12) {
      ["year"]=>
      int(2006)
      ["month"]=>
      int(12)
      ["day"]=>
      int(12)
      ["hour"]=>
      int(10)
      ["minute"]=>
      int(0)
      ["second"]=>
      int(0)
      ["fraction"]=>
      float(0.5)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(false)
    }

Zaman dilimi elemanları yalnızca `tarihzaman` dizgesinde belirtilmişse dizide bulunur. Böyle bir durumda dizi daima `zone_type` elemanını ve bununla ilgili bir kaç elemanı daha içerecekir.

Örnek 2 - Zaman dilimi kısaltması içeren date_parse() örneği

    <?php
    var_dump(date_parse("Mon, 29 Oct 1923 20:30:00 +0200"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(16) {
      ["year"]=>
      int(2022)
      ["month"]=>
      int(6)
      ["day"]=>
      int(2)
      ["hour"]=>
      int(10)
      ["minute"]=>
      int(28)
      ["second"]=>
      int(17)
      ["fraction"]=>
      float(0)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(true)
      ["zone_type"]=>
      int(2)
      ["zone"]=>
      int(0)
      ["is_dst"]=>
      bool(true)
      ["tz_abbr"]=>
      string(3) "BST"
    }

Örnek 3 - Zaman dilimi belirteci ile date_parse() örneği

    <?php
    var_dump(date_parse("June 2nd, 2022, 10:28:17 Europe/London"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(14) {
      ["year"]=>
      int(2022)
      ["month"]=>
      int(6)
      ["day"]=>
      int(2)
      ["hour"]=>
      int(10)
      ["minute"]=>
      int(28)
      ["second"]=>
      int(17)
      ["fraction"]=>
      float(0)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(true)
      ["zone_type"]=>
      int(3)
      ["tz_id"]=>
      string(13) "Europe/London"
    }

Daha kısa bir `tarihzaman` dizgesi ile daha az bilgi elde edilir. Bu örnekte, tüm zaman parçaları için `false` dönmektedir.

Örnek 4 - Kısa bir dizge ile date_parse() örneği

    <?php
    var_dump(date_parse("June 2nd, 2022"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(12) {
      ["year"]=>
      int(2022)
      ["month"]=>
      int(6)
      ["day"]=>
      int(2)
      ["hour"]=>
      bool(false)
      ["minute"]=>
      bool(false)
      ["second"]=>
      bool(false)
      ["fraction"]=>
      bool(false)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(false)
    }

Göreli biçimler "relative" öğeye ayrıştırılır ve mutlak biçimlerden ayrıştırılan değerleri etkilemez.

Örnek 5 - Göreli biçimlerle date_parse() örneği

    <?php
    var_dump(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(13) {
      ["year"]=>
      int(2006)
      ["month"]=>
      int(12)
      ["day"]=>
      int(12)
      ["hour"]=>
      int(10)
      ["minute"]=>
      int(0)
      ["second"]=>
      int(0)
      ["fraction"]=>
      float(0.5)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(false)
      ["relative"]=>
      array(6) {
        ["year"]=>
        int(0)
        ["month"]=>
        int(0)
        ["day"]=>
        int(7)
        ["hour"]=>
        int(1)
        ["minute"]=>
        int(0)
        ["second"]=>
        int(0)
    }

`Thursday` gibi uyaklı parçalar için, dizgenin zaman bölümüne `0` atanır. `Thursday`, DateTimeImmutable::__construct()) işlevine aktarılsaydı, bu ayrıca, 'hour', 'minute', 'second' ve 'fraction' öğelerine de `0` atanmasıyla sonuçlanırdı. Aşağıdaki örnekte, 'year' öğesi `false` olarak bırakılmıştır.

Örnek 6 - Yan etkili date_parse() örneği

    <?php
    var_dump(date_parse("Thursday, June 2nd"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(13) {
      ["year"]=>
      bool(false)
      ["month"]=>
      int(6)
      ["day"]=>
      int(2)
      ["hour"]=>
      int(0)
      ["minute"]=>
      int(0)
      ["second"]=>
      int(0)
      ["fraction"]=>
      float(0)
      ["warning_count"]=>
      int(0)
      ["warnings"]=>
      array(0) {
      }
      ["error_count"]=>
      int(0)
      ["errors"]=>
      array(0) {
      }
      ["is_localtime"]=>
      bool(false)
      ["relative"]=>
      array(7) {
        ["year"]=>
        int(0)
        ["month"]=>
        int(0)
        ["day"]=>
        int(0)
        ["hour"]=>
        int(0)
        ["minute"]=>
        int(0)
        ["second"]=>
        int(0)
        ["weekday"]=>
        int(4)
      }
    }

### Ayrıca Bakınız

- date_parse_from_format() - Belirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir (Belirli biçemlerin `tarihzaman` dizgesinden ayrıştırılması için)
- checkdate() - Miladi tarihi doğrular (Gregoryen tarih doğrulaması için)
- getdate() - Tarih/zaman bilgisi getirir

# date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_parse_from_format — Belirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir

### Açıklama

function date_parse_from_format(string `$biçem`, string `$zaman`): array

Belirtilen zamanla ilgili ayrıntılı bilgiyi ilişkisel bir dizi ile döndürür.

### Bağımsız Değişkenler

`biçem`

  `biçem` kullanımı hakkında bilgi DateTimeImmutable::createFromFormat() sayfasındadır. Aynı kurallar uygulanır.

`zaman`

  Zamanı gösteren dizge.

### Dönen Değerler

Belirtilen zaman hakkında ayrıntılı bilgiyi ilişkisel dizi ile döndürür.

Döndürülen dizi `year` (yıl), `month` (ay), `day` (gün), `hour` (saat), `minute` (dakika), `second` (saniye), `fraction` (saniyenin kesri), `is_localtime` (yerel zaman) alanlarını içerir.

`is_localtime` değeri mevcutsa `zone_type` anahtarındaki değer zaman diliminin türünü içerir. Zaman dilimi türü `1` (UTC) ise `zone` (bölge) ve `is_dst` (hedef mi) alanları, `2` (kısaltma) için `tz_abbr` (zaman dilimi kısaltması) ve `is_dst` (hedef mi) alanları ve `3` (zaman dilimi belirteci) için `tz_abbr` (zaman dilimi kısaltması) ve `tz_id` (zaman dilimi kimliği) alanları eklenir.

Dizi, `warning_count` (uyarı sayısı) ve `warnings` (uyarılar) alanlarını da içerir. İlki kaç uyarı olduğunu belirtir. `warnings` dizisinin anahtarları belirtilen `zaman`da uyarının oluştuğu konumu ve uyarıyı içeren dizgeyi belirtir. Aşağıdaki örneklerden biri böyle bir uyarıyı içermektedir.

Dizi ayrıca, `error_count` (hata sayısı) ve `errors` (hatalar) alanlarını da içerir. İlki kaç hata bulunduğunu belirtir. `errors` dizisinin anahtarları belirtilen `zaman`da hatanın oluştuğu konumu ve hatayı içeren dizgeyi belirtir. Aşağıdaki örneklerden biri böyle bir hatayı içermektedir.

Uyarı

`warnings` ve `errors` dizilerinin öğe sayısı bunlar aynı konumda oluşmuşsa `warning_count` veya `error_count` değerinden az olamaz.

### Hatalar/İstisnalar

`zaman` değeri NULL (\0) baytını içeriyorsa ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.21, 8.1.8, 8.2.0 | `zaman` değeri NULL (\0) baytını içeriyorsa artık ValueError istisnası oluşuyor, evvelce sessizce yok sayılırdı.
7.2.0 | Dönen dizinin `zone` öğesi artık dakika değil saniye cinsinden değer içeriyor ve imi ters oluyor. Örneğin, `-120` yerine artık `7200` dönüyor.

### Örnekler

Örnek 1 - date_parse_from_format() örneği

    <?php
    $date = "6.1.2009 13:00+01:00";
    print_r(date_parse_from_format("j.n.Y H:iP", $date));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [year] => 2009
        [month] => 1
        [day] => 6
        [hour] => 13
        [minute] => 0
        [second] => 0
        [fraction] =>
        [warning_count] => 0
        [warnings] => Array
            (
            )

        [error_count] => 0
        [errors] => Array
            (
            )

        [is_localtime] => 1
        [zone_type] => 1
        [zone] => 3600
        [is_dst] =>
    )

Örnek 2 - Uyarılı date_parse_from_format() örneği

    <?php
    $date = "26 August 2022 22:30 pm";
    $parsed = date_parse_from_format("j F Y G:i a", $date);

    echo "Uyarı sayısı: ", $parsed['warning_count'], "\n";
    foreach ($parsed['warnings'] as $position => $message) {
        echo "\t{$position} konumunda: {$message}\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Uyarı sayısı: 1
    	23 konumunda: The parsed time was invalid

Örnek 3 - Hatalı date_parse_from_format() örneği

    <?php
    $date = "26 August 2022 CEST";
    $parsed = date_parse_from_format("j F Y H:i", $date);

    echo "Hata sayısı: ", $parsed['error_count'], "\n";
    foreach ($parsed['errors'] as $position => $message) {
        echo "\t{$position} konumunda: {$message}\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Hata sayısı: 3
    	15 konumunda: A two digit hour could not be found
    	19 konumunda: Data missing

### Ayrıca Bakınız

- DateTimeImmutable::createFromFormat() - Parses a time string according to a specified format
- checkdate() - Miladi tarihi doğrular

# date_sub

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_sub — DateTime::sub() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::sub() işlevinin takma adıdır.

### Ayrıca Bakınız

- DateTimeImmutable::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds
- DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

# date_sun_info

(PHP 5 >= 5.1.2, PHP 7, PHP 8)

date_sun_info — Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür

### Açıklama

function date_sun_info(int `$zaman_damgası`, float `$enlem`, float `$boylam`): array

### Bağımsız Değişkenler

`zaman_damgası`

  Zaman damgası.

`enlem`

  Enlem derecesi.

`boylam`

  Boylam derecesi.

### Dönen Değerler

Başarılı olduğunda dönen dizinin yapısı:

`sunrise`
  Güneşin doğuşunun zaman damgası (başucu açısı = 90° 35').
`sunset`
  Güneşin batışının zaman damgası (başucu açısı = 90° 35').
`transit`
  Güneşin başucunda olduğu, yani en üst noktasına ulaştığı zamanın damgası.
`civil_twilight_begin`
  Sivil şafağın başlangıcı (başucu açısı = 96°). Gün doğumunda (`sunrise`) biter.
`civil_twilight_end`
  Sivil alacakaranlığın sonu (başucu açısı = 96°). Gün batımında (`sunset`) başlar.
`nautical_twilight_begin`
  Denizde şafağın başlangıcı (başucu açısı = 102°). Şafağın başlangıcında (`civil_twilight_begin`) biter.
`nautical_twilight_end`
  Deniz alacakaranlığının sonu (başucu açısı = 102°). `civil_twilight_end`'de başlar.
`astronomical_twilight_begin`
  Astronomik şafağın başlangıcı (başucu açısı = 108°). `nautical_twilight_begin`'de biter.
`astronomical_twilight_end`
  Astronomik alacakaranlığın sonu (başucu açısı = 108°). `nautical_twilight_end`'de başlar.

Dizi elemanlarının değerleri, ya UNIX zaman damgasıdır, ya da güneş günün tamamında ilgili başucunun altındaysa `false`, güneş günün tamamında ilgili başucunun üstündeyse `true`'dur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | Hesaplama, yerel öğle yerine yerel gece yarısı olarak düzeltildi, bu da sonuçları biraz değiştirdi.

### Örnekler

Örnek 1 - date_sun_info() örneği

    <?php
    $sun_info = date_sun_info(strtotime("2008-12-12"), 36.55, 32.03);
    foreach ($sun_info as $key => $val) {
        echo "$key: " . date("H:i:s", $val) . "\n";
    }

Yukarıdaki örneğin çıktısı:

    sunrise: 06:54:58
    sunset: 16:36:54
    transit: 11:45:56
    civil_twilight_begin: 06:26:20
    civil_twilight_end: 17:05:32
    nautical_twilight_begin: 05:54:03
    nautical_twilight_end: 17:37:49
    astronomical_twilight_begin: 05:22:39
    astronomical_twilight_end: 18:09:14

Örnek 2 - Biraz işlemle Kutup gecesi

    <?php
    $tz = new \DateTimeZone('America/Anchorage');

    $si = date_sun_info(strtotime("2022-12-21"), 70.21, -148.51);
    foreach ($si as $key => $value) {
        echo
            match ($value) {
                true => 'always',
                false => 'never',
                default => date_create("@{$value}")->setTimeZone($tz)->format( 'H:i:s T' ),
            },
            ": {$key}",
            "\n";
    }

Yukarıdaki örneğin çıktısı:

    never: sunrise
    never: sunset
    12:52:18 AKST: transit
    10:53:19 AKST: civil_twilight_begin
    14:51:17 AKST: civil_twilight_end
    09:01:47 AKST: nautical_twilight_begin
    16:42:48 AKST: nautical_twilight_end
    07:40:47 AKST: astronomical_twilight_begin
    18:03:49 AKST: astronomical_twilight_end

Örnek 3 - Gece yarısı güneşi (Tromsø, Norveç)

    <?php
    $si = date_sun_info(strtotime("2022-06-26"), 69.68, 18.94);
    print_r($si);

Yukarıdaki örneğin çıktısı:

    Array
    (
        [sunrise] => 1
        [sunset] => 1
        [transit] => 1656240426
        [civil_twilight_begin] => 1
        [civil_twilight_end] => 1
        [nautical_twilight_begin] => 1
        [nautical_twilight_end] => 1
        [astronomical_twilight_begin] => 1
        [astronomical_twilight_end] => 1
    )

Örnek 4 - Gün uzunluğunun hesaplanması (Alanya)

    <?php
    $si = date_sun_info(strtotime('2022-06-21'), 36.5, 32);
    $diff = $si['sunset'] - $si['sunrise'];
    echo "Length of day: ",
        floor($diff / 3600), "h ",
        floor(($diff % 3600) / 60), "s\n";

Yukarıdaki örneğin çıktısı:

    Length of day: 14h 42s

# date_sunrise

(PHP 5, PHP 7, PHP 8)

date_sunrise — Belirtilen gün ve konum için şafak zamanını döndürür

Uyarı

PHP 8.1.0 ve sonrasında bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir. Yerine date_sun_info() işlevi kullanılmalıdır.

### Açıklama

#[\Deprecated]
function date_sunrise(
int `$dönüş_biçimi` = SUNFUNCS_RET_STRING,
?float `$enlem` = null,
?float `$boylam` = null,
?float `$başucu` = null,
?float `$utc_farkı` = null
): string|int|float|false

date_sunrise() işlevi, verilen gün (`zamandamgası`) ve konum için şafak zamanını döndürür.

### Bağımsız Değişkenler

`zamandamgası`

  Şafak zamanı öğrenilecek günün `zamandamgası`.

`dönüş_biçimi`

  `dönüş_biçimi` sabitleri
  sabit | açıklama | örnek
  --- | --- | ---
  SUNFUNCS_RET_STRING | Sonucu dizge olarak döndürür. | 16:46
  SUNFUNCS_RET_DOUBLE | Sonucu gerçek sayı olarak döndürür. | 16.78243132
  SUNFUNCS_RET_TIMESTAMP | Sonucu tamsayı (zaman damgası) olarak döndürür. | 1095034606

`enlem`

  Kuzey yarımküre öntanımlıdır. Güney yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_latitude

`boylam`

  Doğu yarımküre öntanımlıdır. Batı yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_longitude

`başucu`

  `başucu`, güneşin merkezi ile dünya yüzeyine dik bir çizgi arasındaki açıdır. Öntanımlı değer: date.sunrise_zenith

  Bazı `başucu` açıları
  Açı | Açıklama
  --- | ---
  90°50' | Gündoğumu: Güneşin görünür hale geldiği nokta.
  96° | Sivil alacakaranlık: Geleneksel olarak şafağın başlangıcını belirtmek için kullanılır.
  102° | Deniz alacakaranlığı: Ufkun denizde görünmeye başladığı nokta.
  108° | Astronomik alacakaranlık: Güneşin herhangi bir aydınlatmanın kaynağı olmaya başladığı nokta.

`utc_farkı`

  Saat cinsinden belirtilir. `dönüş_biçimi` değeri `SUNFUNCS_RET_TIMESTAMP` ise `utc_farkı` yoksayılır.

### Dönen Değerler

Başarılı olduğunda, `dönüş_biçimi` bağımsız değişkeniyle belirlenen biçimde şafak zamanı, başarısızlık durumunda `false` döner. Başarısızlığın olası nedeni, yılın bir bölümünde kutup dairesinin içinde güneşin hiç doğmamasıdır.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı önerilmemekte olup yerine date_sun_info() işlevi önerilmektedir.
8.0.0 | `enlem`, `botlam`, `başucu` ve `utc_farkı` artık `null` olabiliyor.

### Örnekler

Örnek 1 - date_sunrise() örneği

    <?php

    /* İstanbul, Türkiye için şafak hesabı
    Enlem: 41.01 Kuzey
    Boylam: 28.58 Doğu
    Başucu ~= 90
    saat farkı: +2 GMT
    */

    echo date("D M d Y"). ', şafak: ' .date_sunrise(time(), SUNFUNCS_RET_STRING, 41.01, 28.58, 90, 2);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in script on line 10
    Deprecated: Function date_sunrise() is deprecated since 8.1, use date_sun_info() instead in script on line 10
    Fri Dec 12 2008, şafak: 07:25

Örnek 2 - Güneşin doğmaması

    <?php
    $solstice = strtotime('2017-12-21');
    var_dump(date_sunrise($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));

Yukarıdaki örneğin çıktısı:

    Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in script on line 3
    Deprecated: Function date_sunrise() is deprecated since 8.1, use date_sun_info() instead in script on line 3
    bool(false)

### Ayrıca Bakınız

- date_sun_info() - Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür

# date_sunset

(PHP 5, PHP 7, PHP 8)

date_sunset — Verilen gün ve konum için günbatımı zamanını döndürür

Uyarı

PHP 8.1.0 ve sonrasında bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir. Yerine date_sun_info() işlevi kullanılmalıdır.

### Açıklama

#[\Deprecated]
function date_sunset(
int `$dönüş_biçimi` = SUNFUNCS_RET_STRING,
?float `$enlem` = null,
?float `$boylam` = null,
?float `$başucu` = null,
?float `$utc_farkı` = null
): string|int|float|false

date_sunset() işlevi, verilen gün (`zamandamgası`) ve konum için günbatımı zamanını döndürür.

### Bağımsız Değişkenler

`zaman damgası`

  Günbatımı zamanı alınacak günün `zamandamgası`.

`dönüş_biçimi`

  `dönüş_biçimi` sabitleri
  sabit | açıklama | örnek
  --- | --- | ---
  SUNFUNCS_RET_STRING | Sonucu dizge olarak döndürür. | 16:46
  SUNFUNCS_RET_DOUBLE | Sonucu gerçek sayı olarak döndürür. | 16.78243132
  SUNFUNCS_RET_TIMESTAMP | Sonucu tamsayı (zaman damgası) olarak döndürür. | 1095034606

`enlem`

  Kuzey yarımküre öntanımlıdır. Güney yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_latitude

`boylam`

  Doğu yarımküre öntanımlıdır. Batı yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_longitude

`başucu`

  `başucu`, güneşin merkezi ile dünya yüzeyine dik bir çizgi arasındaki açıdır. Öntanımlı değer: date.sunrise_zenith

  Bazı `başucu` açıları
  Açı | Açıklama
  --- | ---
  90°50' | Gündoğumu: Güneşin görünür hale geldiği nokta.
  96° | Sivil alacakaranlık: Geleneksel olarak şafağın başlangıcını belirtmek için kullanılır.
  102° | Deniz alacakaranlığı: Ufkun denizde görünmeye başladığı nokta.
  108° | Astronomik alacakaranlık: Güneşin herhangi bir aydınlatmanın kaynağı olmaya başladığı nokta.

`utc_farkı`

  Saat cinsinden belirtilir. `dönüş_biçimi` değeri `SUNFUNCS_RET_TIMESTAMP` ise `utc_farkı` yoksayılır.

### Dönen Değerler

Başarılı olduğunda, `dönüş_biçimi` bağımsız değişkeniyle belirlenen biçimde şafak zamanı, başarısızlık durumunda `false` döner. Başarısızlığın olası nedeni, yılın bir bölümünde kutup dairesinin içinde güneşin hiç doğmamasıdır.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı önerilmemekte olup yerine date_sun_info() işlevi önerilmektedir.
8.0.0 | `enlem`, `boylam`, `başucu` ve `utc_farkı` artık `null` olabiliyor.

### Örnekler

Örnek 1 - date_sunset() örneği

    <?php

    /* İstanbul, Türkiye için günbatımı zamanı hesabı
    Enlem: 41.01 Kuzey
    Boylam: 28.58 Doğu
    Başucu ~= 90
    saat farkı: +2 GMT
    */

    echo date("D M d Y"). ', günbatımı: ' .date_sunset(time(), SUNFUNCS_RET_STRING, 41.01, 28.58, 90, 2);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in script on line 10
    Deprecated: Function date_sunset() is deprecated since 8.1, use date_sun_info() instead in script on line 10
    Thu Dec 11 2008, günbatımı: 16:33

Örnek 2 - Güneşin doğmaması

    <?php
    $solstice = strtotime('2017-12-21');
    var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));

Yukarıdaki örneğin çıktısı:

    Deprecated: Constant SUNFUNCS_RET_STRING is deprecated in script on line 3
    Deprecated: Function date_sunset() is deprecated since 8.1, use date_sun_info() instead in script on line 3
    bool(false)

### Ayrıca Bakınız

- date_sun_info() - Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür

# date_time_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_time_set — DateTime::setTime() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::setTime() işlevinin takma adıdır.

# date_timestamp_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_timestamp_get — DateTime::getTimestamp() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::getTimestamp() işlevinin takma adıdır.

# date_timestamp_set

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_timestamp_set — DateTime::setTimestamp() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::setTimestamp() işlevinin takma adıdır.

# date_timezone_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_timezone_get — DateTime::getTimezone() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::getTimezone() işlevinin takma adıdır.

# date_timezone_set

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_timezone_set — DateTime::setTimezone() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTime::setTimezone() işlevinin takma adıdır.

# getdate

(PHP 4, PHP 5, PHP 7, PHP 8)

getdate — Tarih/zaman bilgisi getirir

### Açıklama

function getdate(?int `$zaman_damgası` = `null`): array

Bağımsız değişkenle çağrılmışsa `zaman_damgası`'na karşılık olan tarih bilgisini bir ilişkisel dizi olarak döndürür. Bağımsız değişkensiz çağrılmışsa dönen değer o anın yerel zamanına göre olur.

### Bağımsız Değişkenler

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

`zaman_damgası`'na karşılık olan tarih bilgisini bir ilişkisel dizi olarak döndürür. İlişkisel dizide döndürülen öğeler aşağıdaki gibidir:

İlişkisel diziyle döndürülen anahtarlar
Anahtar | Açıklama | Örnek dönüş değerleri
--- | --- | ---
`"seconds"` | Saniyelerin sayısal gösterimi | `0`'dan `59`'a kadar
`"minutes"` | Dakikaların sayısal gösterimi | `0`'dan `59`'a kadar
`"hours"` | Saatlerin sayılsal gösterimi | `0`'dan `23`'e kadar
`"mday"` | Ayın günlerinin sayısal gösterimi | `1`'den `31`'e kadar
`"wday"` | Haftanın günlerinin sayılsal gösterimi | (Pazar için) `0`'dan (Cumartesi için) `6`'ya kadar
`"mon"` | Ayın sayısal gösterimi | `1` 'den `12`'ye kadar
`"year"` | Yılın 4 haneli sayısal tam gösterimi | Örnek: `1999` ya da `2003` gibi
`"yday"` | Yılın gününün sayısal gösterimi | `0`'dan `365`'e kadar
`"weekday"` | Haftanın gününün metinsel tam gösterimi | `Sunday`'dan `Saturday`'ye
`"month"` | Ayın metinsel tam gösterimi, Ocak ya da Mart gibi | `January`'dan `December`'a kadar
`0` | Saniyeler, Unix Zaman Başlangıcından itibaren, time() işlevi tarafından döndürülen ve date() işleviyle kullanılan değerlerle benzerdir. | Sisteme Bağımlı, genellikle `-2147483648` ile `2147483647` arasında.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - getdate() örneği

    <?php
    $bugun = getdate();
    print_r($bugun);

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [seconds] => 40
        [minutes] => 58
        [hours] => 21
        [mday] => 17
        [wday] => 2
        [mon] => 6
        [year] => 2003
        [yday] => 167
        [weekday] => Salı
        [month] => Haziran
        [0] => 1055901520
    )

### Ayrıca Bakınız

- date() - Unix zaman damgasını biçimlendirir
- idate() - Yerel zaman/tarih kısmını tamsayı olarak biçimlendirir
- localtime() - Yerel zamanı getirir
- time() - Geçerli Unix zaman damgasını döndürür
- setlocale() - Yereli ayarlar

# gettimeofday

(PHP 4, PHP 5, PHP 7, PHP 8)

gettimeofday — Geçerli zamanı getirir

### Açıklama

function gettimeofday(bool `$sayı_döndür` = `false`): array|float

gettimeofday(2) işlevinin arayüzüdür. Sistem çağrısıdan döndürülmüş veriyi içeren bir ilişkisel dizi döndürür.

### Bağımsız Değişkenler

`sayı_döndür`

  `true` olarak ayarlanmışsa, bir dizi yerine bir gerçek sayı döndürür.

### Dönen Değerler

Varsayılan durumda değer array türünden döner. Eğer `sayı_döndür` bağımsız değişkeni `true` ise float türünde bir değerle döner.

Dizi anahtarları:

- "sec" - Unix Zaman Başlangıcından itibaren geçen saniye sayısı.
- "usec" - mikrosaniye
- "minuteswest" - Greenwich'in batı saniyeleri
- "dsttime" - yaz saati düzeltmesi

### Örnekler

Örnek 1 - gettimeofday() örneği

    <?php
    print_r(gettimeofday());

    echo gettimeofday(true);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [sec] => 1073504408
        [usec] => 238215
        [minuteswest] => 0
        [dsttime] => 1
    )

    1073504408.23910

# gmdate

(PHP 4, PHP 5, PHP 7, PHP 8)

gmdate — Bir tarih/saati GMT/UTC tarih/saati olarak biçemler

### Açıklama

function gmdate(string `$biçem`, ?int `$zaman_damgası` = `null`): string

Zamanı, Greenwich Saatiyle (GMT) döndürmesi dışında tıpkı date() işlevi gibi çalışır.

### Bağımsız Değişkenler

`biçim`

  Zaman çıktısının biçimi string türündendir. Biçimlendirme seçenekleri için date() işlevine bakılabilir.

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

Biçimlendirilmiş tarih dizgesi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - gmdate() örneği

    <?php
    date_default_timezone_set("Europe/Helsinki");

    echo date("M d Y H:i:s e", mktime(0, 0, 0, 1, 1, 1998)) . "\n";
    echo gmdate("M d Y H:i:s e", mktime(0, 0, 0, 1, 1, 1998));

Yukarıdaki örneğin çıktısı:

    Jan 01 1998 00:00:00 Europe/Helsinki
    Dec 31 1997 22:00:00 UTC

### Ayrıca Bakınız

- DateTimeImmutable::__construct() - Returns new DateTimeImmutable object
- DateTimeInterface::format() - Returns date formatted according to given format
- date() - Unix zaman damgasını biçimlendirir
- mktime() - Bir tarih için Unix zaman damgasını döndürür
- gmmktime() - Bir GMT tarihi için Unix zaman damgasını döndürür
- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler

# gmmktime

(PHP 4, PHP 5, PHP 7, PHP 8)

gmmktime — Bir GMT tarihi için Unix zaman damgasını döndürür

### Açıklama

function gmmktime(
int `$saat`,
?int `$dakika` = `null`,
?int `$saniye` = `null`,
?int `$ay` = `null`,
?int `$gün` = `null`,
?int `$yıl` = `null`
): int|false

Aktarılan bağımsız değişkenlerin bir GMT tarihini belirtmesi dışında tıpkı mktime() işlevi gibidir. gmmktime() işlevi kendi içinde mktime() işlevini kullanır ve sadece türetilen yerel zamanda geçerli zamanlar kullanılabilir.

mktime() işlevindeki gibi, seçimlik bağımsız değişkenler sağdan sola sıralıdır. Böylece belirtilmeyen bağımsız değişken için geçerli GMT zamanının kullanılabilmesi sağlanmıştır.

gmmktime() işlevinin bağımsız değişkenler olmaksızın kullanımı desteklenmemekte olup ArgumentCountError ile sonuçlanmaktadır. Geçerli zaman damgasını elde etmek için time() işlevi kullanılabilir.

### Bağımsız Değişkenler

`saat`

  `ay`, `gün` ve `yıl` tarafından saptanan günün başlangıcına göreli saat sayısı. Negatif değerler, belirtilen günün geceyarısından önceki saat sayısıdır. 23'ten büyük değerler ertesi güne sarkar.

`dakika`

  `saat`in başlangıcına göreli dakika sayısı. Negatif dakikalar önceki saatle ilgilidir. 59'dan büyük değerler sonraki saate sarkar.

`saniye`

  `dakika`nın başlangıcına göreli saniye sayısı. Negatif saniyeler önceki dakika ilgilidir. 59'dan büyük değerler sonraki dakikaya sarkar.

`ay`

  Bir önceki yılın sonuna göre ay sayısı. 1 ila 12 arasındaki değerler, söz konusu yılın normal takvim aylarına atıfta bulunur. 1'den küçük değerler (negatif değerler dahil), önceki yıldaki ayları ters sırayla gösterir, yani 0 Aralık, -1 Kasım, vb. 12'den büyük değerler, sonraki yıl(lar)daki uygun ayı belirtir.

`gün`

  Önceki ayın sonuna göre gün sayısı. 1 ile 28, 29, 30 veya 31 arasındaki değerler (aya bağlı olarak) ilgili ayın normal günlerini ifade eder. 1'den küçük değerler (negatif değerler dahil) önceki ayın günlerine atıfta bulunur, bu nedenle 0, önceki ayın son günüdür, -1 ondan önceki gündür vb. İlgili ay referansındaki gün sayısından daha büyük değerler sonraki ay(lar)daki uygun günlere karşılıktır.

`yıl`

  Yıl

### Dönen Değerler

Başarı durumunda int türünden Unix zaman damgası, zaman damgası int türüne sığmıyorsa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `saat` artık seçimlik değil. Unix zaman damgasına ihtiyaç olursa time() işlevi kullanılabilir.
8.0.0 | `dakika`, `saniye`, `ay`, `gün` ve `yıl` artık `null` olabiliyor.

### Örnekler

Örnek 1 - gmmktime() temel örneği

    <?php
    // Çıktısı: July 1, 2000 is on a Saturday
    echo "July 1, 2000 is on a " . date("l", gmmktime(0, 0, 0, 7, 1, 2000));
    ?>

### Ayrıca Bakınız

- DateTimeImmutable sınıfı
- mktime() - Bir tarih için Unix zaman damgasını döndürür
- date() - Unix zaman damgasını biçimlendirir
- time() - Geçerli Unix zaman damgasını döndürür

# gmstrftime

(PHP 4, PHP 5, PHP 7, PHP 8)

gmstrftime — Yerel ayarlara göre tarih ve saati, UTC türüne çevirir

Uyarı

Bu işlevin kullanımı PHP 8.1.0'dan beri ÖNERİLMEMEKTEDİR. Bu işleve güvenilmesi kesinlikle önerilmez.

Bu işlevin yerine kulllanılabilecekler:

- gmdate()
- IntlDateFormatter::format()

### Açıklama

#[\Deprecated]
function gmstrftime(string `$biçem`, ?int `$zaman_damgası` = null): string|false

UTC zamanı döndürmesi dışında strftime() işlevi gibi davranır. Örneğin, Doğu Standart Zamanınında (UTC -0500) çalıştırıldığında, aşağıdaki örneğin ilk satırı "Ara 31 1998 20:00:00" basarken ikinci satırı "Oca 01 1999 01:00:00" basar.

Uyarı

Bu işlev, birbiriyle tutarsız olabilecek veya hiç mevcut olmayan işletim sistemi yerel ayar bilgilerine bağlıdır. Bilgilerin tutarsızlığı veya yokluğu durumunda bunun yerine IntlDateFormatter::format() yöntemi kullanılmalıdır.

### Bağımsız Değişkenler

`biçem`

  Açıklama için strftime() işlevine bakınız.

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

İstenilen biçime göre verilen `zaman_damgası` bağımsız değişkenini ya da zaman damgası bağımsız değişkeni kullanılmamışsa yerel zamanı; biçimlendirilmiş dizge olarak döndürür, başarısızlık durumunda `false` döner. Ay ve hafta günlerinin isimleri ve diğer dile bağımlı dizgelerle ilgili geçerli yereller setlocale() işlevi ile ayarlanabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - gmstrftime() örneği

    <?php
    setlocale(LC_TIME, 'en_US');
    echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . "\n";
    echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98)) . "\n";

### Ayrıca Bakınız

- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler
- DateTimeInterface::format() - Returns date formatted according to given format
- strftime() - Format a local time/date according to locale settings

# idate

(PHP 5, PHP 7, PHP 8)

idate — Yerel zaman/tarih kısmını tamsayı olarak biçimlendirir

### Açıklama

function idate(string `$biçem`, ?int `$zaman_damgası` = `null`): int|false

`zaman_damgası` ile belirtilen zaman için `biçem` dizgesine göre biçemlenmiş bir sayı döndürür. `zaman_damgası` belirtilmemişse time() işlevinin çıktısı öntanımlıdır.

date() işlevinden farklı olarak, idate() işlevi `biçem` dizgesi olarak tek bir karakter kabul eder.

### Bağımsız Değişkenler

`biçem`

  `biçim` bağımsız değişkeninde aşağıdaki karakterlerden biri belirtilebilir
  `biçem` karakterleri | Açıklama
  --- | ---
  `B` | Swatch Ritim/İnternet Saati
  `d` | Ayın günleri
  `h` | Saat (12 saatlik gösterim)
  `H` | Saat (24 saatlik gösterim)
  `i` | Dakika
  `I` (büyük ı) | Yaz Saati Uygulaması etkinleştirilmişse `1`, diğer durumlarda `0` döndürür
  `L` (büyük l) | artık yıl için `1`, değilse `0` döndürür
  `m` | Ayın sayısal dengi
  `N` | ISO-8601 gün ismi (`1`. gün Pazartesi, `7`. gün Pazar)
  `o` | ISO-8601 yıl (4 rakam)
  `s` | Saniye
  `t` | Şimdiki ayın günleri
  `U` | Unix Zaman Başlangıcından (1 Ocak 1970 00:00:00 UTC) beri geçen saniye sayısı; time() işlevinin çıktısına eşdeğerdir.
  `w` | Haftanın günü (Pazar için `0`)
  `W` | ISO-8601 standardına göre yılın hafta numarası, haftaların başlangıcı Pazartesi'dir
  `y` | Yıl (1 ya da 2 rakam - aşağıya bakınız)
  `Y` | Yıl (4 rakam)
  `z` | Yılın günü
  `Z` | Sanile olarak zaman dilimi

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

Başarı durumunda int türünde bir değer, başarısızlık durumunda `false` döner.

idate() işlevi daima int türünde değer döndürse de bu değerler "0" ile başlayamaz. idate() işlevi beklediğinizden daha az karakter döndürebilir. Aşağıdaki örneğe bakınız.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | `N` (ISO-8601 gün ismi) ve `o` (ISO-8601 yıl) biçem karakterleri eklendi.
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - idate() örneği

    <?php
    $timestamp = strtotime('1st January 2004'); // 1072915200

    // Yılı iki haneli basması gerekirse de
    // başında "0" olmadan sadece "4" basar
    echo idate('y', $timestamp) . "\n";

    $timestamp = strtotime('1st January 2024'); // 1704067200
    echo idate('y', $timestamp);

Yukarıdaki örneğin çıktısı:

    4
    24

### Ayrıca Bakınız

- DateTimeInterface::format() - Returns date formatted according to given format
- date() - Unix zaman damgasını biçimlendirir
- getdate() - Tarih/zaman bilgisi getirir
- time() - Geçerli Unix zaman damgasını döndürür

# localtime

(PHP 4, PHP 5, PHP 7, PHP 8)

localtime — Yerel zamanı getirir

### Açıklama

function localtime(?int `$zaman_damgası` = `null`, bool `$ilişkisel` = `false`): array

localtime() işlevi, standart C işlev çağrısı olan localtime tarafından döndürülen yapıya eşdeğer bir dizi döndürür.

### Bağımsız Değişkenler

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

`ilişkisel`

  İşlevin sıradan indisli bir dizi mi yoksa ilişkisel bir dizi mi döndüreceğini belirler.

### Dönen Değerler

Eğer `ilişkisel` bağımsız değişkenine `false` atanmış ya da bağımsız değişken atlanmışsa, sayısal indisli bir dizi döner. Eğer bağımsız değişken `true` olarak ayarlanmışsa localtime() işlevi, standart C işlevi localtime tarafından döndürülen yapının elemanlarını içeren ilişkisel bir dizi döndürür. Bu ilişkisel dizinin anahtarları şunlardır:

- "tm_sec" - saniye, `0` - `59`
- "tm_min" - dakika, `0` - `59`
- "tm_hour" - saat, `0` - `23`
- "tm_mday" - ayın günleri, `1` - `31`
- "tm_mon" - yılın ayları, Ocak için 0'dan başlar
- "tm_year" - Yıllar,, `0` (Ocak) - `11` (Aralık)
- "tm_wday" - Haftanın günleri, `0` (Paz) - `6` (Cts)
- "tm_yday" - Yılın günleri, `0` - `365`
- "tm_isdst" - Yaz saati etkin mi? Evet ise pozitif, hayır ise `0`, bilinmiyorsa negatiftir.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman_damgası` artık `null` olabiliyor.

### Örnekler

Örnek 1 - localtime() örneği

    <?php
    $localtime = localtime();
    $localtime_assoc = localtime(time(), true);
    print_r($localtime);
    print_r($localtime_assoc);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 24
        [1] => 3
        [2] => 19
        [3] => 3
        [4] => 3
        [5] => 105
        [6] => 0
        [7] => 92
        [8] => 1
    )

    Array
    (
        [tm_sec] => 24
        [tm_min] => 3
        [tm_hour] => 19
        [tm_mday] => 3
        [tm_mon] => 3
        [tm_year] => 105
        [tm_wday] => 0
        [tm_yday] => 92
        [tm_isdst] => 1
    )

### Ayrıca Bakınız

- getdate() - Tarih/zaman bilgisi getirir

# microtime

(PHP 4, PHP 5, PHP 7, PHP 8)

microtime — Geçerli Unix zaman damgasını mikrosaniye olarak döndürür

### Açıklama

function microtime(bool `$sayı_olsun` = `false`): string|float

microtime() işlevi geçerli Unix zaman damgasını mikrosaniye cinsinden döndürür. Bu işlev sadece gettimeofday() sistem çağrısını destekleyen işletim sistemlerinde geçerlidir.

Başarımı ölçmek için hrtime() önerilir.

### Bağımsız Değişkenler

`sayı_olsun`

  İsteğe bağlı kullanılan bu bağımsız değişkenle `true` aktarıldığında, saniyeler float türünde döndürülür.

### Dönen Değerler

İşlev, isteğe bağlı olarak bağımsız değişkensiz çağırıldığında; "msan. san." dizgesini döndürür. 'san.' geçerli zamanın Unix Zamam Başlangıcından (1 Ocak 1970 0:00:00 GMT) itibaren hesaplanan saniyeyi ve 'msan.' ise ondalık kısım olarak mikrosaniye kısmını belirtir. Dizgenin iki kısmı da saniye cinsindendir.

`sayı_olsun` `true` ise, microtime() Unix Zamam Başlangıcından itibaren en yakın mikrosaniyeye kadar doğrulukta saniye cinsinden geçerli zamanı gösteren float türünde bir sayı döndürür.

### Örnekler

Örnek 1 - Zamanlama betiği

    <?php
    $sure_baslangici = microtime(true);

    // Biraz bekle
    usleep(10_000);

    $sure_bitimi = microtime(true);
    $sure = $sure_bitimi - $sure_baslangici;

    print "Bekleme süresi: $sure saniye.\n";

Örnek 2 microtime() and `REQUEST_TIME_FLOAT`

    <?php
    // Uyuma süresi için rasgele sayı üret
    usleep(random_int(10_000, 1_000_000));

    // REQUEST_TIME_FLOAT $_SERVER süper küresel dizisinde bulunur.
    // Mikrosaniyelik doğrulukta isteğin zaman damgasını içerir
    $time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];

    echo "$time saniyede hiçbir şey olmadı.\n";

### Ayrıca Bakınız

- time() - Geçerli Unix zaman damgasını döndürür
- hrtime() - Yüksek çözünürlüklü sistem zamanını döndürür

# mktime

(PHP 4, PHP 5, PHP 7, PHP 8)

mktime — Bir tarih için Unix zaman damgasını döndürür

### Açıklama

function mktime(
int `$saat`,
?int `$dakika` = `null`,
?int `$saniye` = `null`,
?int `$ay` = `null`,
?int `$gün` = `null`,
?int `$yıl` = `null`
): int|false

Verilen bağımsız değişken düzenine göre Unix zaman damgasını döndürür. Bu zaman damgası, Unix Zaman Başlangıcı (1 Ocak 1970 00:00:00 GMT) ile belirtilen zaman arasında geçen süreyi uzun tamsayı türünde saniye olarak belirtir.

Belirtilmeyen seçimlik bağımsız değişkenlerin yerine yerel tarih ve zamana göre geçerli değerin kullanılması sağlanmıştır.

Uyarı

Bağımsız değişkenlerin tuhaf bir sırada olduğu unutulmamalıdır. Sıralama `ay`, `gün`, `yıl` olup alışılmış `gün`, `ay`, `yıl` sıralamasında değildir.

mktime() işlevinin bağımsız değişkenler olmaksızın kullanımı desteklenmemekte olup ArgumentCountError ile sonuçlanmaktadır. Geçerli zaman damgasını elde etmek için time() işlevi kullanılabilir.

### Notlar

mktime() işlevinin bağımsız değişkensiz çağrılmasının kullanımı önerilmemektedir. Geçerli zaman damgasını almak için time() kullanılabilir.

### Bağımsız Değişkenler

`saat`

  `ay`, `gün` ve `yıl`'a göre saptanan günün başlangıcına göreli saat sayısı. Negatif değerler günün geceyarısından önceki saatine karşılıktır. 23'ten büyük değerler ertesi günün uygun saatine karşılıktır.

`dakika`

  `saat`'in başlangıcına göreli dakika sayısı. Negatif değerler önceki saatin dakikalarına, 59'dan büyük değerler ise sonraki saatin dakikalarına karşılıktır.

`saniye`

  `dakika`'nın başlangıcına göreli saniye sayısı. Negatif değerler önceki dakikanın saniyelerine, 59'dan büyük değerler ise sonraki dakikanın saniyelerine karşılıktır.

`ay`

  Önceki yıl sonuna göreli ay sayısı. 1-12 arasındaki değerler ilgili yılın normal takvim aylarına karşılıktır. 1'den küçük (negatifler dahil) değerler ters sırada önceki yılın aylarına karşılıktır, yani 0 Aralık, -1 Kasım, vb.

`gün`

  Önceki ayın sonuna göreli gün sayısı. 1'den 28, 29, 30 veya 31'e kadar (aya bağlı olarak) değerler ilgili ayın normal günlerine karşılıktır. 1'dek küçükler (negatifler dahil) önceki ayın günlerine karşılıktır, yani 0 önceki ayın son günü, -1 daha önceki günü vb. İlgili ayın gün sayısından büyük değerler sonraki ayın günlerine karşılıktır.

`yıl`

  Yıl sayısı, iki ya da dört hane olabilir. 0-69 değerleri arasında olanlar 2000-2069 ile ve 70-100 arasındaki değerler ise 1970-2000 yıllarıyla eşleşir. Sistemlerdeki time_t türü 32 bit işaretli tamsayı türüyle belirtilmiştir ve günümüzde çok kullanılmaktadır. `yıl` bağımsız değişkeni için geçerli aralık 1901 ve 2038 arasındadır.

### Dönen Değerler

Başarı durumunda int türünden Unix zaman damgası, zaman damgası int türüne sığmıyorsa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `saat` artık seçimlik değil. Unix zaman damgasına ihtiyaç olursa time() işlevi kullanılabilir.
8.0.0 | `dakika`, `saniye`, `ay`, `gün` ve `yıl` artık boş olabiliyor.

### Örnekler

Örnek 1 - Basit bir mktime() örneği

    <?php
    // Öntanımlı zaman dilimini belirtelim.
    date_default_timezone_set('UTC');

    echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)) . "\n";
    // Çıktısı: July 1, 2000 is on a Saturday

    echo date('c', mktime(1, 2, 3, 4, 5, 2006)) . "\n";
    // Şöyle bir şey basar: 2006-04-05T01:02:03+00:00

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    July 1, 2000 is on a Saturday
    2006-04-05T01:02:03+00:00

Örnek 2 - mktime() örneği

mktime() işlevi tarih hesaplamaları ve geçerlilik denetimi için kullanışlıdır. Aralık dışına çıkan değerleri (ayın 32'si gibi) otomatik olarak doğru hesaplar. Örneğin, aşağıdaki satırların üreteceği dizge "Jan-01-1998" olacaktır.

    <?php
    date_default_timezone_set('America/New_York');

    echo date("c", mktime(0, 0, 0, 12, 32, 1997)) . "\n";
    echo date("c", mktime(0, 0, 0, 13, 1, 1997)) . "\n";
    echo date("c", mktime(0, 0, 0, 1, 1, 1998)) . "\n";
    echo date("c", mktime(0, 0, 0, 1, 1, 98)) . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    1998-01-01T00:00:00-05:00
    1998-01-01T00:00:00-05:00
    1998-01-01T00:00:00-05:00
    1998-01-01T00:00:00-05:00

Örnek 3 Bağıl tarihleri bulmak için mktime() kullanımı

    <?php
    date_default_timezone_set('Asia/Tokyo');

    $yarın  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
    print date('c', $yarın) . "\n";

    $geçenay = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
    print date('c', $geçenay) . "\n";

    $gelecekyıl  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1) . "\n";
    print date('c', $gelecekyıl) . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2025-09-30T00:00:00+09:00
    2025-08-29T00:00:00+09:00
    2026-09-29T00:00:00+09:00

> Bilginize:

> Bu kullanım, yaz saati uygulamasından dolayı, bir zaman damgasına basitçe saniye, gün ve ay ekleme veya çıkartma işlemlerinden daha güvenilirdir.

Örnek 4 - Ayın son günü

Verilen herhangi bir ayın son günü, gelecek ayın -1'inci değil 0'ıncı günü olarak ifade edilebilir. Aşağıdaki iki örnek de "2000 Şubat'ının son günü: 29" dizgesi üretilecektir.

    <?php

    $songün = mktime(0, 0, 0, 3, 0, 2000);
    echo "2000 Şubat'ının son günü: ", date('d', $songün) . "\n";

    $songün = mktime(0, 0, 0, 4, -31, 2000);
    echo "2000 Şubat'ının son günü: ", date('d', $songün) . "\n";

Yukarıdaki örneğin çıktısı:

    2000 Şubat'ının son günü: 29
    2000 Şubat'ının son günü: 29

### Ayrıca Bakınız

- DateTimeImmutable sınıfı
- checkdate() - Miladi tarihi doğrular
- gmmktime() - Bir GMT tarihi için Unix zaman damgasını döndürür
- date() - Unix zaman damgasını biçimlendirir
- time() - Geçerli Unix zaman damgasını döndürür

# strftime

(PHP 4, PHP 5, PHP 7, PHP 8)

strftime — Format a local time/date according to locale settings

Uyarı

Bu işlevin kullanımı PHP 8.1.0'dan beri ÖNERİLMEMEKTEDİR. Bu işleve güvenilmesi kesinlikle önerilmez.

Bu işlevin yerine kulllanılabilecekler:

- date()
- IntlDateFormatter::format()

### Açıklama

#[\Deprecated]
function strftime(string `$format`, ?int `$timestamp` = null): string|false

Format the time and/or date according to locale settings. Month and weekday names and other language-dependent strings respect the current locale set with setlocale().

Uyarı

Not all conversion specifiers may be supported by your C library, in which case they will not be supported by PHP's strftime(). Additionally, not all platforms support negative timestamps, so your date range may be limited to no earlier than the Unix epoch. This means that %e, %T, %R and, %D (and possibly others) - as well as dates prior to `Jan 1, 1970` - will not work on Windows, some Linux distributions, and a few other operating systems. For Windows systems, a complete overview of supported conversion specifiers can be found at » MSDN. Instead use the IntlDateFormatter::format() method.

### Bağımsız Değişkenler

`format`

  The following characters are recognized in the `format` parameter string
  `format` | Description | Example returned values
  --- | --- | ---
  Day | --- | ---
  `%a` | An abbreviated textual representation of the day | `Sun` through `Sat`
  `%A` | A full textual representation of the day | `Sunday` through `Saturday`
  `%d` | Two-digit day of the month (with leading zeros) | `01` to `31`
  `%e` | Day of the month, with a space preceding single digits. Not implemented as described on Windows. See below for more information. | `1` to `31`
  `%j` | Day of the year, 3 digits with leading zeros | `001` to `366`
  `%u` | ISO-8601 numeric representation of the day of the week | `1` (for Monday) through `7` (for Sunday)
  `%w` | Numeric representation of the day of the week | `0` (for Sunday) through `6` (for Saturday)
  Week | --- | ---
  `%U` | Week number of the given year, starting with the first Sunday as the first week | `13` (for the 13th full week of the year)
  `%V` | ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week | `01` through `53` (where 53 accounts for an overlapping week)
  `%W` | A numeric representation of the week of the year, starting with the first Monday as the first week | `46` (for the 46th week of the year beginning with a Monday)
  Month | --- | ---
  `%b` | Abbreviated month name, based on the locale | `Jan` through `Dec`
  `%B` | Full month name, based on the locale | `January` through `December`
  `%h` | Abbreviated month name, based on the locale (an alias of %b) | `Jan` through `Dec`
  `%m` | Two digit representation of the month | `01` (for January) through `12` (for December)
  Year | --- | ---
  `%C` | Two digit representation of the century (year divided by 100, truncated to an integer) | `19` for the 20th Century
  `%g` | Two digit representation of the year going by ISO-8601:1988 standards (see %V) | Example: `09` for the week of January 6, 2009
  `%G` | The full four-digit version of %g | Example: `2008` for the week of January 3, 2009
  `%y` | Two digit representation of the year | Example: `09` for 2009, `79` for 1979
  `%Y` | Four digit representation for the year | Example: `2038`
  Time | --- | ---
  `%H` | Two digit representation of the hour in 24-hour format | `00` through `23`
  `%k` | Hour in 24-hour format, with a space preceding single digits | `0` through `23`
  `%I` | Two digit representation of the hour in 12-hour format | `01` through `12`
  `%l (lower-case 'L')` | Hour in 12-hour format, with a space preceding single digits | `1` through `12`
  `%M` | Two digit representation of the minute | `00` through `59`
  `%p` | UPPER-CASE 'AM' or 'PM' based on the given time | Example: `AM` for 00:31, `PM` for 22:23. The exact result depends on the Operating System, and they can also return lower-case variants, or variants with dots (such as `a.m.`).
  `%P` | lower-case 'am' or 'pm' based on the given time | Example: `am` for 00:31, `pm` for 22:23. Not supported by all Operating Systems.
  `%r` | Same as "%I:%M:%S %p" | Example: `09:34:17 PM` for 21:34:17
  `%R` | Same as "%H:%M" | Example: `00:35` for 12:35 AM, `16:44` for 4:44 PM
  `%S` | Two digit representation of the second | `00` through `59`
  `%T` | Same as "%H:%M:%S" | Example: `21:34:17` for 09:34:17 PM
  `%X` | Preferred time representation based on locale, without the date | Example: `03:59:16` or `15:59:16`
  `%z` | The time zone offset. Not implemented as described on Windows. See below for more information. | Example: `-0500` for US Eastern Time
  `%Z` | The time zone abbreviation. Not implemented as described on Windows. See below for more information. | Example: `EST` for Eastern Time
  Time and Date Stamps | --- | ---
  `%c` | Preferred date and time stamp based on locale | Example: `Tue Feb 5 00:45:10 2009` for February 5, 2009 at 12:45:10 AM
  `%D` | Same as "%m/%d/%y" | Example: `02/05/09` for February 5, 2009
  `%F` | Same as "%Y-%m-%d" (commonly used in database datestamps) | Example: `2009-02-05` for February 5, 2009
  `%s` | Unix Epoch Time timestamp (same as the time() function) | Example: `305815200` for September 10, 1979 08:40:00 AM
  `%x` | Preferred date representation based on locale, without the time | Example: `02/05/09` for February 5, 2009
  Miscellaneous | --- | ---
  `%n` | A newline character ("\n") | ---
  `%t` | A Tab character ("\t") | ---
  `%%` | A literal percentage character ("%") | ---

  Uyarı

  Contrary to ISO-9899:1999, Sun Solaris starts with Sunday as 1. As a result, `%u` may not function as described in this manual.

  Uyarı

  Windows only:

  The `%e` modifier is not supported in the Windows implementation of this function. To achieve this value, the `%#d` modifier can be used instead. The example below illustrates how to write a cross platform compatible function.

  The `%z` and `%Z` modifiers both return the time zone name instead of the offset or abbreviation.

  Uyarı

  macOS and musl only: The `%P` modifier is not supported in the macOS implementation of this function.

`zaman_damgası`

  Seçimlik `zaman_damgası` bağımsız değişkeni int türünde bir Unix zaman damgası olup belirtilmediği takdirde veya `null` ise yerel zaman kullanılır. Başka bir deyişle, time() işlevinden dönen değer öntanımlıdır.

### Dönen Değerler

Returns a string formatted according `format` using the given `timestamp` or the current local time if no timestamp is given. Month and weekday names and other language-dependent strings respect the current locale set with setlocale(). The function returns `false` if `format` is empty, contains unsupported conversion specifiers, or if the length of the returned string would be greater than `4095`.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

As the output is dependent upon the underlying C library, some conversion specifiers are not supported. On Windows, supplying unknown conversion specifiers will result in 5 `E_WARNING` messages and return `false`. On other operating systems you may not get any `E_WARNING` messages and the output may contain the conversion specifiers unconverted.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `timestamp` is nullable now.

### Örnekler

This example will work if you have the respective locales installed in your system.

Örnek 1 strftime() locale examples

    <?php
    setlocale(LC_TIME, "C");
    echo strftime("%A");
    setlocale(LC_TIME, "fi_FI");
    echo strftime(" in Finnish is %A,");
    setlocale(LC_TIME, "fr_FR");
    echo strftime(" in French %A and");
    setlocale(LC_TIME, "de_DE");
    echo strftime(" in German %A.\n");

Örnek 2 ISO 8601:1988 week number example

    <?php
    /*     December 2002 / January 2003
    ISOWk  M   Tu  W   Thu F   Sa  Su
    ----- ----------------------------
    51     16  17  18  19  20  21  22
    52     23  24  25  26  27  28  29
    1      30  31   1   2   3   4   5
    2       6   7   8   9  10  11  12
    3      13  14  15  16  17  18  19   */

    // Outputs: 12/28/2002 - %V,%G,%Y = 52,2002,2002
    echo "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/28/2002")) . "\n";

    // Outputs: 12/30/2002 - %V,%G,%Y = 1,2003,2002
    echo "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/30/2002")) . "\n";

    // Outputs: 1/3/2003 - %V,%G,%Y = 1,2003,2003
    echo "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";

    // Outputs: 1/10/2003 - %V,%G,%Y = 2,2003,2003
    echo "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";

    /*     December 2004 / January 2005
    ISOWk  M   Tu  W   Thu F   Sa  Su
    ----- ----------------------------
    51     13  14  15  16  17  18  19
    52     20  21  22  23  24  25  26
    53     27  28  29  30  31   1   2
    1       3   4   5   6   7   8   9
    2      10  11  12  13  14  15  16   */

    // Outputs: 12/23/2004 - %V,%G,%Y = 52,2004,2004
    echo "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

    // Outputs: 12/31/2004 - %V,%G,%Y = 53,2004,2004
    echo "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

    // Outputs: 1/2/2005 - %V,%G,%Y = 53,2004,2005
    echo "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";

    // Outputs: 1/3/2005 - %V,%G,%Y = 1,2005,2005
    echo "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";

Örnek 3 Cross platform compatible example using the `%e` modifier

    <?php

    // Jan 1: results in: '%e%1%' (%%, e, %%, %e, %%)
    $format = '%%e%%%e%%';

    // Check for Windows to find and replace the %e
    // modifier correctly
    if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
        $format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
    }

    echo strftime($format);

Örnek 4 Display all known and unknown formats

    <?php

    // Describe the formats
    $strftimeFormats = array(
        'A' => 'A full textual representation of the day',
        'B' => 'Full month name, based on the locale',
        'C' => 'Two digit representation of the century (year divided by 100, truncated to an integer)',
        'D' => 'Same as "%m/%d/%y"',
        'E' => '',
        'F' => 'Same as "%Y-%m-%d"',
        'G' => 'The full four-digit version of %g',
        'H' => 'Two digit representation of the hour in 24-hour format',
        'I' => 'Two digit representation of the hour in 12-hour format',
        'J' => '',
        'K' => '',
        'L' => '',
        'M' => 'Two digit representation of the minute',
        'N' => '',
        'O' => '',
        'P' => 'lower-case "am" or "pm" based on the given time',
        'Q' => '',
        'R' => 'Same as "%H:%M"',
        'S' => 'Two digit representation of the second',
        'T' => 'Same as "%H:%M:%S"',
        'U' => 'Week number of the given year, starting with the first Sunday as the first week',
        'V' => 'ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week',
        'W' => 'A numeric representation of the week of the year, starting with the first Monday as the first week',
        'X' => 'Preferred time representation based on locale, without the date',
        'Y' => 'Four digit representation for the year',
        'Z' => 'The time zone offset/abbreviation option NOT given by %z (depends on operating system)',
        'a' => 'An abbreviated textual representation of the day',
        'b' => 'Abbreviated month name, based on the locale',
        'c' => 'Preferred date and time stamp based on local',
        'd' => 'Two-digit day of the month (with leading zeros)',
        'e' => 'Day of the month, with a space preceding single digits',
        'f' => '',
        'g' => 'Two digit representation of the year going by ISO-8601:1988 standards (see %V)',
        'h' => 'Abbreviated month name, based on the locale (an alias of %b)',
        'i' => '',
        'j' => 'Day of the year, 3 digits with leading zeros',
        'k' => 'Hour in 24-hour format, with a space preceding single digits',
        'l' => 'Hour in 12-hour format, with a space preceding single digits',
        'm' => 'Two digit representation of the month',
        'n' => 'A newline character ("\n")',
        'o' => '',
        'p' => 'UPPER-CASE "AM" or "PM" based on the given time',
        'q' => '',
        'r' => 'Same as "%I:%M:%S %p"',
        's' => 'Unix Epoch Time timestamp',
        't' => 'A Tab character ("\t")',
        'u' => 'ISO-8601 numeric representation of the day of the week',
        'v' => '',
        'w' => 'Numeric representation of the day of the week',
        'x' => 'Preferred date representation based on locale, without the time',
        'y' => 'Two digit representation of the year',
        'z' => 'Either the time zone offset from UTC or the abbreviation (depends on operating system)',
        '%' => 'A literal percentage character ("%")',
    );

    // Results
    $strftimeValues = array();

    // Evaluate the formats whilst suppressing any errors
    foreach ($strftimeFormats as $format => $description) {
        if (false !== ($value = @strftime("%{$format}"))) {
            $strftimeValues[$format] = $value;
        }
    }

    // Find the longest value
    $maxValueLength = 2 + max(array_map('strlen', $strftimeValues));

    // Report known formats
    foreach ($strftimeValues as $format => $value) {
        echo "Known format   : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
    }

    // Report unknown formats
    foreach (array_diff_key($strftimeFormats, $strftimeValues) as $format => $description) {
        echo "Unknown format : '{$format}'   ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n";
    }

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Known format   : 'A' = 'Friday'            ( A full textual representation of the day )
    Known format   : 'B' = 'December'          ( Full month name, based on the locale )
    Known format   : 'H' = '11'                ( Two digit representation of the hour in 24-hour format )
    Known format   : 'I' = '11'                ( Two digit representation of the hour in 12-hour format )
    Known format   : 'M' = '24'                ( Two digit representation of the minute )
    Known format   : 'S' = '44'                ( Two digit representation of the second )
    Known format   : 'U' = '48'                ( Week number of the given year, starting with the first Sunday as the first week )
    Known format   : 'W' = '48'                ( A numeric representation of the week of the year, starting with the first Monday as the first week )
    Known format   : 'X' = '11:24:44'          ( Preferred time representation based on locale, without the date )
    Known format   : 'Y' = '2010'              ( Four digit representation for the year )
    Known format   : 'Z' = 'GMT Standard Time' ( The time zone offset/abbreviation option NOT given by %z (depends on operating system) )
    Known format   : 'a' = 'Fri'               ( An abbreviated textual representation of the day )
    Known format   : 'b' = 'Dec'               ( Abbreviated month name, based on the locale )
    Known format   : 'c' = '12/03/10 11:24:44' ( Preferred date and time stamp based on local )
    Known format   : 'd' = '03'                ( Two-digit day of the month (with leading zeros) )
    Known format   : 'j' = '337'               ( Day of the year, 3 digits with leading zeros )
    Known format   : 'm' = '12'                ( Two digit representation of the month )
    Known format   : 'p' = 'AM'                ( UPPER-CASE "AM" or "PM" based on the given time )
    Known format   : 'w' = '5'                 ( Numeric representation of the day of the week )
    Known format   : 'x' = '12/03/10'          ( Preferred date representation based on locale, without the time )
    Known format   : 'y' = '10'                ( Two digit representation of the year )
    Known format   : 'z' = 'GMT Standard Time' ( Either the time zone offset from UTC or the abbreviation (depends on operating system) )
    Known format   : '%' = '%'                 ( A literal percentage character ("%") )
    Unknown format : 'C'                       ( Two digit representation of the century (year divided by 100, truncated to an integer) )
    Unknown format : 'D'                       ( Same as "%m/%d/%y" )
    Unknown format : 'E'
    Unknown format : 'F'                       ( Same as "%Y-%m-%d" )
    Unknown format : 'G'                       ( The full four-digit version of %g )
    Unknown format : 'J'
    Unknown format : 'K'
    Unknown format : 'L'
    Unknown format : 'N'
    Unknown format : 'O'
    Unknown format : 'P'                       ( lower-case "am" or "pm" based on the given time )
    Unknown format : 'Q'
    Unknown format : 'R'                       ( Same as "%H:%M" )
    Unknown format : 'T'                       ( Same as "%H:%M:%S" )
    Unknown format : 'V'                       ( ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week )
    Unknown format : 'e'                       ( Day of the month, with a space preceding single digits )
    Unknown format : 'f'
    Unknown format : 'g'                       ( Two digit representation of the year going by ISO-8601:1988 standards (see %V) )
    Unknown format : 'h'                       ( Abbreviated month name, based on the locale (an alias of %b) )
    Unknown format : 'i'
    Unknown format : 'k'                       ( Hour in 24-hour format, with a space preceding single digits )
    Unknown format : 'l'                       ( Hour in 12-hour format, with a space preceding single digits )
    Unknown format : 'n'                       ( A newline character ("\n") )
    Unknown format : 'o'
    Unknown format : 'q'
    Unknown format : 'r'                       ( Same as "%I:%M:%S %p" )
    Unknown format : 's'                       ( Unix Epoch Time timestamp )
    Unknown format : 't'                       ( A Tab character ("\t") )
    Unknown format : 'u'                       ( ISO-8601 numeric representation of the day of the week )
    Unknown format : 'v'

### Notlar

> Bilginize: %G and %V, which are based on ISO 8601:1988 week numbers can give unexpected (albeit correct) results if the numbering system is not thoroughly understood. See %V examples in this manual page.

### Ayrıca Bakınız

- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler
- DateTimeInterface::format() - Returns date formatted according to given format
- » Online strftime() format design tool
- setlocale() - Yereli ayarlar
- mktime() - Bir tarih için Unix zaman damgasını döndürür
- strptime() - strftime işleviyle üretilen zaman ve tarihleri çözümler
- gmstrftime() - Yerel ayarlara göre tarih ve saati, UTC türüne çevirir
- » Open Group specification of strftime()

# strptime

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

strptime — strftime() işleviyle üretilen zaman ve tarihleri çözümler

Uyarı

Bu işlevin kullanımı PHP 8.1.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

#[\Deprecated]
function strptime(string `$zaman_damgası`, string `$biçim`): array|false

strptime() işlevi çözümlenmiş `zaman_damgası` bağımsız değişkenini bir diziyle döndürür. Hata durumlarındaysa false değeriyle döner.

Ay, gün isimleri ve yerel ayarlarıyla ilgili dile bağımlı diğer dizgeler (LC_TIME), setlocale() işleviyle ayarlanır.

### Bağımsız Değişkenler

`zaman_damgası` (string)

  Çözümlenecek dizge (ör. strftime() işlevinden dönen değer)

`biçim` (string)

  `zaman_damgası` bağımsız değişkeninde kullanılan biçim (ör. strftime() işlevinde kullanılanla aynı). strftime() için mevcut olan bazı biçim seçeneklerinin strptime() içinde herhangi bir etkisi olmayabileceğini unutmayın; Desteklenen tam alt küme, işletim sistemine ve kullanılan C kütüphanesine bağlı olarak değişecektir.

  Biçimlendirme seçenekleri hakkında daha fazla bilgi için strftime() sayfasını okuyun.

### Dönen Değerler

Dizi döndürür. Hata durumlarında `false` değeriyle döner.

Diziyle dönen değerler
Bağımsız değişken | Açıklama
--- | ---
`"tm_sec"` | Saniye (0-61)
`"tm_min"` | Dakika (0-59)
`"tm_hour"` | Saat (0-23)
`"tm_mday"` | Gün (1-31)
`"tm_mon"` | Ay (0-11)
`"tm_year"` | 1900'den itibaren yıllar
`"tm_wday"` | Pazar'dan itibaren hafta günleri (0-6)
`"tm_yday"` | Ocak 1'den itibaren günler (0-365)
`"unparsed"` | `tarih` bağımsız değişkeninin bilinmeyen `biçim` bağımsız değişkeni kullanımından dönen değer

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Bu işlevin kullanımı artık önerilmiyor. Yerine, yerelden bağımsız çözümleme için date_parse_from_format() veya yerele bağımlı çözümleme için IntlDateFormatter::parse() kullanılması öneriliyor.

### Örnekler

Örnek 1 - strptime() örneği

    <?php
    $biçim = '%d/%m/%Y %H:%M:%S';
    $strf = strftime($biçim);

    echo "$strf\n";

    print_r(strptime($strf, $biçim));

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    03/10/2004 15:54:19

    Array
    (
        [tm_sec] => 19
        [tm_min] => 54
        [tm_hour] => 15
        [tm_mday] => 3
        [tm_mon] => 9
        [tm_year] => 104
        [tm_wday] => 0
        [tm_yday] => 276
        [unparsed] =>
    )

### Notlar

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

> Bilginize:

> Dahili olarak, bu işlev sistemin C kütüphanesi tarafından sağlanan `strptime()` işlevini çağırır. Bu işlev, farklı işletim sistemlerinde fark edilir ölçüde farklı davranışlar sergileyebilir. Bu sorunlardan etkilenmeyen date_parse_from_format() işlevinin kullanılması önerilir

> Bilginize:

> `"tm_sec"` "artık saniyeleri" de içerir (yılda 2 saniyeye kadar). Artık saniyeler hakkında bilgi edinmek için » Wikipedia artık saniyeler makalesine bakınız.

### Ayrıca Bakınız

- IntlDateFormatter::parse() - Dizgeyi bir zaman damgası değerine dönüştürür
- DateTime::createFromFormat() - Parses a time string according to a specified format
- checkdate() - Miladi tarihi doğrular
- strftime() - Format a local time/date according to locale settings
- date_parse_from_format() - Belirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir

# strtotime

(PHP 4, PHP 5, PHP 7, PHP 8)

strtotime — Parse about any English textual datetime description into a Unix timestamp

### Açıklama

function strtotime(string `$datetime`, ?int `$baseTimestamp` = `null`): int|false

The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 UTC), relative to the timestamp given in `baseTimestamp`, or the current time if `baseTimestamp` is not supplied. The date string parsing is defined in Date and Time Formats, and has several subtle considerations. Reviewing the full details there is strongly recommended.

Uyarı

The Unix timestamp that this function returns does not contain information about time zones. In order to do calculations with date/time information, you should use the more capable DateTimeImmutable.

Each parameter of this function uses the default time zone unless a time zone is specified in that parameter. Be careful not to use different time zones in each parameter unless that is intended. See date_default_timezone_get() on the various ways to define the default time zone.

### Bağımsız Değişkenler

`datetime`

  Bir tarih/zaman dizgesi. Geçerli biçemler Tarih ve Zaman Biçemleri bölümünde açıklanmıştır.

`baseTimestamp`

  The timestamp which is used as a base for the calculation of relative dates.

### Dönen Değerler

Returns a timestamp on success, `false` otherwise.

### Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir `E_WARNING` üretir. Ayrıca bakınız: date_default_timezone_set()

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `baseTimestamp` is nullable now.

### Örnekler

Örnek 1 A strtotime() example

    <?php
    echo strtotime("now"), "\n";
    echo strtotime("10 September 2000"), "\n";
    echo strtotime("+1 day"), "\n";
    echo strtotime("+1 week"), "\n";
    echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
    echo strtotime("next Thursday"), "\n";
    echo strtotime("last Monday"), "\n";

Örnek 2 Checking for failure

    <?php
    $str = 'Not Good';

    if (($timestamp = strtotime($str)) === false) {
        echo "The string ($str) is bogus";
    } else {
        echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
    }

### Notlar

> Bilginize:

> "Relative" date in this case also means that if a particular component of the date/time stamp is not provided, it will be taken verbatim from the `baseTimestamp`. That is, `strtotime('February')`, if run on the 31st of May 2022, will be interpreted as `31 February 2022`, which will overflow into a timestamp on `3 March`. (In a leap year, it would be `2 March`.) Using `strtotime('1 February')` or `strtotime('first day of February')` would avoid that problem.

> Bilginize:

> If the number of the year is specified in a two digit format, the values between 00-69 are mapped to 2000-2069 and 70-99 to 1970-1999. See the notes below for possible differences on 32bit systems (possible dates might end on 2038-01-19 03:14:07).

> Bilginize:

> The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.)

> For 64-bit versions of PHP, the valid range of a timestamp is effectively infinite, as 64 bits can represent approximately 293 billion years in either direction.

> Bilginize:

> Using this function for mathematical operations is not advisable. It is better to use DateTime::add() and DateTime::sub().

### Ayrıca Bakınız

- DateTimeImmutable
- DateTimeImmutable::createFromFormat() - Parses a time string according to a specified format
- Date and Time Formats
- checkdate() - Miladi tarihi doğrular
- strptime() - strftime işleviyle üretilen zaman ve tarihleri çözümler

# time

(PHP 4, PHP 5, PHP 7, PHP 8)

time — Geçerli Unix zaman damgasını döndürür

### Açıklama

function time(): int

Unix Zaman Başlangıcından (1 Ocak 1970 00:00:00 GMT) itibaren geçen zamanı saniye cinsinden döndürür.

> Bilginize:

> Unix zaman damgaları yerel zaman dilimi hakkında herhangi bir bilgi içermez. Tarih ve saat bilgilerini işlerken Unix zaman damgalarından kaynaklanan böyle tehlikelerden kaçınmak için DateTimeImmutable sınıfının kullanılması önerilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Geçerli zaman damgasını döndürür.

### Örnekler

Örnek 1 - time() örneği

    <?php
    echo 'Şimdi: '. time();

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Şimdi: 1660338149

### Notlar

İpucu

İstek başlangıç zaman damgası $_SERVER['REQUEST_TIME'] değişkenine atanır.

### Ayrıca Bakınız

- DateTimeImmutable
- date() - Unix zaman damgasını biçimlendirir
- microtime() - Geçerli Unix zaman damgasını mikrosaniye olarak döndürür

# timezone_abbreviations_list

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_abbreviations_list — DateTimeZone::listAbbreviations() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::listAbbreviations() işlevinin takma adıdır.

# timezone_identifiers_list

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_identifiers_list — DateTimeZone::listIdentifiers() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::listIdentifiers() işlevinin takma adıdır.

# timezone_location_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

timezone_location_get — DateTimeZone::getLocation() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::getLocation() işlevinin takma adıdır.

# timezone_name_from_abbr

(PHP 5 >= 5.1.3, PHP 7, PHP 8)

timezone_name_from_abbr — Kısaltmasından ve UTC farkından tahminen zaman diliminin adını döndürür

### Açıklama

function timezone_name_from_abbr(string `$kısaltma`, int `$utc_farkı` = -1, int `$gys_var` = -1): string|false

### Bağımsız Değişkenler

`kısaltma`

  Zaman dilimi kısaltması.

`utc_farkı`

  Yerel saatin UTC'ye göre saniye cinsinden farkı. Varsayılan değer, `kısaltma` bağımsız değişkeninin karşılığı olarak bulunan ilk zaman diliminin döndürüleceği anlamına gelen -1'dir. Yoksa, farka uyan zaman dilimi aranır ve bulunamadığı durumlarda fark ne olursa olsun bulunan ilk zaman dilimi döndürülür.

`gys_var`

  Gün ışığından yararlanma saati göstergesi. Öntanımlı değer -1 olup arama sırasında zaman diliminin gün ışığından yararlanma özelliğinin olup olmadığının dikkate alınmadığı anlamına gelir. Bu 1 olarak ayarlanırsa, `utc_farkı`'nın etkin gün ışığından yararlanma farkını içerdiği varsayılır; 0 ise, `utc_farkı` gün ışığından yararlanma farkını içermiyor demektir. `kısaltma` yoksa, zaman dilimi yalnızca `utc_farkı` ve `gys_var` bağımsız değişkenlerine göre aranacaktır.

### Dönen Değerler

Başarılı olduğunda zaman diliminin adını, başarısız olduğunda `false` döndürür.

### Örnekler

Örnek 1 - timezone_name_from_abbr() örneği

    <?php
    echo timezone_name_from_abbr("EET") . "\n";
    echo timezone_name_from_abbr("", 3600, 0) . "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Europe/Helsinki
    Europe/Paris

### Ayrıca Bakınız

- timezone_abbreviations_list() - DateTimeZone::listAbbreviations işlevinin takma adıdır

# timezone_name_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_name_get — DateTimeZone::getName() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::getName() işlevinin takma adıdır.

# timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_offset_get — DateTimeZone::getOffset() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::getOffset() işlevinin takma adıdır.

# timezone_open

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_open — DateTimeZone::__construct() için takma ad

### Açıklama

Bu işlev DateTimeZone::__construct() için bir takma addır.

# timezone_transitions_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

timezone_transitions_get — DateTimeZone::getTransitions() işlevinin takma adıdır

### Açıklama

Bu işlev, DateTimeZone::getTransitions() işlevinin takma adıdır.

# timezone_version_get

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

timezone_version_get — timezonedb sürümünü döndürür

### Açıklama

function timezone_version_get(): string

Geçerli timezonedb sürümünü döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`YYYY.sürüm` biçemini örneğin `2022.2` dizgesi olarak döndürür.

Zaman dilimi veritabanının eski bir sürümü kullanılıyorsa (örneğin geçerli yılı göstermiyorsa), zaman dilimi bilgisi ya PHP güncellenerek ya da » timezonedb PECL paketi kurularak güncellenebilir.

Bazı Linux dağıtımları, saat dilimi bilgisi için ayrı bir kaynak kullanmak amacıyla PHP'nin tarih/saat desteğine yama uygular. Bu durumda bu işlev `0.system` değerini döndürecektir. Bu durumda da » timezonedb PECL paketinin kurulması önerilir.

### Örnekler

Örnek 1 - timezonedb sürümünün öğrenilmesi

    <?php
    echo timezone_version_get();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2022.2

### Ayrıca Bakınız

- Desteklenen Zaman Dilimlerinin Listesi

## İçindekiler

- checkdate — Miladi tarihi doğrular
- date — Unix zaman damgasını biçimlendirir
- date_add — DateTime::add işlevinin takma adıdır
- date_create — Yeni bir DateTime nesnesi oluşturur
- date_create_from_format — DateTime::createFromFormat işlevinin takma adıdır
- date_create_immutable — Yeni bir DateTimeImmutable nesnesi oluşturur
- date_create_immutable_from_format — DateTimeImmutable::createFromFormat işlevinin takma adı
- date_date_set — DateTime::setDate işlevinin takma adıdır
- date_default_timezone_get — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini getirir
- date_default_timezone_set — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini ayarlar
- date_diff — DateTime::diff işlevinin takma adıdır
- date_format — DateTime::format işlevinin takma adıdır
- date_get_last_errors — DateTimeImmutable::getLastErrors işlevinin takma adıdır
- date_interval_create_from_date_string — DateInterval::createFromDateString işlevinin takma adıdır
- date_interval_format — DateInterval::format işlevinin takma adıdır
- date_isodate_set — DateTime::setISODate işlevinin takma adıdır
- date_modify — DateTime::modify işlevinin takma adıdır
- date_offset_get — DateTime::getOffset işlevinin takma adıdır
- date_parse — Verilen tarih/zaman hakkındaki ayrıntılı bilgiyi ilişkisel dizi olarak döndürür
- date_parse_from_format — Belirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir
- date_sub — DateTime::sub işlevinin takma adıdır
- date_sun_info — Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür
- date_sunrise — Belirtilen gün ve konum için şafak zamanını döndürür
- date_sunset — Verilen gün ve konum için günbatımı zamanını döndürür
- date_time_set — DateTime::setTime işlevinin takma adıdır
- date_timestamp_get — DateTime::getTimestamp işlevinin takma adıdır
- date_timestamp_set — DateTime::setTimestamp işlevinin takma adıdır
- date_timezone_get — DateTime::getTimezone işlevinin takma adıdır
- date_timezone_set — DateTime::setTimezone işlevinin takma adıdır
- getdate — Tarih/zaman bilgisi getirir
- gettimeofday — Geçerli zamanı getirir
- gmdate — Bir tarih/saati GMT/UTC tarih/saati olarak biçemler
- gmmktime — Bir GMT tarihi için Unix zaman damgasını döndürür
- gmstrftime — Yerel ayarlara göre tarih ve saati, UTC türüne çevirir
- idate — Yerel zaman/tarih kısmını tamsayı olarak biçimlendirir
- localtime — Yerel zamanı getirir
- microtime — Geçerli Unix zaman damgasını mikrosaniye olarak döndürür
- mktime — Bir tarih için Unix zaman damgasını döndürür
- strftime — Format a local time/date according to locale settings
- strptime — strftime işleviyle üretilen zaman ve tarihleri çözümler
- strtotime — Parse about any English textual datetime description into a Unix timestamp
- time — Geçerli Unix zaman damgasını döndürür
- timezone_abbreviations_list — DateTimeZone::listAbbreviations işlevinin takma adıdır
- timezone_identifiers_list — DateTimeZone::listIdentifiers işlevinin takma adıdır
- timezone_location_get — DateTimeZone::getLocation işlevinin takma adıdır
- timezone_name_from_abbr — Kısaltmasından ve UTC farkından tahminen zaman diliminin adını döndürür
- timezone_name_get — DateTimeZone::getName işlevinin takma adıdır
- timezone_offset_get — DateTimeZone::getOffset işlevinin takma adıdır
- timezone_open — DateTimeZone::__construct için takma ad
- timezone_transitions_get — DateTimeZone::getTransitions işlevinin takma adıdır
- timezone_version_get — timezonedb sürümünü döndürür

# Tarih/Saat Hataları ve İstisnaları

- DateError (extends Error)
  - DateObjectError DateRangeError
- DateException (extends Exception)
  - - DateInvalidOperationException
    - DateInvalidTimezoneException
    - DateMalformedIntervalStringException
    - DateMalformedPeriodStringException
    - DateMalformedStringException

# Supported Date and Time Formats

This section describes all the different formats in a BNF-like format, that the DateTimeImmutable, DateTime, date_create_immutable(), date_create(), date_parse(), and strtotime() parser understands. The formats are grouped by section. In most cases formats from different sections, separated by whitespace, comma or dot, can be used in the same date/time string. For each of the supported formats, one or more examples are given, as well as a description for the format. Characters in single quotes in the formats are case-insensitive (`'t'` could be `t` or `T`), characters in double quotes are case-sensitive (`"T"` is only `T`).

To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.

A general set of rules should be taken into account.

1. The parser, allows for each unit (year, month, day, hour, minute, second) the full range of values. For a year that's just 4 digits, for a month that's 0-12, day is 0-31, hour is 0-24, and minute is 0-59.
2. 60 is allowed for seconds, as sometimes date strings with that leapsecond do show up. But PHP implements Unix time where "60" is not a valid second number and hence it overflows.
3. strtotime() returns `false` if any number is outside of the ranges, and DateTimeImmutable::__construct() throws an exception.
4. If a string contains a date, all time elements are reset to 0.
5. All less-significant time elements are reset to 0 if any part of a time is present in the given string.
6. The parser is dumb, and doesn't do any checks to make it faster (and more generic).
7. Besides rules for individual time elements, the parser also understand more specific compound formats, such as parsing Unix timestamps (`@1690388256`) and ISO Weekdates (`2008-W28-3`).

8. There is an additional check if an invalid date is provided:

       <?php
       $res = date_parse("2015-09-31");
       var_dump($res["warnings"]);

   Yukarıdaki örneğin çıktısı:

       array(1) {
         [11] =>
         string(27) "The parsed date was invalid"
       }

9. It is already possible to handle the edge cases, but then DateTimeImmutable::createFromFormat() must be used while supplying the correct format.

       <?php
       $res = DateTimeImmutable::createFromFormat("Y-m-d", "2015-09-34");
       var_dump($res);

   Yukarıdaki örneğin çıktısı:

       object(DateTimeImmutable)#1 (3) {
         ["date"]=>
         string(26) "2015-10-04 17:24:43.000000"
         ["timezone_type"]=>
         int(3)
         ["timezone"]=>
         string(13) "Europe/London"
       }

## Time Formats

This page describes the different date/time formats in a BNF-like syntax, that the DateTimeImmutable, DateTime, date_create(), date_create_immutable(), and strtotime() parser understands.

To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.

Used Symbols
Description | Formats | Examples
--- | --- | ---
`frac` | . [0-9]+ | ".21342", ".85"
`hh` | "0"?[1-9] | "1"[0-2] | "04", "7", "12"
`HH` | [01][0-9] | "2"[0-4] | "04", "07", "19"
`meridian` | [AaPp] .? [Mm] .? [\0\t ] | "A.m.", "pM", "am."
`MM` | [0-5][0-9] | "00", "12", "59"
`II` | [0-5][0-9] | "00", "12", "59"
`space` | [ \t] |
`tz` | "("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+ | "CEST", "Europe/Amsterdam", "America/Indiana/Knox"
`tzcorrection` | "GMT"? [+-] `hh` ":"? `MM`? | "+0400", "GMT-07:00", "-07:00"

12 Hour Notation
Description | Format | Examples
--- | --- | ---
Hour only, with meridian | `hh` `space`? `meridian` | "4 am", "5PM"
Hour and minutes, with meridian | `hh` [.:] `MM` `space`? `meridian` | "4:08 am", "7:19P.M."
Hour, minutes and seconds, with meridian | `hh` [.:] `MM` [.:] `II` `space`? `meridian` | "4:08:37 am", "7:19:19P.M."
MS SQL (Hour, minutes, seconds and fraction with meridian) | `hh` ":" `MM` ":" `II` [.:] [0-9]+ `meridian` | "4:08:39:12313am"

24 Hour Notation
Description | Format | Examples
--- | --- | ---
Hour and minutes | 't'? `HH` [.:] `MM` | "04:08", "19.19", "T23:43"
Hour and minutes, no colon | 't'? `HH` `MM` | "0408", "t1919", "T2343"
Hour, minutes and seconds | 't'? `HH` [.:] `MM` [.:] `II` | "04.08.37", "t19:19:19"
Hour, minutes and seconds, no colon | 't'? `HH` `MM` `II` | "040837", "T191919"
Hour, minutes, seconds and timezone | 't'? `HH` [.:] `MM` [.:] `II` `space`? ( `tzcorrection` | `tz` ) | "040837CEST", "T191919-0700"
Hour, minutes, seconds and fraction | 't'? `HH` [.:] `MM` [.:] `II` `frac` | "04.08.37.81412", "19:19:19.532453"
Time zone information | `tz` | `tzcorrection` | "CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"

## Date Formats

This page describes the different date formats in a BNF-like syntax, that the DateTimeImmutable, DateTime, date_create(), date_create_immutable(), and strtotime() parser understands.

To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.

Used Symbols
Description | Format | Examples
--- | --- | ---
`daysuf` | "st" | "nd" | "rd" | "th" |
`dd` | ([0-2]?[0-9] | "3"[01]) `daysuf`? | "7th", "22nd", "31"
`DD` | "0" [0-9] | [1-2][0-9] | "3" [01] | "07", "31"
`m` | 'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX" | "X" | "XI" | "XII" |
`M` | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' |
`mm` | "0"? [0-9] | "1"[0-2] | "0", "04", "7", "12"
`MM` | "0" [0-9] | "1"[0-2] | "00", "04", "07", "12"
`y` | [0-9]{1,4} | "00", "78", "08", "8", "2008"
`yy` | [0-9]{2} | "00", "08", "78"
`YY` | [0-9]{4} | "2000", "2008", "1978"
`YYY` | [0-9]{5,19} | "81412", "20192"

Localized Notations
Description | Format | Examples
--- | --- | ---
American month and day | `mm` "/" `dd` | "5/12", "10/27"
American month, day and year | `mm` "/" `dd` "/" `y` | "12/22/78", "1/17/2006", "1/17/6"
Four digit year, month and day with slashes | `YY` "/" `mm` "/" `dd` | "2008/6/30", "1978/12/22"
Four digit year and month (GNU) | `YY` "-" `mm` | "2008-6", "2008-06", "1978-12"
Year, month and day with dashes | `y` "-" `mm` "-" `dd` | "2008-6-30", "78-12-22", "8-6-21"
Day, month and four digit year, with dots, tabs or dashes | `dd` [.\t-] `mm` [.-] `YY` | "30-6-2008", "22.12.1978"
Day, month and two digit year, with dots or tabs | `dd` [.\t] `mm` "." `yy` | "30.6.08", "22\t12.78"
Day, textual month and year | `dd` ([ \t.-])* `m` ([ \t.-])* `y` | "30-June 2008", "22DEC78", "14 III 1879"
Textual month and four digit year (Day reset to 1) | `m` ([ \t.-])* `YY` | "June 2008", "DEC1978", "March 1879"
Four digit year and textual month (Day reset to 1) | `YY` ([ \t.-])* `m` | "2008 June", "1978-XII", "1879.MArCH"
Textual month, day and year | `m` ([ .\t-])* `dd` [,.stndrh\t ]+ `y` | "July 1st, 2008", "April 17, 1790", "May.9,78"
Textual month and day | `m` ([ .\t-])* `dd` [,.stndrh\t ]* | "July 1st,", "Apr 17", "May.9"
Day and textual month | `dd` ([ .\t-])* `m` | "1 July", "17 Apr", "9.May"
Month abbreviation, day and year | `M` "-" `DD` "-" `y` | "May-09-78", "Apr-17-1790"
Year, month abbreviation and day | `y` "-" `M` "-" `DD` | "78-Dec-22", "1814-MAY-17"
Year (and just the year) | `YY` | "1978", "2008"
Year (expanded, 5-19 digits with sign) | [+-] `YYY` | "-81120", "+20192"
Textual month (and just the month) | `m` | "March", "jun", "DEC"

ISO8601 Notations
Description | Format | Examples
--- | --- | ---
Eight digit year, month and day | `YY` `MM` `DD` | "15810726", "19780417", "18140517"
Four digit year, month and day with slashes | `YY` "/" `MM` "/" `DD` | "2008/06/30", "1978/12/22"
Two digit year, month and day with dashes | `yy` "-" `MM` "-" `DD` | "08-06-30", "78-12-22"
Four digit year with optional sign, month and day | [+-]? `YY` "-" `MM` "-" `DD` | "-0002-07-26", "+1978-04-17", "1814-05-17"
Five+ digit year with required sign, month and day | [+-] `YYY` "-" `MM` "-" `DD` | "-81120-02-26", "+20192-04-17"

> Bilginize: For the `y` and `yy` formats, years below 100 are handled in a special way when the `y` or `yy` symbol is used. If the year falls in the range 0 (inclusive) to 69 (inclusive), 2000 is added. If the year falls in the range 70 (inclusive) to 99 (inclusive) then 1900 is added. This means that "00-01-01" is interpreted as "2000-01-01".

> Bilginize: The "Day, month and two digit year, with dots or tabs" format (`dd` [.\t] `mm` "." `yy`) only works for the year values 61 (inclusive) to 99 (inclusive) - outside those years the time format "`HH` [.:] `MM` [.:] `SS`" has precedence.

> Bilginize: The "Year (and just the year)" format only reliably works if a time string has already been found. Otherwise, if the four digit year matches `HH` `MM` then these two date elements are set instead. To consistently parse just a year, use DateTimeImmutable::createFromFormat() with the `Y` specifier.

Dikkat

It is possible to over- and underflow the `dd` and `DD` format. Day 0 means the last day of previous month, whereas overflows count into the next month. This makes "2008-08-00" equivalent to "2008-07-31" and "2008-06-31" equivalent to "2008-07-01" (June only has 30 days).

Note that the day range is restricted to 0-31 as indicated by the regular expression above. Thus "2008-06-32" is not a valid date string, for instance.

It is also possible to underflow the `mm` and `MM` formats with the value 0. A month value of 0 means December of the previous year. As example "2008-00-22" is equivalent to "2007-12-22".

If you combine the previous two facts and underflow both the day and the month, the following happens: "2008-00-00" first gets converted to "2007-12-00" which then gets converted to "2007-11-30". This also happens with the string "0000-00-00", which gets transformed into "-0001-11-30" (the year -1 in the ISO 8601 calendar, which is 2 BC in the proleptic Gregorian calendar).

## Compound Formats

This page describes the different compound date/time formats in a BNF-like syntax, that the DateTimeImmutable, DateTime, date_create(), date_create_immutable(), and strtotime() parser understands.

To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.

Used Symbols
Description | Formats | Examples
--- | --- | ---
`DD` | "0" [0-9] | [1-2][0-9] | "3" [01] | "02", "12", "31"
`doy` | "00"[1-9] | "0"[1-9][0-9] | [1-2][0-9][0-9] | "3"[0-5][0-9] | "36"[0-6] | "001", "012", "180", "350", "366"
`frac` | . [0-9]+ | ".21342", ".85"
`hh` | "0"?[1-9] | "1"[0-2] | "04", "7", "12"
`HH` | [01][0-9] | "2"[0-4] | "04", "07", "19"
`meridian` | [AaPp] .? [Mm] .? [\0\t ] | "A.m.", "pM", "am."
`ii` | [0-5]?[0-9] | "04", "8", "59"
`II` | [0-5][0-9] | "04", "08", "59"
`M` | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' |
`MM` | [0-1][0-9] | "00", "12"
`space` | [ \t] |
`ss` | ([0-5]?[0-9])|60 | "04", "8", "59", "60" (leap second)
`SS` | [0-5][0-9] | "04", "08", "59"
`W` | "0"[1-9] | [1-4][0-9] | "5"[0-3] | "05", "17", "53"
`tzcorrection` | "GMT"? [+-] `hh` ":"? `II`? | "+0400", "GMT-07:00", "-07:00"
`YY` | [0-9]{4} | "2000", "2008", "1978"

Standards Formats
Description | Examples
--- | ---
ATOM | "2022-06-02T16:58:35+00:00"
COOKIE | "Thursday, 02-Jun-2022 16:58:35 UTC"
ISO8601 | "2022-06-02T16:58:35+0000"
» RFC 822 | "Thu, 02 Jun 22 16:58:35 +0000"
» RFC 850 | "Thursday, 02-Jun-22 16:58:35 UTC"
» RFC 1036 | "Thu, 02 Jun 22 16:58:35 +0000"
» RFC 1123 | "Thu, 02 Jun 2022 16:58:35 +0000"
» RFC 2822 | "Thu, 02 Jun 2022 16:58:35 +0000"
» RFC 3339 | "2022-06-02T16:58:35+00:00"
» RFC 3339 Extended | "2022-06-02T16:58:35.698+00:00"
» RFC 7231 | "Thu, 02 Jun 2022 16:58:35 GMT"
RSS | "Thu, 02 Jun 2022 16:58:35 +0000"
W3C | "2022-06-02T16:58:35+00:00"

Localized Notations
Description | Format | Examples
--- | --- | ---
Common Log Format | `dd` "/" `M` "/" `YY` : `HH` ":" `II` ":" `SS` `space` `tzcorrection` | "10/Oct/2000:13:55:36 -0700"
EXIF | `YY` ":" `MM` ":" `DD` " " `HH` ":" `II` ":" `SS` | "2008:08:07 18:11:31"
ISO year with ISO week | `YY` "-"? "W" `W` | "2008W27", "2008-W28"
ISO year with ISO week and day | `YY` "-"? "W" `W` "-"? [0-7] | "2008W273", "2008-W28-3"
MySQL | `YY` "-" `MM` "-" `DD` " " `HH` ":" `II` ":" `SS` | "2008-08-07 18:11:31"
PostgreSQL: Year with day-of-year | `YY` "."? `doy` | "2008.197", "2008197"
SOAP | `YY` "-" `MM` "-" `DD` "T" `HH` ":" `II` ":" `SS` `frac` `tzcorrection`? | "2008-07-01T22:35:17.02", "2008-07-01T22:35:17.03+08:00"
Unix Timestamp | "@" "-"? [0-9]+ | "@1215282385"
Unix Timestamp with microseconds | "@" "-"? [0-9]+ "." [0-9]{0,6} | "@1607974647.503686"
XMLRPC | `YY` `MM` `DD` "T" `hh` ":" `II` ":" `SS` | "20080701T22:38:07", "20080701T9:38:07"
XMLRPC (Compact) | `YY` `MM` `DD` 't' `hh` `II` `SS` | "20080701t223807", "20080701T093807"
WDDX | `YY` "-" `mm` "-" `dd` "T" `hh` ":" `ii` ":" `ss` | "2008-7-1T9:3:37"

> Bilginize: The "W" in the "ISO year with ISO week" and "ISO year with ISO week and day" formats is case-sensitive, you can only use the upper case "W". The "T" in the SOAP, XMLRPC and WDDX formats is case-sensitive, you can only use the upper case "T". The "Unix Timestamp" format sets the timezone to UTC.

## Relative Formats

This page describes the different relative date/time formats in a BNF-like syntax, that the DateTimeImmutable, DateTime, date_create(), date_create_immutable(), and strtotime() parser understands.

To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.

Used Symbols
Description | Format
--- | ---
`dayname` | 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
`daytext` | 'weekday' | 'weekdays'
`number` | [+-]?[0-9]+
`ordinal` | 'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'
`reltext` | 'next' | 'last' | 'previous' | 'this'
`space` | [ \t]+
`unit` | 'ms' | 'µs' | (( 'msec' | 'millisecond' | 'µsec' | 'microsecond' | 'usec' | 'sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' | 'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' | `daytext`

Day-based Notations
Format | Description | Examples
--- | --- | ---
'yesterday' | Midnight of yesterday | "yesterday 14:00"
'midnight' | The time is set to 00:00:00 |
'today' | The time is set to 00:00:00 |
'now' | Now - this is simply ignored |
'noon' | The time is set to 12:00:00 | "yesterday noon"
'tomorrow' | Midnight of tomorrow |
'back of' `hour` | 15 minutes past the specified hour | "back of 7pm", "back of 15"
'front of' `hour` | 15 minutes before the specified hour | "front of 5am", "front of 23"
'first day of' | Sets the day of the first of the current month. This phrase is usually best used together with a month name following it as it only effects the current month | "first day of January 2008"
'last day of' | Sets the day to the last day of the current month. This phrase is usually best used together with a month name following it as it only effects the current month | "last day of next month"
`ordinal` `space` `dayname` `space` 'of' | Calculates the `x`-th week day of the current month. | "first sat of July 2008"
'last' `space` `dayname` `space` 'of' | Calculates the last week day of the current month. | "last sat of July 2008"
`number` `space`? (`unit` | 'week') | Handles relative time items where the value is a number. | "+5 weeks", "12 day", "-7 weekdays"
(`ordinal` | `reltext`) `space` `unit` | Handles relative time items where the value is text. `last` and `previous` are equivalent to `-1`, `this` to nothing, and `next` to `+1`. | "fifth day", "second month", "last day", "previous year"
'ago' | Negates all the values of previously found relative time items. | "2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"
`dayname` | Moves to the next day of this name. (See note) | "Monday"
`reltext` `space` 'week' | Handles the special format "weekday + last/this/next week". | "Monday next week"

> Bilginize: Relative statements are always processed after non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent. Exceptions to this rule are: "yesterday", "midnight", "today", "noon" and "tomorrow". Note that "tomorrow 11:00" and "11:00 tomorrow" are different. Considering today's date of "July 23rd, 2008" the first one produces "2008-07-24 11:00" where as the second one produces "2008-07-24 00:00". The reason for this is that those five statements directly influence the current time. Keywords such as "first day of" depend on the context in which the relative format string is used. If used with a static method or function, the referent is the current system timestamp. However, if used in DateTime::modify() or DateTimeImmutable::modify(), the referent is the object on which the `modify()` method is called.

> Bilginize:

> Observe the following remarks when the current day-of-week is the same as the day-of-week used in the date/time string. The current day-of-week could have been (re-)calculated by non-relative parts of the date/time string however.

> 1. "`dayname`" does not advance to another day. (Example: "Wed July 23rd, 2008" means "2008-07-23").
> 2. "`number` `dayname`" does not advance to another day. (Example: "1 wednesday july 23rd, 2008" means "2008-07-23").
> 3. "`number` week `dayname`" will first add the number of weeks, but does not advance to another day. In this case "`number` week" and "`dayname`" are two distinct blocks. (Example: "+1 week wednesday july 23rd, 2008" means "2008-07-30").
> 4. "`ordinal` `dayname`" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").
> 5. "`number` week `ordinal` `dayname`" will first add the number of weeks, and then advances to another day. In this case "`number` week" and "`ordinal` `dayname`" are two distinct blocks. (Example: "+1 week first wednesday july 23rd, 2008" means "2008-08-06").
> 6. "`ordinal` `dayname` 'of' " does not advance to another day. (Example: "first wednesday of july 23rd, 2008" means "2008-07-02" because the specific phrase with 'of' resets the day-of-month to '1' and the '23rd' is ignored here).
> Also observe that the "of" in "`ordinal` `space` `dayname` `space` 'of' " and "'last' `space` `dayname` `space` 'of' " does something special.
> 1. It sets the day-of-month to 1.
> 2. "`ordinal` `dayname` 'of' " does not advance to another day. (Example: "first tuesday of july 2008" means "2008-07-01").
> 3. "`ordinal` `dayname` " does advance to another day. (Example: "first tuesday july 2008" means "2008-07-08", see also point 4 in the list above).
> 4. "'last' `dayname` 'of' " takes the last `dayname` of the current month. (Example: "last wed of july 2008" means "2008-07-30")
> 5. "'last' `dayname`" takes the last `dayname` from the current day. (Example: "last wed july 2008" means "2008-06-25"; "july 2008" first sets the current date to "2008-07-01" and then "last wed" moves to the previous Wednesday which is "2008-06-25").

> Bilginize: Relative month values are calculated based on the length of months that they pass through. An example would be "+2 month 2011-11-30", which would produce "2012-01-30". This is due to November being 30 days in length, and December being 31 days in length, producing a total of 61 days.

> Bilginize: `number` is an integer number; if a decimal number is given, the dot (or comma) is likely interpreted as delimiter. For instance, `'+1.5 hours'` is parsed like `'+1 5 hours'`, not as `'+1 hour +30 minutes'`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | `number` now again accepts a plus sign followed by a minus sign, e.g. `+-2`, and other combinations of multiple signs.
8.2.0 | `number` no longer accepts a plus sign followed by a minus sign, e.g. `+-2`.
7.0.8 | Weeks always start on monday. Formerly, sunday would also be considered to start a week.

# Desteklenen Zaman Dilimlerinin Listesi

## İçindekiler

- Afrika
- Amerika
- Antarktika
- Kuzey Kutup Dairesi
- Asya
- Atlantik
- Avustralya
- Avrupa
- Hint Denizi
- Pasifik
- Diğerleri

Burada, date_default_timezone_set() gibi işlevler tarafından kullanılmak üzere PHP tarafından desteklenen zaman dilimlerinin tamamı listelenmiştir.

Dikkat

Burada listelenmemiş zaman dilimlerinin davranışı tanımsızdır.

> Bilginize: Zaman dilimi veritabanının en son sürümü PECL'nin » timezonedb paketinden kurulabilir.

> Bilginize: Bu liste zaman dilimi veritabanının şu sürümüne dayanır: 2026.1.

## Afrika

Afrika
Africa/Abidjan | Africa/Accra | Africa/Addis_Ababa | Africa/Algiers
Africa/Asmara | Africa/Bamako | Africa/Bangui | Africa/Banjul
Africa/Bissau | Africa/Blantyre | Africa/Brazzaville | Africa/Bujumbura
Africa/Cairo | Africa/Casablanca | Africa/Ceuta | Africa/Conakry
Africa/Dakar | Africa/Dar_es_Salaam | Africa/Djibouti | Africa/Douala
Africa/El_Aaiun | Africa/Freetown | Africa/Gaborone | Africa/Harare
Africa/Johannesburg | Africa/Juba | Africa/Kampala | Africa/Khartoum
Africa/Kigali | Africa/Kinshasa | Africa/Lagos | Africa/Libreville
Africa/Lome | Africa/Luanda | Africa/Lubumbashi | Africa/Lusaka
Africa/Malabo | Africa/Maputo | Africa/Maseru | Africa/Mbabane
Africa/Mogadishu | Africa/Monrovia | Africa/Nairobi | Africa/Ndjamena
Africa/Niamey | Africa/Nouakchott | Africa/Ouagadougou | Africa/Porto-Novo
Africa/Sao_Tome | Africa/Tripoli | Africa/Tunis | Africa/Windhoek

## Amerika

Amerika
America/Adak | America/Anchorage | America/Anguilla | America/Antigua
America/Araguaina | America/Argentina/Buenos_Aires | America/Argentina/Catamarca | America/Argentina/Cordoba
America/Argentina/Jujuy | America/Argentina/La_Rioja | America/Argentina/Mendoza | America/Argentina/Rio_Gallegos
America/Argentina/Salta | America/Argentina/San_Juan | America/Argentina/San_Luis | America/Argentina/Tucuman
America/Argentina/Ushuaia | America/Aruba | America/Asuncion | America/Atikokan
America/Bahia | America/Bahia_Banderas | America/Barbados | America/Belem
America/Belize | America/Blanc-Sablon | America/Boa_Vista | America/Bogota
America/Boise | America/Cambridge_Bay | America/Campo_Grande | America/Cancun
America/Caracas | America/Cayenne | America/Cayman | America/Chicago
America/Chihuahua | America/Ciudad_Juarez | America/Costa_Rica | America/Coyhaique
America/Creston | America/Cuiaba | America/Curacao | America/Danmarkshavn
America/Dawson | America/Dawson_Creek | America/Denver | America/Detroit
America/Dominica | America/Edmonton | America/Eirunepe | America/El_Salvador
America/Fort_Nelson | America/Fortaleza | America/Glace_Bay | America/Goose_Bay
America/Grand_Turk | America/Grenada | America/Guadeloupe | America/Guatemala
America/Guayaquil | America/Guyana | America/Halifax | America/Havana
America/Hermosillo | America/Indiana/Indianapolis | America/Indiana/Knox | America/Indiana/Marengo
America/Indiana/Petersburg | America/Indiana/Tell_City | America/Indiana/Vevay | America/Indiana/Vincennes
America/Indiana/Winamac | America/Inuvik | America/Iqaluit | America/Jamaica
America/Juneau | America/Kentucky/Louisville | America/Kentucky/Monticello | America/Kralendijk
America/La_Paz | America/Lima | America/Los_Angeles | America/Lower_Princes
America/Maceio | America/Managua | America/Manaus | America/Marigot
America/Martinique | America/Matamoros | America/Mazatlan | America/Menominee
America/Merida | America/Metlakatla | America/Mexico_City | America/Miquelon
America/Moncton | America/Monterrey | America/Montevideo | America/Montserrat
America/Nassau | America/New_York | America/Nome | America/Noronha
America/North_Dakota/Beulah | America/North_Dakota/Center | America/North_Dakota/New_Salem | America/Nuuk
America/Ojinaga | America/Panama | America/Paramaribo | America/Phoenix
America/Port-au-Prince | America/Port_of_Spain | America/Porto_Velho | America/Puerto_Rico
America/Punta_Arenas | America/Rankin_Inlet | America/Recife | America/Regina
America/Resolute | America/Rio_Branco | America/Santarem | America/Santiago
America/Santo_Domingo | America/Sao_Paulo | America/Scoresbysund | America/Sitka
America/St_Barthelemy | America/St_Johns | America/St_Kitts | America/St_Lucia
America/St_Thomas | America/St_Vincent | America/Swift_Current | America/Tegucigalpa
America/Thule | America/Tijuana | America/Toronto | America/Tortola
America/Vancouver | America/Whitehorse | America/Winnipeg | America/Yakutat

## Antarktika

Antarktika
Antarctica/Casey | Antarctica/Davis | Antarctica/DumontDUrville | Antarctica/Macquarie
Antarctica/Mawson | Antarctica/McMurdo | Antarctica/Palmer | Antarctica/Rothera
Antarctica/Syowa | Antarctica/Troll | Antarctica/Vostok |

## Kuzey Kutup Dairesi

Kuzey Kutup Dairesi
Arctic/Longyearbyen

## Asya

Asya
Asia/Aden | Asia/Almaty | Asia/Amman | Asia/Anadyr
Asia/Aqtau | Asia/Aqtobe | Asia/Ashgabat | Asia/Atyrau
Asia/Baghdad | Asia/Bahrain | Asia/Baku | Asia/Bangkok
Asia/Barnaul | Asia/Beirut | Asia/Bishkek | Asia/Brunei
Asia/Chita | Asia/Colombo | Asia/Damascus | Asia/Dhaka
Asia/Dili | Asia/Dubai | Asia/Dushanbe | Asia/Famagusta
Asia/Gaza | Asia/Hebron | Asia/Ho_Chi_Minh | Asia/Hong_Kong
Asia/Hovd | Asia/Irkutsk | Asia/Jakarta | Asia/Jayapura
Asia/Jerusalem | Asia/Kabul | Asia/Kamchatka | Asia/Karachi
Asia/Kathmandu | Asia/Khandyga | Asia/Kolkata | Asia/Krasnoyarsk
Asia/Kuala_Lumpur | Asia/Kuching | Asia/Kuwait | Asia/Macau
Asia/Magadan | Asia/Makassar | Asia/Manila | Asia/Muscat
Asia/Nicosia | Asia/Novokuznetsk | Asia/Novosibirsk | Asia/Omsk
Asia/Oral | Asia/Phnom_Penh | Asia/Pontianak | Asia/Pyongyang
Asia/Qatar | Asia/Qostanay | Asia/Qyzylorda | Asia/Riyadh
Asia/Sakhalin | Asia/Samarkand | Asia/Seoul | Asia/Shanghai
Asia/Singapore | Asia/Srednekolymsk | Asia/Taipei | Asia/Tashkent
Asia/Tbilisi | Asia/Tehran | Asia/Thimphu | Asia/Tokyo
Asia/Tomsk | Asia/Ulaanbaatar | Asia/Urumqi | Asia/Ust-Nera
Asia/Vientiane | Asia/Vladivostok | Asia/Yakutsk | Asia/Yangon
Asia/Yekaterinburg | Asia/Yerevan |  |

## Atlantik

Atlantik
Atlantic/Azores | Atlantic/Bermuda | Atlantic/Canary | Atlantic/Cape_Verde
Atlantic/Faroe | Atlantic/Madeira | Atlantic/Reykjavik | Atlantic/South_Georgia
Atlantic/St_Helena | Atlantic/Stanley |  |

## Avustralya

Avustralya
Australia/Adelaide | Australia/Brisbane | Australia/Broken_Hill | Australia/Darwin
Australia/Eucla | Australia/Hobart | Australia/Lindeman | Australia/Lord_Howe
Australia/Melbourne | Australia/Perth | Australia/Sydney |

## Avrupa

Avrupa
Europe/Amsterdam | Europe/Andorra | Europe/Astrakhan | Europe/Athens
Europe/Belgrade | Europe/Berlin | Europe/Bratislava | Europe/Brussels
Europe/Bucharest | Europe/Budapest | Europe/Busingen | Europe/Chisinau
Europe/Copenhagen | Europe/Dublin | Europe/Gibraltar | Europe/Guernsey
Europe/Helsinki | Europe/Isle_of_Man | Europe/Istanbul | Europe/Jersey
Europe/Kaliningrad | Europe/Kirov | Europe/Kyiv | Europe/Lisbon
Europe/Ljubljana | Europe/London | Europe/Luxembourg | Europe/Madrid
Europe/Malta | Europe/Mariehamn | Europe/Minsk | Europe/Monaco
Europe/Moscow | Europe/Oslo | Europe/Paris | Europe/Podgorica
Europe/Prague | Europe/Riga | Europe/Rome | Europe/Samara
Europe/San_Marino | Europe/Sarajevo | Europe/Saratov | Europe/Simferopol
Europe/Skopje | Europe/Sofia | Europe/Stockholm | Europe/Tallinn
Europe/Tirane | Europe/Ulyanovsk | Europe/Vaduz | Europe/Vatican
Europe/Vienna | Europe/Vilnius | Europe/Volgograd | Europe/Warsaw
Europe/Zagreb | Europe/Zurich |  |

## Hint Denizi

Hint Denizi
Indian/Antananarivo | Indian/Chagos | Indian/Christmas | Indian/Cocos
Indian/Comoro | Indian/Kerguelen | Indian/Mahe | Indian/Maldives
Indian/Mauritius | Indian/Mayotte | Indian/Reunion |

## Pasifik

Pasifik
Pacific/Apia | Pacific/Auckland | Pacific/Bougainville | Pacific/Chatham
Pacific/Chuuk | Pacific/Easter | Pacific/Efate | Pacific/Fakaofo
Pacific/Fiji | Pacific/Funafuti | Pacific/Galapagos | Pacific/Gambier
Pacific/Guadalcanal | Pacific/Guam | Pacific/Honolulu | Pacific/Kanton
Pacific/Kiritimati | Pacific/Kosrae | Pacific/Kwajalein | Pacific/Majuro
Pacific/Marquesas | Pacific/Midway | Pacific/Nauru | Pacific/Niue
Pacific/Norfolk | Pacific/Noumea | Pacific/Pago_Pago | Pacific/Palau
Pacific/Pitcairn | Pacific/Pohnpei | Pacific/Port_Moresby | Pacific/Rarotonga
Pacific/Saipan | Pacific/Tahiti | Pacific/Tarawa | Pacific/Tongatapu
Pacific/Wake | Pacific/Wallis |  |

## Diğerleri

Uyarı

Lütfen burada listelenen zaman dilimlerini (UTC dışında) kullanmayın. Sadece geriye uyumluluk için varlar ve hatalı davranış gösterebilirler. Ayrıca, bu saat dilimlerinin IANA zaman dilimi veritabanından kaldırılma olasılığı da mevcuttur.

Uyarı

Yukarıdaki uyarı dikkate alınmazsa, yerine şu dikkate alınabilir: PHP'nin zaman dilimi desteğini sağlayan IANA zaman dilim veritabanı, ortak kullanımdan ayrılmış olarak `Etc/GMT+n` ve `Etc/GMT-n` sonuçlarını üreten POSIX tarzı kalıplar kullanır.

Örneğin Çin ve Batı Avustralya'da (ve bunların arasındaki yerlerde) kullanılan GMT'den 8 saat ileri zaman dilimi için bu veritabanı beklendiği gibi `Etc/GMT+8` değil `Etc/GMT-8` sonucunu verir.

Bir kere daha belirtelim: Bölgeniz için mutlaka doğru zaman dilimini kullanmanızı öneririz. Yukarıdaki örnek için `Asia/Shanghai` veya `Australia/Perth` gibi.

Diğerleri
Africa/Asmera | Africa/Timbuktu | America/Argentina/ComodRivadavia | America/Atka
America/Buenos_Aires | America/Catamarca | America/Coral_Harbour | America/Cordoba
America/Ensenada | America/Fort_Wayne | America/Godthab | America/Indianapolis
America/Jujuy | America/Knox_IN | America/Louisville | America/Mendoza
America/Montreal | America/Nipigon | America/Pangnirtung | America/Porto_Acre
America/Rainy_River | America/Rosario | America/Santa_Isabel | America/Shiprock
America/Thunder_Bay | America/Virgin | America/Yellowknife | Antarctica/South_Pole
Asia/Ashkhabad | Asia/Calcutta | Asia/Choibalsan | Asia/Chongqing
Asia/Chungking | Asia/Dacca | Asia/Harbin | Asia/Istanbul
Asia/Kashgar | Asia/Katmandu | Asia/Macao | Asia/Rangoon
Asia/Saigon | Asia/Tel_Aviv | Asia/Thimbu | Asia/Ujung_Pandang
Asia/Ulan_Bator | Atlantic/Faeroe | Atlantic/Jan_Mayen | Australia/ACT
Australia/Canberra | Australia/Currie | Australia/LHI | Australia/North
Australia/NSW | Australia/Queensland | Australia/South | Australia/Tasmania
Australia/Victoria | Australia/West | Australia/Yancowinna | Brazil/Acre
Brazil/DeNoronha | Brazil/East | Brazil/West | Canada/Atlantic
Canada/Central | Canada/Eastern | Canada/Mountain | Canada/Newfoundland
Canada/Pacific | Canada/Saskatchewan | Canada/Yukon | CET
Chile/Continental | Chile/EasterIsland | CST6CDT | Cuba
EET | Egypt | Eire | EST
EST5EDT | Etc/GMT | Etc/GMT+0 | Etc/GMT+1
Etc/GMT+10 | Etc/GMT+11 | Etc/GMT+12 | Etc/GMT+2
Etc/GMT+3 | Etc/GMT+4 | Etc/GMT+5 | Etc/GMT+6
Etc/GMT+7 | Etc/GMT+8 | Etc/GMT+9 | Etc/GMT-0
Etc/GMT-1 | Etc/GMT-10 | Etc/GMT-11 | Etc/GMT-12
Etc/GMT-13 | Etc/GMT-14 | Etc/GMT-2 | Etc/GMT-3
Etc/GMT-4 | Etc/GMT-5 | Etc/GMT-6 | Etc/GMT-7
Etc/GMT-8 | Etc/GMT-9 | Etc/GMT0 | Etc/Greenwich
Etc/UCT | Etc/Universal | Etc/UTC | Etc/Zulu
Europe/Belfast | Europe/Kiev | Europe/Nicosia | Europe/Tiraspol
Europe/Uzhgorod | Europe/Zaporozhye | Factory | GB
GB-Eire | GMT | GMT+0 | GMT-0
GMT0 | Greenwich | Hongkong | HST
Iceland | Iran | Israel | Jamaica
Japan | Kwajalein | Libya | MET
Mexico/BajaNorte | Mexico/BajaSur | Mexico/General | MST
MST7MDT | Navajo | NZ | NZ-CHAT
Pacific/Enderbury | Pacific/Johnston | Pacific/Ponape | Pacific/Samoa
Pacific/Truk | Pacific/Yap | Poland | Portugal
PRC | PST8PDT | ROC | ROK
Singapore | Turkey | UCT | Universal
US/Alaska | US/Aleutian | US/Arizona | US/Central
US/East-Indiana | US/Eastern | US/Hawaii | US/Indiana-Starke
US/Michigan | US/Mountain | US/Pacific | US/Samoa
UTC | W-SU | WET | Zulu

# The DateError class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when the timezone database is not found, or contains invalid data.

This error should never occur, and is not dependent on code. There are two child-exceptions (DateObjectError and DateRangeError) which are thrown depending on programmer error or range related issues.

## Sınıf Sözdizimi

class DateError extends Error {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

## Ayrıca Bakınız

- DateObjectError
- DateRangeError

# The DateObjectError class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when one of the Date/Time classes has not been correctly initialised.

Because Date/Time classes are not final, these classes can be inherit. When the parent constructor is not called, this error is thrown. This is always a programming error.

## Sınıf Sözdizimi

class DateObjectError extends DateError {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

## Ayrıca Bakınız

- DateError
- DateRangeError

# The DateRangeError class

(PHP 8 >= 8.3.0)

## Giriş

Thrown by DateTime::getTimestamp(), DateTimeImmutable::getTimestamp(), and date_timestamp_get(), on 32-bit platforms if the date object represents a date outside of the 32-bit signed range.

## Sınıf Sözdizimi

class DateRangeError extends DateError {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Error::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Error::getMessage(): string
final public function Error::getPrevious(): ?Throwable
final public function Error::getCode(): int
final public function Error::getFile(): string
final public function Error::getLine(): int
final public function Error::getTrace(): array
final public function Error::getTraceAsString(): string
public function Error::__toString(): string
private function Error::__clone(): void
}

## Ayrıca Bakınız

- DateError
- DateObjectError

# The DateException class

(PHP 8 >= 8.3.0)

## Giriş

Parent class of Date/Time exceptions, for issues that come to light due to user input, or free form text arguments that need to be parsed.

The following child exceptions are thrown by the extension:

- DateInvalidOperationException
- DateInvalidTimezoneException
- DateMalformedIntervalStringException
- DateMalformedPeriodStringException
- DateMalformedStringException

## Sınıf Sözdizimi

class DateException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The DateInvalidOperationException class

(PHP 8 >= 8.3.0)

## Giriş

Thrown by DateTimeImmutable::sub() and DateTime::sub() when an unsupported operation is attempted.

An example of such an unsupported operation is using a DateInterval object representing relative time specifications such as `next weekday`, as no logical reversed statement can be constructed.

## Sınıf Sözdizimi

class DateInvalidOperationException extends DateException {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The DateInvalidTimeZoneException class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when an incorrect value is passed to DateTimeZone::__construct().

## Sınıf Sözdizimi

class DateInvalidTimeZoneException extends DateException {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The DateMalformedIntervalStringException class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when an invalid `duration` argument is passed to DateInterval::__construct().

## Sınıf Sözdizimi

class DateMalformedIntervalStringException extends DateException {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The DateMalformedPeriodStringException class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when an invalid `isostr` argument is passed to DatePeriod::__construct().

## Sınıf Sözdizimi

class DateMalformedPeriodStringException extends DateException {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The DateMalformedStringException class

(PHP 8 >= 8.3.0)

## Giriş

Thrown when an invalid Date/Time string is detected.

This can be as value to DateTimeImmutable::__construct(), DateTimeImmutable::modify(), DateTime::__construct(), or DateTime::modify().

## Sınıf Sözdizimi

class DateMalformedStringException extends DateException {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
  - Date/Time Arithmetic
- DateTime — DateTime sınıfı
  - DateTime::add — Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
  - DateTime::__construct — Returns new DateTime object
  - DateTime::createFromFormat — Parses a time string according to a specified format
  - DateTime::createFromImmutable — Returns new DateTime instance encapsulating the given DateTimeImmutable object
  - DateTime::createFromInterface — Returns new DateTime object encapsulating the given DateTimeInterface object
  - DateTime::createFromTimestamp — Creates an instance from a Unix timestamp
  - DateTime::getLastErrors — Takma Adı: DateTimeImmutable::getLastErrors
  - DateTime::modify — Alters the timestamp
  - DateTime::__set_state — The __set_state handler
  - DateTime::setDate — Sets the date
  - DateTime::setISODate — Sets the ISO date
  - DateTime::setMicrosecond — Sets microsecond part of the time
  - DateTime::setTime — Sets the time
  - DateTime::setTimestamp — Sets the date and time based on an Unix timestamp
  - DateTime::setTimezone — Sets the time zone for the DateTime object
  - DateTime::sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
- DateTimeImmutable — DateTimeImmutable sınıfı
  - DateTimeImmutable::add — Returns a new object, with added amount of days, months, years, hours, minutes and seconds
  - DateTimeImmutable::__construct — Returns new DateTimeImmutable object
  - DateTimeImmutable::createFromFormat — Parses a time string according to a specified format
  - DateTimeImmutable::createFromInterface — Returns new DateTimeImmutable object encapsulating the given DateTimeInterface object
  - DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable instance encapsulating the given DateTime object
  - DateTimeImmutable::createFromTimestamp — Creates an instance from a Unix timestamp
  - DateTimeImmutable::getLastErrors — Returns the warnings and errors
  - DateTimeImmutable::modify — Creates a new object with modified timestamp
  - DateTimeImmutable::__set_state — The __set_state handler
  - DateTimeImmutable::setDate — Sets the date
  - DateTimeImmutable::setISODate — Sets the ISO date
  - DateTimeImmutable::setMicrosecond — Sets microsecond part of the time
  - DateTimeImmutable::setTime — Sets the time
  - DateTimeImmutable::setTimestamp — Sets the date and time based on a Unix timestamp
  - DateTimeImmutable::setTimezone — Sets the time zone
  - DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds
- DateTimeInterface — DateTimeInterface arayüzü
  - DateTimeInterface::diff — Returns the difference between two DateTime objects
  - DateTimeInterface::format — Returns date formatted according to given format
  - DateTimeInterface::getMicrosecond — Gets the microsecond part of the Unix timestamp
  - DateTimeInterface::getOffset — Returns the timezone offset
  - DateTimeInterface::getTimestamp — Gets the Unix timestamp
  - DateTimeInterface::getTimezone — Return time zone relative to given DateTime
  - DateTime::__serialize — Serialize a DateTime
  - DateTime::__unserialize — Unserialize an Datetime
  - DateTime::__wakeup — The __wakeup handler
- DateTimeZone — DateTimeZone sınıfı
  - DateTimeZone::__construct — Yeni bir DateTimeZone nesnesi oluşturur
  - DateTimeZone::getLocation — Zaman dilimi konum bilgisini döndürür
  - DateTimeZone::getName — Zaman diliminin adını döndürür
  - DateTimeZone::getOffset — Returns the timezone offset from GMT
  - DateTimeZone::getTransitions — Returns all transitions for the timezone
  - DateTimeZone::listAbbreviations — Returns associative array containing dst, offset and the timezone name
  - DateTimeZone::listIdentifiers — Returns a numerically indexed array containing all defined timezone identifiers
- DateInterval — DateInterval sınıfı
  - DateInterval::__construct — Yeni bir DateInterval nesnesi oluşturur
  - DateInterval::createFromDateString — Dizgenin göreli kısımlarından bir DateInterval nesnesi döndürür
  - DateInterval::format — Zaman aralığını biçimler
- DatePeriod — DatePeriod sınıfı
  - DatePeriod::__construct — Yeni bir DatePeriod nesnesi oluşturur
  - DatePeriod::createFromISO8601String — Creates a new DatePeriod object from an ISO8601 string
  - DatePeriod::getDateInterval — Gets the interval
  - DatePeriod::getEndDate — Gets the end date
  - DatePeriod::getRecurrences — Gets the number of recurrences
  - DatePeriod::getStartDate — Gets the start date
- Tarih ve Zaman İşlevleri
  - checkdate — Miladi tarihi doğrular
  - date — Unix zaman damgasını biçimlendirir
  - date_add — DateTime::add işlevinin takma adıdır
  - date_create — Yeni bir DateTime nesnesi oluşturur
  - date_create_from_format — DateTime::createFromFormat işlevinin takma adıdır
  - date_create_immutable — Yeni bir DateTimeImmutable nesnesi oluşturur
  - date_create_immutable_from_format — DateTimeImmutable::createFromFormat işlevinin takma adı
  - date_date_set — DateTime::setDate işlevinin takma adıdır
  - date_default_timezone_get — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini getirir
  - date_default_timezone_set — Betik içerisindeki tüm tarih/zaman işlevleri tarafından kullanılan öntanımlı zaman dilimini ayarlar
  - date_diff — DateTime::diff işlevinin takma adıdır
  - date_format — DateTime::format işlevinin takma adıdır
  - date_get_last_errors — DateTimeImmutable::getLastErrors işlevinin takma adıdır
  - date_interval_create_from_date_string — DateInterval::createFromDateString işlevinin takma adıdır
  - date_interval_format — DateInterval::format işlevinin takma adıdır
  - date_isodate_set — DateTime::setISODate işlevinin takma adıdır
  - date_modify — DateTime::modify işlevinin takma adıdır
  - date_offset_get — DateTime::getOffset işlevinin takma adıdır
  - date_parse — Verilen tarih/zaman hakkındaki ayrıntılı bilgiyi ilişkisel dizi olarak döndürür
  - date_parse_from_format — Belirtildiği gibi biçimlendirilmiş olarak tarih hakkında bilgi verir
  - date_sub — DateTime::sub işlevinin takma adıdır
  - date_sun_info — Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür
  - date_sunrise — Belirtilen gün ve konum için şafak zamanını döndürür
  - date_sunset — Verilen gün ve konum için günbatımı zamanını döndürür
  - date_time_set — DateTime::setTime işlevinin takma adıdır
  - date_timestamp_get — DateTime::getTimestamp işlevinin takma adıdır
  - date_timestamp_set — DateTime::setTimestamp işlevinin takma adıdır
  - date_timezone_get — DateTime::getTimezone işlevinin takma adıdır
  - date_timezone_set — DateTime::setTimezone işlevinin takma adıdır
  - getdate — Tarih/zaman bilgisi getirir
  - gettimeofday — Geçerli zamanı getirir
  - gmdate — Bir tarih/saati GMT/UTC tarih/saati olarak biçemler
  - gmmktime — Bir GMT tarihi için Unix zaman damgasını döndürür
  - gmstrftime — Yerel ayarlara göre tarih ve saati, UTC türüne çevirir
  - idate — Yerel zaman/tarih kısmını tamsayı olarak biçimlendirir
  - localtime — Yerel zamanı getirir
  - microtime — Geçerli Unix zaman damgasını mikrosaniye olarak döndürür
  - mktime — Bir tarih için Unix zaman damgasını döndürür
  - strftime — Format a local time/date according to locale settings
  - strptime — strftime işleviyle üretilen zaman ve tarihleri çözümler
  - strtotime — Parse about any English textual datetime description into a Unix timestamp
  - time — Geçerli Unix zaman damgasını döndürür
  - timezone_abbreviations_list — DateTimeZone::listAbbreviations işlevinin takma adıdır
  - timezone_identifiers_list — DateTimeZone::listIdentifiers işlevinin takma adıdır
  - timezone_location_get — DateTimeZone::getLocation işlevinin takma adıdır
  - timezone_name_from_abbr — Kısaltmasından ve UTC farkından tahminen zaman diliminin adını döndürür
  - timezone_name_get — DateTimeZone::getName işlevinin takma adıdır
  - timezone_offset_get — DateTimeZone::getOffset işlevinin takma adıdır
  - timezone_open — DateTimeZone::__construct için takma ad
  - timezone_transitions_get — DateTimeZone::getTransitions işlevinin takma adıdır
  - timezone_version_get — timezonedb sürümünü döndürür
- Tarih/Saat Hataları ve İstisnaları
- Supported Date and Time Formats
- Desteklenen Zaman Dilimlerinin Listesi
  - Afrika
  - Amerika
  - Antarktika
  - Kuzey Kutup Dairesi
  - Asya
  - Atlantik
  - Avustralya
  - Avrupa
  - Hint Denizi
  - Pasifik
  - Diğerleri
- DateError — The DateError class
- DateObjectError — The DateObjectError class
- DateRangeError — The DateRangeError class
- DateException — The DateException class
- DateInvalidOperationException — The DateInvalidOperationException class
- DateInvalidTimeZoneException — The DateInvalidTimeZoneException class
- DateMalformedIntervalStringException — The DateMalformedIntervalStringException class
- DateMalformedPeriodStringException — The DateMalformedPeriodStringException class
- DateMalformedStringException — The DateMalformedStringException class

# Yüksek çözünürlüklü zaman ölçümü

# Giriş

HRTime eklentisi yüksek çözünürlüklü bir StopWatch sınıfı gerçekler. Farklı platformlarda mümkün olan en iyi API'leri kullanarak çözünürlüğü nanosaniye mertebesine çıkarır. Ayrıca, temel API'lerin sağladığı düşük seviyeli tick'leri kullanarak özel bir kronometre gerçeklemeye de olanak tanır.

> Bilginize: PHP 7.3.0 itibariyle, ilgili hrtime() işlevi çekirdeğin bir parçasıdır.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/hrtime.

# Örnekler

## İçindekiler

- Basic usage

## Basic usage

The example illustrates the basic StopWatch class usage

Örnek 1 Measure several code blocks execution and get the total

    <?php

    $c = new HRTime\StopWatch;

    $c->start();
    /* measure this code block execution */
    for ($i = 0; $i < 1024*1024; $i++);
    $c->stop();
    $elapsed0 = $c->getLastElapsedTime(HRTime\Unit::NANOSECOND);

    /* measurement is not running here*/
    for ($i = 0; $i < 1024*1024; $i++);

    $c->start();
    /* measure this code block execution */
    for ($i = 0; $i < 1024*1024; $i++);
    $c->stop();
    $elapsed1 = $c->getLastElapsedTime(HRTime\Unit::NANOSECOND);

    $elapsed_total = $c->getElapsedTime(HRTime\Unit::NANOSECOND);

    ?>

# The HRTime\PerformanceCounter class

(PECL hrtime >= 0.4.3)

## Giriş

## Sınıf Sözdizimi

class HRTime\PerformanceCounter {
/* Yöntemler */
public static function getFrequency(): int
public static function getTicks(): int
public static function getTicksSince(int `$start`): int
}

# HRTime\PerformanceCounter::getFrequency

(PECL hrtime >= 0.4.3)

HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second

### Açıklama

public static function HRTime\PerformanceCounter::getFrequency(): int

Returns the timer frequency in ticks per second. This value is constant after the system start on almost any operating system.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns int indicating the timer frequency.

# HRTime\PerformanceCounter::getTicks

(PECL hrtime >= 0.6.0)

HRTime\PerformanceCounter::getTicks — Current ticks from the system

### Açıklama

public static function HRTime\PerformanceCounter::getTicks(): int

Returns the ticks count.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns int indicating the ticks count.

# HRTime\PerformanceCounter::getTicksSince

(PECL hrtime >= 0.6.0)

HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value

### Açıklama

public static function HRTime\PerformanceCounter::getTicksSince(int `$start`): int

Returns the ticks count elapsed since the given start value.

### Bağımsız Değişkenler

`start`
  Starting ticks value.

### Dönen Değerler

Returns int indicating the ticks count.

## İçindekiler

- HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second
- HRTime\PerformanceCounter::getTicks — Current ticks from the system
- HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value

# The HRTime\StopWatch class

(PECL hrtime >= 0.4.3)

## Giriş

## Sınıf Sözdizimi

class HRTime\StopWatch extends HRTime\PerformanceCounter {
/* Yöntemler */
public function getElapsedTicks(): int
public function getElapsedTime(int `$unit` = ?): float
public function getLastElapsedTicks(): int
public function getLastElapsedTime(int `$unit` = ?): float
public function isRunning(): bool
public function start(): void
public function stop(): void
/* Miras alınan yöntemler */
public static function HRTime\PerformanceCounter::getFrequency(): int
public static function HRTime\PerformanceCounter::getTicks(): int
public static function HRTime\PerformanceCounter::getTicksSince(int `$start`): int
}

# HRTime\StopWatch::getElapsedTicks

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals

### Açıklama

public function HRTime\StopWatch::getElapsedTicks(): int

Get elapsed ticks for all the previously closed intervals.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns int indicating elapsed ticks.

# HRTime\StopWatch::getElapsedTime

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals

### Açıklama

public function HRTime\StopWatch::getElapsedTime(int `$unit` = ?): float

Get elapsed time for all the previously closed intervals.

### Bağımsız Değişkenler

`unit`
  Time unit represented by a HRTime\Unit constant. Default is HRTime\Unit::SECOND.

### Dönen Değerler

Returns float indicating elapsed time.

# HRTime\StopWatch::getLastElapsedTicks

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval

### Açıklama

public function HRTime\StopWatch::getLastElapsedTicks(): int

Get elapsed ticks for the previously closed interval.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns int indicating elapsed ticks.

# HRTime\StopWatch::getLastElapsedTime

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval

### Açıklama

public function HRTime\StopWatch::getLastElapsedTime(int `$unit` = ?): float

Get elapsed time for the previously closed interval.

### Bağımsız Değişkenler

`unit`
  Time unit represented by a HRTime\Unit constant. Default is HRTime\Unit::SECOND.

### Dönen Değerler

Returns float indicating elapsed time.

# HRTime\StopWatch::isRunning

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::isRunning — Whether the measurement is running

### Açıklama

public function HRTime\StopWatch::isRunning(): bool

Reveals whether the measurement was started.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns bool indicating whether the measurement is running.

# HRTime\StopWatch::start

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::start — Start time measurement

### Açıklama

public function HRTime\StopWatch::start(): void

Starts the time measurement. It has no effect if the measurement was already started. The measurement will be continued if it was previously stopped.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns void.

# HRTime\StopWatch::stop

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::stop — Stop time measurement

### Açıklama

public function HRTime\StopWatch::stop(): void

Stop the time measurement for the previously started interval.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns void.

## İçindekiler

- HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals
- HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals
- HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval
- HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval
- HRTime\StopWatch::isRunning — Whether the measurement is running
- HRTime\StopWatch::start — Start time measurement
- HRTime\StopWatch::stop — Stop time measurement

# The HRTime\Unit class

(PECL hrtime >= 0.4.3)

## Giriş

## Sınıf Sözdizimi

class HRTime\Unit {
/* Sabitler */
const int SECOND = 0;
const int MILLISECOND = 1;
const int MICROSECOND = 2;
const int NANOSECOND = 3;
/* Yöntemler */
}

## Öntanımlı Sabitler

`HRTime\Unit::SECOND`
`HRTime\Unit::MILLISECOND`
`HRTime\Unit::MICROSECOND`
`HRTime\Unit::NANOSECOND`

- Yapılandırma/Kurulum
  - Kurulum
- Örnekler
  - Basic usage
- HRTime\PerformanceCounter — The HRTime\PerformanceCounter class
  - HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second
  - HRTime\PerformanceCounter::getTicks — Current ticks from the system
  - HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value
- HRTime\StopWatch — The HRTime\StopWatch class
  - HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals
  - HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals
  - HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval
  - HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval
  - HRTime\StopWatch::isRunning — Whether the measurement is running
  - HRTime\StopWatch::start — Start time measurement
  - HRTime\StopWatch::stop — Stop time measurement
- HRTime\Unit — The HRTime\Unit class

- Calendar — Takvim
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Takvim İşlevleri
- Date/Time — Tarih ve Zaman
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - DateTime — DateTime sınıfı
  - DateTimeImmutable — DateTimeImmutable sınıfı
  - DateTimeInterface — DateTimeInterface arayüzü
  - DateTimeZone — DateTimeZone sınıfı
  - DateInterval — DateInterval sınıfı
  - DatePeriod — DatePeriod sınıfı
  - Tarih ve Zaman İşlevleri
  - Tarih/Saat Hataları ve İstisnaları
  - Supported Date and Time Formats
  - Desteklenen Zaman Dilimlerinin Listesi
  - DateError — The DateError class
  - DateObjectError — The DateObjectError class
  - DateRangeError — The DateRangeError class
  - DateException — The DateException class
  - DateInvalidOperationException — The DateInvalidOperationException class
  - DateInvalidTimeZoneException — The DateInvalidTimeZoneException class
  - DateMalformedIntervalStringException — The DateMalformedIntervalStringException class
  - DateMalformedPeriodStringException — The DateMalformedPeriodStringException class
  - DateMalformedStringException — The DateMalformedStringException class
- HRTime — Yüksek çözünürlüklü zaman ölçümü
  - Yapılandırma/Kurulum
  - Örnekler
  - HRTime\PerformanceCounter — The HRTime\PerformanceCounter class
  - HRTime\StopWatch — The HRTime\StopWatch class
  - HRTime\Unit — The HRTime\Unit class

# Dosya Sistemiyle İlgili Eklentiler

# Doğrudan G/Ç

# Giriş

PHP, C dilinin akım G/Ç işlevlerinden (fopen(), fread(),..) daha düşük seviyeli doğrudan G/Ç işlevlerini POSIX standardında açıklandığı gibi destekler. Doğrudan G/Ç işlevleri sadece bir aygıta doğrudan erişim gerekli olduğunda kullanılmalıdır. Diğer tüm durumlarda standart Dosya Sistemi işlevleri fazlasıyla yeterlidir.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/dio.

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir.

## Özkaynak Türleri

Bu eklenti tarafından tanımlanan tek özkaynak türü, dio_open() işlevinden dönen dosya tanıtıcıdır.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`F_DUPFD` (int)

`F_GETFD` (int)

`F_GETFL` (int)

`F_GETLK` (int)

`F_GETOWN` (int)

`F_RDLCK` (int)

`F_SETFL` (int)

`F_SETLK` (int)

`F_SETLKW` (int)

`F_SETOWN` (int)

`F_UNLCK` (int)

`F_WRLCK` (int)

`O_APPEND` (int)

`O_ASYNC` (int)

`O_CREAT` (int)

`O_EXCL` (int)

`O_NDELAY` (int)

`O_NOCTTY` (int)

`O_NONBLOCK` (int)

`O_RDONLY` (int)

`O_RDWR` (int)

`O_SYNC` (int)

`O_TRUNC` (int)

`O_WRONLY` (int)

`S_IRGRP` (int)

`S_IROTH` (int)

`S_IRUSR` (int)

`S_IRWXG` (int)

`S_IRWXO` (int)

`S_IRWXU` (int)

`S_IWGRP` (int)

`S_IWOTH` (int)

`S_IWUSR` (int)

`S_IXGRP` (int)

`S_IXOTH` (int)

`S_IXUSR` (int)

# Doğrudan G/Ç İşlevleri

# dio_close

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_close — Belirtilen dosya tanıtıcısını kapatır

### Açıklama

function dio_close(resource `$dt`): void

dio_close() işlevi, `dt` ile belirtilen dosya tanıtıcısını kapatır.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - Açık bir dosya tanıtıcısının kapatılması

    <?php
    $fd = dio_open('/dev/ttyS0', O_RDWR);

    dio_close($fd);
    ?>

### Ayrıca Bakınız

- dio_open() - Belirtilen dosyayı açar ve bu dosya için bir dosya tanıtıcısı döndürür

# dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_fcntl — Belirtilen dosya tanıtıcısı üzerinde komut çalıştırır

### Açıklama

function dio_fcntl(resource `$dt`, int `$komut`, mixed `$bağımsız_değişkenler` = ?): mixed

dio_fcntl() işlevi, `dt` dosya tanıtıcısı üzerinde `komut` ile belirtilen işlemi yapar. Bazı komutların gerektirdiği ek bağımsız değişkenler `bağımsız_değişkenler` bağımsız değişkeninde belirtilebilir.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`komut`

  Aşağıdaki işlemlerden biri belirtilebilir:

  - `F_SETLK` - Dosya kilidi tanımlar veya siler. Kilit başka bir süreç tarafından tutulmuşsa işlev -1 ile döner.

  - `F_SETLKW` - `F_SETLK` gibidir, farklı olarak, kilit başka bir süreç tarafından tutulmuşsa kilit serbest kalıncaya kadar bekler.

  - `F_GETLK` - Birileri kilidin tutulmasını engelliyorsa dio_fcntl() işlevi (aşağıda açıklandığı gibi) bir ilişkisel dizi ile döner. Hiçbir engelleme anahtarı yoksa "tür" olarak `F_UNLCK` atanır.

  - `F_DUPFD` - `bağımsız_değişkenler` değerine eşit veya büyük dosya tanıtıcılarından en küçük numaralısını bulur ve bunu döndürür.

  - `F_SETFL` - Dosya tanıtıcılarının seçeneklerini `bağımsız_değişkenler` ile belirtilen değere ayarlar; bunlar, `O_APPEND`, `O_NONBLOCK` veya `O_ASYNC` olabilir. `O_ASYNC` kullanmak için PCNTL eklentisini kullanmanız gerekir.

`bağımsız_değişkenler`

  `bağımsız_değişkenler` bir ilişkisel dizi olup, `komut` olarak `F_SETLK` veya `F_SETLLW` belirtildiğinde aşağıdaki anahtarlar belirtilebilir:

  - `start` - kilidin başlangıç konumu

  - `length` - kilitli alanın boyu; sıfır, dosyanın sonuna kadar demektir.

  - `whence` - l_start'ın göreli olduğu yer: `SEEK_SET`, `SEEK_END` ve `SEEK_CUR` olabilir.

  - `type` - kilit türü: `F_RDLCK` (okuma kilidi), `F_WRLCK` (yazma kilidi) veya `F_UNLCK` (kilidi aç) olabilir.

### Dönen Değerler

C çağrısının sonucu ile döner.

### Örnekler

Örnek 1 - Bir kilidin atanması ve silinmesi

    <?php

    $fd = dio_open('/dev/ttyS0', O_RDWR);

    if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
       // dosya tanıtıcısı kilitli görünüyor
       echo "Kilit kaldırılamadı. Başka bir süreç tarafından tutuluyor.";
    } else {
       echo "Kilit başarıyla atandı/silindi";
    }

    dio_close($fd);
    ?>

### Notlar

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

# dio_open

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_open — Belirtilen dosyayı açar ve bu dosya için bir dosya tanıtıcısı döndürür

### Açıklama

function dio_open(string `$dosyaismi`, int `$seçenekler`, int `$kip` = 0): resource

dio_open() işlevi, C kütüphanesinin girdi/çıktı akımlarıyla ilgili işlevlerinde kullanılmak üzere belirtilen dosyayı düşük seviyede açar (gerekirse oluşturur) ve bu dosya için bir dosya tanıtıcısı döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Açılacak dosyanın yolu.

`seçenekler`

  Aşağıdaki seçeneklerin bir birleşimi (bit seviyesinde VEYAlanmışı) olarak belirtilebilir. Bu değer, aşağıdaki diğer seçeneklere ek olarak `O_RDONLY`, `O_WRONLY`veya `O_RDWR` sabitlerinden birini mutlaka içermelidir.

  - `O_RDONLY` - Dosyayı okuma erişimli açar.

  - `O_WRONLY` - Dosyayı yazma erişimli açar.

  - `O_RDWR` -Dosyayı hem okuma hem de yazma erişimli açar.

  - `O_CREAT` - mevcut değilse dosyayı oluşturur.

  - `O_EXCL` - dosya mevcutsa ve `O_CREAT` ile `O_EXCL` birlikte belirtilmişse dosya mevcut demektir, bu durumda işlev başarısız olur.

  - `O_TRUNC` - dosya mevcutsa ve dosya yazmak için açılmışsa dosya içeriği sıfırlanır (dosya boyutu sıfır bayt olur).

  - `O_APPEND` - veri daima dosyanın sonuna yazılır.

  - `O_NONBLOCK` - engellenmeyen kip geçerli olur.

  - `O_NOCTTY` - Bir TTY aygıt dosyası açılırken işletim sisteminin açılmış dosyayı sürecin denetim uçbirimi olarak atamasını önler.

`kip`

  `seçenekler` bağımsız değişkenine `O_CREAT` atanmışsa dosya kipi (oluşturma izinleri) `kip` bağımsız değişkeninde belirtildiği gibi ayarlanır. `seçenekler` bağımsız değişkenine `O_CREAT` belirtilmişse `kip` doğru işlem için gereklidir, yoksa yok sayılır.

  Oluşturulacak dosyaya atanacak asıl izinler, normal olarak sürecin umask değerinden etkilenir.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde dosya tanıtıcısı döner.

### Örnekler

Örnek 1 - Bir dosya tanıtıcısının açılması

    <?php

    $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

    dio_close($fd);
    ?>

### Ayrıca Bakınız

- dio_close() - Belirtilen dosya tanıtıcısını kapatır

# dio_read

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_read — Bir dosya tanıtıcısından baytları okur

### Açıklama

function dio_read(resource `$dt`, int `$uzunluk` = 1024): string

dio_read() işlevi, `dt` dosya tanıtıcısını okur ve `uzunluk` baytını döndürür.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`uzunluk`

  Okunacak baytların sayısı. Belirtilmezse, dio_read() işlevi veriyi 1K'lık bloklar halinde okur.

### Dönen Değerler

`dt`'den okunan baytlarla döner.

### Ayrıca Bakınız

- dio_write() - Veriyi (uzunluğunu isteğe bağlı olarak kırparak) dosya tanıtıcısına yazar

# dio_seek

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_seek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır

### Açıklama

function dio_seek(resource `$dt`, int `$nereye`, int `$nereden` = SEEK_SET): int

dio_seek() işlevi, belirtilen dosya tanıtıcısında dosya konumunu değiştirmek için kullanılır.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`nereye`

  Yeni konum.

`nereden`

  Mevcut konumun nasıl yorumlanacağı belirtilir:

  - `SEEK_SET` (öntanımlı) - `nereye` konumunun dosya başlangıcına göre belirtildiği varsayılır.

  - `SEEK_CUR` - `nereye` konumunun mevcut dosya konumuna göre bayt sayısı olarak belirtildiği varsayılır. Bu miktar pozitif veya negatif olabilir.

  - `SEEK_END` - `nereye` konumunun dosya sonuna göre belirtildiği varsayılır. Pozitif bir değer dosya sonundan önceki bayt sayısı olarak, negatif bir değer ise dosya sonundan sonraki bayt sayısı olarak yorumlanır. Dosya sonundan sonraki konumlara ulaşmak için bu bölgenin sıfır baytları ile doldurulması gerekir. Asıl veri ancak bundan sonra yazılır.

### Dönen Değerler

### Örnekler

Örnek 1 - Bir dosyada belli bir konuma gitmek

    <?php

    $fd = dio_open('/dev/ttyS0', O_RDWR);

    dio_seek($fd, 10, SEEK_SET);
    // Dosyanın başından itibaren 10. karakterdeyiz

    dio_seek($fd, -2, SEEK_CUR);
    // Şimdi dosyanın başından itibaren 8. karakterdeyiz

    dio_seek($fd, -5, SEEK_END);
    // Dosyanın sonundan itibaren başa doğru 5. karakterdeyiz

    dio_seek($fd, 10, SEEK_END);
    // Dosyanın sonundan itibaren 10. karakterdeyiz. Yeni dosya sonuna
    // ulaşmak için eski dosya sonundan itibaren 10 tane sıfır baytı yazılır.

    dio_close($fd);
    ?>

# dio_stat

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_stat — Belirtilen dosya tanıtıcısı hakkında durum bilgisi döndürür

### Açıklama

function dio_stat(resource `$dt`): array

dio_stat() işlevi, belirtilen dosya tanıtıcısı hakkında bilgi döndürür.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

### Dönen Değerler

Aşağıdaki anahtarları içeren bir dizi ile döner:

- "device" - aygıt

- "inode" - dosya düğümü

- "mode" - kip

- "nlink" - sabit bağların sayısı

- "uid" - kullanıcı kimliği

- "gid" - grup kimliği

- "device_type" - aygıt türü (bir dosya düğümü aygıtıysa)

- "size" - bayt cinsinden toplam boyut

- "blocksize" - blok boyu

- "blocks" - ayrılmış blok sayısı

- "atime" - son erişim zamanı

- "mtime" - son değişiklik zamanı

- "ctime" - son değişim zamanı

Hata oluşursa dio_stat() işlevi `null` döndürür.

# dio_tcsetattr

(PHP 4 >= 4.3.0, PHP 5 < 5.1.0)

dio_tcsetattr — Bir seri portun veri hızını ve uçbirim özniteliklerini tanımlar

### Açıklama

function dio_tcsetattr(resource `$dt`, array `$seçenekler`): bool

dio_tcsetattr() işleve açık bir `fd`'nin veri hızını ve uçbirim özniteliklerini ayarlar.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`seçenekler`

  Olası seçenekler:

  - 'baud' - saniyede bit bayısı olarak veri hızı - 38400,19200,9600,4800,2400,1800,1200,600,300,200,150,134,110,75 veya 50 olabilir; 9600 öntanımlıdır.

  - 'bits' - veri bitleri - 8,7,6 veya 5 olabilir; 8 öntanımlıdır.

  - 'stop' - durdurma bitleri - 1 veya 2 olabilir; 1 öntanımlıdır.

  - 'parity' - eşik bitleri- 0,1 veya 2 olabilir; 0 öntanımlıdır.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - Bir seri portun hızının ayarlanması

    <?php

    $fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

    dio_fcntl($fd, F_SETFL, O_SYNC);

    dio_tcsetattr($fd, array(
      'baud' => 9600,
      'bits' => 8,
      'stop'  => 1,
      'parity' => 0
    ));

    while (1) {

      $data = dio_read($fd, 256);

      if ($data) {
          echo $data;
      }
    }

    ?>

### Notlar

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

# dio_truncate

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_truncate — Dosya tanıtıcısındaki bayt sayısını sınırlar

### Açıklama

function dio_truncate(resource `$dt`, int `$uzunluk`): bool

dio_truncate() işlevi, bir dosyanın içeriğini `uzunluk` baytla sınırlar.

Dosya belirtilen uzunluktan uzunsa fazlalık kaybedilir. Kısaysa ya dosya boyu değişmeden kalır ya da boş kısımlar sıfır baytları olarak okunur.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`uzunluk`

  Bayt cinsinden kırpma uzunluğu.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

# dio_write

(PHP 4 >= 4.2.0, PHP 5 < 5.1.0)

dio_write — Veriyi (uzunluğunu isteğe bağlı olarak kırparak) dosya tanıtıcısına yazar

### Açıklama

function dio_write(resource `$dt`, string `$veri`, int `$uzunluk` = 0): int

dio_write() işlevi `veri`'nin `uzunluk` bayta kadarlık bölümünü `dt` dosya tanıtıcısına yazar.

### Bağımsız Değişkenler

`dt`

  dio_open() işlevinden dönmüş bir dosya tanıtıcısı.

`veri`

  Yazılacak veri.

`uzunluk`

  Bayt cinsinden, yazılacak verinin uzunluğu. Belirtilmezse, verinin tamamı dosya tanıtıcısına yazılır.

### Dönen Değerler

`dt` dosya tanıtıcısına yazılan baytların sayısı.

### Ayrıca Bakınız

- dio_read() - Bir dosya tanıtıcısından baytları okur

## İçindekiler

- dio_close — Belirtilen dosya tanıtıcısını kapatır
- dio_fcntl — Belirtilen dosya tanıtıcısı üzerinde komut çalıştırır
- dio_open — Belirtilen dosyayı açar ve bu dosya için bir dosya tanıtıcısı döndürür
- dio_read — Bir dosya tanıtıcısından baytları okur
- dio_seek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
- dio_stat — Belirtilen dosya tanıtıcısı hakkında durum bilgisi döndürür
- dio_tcsetattr — Bir seri portun veri hızını ve uçbirim özniteliklerini tanımlar
- dio_truncate — Dosya tanıtıcısındaki bayt sayısını sınırlar
- dio_write — Veriyi (uzunluğunu isteğe bağlı olarak kırparak) dosya tanıtıcısına yazar

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Doğrudan G/Ç İşlevleri
  - dio_close — Belirtilen dosya tanıtıcısını kapatır
  - dio_fcntl — Belirtilen dosya tanıtıcısı üzerinde komut çalıştırır
  - dio_open — Belirtilen dosyayı açar ve bu dosya için bir dosya tanıtıcısı döndürür
  - dio_read — Bir dosya tanıtıcısından baytları okur
  - dio_seek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
  - dio_stat — Belirtilen dosya tanıtıcısı hakkında durum bilgisi döndürür
  - dio_tcsetattr — Bir seri portun veri hızını ve uçbirim özniteliklerini tanımlar
  - dio_truncate — Dosya tanıtıcısındaki bayt sayısını sınırlar
  - dio_write — Veriyi (uzunluğunu isteğe bağlı olarak kırparak) dosya tanıtıcısına yazar

# Dizinler

# Öntanımlı Sabitler

`DIRECTORY_SEPARATOR` (string)
`PATH_SEPARATOR` (string)
  Windows'ta noktalı virgül, diğerlerinde iki nokta karakteridir.
`SCANDIR_SORT_ASCENDING` (int)
`SCANDIR_SORT_DESCENDING` (int)
`SCANDIR_SORT_NONE` (int)

# Directory sınıfı

(PHP 4, PHP 5, PHP 7, PHP 8)

## Giriş

Directory sınıfı örnekleri new işleci ile değil dir() işlevi çağrılarak oluşturulur.

## Sınıf Sözdizimi

class Directory {
/* Özellikler */
public readonly string $yol;
public readonly resource $tutmaç;
/* Yöntemler */
public function close(): void
public function read(): string|false
public function rewind(): void
}

## Özellikler

yol

  Açılan dizin.

tutmaç

  readdir(), rewinddir() ve closedir() gibi diğer dizin işlevleri ie kullanılabilir.

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | path ve handle özellikleri artık salt-okunur.

# Directory::close

(PHP 4, PHP 5, PHP 7, PHP 8)

Directory::close — Dizin tanıtıcısını kapatır

### Açıklama

public function Directory::close(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bağımsız değişken kabul edilmiyor. Evvelce bir dizin tanıtıcısı kabul edilirdi.

# Directory::read

(PHP 4, PHP 5, PHP 7, PHP 8)

Directory::read — Dizin tanıtıcısından girdi okur

### Açıklama

public function Directory::read(): string|false

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bağımsız değişken kabul edilmiyor. Evvelce bir dizin tanıtıcısı kabul edilirdi.

# Directory::rewind

(PHP 4, PHP 5, PHP 7, PHP 8)

Directory::rewind — Dizin tanıtıcısını başa sarar

### Açıklama

public function Directory::rewind(): void

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bağımsız değişken kabul edilmiyor. Evvelce bir dizin tanıtıcısı kabul edilirdi.

## İçindekiler

- Directory::close — Dizin tanıtıcısını kapatır
- Directory::read — Dizin tanıtıcısından girdi okur
- Directory::rewind — Dizin tanıtıcısını başa sarar

# Dizin İşlevleri

# Ayrıca Bakınız

dirname(), is_dir(), mkdir() ve rmdir() gibi dosya sistemiyle ilgili işlevler için Dosya Sistemi bölümüne bakınız.

# chdir

(PHP 4, PHP 5, PHP 7, PHP 8)

chdir — Dizin değiştirir

### Açıklama

function chdir(string `$dizin`): bool

PHP'nin geçerli dizinden belirtilen `dizin`'e geçmesini sağlar.

### Bağımsız Değişkenler

`dizin`

  Yeni geçerli dizin.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlaık durumunda `E_WARNING` seviyesinde bir hata çıktılar.

### Örnekler

Örnek 1 - chdir() örneği

    <?php

    // geçerli dizin
    echo getcwd() . "\n";

    // değiştirelim
    chdir('public_html');

    // geçerli dizin
    echo getcwd() . "\n";

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/nilgun
    /home/nilgun/public_html

### Notlar

Dikkat

PHP yorumlayıcısı ZTS (Zend Thread Safety) etkin kılınarak derlenmişse, geçerli dizinde chdir() ile yapılan değişiklikler işletim sistemine görünmez olacaktır. Yerleşik PHP işlevlerinin tamamı bu değişikliklere uygun davranacak fakat FFI kullanarak çağrılan harici kütüphane işlevleri bu değişiklikleri yok sayacaktır. PHP kopyanızın ZTS etkin kılınarak derlenip derlenmediğini php -i komutunu veya yerleşik `PHP_ZTS` sabitini kullanarak anlayabilirsiniz.

### Ayrıca Bakınız

- getcwd() - Geçerli çalışma dizinini döndürür

# chroot

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

chroot — Kök dizini değiştirir

### Açıklama

function chroot(string `$dizin`): bool

Geçerli sürecin kök dizinini `dizin`, geçerli çalışma dizinini "/" yapar.

Bu işlev sadece GNU ve BSD sistemlerinde ve sadece CLI, CGI veya gömülü SAPI kullanıyorsanız kullanılabilir. Ayrıca, bu işlevin kullanılabilmesi için sürecin root yetkileriyle çalışması gerekir.

Bu işlevin kullanımı `__DIR__` ve `__FILE__` sihirli sabitlerinin değerlerini değiştirmez.

### Bağımsız Değişkenler

`dizin`

  Kök dizin haline getirilecek dizin.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - chroot() örneği

    <?php
    chroot("/burası/kök/dizin/olacak/");
    echo getcwd();
    ?>

Yukarıdaki örneğin çıktısı:

    /

### Notlar

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

> Bilginize: Bu işlev ZTS (Zend Thread Safety) etkinken derlenmiş PHP yorumlayıcılarda kullanılamaz. PHP'nin ZTS etkinken derlenip derlenmediğini öğrenmek için php -i komutu kullanılabilir veya yerleşik `PHP_ZTS` sabiti ile bu sınanabilir.

# closedir

(PHP 4, PHP 5, PHP 7, PHP 8)

closedir — Dizin tanıtıcısını kapatır

### Açıklama

function closedir(): void

`dizin_tanıtıcısı` ile belirtilen dizin akımını kapatır. Akımın evvelce opendir() tarafından açılmış olması gerekir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Artık bağımsız değişken kabul edilmiyor. Evvelce bir dizin tanıtıcısı kabul edilirdi.

### Örnekler

Örnek 1 - closedir() örneği

    <?php
    $dizin = "/etc/apache2/";

    // Dizin aç ve içeriğin oku
    if (is_dir($dizin)) {
        if ($dit = opendir($dizin)) {
            while (($dosya = readdir($dit)) !== false) {
              echo "dosya adı: $dosya - dosya türü: " .
                ((filetype($dizin . $dosya) === "dir") ? "dizin" : "dosya") . "\n";
            }
            closedir();
        }
    }
    ?>

# dir

(PHP 4, PHP 5, PHP 7, PHP 8)

dir — Directory sınıfının örneğini döndürür

### Açıklama

function dir(string `$dizin`, ?resource `$bağlam` = `null`): Directory|false

Bir dizini okumak için yarı nesne yönelimli bir mekanizma. Belirtilen `dizin` açılır.

### Bağımsız Değişkenler

`dizin`

  Açılacak dizin.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Normalde Directory örneği döner, hata oluşursa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `bağlam` artık `null` olabiliyor.

### Örnekler

Örnek 1 - dir() örneği

Aşağıdaki örnekte Directory::read()'in dönüş değerine bakılma şekline dikkat edilmelidir. Dönüş değerinin `false` ile aynı olup olmadığına (eşitlik ve aynılık hakkında daha fazla bilgi için Karşılaştırma İşleçlerine bakın) bakılmaktadır, çünkü bu yapılmazsa adı `false` olarak değerlendirilen herhangi bir dizin girdisi döngüyü durdurur.

    <?php
    $d = dir("/etc/php5");
    echo "Tanıtıcı: " . $d->handle . "\n";
    echo "Dizin: " . $d->path . "\n";
    while (false !== ($entry = $d->read())) {
       echo $entry."\n";
    }
    $d->close();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Tanıtıcı: Resource id #2
    Dizin: /etc/php5
    .
    ..
    apache
    cgi
    cli

### Notlar

> Bilginize:

> Okuma yönteminden dönen dizin girdilerinin sıralaması sisteme bağlıdır.

# getcwd

(PHP 4, PHP 5, PHP 7, PHP 8)

getcwd — Geçerli çalışma dizinini döndürür

### Açıklama

function getcwd(): string|false

Geçerli çalışma dizinini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarılı olursa geçerli çalışma dizinini, aksi takdirde `false` döndürür.

Bazı Unix türevlerinde, üst dizinlere erişim izni yoksa getcwd() işlevi `false` döndürür. Erişim izinleri ve kipler hakkında daha ayrıntılı bilgi için chmod() işlevine bakınız.

### Notlar

Dikkat

PHP yorumlayıcısı ZTS (Zend Güvenilir Evreleri) etkinken derlenmişse, getcwd() tarafından döndürülen geçerli çalışma dizini, işletim sistemi arayüzleri tarafından döndürülen dizinden farklı olabilir. Geçerli çalışma dizinine bağımlı olan harici kütüphaneler (FFI aracılığıyla çağrılan) bundan etkilenecektir.

### Örnekler

Örnek 1 - getcwd() örneği

    <?php

    // geçerli dizin
    echo getcwd() . "\n";

    // dizin değiştirelim
    chdir('cvs');

    // geçerli dizin
    echo getcwd() . "\n";

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /home/nilgun
    /home/nilgun/cvs

### Ayrıca Bakınız

- chdir() - Dizin değiştirir
- chmod() - Dosya kipini değiştirir

# opendir

(PHP 4, PHP 5, PHP 7, PHP 8)

opendir — Belirtilen dizin için bir tanıtıcı döndürür

### Açıklama

function opendir(string `$dizin`, ?resource `$bağlam` = `null`): resource|false

closedir(), readdir() ve rewinddir() çağrılarında kullanılmak üzere bir dizin tanıtıcısı ile döner.

### Bağımsız Değişkenler

`dizin`

  Açılacak dizinin yolu.

`bağlam`

  `bağlam` bağımsız değişkeninin açıklaması için akımlar bölümüne bakınız.

### Dönen Değerler

Başarılı olduğunda dizin tanıtıcısı, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

`dizin` geçerli bir dizin değilse, dizin yetki yetersizliğinden ya da dosya sistemi hatalarından dolayı açılamıyorsa, bu olur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `bağlam` artık `null` olabiliyor.

### Örnekler

Örnek 1 - opendir() örneği

    <?php
    $dizin = "/etc/apache2/";

    // Dizin aç ve içeriğin oku
    if (is_dir($dizin)) {
        if ($dit = opendir($dizin)) {
            while (($dosya = readdir($dit)) !== false) {
              echo "dosya adı: $dosya - dosya türü: " .
                ((filetype($dizin . $dosya) === "dir") ? "dizin" : "dosya") . "\n";
            }
            closedir();
        }
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    dosya adı: httpd.conf - dosya türü: dosya
    dosya adı: mods-enabled - dosya türü: dizin
    dosya adı: sites-enabled - dosya türü: dizin
    dosya adı: .. - dosya türü: dizin
    dosya adı: apache2.conf - dosya türü: dosya
    dosya adı: sites-available - dosya türü: dizin
    dosya adı: envvars - dosya türü: dosya
    dosya adı: ports.conf - dosya türü: dosya
    dosya adı: mods-available - dosya türü: dizin
    dosya adı: conf.d - dosya türü: dizin
    dosya adı: . - dosya türü: dizin

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- readdir() - Dizinden bir girdinin ismini okur
- dir() - Directory sınıfının örneğini döndürür

# readdir

(PHP 4, PHP 5, PHP 7, PHP 8)

readdir — Dizinden bir girdinin ismini okur

### Açıklama

function readdir(?resource `$dizin_tanıtıcısı` = `null`): string|false

Dizindeki sonraki girdinin ismi ile döner. Girdiler dosya sisteminde saklandıkları sıra ile döndürülür.

### Bağımsız Değişkenler

`dizin_tanıtıcısı`

  opendir() işlevinden dönmüş bir dizin tanıtıcısı. Belirtilmezse opendir() tarafından açılan son dizin kullanılır.

### Dönen Değerler

Başarılı olduğunda dosya ismi ile, başarısızlık durumunda `false` döner..

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dizin_tanıtıcısı` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Bir dizin içeriğinin listelenmesi

Aşağıdaki örnekte dönen değerin mantıksal `false` olup olmadığına (bak: Karşılaştırma İşleçleri) özellikle bakılmakta oluşuna dikkat ediniz. Eğer dizgesel olarak baksaydık ismi mantıksal `false` olarak değerlendirilebilecek bir dosya (örneğin "0") döngünün durmasına yol açardı.

    <?php
    if ($dizin = opendir('/bir/dizin/dosyalar')) {
        echo "Dizin tanıtıcısı: $dizin\n";
        echo "Dizin içeriği:\n";

        /* Dizin içeriğini taramak için doğru yöntem. */
        while (false !== ($girdi = readdir($dizin))) {
            echo "$girdi\n";
        }

        /* Dizin içeriğini taramak için YANLIŞ yöntem. */
        while ($girdi = readdir($dizin)) {
            echo "$girdi\n";
        }

        closedir();
    }
    ?>

Örnek 2 - `.` ve `..` girdileri ayıklanarak dizin içeriğinin listelenmesi

    <?php
    if ($dizin = opendir('.')) {
        while (false !== ($girdi = readdir($dizin))) {
            if ($girdi != "." && $girdi != "..") {
                echo "$girdi\n";
            }
        }
        closedir($dizin);
    }
    ?>

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- glob() - Bir kalıpla eşleşen dosya yollarını bulur
- opendir() - Belirtilen dizin için bir tanıtıcı döndürür
- scandir() - Belirtilen dizindeki alt dizinleri ve dosyaları listeler

# rewinddir

(PHP 4, PHP 5, PHP 7, PHP 8)

rewinddir — Dizin tanıtıcısını dizin başlangıcına konumlar

### Açıklama

function rewinddir(?resource `$dizin_tanıtıcıcı` = `null`): void

`dizin_tanıtıcısı` ile belirtilen dizin akımında konumu dizinin başlangıcına taşır.

### Bağımsız Değişkenler

`dizin_tanıtıcıcı`

  opendir() işlevinden dönmüş bir dizin tanıtıcısı. Belirtilmezse opendir() tarafından açılan son dizin kullanılır.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dizin_tanıtıcısı` artık `null` olabiliyor.

# scandir

(PHP 5, PHP 7, PHP 8)

scandir — Belirtilen dizindeki alt dizinleri ve dosyaları listeler

### Açıklama

function scandir(string `$dizin`, int `$sıralama_türü` = `SCANDIR_SORT_ASCENDING`, ?resource `$bağlam` = `null`): array|false

Belirtilen `dizin` içindeki dosya ve dizinleri içeren dizi ile döner.

### Bağımsız Değişkenler

`dizin`

  İçeriği taranacak dizin.

`sıralama_türü`

  Abecesel olarak küçükten büyüğe sıralama öntanımlıdır. Bu bağımsız değişkene `SCANDIR_SORT_DESCENDING` atarsanız sıralama büyükten küçüğe doğru yapılır. `SCANDIR_SORT_NONE` atanırsa sonuç sıralanmaz.

`bağlam`

  `bağlam` bağımsız değişkeninin açıklaması için akımlar bölümüne bakınız.

### Dönen Değerler

Başarılı olduğunda dosya ve dizin isimlerini içeren bir dizi ile aksi takdirde `false` değeriyle döner. Eğer belirtilen `dizin` bir dizin değilse `false` döner ve `E_WARNING` seviyesinde bir hata üretilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `bağlam` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Basit bir scandir() örneği

    <?php
    $dir    = '/tmp';
    $files1 = scandir($dir);
    $files2 = scandir($dir, SCANDIR_SORT_DESCENDING);

    print_r($files1);
    print_r($files2);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => .
        [1] => ..
        [2] => bar.php
        [3] => foo.txt
        [4] => somedir
    )
    Array
    (
        [0] => somedir
        [1] => foo.txt
        [2] => bar.php
        [3] => ..
        [4] => .
    )

### Notlar

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Ayrıca Bakınız

- opendir() - Belirtilen dizin için bir tanıtıcı döndürür
- readdir() - Dizinden bir girdinin ismini okur
- glob() - Bir kalıpla eşleşen dosya yollarını bulur
- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- sort() - Bir diziyi küçükten büyüğe doğru sıralar

## İçindekiler

- chdir — Dizin değiştirir
- chroot — Kök dizini değiştirir
- closedir — Dizin tanıtıcısını kapatır
- dir — Directory sınıfının örneğini döndürür
- getcwd — Geçerli çalışma dizinini döndürür
- opendir — Belirtilen dizin için bir tanıtıcı döndürür
- readdir — Dizinden bir girdinin ismini okur
- rewinddir — Dizin tanıtıcısını dizin başlangıcına konumlar
- scandir — Belirtilen dizindeki alt dizinleri ve dosyaları listeler

- Öntanımlı Sabitler
- Directory — Directory sınıfı
  - Directory::close — Dizin tanıtıcısını kapatır
  - Directory::read — Dizin tanıtıcısından girdi okur
  - Directory::rewind — Dizin tanıtıcısını başa sarar
- Dizin İşlevleri
  - chdir — Dizin değiştirir
  - chroot — Kök dizini değiştirir
  - closedir — Dizin tanıtıcısını kapatır
  - dir — Directory sınıfının örneğini döndürür
  - getcwd — Geçerli çalışma dizinini döndürür
  - opendir — Belirtilen dizin için bir tanıtıcı döndürür
  - readdir — Dizinden bir girdinin ismini okur
  - rewinddir — Dizin tanıtıcısını dizin başlangıcına konumlar
  - scandir — Belirtilen dizindeki alt dizinleri ve dosyaları listeler

# Dosya Bilgileri

# Giriş

Bu modüldeki işlevler, dosya içinde belli bir konumda bulunan sihirli baytlara bakarak dosyanın içerik türünü ve kodlamasını tahmin etmeye çalışır. Çok güçlü bir yaklaşım olmasa da kullanılan ampirik yöntem oldukça iyi iş çıkarmaktadır.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Özkaynak Türleri

## Kurulum

Bu eklenti öntanımlı olarak etkindir.

Windows kullanıcıları bu eklentiyi etkin kılmak için PHP paketinde gelen php_fileinfo.dll DLL dosyasını php.ini içine dahil etmelidir.

Libmagic kütüphanesi PHP ile gelir, fakat PHP'ye özgü değişiklikler içerir. A patch against libmagic named libmagic.patch adında bir libmagic yaması mevcut olup PHP fileinfo eklentileri kaynak dizininde bulunabilir.

## Özkaynak Türleri

PHP 8.1.0 öncesinde, Fileinfo eklentisinde kullanılan tek bir özkaynak vardı: finfo_open() işlevi tarafından döndürülen sihirli bir veritabanı tanıtıcısı.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`FILEINFO_NONE` (int)
  Özel bir işlem yok.
`FILEINFO_SYMLINK` (int)
  Sembolik bağlar izlenir.
`FILEINFO_MIME_TYPE` (int)
  MIME türü döndürülür.
`FILEINFO_MIME_ENCODING` (int)
  Dosyanın MIME kodlaması döndürülür.
`FILEINFO_MIME` (int)
  RFC 2045'te açıklandığı gibi, bir MIME türü ve bir MIME kodlaması döndürülür.
`FILEINFO_COMPRESS` (int)
  Sıkıştırılmış dosyaların sıkıştırmasını açar. Güvenlik kaygılarıyla kaldırılmıştır.
`FILEINFO_DEVICES` (int)
  Karakter veya blok aygıtlarının içeriğine bakılır.
`FILEINFO_CONTINUE` (int)
  Sadece ilki değil, tüm eşleşenler döndürülür.
`FILEINFO_PRESERVE_ATIME` (int)
  Mümkünse özgün erişim zamanı korunur.
`FILEINFO_RAW` (int)
  Basılamayan karakterler, `\ooo` biçiminde sekizlik gösterime dönüştürülmez.
`FILEINFO_EXTENSION` (int)
  Dosya içeriğinden belirlenen MIME türü ile alakalı dosya uzantısını döndürür. `JPEG` görüntüleri gibi çok sayıda dosya uzantısına sahip içerikler için `"jpeg/jpg/jpe/jfif"` şeklinde bölü çizgileri ile ayrılmış olarak tüm dosya uzantıları döndürülür. magic.mime veritabanında bulunmayan içerik türleri için daima `"???"` dizgesi döner. PHP 7.2.0 ve sonrasında mevcuttur.
`FILEINFO_APPLE` (int)
  Apple kurucusunu ve türünü döndürür.

# Fileinfo İşlevleri

# finfo_buffer

# finfo::buffer

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_buffer -- finfo::buffer — Bir dizge tamponu hakkında bilgi döndürür

### Açıklama

Yordamsal kullanım

function finfo_buffer(
finfo `$finfo`,
string `$string`,
int `$flags` = `FILEINFO_NONE`,
?resource `$context` = `null`
): string|false

Nesne yönelimli kullanım

public function finfo::buffer(string `$string`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false

Bu işlev bir dizge içindeki ikil veri hakkında bilgi edinmek için kullanılır.

### Bağımsız Değişkenler

`finfo`

  finfo_open() işlevinden dönen finfo nesnesi.

`string`
  İçeriği incelenecek dizge.
`flags`
  Fileinfo sabitlerinden biri veya bir kaçının birleşimi.
`context`
  Akımlar hakkında bilgi edinmek için Akım İşlevleri bölümüne bakınız.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde belirtilen dizgenin içeriği hakkında açıklama dizgesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `finfo` bağımsız değişkeni artık finfo nesnesi kabul ediyor, evvelce bir finfo özkaynağı kabul ederdi.
8.0.0 | `context` artık `null` olabiliyor.

### Örnekler

Örnek 1 - finfo_buffer() örneği

    <?php
    $finfo = new finfo(FILEINFO_MIME);
    echo $finfo->buffer($_POST["betik"]) . "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    application/x-sh; charset=us-ascii

### Ayrıca Bakınız

- finfo_file() - Bir dosya hakkında bilgi döndürür

# finfo_close

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_close — Fileinfo özkaynağını kapatır

Uyarı

This function has been DEPRECATED as of PHP 8.5.0. Relying on this function is highly discouraged.

### Açıklama

#[\Deprecated]
function finfo_close(finfo `$finfo`): bool

Bu işlev, finfo_open() tarafından açılmış nesneyi yokeder.

### Bağımsız Değişkenler

`finfo`

  finfo_open() işlevinden dönen finfo nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `finfo` bağımsız değişkeni artık finfo nesnesi kabul ediyor, evvelce bir finfo özkaynağı kabul ederdi.

# finfo_file

# finfo::file

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_file -- finfo::file — Bir dosya hakkında bilgi döndürür

### Açıklama

Yordamsal kullanım

function finfo_file(
finfo `$finfo`,
string `$filename`,
int `$flags` = `FILEINFO_NONE`,
?resource `$context` = `null`
): string|false

Nesne yönelimli kullanım

public function finfo::file(string `$filename`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false

Bu işlev bir dosya hakkında bilgi edinmek için kullanılır.

### Bağımsız Değişkenler

`finfo`

  finfo_open() işlevinden dönen finfo nesnesi.

`filename`
  Hakkında bilgi istenen dosya.
`flags`
  Fileinfo sabitlerinden biri veya bir kaçının birleşimi.
`context`
  Akımlar hakkında bilgi edinmek için Akım İşlevleri bölümüne bakınız.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde belirtilen dosyanın içeriği hakkında açıklama dizgesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `finfo` bağımsız değişkeni artık finfo nesnesi kabul ediyor, evvelce bir finfo özkaynağı kabul ederdi.
8.0.0 | `context` artık `null` olabiliyor.

### Örnekler

Örnek 1 - finfo_file() örneği

    <?php
    // Bir açıklama değil MIME türü dönsün
    $finfo = finfo_open(FILEINFO_MIME_TYPE);

    foreach (glob("*") as $dosya) {
        echo finfo_file($finfo, $dosya) . "\n";
    }

    finfo_close($finfo);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    text/html
    image/gif
    application/vnd.ms-excel

### Ayrıca Bakınız

- finfo_buffer() - Bir dizge tamponu hakkında bilgi döndürür

# finfo_open

# finfo->__construct

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_open -- finfo->__construct — Yeni bir fileinfo özkaynağı oluşturur

### Açıklama

Yordamsal kullanım

function finfo_open(int `$flags` = `FILEINFO_NONE`, ?string `$magic_database` = `null`): finfo|false

Nesne yönelimli kullanım (kurucu):

public function finfo::__construct(int `$flags` = `FILEINFO_NONE`, ?string `$magic_database` = `null`)

Bu işlev sihirli bir veritabanı açar ve onu bir nesne olarak döndürür.

### Bağımsız Değişkenler

`flags`
  Fileinfo sabitlerinden biri veya bir kaçının birleşimi.
`magic_database`
  Sihir veritabanının dosya ismi genellikle /bir/yol/magic.mime şeklindedir. Belirtilmezse `MAGIC` ortam değişkeninin değeri kullanılır. Bu değişken de atanmamışsa PHP paketinde gelen sihir veritabanı kullanılır. `null` veya boş bir dizge atanması öntanımlı değerin kullanımına eşdeğer olacaktır.

### Dönen Değerler

(Sadece yordamsal kullanımda) Başarı durumunda finfo nesnesi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık finfo nesnesi dönüyor; evvelce finfo özkaynağı dönerdi.
8.0.3 | `magic_database` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Nesne yönelimli kullanım örneği

    <?php
    // Bir açıklama değil MIME türü dönsün
    $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");

    /* Bir dosyanın MIME türünü öğrenelim */
    $dosya = "/usr/local/birdosya.txt";
    echo $finfo->file($dosya);
    ?>

Örnek 2 - Yordamsal kullanım örneği

    <?php
    // Bir açıklama değil MIME türü dönsün
    $finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic");

    if (!$finfo) {
        echo "Fileinfo veritabanı açılamadı";
        exit();
    }

    /* Bir dosyanın MIME türünü öğrenelim */
    $dosya = "/usr/local/something.txt";
    echo finfo_file($finfo, $dosya);

    /* Bağlantıyı kapatalım */
    finfo_close($finfo);
    ?>

Yukarıdaki örneğin çıktısı:

    text/plain; charset=us-ascii

### Notlar

> Bilginize: Genellikle, (`magic_database` belirtmeyerek ve `MAGIC` ortam değişkenini atanmayarak) PHP paketinde gelen sihir veritabanını kullanmak, özellikle özel bir sihir veritabanına ihtiyaç olmadıkça en iyi seçim olacaktır.

### Ayrıca Bakınız

- finfo_close() - Fileinfo özkaynağını kapatır

# finfo_set_flags

# finfo::set_flags

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_set_flags -- finfo::set_flags — Libmagic yapılandırma seçeneklerini ayarlar

### Açıklama

Yordamsal kullanım

function finfo_set_flags(finfo `$finfo`, int `$flags`): true

Nesne yönelimli kullanım

public function finfo::set_flags(int `$flags`): true

Bu işlevle çeşitli Fileinfo seçenekleri ayarlanır. Bu seçenekler ayrıca, finfo_open() veya diğer Fileinfo işlevleriyle de doğrudan ayarlanabilir.

### Bağımsız Değişkenler

`finfo`

  finfo_open() işlevinden dönen finfo nesnesi.

`flags`
  Fileinfo sabitlerinden biri veya bir kaçının birleşimi.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `finfo` bağımsız değişkeni artık finfo nesnesi kabul ediyor, evvelce bir finfo özkaynağı kabul ederdi.

# mime_content_type

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mime_content_type — Bir dosya için MIME içerik türünü saptar

### Açıklama

function mime_content_type(resource|string `$dosya`): string|false

magic.mime dosyasındaki bilgiyi kullanarak belirtilen dosyanın MIME içerik türünü döndürür.

### Bağımsız Değişkenler

`dosya`
  İçerik türü istenen dosyanın yolu.

### Dönen Değerler

İçerik türünü, `text/plain` veya `application/octet-stream` gibi bir MIME biçemi olarak döndürür, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - mime_content_type() örneği

    <?php
    echo mime_content_type('php.gif') . "\n";
    echo mime_content_type('test.php');
    ?>

Yukarıdaki örneğin çıktısı:

    image/gif
    text/plain

### Ayrıca Bakınız

- finfo_file() - Bir dosya hakkında bilgi döndürür
- finfo_buffer() - Bir dizge tamponu hakkında bilgi döndürür

## İçindekiler

- finfo_buffer — Bir dizge tamponu hakkında bilgi döndürür
- finfo_close — Fileinfo özkaynağını kapatır
- finfo_file — Bir dosya hakkında bilgi döndürür
- finfo_open — Yeni bir fileinfo özkaynağı oluşturur
- finfo_set_flags — Libmagic yapılandırma seçeneklerini ayarlar
- mime_content_type — Bir dosya için MIME içerik türünü saptar

# finfo sınıfı

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

## Giriş

Bu sınıf, fileinfo işlevlerine nesne yönelimli bir arayüz sağlar.

## Sınıf Sözdizimi

class finfo {
/* Yöntemler */
public function __construct(int `$flags` = `FILEINFO_NONE`, ?string `$magic_database` = `null`)
public function buffer(string `$string`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false
public function file(string `$filename`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false
public function set_flags(int `$flags`): true
}

# finfo::buffer

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo::buffer — finfo_buffer() işlevinin takma adıdır

### Açıklama

public function finfo::buffer(string `$string`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false

finfo_buffer() işlevinin takma adıdır.

# finfo::__construct

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo::__construct — finfo_open() işlevinin takma adıdır

### Açıklama

public function finfo::__construct(int `$flags` = `FILEINFO_NONE`, ?string `$magic_database` = `null`)

finfo_open() işlevinin takma adıdır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.3 | `magic_database` artık `null` olabiliyor.

# finfo::file

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo::file — finfo_file() işlevinin takma adıdır

### Açıklama

public function finfo::file(string `$filename`, int `$flags` = `FILEINFO_NONE`, ?resource `$context` = `null`): string|false

finfo_file() işlevinin takma adıdır.

# finfo::set_flags

(PHP >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo::set_flags — finfo_set_flags() işlevinin takma adıdır

### Açıklama

public function finfo::set_flags(int `$flags`): true

finfo_set_flags() işlevinin takma adıdır.

## İçindekiler

- finfo::buffer — finfo_buffer() işlevinin takma adıdır
- finfo::__construct — finfo_open işlevinin takma adıdır
- finfo::file — finfo_file() işlevinin takma adıdır
- finfo::set_flags — finfo_set_flags() işlevinin takma adıdır

- Yapılandırma/Kurulum
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Fileinfo İşlevleri
  - finfo_buffer — Bir dizge tamponu hakkında bilgi döndürür
  - finfo_close — Fileinfo özkaynağını kapatır
  - finfo_file — Bir dosya hakkında bilgi döndürür
  - finfo_open — Yeni bir fileinfo özkaynağı oluşturur
  - finfo_set_flags — Libmagic yapılandırma seçeneklerini ayarlar
  - mime_content_type — Bir dosya için MIME içerik türünü saptar
- finfo — finfo sınıfı
  - finfo::buffer — finfo_buffer() işlevinin takma adıdır
  - finfo::__construct — finfo_open işlevinin takma adıdır
  - finfo::file — finfo_file() işlevinin takma adıdır
  - finfo::set_flags — finfo_set_flags() işlevinin takma adıdır

# Dosya Sistemi

# Giriş

Bu eklentiyi derlemek için hiçbir ek kütüphaneye gerek yoktur fakat PHP'nin Linux'ta büyük dosyaları (>2GB) desteklemesini istiyorsanız glibc'nin son sürümüne sahip olmanız ve PHP'yi `-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64` seçenekleriyle derlemelisiniz.

# Yapılandırma/Kurulum

## İçindekiler

- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Dosya sistemi ve akımlar ile ilgili yapılandırma seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
allow_url_fopen | "1" | `INI_SYSTEM` |
allow_url_include | "0" | `INI_SYSTEM` | PHP 7.4.0 ve sonrasında kullanımı önerilmiyor.
user_agent | NULL | `INI_ALL` |
default_socket_timeout | "60" | `INI_ALL` |
from | "" | `INI_ALL` |
auto_detect_line_endings | "0" | `INI_ALL` | PHP 8.1.0 itibariyle kullanımı önerilmiyor.
sys_temp_dir | "" | `INI_SYSTEM` |

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`allow_url_fopen` bool

  Bu seçenek, dosyalar gibi URL nesnelerine erişimi mümkün kılan fopen URL sarmalayıcılarını etkinleştirir. HTTP ve FTP protokollerini kullanarak uzak dosyalara erişmek için öntanımlı sarmalayıcılar mevcuttur. zlib gibi bazı eklentilerle ek sarmalayıcılar devreye sokulabilir.

`allow_url_include` bool

  Bu yönerge, fopen URL sarmalayıcılarını şu işlevlerde kullanabilmeyi mümkün kılar: include, include_once, require ve require_once.

  > Bilginize:

  > Bu yönerge allow_url_fopen yönergesinin 'On' olmasını gerektirir.

`user_agent` string

  PHP için gönderilecek kullanıcı aracısını tanımlar.

`default_socket_timeout` int

  Soketlere dayalı akımlar için öntanımlı zaman aşımı (saniye cinsinden). Negatif değer belirtilirse zaman aşımı sonsuz olur.

`from` string

  Kimliği doğrulanmamış FTP bağlantılarında ve sırasıyla ftp ve http sarmalayıcıları kullanılırken HTTP bağlantıları için From başlığının değeri olarak kullanılacak e-posta adresi.

`auto_detect_line_endings` bool

  'On' atandığı takdirde, PHP hangi tür satırsonu karakteri (Unix, MS-DOS veya Macintosh) kullanıldığını saptamak için fgets() ve file() işlevlerinde veriyi inceler.

  PHP'nin Mac sistemleriyle birlikte çalışabilirliğini sağlar ama öntanımlı değeri Off'tur, çünkü ilk satıra bakarak satırsonu kuralını belirlemeye çalışmak çok az da olsa başarımı düşürücü etki yapar ve ayrıca Unix sistemlerinde öğe ayracı olarak satırbaşı karakteri kullananlar açısından geriye doğru uyumluluğu ortadan kaldırır.

`sys_temp_dir` string

## Özkaynak Türleri

Dosya sistemi özkaynak olarak akımları kullanır.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`SEEK_SET` (int)
`SEEK_CUR` (int)
`SEEK_END` (int)
`LOCK_SH` (int)
`LOCK_EX` (int)
`LOCK_UN` (int)
`LOCK_NB` (int)

`GLOB_BRACE` (int)
  {a,b,c} kalıbını 'a', 'b', veya 'c' ile eşleşecek şekilde genişletir.

  > Bilginize: `GLOB_BRACE` Solaris, Alpine Linux gibi bazı GNU sistemlerinde kullanılamaz.

`GLOB_ERR` (int)
  Okuma hatalarında işlemi durdurur (okunamayan dizinler gibi); öntanımlı olarak hatalar yoksayılır.
`GLOB_ONLYDIR` (int)
  Sadece kalıpla eşleşen dizinleri döndürür.
`GLOB_MARK` (int)
  Dönen her dizine bir bölü çizgisi ekler (Windows üzerinde ters bölü çizgisi ekler).
`GLOB_NOSORT` (int)
  Dosyaları dizinde göründükleri sırayla döndürür (sıralamaz). Bu seçenek kullanılmadığında dosya yolları abecesel sıralanır.
`GLOB_NOCHECK` (int)
  Hiçbir eşleşme bulunamazsa arama kalıbını döndürür.
`GLOB_NOESCAPE` (int)
  Tersbölüler denetim karakterlerini öncelemez.
`GLOB_AVAILABLE_FLAGS` (int)
  Tüm `GLOB_*` seçenekleri VEYAlanamaz. Bunlar `0`'a eşdeğerdir: `GLOB_BRACE` | `GLOB_MARK` | `GLOB_NOSORT` | `GLOB_NOCHECK` | `GLOB_NOESCAPE` | `GLOB_ERR` | `GLOB_ONLYDIR`

Sabitler | Açıklama
--- | ---
`PATHINFO_ALL` (int) | Tüm dosya yolları ilişkisel bir dizi olarak döner.
`PATHINFO_DIRNAME` (int) | Dizin veya dosyanın yolu.
`PATHINFO_BASENAME` (int) | Dizin adı veya dosya adı ve uzantısı.
`PATHINFO_EXTENSION` (int) | Dosya uzantısı.
`PATHINFO_FILENAME` (int) | Uzantısız dosya veya dizin adı.
`FILE_USE_INCLUDE_PATH` (int) | `dosyaismi` include_path içinde aranır.
`FILE_NO_DEFAULT_CONTEXT` (int) |
`FILE_APPEND` (int) | İçerik mevcut dosyanın sonuna eklenir.
`FILE_IGNORE_NEW_LINES` (int) | Satırsonu karakterlerini yoksayar.
`FILE_SKIP_EMPTY_LINES` (int) | Boş satırları atlar.
`FILE_BINARY` (int) | İkil kip Bilginize: Bu sabitin bir etkisi yoktur. Sadece `ileriye uyumluluk` adına mevcuttur.
`FILE_TEXT` (int) | Metin kipi. Bilginize: Bu sabitin bir etkisi yoktur. Sadece `ileriye uyumluluk` adına mevcuttur.
`INI_SCANNER_NORMAL` (int) | Normal INI tarayıcı kipi.
`INI_SCANNER_RAW` (int) | Ham INI tarayıcı kipi.
`INI_SCANNER_TYPED` (int) | Kodlu INI tarayıcı kipi.
`FNM_NOESCAPE` (int) | Tersbölü öncelemesini iptal eder.
`FNM_PATHNAME` (int) | Bir dizgedeki bölü çizgisi sadece belirtilen şablondaki bölü çizgisiyle eşleşir.
`FNM_PERIOD` (int) | Bir dizgenen başındaki nokta iminin belirtilen şablondaki nokta imiyle tam olarak eşleşmesi gerekir.
`FNM_CASEFOLD` (int) | Harf büyüklüğüne duyarsız eşleşme. Bir GNU oluşumudur.

Sabitler | Açıklama
--- | ---
`UPLOAD_ERR_CANT_WRITE` | Dosyayı diske yazma işlemi başarısız oldu.
`UPLOAD_ERR_EXTENSION` | Bir PHP eklentisi dosya yüklemesini durdurdu. PHP, hangi eklentinin dosya yüklemesini durdurduğunu belirlemenin bir yolunu sağlamaz; yüklü eklentilerin listesini phpinfo() ile incelemek yardımcı olabilir.
`UPLOAD_ERR_FORM_SIZE` | Yüklenen dosyanın boyutu, HTML formunda belirtilen MAX_FILE_SIZE yönergesindeki değerden büyük.
`UPLOAD_ERR_INI_SIZE` | Yüklenen dosya, php.ini içinde belirtilen upload_max_filesize yönergesindeki değerden büyük.
`UPLOAD_ERR_NO_FILE` | Hiçbir dosya yüklenmedi.
`UPLOAD_ERR_NO_TMP_DIR` | Geçici dizin bulunamadı.
`UPLOAD_ERR_OK` | Hata yok, dosya başarıyla yüklendi.
`UPLOAD_ERR_PARTIAL` | Yüklenen dosyanın tamamı yüklenmedi.

# Dosya Sistemi İşlevleri

# Ayrıca Bakınız

Dosya sistemi ile ilgili diğer işlevler için Dizinler ve Program Çalıştırma bölümlerine bakınız.

Uzak dosyalar için kullanılabilen çeşitli URL sarmalayıcıları hakkında bilgi edinmek için Desteklenen Protokoller ve Sarmalayıcılar bölümüne bakınız.

# basename

(PHP 4, PHP 5, PHP 7, PHP 8)

basename — Dosya yolunun ucundaki dosya ismi bileşenini döndürür

### Açıklama

function basename(string `$yol`, string `$uzantı` = ""): string

Belirtilen dosya yolunun ucundaki dosya ismi bileşenini döndürür.

> Bilginize:

> basename() safça girdi dizgesi üzerinde çalışır, dosya sisteminden ve "`..`" gibi yol bileşenlerinden haberi yoktur.

Dikkat

basename() yereli de bilmez, bundan dolayı çok baytlı karakterler içeren dosya yollarından doğru bileşeni ayırabilmesi için eşleşen yerelin setlocale() işlevi kullanılarak atanması gerekir. Eğer `yol` geçerli yerel için geçersiz olan karakterler içeriyorsa basename() işlevinin davranışı belirsizdir.

### Bağımsız Değişkenler

`yol`

  Dosya yolu.

  Dizin ayırma karakteri olarak Windows üzerinde hem bölü ( / ) hem de ters bölü ( \ ) çizgisi kullanılabilirken diğer ortamlarda sadece bölü ( / ) çizgisi kullanılabilir.

`uzantı`

  Dosya ismi `uzantı` içinde devam ediyorsa uzantı ile birlikte bu da kesilir.

### Dönen Değerler

Belirtilen dosya yolunun dosya ismi bileşenini döndürür.

### Örnekler

Örnek 1 - basename() örneği

    <?php
    echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
    echo "2) ".basename("/etc/sudoers.d").PHP_EOL;
    echo "3) ".basename("/etc/passwd").PHP_EOL;
    echo "4) ".basename("/etc/").PHP_EOL;
    echo "5) ".basename(".").PHP_EOL;
    echo "6) ".basename("/");
    ?>

Yukarıdaki örneğin çıktısı:

    1) sudoers
    2) sudoers.d
    3) passwd
    4) etc
    5) .
    6)

### Ayrıca Bakınız

- dirname() - Üst dizinin yolunu döndürür
- pathinfo() - Bir dosya yolu hakkında bilgi döndürür

# chgrp

(PHP 4, PHP 5, PHP 7, PHP 8)

chgrp — Dosya grubunu değiştirir

### Açıklama

function chgrp(string `$dosyaismi`, string|int `$grup`): bool

`dosyaismi` ile belirtilen dosyanın grubunu `grup` yapmaya çalışır.

Bir dosyanın grubunu keyfi olarak sadece root değiştirebilir; diğer kullanıcılar sadece sahibi oldukları bir dosyanın grubunu üyesi oldukları gruplarla değiştirebilirler.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

`grup`

  Grup ismi veya numarası.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir dosyanın grubunun değiştirilmesi

    <?php
    $filename = 'shared_file.txt';
    $format = "%s's Group ID @ %s: %d\n";
    printf($format, $filename, date('r'), filegroup($filename));
    chgrp($filename, 8);
    printf($format, $filename, date('r'), filegroup($filename));
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Windows'ta, bu işlev normal bir dosyaya uygulandığında sessizce başarısız olur.

### Ayrıca Bakınız

- chown() - Dosyanın sahibini değiştirir
- chmod() - Dosya kipini değiştirir

# chmod

(PHP 4, PHP 5, PHP 7, PHP 8)

chmod — Dosya kipini değiştirir

### Açıklama

function chmod(string `$dosyaismi`, int `$kip`): bool

Belirtilen dosyanın kipini `kip` yapmaya çalışır.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

`kip`

  `kip` ile belirtilen değerin otomatik olarak sekizlik bir değer olduğu varsayılmamaktadır, bu bakımdan umulan işlemi sağlamak için değerin önüne 0 (sıfır) getirmeniz gerekir. Ayrıca, ("g+w" gibi) dizesel kip belirtimleri çalışmayacaktır

      <?php
      chmod("/somedir/somefile", 755);   // onluk tabanda; doğru sonuç vermeyebilir
      chmod("/somedir/somefile", "u+rwx,go+rx"); // dizge; doğru sonuç vermeyebilir
      chmod("/somedir/somefile", 0755);  // sekizlik; doğru kip değeri.
      ?>

  `kip` bağımsız değişkeni üç adet sekizlik değerden oluşur. Sırayla kullanıcı, grup ve diğerlerinin izinlerini düzenlerler. Her bileşen kullanıcıya verilen izinlerin toplamından oluşur. Çalıştırma hakkı için 1, yazma hakkı için 2 ve okuma hakkı için 4 değeri toplama dahil edilir. Unix sistemlerindeki kipler hakkında daha ayrıntılı bilgiyi 'man 1 chmod' ve 'man 2 chmod' kılavuz sayfalarında bulabilirsiniz.

      <?php
      //sahibinden başkası okuyup yazamasın
      chmod("/birdizin/birdosya", 0600);

      // Sahibi okuyup yazsın başka herkes sadece okuyabilsin
      chmod("/birdizin/birdosya", 0644);

      // Sahibi herşeyi yapsın, başka herkes okuyup çalıştırabilsin
      chmod("/birdizin/birdosya", 0755);

      // Sahibi herşeyi yapsın, grup üyeleri okuyup çalıştırabilsin,
      // diğerleri hiçbir şey yapamasın
      chmod("/birdizin/birdosya", 0750);
      ?>

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda, bir `E_WARNING` çıktılanır.

### Notlar

> Bilginize:

> Geçerli kullanıcı PHP'yi çalıştıran kullanıcıdır. Muhtemelen normal kabuk ve FTP erişimi için kullandığınız kullanıcı değildir. Çoğu sistemde dosyanın kipini sadece dosyanın sahibi olan kullanıcı değiştirebilir.

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

### Ayrıca Bakınız

- chown() - Dosyanın sahibini değiştirir
- chgrp() - Dosya grubunu değiştirir
- fileperms() - Dosya izinlerini döndürür
- stat() - Bir dosya hakkında bilgi döndürür

# chown

(PHP 4, PHP 5, PHP 7, PHP 8)

chown — Dosyanın sahibini değiştirir

### Açıklama

function chown(string `$dosyaismi`, string|int `$kullanıcı`): bool

`dosyaismi` ile belirtilen dosyanın sahibini `kullanıcı` yapmaya çalışır. Bu değişikliği sadece root yapabilir.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

`kullanıcı`

  Kullanıcı ismi veya numarası.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - chown() örneği

    <?php

    // Kullanılacak dosya ve kullanıcı ismi
    $dosya_ismi= "foo.php";
    $yol = "/home/sites/php.net/public_html/sandbox/" . $dosya_ismi ;
    $kull_ismi = "root";

    // Kullanıcıyı değiştirelim
    chown($yol, $kull_ismi);

    // sonucu sınayalım
    $durum = stat($yol);
    print_r(posix_getpwuid($stat['uid']));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [name] => root
        [passwd] => x
        [uid] => 0
        [gid] => 0
        [gecos] => root
        [dir] => /root
        [shell] => /bin/bash
    )

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Windows'ta, bu işlev normal bir dosyaya uygulandığında sessizce başarısız olur.

### Ayrıca Bakınız

- chmod() - Dosya kipini değiştirir
- chgrp() - Dosya grubunu değiştirir

# clearstatcache

(PHP 4, PHP 5, PHP 7, PHP 8)

clearstatcache — Dosya durum önbelleğini temizler

### Açıklama

function clearstatcache(bool `$gerçek_yol_belleğini_temizle` = `false`, string `$dosyaismi` = ""): void

Aşağıda verilen etkilenen işlevler listesindeki işlevlerden başka stat() veya lstat() işlevini kullanırsanız PHP işlemi hızlandırmak için bu işlevlerin döndürdüğü bilgiyi önbelleğe alır. Bununla birlikte belli durumlarda önbellekteki bilgiyi temizlemek ihtiyacını duyabilirsiniz. Örneğin hep aynı dosyanın varlığını sınayan bir betik için dosyanın işlem sırasında silinmesi veya değişmesi tehlikesi varsa durum önbelleğini temizlememeyi seçebilirsiniz. Bu gibi durumlarda, PHP'nin dosya hakkında önbelleğe aldığı bilgiyi temizlemek için clearstatcache() işlevini kullanabilirsiniz.

PHP'nin mevcut olmayan dosyalar hakkında önbellekte bilgi saklamadığına dikkat ediniz. Bu bakımdan, varolmayan bir dosya üzerinde file_exists() işlevini çağırırsanız, siz dosyayı oluşturana kadar işlev `false` döndürecektir. Siz dosyayı oluşturduktan sonra dosyayı silseniz bile işlev `true` döndürecektir. Bunun yanında, unlink() işlevi önbelleği otomatik olarak temizleyecektir.

> Bilginize:

> Bu işlev belli dosya isimleri hakkında bilgiyi önbelleğe alır; dolayısıyla aynı dosya üzerinde çok sayıda işlem yapıyorsanız ve bu dosya hakkındaki bilgilerin önbellekte saklanmaması gerekiyorsa tek ihtiyacınız clearstatcache() çağrısı yapmak olacaktır.

Önbelleklemeden etkilenen işlevler: stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype() ve fileperms().

### Bağımsız Değişkenler

`gerçek_yol_belleğini_temizle`

  Gerçek yol öbbelleğinin de ayrıca temizleneceği bilgisi.

`dosyaismi`

  Gerçek yol önbelleği sadece belirtilen dosya için ve sadece `gerçek_yol_belleğini_temizle` bağımsız değişkenine `true` atandığı takdirde temizlenir.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - clearstatcache() örneği

    <?php
    $file = 'output_log.txt';

    function get_owner($file)
    {
        $stat = stat($file);
        $user = posix_getpwuid($stat['uid']);
        return $user['name'];
    }

    $format = "UID @ %s: %s\n";

    printf($format, date('r'), get_owner($file));

    chown($file, 'ross');
    printf($format, date('r'), get_owner($file));

    clearstatcache();
    printf($format, date('r'), get_owner($file));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
    UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
    UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross

# copy

(PHP 4, PHP 5, PHP 7, PHP 8)

copy — Dosya kopyalar

### Açıklama

function copy(string `$kaynak`, string `$hedef`, ?resource `$bağlam` = `null`): bool

`kaynak` dosyasını `hedef` dosyasına kopyalar.

Dosyayı taşımak istiyorsanız rename() işlevini kullanın.

### Bağımsız Değişkenler

`kaynak`

  Kaynak dosyanın yolu.

`hedef`

  Hedef dosyanın yolu. Bir URL olarak belirtilirse sarmalayıcı mevcut dosyaların üzerine yazılmasını desteklemiyorsa kopyalama başarısız olabilir.

  Uyarı

  Hedefte dosya varsa, dosyanın üzerine yazılır.

`bağlam`

  stream_context_create() işlevi tarafından oluşturulmuş geçerli bir bağlam.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - copy() örneği

    <?php
    $mevcut = 'example.txt';
    $yeni = 'example.txt.bak';

    if (!copy($mevcut, $yeni)) {
        echo "$mevcut kopyalanamadı...\n";
    }
    ?>

### Ayrıca Bakınız

- move_uploaded_file() - Karşıya yüklenen bir dosyayı yeni bir yere taşır
- rename() - Bir dosya veya dizinin ismini değiştirir
- Karşıya dosya yükleme

# delete

delete — unlink() veya unset() işlevine bakınız

### Açıklama

PHP dilinde "delete" ne bir anahtar sözcük ne de bir işlev ismidir. Bir dosyayı silmek istiyorsanız, unlink() işlevini deneyin. Yerel etki alanındaki bir değişkeni silmek için unset() işlevine bakın.

### Ayrıca Bakınız

- unlink() - Bir dosyayı siler
- unset() - Belirtilen değişkeni unset ile bildirimsiz yapar

# dirname

(PHP 4, PHP 5, PHP 7, PHP 8)

dirname — Üst dizinin yolunu döndürür

### Açıklama

function dirname(string `$yol`, int `$seviye` = 1): string

Bir dosyanın veya dizinin yolunu içeren bir dizge verildiğinde, bu işlev en alt seviyedeki dizinden `seviye` sayıda üstte bulunan dizinin yolunu döndürür.

> Bilginize:

> dirname() safça girdi dizgesi üzerinde çalışır, ne dosya sistemini ne de "`..`" gibi yol bileşenlerini bilir.

Dikkat

Windows üzerinde, dirname() geçerli olarak ayarlanmış kod sayfasına göre davranır, bu nedenle çok baytlı karakter yollarında doğru dizin adını görmesi için eşleşen kod sayfasının ayarlanması gerekir. `yol`, mevcut kod sayfası için geçersiz karakterler içeriyorsa,dirname() işlevinin davranışı tanımsızdır.

Diğer sistemlerde dirname(), `yol`un ASCII uyumlu kodlamayla kodlanacağını varsayar. Aksi takdirde, işlevin davranışı tanımsızdır.

### Bağımsız Değişkenler

`yol`

  Dosya yolu.

  Dizin ayırma karakteri olarak Windows üzerinde hem bölü (`/`) hem de ters bölü (`\`) çizgisi kullanılabilirken diğer ortamlarda sadece bölü (`/`) çizgisi kullanılabilir.

`seviye`

  Üstteki dizinlerin seviyesi.

  Sıfırdan büyük bir tamsayı olmalıdır.

### Dönen Değerler

Üst dizinin yolunu döndürür. `yol` bağımsız değişkeni hiç bölü çizgisi içermiyorsa, içinde bulunulan dizin anlamında tek bir nokta ('.') döner. Aksi takdirde `yol` dizgesi son `/bileşen` kaldırılarak döndürülülür.

Dikkat

Bu işlevi kök dizine ulaşabilen bir döngüde kullanırken dikkatli olun, çünkü bu sonsuz bir döngüye sebep olabilir.

    <?php
    dirname('.');    // '.' döner
    dirname('/');    // Windows'ta `\` ve *nix'lerde '/'
    dirname('\\');   //  Windows'ta `\` ve *nix'lerde '.'
    dirname('C:\\'); //  Windows'ta 'C:\' ve *nix'lerde '.'
    ?>

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.0.0 | `seviye` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - dirname() örneği

    <?php
    echo dirname("/etc/passwd") . PHP_EOL;
    echo dirname("/etc/") . PHP_EOL;
    echo dirname(".") . PHP_EOL;
    echo dirname("C:\\") . PHP_EOL;
    echo dirname("/usr/local/lib", 2);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    /etc
    / (veya Windows üzerinde \)
    .
    C:\
    /usr

### Ayrıca Bakınız

- basename() - Dosya yolunun ucundaki dosya ismi bileşenini döndürür
- pathinfo() - Bir dosya yolu hakkında bilgi döndürür
- realpath() - Normalleştirilmiş mutlak dosya yolunu döndürür

# disk_free_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

disk_free_space — Disk bölümü veya dosya sistemindeki kullanılabilir alanı döndürür

### Açıklama

function disk_free_space(string `$dizin`): float|false

Belirtilen dizinin bulunduğu dosya sistemi veya disk bölümünün kullanılabilir toplam boyunu bayt cinsinden döndürür.

### Bağımsız Değişkenler

`dizin`

  Bir dosya sisteminin veya disk bölümünün bir dizini.

  > Bilginize:

  > Bir dizin yerine bir dosya verildiği takdirde işlevin davranışı belirsizdir ve kullanılan işletim sistemine ve PHP sürümüne göre farklılık gösterebilir.

### Dönen Değerler

Hata oluşmuşsa `false`, yoksa kullanılabilir toplam bayt sayısını bir gerçek sayı olarak döndürür.

### Örnekler

Örnek 1 - disk_free_space() örneği

    <?php
    // $df kök dizin altındaki kullanılabilir toplam bayt sayısını içerir
    $df = disk_free_space("/");

    // Windows üzerinde:
    $df_c = disk_free_space("C:");
    $df_d = disk_free_space("D:");
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

### Ayrıca Bakınız

- disk_total_space() - Bir disk bölümünün veya dosya sisteminin toplam boyutunu döndürür

# disk_total_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

disk_total_space — Bir disk bölümünün veya dosya sisteminin toplam boyutunu döndürür

### Açıklama

function disk_total_space(string `$dizin`): float|false

Belirtilen dizinin bulunduğu dosya sistemi veya disk bölümünün toplam boyunu bayt cinsinden döndürür.

### Bağımsız Değişkenler

`dizin`

  Bir dosya sisteminin veya disk bölümünün bir dizini.

### Dönen Değerler

Hata durumunda `false` yoksa toplam bayt sayısını bir gerçek sayı olarak döndürür.

### Örnekler

Örnek 1 - disk_total_space() örneği

    <?php
    // $df kök dizin altındaki toplam bayt sayısını içerir
    $df = disk_total_space("/");

    // Windows üzerinde:
    $df = disk_total_space("C:");
    $df = disk_total_space("D:");
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

### Ayrıca Bakınız

- disk_free_space() - Disk bölümü veya dosya sistemindeki kullanılabilir alanı döndürür

# diskfreespace

(PHP 4, PHP 5, PHP 7, PHP 8)

diskfreespace — disk_free_space() işlevinin takma adıdır

### Açıklama

Bu işlev disk_free_space() işlevinin takma adıdır.

# fclose

(PHP 4, PHP 5, PHP 7, PHP 8)

fclose — Açık bir dosya tanıtıcısını kapatır

### Açıklama

function fclose(resource `$dt`): bool

`dt` ile ilişkilendirilmiş dosya kapatılır.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Basit bir fclose() örneği

    <?php

    $dt = fopen('birdosya.txt', 'r');

    fclose($dt);

    ?>

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar

# fdatasync

(PHP 8 >= 8.1.0)

fdatasync — Veriyi (meta-veriyi değil) dosyaya eşzamanlar

### Açıklama

function fdatasync(resource `$stream`): bool

Bu işlev, fsync() gibi `stream` içeriğini depolama ortamına eşzamanlar, ancak dosya meta-verisini eşzamanlamaz. Bu işlevin yalnızca POSIX sistemlerde gerçek bir fark yarattığını unutmayın. Windows'ta bu işlev, fsync() işlevinin takma adıdır.

### Bağımsız Değişkenler

`stream`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 fdatasync() örneği

    <?php

    $file = 'test.txt';

    $stream = fopen($file, 'w');
    fwrite($stream, 'test data');
    fwrite($stream, "\r\n");
    fwrite($stream, 'additional data');

    fdatasync($stream);
    fclose($stream);
    ?>

### Ayrıca Bakınız

- fflush() - Çıktıyı bir dosyaya boşaltır
- fsync() - Değişiklikleri dosyaya eşzamanlar (meta-veri dahil)

# feof

(PHP 4, PHP 5, PHP 7, PHP 8)

feof — Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar

### Açıklama

function feof(resource `$dt`): bool

Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Eğer dosya sonu (EOF) saptanmışsa veya bir hata oluşmuşsa (soketin zaman aşımına uğraması gibi) `true`, aksi takdirde `false` döner.

### Notlar

Uyarı

fsockopen() tarafından açılmış bir bağlantı sunucu tarafından kapatılmamışsa, feof() işlevi bir zaman aşımı oluşuncaya kadar bekler ve `true` döndürür. Öntanımlı zaman aşımı süresi 60 saniyedir. Bu değeri değiştirmek için stream_set_timeout() işlevini kullanabilirsiniz.

Uyarı

Eğer belirtilen dosya tanıtıcısı geçersizse feof() başarısız olup `true` döndüreceğinden sonsuz bir döngü oluşabilir.

Örnek 1 - Geçersiz dosya tanıtıcılı feof() örneği

    <?php
    // Dosya okunamazsa veya yoksa fopen işlevi FALSE döndürür
    $file = @fopen("olmayan_dosya", "r");

    // fopen FALSE döndürdüğünden bir uyarı çıktılanır
    // ve burada sonsuz döngü oluşur.
    while (!feof($file)) {
    }

    fclose($file);
    ?>

# fflush

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

fflush — Çıktıyı bir dosyaya boşaltır

### Açıklama

function fflush(resource `$dt`): bool

Bu işlev tüm tampon çıktısının dosya tanıtıcısı `dt` ile belirtilen dosyaya yazılması için zorlar.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - fflush() kullanarak dosyaya yazma örneği

    <?php
    $filename = 'bar.txt';

    $file = fopen($filename, 'r+');
    rewind($file);
    fwrite($file, 'Foo');
    fflush($file);
    ftruncate($file, ftell($file));
    fclose($file);
    ?>

### Ayrıca Bakınız

- clearstatcache() - Dosya durum önbelleğini temizler
- fwrite() - Dosyaya ikil kipte yazar

# fgetc

(PHP 4, PHP 5, PHP 7, PHP 8)

fgetc — Dosya tanıtıcısından bir karakter döndürür

### Açıklama

function fgetc(resource `$dt`): string|false

Belirtilen dosya tanıtıcısından bir karakter döndürür.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Dosya tanıtıcısı `dt` ile belirtilen bir dosyadan tek bir karakter içeren bir dizge döndürür. Dosya sonuna gelindiğinde `false` döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Örnekler

Örnek 1 - fgetc() örneği

    <?php
    $dt = fopen('birdosya.txt', 'r');
    if (!$dt) {
        echo 'birdosya.txt dosyası açılamadı';
    }
    while (false !== ($kar = fgetc($dt))) {
        echo "$kar\n";
    }
    ?>

### Notlar

> Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.

### Ayrıca Bakınız

- fread() - Dosyayı ikil kipte okur
- fopen() - Bir dosya veya URL'yi açar
- popen() - Bir süreç tanıtıcısı açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- fgets() - Dosya tanıtıcısından bir satır döndürür

# fgetcsv

(PHP 4, PHP 5, PHP 7, PHP 8)

fgetcsv — Dosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür

### Açıklama

function fgetcsv(
resource `$akım`,
?int `$uzunluk` = `null`,
string `$ayraç` = ",",
string `$sınırlayıcı` = "\"",
string `$öncelem` = "\\"
): array|false

Satırı okuyup CSV biçemindeki alanları bir dizi içinde döndürmesi dışında fgets() işlevi gibidir.

> Bilginize:

> Bu işlevde yerel ayarları hesaba katılır. Eğer `LANG`, örneğin, `tr_TR.UTF-8` ise `ISO-8859-9` ile kodlanmış dosyaları bu işlev hatalı okuyacaktır.

### Bağımsız Değişkenler

`akım`

  fopen(), popen()veya fsockopen() tarafından başarıyla açılmış geçerli bir dosyanın tanıtıcısı.

`uzunluk`

  CSV dosyasındaki en uzun satırdan (satırsonu karakterleri dahil) daha büyük bir değer içermelidir. Parçalara ayırma sınırlı bir alanda gerçekleşmeyecekse, satır `uzunluk` karakterden oluşan parçalara bölünür.

  Bu bağımsız değişkenin belirtilmemesi (veya PHP 8.0.0 ve sonrası için 0 veya `null` belirtilmesi) durumunda azami satır uzunluğu sınırlanmaz fakat işlem yavaşlar.

`ayraç` (`separator`)

  Alan ayracı belirtilir. Ayraç karakteri tek baytlık olmalıdır.

`sınırlayıcı` (`enclosure`)

  Alan sınırlayıcı belirtilir. Sınırlayıcı karakter tek baytlık olmalıdır.

`öncelem` (`escape`)

  Önceleme karakteri belirtmekte kullanılır. Sınırlayıcı karakter tek baytlık olmalıdır, boş dizge de belirtilebilir. Boş dizge (`""`) özel önceleme düzeneğini iptal eder.

  Uyarı

  Girdi akımında, genellikle bir `sınırlayıcı` karakter alanın içinde çiftlenerek öncelenir ve sonuç dizgesinde yalnızca tek bir `sınırlayıcı` karakter yer alır. `öncelem` karakteri ise farklı çalışır: Girdi dizgesinde bir alan içinde `öncelem` ve `sınırlayıcı` karakterlerin her ikisi de varsa sonuç dizgesinde her ikisi de yer alır. Bu nedenle, öntanımlı değerler için, `"a""b","c\"d"` gibi bir CSV satırının alanları sırasıyla `a"b` ve `c\"d` olarak ayrıştırılır.

  Uyarı

  PHP 8.4.0 ve sonrasında, `öncelem` öntanımlı değerine bağlı olarak kullanım dışıdır. Açıkça ya konumsal olarak ya da isimli bağımsız değişkenler kullanılarak sağlanması gerekir.

Uyarı

When `escape` is set to anything other than an empty string (`""`) it can result in CSV that is not compliant with » RFC 4180 or unable to survive a roundtrip through the PHP CSV functions. The default for `escape` is `"\\"` so it is recommended to set it to the empty string explicitly. The default value will change in a future version of PHP, no earlier than PHP 9.0.

### Dönen Değerler

Başarı durumunda okunan alanları içeren indisli bir dizi, başarısızlık durumunda `false` döner.

> Bilginize:

> CSV dosyasındaki boş bir satır tek bir null içeren bir dizi olarak döndürülür ve bir hata olarak ele alınmaz.

> Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

### Hatalar/İstisnalar

`ayraç` veya `sınırlayıcı` tek bayt uzunlukta değilse ValueError istisnası oluşur.

`öncelem` tek bayt uzunlukta değilse veya boş dizge ise ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | `öncelem` bağımsız değişkeninin öntanımlı değerine güvenmek artık kullanım dışıdır.
8.3.0 | Son alan yalnızca sonlandırılmamış bir sınırlayıcı içeriyorsa, tek bir boş bayt (\0) içeren dizge yerine boş bir dizge ("") döndürülür.
8.0.0 | `uzunluk` artık `null` olabiliyor.
7.4.0 | `öncelem` bağımsız değişkeni özel önceleme mekanizmasını iptal etmek için boş dizge kabul ediyor.

### Örnekler

Örnek 1 - Bir CSV dosyasının okunup basılması

    <?php
    $row = 1;
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            echo "<p> $row satırındaki $num alan: <br /></p>\n";
            $row++;
            for ($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
         }
        fclose($handle);
     }
    ?>

### Ayrıca Bakınız

- fputcsv() - Satırı CSV olarak biçemler ve dosya tanıtıcısına yazar
- str_getcsv() - Bir CSV dizgesinin girdilerini bir dizinin elemanlarına paylaştırır
- SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields
- SplFileObject::fputcsv() - Write a field array as a CSV line
- SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
- SplFileObject::getCsvControl() - Get the delimiter, enclosure and escape character for CSV
- explode() - Bir dizgeyi bir ayraca göre bölüp bir dizi haline getirir
- file() - Dosya içeriğinin tamamını bir diziye okur
- pack() - Veriyi ikil bir dizge halinde paketler

# fgets

(PHP 4, PHP 5, PHP 7, PHP 8)

fgets — Dosya tanıtıcısından bir satır döndürür

### Açıklama

function fgets(resource `$akım`, ?int `$uzunluk` = `null`): string|false

Belirtilen dosya tanıtıcısından bir satır döndürür.

### Bağımsız Değişkenler

`akım`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

`uzunluk`

  `uzunluk` - 1 bayt okununca bir satırsonu karakterinde veya dosya sonunda (hangisi önce vuku bulursa) okuma işlemi durur. Bir uzunluk belirtilmezse akımdan okuma işlemi satırın sonuna erişilinceye kadar sürdürülür.

### Dönen Değerler

Dosya tanıtıcısı `akım` ile belirtilen bir dosyadan `uzunluk` - 1 baytlık veriyi bir dizge içinde döndürür. Dosya konumlayıcıdan başka veri okunamıyorsa `false` döner.

Bir hata oluşursa `false` döner.

### Örnekler

Örnek 1 - Bir dosyanın satır satır okunması

    <?php
    $dt = @fopen("/tmp/inputfile.txt", "r");
    if ($dt) {
        while (($buffer = fgets($dt, 4096)) !== false) {
            echo $buffer, PHP_EOL;
        }
        if (!feof($dt)) {
            echo "Hata: beklenmeyen fgets() başarısızlığı\n";
        }
        fclose($dt);
    }
    ?>

### Notlar

> Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

> Bilginize:

> fgets() işlevinin 'C' dilindeki anlamlandırılmasını bilenler dosya sonu karakterinin (EOF) döndürülüşü ile ilgili farka dikkat etmelidir.

### Ayrıca Bakınız

- fgetss() - Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
- fread() - Dosyayı ikil kipte okur
- fgetc() - Dosya tanıtıcısından bir karakter döndürür
- stream_get_line() - Akımdan belirtilen ayraca kadar bir satır döndürür
- fopen() - Bir dosya veya URL'yi açar
- popen() - Bir süreç tanıtıcısı açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- stream_set_timeout() - Akımın zaman aşımı süresini ayarlar

# fgetss

(PHP 4, PHP 5, PHP 7)

fgetss — Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür

Uyarı

Bu işlevin kullanımı PHP 7.3.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function fgetss(resource `$dt`, int `$uzunluk` = ?, string `$etiketler` = ?): string

Okunan metinden `null` baytları, HTML ve PHP etiketlerini temizlemesi dışında fgets() işlevi ile aynıdır. İşlev, çağrıdan çağrıya ayrıştırma durumunu korur, bu nedenle, fgets() dönüş değeriyle strip_tags() işlevin çağırmaya eşdeğer değildir.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

`uzunluk`

  Döndürülecek verinin uzunluğu.

`etiketler`

  Hangi etiketlerin ayıklanacağını bu isteğe bağlı bağımsız değişken ile belirtebilirsiniz. Ayrıntılar için strip_tags() işlevinin `ayıklanmayacaklar` bağımsız değişkeninin açıklamasına bakınız.

### Dönen Değerler

Dosya tanıtıcısı `dt` ile belirtilen bir dosyadan `uzunluk` - 1 baytlık veriyi HTML ve PHP etiketlerinden arındırarak bir dizge içinde döndürür.

Bir hata oluşursa `false` döner.

### Örnekler

Örnek 1 - Bir PHP dosyasının satır satır okunması

    <?php
    $str = <<<EOD
    <html><body>
     <p>Welcome! Today is the <?php echo(date('jS')); ?> of <?= date('F'); ?>.</p>
    </body></html>
    Text outside of the HTML block.
    EOD;
    file_put_contents('sample.php', $str);

    $dt = @fopen("sample.php", "r");
    if ($dt) {
        while (!feof($dt)) {
            $tampon = fgetss($dt, 4096);
            echo $tampon;
        }
        fclose($dt);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Welcome! Today is the  of .

    Text outside of the HTML block.

### Notlar

> Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

### Ayrıca Bakınız

- fgets() - Dosya tanıtıcısından bir satır döndürür
- fopen() - Bir dosya veya URL'yi açar
- popen() - Bir süreç tanıtıcısı açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- strip_tags() - Bir dizgeden HTML ve PHP etiketlerini ayıklar
- SplFileObject::fgetss() - Gets line from file and strip HTML tags
- The string.strip_tags süzgeci

# file

(PHP 4, PHP 5, PHP 7, PHP 8)

file — Dosya içeriğinin tamamını bir diziye okur

### Açıklama

function file(string `$dosyaismi`, int `$seçenekler` = 0, ?resource `$bağlam` = `null`): array|false

Dosyanın tamamını bir dizi içinde döndürür.

> Bilginize:

> Dosya içeğini bir dizge olarak döndürmek için file_get_contents() işlevini kullanabilirsiniz.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

  İpucu

  fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

`seçenekler`

  İsteğe bağlı bu bağımsız değişkende şu sabitlerden bir veya daha fazlasını belirtebilirsiniz:

  `FILE_USE_INCLUDE_PATH`
    Dosya include_path yönergesinde belirtilen yollarda aranır.
  `FILE_IGNORE_NEW_LINES`
    Dizi elemanlarının sonundaki satırsonu karakteri atlanır.
  `FILE_SKIP_EMPTY_LINES`
    Boş satırlar atlanır.
  `FILE_NO_DEFAULT_CONTEXT`
    Öntanımlı bağlam kullanılmaz.
`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Dosyayı bir dizi olarak döndürür. Dizinin her elemanı dosyanın bir satırına karşılıktır ve satırsonu karakterleri ayrılmaz. Başarısızlık durumunda işlev `false` döndürür.

> Bilginize:

> `FILE_IGNORE_NEW_LINES` sabiti kullanılmadığı sürece dizinin her elemanı bir satırsonu karakteri içerecektir.

> Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

### Hatalar/İstisnalar

Dosya mevcut değilse `E_WARNING` seviyesinde bir hata çıktılanır.

### Örnekler

Örnek 1 - file() örneği

    <?php
    // Dosyayı bir diziye aktaralım. Bu örnekte HTTP üzerinden
    // bir URL sayesinde HTML içeriği okuyacağız.
    $lines = file('http://www.example.com/');

    // Diziyi döngüye sokarak HTML kaynağını satır
    // numaralarıyla birlikte gösterelim.
    foreach ($lines as $line_num => $line) {
        echo "Satır #<b>{$line_num}</b>: " . htmlspecialchars($line) . "<br />\n";
    }

    // Seçimlik seçenekler bağımsız değişkeni kullanılabilir
    $trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    ?>

### Notlar

Uyarı

Microsoft IIS, SSL kullanırken bir `close_notify` göndermeden bağlantıyı kapatarak protokolle çelişir. Verinin sonuna ulaştığınız zaman PHP bunu "SSL: Fatal Protocol Error" (SSL: "Ölümcül Protokol Hatası") olarak raporlar. Bu sorunu bertaraf etmek için error_reporting değerini uyarıları içermeyecek bir seviyeye indirmek gerekir. PHP, akımı `https://` şeması kullanılarak açılırsa hatalı IIS sunucu yazılımını saptayıp uyarıları engelleyebilir. Bir `ssl://` soketi oluşturmak için fsockopen() kullanılacaksa uyarıları saptayıp engellemekten geliştirici sorumludur.

### Ayrıca Bakınız

- file_get_contents() - Dosya içeriğinin tamamını bir dizge olarak döndürür
- readfile() - Bir dosyayı çıktılar
- fopen() - Bir dosya veya URL'yi açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- popen() - Bir süreç tanıtıcısı açar
- include - include
- stream_context_create() - Bir akım bağlamı oluşturur

# file_exists

(PHP 4, PHP 5, PHP 7, PHP 8)

file_exists — Bir dosya veya dizinin mevcut olup olmadığına bakar

### Açıklama

function file_exists(string `$dosyaismi`): bool

Bir dosya veya dizinin mevcut olup olmadığına bakar.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya veya dizinin yolu.

  Windows üzerinde, ağ paylaşımlarındaki dosyaları sınamak için //makineadı/paylaşım/dosyaismi veya \\makineadı\paylaşım\dosyaismi sözdizimlerini kullanın.

### Dönen Değerler

`dosyaismi` ile belirtilen dosya veya dizin mevcutsa `true` değilse `false`.

> Bilginize:

> Bu işlev var olmayan dosyaları işaret eden sembolik bağlar için `false` döndürür.

> Bilginize:

> Sınama etkin UID/GID ile değil gerçek UID/GID kullanılarak yapılır.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - Bir dosyanın varlığının sınanması

    <?php
    $dosya = '/bir/yol/dosya.txt';

    if (file_exists($dosya)) {
        echo "$dosya diye bir dosya var";
    } else {
        echo "$dosya diye bir dosya yok";
    }
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_readable() - Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- is_writable() - Dosyanın yazılabilir kipte ise bunu doğrular
- is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
- file() - Dosya içeriğinin tamamını bir diziye okur
- SplFileInfo

# file_get_contents

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

file_get_contents — Dosya içeriğinin tamamını bir dizge olarak döndürür

### Açıklama

function file_get_contents(
string `$dosyaismi`,
bool `$use_include_path` = `false`,
?resource `$bağlam` = `null`,
int `$başlangıç` = 0,
?int `$uzunluk` = `null`
): string|false

Belirtilen dosyanın `başlangıç` konumundan başlayan `uzunluk` baytını bir dizge olarak döndürmesi dışında file() işlevi gibidir. İşlem başarılı olmazsa `false` döner.

file_get_contents() işlevi bir dosyanın içeriğini bir dizgeye okumak için tercih edilen bir işlevdir. Başarımı arttırmak için eğer işletim sistemi tarafından destekleniyorsa bellek eşlem tekniklerini kullanılacaktır.

> Bilginize:

> Boşluklar gibi özel karakterler içeren bir URI'yi açmaya çalışıyorsanız URI'yi urlencode() ile kodlamalısınız.

### Bağımsız Değişkenler

`dosyaismi`

  İçeriği okunacak dosyanın ismi.

`use_include_path`

  > Bilginize:

  > Aramanın include path yönergesinde belirtilen yollarda da yapılacağını belirtmek için `FILE_USE_INCLUDE_PATH` sabiti kullanılabilir. Ancak, katı kodlama etkinse `FILE_USE_INCLUDE_PATH` sabiti int türünde olduğundan bu mümkün değildir. Yerine `true` kullanın.

`bağlam`

  stream_context_create() işlevi tarafından oluşturulmuş geçerli bir bağlam özkaynağı. Özel bir bağlam kullanmaya ihtiyacınız yoksa bu bağımsız değişkene `null` atayabilirsiniz.

`başlangıç`

  Akım üzerinde okumaya başlanacak konum. Negatif değerler dosyanın sonundan itibaren sayılır.

  Uzak dosyalarda arama (`başlangıç`) desteklenmemektedir. Yerel olmayan dosyalarda küçük başlangıçlarla çalışmak mümkünse de bu işlem tamponlanmış akım üzerine yapılacağından sonuçları öngörülemez.

`uzunluk`

  Okunacak verinin azami uzunluğu. Öntanımlı olarak dosya sonuna kadar okunur. Bu bağımsız değişken süzgeçler tarafından işlenen akıma ugulanır.

### Dönen Değerler

Hata durumunda `false` aksi takdirde dosyadan okunan veriyi döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Hatalar/İstisnalar

`dosyaismi` bulunamazsa, `uzunluk` sıfırdan küçükse, `başlangıç` akım üzerinde aranabilir değilse, `E_WARNING` seviyesinde bir hata üretilir.

file_get_contents() bir dizin için çağrılırsa, Windows'ta ve PHP 7.4'ten beri diğer işletim sistemlerinde `E_WARNING` seviyesinde bir hata üretilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `uzunluk` artık `null` olabiliyor.
7.1.0 | `başlangıç` artık negatif değer kabul ediyor.

### Örnekler

Örnek 1 - Site başsayfasının kaynak kodunun çıktılanması

    <?php
    $homepage = file_get_contents('http://www.example.com/');
    echo $homepage;
    ?>

Örnek 2 - `include_path` içinde arama

    <?php
    // Katı kodlama etkinse, yani declare(strict_types=1); ise
    $file = file_get_contents('./people.txt', true);
    // değilse
    $file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
    ?>

Örnek 3 - Bir dosyanın belli bir bölümünün okunması

    <?php
    // 21. karakterden itibaren 14 karakter okuyalım
    $section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
    var_dump($section);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(14) "lle Bjori Ro"

Örnek 4 - Akım bağlamı kullanımı

    <?php
    // Bir akım oluşturalım
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: en\r\n" .
                  "Cookie: foo=bar\r\n"
      )
    );

    $context = stream_context_create($opts);

    // Yukarıda atadığımız HTTP başlıklarını kullanarak dosyayı açalım
    $file = file_get_contents('http://www.example.com/', false, $context);
    ?>

### Notlar

> Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

Uyarı

Microsoft IIS, SSL kullanırken bir `close_notify` göndermeden bağlantıyı kapatarak protokolle çelişir. Verinin sonuna ulaştığınız zaman PHP bunu "SSL: Fatal Protocol Error" (SSL: "Ölümcül Protokol Hatası") olarak raporlar. Bu sorunu bertaraf etmek için error_reporting değerini uyarıları içermeyecek bir seviyeye indirmek gerekir. PHP, akımı `https://` şeması kullanılarak açılırsa hatalı IIS sunucu yazılımını saptayıp uyarıları engelleyebilir. Bir `ssl://` soketi oluşturmak için fsockopen() kullanılacaksa uyarıları saptayıp engellemekten geliştirici sorumludur.

### Ayrıca Bakınız

- file() - Dosya içeriğinin tamamını bir diziye okur
- fgets() - Dosya tanıtıcısından bir satır döndürür
- fread() - Dosyayı ikil kipte okur
- readfile() - Bir dosyayı çıktılar
- file_put_contents() - Veriyi bir dosyaya yazar
- stream_get_contents() - Akımdan kalanı bir dizgeye okur
- stream_context_create() - Bir akım bağlamı oluşturur
- $http_response_header

# file_put_contents

(PHP 5, PHP 7, PHP 8)

file_put_contents — Veriyi bir dosyaya yazar

### Açıklama

function file_put_contents(
string `$dosyaismi`,
mixed `$veri`,
int `$seçenekler` = 0,
?resource `$bağlam` = `null`
): int|false

Bu işlev, veriyi bir dosyaya yazmak için sırayla fopen(), fwrite() ve fclose() işlevlerinin çağrılmasına denk bir işlem yapar.

Eğer `dosyaismi` mevcut değilse dosya oluşturulur. Aksi takdirde, `FILE_APPEND` seçeneği etkin değilse veri mevcut dosyanın üzerine yazılır.

### Bağımsız Değişkenler

`dosyaismi`

  Verinin yazılacağı dosyanın yolu.

`veri`

  Yazılacak veri. Bir dizi, bir dizge veya bir özkaynak olabilir.

  Eğer `veri` bir akım özkaynağı ise tamponda kalan verinin tamamı dosyaya yazılır. Bu işlem, stream_copy_to_stream() kullanımına eşdğerdir.

  `veri` bağımsız değişkeninde tek boyutlu bir dizi de belirtebilirsiniz. Bu takdirde yapılan işlem `file_put_contents(dosyaismi, implode('', $dizi))` işlemine denktir.

`seçenekler`

  İsteğe bağlı bu bağımsız değişkende bazı kısıtlamalarla şu sabitlerden bir veya daha fazlasını ikil VEYA (|) ile birleştirerek belirtebilirsiniz:

  Belirtilebilecek seçenekler
  Seçenet | Açıklama
  --- | ---
  `FILE_USE_INCLUDE_PATH` | Dosya include_path yönergesinde belirtilen yollarda aranır.
  `FILE_APPEND` | Eğer `dosyaismi` dosyası mevcutsa veri dosyanın üzerine yazılmaz, sonuna eklenir.
  `LOCK_EX` | Yazma işlemi için dosya üzerinde ayrıcalıklı bir kilit edinilir. Başka bir deyişle, fopen() ve fwrite() çağrıları arasında bir flock() çağrısı yapılır. Bu, "x" kipiyle fopen() çağrısına denk değildir.

`bağlam`

  stream_context_create() ile oluşturulmuş geçerli bir bağlam özkaynağı.

### Dönen Değerler

İşlev, başarısızlık durumunda `false`, aksi takdirde dosyaya yazılan baytların sayısı ile döner.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Örnekler

Örnek 1 - Basit kullanım örneği

    <?php
    $file = 'people.txt';
    // İçeriğini almak için dosyayı açalım
    $içerik = file_get_contents($file);
    // İçeriğe yeni bir kişi ekleyelim
    $içerik .= "John Smith\n";
    // İçeriği dosyaya yazalım
    file_put_contents($file, $içerik);
    ?>

Örnek 2 - Seçenek kullanımı

    <?php
    $file = 'people.txt';
    // Dosyaya eklenecek yeni kişi
    $person = "John Smith\n";
    // $person değişkeninin değerini $file dosyasına ekleyelim.
    // FILE_APPEND veriyi dosyanın sonuna ekler.
    // LOCK_EX aynı anda başka birinin başka bir şey yazmasını engeller.
    file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
    ?>

### Notlar

> Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar
- fwrite() - Dosyaya ikil kipte yazar
- file_get_contents() - Dosya içeriğinin tamamını bir dizge olarak döndürür
- stream_context_create() - Bir akım bağlamı oluşturur

# fileatime

(PHP 4, PHP 5, PHP 7, PHP 8)

fileatime — Dosyaya son erişim zamanını döndürür

### Açıklama

function fileatime(string `$dosyaismi`): int|false

Belirtilen dosyaya son erişim zamanını döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Hata durumunda `false` aksi takdirde dosyaya son erişim zamanını döndürür. Zaman bir Unix zaman damgası olarak döndürülür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - fileatime() örneği

    <?php
    // Çıktı şöyle bir şey olur:
    // birdosya.txt dosyasının son erişim zamanı: December 29 2008 22:16:23.

    $dosya = 'birdosya.txt';
    if (file_exists($dosya)) {
        echo "$dosya dosyasının son değişiklik zamanı: " .
              date ("F d Y H:i:s.", fileatime($dosya));
    }
    ?>

### Notlar

> Bilginize:

> Bir dosyanın erişim zamanının dosyanın veri blokları okunduğu zaman değiştiği varsayılır. Eğer bir uygulama çok büyük sayıda dosya ve dizine erişerek çalışıyorsa, bu, epeyce bir başarım kaybına sebep olur.

> Bazı Unix dosya sistemlerinde böyle uygulamaların başarımını arttırabilmek için erişim zamanının güncellenmesi iptal edilebilmektedir. Böyle dosya sistemlerinde bu işlev kullanışsızdır.

> Bilginize:

> Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- filemtime() - Dosyanın değişiklik zamanını döndürür
- fileinode() - Dosyanın düğüm numarasını döndürür
- date() - Unix zaman damgasını biçimlendirir

# filectime

(PHP 4, PHP 5, PHP 7, PHP 8)

filectime — Dosyanın dosya düğümü değişiklik zamanını döndürür

### Açıklama

function filectime(string `$dosyaismi`): int|false

Belirtilen dosyanın dosya düğümü değişiklik zamanını döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Belirtilen dosyanın son dosya düğümü değişiklik zamanını döndürür. Hata durumunda `false` döner. Zaman bir Unix zaman damgası olarak döndürülür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - filectime() örneği

    <?php
    // Çıktı şöyle bir şey olur:
    // birdosya.txt dosyasının son değişiklik zamanı: December 29 2008 22:16:23.

    $dosya = 'birdosya.txt';
    if (file_exists($dosya)) {
        echo "$dosya dosyasının son değişiklik zamanı: " .
              date ("F d Y H:i:s.", filectime($dosya));
    }
    ?>

### Notlar

> Bilginize:

> Çoğu Unix dosya sisteminde dosya düğümü verisi değiştiğinde, yani, dosya izinleri, dosyanın sahibi veya grubu ya da diğer temel verileri değiştiğinde dosya değişmiş sayılır. Ayrıca, (sitenizin son güncellendiği tarihi belirtmek isterseniz) filemtime() ve fileatime() işlevlerine de bakınız.

> Bilginize:

> Bazı Unix belgelerinde bir dosyanın dosya düğümü değişiklik zamanı dosyanın oluşturuluş zamanı olarak gösterilir. Bu yanlıştır. Çoğu Unix dosya sisteminde Unix dosyaları için bir oluşturulma zamanı mevcut değildir.

> Bilginize:

> Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- filemtime() - Dosyanın değişiklik zamanını döndürür

# filegroup

(PHP 4, PHP 5, PHP 7, PHP 8)

filegroup — Dosyanın sahibi olan grubu döndürür

### Açıklama

function filegroup(string `$dosyaismi`): int|false

Dosyanın sahibi olan grubu döndürür. Grup kimliği sayısal biçemde döner. Grup ismini elde etmek için posix_getgrgid() işlevini kullanabilirsiniz.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Bir hata oluşursa `false` oluşmazsa dosyanın sahibi olan grubu döndürür. Grup kimliği sayısal biçemde döner. Grup ismini elde etmek için posix_getgrgid() işlevini kullanabilirsiniz.

### Hatalar/İstisnalar

Başarısızlık halinde bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - Bir dosyanın grubunun bulunması

    <?php
    $dosya = 'index.php';
    print_r(posix_getgrgid(filegroup($dosya)));
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- fileowner() - Dosya sahibini döndürür
- posix_getgrgid() - Grup kimliği belirtilen grup hakkında bilgi verir

# fileinode

(PHP 4, PHP 5, PHP 7, PHP 8)

fileinode — Dosyanın düğüm numarasını döndürür

### Açıklama

function fileinode(string `$dosyaismi`): int|false

Dosyanın düğüm numarasını döndürür.

### Bağımsız Değişkenler

`filename`

  Dosya yolu.

### Dönen Değerler

Hata durumunda `false` aksi takdirde dosyanın düğüm numarasını döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - Bir dosyanın düğüm numarasının geçerli dosya ile karşılaştırılması

    <?php
    $dosya = 'index.php';
    if (getmyinode() == fileinode($dosya)) {
        echo 'Geçerli dosyayı sınıyorsunuz.';
    }
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- getmyinode() - Çalışan betiğin dosya düğümü numarasını döndürür
- stat() - Bir dosya hakkında bilgi döndürür

# filemtime

(PHP 4, PHP 5, PHP 7, PHP 8)

filemtime — Dosyanın değişiklik zamanını döndürür

### Açıklama

function filemtime(string `$dosyaismi`): int|false

Bu işlev belirtilen dosyanın veri bloklarına yazıldığı, yani dosya içeriğinin değişikliğe uğradığı zamanı döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Hata durumunda `false` aksi takdirde dosyanın son değişiklik zamanını döndürür. Zaman, date() işlevi için uygun bir Unix zaman damgası olarak döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - filemtime() örneği

    <?php
    // Çıktı şöyle bir şey olur:
    // birdosya.txt dosyasının son değişiklik zamanı: December 29 2008 22:16:23.

    $dosya = 'birdosya.txt';
    if (file_exists($dosya)) {
        echo "$dosya dosyasının son değişiklik zamanı: " .
              date ("F d Y H:i:s.", filemtime($dosya));
    }
    ?>

### Notlar

> Bilginize:

> Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- filectime() - Dosyanın dosya düğümü değişiklik zamanını döndürür
- stat() - Bir dosya hakkında bilgi döndürür
- touch() - Dosyanın erişim ve değişiklik zamanını ayarlar
- getlastmod() - Çalışan betiğin son değişiklik zamanını döndürür

# fileowner

(PHP 4, PHP 5, PHP 7, PHP 8)

fileowner — Dosya sahibini döndürür

### Açıklama

function fileowner(string `$dosyaismi`): int|false

Dosya sahibini döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Hata durumunda `false` aksi takdirde dosyanın sahibinin kullanıcı kimliği döner. Sayısal biçemde dönen kullanıcı kimliğinden kullanıcı ismini elde etmek için posix_getpwuid() işlevini kullanabilirsiniz.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - Bir dosyanın sahibinin bulunması

    <?php
    $dosya = 'index.php';
    print_r(posix_getpwuid(fileowner($dosya)));
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- filegroup() - Dosyanın sahibi olan grubu döndürür
- stat() - Bir dosya hakkında bilgi döndürür
- posix_getpwuid() - Kullanıcı kimliği belirtilen kullanıcı hakkında bilgi döndürür

# fileperms

(PHP 4, PHP 5, PHP 7, PHP 8)

fileperms — Dosya izinlerini döndürür

### Açıklama

function fileperms(string `$dosyaismi`): int|false

Belirtilen dosya ile ilgili izinleri döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Dosyanın izinlerini sayısal kip olarak döndürür. Bu kipin daha düşük bitleri, chmod() tarafından beklenen izinlerle aynıdır, ancak çoğu platformda, dönüş değeri `dosyaismi` olarak verilen dosya türü hakkında bilgi de içerir. Aşağıdaki örnekler, Linux ve macOS dahil olmak üzere POSIX sistemlerinde belirli izinler ve dosya türleri için dönüş değerinin nasıl sınanacağını göstermektedir.

Yerel dosyalara özgü dönüş değeri, C kütüphanesinin stat() işlevi tarafından döndürülen yapının `st_mode` üyesinin değeridir. Tam olarak hangi bitlerin atanacağı platformdan platforma değişebilir ve dönüş değerinin izin verilmeyen bitlerinin ayrıştırılması gerekiyorsa özel platformunuzun belgelerine bakmanız önerilir.

Başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - İzinlerin sekizlik değer olarak gösterilmesi

    <?php
    echo substr(sprintf('%o', fileperms('/tmp')), -4);
    echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
    ?>

Yukarıdaki örneğin çıktısı:

    1777
    0644

Örnek 2 - Tüm izinlerin gösterilmesi

    <?php
    $perms = fileperms('/etc/passwd');

    switch ($perms & 0xF000) {
        case 0xC000: // soket
            $info = 's';
            break;
        case 0xA000: // Sembolik bağ
            $info = 'l';
            break;
        case 0x8000: // Sıradan dosya
            $info = 'r';
            break;
        case 0x6000: // Blok aygıtı
            $info = 'b';
            break;
        case 0x4000: // Dizin
            $info = 'd';
            break;
        case 0x2000: // Karakter aygıtı
            $info = 'c';
            break;
        case 0x1000: // FIFO boru
            $info = 'p';
            break;
        default: // Bilinmiyor
            $info = 'u';
     }

    // Kullanıcı
    $info .= (($perms & 0x0100) ? 'r' : '-');
    $info .= (($perms & 0x0080) ? 'w' : '-');
    $info .= (($perms & 0x0040) ?
                (($perms & 0x0800) ? 's' : 'x' ) :
                (($perms & 0x0800) ? 'S' : '-'));

    // Grup
    $info .= (($perms & 0x0020) ? 'r' : '-');
    $info .= (($perms & 0x0010) ? 'w' : '-');
    $info .= (($perms & 0x0008) ?
                (($perms & 0x0400) ? 's' : 'x' ) :
                (($perms & 0x0400) ? 'S' : '-'));

    // Herkes
    $info .= (($perms & 0x0004) ? 'r' : '-');
    $info .= (($perms & 0x0002) ? 'w' : '-');
    $info .= (($perms & 0x0001) ?
                (($perms & 0x0200) ? 't' : 'x' ) :
                (($perms & 0x0200) ? 'T' : '-'));

    echo $info;
    ?>

Yukarıdaki örneğin çıktısı:

    -rw-r--r--

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- chmod() - Dosya kipini değiştirir
- is_readable() - Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- stat() - Bir dosya hakkında bilgi döndürür

# filesize

(PHP 4, PHP 5, PHP 7, PHP 8)

filesize — Dosya uzunluğunu döndürür

### Açıklama

function filesize(string `$dosyaismi`): int|false

Belirtilen dosyanın uzunluğunu döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Başarı durumunda dosya boyunu bayt cinsinden döndürür, aksi takdirde `false` döndürür ve ayrıca `E_WARNING` seviyesinde bir hata iletisi üretilir.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - filesize() örneği

    <?php

    // çıktısı:
    // somefile.txt: 1024 bytes

    $filename = 'somefile.txt';
    echo $filename . ': ' . filesize($filename) . ' bytes';

    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar

# filetype

(PHP 4, PHP 5, PHP 7, PHP 8)

filetype — Dosya türünü döndürür

### Açıklama

function filetype(string `$dosyaismi`): string|false

Belirtilen dosyanın türünü döndürür.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

### Dönen Değerler

Dosyanın türünü döndürür. Olası değerler: fifo, char, dir, block, link, file, socket ve unknown.

Bir hata oluşursa `false` döner. eğer stat çağrısı başarısız olur veya dosya türü anlaşılamazsa ayrıca, bir `E_NOTICE` iletisi çıktılanır.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - filetype() örneği

    <?php

    echo filetype('/etc/passwd');
    echo "\n";
    echo filetype('/etc/');

    ?>

Yukarıdaki örneğin çıktısı:

    file
    dir

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
- is_link() - Dosya sembolik bağ ise bunu doğrular
- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
- mime_content_type() - Bir dosya için MIME içerik türünü saptar
- pathinfo() - Bir dosya yolu hakkında bilgi döndürür
- stat() - Bir dosya hakkında bilgi döndürür

# flock

(PHP 4, PHP 5, PHP 7, PHP 8)

flock — Öneri niteliğinde taşınabilir dosya kilitleme

### Açıklama

function flock(resource `$akım`, int `$işlem`, int `&$engellensin` = `null`): bool

flock() işlevi, sanal olarak her platformda (çoğu Unix türevi yanında Windows da dahil) kullanılabilen basit bir okuma/yazma modeli oluşturmanızı mümkün kılar.

Kilit, fclose() işlevinden başka `akım` çöp toplayıcıyla toplanırken de serbest bırakılır.

PHP, tavsiye niteliğinde dosyaların tamamını kilitlemenin taşınabilir bir türünü destekler (yani, dosyalara erişen tüm programların dosyaları kilitlerken aynı yöntemi kullanmaları zorunludur, aksi takdirde kullandıkları yöntem çalışmayacaktır). Öntanımlı olarak, bu işlev istenen kilit alınıncaya kadar bekler. Bu durum aşağıda açıklanan `LOCK_NB` seçeneği ile (Windows dışındaki platformlarda) değiştirilebilir.

### Bağımsız Değişkenler

`akım`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

`işlem`

  `işlem` şunlardan biri olabilir:

  - Paylaşımlı bir kilit (okuyucu) edinmek için `LOCK_SH`.
  - Ayrıcalıklı bir kilit (yazıcı) edinmek için `LOCK_EX`.
  - Bir kilidi (paylaşımlı veya ayrıcalıklı) serbest bırakmak için `LOCK_UN`.

  Kilitleme sırasında işlevin engelleme yapmasını istemiyorsanız yukarıdaki işlemlerden birine bir bit maskesi olarak `LOCK_NB` eklemek mümkündür (Windows'ta desteklenmez).

`engellesin`

  Kilidin engellemesi için isteğe bağlı üçüncü bağımsız değişkene 1 atanır (EWOULDBLOCK errno kuralı).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - flock() örneği

    <?php

    $dt = fopen("/tmp/lock.txt", "w");

    if (flock($dt, LOCK_EX)) { // ayrıcalıklı bir kilit elde edelim
        ftruncate($fp, 0);  // dosyayı kırp
        fwrite($dt, "Buraya bir şeyler yazalım\n");
        fflush($dt);            // kilidi bırakmadan önce çıkışı temizleyelim
        flock($dt, LOCK_UN); // kilidi serbest bırakalım
    } else {
        echo "Kilit edinilemedi!";
    }

    fclose($dt);

    ?>

Örnek 2 - `LOCK_NB` kullanarak flock()

    <?php
    $fp = fopen('/tmp/lock.txt', 'r+');

    /* LOCK_EX işlemi üstünde LOCK_NB'yi etkinleştirelim */
    if(!flock($fp, LOCK_EX | LOCK_NB)) {
        echo 'Kilit edinilemedi';
        exit(-1);
    }

    /* ... */

    fclose($fp);
    ?>

### Notlar

> Bilginize:

> flock() işlevi Windows altında zorunlu olarak kilitler. flock(), Windows'ta tavsiye niteliğinde kilitleme yerine zorunlu kilitlemeyi kullanır. Zorunlu kilitleme, Linux ve System V tabanlı işletim sistemlerinde, fcntl() sistem çağrısı tarafından desteklenen olağan mekanizma yoluyla desteklenir: yani, söz konusu dosya setgid izin bitine sahipse ve grup yürütme biti temizlenmişse. Linux'ta, bunun çalışması için dosya sisteminin de mand seçeneğiyle bağlanması gerekecektir.

> Bilginize:

> flock() işlevi bir dosya tanıtıcısı gerektirdiğinden bir dosyayı yazmak amacıyla açarken (fopen() işlevinde "w" veya "w+" bağımsız değişkenleri ile) içeriğini silebilmek için dosyaya başkalarının erişimini engellemeniz, yani özel bir kilit dosyası kullanmanız gerekir.

> Bilginize:

> Yalnızca yerel dosyalar için fopen() tarafından döndürülen dosya göstericilerinde veya streamWrapper::stream_lock() yöntemini uygulayan kullanıcı alanı akımların dosya göstericilerinde kullanılabilir.

Uyarı

Ardıl kodda `akım` bağımsız değişkenine başka bir değer atanması kilidin serbest kalmasına sebep olur.

Uyarı

Bazı işletim sistemlerinde flock() işlevi süreç seviyesinde gerçeklenmiştir. ISAPI gibi çok evreli bir API kullanıldığında, dosyaları aynı sunucu örneğinin paralel evrelerinde çalışan diğer PHP betiklerine karşı flock() üzerinden korumak mümkün olmayabilir!

flock() işlevi, `FAT` ve türevleri gibi artık antika olmuş dosya sistemlerinde desteklenmez ve bu ortamlarda daima `false` döndürür.

> Bilginize:

> Windows'ta, kilitleme süreci dosyayı ikinci kez açarsa, kilit kaldırılana kadar ikinci tanıtıcı üzerinden dosyaya erişemez.

# fnmatch

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

fnmatch — Dosya ismi belirtilen kalıpla eşleşiyor mu diye bakar

### Açıklama

function fnmatch(string `$kalıp`, string `$dosyaismi`, int `$seçenekler` = 0): bool

fnmatch() işlevi, belirtilen `dosyaismi`'nin belirtilen dosya kalıbı ile eşleşip eşleşmediğine bakar.

### Bağımsız Değişkenler

`kalıp`

  Eşleştirilecek `kalıp`. Normalde `kalıp` `'?'` ve `'*'` gibi kabuk dosya kalıplarıdır.

  `kalıp` olarak kullanılabilecek kabuk dosya kalıpları:
  Kalıp | Açıklama
  --- | ---
  `?` | Herhangi bir tek karakterle eşleşir. Örneğin `"file?.txt"` kalıbı `"file1.txt"` ve `"fileA.txt"` ile eşleşir ama `"file10.txt"` ile eşleşmez.
  `*` | Sıfır ya da daha fazla karakterle eşleşir. Örneğin, `"foo*.xml"` kalıbı `"foo.xml"` ve `"foobar.xml"` ile eşleşir.
  `[ ]` | Bir veya daha fazla karakter aralığı belirtmekte kullanılır. Örneğin, `"index.php[45]"` kalıbı `"index.php4"` ve `"index.php5"` ile eşleşir, ama `"index.phpt"` ile eşleşmez. Çok kullanılan aralıklar: `[0-9]`, `[a-z]` ve `[A-Z]`. Ayrıca, `[0-9a-zABC]` biçeminde birden fazla aralık da belirtilebilir
  `!` | Köşeli ayraçlar içinde karakterleri olumsuzlamakta kullanılır. Örneğin, `"[!A-Z]*.html"` kalıbı `"demo.html"` ile eşleşir ama `"Demo.html"` ile eşleşmez.
  `\` | Özel karakterleri öncelemekte kullanılır. Örneğin, `"Name\?"` kalıbı `"Name?"` ile eşleşir ama `"Names"` ile eşleşmez.

`dosyaismi`

  Sınanacak dizge. İşlev özellikle dosya isimleri için yararlı olsa da sıradan dizgeler için de kullanılabilir.

  Ortalama bir kullanıcı, kabuk dosya ismi kalıplarını veya bunların en basit biçimleri olan `'?'` ve `'*'` karakterlerini kullanabilir. Bu bakımdan, programcı olmayan kullanıcılar için preg_match() yerine fnmatch() kullanımı daha uygun olabilir.

`seçenekler`

  Belirtilebilecek seçenekler:

  fnmatch() işlevinin `seçenekler` bağımsız değişkeninde belirtilebilecek seçenekler
  `Seçenek` | Açıklama
  --- | ---
  `FNM_NOESCAPE` | \ karakteri kalıplarda özel olarak ele alınmaz. Normalde, \ kendinden sonraki karakteri önceler; bu seçenek etkinse bu özellik kapatılır, böylece sadece kendisiyle eşleşebilir. Önceleme etkin olduğunda, \? kalıbı sadece ? karakteri ile eşleşir, çünkü kalıp içindeki soru işareti sıradan bir karakter gibi işlem görür. Eğer `FNM_NOESCAPE` seçeneği etkinse, \ sıradan bir karakterdir.
  `FNM_PATHNAME` | Bu POSIX.2 ile gelen bir `FNM_FILE_NAME` takma ismidir.
  `FNM_PERIOD` | `.` karakteri dosya isimlerinin başında ise özel olarak ele alınır. Bu seçenek etkinse ve `.` karakteri `dizge` dizgesinin ilk karakteri ise kalıp ile eşleşemez. `FNM_PERIOD` ve `FNM_FILE_NAME` birlikte belirtilmişse, `.` karakterinin `dizge` dizgesinin başında olmasının yanında `/` karakterini izlediği durumda da eşleşme sağlanır. (Kabuk `FNM_PERIOD` ve `FNM_FILE_NAME` seçeneklerini dosya isimleriyle eşleşme ararken birlikte kullanır.)
  `FNM_CASEFOLD` | `dizge` ile `kalıp` karşılaştırılırken harf büyüklüğüne bakılmaz.

### Dönen Değerler

Eşleşme sağlanmışsa `true` aksi takdirde `false`.

### Örnekler

Örnek 1 - Bir renk isminin bir kabuk dosya kalıbıyla eşleştirilmesi

    <?php
    if (fnmatch("*gr[ae]y", $color)) {
      echo "grinin bir tonu ...";
    }
    ?>

### Notlar

Uyarı

Bu işlev şimdilik POSIX uyumlu olmayan sistemlerde kullanılamamaktadır, Windows hariç.

### Ayrıca Bakınız

- glob() - Bir kalıpla eşleşen dosya yollarını bulur
- preg_match() - Bir düzenli ifadeyi eşleştirmeye çalışır
- sscanf() - Girdi dizgesini belli bir biçeme göre yorumlar
- printf() - Biçemli bir dizge çıktılar
- sprintf() - Biçemli bir dizge döndürür

# fopen

(PHP 4, PHP 5, PHP 7, PHP 8)

fopen — Bir dosya veya URL'yi açar

### Açıklama

function fopen(
string `$dosyaismi`,
string `$kip`,
bool `$include_path_kullan` = `false`,
?resource `$bağlam` = `null`
): resource|false

fopen() işlevi `dosyaismi` ile belirtilen özkaynak için bir akım açar.

### Bağımsız Değişkenler

`dosyaismi`

  Eğer `dosyaismi` "şema://...", biçeminde belirtilmişse bir URL belirtildiği varsayılır ve PHP bu şema için bir protokol eylemcisi (başka bir deyişle bir sarmalayıcı) bulmaya çalışır. Eğer bu protokol için kayıtlı bir sarmalayıcı yoksa PHP, sorunun giderilmesine yardımcı olmanız için bir uyarı verip belirtilen dosya ismini sıradan bir dosya gibi ele alarak işleme devam eder.

  Eğer PHP `dosyaismi` ile belirtilen dosyanın bir yerel dosya olduğuna karar verirse bu dosya üzerinde bir akım açmaya çalışır. Dosya PHP için erişilebilir olmalıdır, yani dosyanın bu erişim için yeterli izinlere sahip olduğundan emin olmanız gerekir. open_basedir yönergesi etkinse bunlarla ilgili kısıtlamalar uygulanabilir.

  Eğer PHP `dosyaismi` ile belirtilen dosyanın bir URL olduğuna ve bununla ilgili kayıtlı bir protokol olduğuna karar verirse ve bu protokol bir ağ protokolü olarak kaydedilmişse PHP allow_url_fopen yönergesinin etkin olup olmadığına bakar. Eğer yönergeye 'Off' değeri atanmışsa PHP bir uyarı verip işlevin başarısız olmasını sağlar.

  > Bilginize:

  > Desteklenen protokolleri Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulabilirsiniz. Bazı protokoller (`sarmalayıcılar`) `bağlam` ve/veya php.ini seçeneklerini destekler. Kullanılabilecek seçeneklerin neler olduğunu öğrenmek için protokolle ilgili sayfaya bakınız (örneğin, `http` sarmalayıcısı `user_agent` php.ini yönergesini kullanır).

  Windows platformunda dosya yolunu belirtmekte kullanılan tersbölü çizgilerini öncelemeyi unutmayın. Daha da iyisi dosya yolunu belirtmek için bölü çizgilerini kullanın. Örnek:

      <?php
      $dt = fopen("c:\\dizin\\kaynak.txt", "r");
      ?>

`kip`

  `kip` bağımsız değişkeninde akım için gerekli erişim türü belirtilir. Şunlardan biri olabilir:

  fopen() işlevinin `kip` bağımsız değişkeninde belirtilebilecek kip çeşitleri
  `Kip` | Açıklama
  --- | ---
  `'r'` | Akım sadece okumak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir.
  `'r+'` | Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir.
  `'w'` | Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır.
  `'w+'` | Akım hem okumak hem de yazmak için açılması dışında `'w'` gibidir.
  `'a'` | Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. fseek() işlevi bu kipte etkisiz olup daima dosyanın sonuna yazar.
  `'a+'` | Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır. fseek() işlevi bu kipte etkisiz olup daima dosyanın sonuna yazar.
  `'x'` | Dosya oluşturulur ve sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() `false` döndürürek başarısız olur ve `E_WARNING` seviyesinde bir hata üretir. Dosya mevcut değilse oluşturulmaya çalışılır. Bu işlem, `open(2)` sistem çağrısı için `O_EXCL|O_CREAT` seçeneklerini belirtmeye eşdeğerdir.
  `'x+'` | Dosya oluşturulur ve hem okumak hem de yazmak için açılır; aksi takdirde `'x'` verilmiş gibi davranır. eşdeğerdir.
  `'c'` | Dosya yalnızca yazmak için açılır. Dosya yoksa oluşturulur. Varsa, ne kesilir (`'w'` bağımsız değişkenininin aksine), ne de bu işleve yapılan çağrı başarısız olur (`'x'` durumunda olduğu gibi). Dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosyayı değiştirmeye çalışmadan önce bir tavsiye kilidi (flock() bölümüne bakın) isteniyorsa bu yararlı olabilir, `'w'` kullanımındaki gibi kilitlenmeden önce dosyayı kesebilir (kesme istenirse, kilit talep edildikten sonra ftruncate() kullanılabilir). requested).
  `'c+'` | Dosya hem okumak hem de yazmak için açılır; aksi takdirde, `'c'` bağımsız değişkenindeki gibi davranır.
  `'e'` | Açık dosya konumlayıcıya close-on-exec bayrağını uygular. Sadece PHP, POSIX.1-2008 uyumlu sistemler üzerinde derlenmişse kullanılabilir.

  > Bilginize:

  > Her işletim sistemi ailesinin farklı satır sonlandırma kuralları vardır. Bir metin dosyasını yazarken işletim sisteminizin gerektirdiği satır sonlandırma karakterlerini kullanmanız gerekir. Unix ve türevleri satırları sonlandırmak için `\n`, Windows ailesi `\r\n`, Mac'ler ise (Mac OS Classic) `\r` karakterini kullanır.

  > Dosyalarınızı yazarken yanlış satır sonlandırma karakterleri kullanırsanız, dosyayı başka uygulamalarda açtığınızda tuhaf görünebilir.

  > Windows'un `\n` karakterlerini şeffaf olarak `\r\n` karakterlerine dönüştürmesini sağlayan bir metin kipi dönüşüm seçeneği (`'t'`) vardır. Eğer satır sonlandırma karakterlerinin değişmeden kalmasını istiyorsanız ikil kipi devreye sokan `'b'` seçeneğini kullanabilirsiniz. Bu seçenekleri (`'b'` veya `'t'`) `kip` bağımsız değişkeninde daima son karakter olarak belirtin.

  > Öntanımlı dönüşüm kipi `'b'`'dir. Salt metin dosyalarla çalışıyorsanız ve betiğinizde satır sonu karakteri olarak `\n` kullanıyorsanız, fakat dosyalarınızın notepad'in eski sürümleri gibi uygulamalarla da okunabilmesini istiyorsanız `'t'` kipini kullanmanız, diğer tüm durumlarda ise `'b'` kipini kullanmanız gerekir.

  > İkil dosyalarla çalışırken 't' seçeneğini belirseniz, verinizle ilgili tuhaf sorunlarla karşılaşabilirsiniz (örneğin, bozuk görüntü dosyaları ve `\r\n` karakterlerine bağlı tuhaf sorunlar).

  > Bilginize:

  > Uyumluluk adına, dosyanızı `'t'` seçeneğinin kullanılmasını gerektirmeyecek satır sonlandırma karakterleri ile yazmanızı ve dosyayı açarken daima `'b'` seçeneğini kullanmanızı hararetle tavsiye ederiz.

  > Bilginize: php://output, php://input, php://stdin, php://stdout, php://stderr ve php://fd akım sarmalayıcıları için `kip` yok sayılır.

`include_path_kullan`

  Açılacak dosyanın aranacağı yollara include_path yönergesinde belirtilen yolların da eklenmesi için, isteğe bağlı olan bu üçüncü bağımsız değişkene `true` aktarılmalıdır.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Başarı durumunda bir dosya tanıtıcısı aksi takdirde `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.0.16, 7.1.2 | `'e'` seçeneği eklendi.

### Örnekler

Örnek 1 - fopen() örnekleri

    <?php
    $dt = fopen("/home/rasmus/file.txt", "r");
    $dt = fopen("/home/rasmus/file.gif", "wb");
    $dt = fopen("http://www.example.com/", "r");
    $dt = fopen("ftp://user:password@example.com/somefile.txt", "w");
    ?>

### Notlar

Uyarı

Microsoft IIS, SSL kullanırken bir `close_notify` göndermeden bağlantıyı kapatarak protokolle çelişir. Verinin sonuna ulaştığınız zaman PHP bunu "SSL: Fatal Protocol Error" (SSL: "Ölümcül Protokol Hatası") olarak raporlar. Bu sorunu bertaraf etmek için error_reporting değerini uyarıları içermeyecek bir seviyeye indirmek gerekir. PHP, akımı `https://` şeması kullanılarak açılırsa hatalı IIS sunucu yazılımını saptayıp uyarıları engelleyebilir. Bir `ssl://` soketi oluşturmak için fsockopen() kullanılacaksa uyarıları saptayıp engellemekten geliştirici sorumludur.

> Bilginize:

> PHP'nin sunucu modülü sürümünü kullanıyorsanız ve dosyaları okumak ve yazmak ile ilgili sorunlar bakımından deneyimliyseniz, sunucu sürecinin bu dosya ve dizinlere erişim izninin olması gerektiğini aklınızdan çıkarmamalısınız.

> Bilginize:

> `dosyaismi` bir dizin olduğunda da bu işlev başarılı olabilir. `dosyaismi`'nin bir dosya mı yoksa bir dizin mi olduğundan emin olamıyorsanız fopen() işlevini çağırmadan önce is_dir() kullanmanız gerekebilir.

### Ayrıca Bakınız

- Desteklenen Protokoller ve Sarmalayıcılar
- fclose() - Açık bir dosya tanıtıcısını kapatır
- fgets() - Dosya tanıtıcısından bir satır döndürür
- fread() - Dosyayı ikil kipte okur
- fwrite() - Dosyaya ikil kipte yazar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- file() - Dosya içeriğinin tamamını bir diziye okur
- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
- is_readable() - Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- stream_set_timeout() - Akımın zaman aşımı süresini ayarlar
- popen() - Bir süreç tanıtıcısı açar
- stream_context_create() - Bir akım bağlamı oluşturur
- umask() - Geçerli izin maskesini değiştirir
- SplFileObject

# fpassthru

(PHP 4, PHP 5, PHP 7, PHP 8)

fpassthru — Bir dosya tanıtıcısında kalan verinin tamamını çıktılar

### Açıklama

function fpassthru(resource `$dt`): int

Belirtilen dosya tanıtıcısını geçerli konumdan dosya sonuna kadar okur ve sonucu çıktı tamponuna yazar.

Veriyi dosyaya yazmayı bitirmişseniz, dosya konumlayıcıyı dosyanın başlangıcına getirmek için rewind() işlevini kullanabilirsiniz.

Dosyada değişiklik yapmadan veya dosya konumlayıcıyı belli bir konuma taşımadan sadece bir dosyanın içeriğini dökümlemekse amacınız, sizi fopen() çağrısı yapmaktan kurtaran readfile() işlevini kullanabilirsiniz.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

`dt`'den okunup çıktı tamponuna aktarılan karakterlerin sayısı ile döner.

### Örnekler

Örnek 1 - İkil dosyalarla fpassthru() kullanımı

    <?php

    // dosyayı ikil kipte açalım
    $name = './img/ok.png';
    $fp = fopen($name, 'rb');

    // Doğru başlıkları gönderelim
    header("Content-Type: image/png");
    header("Content-Length: " . filesize($name));

    // Görüntüyü tampona atıp betiği durduralım
    fpassthru($fp);
    exit;

    ?>

### Notlar

> Bilginize:

> İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip bağımsız değişkenine 'b' harfi dahil edilmelidir.

> Sisteminiz `b` seçeneğinin kullanımını gerektirmiyor olsa bile, betiğinizin taşınabilirliği açısından bu seçeneğin de kullanılmasını teşvik ediyoruz.

### Ayrıca Bakınız

- readfile() - Bir dosyayı çıktılar
- fopen() - Bir dosya veya URL'yi açar
- popen() - Bir süreç tanıtıcısı açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar

# fputcsv

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

fputcsv — Satırı CSV olarak biçemler ve dosya tanıtıcısına yazar

### Açıklama

function fputcsv(
resource `$akım`,
array `$alanlar`,
string `$ayraç` = ",",
string `$sınırlayıcı` = "\"",
string `$öncelem` = "\\",
string `$satır_sonu` = "\n"
): int|false

fputcsv() işlevi `alanlar` dizisi içinde aktarılan bir dizgeyi bir CSV satırı olarak biçemler ve sonuna bir satırsonu karakteri ekleyerek `akım` ile belirtilen dosya tanıtıcısına yazar.

### Bağımsız Değişkenler

`akım`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

`alanlar`

  Dizge dizisi.

`ayraç`

  İsteğe bağlı bu bağımsız değişken ile alan ayracı (tek baytlık bir karakter) belirtilir.

`sınırlayıcı`

  İsteğe bağlı bu bağımsız değişken ile alan sınırlayıcı (tek baytlık bir karakter) belirtilir.

`öncelem`

  Belirtilmesi seçimlik olup önceleme karakteri (tek baytlık bir karakter) belirtmekte kullanılır. Boş dizge (`""`) özel önceleme mekanizmasını iptal eder.

`satır_sonu`

  Seçimlik `satır_sonu` bağımsız değişkeni ile satırsonu karakteri değiştirilebilir.

Uyarı

When `escape` is set to anything other than an empty string (`""`) it can result in CSV that is not compliant with » RFC 4180 or unable to survive a roundtrip through the PHP CSV functions. The default for `escape` is `"\\"` so it is recommended to set it to the empty string explicitly. The default value will change in a future version of PHP, no earlier than PHP 9.0.

> Bilginize:

> `sınırlayıcı` karakteri içeren bir alan varsa ve `öncelem` karakteri ile öncelenmemişse, `sınırlayıcı` karakter kendisiyle öncelenir.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde yazılan dizgenin uzunluğu döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Seçimlik `satır_sonu` bağımsız değişkeni eklendi.
7.4.0 | `öncelem` bağımsız değişkeni, özel önceleme mekanizmasını iptal edebilmek için artık boş dizge kabul ediyor.

### Örnekler

Örnek 1 - fputcsv() örneği

    <?php
    $liste = array (
        array('aaa', 'bbb', 'ccc', 'dddd'),
        array('123', '456', '789'),
        array('"aaa"', '"bbb"')
    );

    $dt = fopen('file.csv', 'w');

    foreach ($liste as $alan) {
        fputcsv($dt, $alan);
    }

    fclose($dt);
    ?>

Yukarıdaki örnek `file.csv` dosyasına şunları yazar:

    aaa,bbb,ccc,dddd
    123,456,789
    """aaa""","""bbb"""

### Notlar

> Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

### Ayrıca Bakınız

- fgetcsv() - Dosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür

# fputs

(PHP 4, PHP 5, PHP 7, PHP 8)

fputs — fwrite() işlevinin takma adıdır

### Açıklama

Bu işlev fwrite() işlevinin takma adıdır.

# fread

(PHP 4, PHP 5, PHP 7, PHP 8)

fread — Dosyayı ikil kipte okur

### Açıklama

function fread(resource `$dt`, int `$uzunluk`): string|false

fread() işlevi, `dt` dosya tanıtıcısı ile belirtilen dosya akımından `uzunluk` bayta kadar veri okur. Okuma işlemi aşağıdaki koşullardan biri sağlanır sağlanmaz durur:

- `uzunluk` bayt okununca.
- Dosya sonuna ulaşılınca.
- Bir paket kullanılabilir hale gelince veya soket zaman aşımına uğrayınca (ağ akımları için).
- Eğer akım arabelleğe alınmışsa ve düz bir dosyaya ait değilse, en fazla yığıt boyutuna (genellikle 8192) eşit sayıda bayta kadar bir okuma yapılır; önceden arabelleğe alınan verilere bağlı olarak, döndürülen verilerin boyutu yığıt boyutundan daha büyük olabilir.

### Bağımsız Değişkenler

`dt`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

`uzunluk`

  Okunacak azami bayt sayısı.

### Dönen Değerler

Hata durumunda `false` aksi takdirde okunan dizge döner.

### Örnekler

Örnek 1 - Basit bir fread() örneği

    <?php
    // bir dosyanın içeriğini bir dizge olarak okuyalım
    $dosya = "/usr/local/birmetin.txt";
    $dt = fopen($dosya, "r");
    $içerik = fread($dt, filesize($dosya));
    fclose($dt);
    ?>

Örnek 2 -İkil fread() örneği

Uyarı

İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip bağımsız değişkenine 'b' harfi dahil edilmelidir.

    <?php
    $dosya = "c:\\files\\birresim.gif";
    $dt = fopen($dosya, "rb");
    $içerik = fread($dt, filesize($dosya));
    fclose($dt);
    ?>

Örnek 3 - Uzak fread() örnekleri

Uyarı

Okuma işlemi sıradan bir dosyadan değil de popen() ve fsockopen() işlevinden veya uzak dosyalar okunurken dönen akımlardan yapılıyorsa bir paket kullanılabilir hale gelince okuma işlemi durur. Yani, veriyi aşağıdaki örnekte gösterildiği gibi parçalar halinde toplamalısınız.

    <?php
    $dt = fopen("http://www.example.com/", "rb");
    $içerik = stream_get_contents($dt);
    fclose($dt);
    ?>

    <?php
    $dt = fopen("http://www.example.com/", "rb");
    if (FALSE === $dt) {
        exit("URL'ye akım açılamadı");
    }

    $içerik = '';

    while (!feof($dt)) {
        $içerik .= fread($dt, 8192);
    }
    fclose($dt);
    ?>

### Notlar

> Bilginize:

> İstediğiniz bir dosyanın içeriğini bir dizge olarak almaksa, yukarıdaki koddan çok daha iyi başarım sağlayan file_get_contents() işlevini kullanın.

> Bilginize:

> fread() işlevinin mevcut dosya konumundan okuduğuna dikkat edin. Dosya konumlayıcının mevcut konumunu öğrenmek için ftell(), konumu dosyanın başına taşımak için rewind()işlevini kullanın.

### Ayrıca Bakınız

- fwrite() - Dosyaya ikil kipte yazar
- fopen() - Bir dosya veya URL'yi açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- popen() - Bir süreç tanıtıcısı açar
- fgets() - Dosya tanıtıcısından bir satır döndürür
- fgetss() - Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
- fscanf() - Bir dosyadaki girdiyi belli bir biçeme göre çözümler
- file() - Dosya içeriğinin tamamını bir diziye okur
- fpassthru() - Bir dosya tanıtıcısında kalan verinin tamamını çıktılar
- fseek() - Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
- ftell() - Dosya okuma/yazma konumlayıcının mevcut konumu ile döner
- rewind() - Bir dosya tanıtıcısında konumu başa taşır
- unpack() - Paketlenmiş bir ikil dizgeden verileri ayrıştırır

# fscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

fscanf — Bir dosyadaki girdiyi belli bir biçeme göre çözümler

### Açıklama

function fscanf(resource `$dt`, string `$biçem`, mixed `&...$değerler`): array|int|false|null

fscanf() işlevi, girdisini `dt` ile ilişkili bir dosyadan alması ve bu girdiyi belirtilen `biçem`'e göre yorumlaması dışında sscanf() işlevine benzer.

Biçem dizgesindeki boşluk karakterleri girdi akımındaki boşluk karakterleri ile eşleşir. Yani, biçem dizgesindeki bir sekme karakteri (`\t`) girdi dizgesindeki tek bir boşluk karakteri (" ") ile eşleşebilir.

Her fscanf() çağrısı dosyadan tek bir satır okur.

### Bağımsız Değişkenler

`dt`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

`biçem`

  Girdi `dizge`sinin yorumlanmasında kullanılan bu dizge ile ilgili ayrıntılar aşağıdaki farklar dışında sprintf() işlevinin belgesinde açıklanmıştır:

  - İşlev yerele duyarlı değildir.
  - `F`, `g`, `G` and `b` desteklenmez.
  - `D` ondalık sayı anlamına gelir.
  - `i` taban algılamalı tamsayı anlamına gelir.
  - `n` şimdiye kadar işlenen karakter sayısı anlamına gelir.
  - `s` herhangi bir boşluk karakterinde okumayı durdurur.
  - `dğşnum$` yerine `*` bu dönüştürme belirtiminin atamasını baskılar.
`değerler`

  İsteğe bağlı atanmış değerler.

### Dönen Değerler

Bu işleve sadece iki bağımsız değişken aktarılırsa çözümlenen değerler bir dizi olarak döndürülür. Aksi takdirde, eğer isteğe bağlı bağımsız değişkenler aktarılırsa işlev atanan değerlerin sayısı ile döner. İsteğe bağlı değerler gönderimli aktarılmalıdır.

`biçem` dizgesi içinde gerekenden daha fazla alt dizge mevcutsa işlev `null` döner. Diğer hata durumlarında `false` döner.

### Örnekler

Örnek 1 - fscanf() örneği

    <?php
    $dt = fopen("kişiler.txt", "r");
    while ($kişiselveri = fscanf($dt, "%s\t%s\t%s\n")) {
        list ($isim, $meslek, $ülkekodu) = $kişiselveri;
        //... değerlerle yapılan işlemler
    }
    fclose($dt);
    ?>

Örnek 2 - kişiler.txt içeriği

    avni      avanak        tr
    varyemez  işadamı       us
    tenten    gezgin        fr
    zagor     kahraman      ca

### Ayrıca Bakınız

- fread() - Dosyayı ikil kipte okur
- fgets() - Dosya tanıtıcısından bir satır döndürür
- fgetss() - Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
- sscanf() - Girdi dizgesini belli bir biçeme göre yorumlar
- printf() - Biçemli bir dizge çıktılar
- sprintf() - Biçemli bir dizge döndürür

# fseek

(PHP 4, PHP 5, PHP 7, PHP 8)

fseek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır

### Açıklama

function fseek(resource `$dt`, int `$nereye`, int `$nereden` = `SEEK_SET`): int

Dosya tanıtıcısı `dt` ile belirtilen bir dosyada konum göstericisini belli bir konuma götürür. Dosyanın başlangıcından itibaren bayt sayısı olarak ölçülen yeni konum, `nereden` değerine `nereye` değeri eklenerek belirtilir.

Genel olarak, dosyanın sonununu aşan konumlamaya izin verilir; veri daha sonra yazılırsa, dosyanın sonu ile istenen konum arasındaki herhangi bir yazılı olmayan bölgedeki okumalar 0 değerine sahip baytlar verir. Ancak, özellikle temelde sabit boyutlu bir depolama alanı olan bazı akımlar bu davranışı desteklemeyebilir.

### Bağımsız Değişkenler

`dt`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

`nereye`

  Yeni konum.

  Konumu dosya sonunun öncesine taşımak için bu bağımsız değişkenle negatif bir değer, `nereden` bağımsız değişkeniyle de `SEEK_END` aktarın.

`nereden`

  Mevcut konumun nasıl yorumlanacağı belirtilir:

  - `SEEK_SET` - `nereye` konumunun dosya başlangıcından itibaren belirtildiği varsayılır.
  - `SEEK_CUR` - `nereye` konumunun mevcut dosya konumundan itibaren bayt sayısı olarak belirtildiği varsayılır. Bu miktar pozitif veya negatif olabilir.
  - `SEEK_END` - `nereye` konumunun dosya sonundan itibaren belirtildiği varsayılır.

### Dönen Değerler

Başarı durumunda 0 aksi takdirde -1 döner.

### Örnekler

Örnek 1 - fseek() örneği

    <?php

    $fp = fopen('dosya.txt', 'r');

    // Biraz veri okuyalım
    $data = fgets($fp, 4096);

    // rewind($fp) çağrısı yapmış gibi
    // dosyanın başına dönelim;
    fseek($fp, 0);

    ?>

### Notlar

> Bilginize:

> Eğer dosya, ekleme (`a` veya `a+`) kipinde açılmışsa, dosyaya yazılan her veri konuma bakılmaksızın daima dosyanın sonuna eklenir. fseek() çağrısının bu durumdaki sonucu tanımsızdır.

> Bilginize:

> Tüm akımlar dosya içi konumlamayı desteklemez. Konumlamayı desteklemeyenler için, mevcut konumdan ileriye doğru bir konumlama, verileri okuyup terkederek gerçekleştirilir; diğer konumlama biçimleri başarısız olacaktır.

### Ayrıca Bakınız

- ftell() - Dosya okuma/yazma konumlayıcının mevcut konumu ile döner
- rewind() - Bir dosya tanıtıcısında konumu başa taşır

# fstat

(PHP 4, PHP 5, PHP 7, PHP 8)

fstat — Bir açık dosya tanıtıcısı kullanarak bir dosya hakkında bilgi döndürür

### Açıklama

function fstat(resource `$dt`): array|false

Dosya tanıtıcısı `dt` olan bir dosya ile ilgili istatistikleri döndürür. Bir dosya ismi yerine açık bir dosya tanıtıcısı üzerinde çalışması dışında stat() işlevi gibidir.

### Bağımsız Değişkenler

`dt`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

### Dönen Değerler

Dosya ile ilgili istatistikleri içeren bir dizi döndürür. Dönen dizinin biçemi hakkında bilgi edinmek için stat() işlevine bakınız. Başarısızlık durumunda `false` döndürür.

### Örnekler

Örnek 1 - fstat() örneği

    <?php

    // bir dosya açalım
    $fp = fopen("/etc/passwd", "r");

    // istatistikleri toplayalım
    $fstat = fstat($fp);

    // dosyayı kapatalım
    fclose($fp);

    // sadece ilişkisel kısmı basar
    print_r(array_slice($fstat, 13));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [dev] => 771
        [ino] => 488704
        [mode] => 33188
        [nlink] => 1
        [uid] => 0
        [gid] => 0
        [rdev] => 0
        [size] => 1114
        [atime] => 1061067181
        [mtime] => 1056136526
        [ctime] => 1056136526
        [blksize] => 4096
        [blocks] => 8
    )

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

# fsync

(PHP 8 >= 8.1.0)

fsync — Değişiklikleri dosyaya eşzamanlar (meta-veri dahil)

### Açıklama

function fsync(resource `$stream`): bool

Bu işlev, meta-verisi dahil olmak üzere dosyadaki değişiklikleri eşzamanlar. Bu, fflush() işlevine benzer, ancak ayrıca işletim sistemine depolama ortamına yazmasını da söyler.

### Bağımsız Değişkenler

`stream`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 fsync() örneği

    <?php

    $file = 'test.txt';

    $stream = fopen($file, 'w');
    fwrite($stream, 'test data');
    fwrite($stream, "\r\n");
    fwrite($stream, 'additional data');

    fsync($stream);
    fclose($stream);
    ?>

### Ayrıca Bakınız

- fdatasync() - Veriyi (meta-veriyi değil) dosyaya eşzamanlar
- fflush() - Çıktıyı bir dosyaya boşaltır

# ftell

(PHP 4, PHP 5, PHP 7, PHP 8)

ftell — Dosya okuma/yazma konumlayıcının mevcut konumu ile döner

### Açıklama

function ftell(resource `$dt`): int|false

Dosya tanıtıcısı `dt` ile belirtilen dosyadaki dosya konumlayıcının konumunu döndürür.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() veya popen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır. ftell() işlevi sadece ekleme kipinde ('a' seçeneği ile) açılmış akımlarda yanlış sonuçlar verebilir.

### Dönen Değerler

Dosya tanıtıcısı `dt` ile belirtilen dosyadaki dosya konumlayıcının konumunu (dosyanın başlangıcına göre) döndürür.

Bir hata oluşursa `false` döner.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Örnekler

Örnek 1 - ftell() örneği

    <?php

    // Bir dosya açıp biraz veri okuyalım
    $fp = fopen("/etc/passwd", "r");
    $data = fgets($fp, 12);

    // Bakalım neredeyiz?
    echo ftell($fp); // 11

    fclose($fp);

    ?>

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar
- popen() - Bir süreç tanıtıcısı açar
- fseek() - Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
- rewind() - Bir dosya tanıtıcısında konumu başa taşır

# ftruncate

(PHP 4, PHP 5, PHP 7, PHP 8)

ftruncate — Bir dosyayı belli bir uzunlukta budar

### Açıklama

function ftruncate(resource `$dt`, int `$boyut`): bool

Dosya tanıtıcısı `dt` ile belirtilen dosyanın uzunluğunu `boyut` baytla sınırlar.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı.

  > Bilginize:

  > `dt` yazmak için açılmış olmalıdır.

`boyut`

  Budama boyu.

  > Bilginize:

  > Eğer `boyut` dosyadan büyükse dosya \0 baytları ile doldurularak `boyut` bayta genişletilir.

  > Eğer `boyut` dosyadan küçükse artan kısım kaybedilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Dosya boyutunu sınırlama örneği

    <?php
    $dosya = 'lorem_ipsum.txt';

    $dt = fopen($dosya, 'r+');
    ftruncate($dt, rand(1, filesize($dosya)));
    rewind($dt);
    echo fread($dt, filesize($dosya));
    fclose($dt);
    ?>

### Notlar

> Bilginize:

> Dosya tanıtıcısı değişmez.

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar
- fseek() - Dosya tanıtıcısında konumu bir yerden başka bir yere taşır

# fwrite

(PHP 4, PHP 5, PHP 7, PHP 8)

fwrite — Dosyaya ikil kipte yazar

### Açıklama

function fwrite(resource `$akım`, string `$veri`, ?int `$uzunluk` = `null`): int|false

fwrite() işlevi, `veri` dizgesini dosya tanıtıcısı `akım` ile belirtilen dosya akımına yazar.

### Bağımsız Değişkenler

`akım`

  Bir dosya tanıtıcısı. Genellikle fopen() kullanılarak oluşturulur.

`veri`

  Akıma yazılacak dizge.

`uzunluk`

  `uzunluk` bağımsız değişkeni bir tamsayı ise yazma işlemi `uzunluk` bayt yazıldıktan sonra veya `dizge` dizgesinin sonuna gelindiğinde durur (hangisi önce vuku bulursa).

### Dönen Değerler

fwrite() işlevi bir hata oluşmamışsa yazılan baytların sayısını, aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

fwrite() başarısızlık durumunda `E_WARNING` çıktılar.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `uzunluk` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Basit bir fwrite() örneği

    <?php
    $dosya = 'dnm.txt';
    $veri = "Bunu dosyaya ekleyelim\n";

    // Önce dosya mevcut mu ve yazılabilir mi, bakalım.
    if (is_writable($dosya)) {

        // Örneğimizde $dosya'yı ekleme kipinde açıyoruz.
        // Konumlayıcı dosyanın sonunda olduğundan fwrite()
        // $veri dizgesini dosyanın sonuna ekleyecektir.
        if (!$dt = fopen($dosya, 'a')) {
             echo "$dosya dosyası açılamadı";
             exit;
        }

        // $veri'yi açılan dosyaya yazalım.
        if (fwrite($dt, $veri) === FALSE) {
            echo "$dosya dosyasına yazılamıyor";
            exit;
        }

        echo "$dosya dosyasına '$veri' başarıyla yazıldı";

        fclose($dt);

    } else {
        echo "$dosya dosyası yazılabilir değil";
    }
    ?>

### Notlar

> Bilginize:

> Bir ağ akımına yazarken, dizgenin tamamı yazılamadan akım kapanabilir. Bu durum fwrite() dönüş değerinden saptanabilir:

>     <?php
>     function fwrite_stream($fp, $string) {
>         for ($written = 0; $written < strlen($string); $written += $fwrite) {
>             $fwrite = fwrite($fp, substr($string, $written));
>             if ($fwrite === false) {
>                 return $written;
>             }
>         }
>         return $written;
>     }
>     ?>

> Bilginize:

> İkil ve metin dosyaları farklı ele alan sistemlerde (Windows gibi) dosya açılırken fopen() işlevinin kip bağımsız değişkenine 'b' harfi dahil edilmelidir.

> Bilginize:

> Eğer `akım` dosya sonuna ekleme kipinde açılmışsa (bazı sistemlerde ve dosya yerel dosya sisteminde olduğu sürece `veri` uzunluğu dosya sisteminin blok boyunu aşmadığı takdirde) yazma işlemi atomiktir. Yani, fwrite() işlevini çağırmadan önce dosya tanıtıcısını flock() ile kilitlemeye gerek yoktur; tüm veri kesintiye uğramaksızın yazılacaktır.

> Bilginize:

> Eğer dosya tanıtıcısında peşpeşe iki yazma yaparsanız, her iki veri de dosyanın sonuna eklenir:

>     <?php
>     $dt = fopen('veri.txt', 'w');
>     fwrite($dt, '1');
>     fwrite($dt, '23');
>     fclose($dt);

>     // veri.txt dosyasının içeriği '123' değil '23' olacaktır.
>     ?>

### Ayrıca Bakınız

- fread() - Dosyayı ikil kipte okur
- fopen() - Bir dosya veya URL'yi açar
- fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
- popen() - Bir süreç tanıtıcısı açar
- file_get_contents() - Dosya içeriğinin tamamını bir dizge olarak döndürür
- pack() - Veriyi ikil bir dizge halinde paketler

# glob

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

glob — Bir kalıpla eşleşen dosya yollarını bulur

### Açıklama

function glob(string `$kalıp`, int `$seçenekler` = 0): array|false

glob() işlevi, dosya yollarını, kabuklarda kullanılana benzer şekilde, libc glob() işlevi tarafından kullanılan kurallara uygun olarak belli bir `kalıp` ile eşleştirmeye çalışır.

### Bağımsız Değişkenler

`kalıp`

  Dosya eşleştirme kalıbı. Yaklaşık (~) veya bağımsız değişken yorumlaması yapılmaz.

  Özel karakterler:

  - `*` - Sıfır veya daha fazla karakterle eşleşir.
  - `?` - Tek bir karakterle eşleşir (herhangi bir karakter).
  - `[...]` - Bir karakter grubundaki tek bir karakter ile eşleşir. İlk karakter `!` ise eşleşme grupta olmayan bir karakterle gerçekleşir.
  - `\` - `GLOB_NOESCAPE` seçeneği etkin değilse önündeki karakteri önceler.
`seçenekler`

  Geçerli seçenekler:

  `GLOB_BRACE` (int)
    {a,b,c} kalıbını 'a', 'b', veya 'c' ile eşleşecek şekilde genişletir.

    > Bilginize: `GLOB_BRACE` Solaris, Alpine Linux gibi bazı GNU sistemlerinde kullanılamaz.

  `GLOB_ERR` (int)
    Okuma hatalarında işlemi durdurur (okunamayan dizinler gibi); öntanımlı olarak hatalar yoksayılır.
  `GLOB_ONLYDIR` (int)
    Sadece kalıpla eşleşen dizinleri döndürür.
  `GLOB_MARK` (int)
    Dönen her dizine bir bölü çizgisi ekler (Windows üzerinde ters bölü çizgisi ekler).
  `GLOB_NOSORT` (int)
    Dosyaları dizinde göründükleri sırayla döndürür (sıralamaz). Bu seçenek kullanılmadığında dosya yolları abecesel sıralanır.
  `GLOB_NOCHECK` (int)
    Hiçbir eşleşme bulunamazsa arama kalıbını döndürür.
  `GLOB_NOESCAPE` (int)
    Tersbölüler denetim karakterlerini öncelemez.
  `GLOB_AVAILABLE_FLAGS` (int)
    Tüm `GLOB_*` seçenekleri VEYAlanamaz. Bunlar `0`'a eşdeğerdir: `GLOB_BRACE` | `GLOB_MARK` | `GLOB_NOSORT` | `GLOB_NOCHECK` | `GLOB_NOESCAPE` | `GLOB_ERR` | `GLOB_ONLYDIR`

### Dönen Değerler

Eşleşen dosya ve dizinleri içeren bir dizi döndürür. Bir eşleşme bulunamazsa veya hata oluşursa `false` döndürür.

> Bilginize:

> Bazı sistemlerde boş eşleşme ile hata durumunu ayrımsamak mümkün değildir.

### Örnekler

Örnek 1 glob() işlevini opendir() ve arkadaşları ile değiştirmenin uygun yolu

    <?php
    foreach (glob("*.txt") as $dosya) {
        echo "$dosya boyu " . filesize($dosya) . "\n";
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    funclist.txt boyu 44686
    funcsummary.txt boyu 267625
    quickref.txt boyu 137820

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Bu işlevi bazı sistemlerde kullanamazsınız (örneğin, eski Sun OS'lar).

### Ayrıca Bakınız

- opendir() - Belirtilen dizin için bir tanıtıcı döndürür
- readdir() - Dizinden bir girdinin ismini okur
- closedir() - Dizin tanıtıcısını kapatır
- fnmatch() - Dosya ismi belirtilen kalıpla eşleşiyor mu diye bakar

# is_dir

(PHP 4, PHP 5, PHP 7, PHP 8)

is_dir — Bir dosyanın bir dizin olup olmadığını söyler

### Açıklama

function is_dir(string `$dosyaismi`): bool

Belirtilen dosyanın bir dizin olup olmadığını söyler.

### Bağımsız Değişkenler

`dosyaismi`

  Dosyanın yolu. Eğer `dosyaismi` bir göreli yol belirtiyorsa, çalışma dizinine göreli olduğu varsayılır; bir sembolik veya sabit bağ ise bağ çözümlenip hedefinin bir dizin olup olmadığına bakılır. open_basedir etkin kılınmışsa ilgili kısıtlamalar uygulanabilir.

### Dönen Değerler

`dosyaismi` ile belirtilen dosya mevcutsa ve bir dizin ise `true` aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_dir() örneği

    <?php
    var_dump(is_dir('bir_dosya.txt'));
    var_dump(is_dir('bir_dizin/abc'));

    var_dump(is_dir('..')); // bir dizin yukarı
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(true)

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- chdir() - Dizin değiştirir
- dir() - Directory sınıfının örneğini döndürür
- opendir() - Belirtilen dizin için bir tanıtıcı döndürür
- is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
- is_link() - Dosya sembolik bağ ise bunu doğrular

# is_executable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_executable — Bir dosyanın çalıştırılabilir bir dosya olup olmadığını söyler

### Açıklama

function is_executable(string `$dosyaismi`): bool

Belirtilen dosyanın çalıştırılabilir bir dosya olup olmadığını söyler.

### Bağımsız Değişkenler

`dosyaismi`

  Dosyanın yolu.

### Dönen Değerler

`dosyaismi` ile belirtilen dosya mevcutsa ve çalıştırılabilir bir dosya ise `true` aksi takdirde `false` döndürür. POSIX sistemlerde, dosya izinlerinde çalıştırılabilir biti etkin kılınmışsa dosya çalıştırılabilir bir dosya olur. Windows için aşağıda Notlar bölümüne bakın.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_executable() örneği

    <?php

    $dosya = '/home/vincent/somefile.sh';

    if (is_executable($dosya)) {
        echo $dosya.' çalıştırılabilir';
    } else {
        echo $dosya.' çalıştırılamaz';
    }

    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

> Bilginize: Windows'ta, bir dosya Win API `GetBinaryType()` tarafından tamamen çalıştırılabilir bir dosya olarak raporlanıyorsa dosya çalıştırılabilir bir dosya olarak kabul edilir. Tarihsel sebeplerle, .bat ve .cmd uzantılı dosyalar da çalıştırılabilir dosyalar olarak kabul edilir. PHP 7.4.0 öncesinde, .exe veya .com uzantılı bir dosya boş değilse çalıştırılabilir dosya olduğu varsayılırdı. is_executable() işlevi açısından PATHEXT'in konu dışı oluşuna dikkat edin.

### Ayrıca Bakınız

- is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
- is_link() - Dosya sembolik bağ ise bunu doğrular

# is_file

(PHP 4, PHP 5, PHP 7, PHP 8)

is_file — Bir dosyanın sıradan bir dosya olup olmadığını söyler

### Açıklama

function is_file(string `$dosyaismi`): bool

Belirtilen dosyanın sıradan bir dosya olup olmadığını söyler.

### Bağımsız Değişkenler

`dosyaismi`

  Dosyanın yolu.

### Dönen Değerler

`dosyaismi` ile belirtilen dosya mevcutsa ve sıradan bir dosya ise `true` aksi takdirde `false` döndürür.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_file() örneği

    <?php
    var_dump(is_file('bir_dosya.txt')) . "\n";
    var_dump(is_file('/usr/bin/')) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- is_link() - Dosya sembolik bağ ise bunu doğrular
- SplFileInfo

# is_link

(PHP 4, PHP 5, PHP 7, PHP 8)

is_link — Dosya sembolik bağ ise bunu doğrular

### Açıklama

function is_link(string `$dosya`): bool

Belirtilen dosyanın bir sembolik bağ olup olmadığını söyler.

### Bağımsız Değişkenler

`dosya`

  Dosyanın yolu.

### Dönen Değerler

`dosya` mevcutsa ve sembolik bağ ise `true` aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - Sembolik bağ oluşturulup sınamak

    <?php
    $bağ = 'dosya';

    if (is_link($bağ)) {
        echo readlink($bağ);
    } else {
        symlink('dosya.php', $bağ);
    }
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
- readlink() - Bir sembolik bağın hedefi ile döner

# is_readable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_readable — Bir dosyanın mevcut ve okunabilir olup olmadığını söyler

### Açıklama

function is_readable(string `$dosyaismi`): bool

Bir dosyanın mevcut ve okunabilir olup olmadığını söyler.

### Bağımsız Değişkenler

`dosyaismi`

  Dosyanın yolu.

### Dönen Değerler

`dosyaismi` ile belirtilen dosya mevcutsa ve okunabilirse `true` aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_readable() örneği

    <?php
    $dosya = 'dnm.txt';
    if (is_readable($dosya)) {
        echo 'Dosya okunabilir';
    } else {
        echo 'Dosya okunamaz';
    }
    ?>

### Notlar

PHP'nin sadece HTTP sunucusunun aidiyetinde çalıştığı kullanıcının sahibi olduğu dosyalara erişebildiği unutulmamalıdır.

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

> Bilginize:

> Sınama etkin kullanıcı veya grup kimliği ile değil gerçek kullanıcı veya grup kimliği ile yapılır.

Bu işlev dizinler için `true` döndürebilir. Dosyalaral dizinler arasından ayrım yapabilmek için is_dir() işlevi kullanılabilir.

### Ayrıca Bakınız

- is_writable() - Dosyanın yazılabilir kipte ise bunu doğrular
- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
- fgets() - Dosya tanıtıcısından bir satır döndürür

# is_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

is_uploaded_file — Bir dosya HTTP POST üzerinden karşıya yüklenebilecekse bunu söyler

### Açıklama

function is_uploaded_file(string `$dosyaismi`): bool

`dosyaismi` ile belirtilen dosya HTTP POST üzerinden karşıya yüklenebiliyorsa `true` döndürür. Yetkisiz kullanıcıların /etc/passwd gibi üzerinde işlem yapmalarının yasak olduğu dosyaları betik üzerinden dışarı göndermelerine engel olmaya yardımcı olur.

Bir dosyanın karşıya yüklenmesi ile dosya içeriğinin kullanıcıya veya aynı sistem üzerindeki diğer kullanıcılara ifşa edilmesini sağlayacak şeyleri yapma şansı doğacaksa bu sınamalar oldukça önem kazanır.

İşlemin gerektiği gibi yapılabilmesi için is_uploaded_file() işlevi $_FILES['userfile']['tmp_name'] gibi bir bağımsız değişkene ihtiyaç duyar - istemcilerin makinesinde karşıya yüklenen dosyanın ismi $_FILES['userfile']['name'] çalışmaz.

### Bağımsız Değişkenler

`dosyaismi`

  Sınanacak dosyanın ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - is_uploaded_file() örneği

    <?php

    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
       echo $_FILES['userfile']['name'] ." dosyası başarıyla karşıya yüklendi.\n";
       echo "Dosya içeriği:\n";
       readfile($_FILES['userfile']['tmp_name']);
    } else {
       echo "Saldırısı olasılığı: ";
       echo "'". $_FILES['userfile']['tmp_name'] . "' ";
       echo "dosyası karşıya yüklenmek isteniyor.";
    }

    ?>

### Ayrıca Bakınız

- move_uploaded_file() - Karşıya yüklenen bir dosyayı yeni bir yere taşır
- $_FILES
- Basit bir kullanım örneği için Karşıya dosya yükleme bölümüne bakınız.

# is_writable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_writable — Dosyanın yazılabilir kipte ise bunu doğrular

### Açıklama

function is_writable(string `$dosya`): bool

`dosyaismi` ile belirtilen dosya mevcutsa ve yazılabilirse `true` döndürür. `dosyaismi` olarak bir dizin belirtilerek bir dizinin yazılabilirliği sınanabilir.

PHP'nin sadece HTTP sunucusunun aidiyetinde çalıştığı kullanıcının (çoğunlukla 'nobody') sahibi olduğu dosyalara erişebildiği unutulmamalıdır.

### Bağımsız Değişkenler

`dosya`

  Yazılabilirliği sınanacak dosya veya dizin.

### Dönen Değerler

`dosya` mevcutsa ve yazılabilirse `true` aksi takdirde `false` döndürür.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_writable() örneği

    <?php
    $dosya = 'test.txt';
    if (is_writable($dosya)) {
        echo 'Dosyaya yazılabilir';
    } else {
        echo 'Dosya yazılabilir kipte değil';
    }
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_readable() - Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
- fwrite() - Dosyaya ikil kipte yazar

# is_writeable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_writeable — Dosya yazılabilir kipteyse bunu doğrular

### Açıklama

function is_writable(string `$dosya`): bool

`dosya` mevcut ve yazılabilir ise `true` döndürür. `dosya` olarak bir dizin belirtilirse dizinin yazılabilirliğine bakılır.

PHP'nin dosyaya http sunucusunu çalıştıran kullanıcının kimliği (çoğunlukla 'nobody') ile erişebileceği unutulmamalıdır.

### Bağımsız Değişkenler

`dosya`

  Yazılabilirliği sınanacak dosya veya dizin.

### Dönen Değerler

`dosya` mevcut ve yazılabilir ise `true` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - is_writable() örneği

    <?php
    $dosya = 'test.txt';
    if (is_writable($dosya)) {
        echo 'Dosyaya yazılabilir';
    } else {
        echo 'Dosya yazılabilir kipte değil';
    }
    ?>

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- is_readable() - Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- file_exists() - Bir dosya veya dizinin mevcut olup olmadığına bakar
- fwrite() - Dosyaya ikil kipte yazar

# lchgrp

(PHP 5 >= 5.1.3, PHP 7, PHP 8)

lchgrp — Bir sembolik bağın grubunu değiştirir

### Açıklama

function lchgrp(string `$dosyaismi`, string|int `$grup`): bool

`dosyaismi` ile belirtilen sembolik bağın grubunu `grup` olarak değiştirir.

Bir sembolik bağın grubunu keyfi olarak sadece root değiştirebilir; diğer kullanıcılar sadece sahibi oldukları bir sembolik bağın grubunu üyesi oldukları gruplarla değiştirebilirler.

### Bağımsız Değişkenler

`dosyaismi`

  Sembolik bağın yolu.

`grup`

  Grup ismi veya numarası.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir sembolik bağın grubunun değiştirilmesi

    <?php
    $hedef = 'dosya.php';
    $bağ = 'dosya.html';
    symlink($hedef, $bağ);

    lchgrp($bağ, 8);
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

### Ayrıca Bakınız

- chgrp() - Dosya grubunu değiştirir
- lchown() - Bir sembolik bağın sahibini değiştirir
- chown() - Dosyanın sahibini değiştirir
- chmod() - Dosya kipini değiştirir

# lchown

(PHP 5 >= 5.1.3, PHP 7, PHP 8)

lchown — Bir sembolik bağın sahibini değiştirir

### Açıklama

function lchown(string `$dosyaismi`, string|int `$kullanıcı`): bool

`dosyaismi` ile belirtilen sembolik bağın sahibini `kullanıcı` yapar.

Bir sembolik bağın sahibini sadece root değiştirebilir.

### Bağımsız Değişkenler

`dosyaismi`

  Sembolik bağın yolu.

`kullanıcı`

  Kullanıcı ismi veya numarası.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir sembolik bağın sahibinin değiştirilmesi

    <?php
    $hedef = 'dosya.php';
    $bağ = 'dosya.html';
    symlink($hedef, $bağ);

    lchown($bağ, 8);
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Bu işlev Windows sistemlerinde çalışmaz.

### Ayrıca Bakınız

- chown() - Dosyanın sahibini değiştirir
- lchgrp() - Bir sembolik bağın grubunu değiştirir
- chgrp() - Dosya grubunu değiştirir
- chmod() - Dosya kipini değiştirir

# link

(PHP 4, PHP 5, PHP 7, PHP 8)

link — Sabit bir bağ oluşturur

### Açıklama

function link(string `$hedef`, string `$bağ`): bool

link() işlevi sabit bağ oluşturur.

### Bağımsız Değişkenler

`hedef`

  Bağın hedefi.

`bağ`

  Bağ dosyası ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`bağ` zaten varsa veya `hedef` mevcut değilse işlev başarısız olur ve bir `E_WARNING` üretir.

### Örnekler

Örnek 1 - Basit bir sabit bağ oluşturma örneği

    <?php

    $hedef = 'mevcut.uzt'; // Bu dosya mevcut.
    $bağ = 'yeni.uzt';     // Bu da bağ dosyamız olsun.

    link($hedef, $bağ);
    ?>

### Notlar

> Bilginize: Dosyaların sunucunun dosya sistemi üzerinden erişilebilir olması gerektiğinden bu işlev uzak dosyalar üzerinde çalışmayacaktır.

> Bilginize: Sadece Windows için: Bu işlev, PHP'nin yükseltilmiş bir kipte veya UAC devre dışı bırakılmış durumda çalışmasını gerektirir.

### Ayrıca Bakınız

- symlink() - Bir sembolik bağ oluşturur
- readlink() - Bir sembolik bağın hedefi ile döner
- linkinfo() - Bir bağ hakkında bilgi verir
- unlink() - Bir dosyayı siler

# linkinfo

(PHP 4, PHP 5, PHP 7, PHP 8)

linkinfo — Bir bağ hakkında bilgi verir

### Açıklama

function linkinfo(string `$yol`): int|false

Bir bağ hakkında bilgi verir.

Bu işlev `yol` bağımsız değişkeni ile belirtilen bağın gerçekte etkin olup olmadığını (stat.h dosyasında tanımlı S_ISLNK makrosunun kullandığı yöntemle) sınamak için kullanılır.

### Bağımsız Değişkenler

`yol`

  Bağ dosyasının yolu.

### Dönen Değerler

linkinfo() işlevi `lstat` sistem çağrısından dönen Unix C stat yapısının `st_dev` alanının içeriğini döndürür. Başarı durumunda negatif olmayan bir tamsayı, bağ bulunamazsa -1, bir open.base_dir ihlali olursa `false` döndürür.

### Örnekler

Örnek 1 - linkinfo() örneği

    <?php

    echo linkinfo('/vmlinuz'); // 835

    ?>

### Ayrıca Bakınız

- symlink() - Bir sembolik bağ oluşturur
- link() - Sabit bir bağ oluşturur
- readlink() - Bir sembolik bağın hedefi ile döner

# lstat

(PHP 4, PHP 5, PHP 7, PHP 8)

lstat — Bir dosya veya sembolik bağ hakkında bilgi verir

### Açıklama

function lstat(string `$dosyaismi`): array|false

`dosyaismi` ile belirtilen bir dosya veya sembolik bağın istatistiklerini toplar.

### Bağımsız Değişkenler

`dosyaismi`

  Bir dosya veya sembolik bağın yolu.

### Dönen Değerler

lstat() işlevinin döndürdüğü dizinin yapısı hakkında bilgi edinmek için stat() sayfasına bakınız. `dosyaismi` bağımsız değişkeninin bir sembolik bağ olması durumunda sembolik bağın hedefi yerine sembolik bağın kendisi hakkında bilgi döndürmesi bakımından stat() işlevinden farklıdır.

Başarısızlık durumunda, `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - stat() ve lstat() karşılaştırması

    <?php
    symlink('dosya.php', 'dosya');

    // Dosya ve dosya.php için bilgileri karşılaştıralım
    array_diff(stat('dosya'), lstat('dosya'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

İik dosya arasındaki bilgi farkları:

    Array
    (
        [ino] => 97236376
        [mode] => 33188
        [size] => 34
        [atime] => 1223580003
        [mtime] => 1223581848
        [ctime] => 1223581848
        [blocks] => 8
    )

### Notlar

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- stat() - Bir dosya hakkında bilgi döndürür

# mkdir

(PHP 4, PHP 5, PHP 7, PHP 8)

mkdir — Dizin oluşturur

### Açıklama

function mkdir(
string `$dizin`,
int `$izinler` = 0777,
bool `$ardışık` = `false`,
?resource `$bağlam` = `null`
): bool

Yolu belirtilen dizini oluşturmaya çalışır.

### Bağımsız Değişkenler

`dizin`

  Oluşturulacak dizinin yolu.

  İpucu

  fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

`izinler`

  Öntanımlı olarak, olası en geniş erişim izni anlamına gelen 0777'dir. Erişim türleri hakkında ayrıntılı bilgi edinmek için chmod() sayfasına bakınız.

  > Bilginize:

  > `izinler` Windows'ta yoksayılır.

  Başına 0 getirerek kipi sekizlik tabanda belirtmek daha kullanışlı olabilir. Ayrıca, erişim kipi umask() kullanarak değiştirilebilen erişim maskesi ile de değiştirilebilir.

`ardışık`

  `true` ise, `dizin` bağımsız değişkeninde belirtilen üst dizinlerin de aynı izinlerle oluşturulmasını sağlar.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

> Bilginize:

> Oluşturulacak dizin zaten varsa bu bir hata olarak ele alınır ve yine de `false` döndürülür. Dizini oluşturmaya çalışmadan önce var olup olmadığına is_dir() veya file_exists() işlevi ile bakılabilir.

### Hatalar/İstisnalar

Dizin mevcutsa `E_WARNING` seviyesinde hata çıktılanır.

İlgili izinler dizinin oluşturulmasını engelliyorsa `E_WARNING` seviyesinde hata çıktılanır.

### Örnekler

Örnek 1 - mkdir() örneği

    <?php
    mkdir("/dizinim/için/bir/yol", 0700);
    ?>

Örnek 2 mkdir() işlevinin `ardışık` bağımsız değişkeni ile kullanımı

    <?php
    // İstenen dizin yapısı
    $yapı = './alt1/alt2/alt3/';

    // Alt dizinleri de oluşturmak için mkdir() işlevine
    // <parameter>ardışık</parameter> bağımsız değişkeni belirtilmelidir.

    if (!mkdir($yapı, 0777, true)) {
        die('Dizinler oluşturulamadı....');
    }

    // ...
    ?>

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- rmdir() - Dizin siler
- umask() - Geçerli izin maskesini değiştirir

# move_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

move_uploaded_file — Karşıya yüklenen bir dosyayı yeni bir yere taşır

### Açıklama

function move_uploaded_file(string `$dosyaismi`, string `$hedef`): bool

Bu işlev, `dosyaismi` ile belirtilen dosyanın karşıya yüklenen geçerli bir dosya olduğundan emin olduktan sonra (PHP'nin HTTP POST mekanizması ile karşıya yüklenen bir dosya ise) dosyayı `hedef` ile belirtilen adrese taşır.

Bir dosyanın karşıya yüklenmesi ile dosya içeriğinin kullanıcıya veya aynı sistem üzerindeki diğer kullanıcılara ifşa edilmesini sağlayacak şeyleri yapma şansı doğacaksa bu sınamalar oldukça önem kazanır.

### Bağımsız Değişkenler

`dosyaismi`

  Karşıya yüklenen dosyanın ismi.

`hedef`

  Dosyanın taşınacağı adres.

### Dönen Değerler

Başarı durumunda `true` döner.

Eğer `dosyaismi` karşıya yüklenen geçerli bir dosya değilse işlem gerçekleşmez ve işlev `false` ile döner.

Eğer `dosyaismi` karşıya yüklenen geçerli bir dosya ise fakat bir sebeple taşınamıyorsa işlem gerçekleşmez ve işlev `false` ile dönerken ek olarak bir uyarı çıktılanır.

### Örnekler

Örnek 1 - Çok sayıda dosyanın karşıya yüklenmesi

    <?php
    $uploads_dir = '/uploads';
    foreach ($_FILES["pictures"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
            // basename() dosya sistemi çapraz saldırılarını engelleyebilir;
            // dosya isminin daha fazla doğrulanması/temizliği uygun olabilir
            $name = basename($_FILES["pictures"]["name"][$key]);
            move_uploaded_file($tmp_name, "$uploads_dir/$name");
        }
    }
    ?>

### Notlar

> Bilginize:

> move_uploaded_file() işlevi open_basedir yönergesinden etkilenir. Bununla birlikte, karşıya yüklenecek dosyaların `hedef`'e taşınmasına izin verilmesinden dolayı yapılacak işlem bu sınırlamalarla çelişir. move_uploaded_file() işlevi, karşıya yüklenecek dosyaların sadece PHP üzerinden taşınmasına izin vererek işlemin güvenliğini sağlar.

Uyarı

Hedefte bir dosya varsa üzerine yazılır.

### Ayrıca Bakınız

- is_uploaded_file() - Bir dosya HTTP POST üzerinden karşıya yüklenebilecekse bunu söyler
- rename() - Bir dosya veya dizinin ismini değiştirir
- Basit bir kullanım örneği için Karşıya dosya yükleme bölümüne bakınız.

# parse_ini_file

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_ini_file — Bir yapılandırma dosyasını çözümler

### Açıklama

function parse_ini_file(string `$dosyaismi`, bool `$bölümleri_işle` = `false`, int `$tarama_kipi` = `INI_SCANNER_NORMAL`): array|false

parse_ini_file() işlevi `dosyaismi` ile belirtilen yapılandırma dosyasını yükler ve içindeki ayarları bir ilişkisel dizi içinde döndürür.

Belirtilen dosyanın yapısı php.ini dosyasının yapısıyla aynı olmalıdır.

### Bağımsız Değişkenler

`dosyaismi`

  Çözümlenecek yapılandırma dosyasının ismi. Göreli bir yol kullanılıyorsa, mevcut çalışma dizinine göre, ardından include_path değerlendirilir.

`bölümleri_işle`

  Bu bağımsız değişkene `true` atanırsa bölüm isimlerini ve içerdikleri ayarları içeren çok boyutlu bir dizi döner. Bağımsız değişkenin öntanımlı değeri `false`'tır.

`tarama_kipi`

  Değeri `INI_SCANNER_NORMAL` (öntanımlıdır) veya `INI_SCANNER_RAW` olabilir. Eğer `INI_SCANNER_RAW` belirtilirse seçenek değerleri çözümlenmez.

  PHP 5.6.1 ve sonrasında bu `INI_SCANNER_TYPED` olarak da belirtilebilir. Bu kipte mantıksal, null ve tamsayı türler mümkün olduğunca korunur. `"true"`, `"on"` ve `"yes"` dizge değerleri `true` değerine dönüştürülür. `"false"`, `"off"`, `"no"` ve `"none"` ise `false` yapılır. `"null"` dizgesi ise `null` değerine dönüşür. Ayrıca, tüm sayısal dizgeler mümkün olduğu takdirde tamsayı türe çevrilir.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde ayarları bir ilişkisel dizi içinde döndürür.

### Örnekler

Örnek 1 - misal.ini içeriği

    ; Bu bir yapılandırma dosyası örneğidir.
    ; php.ini içinde ';' ile başlayan satırlar açıklamadır.

    [ilk_bölüm]
    bir = 1
    yedi = 7
    hayvan = AT

    [ikinci_bölüm]
    yol = "/usr/local/bin"
    URL = "http://localhost/~kullanici"

    [üçüncü_bölüm]
    phpversion[] = "5.0"
    phpversion[] = "5.1"
    phpversion[] = "5.2"
    phpversion[] = "5.3"

    urls[svn] = "http://svn.php.net"
    urls[git] = "http://git.php.net"

Örnek 2 - parse_ini_file() örneği

INI dosyası içinde sabitler de (fakat `__FILE__` gibi sihirli sabitler değil) çözümlenebilir, bu bakımdan parse_ini_file() işlevini çalıştırmadan önce bir sabiti bir ini değeri olarak tanımlamışsanız, bu sabit de sonuca dahil edilir. Sadece ini değerleri değerlendirmeye alınır ve değer bir sabit olmalıdır. Örnek:

    <?php

    define('AT', 'Doru at');

    // Bölümleri çözümlemeyelim
    $ini_dizisi = parse_ini_file("misal.ini");
    print_r($ini_dizisi);

    // Bölümleri de çözümleyelim
    $ini_dizisi = parse_ini_file("misal.ini", true);
    print_r($ini_dizisi);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [bir] => 1
        [yedi] => 7
        [hayvan] => Doru at
        [yol] => /usr/local/bin
        [URL] => http://localhost/~kullanici
        [phpversion] => Array
            (
                [0] => 5.0
                [1] => 5.1
                [2] => 5.2
                [3] => 5.3
            )

        [urls] => Array
            (
                [svn] => http://svn.php.net
                [git] => http://git.php.net
            )

    )
    Array
    (
        [ilk_bölüm] => Array
            (
                [bir] => 1
                [yedi] => 7
                [hayvan] => Doru at
            )

        [ikinci_bölüm] => Array
            (
                [yol] => /usr/local/bin
                [URL] => http://localhost/~kullanici
            )

        [üçüncü_bölüm] => Array
            (
                [phpversion] => Array
                    (
                        [0] => 5.0
                        [1] => 5.1
                        [2] => 5.2
                        [3] => 5.3
                    )

                [urls] => Array
                    (
                        [svn] => http://svn.php.net
                        [git] => http://git.php.net
                    )

            )

    )

Örnek 3 - Bir php.ini dosyasının parse_ini_file() ile çözümlenmesi

    <?php
    // Aşağıdaki sonuçları karşılaştırmak için basit bir işlev
    function evethayır($ifade)
    {
     return($ifade ? 'Evet' : 'Hayır');
    }

    // php_ini_loaded_file() ile php.ini dosyasının yolunu öğrenelim.
    $ini_yolu = php_ini_loaded_file();

    // php.ini dosyasını çözümleyelim
    $ini = parse_ini_file($ini_yolu);

    // Değerleri karşılaştırıp basalım; get_cfg_var() ile de aynı
    // sonuçların alınacağına dikkat ediniz
    echo '(çözümlenen) magic_quotes_gpc =' .
        evethayır($ini['magic_quotes_gpc']) . PHP_EOL;
    echo '(yüklenen) magic_quotes_gpc = ' .
        evethayır(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    (çözümlenen) magic_quotes_gpc = Evet
    (yüklenen) magic_quotes_gpc = Evet

Örnek 4 Ara Değerler

Sabitleri değerlendirmeye ek olarak, belirli karakterlerin ini değerlerinde özel anlamları vardır. Buna ek olarak, ortam değişkenleri ve önceden tanımlanmış yapılandırma seçenekleri `${}`sözdizimi kullanılarak okunabilir (bkz: get_cfg_var()).

    ; bitsel VEYA için | kullanılır
    three = 2|3

    ; bitsel VE için & kullanılır
    four = 6&5

    ; bitsel Ayrıcalıklı VEYA için ^ kullanılır
    five = 3^6

    ; bitsel olumsuzlama için ~ kullanılır
    negative_two = ~1

    ; gruplama için () kullanılır
    seven = (8|7)&(6|5)

    ; PATH ortam değişkenini oku
    path = ${PATH}

    ; 'memory_limit' yapılandırma seçeneğini oku
    configured_memory_limit = ${memory_limit}

Örnek 5 Öncelleme Karakterleri

Bazı karakterlerin çift tırnaklı dizgelerde özel anlamları olduğundan önlerine tersbölü çizgisi konarak öncelenmeleri gerekir. Hepsinden önce, dizgenin sınırlarını belirleyen çift tırnak `"` ve tersbölünün `\` kendisi (özel karakterlerden birini önceliyorsa) bu özel karakterlerdendir:

    tırnaklı = "She said \"Exactly my point\"."
    ; İçinde tırnak imleri bulunan; bir dize elde edilir.

    ipucu = "Çift tırnağı öncelemek için \\\" kullan"
    ; Sonuç: Çift tırnağı öncelemek için \" kullan

Windows benzeri dosya yollarında bunun bir istisnası vardır: Tırnaklı dizgeyi bir satırsonu izliyorsa sondaki ters bölüyü öncelememek mümkündür:

    save_path = "C:\Temp\"

Çok satırlı bir değerde ardından satır sonu gelen bir çift tırnağın öncelenmesi gerekiyorsa, değer birleştirmeyi aşağıdaki şekilde kullanmak mümkündür (bir çift tırnaklı dizenin hemen ardından bir diğeri gelir):

    long_text = "Lorem \"ipsum\"""
     dolor" ; Sonuç: Lorem "ipsum"\n dolor

Özel anlamı olan karakterlerden bir diğeri `$` dolar imidir. Ardından açan kaşlı ayraç geliyorsa dolar iminin öncelenmesi gerekir:

    code = "\${test}"

Karakter önceleme `INI_SCANNER_RAW` kipinde desteklenmez (bu kipte tüm karakterler "oldukları gibi" işlenir).

İni çözümleyicisinin standart öncelemleri (`\n`, `\t` ve benzerlerini) desteklemediğini dikkate almak gerekir. Gerekirse, parse_ini_file() işlevinin sonucunu stripcslashes() işleviyle yeniden işlemden geçirmek gerekebilir.

### Notlar

> Bilginize:

> Bu işlev php.ini dosyasına hiçbir şey yapmaz. Zaten betiğinizi çalıştırdığınız sırada işlem yapılır. Bu işlevi sadece kendi uygulamanızın yapılandırma dosyasını okumak için kullanabilirsiniz.

> Bilginize:

> INI dosyasındaki bir değer harf ve rakamların haricinde karakterler içeriyorsa bu değeri çift tırnak (") imlerinin arasına almalısınız.

> Bilginize: INI dosyalarında anahtar olarak kullanılmaması gereken bazı özel sözcükler vardır. Bunlar: `null`, `yes`, `no`, `true`, `false`, `on`, `off`, `none`. `INI_SCANNER_TYPED` kipi kullanılmadıkça `null`, `off`, `no` ve `false` sözcükleri `""` ile sonuçlanırken, `on`, `yes` ve `true` sözcükleri `"1"` ile sonuçlanır. `?{}|&~![()^"` karakterleri hiçbir yerde anahtar veya değer içinde kullanılmamalıdır.

> Bilginize:

> Eşit işareti içermeyen girdiler yoksayılır. Örneğin, "foo" yoksayılırken "bar =" çözümlenir ve boş değer eklenir. Örneğin, MySQL my.cnf içinde bir "no-auto-rehash" girdisine sahiptir ve herhangi bir değer almadığı için yoksayılır.

> Bilginize:

> ini dosyaları genellikle HTTP sunucuları tarafından düz metin olarak kabul edilir ve bu nedenle istenirse tarayıcılara sunulur. Bu, güvenlik için ini dosyalarınızı belge kök dizininiz dışında tutmanız veya HTTP sunucunuzu onlara hizmet vermeyecek şekilde yeniden yapılandırmanız gerektiği anlamına gelir. Bunlardan herhangi birinin yapılmaması bir güvenlik riski oluşturabilir.

### Ayrıca Bakınız

- parse_ini_string() - Bir yapılandırma dizgesini çözümler

# parse_ini_string

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

parse_ini_string — Bir yapılandırma dizgesini çözümler

### Açıklama

function parse_ini_string(string `$ini_dizgesi`, bool `$bölümleri_işle` = `false`, int `$tarama_kipi` = `INI_SCANNER_NORMAL`): array|false

parse_ini_string() işlevi `ini_dizgesi` içindeki ayarları bir ilişkisel dizi içinde döndürür.

`ini_dizgesi`'nin yapısı php.ini dosyasının yapısıyla aynı olmalıdır.

### Bağımsız Değişkenler

`ini_dizgesi`

  Çözümlenecek ini dosyası içeriği.

`bölümleri_işle`

  Bu bağımsız değişkene `true` atanırsa bölüm isimlerini ve içerdikleri ayarları içeren çok boyutlu bir dizi döner. Bağımsız değişkenin öntanımlı değeri `false`'tır.

`tarama_kipi`

  Değeri `INI_SCANNER_NORMAL` (öntanımlıdır) veya `INI_SCANNER_RAW` olabilir. Eğer `INI_SCANNER_RAW` belirtilirse seçenek değerleri çözümlenmez.

  PHP 5.6.1 ve sonrasında bu `INI_SCANNER_TYPED` olarak da belirtilebilir. Bu kipte mantıksal, null ve tamsayı türler mümkün olduğunca korunur. `"true"`, `"on"` ve `"yes"` dizge değerleri `true` değerine dönüştürülür. `"false"`, `"off"`, `"no"` ve `"none"` ise `false` yapılır. `"null"` dizgesi ise `null` değerine dönüşür. Ayrıca, tüm sayısal dizgeler mümkün olduğu takdirde tamsayı türe çevrilir.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde ayarları bir ilişkisel dizi içinde döndürür.

### Notlar

> Bilginize: INI dosyalarında anahtar olarak kullanılmaması gereken bazı özel sözcükler vardır. Bunlar: `null`, `yes`, `no`, `true`, `false`, `on`, `off`, `none`. `INI_SCANNER_TYPED` kipi kullanılmadıkça `null`, `off`, `no` ve `false` sözcükleri `""` ile sonuçlanırken, `on`, `yes` ve `true` sözcükleri `"1"` ile sonuçlanır. `?{}|&~![()^"` karakterleri hiçbir yerde anahtar veya değer içinde kullanılmamalıdır.

### Ayrıca Bakınız

- parse_ini_file() - Bir yapılandırma dosyasını çözümler

# pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pathinfo — Bir dosya yolu hakkında bilgi döndürür

### Açıklama

function pathinfo(string `$yol`, int `$seçenekler` = `PATHINFO_ALL`): array|string

pathinfo() işlevi belirtilen `seçenekler`e bağlı olarak, belirtilen `yol` hakkında bilgi içeren bir ilişkisel dizi ya da bir dizge döndürür.

> Bilginize:

> Geçerli dosya yolu bilgisinin alınması hakkında daha ayrıntılı bilgi edinmek için Öntanımlı Değişkenler bölümü okunabilir.

> Bilginize:

> pathinfo() safça girdi dizgesi üzerinde çalışır, dosya sisteminden ve "`..`" gibi bileşenlerden haberi yoktur.

> Bilginize:

> Yalnızca Windows sistemlerinde, `\` karakteri bir dizin ayırıcı olarak yorumlanır. Diğer sistemlerde ise herhangi bir karakter gibi ele alınır.

Dikkat

pathinfo() yereli de bilmez, bundan dolayı çok baytlı karakterler içeren dosya yollarından doğru bileşeni ayırabilmesi için eşleşen yerelin setlocale() işlevi kullanılarak atanması gerekir.

### Bağımsız Değişkenler

`yol`

  Bilgi toplanacak yol.

`seçenekler`

  İsteğe bağlı `seçenekler` bağımsız değişkeninde hangi bileşenlerin döndürüleceğini `PATHINFO_DIRNAME`, `PATHINFO_BASENAME`, `PATHINFO_EXTENSION` ve `PATHINFO_FILENAME` seçeneklerinin birleşimi olarak belirtebilirsiniz. Bir değer belirtilmezse tüm bileşenler döndürülür.

### Dönen Değerler

`seçenekler` bağımsız değişkeni atlanırsa dönen ilişkisel dizi şu bileşenleri içerir: `dirname` (dizin ismi), `basename` (uzantısız isim), `extension` (uzantı) ve `filename` (dosya ismi).

> Bilginize:

> `yol` birden fazla uzantı içeriyorsa `PATHINFO_EXTENSION` seçeneği ile yalnızca sonuncusu dönerken `PATHINFO_FILENAME` seçeneğinde ise sadece sonuncu uzantı kırpılır. Aşağıdaki örneğe bakınız.

> Bilginize:

> `yol` bir uzantı içermiyorsa dönen dizi `extension` elemanını içermez. Aşağıdaki örneğe bakınız.

> Bilginize:

> `yol`'un `basename` elemanı bir nokta ile başlıyorsa, noktadan sonrası `extension` elemanına aktarılır, `filename` elemanı ise boş kalır. Aşağıdaki örneğe bakınız.

Eğer `seçenekler` belirtilirse ve tüm bileşenler istenmemişse işlev bir ilişkisel dizi değil, bir dizge döndürür.

### Örnekler

Örnek 1 - pathinfo() örneği

    <?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    /www/htdocs/inc
    lib.inc.php
    php
    lib.inc

Örnek 2 - Uzantısız ve boş uzantılı farkını gösteren pathinfo() örneği

    <?php
    $path_parts = pathinfo('/yol/bosuzanti.');
    var_dump($path_parts['extension']);
    $path_parts = pathinfo('/yol/yokuzanti');
    var_dump($path_parts['extension']);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(0) ""

    Notice: Undefined index: extension in test.php on line 6
    NULL

Örnek 3 - pathinfo() ve uzantı-dosya

    <?php
    print_r(pathinfo('/some/path/.test'));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [dirname] => /some/path
        [basename] => .test
        [extension] => test
        [filename] =>
    )

Örnek 4 - pathinfo() dizi başvurusunu kaldırma örneği

`seçenekler` bit maskesi değildir. Tek bir değer aktarılabilir. Yalnızca çözümlenmiş değerlerden oluşan sınırlı bir değer kümesini seçmek için dizi yıkımı şu şekilde kullanılabilir:

    <?php
    ['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');

    var_dump($basename, $dirname);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(11) "lib.inc.php"
    string(15) "/www/htdocs/inc"

### Ayrıca Bakınız

- dirname() - Üst dizinin yolunu döndürür
- basename() - Dosya yolunun ucundaki dosya ismi bileşenini döndürür
- parse_url() - Bir URL'yi bileşenlerine ayırır
- realpath() - Normalleştirilmiş mutlak dosya yolunu döndürür

# pclose

(PHP 4, PHP 5, PHP 7, PHP 8)

pclose — Bir süreç tanıtıcısını kapatır

### Açıklama

function pclose(resource `$dt`): int

popen() tarafından açılmış bir borunun dosya tanıtıcısını kapatır.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve başarılı bir popen() çağrısından dönmüş olmalıdır.

### Dönen Değerler

Çalışan sürecin sonlandırma durum kodu ile döner. Hata oluşması durumunda `-1` döner.

> Bilginize:

> PHP --enable-sigchild seçeneği ile derlenmişse bu işlevin dönen değeri tanımsızdır.

### Örnekler

Örnek 1 - pclose() örneği

    <?php
    $dt = popen('/bin/ls', 'r');
    pclose($handle);
    ?>

### Notlar

> Bilginize: Unix Only:

> pclose() dahili olarak `waitpid(3)` sistem çağrısı kullanılarak gerçeklenmiştir. Gerçek çıkış durumunu öğrenmek için pcntl_wexitstatus() işlevi kullanılmalıdır.

### Ayrıca Bakınız

- popen() - Bir süreç tanıtıcısı açar

# popen

(PHP 4, PHP 5, PHP 7, PHP 8)

popen — Bir süreç tanıtıcısı açar

### Açıklama

function popen(string `$komut`, string `$kip`): resource|false

Belirtilen `komut` tarafından çatallanarak çalıştırılan bir sürece bir boruhattı açar.

### Bağımsız Değişkenler

`komut`

  Komut.

`kip`

  Kip. Okumak için `'r'` veya yazmak için `'w'` aktarılır.

  Windows üzerinde, popen() öntanımlı olarak metin kipindedir, örneğin, borudan okunan veya boruya yazılan her `\n` karakteri `\r\n` haline getirilir. Bu istenmiyorsa, `kip` bağımsız değişkenine okuma için `'rb'` veya yazma için `'wb'` atanarak ikil kip zorlanabilir.

### Dönen Değerler

fopen() işlevi tarafından döndürülenden farklı olarak hem okuma hem de yazma için kullanılabilen ve pclose() ile kapatılması gereken bir dosya tanıtıcısı ile döner. Bu tanıtıcı, fgets(), fgetss() ve fwrite() işlevleri tarafından kullanılabilir. Kip 'r' ise dönen dosya konumlayıcı komutun standart çıktısına eşitlenir. Kip 'w' ise dönen dosya konumlayıcı komutun standart girdisine eşitlenir.

Bir hata oluşursa `false` döner.

### Örnekler

Örnek 1 - popen() örneği

    <?php
    $handle = popen("/bin/ls", "r");
    ?>

Belirtilen komut dosyası bulunamazsa da geçerli bir tanıtıcı döner. Bu tuhaf görünebilir fakat böyle olması gerekir; böylece kabuk tarafından döndürülen hata iletisine erişmeniz sağlanır:

Örnek 2 - Hata döndüren popen() örneği

    <?php
    error_reporting(E_ALL);

    /* Komutu std. hataya yönlendirelim. */
    $bt = popen('/bir/yol/calistirilabilirdosya 2>&1', 'r');
    echo "'$tanıtıcı'; " . gettype($bt) . "\n";
    $okunan = fread($bt, 2096);
    echo $okunan;
    pclose($bt);
    ?>

### Notlar

> Bilginize:

> İki yönlü destek arıyorsanız proc_open() kullanın.

### Ayrıca Bakınız

- pclose() - Bir süreç tanıtıcısını kapatır
- fopen() - Bir dosya veya URL'yi açar
- proc_open() - Bir komutu çalıştırır ve G/Ç için bir dosya tanıtıcı açar

# readfile

(PHP 4, PHP 5, PHP 7, PHP 8)

readfile — Bir dosyayı çıktılar

### Açıklama

function readfile(string `$dosyaismi`, bool `$include_path_kullan` = `false`, ?resource `$bağlam` = `null`): int|false

Bir dosyayı okuyup çıktı tamponuna yazar.

### Bağımsız Değişkenler

`dosyaismi`

  Okunacak dosya.

`include_path_kullan`

  Dosyanın include_path yolunda da aranmasını istiyorsanız bu isteğe bağlı bağımsız değişkene `true` atamalısınız.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Herşey yolunda gitmişse dosyadan okunan baytların sayısı, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Örnekler

Örnek 1 - readfile() kullanarak dosya indirmeyi zorlamak

    <?php
    $file = 'monkey.gif';

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> readfile() kendi başına büyük dosyalar gönderirken bile herhangi bir bellek sorunu ortaya çıkmaz. Yetersiz bellek hatasıyla karşılaşırsanız, ob_get_level() kullanarak çıktı tamponlamasının kapalı olduğundan emin olun.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Ayrıca Bakınız

- fpassthru() - Bir dosya tanıtıcısında kalan verinin tamamını çıktılar
- file() - Dosya içeriğinin tamamını bir diziye okur
- fopen() - Bir dosya veya URL'yi açar
- include - include
- require - require
- virtual() - Bir Apache alt isteği gerçekleştirir
- file_get_contents() - Dosya içeriğinin tamamını bir dizge olarak döndürür
- Desteklenen Protokoller ve Sarmalayıcılar

# readlink

(PHP 4, PHP 5, PHP 7, PHP 8)

readlink — Bir sembolik bağın hedefi ile döner

### Açıklama

function readlink(string `$yol`): string|false

readlink() işlevi, C readlink işlevinin yaptığını yapar.

### Bağımsız Değişkenler

`yol`

  Sembolik bağ yolu.

### Dönen Değerler

Hata durumunda `false` aksi takdirde sembolik bağın içeriğini döndürür.

> Bilginize: Windows hariç, `yol` bir sembolik bağ değilse işlev başarısız olur, Windows üzerinde ise normalleştirilmiş yol döner.

### Örnekler

Örnek 1 - readlink() örneği

    <?php

    // örn, /boot/vmlinux-2.4.20-xfs döner
    echo readlink('/vmlinuz');

    ?>

### Ayrıca Bakınız

- is_link() - Dosya sembolik bağ ise bunu doğrular
- symlink() - Bir sembolik bağ oluşturur
- linkinfo() - Bir bağ hakkında bilgi verir

# realpath

(PHP 4, PHP 5, PHP 7, PHP 8)

realpath — Normalleştirilmiş mutlak dosya yolunu döndürür

### Açıklama

function realpath(string `$yol`): string|false

realpath() işlevi tüm sembolik bağları genişletir ve `/./`, `/../` gösterimlerini çözümleyip belirtilen `yol`'a bir `/` ekler ve normalleştirilmiş mutlak dosya yolu olarak döndürür.

### Bağımsız Değişkenler

`yol`

  Sınanacak dosya yolu.

  > Bilginize:

  > Bir yolun belirtilmesi gerekirse de, değer boş bir dizge de olabilir. Bu durumda değer, geçerli dizin olarak yorumlanır.

### Dönen Değerler

Başarı durumunda normalleştirilmiş mutlak dosya yolunu döndürür. Sonuç hiçbir sembolik bağ, `/./` veya `/../` bileşenlerini içermez. Ayrıca, sondaki `\` veya `/` kaldırılır.

Başarısızlık durumunda, örneğin dosya mevcut olmadığında realpath() `false` ile döner.

> Bilginize:

> Çalışan betik dosya hiyerarşisi içindeki tüm dizinlerde çalıştırılabilir izinlerine sahip olmalıdır, aksi takdirde realpath() `false` döndürür.

> Bilginize:

> Harf büyüklüğüne duyarsız dosya sistemlerinde realpath() karakter büyüklüklerini aynı yapabileceği gibi olduğu gibi de bırakabilir.

> Bilginize:

> realpath() işlevi yolun gerçek değil de sanal olduğu bir Phar içindeki bir dosya için işlem yapmaz.

> Bilginize:

> Windows'ta, dizin kavşakları ve sembolik bağları yalnızca bir seviye genişletilir.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Örnekler

Örnek 1 - realpath() örneği

    <?php
    chdir('/var/log/');
    echo realpath('./../../etc/passwd');

    echo realpath('/tmp/') . PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    /etc/passwd
    /tmp

Örnek 2 - Windows'ta realpath()

Windows'ta realpath() Unix tarzı dosya yolunu Windows tarzı dosya yoluna dönüştürür.

    <?php
    echo realpath('/windows/system32'), PHP_EOL;

    echo realpath('C:\Program Files\\'), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    C:\WINDOWS\System32
    C:\Program Files

### Ayrıca Bakınız

- basename() - Dosya yolunun ucundaki dosya ismi bileşenini döndürür
- dirname() - Üst dizinin yolunu döndürür
- pathinfo() - Bir dosya yolu hakkında bilgi döndürür

# realpath_cache_get

(PHP 5 >= 5.3.2, PHP 7, PHP 8)

realpath_cache_get — Mutlak dosya yolu önbellek girdilerini döndürür

### Açıklama

function realpath_cache_get(): array

Mutlak dosya yolu önbelleğinin içeriğini döndürür.

### Dönen Değerler

Mutlak dosya yolu önbellek girdilerini bir dizi olarak döndürür. Dizinin anahtarları özgün dosya yolu girdileri, değerleri ise veri öğelerini içeren dizilerdir. Bu veri öğeleri, çözümlenen dosya yolu, son kullanım tarihi ve önbellekte tutulan diğer seçeneklerdir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Örnekler

Örnek 1 - realpath_cache_get() örneği

    <?php
    var_dump(realpath_cache_get());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(2) {
      ["/test"]=>
      array(4) {
        ["key"]=>
        int(123456789)
        ["is_dir"]=>
        bool(true)
        ["realpath"]=>
        string(5) "/test"
        ["expires"]=>
        int(1260318939)
      }
      ["/test/test.php"]=>
      array(4) {
        ["key"]=>
        int(987654321)
        ["is_dir"]=>
        bool(false)
        ["realpath"]=>
        string(12) "/root/test.php"
        ["expires"]=>
        int(1260318939)
      }
    }

### Ayrıca Bakınız

- realpath_cache_size() - Mutlak dosya yolu önbellek boyunu döndürür

# realpath_cache_size

(PHP 5 >= 5.3.2, PHP 7, PHP 8)

realpath_cache_size — Mutlak dosya yolu önbellek boyunu döndürür

### Açıklama

function realpath_cache_size(): int

Mutlak dosya yolu önbelleği tarafından kullanılan bellek miktarını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kullanılan bellek miktarı.

### Örnekler

Örnek 1 - realpath_cache_size() örneği

    <?php
    var_dump(realpath_cache_size());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(412)

### Ayrıca Bakınız

- realpath_cache_get() - Mutlak dosya yolu önbellek girdilerini döndürür
- realpath_cache_size yapılandırma seçeneği.

# rename

(PHP 4, PHP 5, PHP 7, PHP 8)

rename — Bir dosya veya dizinin ismini değiştirir

### Açıklama

function rename(string `$eski_dosya`, string `$yeni_dosya`, ?resource `$bağlam` = `null`): bool

İsmi `eski_dosya` ile belirtilen bir dosya veya dizinin ismini gerekirse dizinler arasında taşımak suretiyle `yeni_dosya` olarak değiştirir. Eğer `yeni_dosya` bir dosya ismini değiştiriyorsa ve böyle bir dosya zaten varsa üzerine yazılır. Eğer `yeni_dosya` bir dizin ismini değiştiriyorsa ve böyle bir dizin zaten varsa işlev bir uyarı üretir.

### Bağımsız Değişkenler

`eski_dosya`

  Eski isim.

  > Bilginize:

  > `eski_dosya`'da kullanılan sarmalayıcının `yeni_dosya`'daki sarmalayıcı ile aynı olması gerekir.

`yeni_dosya`

  Yeni isim.

  > Bilginize: Windows üzerinde, `yeni_dosya` zaten varsa yazılabilir olmalıdır. Aksi takdirde, rename() başarısız olur ve bir `E_WARNING` üretir.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - rename()örneği

    <?php
    rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
    ?>

### Ayrıca Bakınız

- copy() - Dosya kopyalar
- unlink() - Bir dosyayı siler
- move_uploaded_file() - Karşıya yüklenen bir dosyayı yeni bir yere taşır

# rewind

(PHP 4, PHP 5, PHP 7, PHP 8)

rewind — Bir dosya tanıtıcısında konumu başa taşır

### Açıklama

function rewind(resource `$dt`): bool

Dosya konumu göstericisini `dt` dosya akımının başlangıcına konumlandırır.

> Bilginize:

> Dosyayı dosya sonuna ekleme kipinde ("a" veya "a+") açmışsanız, dosya konum göstericisinin yerine bakılmaksızın dosyaya yazılan her veri daima dosyanın sonuna yazılır.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı geçerli olmalı ve fopen() tarafından başarıyla açılmış bir dosyayı göstermelidir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - rewind() üste yazma örneği

    <?php
    $dt = fopen('dosya.txt', 'r+');

    fwrite($dt, 'Uzunca bir cümle.');
    rewind($dt);
    fwrite($dt, 'Foo');
    rewind($dt);

    echo fread($dt, filesize('dosya.txt'));

    fclose($dt);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Uzunca bir cümle.

### Ayrıca Bakınız

- fread() - Dosyayı ikil kipte okur
- fseek() - Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
- ftell() - Dosya okuma/yazma konumlayıcının mevcut konumu ile döner
- fwrite() - Dosyaya ikil kipte yazar

# rmdir

(PHP 4, PHP 5, PHP 7, PHP 8)

rmdir — Dizin siler

### Açıklama

function rmdir(string `$dizin`, ?resource `$bağlam` = `null`): bool

Yolu `dizin` ile belirtilen dizini silmeye çalışır. Silinebilmesi için dizin boş olmalı ve erişim izinleri buna izin vermelidir. Başarısızlık durumunda `E_WARNING` seviyeside hata çıktılanır.

### Bağımsız Değişkenler

`dizin`

  Dizinin yolu.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - rmdir() örneği

    <?php
    if (!is_dir('misaller')) {
        mkdir('misaller');
    }

    rmdir('misaller');
    ?>

### Ayrıca Bakınız

- is_dir() - Bir dosyanın bir dizin olup olmadığını söyler
- mkdir() - Dizin oluşturur
- unlink() - Bir dosyayı siler

# set_file_buffer

(PHP 4, PHP 5, PHP 7, PHP 8)

set_file_buffer — stream_set_write_buffer() işlevinin takma adıdır

### Açıklama

Bu işlev, stream_set_write_buffer() işlevinin takma adıdır.

# stat

(PHP 4, PHP 5, PHP 7, PHP 8)

stat — Bir dosya hakkında bilgi döndürür

### Açıklama

function stat(string `$dosyaismi`): array|false

`dosyaismi` ile belirtilen dosyanın istatistiklerini toplar. Eğer `dosyaismi` bir sembolik bağ ise istatistikler bağ dosyasından değil hedefinden toplanır. PHP 7.4.0 öncesinde, Windows üzerinde, bu durumda, NTS `size`, `atime`, `mtime` ve `ctime` istatistiklerini sembolik bağdan oluştururdu.

lstat(), sembolik bağların durumunu döndürmesi dışında stat() işlevine eşdeğerdir.

### Bağımsız Değişkenler

`dosyaismi`

  Dosyanın yolu.

### Dönen Değerler

stat() and fstat() sonuç biçemi
İndis | Anahtar | Açıklama
--- | --- | ---
0 | dev | aygıt numarası ***
1 | ino | dosya düğümü numarası ****
2 | mode | dosya düğümü koruma kipi *****
3 | nlink | bağ sayısı
4 | uid | sahibinin kullanıcı kimliği *
5 | gid | sahibinin grup kimliği *
6 | rdev | dosya düğümü aygıtı ise aygıt türü
7 | size | bayt sayısı
8 | atime | son erişim zamanı (Unix zaman damgası)
9 | mtime | son değişiklik zamanı (Unix zaman damgası)
10 | ctime | dosya düğümü son değişiklik zamanı (Unix zaman damgası)
11 | blksize | dosya sisteminin G/Ç blok boyu **
12 | blocks | ayrılmış 512 baytlık blokların sayısı **

* Windows üzerinde daima `0`'dır.

** Sadece st_blksize türünü destekleyen sistemlerde geçerlidir; diğer sistemlerde (Windows gibi) `-1` döner.

*** PHP 7.4.0 öncesinde, Windows üzerinde, bu dosyayı içeren birimin 64 bitlik işaretsiz bir tam sayı olarak seri numarasıdır, bu nedenle taşabilir. Önceden, sürücü harfinin sayısal karşılığıydı (örneğin, C: sürücüsü stat() için `2` ve lstat() için `0` idi).

**** PHP 7.4.0 öncesinde, Windows üzerinde, bu, 64 bitlik işaretsiz bir tam sayı olarak dosyayla ilişkili tanımlayıcıdır, bu nedenle taşabilir. Önceden her zaman `0` idi.

***** Windows'ta, yazılabilir izin biti, salt-okunur yapılır ve tüm kullanıcılar, grup ve sahip için aynı değer kullanılır. is_writable() işlevinin aksine ACL dikkate alınmaz.

Çeşitli işlevler tarafından okunan bilgileri içeren `kip` değeri. Sekizlik olarak yazıldığında, sağdan başlayarak, ilk üç hane chmod() tarafından döndürülür. Sonraki basamak PHP tarafından yok sayılır. Sonraki iki hane dosya türünü gösterir:

`kip` dosya türleri
Sekizlik `kip` | Anlamı
--- | ---
`0140000` | soket
`0120000` | bağ
`0100000` | normal dosya
`0060000` | blok aygıtı
`0040000` | dizin
`0020000` | karakter aygıtı
`0010000` | fifo

Dolayısıyla, örneğin, normal bir dosyanın kipi `0100644` iken dizin için `0040755` olur.

Hata durumunda, stat() `false` döndürür.

> Bilginize: PHP'nin tamsayı türü, işaretli tamsayı türü olduğundan 32 bitlik tamsayıların kullanıldığı sistemlerde bazı dosya sistemi işlevleri 2GB'tan büyük dosyalarda beklenmedik sonuçlar verebilir.

### Hatalar/İstisnalar

Başarısızlık durumunda bir `E_WARNING` çıktılanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Windows üzerinde, aygıt numarası artık dosyayı içeren birimin seri numarası oldu. Evvelce dosya ile ilgili tanımlayıcının düğüm numarası idi.
7.4.0 | Sembolik bağların `size`, `atime`, `mtime` ve `ctime` istatistikleri olarak artık hedefin istatistikleri kullanılıyor. Evvelce, bunları NTS sembolik bağdan oluştururdu.

### Örnekler

Örnek 1 - stat() örneği

    <?php
    /* Dosya durumunu alalım */
    $stat = stat('C:\php\php.exe');

    /*
     * Dosya erişim zamanını basalım.
     * Bu, fileatime() çağrısına eşdeğerdir.
     */
    echo 'Erişim zamanı: ' . $stat['atime'];

    /*
     * Dosya değişiklik zamanını basalım.
     * Bu, filemtime() çağrısına eşdeğerdir.
     */
    echo 'Değişiklik zamanı: ' . $stat['mtime'];

    /* Aygıt numarasını basalım */
    echo 'Aygıt numarası: ' . $stat['dev'];

Örnek 2 - stat() bilgisinin touch() ile birlikte kullanımı

    <?php
    /* Dosya durumunu alalım */
    $stat = stat('C:\php\php.exe');

    /* Bilgiyi alırken başarısız olduk mu? */
    if(!$stat) {
        echo 'Stat çağrısı başarısız oldu...';
    } else {
        /*
         * Mevcut erişim zamanı 1 hafta öncesi olsun
         */
        $atime = $stat['atime'] + 604800;

        /* Dosyaya dokunalım */
        if (!touch('some_file.txt', time(), $atime)) {
            echo 'Dosyaya erişilemedi...';
        } else {
            echo 'Dosyaya başarıyla erişildi...';
        }
    }
    ?>

### Notlar

> Bilginize:

> Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.

> Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.

### Ayrıca Bakınız

- lstat() - Bir dosya veya sembolik bağ hakkında bilgi verir
- fstat() - Bir açık dosya tanıtıcısı kullanarak bir dosya hakkında bilgi döndürür
- filemtime() - Dosyanın değişiklik zamanını döndürür
- filegroup() - Dosyanın sahibi olan grubu döndürür
- SplFileInfo

# symlink

(PHP 4, PHP 5, PHP 7, PHP 8)

symlink — Bir sembolik bağ oluşturur

### Açıklama

function symlink(string `$hedef`, string `$bağ`): bool

symlink() işlevi mevcut `hedef`'e `bağ` bağımsız değişkeninde belirtilen isimle bir sembolik bağ oluşturur.

### Bağımsız Değişkenler

`hedef`

  Bağın hedefi.

`bağ`

  Sembolik bağın ismi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

`bağ` dosyası zaten varsa bu işlev başarısız olur ve bir `E_WARNING` çıktılar. Windows üzerinde, buna ek olarak `hedef` dosyasının yokluğu da işlevin başarısız olmasına ve bir `E_WARNING` çıktılanmasına sebep olur.

### Örnekler

Örnek 1 - Bir sembolik bağ oluşturmak

    <?php
    $hedef = 'uploads.php';
    $bağ = 'uploads';
    symlink($hedef, $bağ);

    echo readlink($bağ);
    ?>

### Ayrıca Bakınız

- link() - Sabit bir bağ oluşturur
- readlink() - Bir sembolik bağın hedefi ile döner
- linkinfo() - Bir bağ hakkında bilgi verir
- unlink() - Bir dosyayı siler

# tempnam

(PHP 4, PHP 5, PHP 7, PHP 8)

tempnam — Eşsiz bir isimle dosya oluşturur

### Açıklama

function tempnam(string `$dizin`, string `$önek`): string|false

Belirtilen dizinde eşsiz bir isimle bir dosya oluşturur ve erişim izinlerini 0600'e ayarlar. Eğer belirtilen dizin mevcut değilse veya yazılabilir değilse tempnam() sistem geçici dizininde bir dosya oluşturup bunun ismini içeren tam dosya yolunu döndürür.

### Bağımsız Değişkenler

`dizin`

  Geçici dosyanın oluşturulacağı dizin.

`önek`

  Üretilecek geçici dosyaismi için önek.

  > Bilginize: Önekin sadece ilk 63 karakteri kullanılır, kalanı yok sayılır. Windows ise önekin sadece ilk üç karakterini kullanır.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde yeni geçici dosyanın tam dosya yolu ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | tempnam() sistemin temp dizinini kullanmak zorunda kalınca artık bir uyarı veriyor.

### Örnekler

Örnek 1 - tempnam() örneği

    <?php
    $geçicidosya = tempnam("/tmp", "FOO");

    $tutamak = fopen($geçicidosya, "w");
    fwrite($tutamak, "geçici dosya yazılıyor");
    fclose($tutamak);

    // bir takım kodlar

    unlink($geçicidosya);
    ?>

### Notlar

> Bilginize: PHP `dizin` ile belirtilen dizinde bir dosya oluşturamazsa son çare olarak sistem öntanımlısını dener. NTFS dosya sisteminde bu durum, `dizin` ile belirtilen dizin 65534'ten dana fazla dosya içerdiğinde de ortaya çıkar.

### Ayrıca Bakınız

- tmpfile() - Geçici bir dosya oluşturur
- sys_get_temp_dir() - Geçici dosyalar için kullanılan dizini döndürür
- unlink() - Bir dosyayı siler

# tmpfile

(PHP 4, PHP 5, PHP 7, PHP 8)

tmpfile — Geçici bir dosya oluşturur

### Açıklama

function tmpfile(): resource|false

Eşsiz bir isimle oku-yaz-ikil (w+b) kipinde geçici bir dosya oluşturur ve bu dosya için bir dosya tanıtıcısı döndürür.

Dosya (fclose() çağrılarak kapatıldığında tmpfile() tarafından döndürülen dosya tanıtıcısına herhangi bir atıf kalmadığı zaman) veya betik sonlandığında dosya otomatikman silinir.

Dikkat

Betik beklenmedik şekilde sonlanırsa geçici dosya silinebilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde fopen() işlevinin yaptığı gibi yeni dosya için bir dosya tanıtıcısı ile döner.

### Örnekler

Örnek 1 - tmpfile() örneği

    <?php
    $temp = tmpfile();
    fwrite($temp, "geçici dosyaya yazılıyor");
    fseek($temp, 0);
    echo fread($temp, 1024);
    fclose($temp); // Dosyanın silinmesine sebep olur
    ?>

Yukarıdaki örneğin çıktısı:

    geçici dosyaya yazılıyor

### Ayrıca Bakınız

- tempnam() - Eşsiz bir isimle dosya oluşturur
- sys_get_temp_dir() - Geçici dosyalar için kullanılan dizini döndürür

# touch

(PHP 4, PHP 5, PHP 7, PHP 8)

touch — Dosyanın erişim ve değişiklik zamanını ayarlar

### Açıklama

function touch(string `$dosyaismi`, ?int `$zaman` = `null`, ?int `$ezamanı` = `null`): bool

`dosyaismi` bağımsız değişkeni ile ismi belirtilen dosyanın erişim ve değişiklik zamanlarını `zaman` bağımsız değişkeni ile belirtilen zamana ayarlamaya çalışır.

Dosya mevcut değilse oluşturulur.

### Bağımsız Değişkenler

`dosyaismi`

  Erişilecek dosyanın ismi.

`zaman`

  Değişiklik zamanı. Eğer `zaman` `null` ise, o anki zaman kullanılır.

`ezamanı`

  `null` değilse dosyanın erişim zamanı `ezamanı` değerine ayarlanır. Aksi takdirde `zaman` değerine ayarlanır. İki bağımsız değişken de `null` ise geçerli sistem zamanı kullanılır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `zaman` ve `ezamanı` artık `null` olabiliyor.

### Örnekler

Örnek 1 - touch() örneği

    <?php
    if (touch($dosyaismi)) {
        echo $dosyaismi . " için değişiklik zamanı şimdiye ayarlandı";
    } else {
        echo $dosyaismi . " için değişiklik zamanı değiştirilemedi";
    }
    ?>

Örnek 2 -touch() ve `zaman` kullanımı

    <?php
    // Dosyanın değişiklik zamanını bir saat önceye ayarlayalım
    $zaman = time() - 3600;

    // Dosyaya dokunalım
    if(!touch('bir_dosya.txt', $zaman))
    {
        echo 'Hoop, bir şeyler yanlış oldu...';
    } else {
        echo 'Dosyaya başarıyla dokunuldu';
    }
    ?>

### Notlar

> Bilginize:

> Zaman çözünürlüğünün dosya sistemine göre farklı olabileceğini unutmayın.

# umask

(PHP 4, PHP 5, PHP 7, PHP 8)

umask — Geçerli izin maskesini değiştirir

### Açıklama

function umask(?int `$maske` = `null`): int

umask() işlevi PHP'nin izin maskesini `maske` & 0777 olarak ayarlar ve eskisini döndürür. PHP bir sunucu modülü olarak kullanıldığında izin maskesi her isteğin bitiminde eski değerine döndürülür.

### Bağımsız Değişkenler

`maske`

  Yeni izin maskesi.

### Dönen Değerler

`maske` `null` ise umask() işlevi geçerli izin maskesini, aksi takdirde eski izin maskesini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `maske` artık `null` olabiliyor.

### Örnekler

Örnek 1 - umask() örneği

    <?php
    $eski = umask(0);
    chmod("/bir/dizin/bir_dosya.txt", 0755);
    umask($eski);

    // Sınayalım
    if ($eski != umask()) {
        die('İzin maskesine eski değeri atanırken bir hata oluştu');
    }
    ?>

### Notlar

> Bilginize:

> Bu işlevi çok evreli sunucularda kullanmaktan kaçının. Dosya izinlerini dosyayı oluşturduktan sonra chmod() ile değiştirmek daha iyidir. umask() kullanımı çalışmakta olan betiklerin ve aynı izin maskesini kullanması sebebiyle HTTP sunucusunun beklenmedik davranışlar göstermesiyle sonuçlanabilir.

# unlink

(PHP 4, PHP 5, PHP 7, PHP 8)

unlink — Bir dosyayı siler

### Açıklama

function unlink(string `$dosyaismi`, ?resource `$bağlam` = `null`): bool

`dosyaismi` ile belirtilen dosyayı siler. Unix C unlink() işlevine benzer. Başarısızlık durumunda `E_WARNING` seviyesinde bir hata üretilir.

### Bağımsız Değişkenler

`dosyaismi`

  Dosya yolu.

  Dosya sembolik bağ ise sembolik bağ silinir. Windows'ta, bir dizinin sembolik bağı silinecekse bunun yerine rmdir() işlevi kullanılmalıdır.

`bağlam`

  Akım bağlamı özkaynağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.3.0 | Windows üzerinde, tanıtıcısı kullanımda olan dosyalar artık unlink() ile silinebiliyor, evvelce bu başarısız olurdu. Ancak, tüm tanıtıcıları kapatılana kadar bu işlev ile silinmiş bir dosyayı yeniden oluşturmak mümkündür.

### Örnekler

Örnek 1 - Basit unlink() kullanımı

    <?php
    $fh = fopen('deneme.html', 'a');
    fwrite($fh, '<h1>Menhaba Dünya!</h1>');
    fclose($fh);

    unlink('deneme.html');
    ?>

### Ayrıca Bakınız

- rmdir() - Dizin siler

## İçindekiler

- basename — Dosya yolunun ucundaki dosya ismi bileşenini döndürür
- chgrp — Dosya grubunu değiştirir
- chmod — Dosya kipini değiştirir
- chown — Dosyanın sahibini değiştirir
- clearstatcache — Dosya durum önbelleğini temizler
- copy — Dosya kopyalar
- delete — unlink veya unset işlevine bakınız
- dirname — Üst dizinin yolunu döndürür
- disk_free_space — Disk bölümü veya dosya sistemindeki kullanılabilir alanı döndürür
- disk_total_space — Bir disk bölümünün veya dosya sisteminin toplam boyutunu döndürür
- diskfreespace — disk_free_space işlevinin takma adıdır
- fclose — Açık bir dosya tanıtıcısını kapatır
- fdatasync — Veriyi (meta-veriyi değil) dosyaya eşzamanlar
- feof — Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar
- fflush — Çıktıyı bir dosyaya boşaltır
- fgetc — Dosya tanıtıcısından bir karakter döndürür
- fgetcsv — Dosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür
- fgets — Dosya tanıtıcısından bir satır döndürür
- fgetss — Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
- file — Dosya içeriğinin tamamını bir diziye okur
- file_exists — Bir dosya veya dizinin mevcut olup olmadığına bakar
- file_get_contents — Dosya içeriğinin tamamını bir dizge olarak döndürür
- file_put_contents — Veriyi bir dosyaya yazar
- fileatime — Dosyaya son erişim zamanını döndürür
- filectime — Dosyanın dosya düğümü değişiklik zamanını döndürür
- filegroup — Dosyanın sahibi olan grubu döndürür
- fileinode — Dosyanın düğüm numarasını döndürür
- filemtime — Dosyanın değişiklik zamanını döndürür
- fileowner — Dosya sahibini döndürür
- fileperms — Dosya izinlerini döndürür
- filesize — Dosya uzunluğunu döndürür
- filetype — Dosya türünü döndürür
- flock — Öneri niteliğinde taşınabilir dosya kilitleme
- fnmatch — Dosya ismi belirtilen kalıpla eşleşiyor mu diye bakar
- fopen — Bir dosya veya URL'yi açar
- fpassthru — Bir dosya tanıtıcısında kalan verinin tamamını çıktılar
- fputcsv — Satırı CSV olarak biçemler ve dosya tanıtıcısına yazar
- fputs — fwrite işlevinin takma adıdır
- fread — Dosyayı ikil kipte okur
- fscanf — Bir dosyadaki girdiyi belli bir biçeme göre çözümler
- fseek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
- fstat — Bir açık dosya tanıtıcısı kullanarak bir dosya hakkında bilgi döndürür
- fsync — Değişiklikleri dosyaya eşzamanlar (meta-veri dahil)
- ftell — Dosya okuma/yazma konumlayıcının mevcut konumu ile döner
- ftruncate — Bir dosyayı belli bir uzunlukta budar
- fwrite — Dosyaya ikil kipte yazar
- glob — Bir kalıpla eşleşen dosya yollarını bulur
- is_dir — Bir dosyanın bir dizin olup olmadığını söyler
- is_executable — Bir dosyanın çalıştırılabilir bir dosya olup olmadığını söyler
- is_file — Bir dosyanın sıradan bir dosya olup olmadığını söyler
- is_link — Dosya sembolik bağ ise bunu doğrular
- is_readable — Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
- is_uploaded_file — Bir dosya HTTP POST üzerinden karşıya yüklenebilecekse bunu söyler
- is_writable — Dosyanın yazılabilir kipte ise bunu doğrular
- is_writeable — Dosya yazılabilir kipteyse bunu doğrular
- lchgrp — Bir sembolik bağın grubunu değiştirir
- lchown — Bir sembolik bağın sahibini değiştirir
- link — Sabit bir bağ oluşturur
- linkinfo — Bir bağ hakkında bilgi verir
- lstat — Bir dosya veya sembolik bağ hakkında bilgi verir
- mkdir — Dizin oluşturur
- move_uploaded_file — Karşıya yüklenen bir dosyayı yeni bir yere taşır
- parse_ini_file — Bir yapılandırma dosyasını çözümler
- parse_ini_string — Bir yapılandırma dizgesini çözümler
- pathinfo — Bir dosya yolu hakkında bilgi döndürür
- pclose — Bir süreç tanıtıcısını kapatır
- popen — Bir süreç tanıtıcısı açar
- readfile — Bir dosyayı çıktılar
- readlink — Bir sembolik bağın hedefi ile döner
- realpath — Normalleştirilmiş mutlak dosya yolunu döndürür
- realpath_cache_get — Mutlak dosya yolu önbellek girdilerini döndürür
- realpath_cache_size — Mutlak dosya yolu önbellek boyunu döndürür
- rename — Bir dosya veya dizinin ismini değiştirir
- rewind — Bir dosya tanıtıcısında konumu başa taşır
- rmdir — Dizin siler
- set_file_buffer — stream_set_write_buffer işlevinin takma adıdır
- stat — Bir dosya hakkında bilgi döndürür
- symlink — Bir sembolik bağ oluşturur
- tempnam — Eşsiz bir isimle dosya oluşturur
- tmpfile — Geçici bir dosya oluşturur
- touch — Dosyanın erişim ve değişiklik zamanını ayarlar
- umask — Geçerli izin maskesini değiştirir
- unlink — Bir dosyayı siler

- Yapılandırma/Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Dosya Sistemi İşlevleri
  - basename — Dosya yolunun ucundaki dosya ismi bileşenini döndürür
  - chgrp — Dosya grubunu değiştirir
  - chmod — Dosya kipini değiştirir
  - chown — Dosyanın sahibini değiştirir
  - clearstatcache — Dosya durum önbelleğini temizler
  - copy — Dosya kopyalar
  - delete — unlink veya unset işlevine bakınız
  - dirname — Üst dizinin yolunu döndürür
  - disk_free_space — Disk bölümü veya dosya sistemindeki kullanılabilir alanı döndürür
  - disk_total_space — Bir disk bölümünün veya dosya sisteminin toplam boyutunu döndürür
  - diskfreespace — disk_free_space işlevinin takma adıdır
  - fclose — Açık bir dosya tanıtıcısını kapatır
  - fdatasync — Veriyi (meta-veriyi değil) dosyaya eşzamanlar
  - feof — Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar
  - fflush — Çıktıyı bir dosyaya boşaltır
  - fgetc — Dosya tanıtıcısından bir karakter döndürür
  - fgetcsv — Dosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür
  - fgets — Dosya tanıtıcısından bir satır döndürür
  - fgetss — Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
  - file — Dosya içeriğinin tamamını bir diziye okur
  - file_exists — Bir dosya veya dizinin mevcut olup olmadığına bakar
  - file_get_contents — Dosya içeriğinin tamamını bir dizge olarak döndürür
  - file_put_contents — Veriyi bir dosyaya yazar
  - fileatime — Dosyaya son erişim zamanını döndürür
  - filectime — Dosyanın dosya düğümü değişiklik zamanını döndürür
  - filegroup — Dosyanın sahibi olan grubu döndürür
  - fileinode — Dosyanın düğüm numarasını döndürür
  - filemtime — Dosyanın değişiklik zamanını döndürür
  - fileowner — Dosya sahibini döndürür
  - fileperms — Dosya izinlerini döndürür
  - filesize — Dosya uzunluğunu döndürür
  - filetype — Dosya türünü döndürür
  - flock — Öneri niteliğinde taşınabilir dosya kilitleme
  - fnmatch — Dosya ismi belirtilen kalıpla eşleşiyor mu diye bakar
  - fopen — Bir dosya veya URL'yi açar
  - fpassthru — Bir dosya tanıtıcısında kalan verinin tamamını çıktılar
  - fputcsv — Satırı CSV olarak biçemler ve dosya tanıtıcısına yazar
  - fputs — fwrite işlevinin takma adıdır
  - fread — Dosyayı ikil kipte okur
  - fscanf — Bir dosyadaki girdiyi belli bir biçeme göre çözümler
  - fseek — Dosya tanıtıcısında konumu bir yerden başka bir yere taşır
  - fstat — Bir açık dosya tanıtıcısı kullanarak bir dosya hakkında bilgi döndürür
  - fsync — Değişiklikleri dosyaya eşzamanlar (meta-veri dahil)
  - ftell — Dosya okuma/yazma konumlayıcının mevcut konumu ile döner
  - ftruncate — Bir dosyayı belli bir uzunlukta budar
  - fwrite — Dosyaya ikil kipte yazar
  - glob — Bir kalıpla eşleşen dosya yollarını bulur
  - is_dir — Bir dosyanın bir dizin olup olmadığını söyler
  - is_executable — Bir dosyanın çalıştırılabilir bir dosya olup olmadığını söyler
  - is_file — Bir dosyanın sıradan bir dosya olup olmadığını söyler
  - is_link — Dosya sembolik bağ ise bunu doğrular
  - is_readable — Bir dosyanın mevcut ve okunabilir olup olmadığını söyler
  - is_uploaded_file — Bir dosya HTTP POST üzerinden karşıya yüklenebilecekse bunu söyler
  - is_writable — Dosyanın yazılabilir kipte ise bunu doğrular
  - is_writeable — Dosya yazılabilir kipteyse bunu doğrular
  - lchgrp — Bir sembolik bağın grubunu değiştirir
  - lchown — Bir sembolik bağın sahibini değiştirir
  - link — Sabit bir bağ oluşturur
  - linkinfo — Bir bağ hakkında bilgi verir
  - lstat — Bir dosya veya sembolik bağ hakkında bilgi verir
  - mkdir — Dizin oluşturur
  - move_uploaded_file — Karşıya yüklenen bir dosyayı yeni bir yere taşır
  - parse_ini_file — Bir yapılandırma dosyasını çözümler
  - parse_ini_string — Bir yapılandırma dizgesini çözümler
  - pathinfo — Bir dosya yolu hakkında bilgi döndürür
  - pclose — Bir süreç tanıtıcısını kapatır
  - popen — Bir süreç tanıtıcısı açar
  - readfile — Bir dosyayı çıktılar
  - readlink — Bir sembolik bağın hedefi ile döner
  - realpath — Normalleştirilmiş mutlak dosya yolunu döndürür
  - realpath_cache_get — Mutlak dosya yolu önbellek girdilerini döndürür
  - realpath_cache_size — Mutlak dosya yolu önbellek boyunu döndürür
  - rename — Bir dosya veya dizinin ismini değiştirir
  - rewind — Bir dosya tanıtıcısında konumu başa taşır
  - rmdir — Dizin siler
  - set_file_buffer — stream_set_write_buffer işlevinin takma adıdır
  - stat — Bir dosya hakkında bilgi döndürür
  - symlink — Bir sembolik bağ oluşturur
  - tempnam — Eşsiz bir isimle dosya oluşturur
  - tmpfile — Geçici bir dosya oluşturur
  - touch — Dosyanın erişim ve değişiklik zamanını ayarlar
  - umask — Geçerli izin maskesini değiştirir
  - unlink — Bir dosyayı siler

# Inotify

# Giriş

The inotify extension exposes the inotify functions inotify_init(), inotify_add_watch() and inotify_rm_watch().

As the C inotify_init() function returns a file descriptor, PHP's inotify_init() returns a stream resource, usable with standard stream functions, like stream_select(), stream_set_blocking() and fclose(). inotify_read() replaces the C way of reading inotify events.

# Yapılandırma/Kurulum

## İçindekiler

- Yapılandırma/Kurulum
- Özkaynak Türleri

## Yapılandırma/Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/inotify.

## Özkaynak Türleri

This extension defines a stream resource returned by inotify_init().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Inotify constants usable with inotify_add_watch() and/or returned by inotify_read()
`IN_ACCESS` (int)
  File was accessed (read) (*)
`IN_MODIFY` (int)
  File was modified (*)
`IN_ATTRIB` (int)
  Metadata changed (e.g. permissions, mtime, etc.) (*)
`IN_CLOSE_WRITE` (int)
  File opened for writing was closed (*)
`IN_CLOSE_NOWRITE` (int)
  File not opened for writing was closed (*)
`IN_OPEN` (int)
  File was opened (*)
`IN_MOVED_TO` (int)
  File moved into watched directory (*)
`IN_MOVED_FROM` (int)
  File moved out of watched directory (*)
`IN_CREATE` (int)
  File or directory created in watched directory (*)
`IN_DELETE` (int)
  File or directory deleted in watched directory (*)
`IN_DELETE_SELF` (int)
  Watched file or directory was deleted
`IN_MOVE_SELF` (int)
  Watch file or directory was moved
`IN_CLOSE` (int)
  Equals to IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
`IN_MOVE` (int)
  Equals to IN_MOVED_FROM | IN_MOVED_TO
`IN_ALL_EVENTS` (int)
  Bitmask of all the above constants
`IN_UNMOUNT` (int)
  File system containing watched object was unmounted
`IN_Q_OVERFLOW` (int)
  Event queue overflowed (wd is -1 for this event)
`IN_IGNORED` (int)
  Watch was removed (explicitly by inotify_rm_watch() or because file was removed or filesystem unmounted
`IN_ISDIR` (int)
  Subject of this event is a directory
`IN_ONLYDIR` (int)
  Only watch pathname if it is a directory (Since Linux 2.6.15)
`IN_DONT_FOLLOW` (int)
  Do not dereference pathname if it is a symlink (Since Linux 2.6.15)
`IN_MASK_ADD` (int)
  Add events to watch mask for this pathname if it already exists (instead of replacing mask).
`IN_ONESHOT` (int)
  Monitor pathname for one event, then remove from watch list.

> Bilginize: The events marked with an asterisk (*) above can occur for files in watched directories.

# Inotify İşlevleri

# inotify_add_watch

(PECL inotify >= 0.1.2)

inotify_add_watch — Add a watch to an initialized inotify instance

### Açıklama

function inotify_add_watch(resource `$inotify_instance`, string `$pathname`, int `$mask`): int|false

inotify_add_watch() adds a new watch or modify an existing watch for the file or directory specified in `pathname`.

Using inotify_add_watch() on a watched object replaces the existing watch. Using the `IN_MASK_ADD` constant adds (OR) events to the existing watch.

### Bağımsız Değişkenler

`inotify_instance`
  inotify_init() tarafından döndürülen özkaynak
`pathname`
  File or directory to watch
`mask`
  Events to watch for. See Yerleşik Sabitler.

### Dönen Değerler

The return value is a unique (inotify instance wide) watch descriptor, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- inotify_init() - Initialize an inotify instance

# inotify_init

(PECL inotify >= 0.1.2)

inotify_init — Initialize an inotify instance

### Açıklama

function inotify_init(): resource|false

Initialize an inotify instance for use with inotify_add_watch()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A stream resource or `false` on error.

### Örnekler

Örnek 1 Example usage of inotify

    <?php
    // Open an inotify instance
    $fd = inotify_init();

    // Watch __FILE__ for metadata changes (e.g. mtime)
    $watch_descriptor = inotify_add_watch($fd, __FILE__, IN_ATTRIB);

    // generate an event
    touch(__FILE__);

    // Read events
    $events = inotify_read($fd);
    print_r($events);

    // The following methods allows to use inotify functions without blocking on inotify_read():

    // - Using stream_select() on $fd:
    $read = array($fd);
    $write = null;
    $except = null;
    stream_select($read,$write,$except,0);

    // - Using stream_set_blocking() on $fd
    stream_set_blocking($fd, 0);
    inotify_read($fd); // Does no block, and return false if no events are pending

    // - Using inotify_queue_len() to check if event queue is not empty
    $queue_len = inotify_queue_len($fd); // If > 0, inotify_read() will not block

    // Stop watching __FILE__ for metadata changes
    inotify_rm_watch($fd, $watch_descriptor);

    // Close the inotify instance
    // This may have closed all watches if this was not already done
    fclose($fd);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(
      array(
        'wd' => 1,     // Equals $watch_descriptor
        'mask' => 4,   // IN_ATTRIB bit is set
        'cookie' => 0, // unique id to connect related events (e.g.
                       // IN_MOVE_FROM and IN_MOVE_TO events)
        'name' => '',  // the name of a file (e.g. if we monitored changes
                       // in a directory)
      ),
    );

### Ayrıca Bakınız

- inotify_add_watch() - Add a watch to an initialized inotify instance
- inotify_rm_watch() - Remove an existing watch from an inotify instance
- inotify_queue_len() - Return a number upper than zero if there are pending events
- inotify_read() - Read events from an inotify instance
- fclose() - Açık bir dosya tanıtıcısını kapatır

# inotify_queue_len

(PECL inotify >= 0.1.2)

inotify_queue_len — Return a number upper than zero if there are pending events

### Açıklama

function inotify_queue_len(resource `$inotify_instance`): int

This function allows to know if inotify_read() will block or not. If a number upper than zero is returned, there are pending events and inotify_read() will not block.

### Bağımsız Değişkenler

`inotify_instance`
  inotify_init() tarafından döndürülen özkaynak

### Dönen Değerler

Returns a number upper than zero if there are pending events.

### Ayrıca Bakınız

- inotify_init() - Initialize an inotify instance
- stream_select() - Belirtilen akım dizisi üzerinde saniye ve mikrosaniye ile belirtilen zaman aşımıyla select() sistem çağrısının eşdeğeri olarak çalışır
- stream_set_blocking() - Akımın engelleme kipini ayarlar

# inotify_read

(PECL inotify >= 0.1.2)

inotify_read — Read events from an inotify instance

### Açıklama

function inotify_read(resource `$inotify_instance`): array

Read inotify events from an inotify instance.

### Bağımsız Değişkenler

`inotify_instance`
  inotify_init() tarafından döndürülen özkaynak

### Dönen Değerler

An array of inotify events or `false` if no events was pending and `inotify_instance` is non-blocking. Each event is an array with the following keys:

- wd is a watch descriptor returned by inotify_add_watch()
- mask is a bit mask of events
- cookie is a unique id to connect related events (e.g. `IN_MOVE_FROM` and `IN_MOVE_TO`)
- name is the name of a file (e.g. if a file was modified in a watched directory)

### Ayrıca Bakınız

- inotify_init() - Initialize an inotify instance
- stream_select() - Belirtilen akım dizisi üzerinde saniye ve mikrosaniye ile belirtilen zaman aşımıyla select() sistem çağrısının eşdeğeri olarak çalışır
- stream_set_blocking() - Akımın engelleme kipini ayarlar
- inotify_queue_len() - Return a number upper than zero if there are pending events

# inotify_rm_watch

(PECL inotify >= 0.1.2)

inotify_rm_watch — Remove an existing watch from an inotify instance

### Açıklama

function inotify_rm_watch(resource `$inotify_instance`, int `$watch_descriptor`): bool

inotify_rm_watch() removes the watch `watch_descriptor` from the inotify instance `inotify_instance`.

### Bağımsız Değişkenler

`inotify_instance`
  inotify_init() tarafından döndürülen özkaynak
`watch_descriptor`
  Watch to remove from the instance

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- inotify_init() - Initialize an inotify instance

## İçindekiler

- inotify_add_watch — Add a watch to an initialized inotify instance
- inotify_init — Initialize an inotify instance
- inotify_queue_len — Return a number upper than zero if there are pending events
- inotify_read — Read events from an inotify instance
- inotify_rm_watch — Remove an existing watch from an inotify instance

- Yapılandırma/Kurulum
  - Yapılandırma/Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Inotify İşlevleri
  - inotify_add_watch — Add a watch to an initialized inotify instance
  - inotify_init — Initialize an inotify instance
  - inotify_queue_len — Return a number upper than zero if there are pending events
  - inotify_read — Read events from an inotify instance
  - inotify_rm_watch — Remove an existing watch from an inotify instance

# xattr

# Giriş

Xattr eklentisi bir dosya sisteminin ek özniteliklerinde değişiklik yapmaya yarar.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

xattr eklentisini kullanmak için, libattr sisteminizde kurulu olmalıdır. Libattr » http://savannah.nongnu.org/projects/attr/ adresinden edinilebilir.

> Bilginize:

> Bu işlevler sadece ek özniteliklerin desteklendiği dosya sistemlerinde dosya sistemi bağlanırken etkinleştirildikleri takdirde çalışır. Ek öznitelikleri desteklediği bilinen dosya sistemleri şunlardır: `ext2`, `ext3`, `reiserfs`, `jfs` ve `xfs`.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/xattr

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`XATTR_ROOT` (int)
  Özniteliği root isim alanında tanımlar; root yetkisi gerektirir.
`XATTR_DONTFOLLOW` (int)
  Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.
`XATTR_CREATE` (int)
  Ek öznitelik zaten tanımlıysa işlev başarısız olur.
`XATTR_REPLACE` (int)
  Öznitelik evvelce tanımlanmamışsa işlev başarısız olur.

# xattr İşlevleri

# xattr_get

(PECL xattr >= 0.9.0)

xattr_get — Bir özniteliğin değerini döndürür

### Açıklama

function xattr_get(string `$dosya`, string `$isim`, int `$seçenekler` = 0): string|false

Belirtilen dosyanın belirtilen özniteliğinin değerini döndürür.

Ek öznitelikler iki isim alanına sahiptir: kullanıcı ve root. Kullanıcı isim alanını tüm kullanıcılar kullanabilir; root isim alanını ise sadece root yetkilerine sahip kullanıcılar kullanabilir. xattr eklentisi öntanımlı olarak kullanıcı isim alanında işlem yapar, fakat bu davranış `seçenekler` bağımsız değişkeni ile değiştirilebilir.

### Bağımsız Değişkenler

`dosya`

  Özniteliği sorgulanacak dosyanın yolu.

`isim`

  Özniteliğin ismi.

`seçenekler`

  Desteklenen xattr seçenekleri
  `XATTR_DONTFOLLOW` | Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.
  `XATTR_ROOT` | Özniteliği root isim alanında tanımlar; root yetkisi gerektirir.

### Dönen Değerler

Öznitelik tanımlı değilse `false` tanımlıysa değeri bir dizge olarak döndürür.

### Örnekler

Örnek 1 - Yönetici dosyayı imzalamış mı diye bakmak

    <?php
    $dosya = '/usr/local/sbin/bir_dosya';
    $imza = xattr_get($dosya, 'Root imzasi', XATTR_ROOT);

    /* ... $imza geçerli mi diye bakılsın ... */

    ?>

### Ayrıca Bakınız

- xattr_list() - Ek özniteliklerin listesini döndürür
- xattr_set() - Bir ek özniteliği tanımlar
- xattr_remove() - Bir ek özniteliği siler

# xattr_list

(PECL xattr >= 0.9.0)

xattr_list — Ek özniteliklerin listesini döndürür

### Açıklama

function xattr_list(string `$dosya`, int `$seçenekler` = 0): array

Belirtilen dosyanın ek özniteliklerinin listesini döndürür.

Ek öznitelikler iki isim alanına sahiptir: kullanıcı ve root. Kullanıcı isim alanını tüm kullanıcılar kullanabilir; root isim alanını ise sadece root yetkilerine sahip kullanıcılar kullanabilir. xattr eklentisi öntanımlı olarak kullanıcı isim alanında işlem yapar, fakat bu davranış `seçenekler` bağımsız değişkeni ile değiştirilebilir.

### Bağımsız Değişkenler

`dosya`

  Dosya yolu.

`seçenekler`

  Desteklenen xattr seçenekleri
  `XATTR_DONTFOLLOW` | Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.
  `XATTR_ROOT` | Özniteliği root isim alanında tanımlar; root yetkisi gerektirir.

### Dönen Değerler

Ek özniteliklerin isimlerini içeren bir dizi döndürür.

### Örnekler

Örnek 1 - Bir dosyanın tüm özniteliklerini listelemek

    <?php
    $file = 'some_file';
    $root_attributes = xattr_list($file, XATTR_ROOT);
    $user_attributes = xattr_list($file);

    echo "root öznitelikleri: \n";
    foreach ($root_attributes as $attr_name) {
        printf("%s\n", $attr_name);
    }

    echo "\n kullanıcı öznitelikleri: \n";
    foreach ($attributes as $attr_name) {
        printf("%s\n", $attr_name);
    }

    ?>

### Ayrıca Bakınız

- xattr_get() - Bir özniteliğin değerini döndürür

# xattr_remove

(PECL xattr >= 0.9.0)

xattr_remove — Bir ek özniteliği siler

### Açıklama

function xattr_remove(string `$dosya`, string `$isim`, int `$seçenekler` = 0): bool

Belirtilen dosyanın belirtilen özniteliğini siler.

Ek öznitelikler iki isim alanına sahiptir: kullanıcı ve root. Kullanıcı isim alanını tüm kullanıcılar kullanabilir; root isim alanını ise sadece root yetkilerine sahip kullanıcılar kullanabilir. xattr eklentisi öntanımlı olarak kullanıcı isim alanında işlem yapar, fakat bu davranış `seçenekler` bağımsız değişkeni ile değiştirilebilir.

### Bağımsız Değişkenler

`dosya`

  Özniteliği silinecek dosyanın yolu.

`isim`

  Silinecek özniteliğin ismi.

`seçenekler`

  Desteklenen xattr seçenekleri
  `XATTR_DONTFOLLOW` | Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.
  `XATTR_ROOT` | Özniteliği root isim alanında tanımlar; root yetkisi gerektirir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir dosyanın ek özniteliklerinin tamamını silmek

    <?php
    $dosya = '/mnt/hda1/bir_dosya';
    $öznitelikler = xattr_list($dosya);

    foreach ($öznitelikler as $öznitelik) {
        xattr_remove($dosya, $öznitelik);
    }
    ?>

### Ayrıca Bakınız

- xattr_list() - Ek özniteliklerin listesini döndürür
- xattr_set() - Bir ek özniteliği tanımlar
- xattr_get() - Bir özniteliğin değerini döndürür

# xattr_set

(PECL xattr >= 0.9.0)

xattr_set — Bir ek özniteliği tanımlar

### Açıklama

function xattr_set(
string `$dosya`,
string `$isim`,
string `$değer`,
int `$seçenekler` = 0
): bool

Belirtilen dosyanın belirtilen özniteliğini tanımlar.

Ek öznitelikler iki isim alanına sahiptir: kullanıcı ve root. Kullanıcı isim alanını tüm kullanıcılar kullanabilir; root isim alanını ise sadece root yetkilerine sahip kullanıcılar kullanabilir. xattr eklentisi öntanımlı olarak kullanıcı isim alanında işlem yapar, fakat bu davranış `seçenekler` bağımsız değişkeni ile değiştirilebilir.

### Bağımsız Değişkenler

`dosya`

  Özniteliği tanımlanacak dosyanın yolu.

`isim`

  Ek özniteliğin ismi. Öznitelik yoksa oluşturulur varsa değeri değiştirilir. Bu davranışı `seçenekler` bağımsız değişkeni ile değiştirebilirsiniz.

`değer`

  Özniteliğin değeri.

`seçenekler`

  Desteklenen xattr seçenekleri
  `XATTR_CREATE` | Ek öznitelik zaten tanımlıysa işlev başarısız olur.
  `XATTR_REPLACE` | Öznitelik evvelce tanımlanmamışsa işlev başarısız olur.
  `XATTR_DONTFOLLOW` | Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.
  `XATTR_ROOT` | Özniteliği root isim alanında tanımlar; root yetkisi gerektirir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Bir .wav dosyasında ek öznitelik tanımlamak

    <?php
    $file = 'sevilen_sarki.wav';
    xattr_set($file, 'Sarkici', 'Birisi');
    xattr_set($file, 'Kalite', 'Eh iste');
    xattr_set($file, 'Dinleme sayisi', '34');

    /* ... bazı kodlar ... */

    printf("Bu şarkı %d kere çalınmış", xattr_get($file, 'Dinleme sayisi'));
    ?>

### Ayrıca Bakınız

- xattr_get() - Bir özniteliğin değerini döndürür
- xattr_remove() - Bir ek özniteliği siler

# xattr_supported

(PECL xattr >= 1.0.0)

xattr_supported — Dosya sistemi ek öznitelikleri destekliyor mu diye bakar

### Açıklama

function xattr_supported(string `$dosya`, int `$seçenekler` = 0): bool

Belirtilen dosyayı içeren dosya sistemi ek öznitelikleri destekliyorsa `true` döner. Dosya için okuma izni gerekir.

### Bağımsız Değişkenler

`dosya`

  Sınanacak dosyanın yolu.

`seçenekler`

  Desteklenen xattr seçenekleri
  `XATTR_DONTFOLLOW` | Sembolik bağlar izlenmez, sembolik bağın kendisinde işlem yapar.

### Dönen Değerler

Dosya sistemi ek öznitelikleri destekliyorsa `true`, desteklemiyorsa `false`, yanlış yol belirtimi veya okuma izninin yokluğu gibi sebeplerle destek saptanamazsa `null` döner.

### Örnekler

Örnek 1 - xattr_supported() örneği

Aşağıdaki kodda ek öznitelikler kullanılabiliyor mu diye bakılmaktadır.

    <?php
    $dosya = '/mnt/hda1/bir_dosya';

    if (xattr_supported($dosya)) {
        /* ... xattr_* işlevleri burada kullanılabilir ... */
    }

    ?>

### Ayrıca Bakınız

- xattr_get() - Bir özniteliğin değerini döndürür
- xattr_list() - Ek özniteliklerin listesini döndürür

## İçindekiler

- xattr_get — Bir özniteliğin değerini döndürür
- xattr_list — Ek özniteliklerin listesini döndürür
- xattr_remove — Bir ek özniteliği siler
- xattr_set — Bir ek özniteliği tanımlar
- xattr_supported — Dosya sistemi ek öznitelikleri destekliyor mu diye bakar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- xattr İşlevleri
  - xattr_get — Bir özniteliğin değerini döndürür
  - xattr_list — Ek özniteliklerin listesini döndürür
  - xattr_remove — Bir ek özniteliği siler
  - xattr_set — Bir ek özniteliği tanımlar
  - xattr_supported — Dosya sistemi ek öznitelikleri destekliyor mu diye bakar

# xdiff

# Giriş

xdiff eklentisi, dosyaların farklı sürümleri arasındaki farkları içeren yama dosyalarını oluşturmanızı ve bunları uygulamanızı sağlar.

Eklenti iki işlem kipini destekler: Dizgeler ve dosyalar. Ayrıca iki farklı yama biçemini destekler: Tekil ve ikil. Tekilleştirilmiş yamalar kolayca okundukları için metin dosyaları için çok uygundur. İkil yamalar ise arşivler ve resimler gibi ikil dosyalar için uygun olup basılamayan karakterleri de elde edebilirler ve ikil olarak güvenilirdirler.

1.5.0 sürümünden başlayarak ikil yamaları üretmek için iki ayrı işlev kümesi kullanılmaktadır. Yeni işlevler, xdiff_string_rabdiff() ve xdiff_file_rabdiff(), eski işlevlerle uyumlu çıktılar üretmekle birlikte ürettikleri çıktılar daha hızlı ve daha küçüktür. İkil yamaların üretim yöntemleri ve bunların farkları hakkında daha ayrıntılı bilgi edinmek için » libxdiff sitesine bakınız.

xdiff eklentisi bu işlevleri gerçeklemek için libxdiff kütüphanesini kullanmaktadır. Daha fazla bilgi için » http://www.xmailserver.org/xdiff-lib.html adresine bakınız.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

xdiff eklentisini kullanmak için sisteminizde libxdiff kurulu olmalıdır. libxdiff » http://www.xmailserver.org/xdiff-lib.html adresinden edinilebilir.

> Bilginize:

> Bellek sınırlarını zorlamamak için libxdiff'in en azından 0.7 sürümü gerekir.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/xdiff

Bu PECL eklentisi için bir DLL mevcut değildir. Ayrıca, Windows üzerinde kurulum bölümüne de bakılabilir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`XDIFF_PATCH_NORMAL` (int)
  xdiff_string_patch() ve xdiff_file_patch() işlevlerinin yamayı özgün dosyaya uygulayıp dosyanın yeni sürümünü elde etmek amacıyla kullanılacağını belirtir. Bu öntanımlı işlem kipidir.
`XDIFF_PATCH_REVERSE` (int)
  xdiff_string_patch() ve xdiff_file_patch() işlevlerinin yamayı yeni sürüme uygulayıp dosyanın özgün sürümünü elde etmek amacıyla kullanılacağını belirtir.

# xdiff İşlevleri

# xdiff_file_bdiff

(PECL xdiff >= 1.5.0)

xdiff_file_bdiff — İki dosyanın ikil farkını alır

### Açıklama

function xdiff_file_bdiff(string `$eski_dosya`, string `$yeni_dosya`, string `$hedef`): bool

`eski_dosya` ile `yeni_dosya` arasındaki farklardan bir ikil fark dizgesi oluşturup sonucu `hedef` dosyasına kaydeder. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_file_bpatch() ve xdiff_string_bpatch() işleviyle uygulanabilir.

### Bağımsız Değişkenler

`eski_dosya`

  İlk dosyanın yolu. Eski dosya olarak ele alınır.

`yeni_dosya`

  İkinci dosyanın yolu. Yeni dosya olarak ele alınır.

`hedef`

  Elde edilen yamanın kaydedileceği dosyanın yolu. Dosya ikil bir dosya olacağından içeriği insanlarca okunabilir olmayacaktır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_bdiff() örneği

Aşağıda iki arşiv dosyasının ikil farkı alınmaktadır.

    <?php
    $old_version = 'my_script_1.0.tgz';
    $new_version = 'my_script_1.1.tgz';

    xdiff_file_bdiff($old_version, $new_version, 'my_script.bdiff');
    ?>

### Notlar

> Bilginize:

> Her iki dosya da belleğe yükleneceğinden memory_limit yönergesinde yeteri kadar bellek belirtilmelidir.

### Ayrıca Bakınız

- xdiff_file_bpatch() - Bir dosyaya bir ikil yama uygular

# xdiff_file_bdiff_size

(PECL xdiff >= 1.5.0)

xdiff_file_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür

### Açıklama

function xdiff_file_bdiff_size(string `$dosya`): int

Belirtilen ikil `yama` dizgesini özgün dosyaya uyguladıktan sonra oluşacak yeni dosyanın boyutunu döndürür.

### Bağımsız Değişkenler

`dosya`

  xdiff_file_bdiff() veya xdiff_file_rabdiff() tarafından oluşturulmuş ikil yama dosyasının yolu.

### Dönen Değerler

Oluşacak dosyanın boyutunu döndürür.

### Örnekler

Örnek 1 - xdiff_file_bdiff_size() örneği

Aşağıdaki kodda, bir ikil yama uygulanarak oluşturulacak dosyanın boyutu döndürülmektedir.

    <?php
    $length = xdiff_string_bdiff_size('file.bdiff');
    echo "Elde edilen dosya $length bayt uzunluktadır";
    ?>

### Ayrıca Bakınız

- xdiff_file_bdiff() - İki dosyanın ikil farkını alır
- xdiff_file_rabdiff() - Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır
- xdiff_file_bpatch() - Bir dosyaya bir ikil yama uygular

# xdiff_file_bpatch

(PECL xdiff >= 1.5.0)

xdiff_file_bpatch — Bir dosyaya bir ikil yama uygular

### Açıklama

function xdiff_file_bpatch(string `$dosya`, string `$yama`, string `$hedef`): bool

Belirtilen `dosya`'ya ikil `yama`'yı uygular ve sonucu `hedef`'e kaydeder. Bu işlev xdiff_file_bdiff() ve xdiff_file_rabdiff() işlevleriyle veya bunların dizgelerle çalışan eşdeğerleriyle üretilmiş yamaları kabul eder.

### Bağımsız Değişkenler

`dosya`

  Yamanın uygulanacağı dosyanın yolu.

`yama`

  İkil yama dosyası.

`hedef`

  Sonucun kaydedileceği dosyanın yolu.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_bpatch() örneği

Aşağıda bir dosyaya ikil yama uygulanmaktadır.

    <?php
    $old_version = 'archive-1.0.tgz';
    $patch = 'archive.bpatch';

    $result = xdiff_file_bpatch($old_version, $patch, 'archive-1.1.tgz');
    if ($result) {
       echo "Dosya yamandı";
    } else {
       echo "Dosya yamanamadı";
    }

    ?>

### Notlar

> Bilginize:

> Her iki dosya da (`dosya` ve `yama`) belleğe yükleneceğinden memory_limit yönergesinde yeteri kadar bellek belirtilmelidir.

### Ayrıca Bakınız

- xdiff_file_bdiff() - İki dosyanın ikil farkını alır
- xdiff_file_rabdiff() - Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

# xdiff_file_diff

(PECL xdiff >= 0.2.0)

xdiff_file_diff — İki dosyanın tekil farkını alır

### Açıklama

function xdiff_file_diff(
string `$eski_dosya`,
string `$yeni_dosya`,
string `$hedef`,
int `$bağlam` = 3,
bool `$küçült` = `false`
): bool

`eski_dosya` ile `yeni_dosya` arasındaki farklardan bir tekil fark dizgesi oluşturup sonucu `hedef`'e kaydeder. Elde edilen fark dizgesi insanlarca okunabilen bir dizgedir. İsteğe bağlı `bağlam` bağımsız değişkeni ile her değişikliğin altında ve üstünde kaç bağlam satırının bulunacağı belirtilir. Seçimlik `küçült` bağımsız değişkeninde `true` atandığı takdirde mümkün olan en küçük yama dizgesi oluşturulmaya çalışılır (işlem biraz uzun sürebilir).

### Bağımsız Değişkenler

`eski_dosya`

  İlk dosyanın yolu. Eski dosya olarak ele alınır.

`yeni_dosya`

  İkinci dosyanın yolu. Yeni dosya olarak ele alınır.

`hedef`

  Elde edilen yamanın kaydedileceği dosyanın yolu.

`bağlam`

  Her değişikliğin altında ve üstünde kaç bağlam satırının bulunacağı belirtilir.

`küçült`

  `true` atandığı takdirde mümkün olan en küçük yama dizgesi oluşturulmaya çalışılır (işlem biraz uzun sürebilir).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_diff() örneği

Aşağıdaki kodda, iki PHP dosyasının iki bağlam satırlı tekil farkı alınmaktadır.

    <?php
    $old_version = 'my_script.php';
    $new_version = 'my_new_script.php';

    xdiff_file_diff($old_version, $new_version, 'my_script.diff', 2);
    ?>

### Notlar

> Bilginize:

> Bu işlev ikil dosyalarla iyi çalışmaz. İkil fark dosyası elde etmek için xdiff_file_bdiff() veya xdiff_file_rabdiff() işlevi kullanılabilir.

### Ayrıca Bakınız

- xdiff_file_patch() - Bir dosyaya bir tekil yama uygular

# xdiff_file_diff_binary

(PECL xdiff >= 0.2.0)

xdiff_file_diff_binary — xdiff_file_bdiff() işlevinin takma adıdır

### Açıklama

function xdiff_file_diff_binary(string `$eski_dosya`, string `$yeni_dosya`, string `$hedef`): bool

`eski_dosya` ile `yeni_dosya` arasındaki farklardan bir ikil fark dizgesi oluşturup sonucu `hedef` dosyasına kaydeder. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_file_bpatch() işleviyle uygulanabilir.

1.5.0 sürümünden itibaren, bu işlev xdiff_file_bdiff() işlevinin takma adıdır.

### Bağımsız Değişkenler

`eski_dosya`

  İlk dosyanın yolu. Eski dosya olarak ele alınır.

`yeni_dosya`

  İkinci dosyanın yolu. Yeni dosya olarak ele alınır.

`hedef`

  Elde edilen yamanın kaydedileceği dosyanın yolu. Dosya ikil bir dosya olacağından içeriği insanlarca okunabilir olmayacaktır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_diff_binary() örneği

Aşağıda iki arşiv dosyasının ikil farkı alınmaktadır.

    <?php
    $old_version = 'my_script_1.0.tgz';
    $new_version = 'my_script_1.1.tgz';

    xdiff_file_diff_binary($old_version, $new_version, 'my_script.bdiff');
    ?>

### Notlar

> Bilginize:

> Her iki dosya da belleğe yükleneceğinden memory_limit yönergesinde yeteri kadar bellek belirtilmelidir.

### Ayrıca Bakınız

- xdiff_file_bdiff() - İki dosyanın ikil farkını alır
- xdiff_file_bpatch() - Bir dosyaya bir ikil yama uygular

# xdiff_file_merge3

(PECL xdiff >= 0.2.0)

xdiff_file_merge3 — Üç dosyayı tek dosya haline getirir

### Açıklama

function xdiff_file_merge3(
string `$eski_dosya`,
string `$yeni_dosya1`,
string `$yeni_dosya2`,
string `$hedef`
): mixed

Üç dosyayı tek bir dosya oluşturacak şekilde katıştırır ve sonucu bir dosyaya kaydeder. `eski_dosya` verinin özgün sürümü olup `yeni_dosya1` ve `yeni_dosya2` özgün sürümün değiştirilmiş iki sürümüdür.

### Bağımsız Değişkenler

`eski_dosya`

  İlk dosyanın yolu. Eski dosya olarak ele alınır.

`yeni_dosya1`

  İkinci dosyanın yolu. `eski_dosya`'nın değiştirilmiş sürümü olarak ele alınır.

`yeni_dosya2`

  Üçüncü dosyanın yolu. `eski_dosya`'nın değiştirilmiş sürümü olarak ele alınır.

`hedef`

  Sonucun kaydedileceği dosyanın yolu.

### Dönen Değerler

Dahili bir hata oluşmuşsa `false`, katıştırma başarılıysa `true`, reddedilen değişiklikler varsa reddedilen parçaları içeren bir dizge döner.

### Örnekler

Örnek 1 - xdiff_file_merge3() örneği

Aşağıdaki kodda bir betiğin üç sürümü katıştırılıp tek bir betik elde edilmektedir.

    <?php
    $old_version = 'original_script.php';
    $fix1 = 'script_with_fix1.php';
    $fix2 = 'script_with_fix2.php';

    $errors = xdiff_file_merge3($old_version, $fix1, $fix2, 'fixed_script.php');
    if (is_string($errors)) {
        echo "Reddedilenler:\n";
        echo $errors;
    }
    ?>

### Ayrıca Bakınız

- xdiff_string_merge3() - Üç dizgeyi tek bir dizge haline getirir

# xdiff_file_patch

(PECL xdiff >= 0.2.0)

xdiff_file_patch — Bir dosyaya bir tekil yama uygular

### Açıklama

function xdiff_file_patch(
string `$dosya`,
string `$yama`,
string `$hedef`,
int `$seçenekler` = DIFF_PATCH_NORMAL
): mixed

Belirtilen `dosya`'ya tekil `yama`'yı uygular ve sonucu `hedef`'e kaydeder. `yama` dizgesi xdiff_file_diff() veya xdiff_string_diff() ile üretilmiş tekil türde bir fark dizgesi olmalıdır. İsteğe bağlı `seçenekler` bağımsız değişkeni ile işlem kipi belirtilebilir.

### Bağımsız Değişkenler

`dosya`

  Yamanın uygulanacağı dosyanın yolu.

`yama`

  xdiff_string_diff() ve xdiff_file_diff() işlevleriyle veya uygun araçlarla üretilmiş tekil yama dizgesi.

`hedef`

  Sonucun kaydedileceği dosyanın yolu..

`seçenekler`

  `XDIFF_PATCH_NORMAL` (öntanımlı kip, normal yama) veya `XDIFF_PATCH_REVERSE` (tersinir yama) olabilir.

  1.5.0 sürümünden itibaren `XDIFF_PATCH_IGNORESPACE` sabiti bit seviyesinde VEYAlanarak belirtilebilmektedir.

### Dönen Değerler

Dahili bir hata oluşmuşsa `false`, yama başarıyla uygulanmışsa `true`, reddedilen değişiklikler varsa reddedilen parçaları içeren bir dizge döner.

### Örnekler

Örnek 1 - xdiff_file_patch() örneği

Aşağıdaki kodda, bir dosya bir tekil fark dizgesiyle yamanmaktadır.

    <?php
    $eski_dosya = 'my_script-1.0.php';
    $yama = 'my_script.patch';

    $hatalar = xdiff_file_patch($eski_dosya, $yama, 'my_script-1.1.php');
    if (is_string($hatalar)) {
       echo "Reddedilenler:\n";
       echo $hatalar;
    }

    ?>

Örnek 2 - Yamayı geri alma örneği

Aşağıdaki kodda uygulanmış bir yama geri alınmaktadır.

    <?php
    $yeni_dosya = 'my_script-1.1.php';
    $yama = 'my_script.patch';

    $hatalar = xdiff_file_patch($yeni_dosya, $yama, 'my_script-1.0.php', XDIFF_PATCH_REVERSE);
    if (is_string($hatalar)) {
       echo "Reddedilenler:\n";
       echo $hatalar;
    }

    ?>

### Ayrıca Bakınız

- xdiff_file_diff() - İki dosyanın tekil farkını alır

# xdiff_file_patch_binary

(PECL xdiff >= 0.2.0)

xdiff_file_patch_binary — xdiff_file_bpatch() işlevinin takma adıdır

### Açıklama

function xdiff_file_patch_binary(string `$dosya`, string `$yama`, string `$hedef`): bool

Belirtilen `dosya`'ya ikil `yama`'yı uygular ve sonucu `hedef`'e kaydeder. Bu işlev xdiff_file_bdiff() ve xdiff_file_rabdiff() işlevleriyle veya bunların dizgelerle çalışan eşdeğerleriyle üretilmiş yamaları kabul eder.

1.5.0 sürümünden itibaren, bu işlev xdiff_file_bpatch() işlevinin takma adıdır.

### Bağımsız Değişkenler

`dosya`

  Yamanın uygulanacağı dosyanın yolu.

`yama`

  İkil yama dosyası.

`hedef`

  Sonucun kaydedileceği dosyanın yolu.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_patch_binary() örneği

Aşağıdaki kodda, bir dosya bir ikil fark dizgesiyle yamanmaktadır.

    <?php
    $eski_dosya = 'archive-1.0.tgz';
    $yama = 'archive.bpatch';

    $sonuç = xdiff_file_patch_binary($eski_dosya, $yama, 'archive-1.1.tgz');
    if ($sonuç) {
       echo "Dosya yamandı";
    } else {
       echo "Dosya yamanamadı";
    }

    ?>

### Notlar

> Bilginize:

> Her iki dosya da (`dosya` ve `yama`) belleğe yükleneceğinden memory_limit yönergesinde yeteri kadar bellek belirtilmelidir.

### Ayrıca Bakınız

- xdiff_string_patch_binary() - xdiff_string_bpatch işlevinin takma adıdır

# xdiff_file_rabdiff

(PECL xdiff >= 1.5.0)

xdiff_file_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

### Açıklama

function xdiff_file_rabdiff(string `$eski_dosya`, string `$yeni_dosya`, string `$hedef`): bool

İki dosyanın ikil farkını alır ve sonucu bir dosyaya kaydeder. Bu işlevin xdiff_file_bdiff() işlevinden farkı, farklı algoritmalar kullanılması nedeniyle daha hızlı çalışması ve daha küçük fark üretmesidir. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_string_bpatch() veya xdiff_file_bpatch() işleviyle uygulanabilir.

Algoritmalar arasındaki farklarla ilgili daha ayrıntılı bilgi edinmek için » libxdiff sitesine bakınız.

### Bağımsız Değişkenler

`eski_dosya`

  İlk ikil veri dosyası; eski dosya olarak ele alınır.

`yeni_dosya`

  İkinci ikil veri dosyası; yeni dosya olarak ele alınır.

`hedef`

  Elde edilen yama dosyasının dosya yolu. Elde edilen dosya ikil biçemde olup insanlarca okunamayacaktır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - xdiff_file_rabdiff() örneği

Aşağıdaki kodda iki arşivin ikil farkı alınmaktadır.

    <?php
    $old_version = 'my_script_1.0.tgz';
    $new_version = 'my_script_1.1.tgz';

    xdiff_file_rabdiff($old_version, $new_version, 'my_script.bdiff');
    ?>

### Notlar

> Bilginize:

> Her iki dosya da belleğe yükleneceğinden memory_limit yönergesinde yeteri kadar bellek belirtilmelidir.

### Ayrıca Bakınız

- xdiff_file_bpatch() - Bir dosyaya bir ikil yama uygular

# xdiff_string_bdiff

(PECL xdiff >= 1.5.0)

xdiff_string_bdiff — İki dizgenin ikil farkını alır

### Açıklama

function xdiff_string_bdiff(string `$eski_veri`, string `$yeni_veri`): string

`eski_veri` dizgesi ile `yeni_veri` dizgesi arasındaki farklardan bir ikil fark dizgesi oluşturup sonucu döndürür. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_string_bpatch() veya xdiff_file_bpatch() işleviyle uygulanabilir.

### Bağımsız Değişkenler

`eski_veri`

  İlk veri dizgesi. Eski veri olarak ele alınır.

`yeni_veri`

  İkinci veri dizgesi. Yeni veri olarak ele alınır.

### Dönen Değerler

Bir hata oluşmuşsa `false` yoksa elde edilen fark dizgesi döner.

### Ayrıca Bakınız

- xdiff_string_bpatch() - Bir dizgeyi bir ikil fark dizgesiyle yamar

# xdiff_string_bdiff_size

(PECL xdiff >= 1.5.0)

xdiff_string_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür

### Açıklama

function xdiff_string_bdiff_size(string `$yama`): int

Belirtilen ikil `yama` dizgesini özgün dosyaya uyguladıktan sonra oluşacak yeni dosyanın boyutunu döndürür.

### Bağımsız Değişkenler

`yama`

  xdiff_string_bdiff() veya xdiff_string_rabdiff() tarafından oluşturulmuş bir ikil yama dizgesi.

### Dönen Değerler

Oluşacak dosyanın boyutunu döndürür.

### Örnekler

Örnek 1 - xdiff_string_bdiff_size() örneği

Aşağıdaki kodda, bir ikil yama uygulanarak oluşturulacak dosyanın boyutu döndürülmektedir.

    <?php
    $binary_patch = file_get_contents('file.bdiff');
    $length = xdiff_string_bdiff_size($binary_patch);
    echo "Elde edilen dosya $length bayt uzunluktadır";
    ?>

### Ayrıca Bakınız

- xdiff_string_bdiff() - İki dizgenin ikil farkını alır
- xdiff_string_rabdiff() - Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır
- xdiff_string_bpatch() - Bir dizgeyi bir ikil fark dizgesiyle yamar

# xdiff_string_bpatch

(PECL xdiff >= 1.5.0)

xdiff_string_bpatch — Bir dizgeyi bir ikil fark dizgesiyle yamar

### Açıklama

function xdiff_string_bpatch(string `$dizge`, string `$yama`): string

Belirtilen `dizge` dizgesini ikil `yama` dizgesi ile yamar. Bu işlev xdiff_string_bdiff() ve xdiff_string_rabdiff() işlevleriyle veya bunların dosyalarla çalışan eşdeğerleriyle üretilmiş yamaları kabul eder.

### Bağımsız Değişkenler

`dizge`

  Yamanacak ikil dizge.

`yama`

  İkil yama dizgesi.

### Dönen Değerler

Bir hata oluşursa `false` yoksa yamanmış dizgeyi döndürür.

### Ayrıca Bakınız

- xdiff_string_bdiff() - İki dizgenin ikil farkını alır
- xdiff_string_rabdiff() - Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

# xdiff_string_diff

(PECL xdiff >= 0.2.0)

xdiff_string_diff — İki dizgenin tekil farkını alır

### Açıklama

function xdiff_string_diff(
string `$eski_veri`,
string `$yeni_veri`,
int `$bağlam` = 3,
bool `$küçült` = `false`
): string

`eski_veri` dizgesi ile `yeni_veri` dizgesi arasındaki farklardan bir tekil fark dizgesi oluşturup sonucu döndürür. Elde edilen fark dizgesi insanlarca okunabilen bir dizgedir. İsteğe bağlı `bağlam` bağımsız değişkeni ile her değişikliğin altında ve üstünde kaç bağlam satırının bulunacağı belirtilir. Seçimlik `küçült` bağımsız değişkeninde `true` atandığı takdirde mümkün olan en küçük yama dizgesi oluşturulmaya çalışılır (işlem biraz uzun sürebilir).

### Bağımsız Değişkenler

`eski_veri`

  İlk veri dizgesi. Eski veri olarak ele alınır.

`yeni_veri`

  İkinci veri dizgesi. Yeni veri olarak ele alınır.

`bağlam`

  Her değişikliğin altında ve üstünde kaç bağlam satırının bulunacağı belirtilir.

`küçült`

  `true` atandığı takdirde mümkün olan en küçük yama dizgesi oluşturulmaya çalışılır (işlem biraz uzun sürebilir).

### Dönen Değerler

Bir hata oluşmuşsa `false` yoksa elde edilen fark dizgesi döner.

### Örnekler

Örnek 1 - xdiff_string_diff() örneği

Aşağıdaki kodda iki makaleden bir tekil fark dizgesi elde edilmektedir.

    $eski_makale = file_get_contents('./old_article.txt');
    /* Yeni makalenin HTML forma yapıştırıldığı varsayılıyor */
    $yeni_makale =$_REQUEST['article'];

    $yama = xdiff_string_diff($eski_makale, $yeni_makale, 1);
    if (is_string($yama)) {
        echo "İki makale arasındaki farklar:\n";
        echo $yama;
    }

    ?>

### Notlar

> Bilginize:

> Bu işlev ikil dizgelerle iyi çalışmaz. İkil fark dizgesi elde etmek için xdiff_string_bdiff() veya xdiff_string_rabdiff() işlevini kullanın.

### Ayrıca Bakınız

- xdiff_string_patch() - Bir dizgeyi bir tekil fark dizgesi ile yamar

# xdiff_string_diff_binary

(PECL xdiff >= 0.2.0)

xdiff_string_diff_binary — xdiff_string_bdiff() işlevinin takma adıdır

### Açıklama

function xdiff_string_bdiff(string `$eski_veri`, string `$yeni_veri`): string

`eski_veri` dizgesi ile `yeni_veri` dizgesi arasındaki farklardan bir ikil fark dizgesi oluşturup sonucu döndürür. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_string_bpatch() veya xdiff_file_bpatch() işleviyle uygulanabilir.

1.5.0 sürümünden itibaren, bu işlev xdiff_string_bdiff() işlevinin takma adıdır.

### Bağımsız Değişkenler

`eski_veri`

  İlk veri dizgesi. Eski veri olarak ele alınır.

`yeni_veri`

  İkinci veri dizgesi. Yeni veri olarak ele alınır.

### Dönen Değerler

Bir hata oluşmuşsa `false` yoksa elde edilen fark dizgesi döner.

### Ayrıca Bakınız

- xdiff_string_bdiff() - İki dizgenin ikil farkını alır
- xdiff_string_bpatch() - Bir dizgeyi bir ikil fark dizgesiyle yamar

# xdiff_string_merge3

(PECL xdiff >= 0.2.0)

xdiff_string_merge3 — Üç dizgeyi tek bir dizge haline getirir

### Açıklama

function xdiff_string_merge3(
string `$eski_veri`,
string `$yeni_veri1`,
string `$yeni_veri2`,
string `&$hatalar` = ?
): mixed

Belirtilen üç dizgeyi karıştırıp tek bir dizge halinde döndürür. `eski_veri` verinin özgün sürümü olup `yeni_veri1` ve `yeni_veri2` özgün sürümün değiştirilmiş iki sürümüdür. Katıştırma işlemi sırasında reddedilen parçalar, belirtildiği takdirde `hatalar` değişkeninde saklanır.

### Bağımsız Değişkenler

`eski_veri`

  Özgün veri. Eski veri olarak ele alınır.

`yeni_veri1`

  İkinci veri dizgesi. `eski_veri` dizgesinin değiştirilmiş sürümü olarak ele alınır.

`yeni_veri2`

  Üçüncü veri dizgesi. `eski_veri` dizgesinin değiştirilmiş sürümü olarak ele alınır.

`hatalar`

  Katıştırma işlemi sırasında reddedilen parçalar, belirtildiği takdirde bu değişkende saklanır.

### Dönen Değerler

Dahili bir hata oluşmuşsa `false`, elde edilen dizge boşsa `true` yoksa elde edilen dizge döner.

### Ayrıca Bakınız

- xdiff_file_merge3() - Üç dosyayı tek dosya haline getirir

# xdiff_string_patch

(PECL xdiff >= 0.2.0)

xdiff_string_patch — Bir dizgeyi bir tekil fark dizgesi ile yamar

### Açıklama

function xdiff_string_patch(
string `$dizge`,
string `$yama`,
int `$seçenekler` = ?,
string `&$hata` = ?
): string

Belirtilen tekil fark dizgesi `yama` ile `dizge` dizgesini yamar ve sonucu döndürür. `yama` dizgesi xdiff_file_diff() veya xdiff_string_diff() ile üretilmiş tekil türde bir fark dizgesi olmalıdır. İsteğe bağlı `seçenekler` bağımsız değişkeni ile işlem kipi belirtilebilir. Reddedilen yama parçaları, belirtildiği takdirde `hata` değişkeninde döndürülür.

### Bağımsız Değişkenler

`dizge`

  Yamanacak dizge.

`yama`

  xdiff_string_diff() ve xdiff_file_diff() işlevleriyle veya uygun araçlarla üretilmiş tekil yama dizgesi.

`seçenekler`

  `XDIFF_PATCH_NORMAL` (öntanımlı kip, normal yama) veya `XDIFF_PATCH_REVERSE` (tersinir yama) olabilir.

  1.5.0 sürümünden itibaren `XDIFF_PATCH_IGNORESPACE` sabiti bit seviyesinde VEYAlanarak belirtilebilmektedir.

`hata`

  Sağlandığı takdirde, reddedilen yama parçaları bu değişkende döndürülür.

### Dönen Değerler

Hata oluşursa `false` yoksa yamanmış dizgeyi döndürür.

### Örnekler

Örnek 1 - xdiff_string_patch() örneği

Aşağıdaki kodda bir makaleye değişiklikler uygulamaktadır.

    <?php
    $eski_makale = file_get_contents('./old_article.txt');
    /* Yamanın HTML forma yapıştırıldığı varsayılıyor */
    $fark = $_SERVER['yama'];

    $hatalar = '';

    $yeni_makale = xdiff_string_patch($eski_makale, $fark,
                      XDIFF_PATCH_NORMAL, $hatalar);
    if (is_string($yeni_makale)) {
        echo "Yeni makale:\n";
        echo $yeni_makale;
    }

    if (strlen($hatalar)) {
        echo "Reddedilenler: \n";
        echo $hatalar;
    }

    ?>

### Ayrıca Bakınız

- xdiff_string_diff() - İki dizgenin tekil farkını alır

# xdiff_string_patch_binary

(PECL xdiff >= 0.2.0)

xdiff_string_patch_binary — xdiff_string_bpatch() işlevinin takma adıdır

### Açıklama

function xdiff_string_patch_binary(string `$dizge`, string `$yama`): string

Belirtilen `dizge` dizgesini ikil `yama` dizgesi ile yamar. Bu işlev xdiff_string_bdiff() ve xdiff_string_rabdiff() işlevleriyle veya bunların dosyalarla çalışan eşdeğerleriyle üretilmiş yamaları kabul eder.

1.5.0 sürümünden itibaren, bu işlev xdiff_string_bpatch() işlevinin takma adıdır.

### Bağımsız Değişkenler

`dizge`

  Yamanacak ikil dizge.

`yama`

  İkil yama dizgesi.

### Dönen Değerler

Bir hata oluşursa `false` yoksa yamanmış dizgeyi döndürür.

### Ayrıca Bakınız

- xdiff_string_bpatch() - Bir dizgeyi bir ikil fark dizgesiyle yamar
- xdiff_string_bdiff() - İki dizgenin ikil farkını alır
- xdiff_string_rabdiff() - Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

# xdiff_string_rabdiff

(PECL xdiff >= 1.5.0)

xdiff_string_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

### Açıklama

function xdiff_string_bdiff(string `$eski_veri`, string `$yeni_veri`): string

İki dizgenin ikil farkını alır ve sonucu döndürür. Bu işlevin xdiff_string_bdiff() işlevinden farkı, farklı algoritmalar kullanılması nedeniyle daha hızlı çalışması ve daha küçük fark üretilmesidir. Bu işlev hem metin hem de ikil verilerle çalışabilir. Elde edilen yama daha sonra xdiff_string_bpatch() veya xdiff_file_bpatch() işleviyle uygulanabilir.

Algoritmalar arasındaki farklarla ilgili daha ayrıntılı bilgi edinmek için » libxdiff sitesine bakınız.

### Bağımsız Değişkenler

`eski_veri`

  İlk ikil veri dizgesi; eski veri olarak ele alınır.

`yeni_veri`

  İkinci ikil veri dizgesi; yeni veri olarak ele alınır.

### Dönen Değerler

Bir hata oluşmuşsa `false` aksi takdirde eski ve yeni veri arasındaki farkları içeren ikil bir dizge döner.

### Ayrıca Bakınız

- xdiff_string_bpatch() - Bir dizgeyi bir ikil fark dizgesiyle yamar

## İçindekiler

- xdiff_file_bdiff — İki dosyanın ikil farkını alır
- xdiff_file_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür
- xdiff_file_bpatch — Bir dosyaya bir ikil yama uygular
- xdiff_file_diff — İki dosyanın tekil farkını alır
- xdiff_file_diff_binary — xdiff_file_bdiff işlevinin takma adıdır
- xdiff_file_merge3 — Üç dosyayı tek dosya haline getirir
- xdiff_file_patch — Bir dosyaya bir tekil yama uygular
- xdiff_file_patch_binary — xdiff_file_bpatch işlevinin takma adıdır
- xdiff_file_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır
- xdiff_string_bdiff — İki dizgenin ikil farkını alır
- xdiff_string_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür
- xdiff_string_bpatch — Bir dizgeyi bir ikil fark dizgesiyle yamar
- xdiff_string_diff — İki dizgenin tekil farkını alır
- xdiff_string_diff_binary — xdiff_string_bdiff işlevinin takma adıdır
- xdiff_string_merge3 — Üç dizgeyi tek bir dizge haline getirir
- xdiff_string_patch — Bir dizgeyi bir tekil fark dizgesi ile yamar
- xdiff_string_patch_binary — xdiff_string_bpatch işlevinin takma adıdır
- xdiff_string_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- xdiff İşlevleri
  - xdiff_file_bdiff — İki dosyanın ikil farkını alır
  - xdiff_file_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür
  - xdiff_file_bpatch — Bir dosyaya bir ikil yama uygular
  - xdiff_file_diff — İki dosyanın tekil farkını alır
  - xdiff_file_diff_binary — xdiff_file_bdiff işlevinin takma adıdır
  - xdiff_file_merge3 — Üç dosyayı tek dosya haline getirir
  - xdiff_file_patch — Bir dosyaya bir tekil yama uygular
  - xdiff_file_patch_binary — xdiff_file_bpatch işlevinin takma adıdır
  - xdiff_file_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır
  - xdiff_string_bdiff — İki dizgenin ikil farkını alır
  - xdiff_string_bdiff_size — Belirtilen ikil yama uygulanarak oluşturulacak dosyanın boyutunu döndürür
  - xdiff_string_bpatch — Bir dizgeyi bir ikil fark dizgesiyle yamar
  - xdiff_string_diff — İki dizgenin tekil farkını alır
  - xdiff_string_diff_binary — xdiff_string_bdiff işlevinin takma adıdır
  - xdiff_string_merge3 — Üç dizgeyi tek bir dizge haline getirir
  - xdiff_string_patch — Bir dizgeyi bir tekil fark dizgesi ile yamar
  - xdiff_string_patch_binary — xdiff_string_bpatch işlevinin takma adıdır
  - xdiff_string_rabdiff — Rabin'in çok terimli parmakizi algoritmasını kullanarak iki dizgenin ikil olarak farkını alır

- Dio — Doğrudan G/Ç
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Doğrudan G/Ç İşlevleri
- Dir — Dizinler
  - Öntanımlı Sabitler
  - Directory — Directory sınıfı
  - Dizin İşlevleri
- Fileinfo — Dosya Bilgileri
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Fileinfo İşlevleri
  - finfo — finfo sınıfı
- Filesystem — Dosya Sistemi
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Dosya Sistemi İşlevleri
- Inotify
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Inotify İşlevleri
- xattr
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - xattr İşlevleri
- xdiff
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - xdiff İşlevleri

# İnsan Dilleri ve Karakter Kodlaması Desteği

# Enchant spelling library

# Giriş

Enchant is the PHP binding for the » Enchant library. Enchant steps in to provide uniformity and conformity on top of all spelling libraries, and implement certain features that may be lacking in any individual provider library. Everything should "just work" for any and every definition of "just working."

Enchant supports the following backends:

- `Aspell/Pspell (intends to replace Ispell)`
- `Ispell (old as sin, could be interpreted as a defacto standard)`
- `MySpell/Hunspell (an OOo projects, also used by Mozilla)`
- `Uspell (primarily Yiddish, Hebrew, and Eastern European languages - hosted in AbiWord's CVS under the module "uspell")`
- `Hspell (Hebrew)`
- `AppleSpell (Mac OSX)`

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

This version uses the functions of the » Enchant library by Dom Lachowicz. You need Enchant 1.2.4 or later. Enchant 2.0.0 or later is only supported as of PHP 8.0.0.

Enchant also requires » Glib 2.6 or greater. Pre-compiled Windows libraries are available from » http://ftp.gnome.org/pub/gnome/binaries/win32/glib/.

## Kurulum

Provided the required libraries are installed, users may enable enchant by adding the --with-enchant[=dir] option when compiling PHP.

Windows users must enable php_enchant.dll in order to use this extension.

> Bilginize: Additional setup on Windows
> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: libenchant.dll, glib-2.dll, gmodule-2.dll. Furthermore, it is necessary to copy at least one of the shipped providers in lib\enchant to \usr\local\lib\enchant-2 (which is an absolute path from the root of the current drive). Prior to PHP 8.0.0, i.e. using Enchant v1, the providers had to be copied to C:\enchant_plugins instead, where this path could be customized by creating the registry value `HKEY_CURRENT_USER\SOFTWARE\Enchant\Config\Module_Dir` and setting it to the desired path.

## Özkaynak Türleri

Prior to PHP 8.0.0, there are two types of resources in this extension. The first one is the broker (backends manager) and the second is for the dictionary.

# Öntanımlı Sabitler

`LIBENCHANT_VERSION` (string)
  The version of libenchant. Available as of PHP 8.0.0.
`ENCHANT_MYSPELL` (int)
  Dictionary type for MySpell. Used with enchant_broker_get_dict_path() and enchant_broker_set_dict_path(). Deprecated as of PHP 8.0.0.
`ENCHANT_ISPELL` (int)
  Dictionary type for Ispell. Used with enchant_broker_get_dict_path() and enchant_broker_set_dict_path(). Deprecated as of PHP 8.0.0.

# Örnekler

Örnek 1 Enchant Usage Example

    <?php
    $tag = 'en_US';
    $r = enchant_broker_init();
    $bprovides = enchant_broker_describe($r);
    echo "Current broker provides the following backend(s):\n";
    print_r($bprovides);

    $dicts = enchant_broker_list_dicts($r);
    print_r($dicts);
    if (enchant_broker_dict_exists($r,$tag)) {
        $d = enchant_broker_request_dict($r, $tag);
        $dprovides = enchant_dict_describe($d);
        echo "dictionary $tag provides:\n";
        $wordcorrect = enchant_dict_check($d, "soong");
        print_r($dprovides);
        if (!$wordcorrect) {
            $suggs = enchant_dict_suggest($d, "soong");
            echo "Suggestions for 'soong':";
            print_r($suggs);
        }
        enchant_broker_free_dict($d);
    } else {
    }
    enchant_broker_free($r);
    ?>

# Enchant İşlevleri

# enchant_broker_describe

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0)

enchant_broker_describe — Enumerates the Enchant providers

### Açıklama

function enchant_broker_describe(EnchantBroker `$broker`): array

Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo().

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

### Dönen Değerler

Returns an array of available Enchant providers with their details.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.
8.0.0 | Prior to this version, the function returned `false` on failure.

### Örnekler

Örnek 1 List the backends provided by the given broker

    <?php
    $r = enchant_broker_init();
    $bprovides = enchant_broker_describe($r);
    echo "Current broker provides the following backend(s):\n";
    print_r($bprovides);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Current broker provides the following backend(s):
    Array
    (
        [0] => Array
            (
                [name] => aspell
                [desc] => Aspell Provider
                [file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [1] => Array
            (
                [name] => hspell
                [desc] => Hspell Provider
                [file] => /usr/lib/enchant/libenchant_hspell.so
            )

        [2] => Array
            (
                [name] => ispell
                [desc] => Ispell Provider
                [file] => /usr/lib/enchant/libenchant_ispell.so
            )

        [3] => Array
            (
                [name] => myspell
                [desc] => Myspell Provider
                [file] => /usr/lib/enchant/libenchant_myspell.so
            )

    )

# enchant_broker_dict_exists

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_dict_exists — Whether a dictionary exists or not

### Açıklama

function enchant_broker_dict_exists(EnchantBroker `$broker`, string `$tag`): bool

Tells if a dictionary exists or not, using a non-empty tags

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`tag`
  non-empty tag in the LOCALE format, ex: us_US, ch_DE, etc.

### Dönen Değerler

Returns `true` when the tag exist or `false` when not.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

### Örnekler

Örnek 1 A enchant_broker_dict_exists() example

    <?php
    $tag = 'en_US';
    $r = enchant_broker_init();
    if (enchant_broker_dict_exists($r,$tag)) {
        echo $tag . " dictionary found.\n";
    }
    ?>

### Ayrıca Bakınız

- enchant_broker_describe() - Enumerates the Enchant providers

# enchant_broker_free

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_free — Free the broker resource and its dictionaries

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

#[\Deprecated]
function enchant_broker_free(EnchantBroker `$broker`): bool

Free a broker with all its dictionaries. As of PHP 8.0.0, it is recommended to unset the object instead of calling this function.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function has been deprecated in favor of unsetting the object.
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

### Ayrıca Bakınız

- enchant_broker_init() - Create a new broker object

# enchant_broker_free_dict

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_free_dict — Free a dictionary resource

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

#[\Deprecated]
function enchant_broker_free_dict(EnchantDictionary `$dictionary`): bool

Free a dictionary. As of PHP 8.0.0, it is recommended to unset the object instead of calling this function.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function has been deprecated in favor of unsetting the object.
8.0.0 | `dictionary` expects a EnchantDictionary now; previously, a resource was expected.

### Ayrıca Bakınız

- enchant_broker_request_dict() - Create a new dictionary using a tag
- enchant_broker_request_pwl_dict() - Creates a dictionary using a PWL file

# enchant_broker_get_dict_path

(PHP 5 >= 5.3.1, PHP 7, PHP 8, PECL enchant >= 1.0.1)

enchant_broker_get_dict_path — Get the directory path for a given backend

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

#[\Deprecated]
function enchant_broker_get_dict_path(EnchantBroker `$broker`, int `$type`): string|false

Get the directory path for a given backend.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`type`
  The type of the dictionaries, i.e. `ENCHANT_MYSPELL` or `ENCHANT_ISPELL`.

### Dönen Değerler

Returns the path of the dictionary directory on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function has been deprecated.
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

### Notlar

> Bilginize: This function is only available if the extension has been compiled with Enchant v1.

### Ayrıca Bakınız

- enchant_broker_set_dict_path() - Set the directory path for a given backend

# enchant_broker_get_error

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_get_error — Returns the last error of the broker

### Açıklama

function enchant_broker_get_error(EnchantBroker `$broker`): string|false

Returns the last error which occurred in this broker.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

### Dönen Değerler

Return the msg string if an error was found or `false`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

# enchant_broker_init

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_init — Create a new broker object

### Açıklama

function enchant_broker_init(): EnchantBroker|false

### Bağımsız Değişkenler

### Dönen Değerler

Returns a broker resource on success or `false`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | On success, this function returns an EnchantBroker instance now; previously, a resource was returned.

### Ayrıca Bakınız

- enchant_broker_free() - Free the broker resource and its dictionaries

# enchant_broker_list_dicts

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 1.0.1)

enchant_broker_list_dicts — Returns a list of available dictionaries

### Açıklama

function enchant_broker_list_dicts(EnchantBroker `$broker`): array

Returns a list of available dictionaries with their details.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

### Dönen Değerler

Returns an array of available dictionaries with their details.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.
8.0.0 | Prior to this version, the function returned `false` on failure.

### Örnekler

Örnek 1 List all available dictionaries for one broker

    <?php
    $r = enchant_broker_init();
    $dicts = enchant_broker_list_dicts($r);
    print_r($dicts);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => Array
            (
                [lang_tag] => de
                [provider_name] => aspell
                [provider_desc] => Aspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [1] => Array
            (
                [lang_tag] => de_DE
                [provider_name] => aspell
                [provider_desc] => Aspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [3] => Array
            (
                [lang_tag] => en
                [provider_name] => aspell
                [provider_desc] => Aspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [4] => Array
            (
                [lang_tag] => en_GB
                [provider_name] => aspell
                [provider_desc] => Aspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [5] => Array
            (
                [lang_tag] => en_US
                [provider_name] => aspell
                [provider_desc] => Aspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_aspell.so
            )

        [6] => Array
            (
                [lang_tag] => hi_IN
                [provider_name] => myspell
                [provider_desc] => Myspell Provider
                [provider_file] => /usr/lib/enchant/libenchant_myspell.so
            )

    )

### Ayrıca Bakınız

- enchant_broker_describe() - Enumerates the Enchant providers

# enchant_broker_request_dict

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_request_dict — Create a new dictionary using a tag

### Açıklama

function enchant_broker_request_dict(EnchantBroker `$broker`, string `$tag`): EnchantDictionary|false

create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...)

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`tag`
  A tag describing the locale, for example en_US, de_DE

### Dönen Değerler

Returns a dictionary resource on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.
8.0.0 | On success, this function returns an EnchantDictionary instance now; previously, a resource was returned.

### Örnekler

Örnek 1 A enchant_broker_request_dict() example

Check if a dictionary exists using enchant_broker_dict_exists() and request it.

    <?php
    $tag = 'en_US';
    $broker = enchant_broker_init();
    if (enchant_broker_dict_exists($broker,$tag)) {
        $dict = enchant_broker_request_dict($broker, $tag);
        var_dump($dict);
    }
    ?>

### Ayrıca Bakınız

- enchant_dict_describe() - Describes an individual dictionary
- enchant_broker_dict_exists() - Whether a dictionary exists or not
- enchant_broker_free_dict() - Free a dictionary resource

# enchant_broker_request_pwl_dict

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_request_pwl_dict — Creates a dictionary using a PWL file

### Açıklama

function enchant_broker_request_pwl_dict(EnchantBroker `$broker`, string `$filename`): EnchantDictionary|false

Creates a dictionary using a PWL file. A PWL file is a personal word file with one word per line.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`filename`
  Path to the PWL file. If there is no such file, a new one will be created if possible.

### Dönen Değerler

Returns a dictionary resource on success başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.
8.0.0 | On success, this function returns an EnchantDictionary instance now; previously, a resource was returned.

### Ayrıca Bakınız

- enchant_dict_describe() - Describes an individual dictionary
- enchant_broker_dict_exists() - Whether a dictionary exists or not
- enchant_broker_free_dict() - Free a dictionary resource

# enchant_broker_set_dict_path

(PHP 5 >= 5.3.1, PHP 7, PHP 8, PECL enchant >= 1.0.1)

enchant_broker_set_dict_path — Set the directory path for a given backend

Uyarı

Bu işlevin kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

#[\Deprecated]
function enchant_broker_set_dict_path(EnchantBroker `$broker`, int `$type`, string `$path`): bool

Set the directory path for a given backend.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`type`
  The type of the dictionaries, i.e. `ENCHANT_MYSPELL` or `ENCHANT_ISPELL`.
`path`
  The path of the dictionary directory.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function has been deprecated.
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

### Notlar

> Bilginize: This function is only available if the extension has been compiled with Enchant v1.

### Ayrıca Bakınız

- enchant_broker_get_dict_path() - Get the directory path for a given backend

# enchant_broker_set_ordering

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language

### Açıklama

function enchant_broker_set_ordering(EnchantBroker `$broker`, string `$tag`, string `$ordering`): bool

Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the "*" tag can be used as a language tag to declare a default ordering for any language that does not explicitly declare an ordering.

### Bağımsız Değişkenler

`broker`

  An Enchant broker returned by enchant_broker_init().

`tag`
  Language tag. The special "*" tag can be used as a language tag to declare a default ordering for any language that does not explicitly declare an ordering.
`ordering`
  Comma delimited list of provider names

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `broker` expects an EnchantBroker instance now; previoulsy, a resource was expected.

# enchant_dict_add

(PHP 8)

enchant_dict_add — Add a word to personal word list

### Açıklama

function enchant_dict_add(EnchantDictionary `$dictionary`, string `$word`): void

Add a word to personal word list of the given dictionary.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  The word to add

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

### Örnekler

Örnek 1 Adding a word to a PWL

    <?php

    $filename = './my_word_list.pwl';
    $word = 'Supercalifragilisticexpialidocious';

    $broker = enchant_broker_init();
    $dict = enchant_broker_request_pwl_dict($broker, $filename);

    enchant_dict_add($dict, $word);

    ?>

### Ayrıca Bakınız

- enchant_broker_request_pwl_dict() - Creates a dictionary using a PWL file
- enchant_broker_request_dict() - Create a new dictionary using a tag

# enchant_dict_add_to_personal

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_add_to_personal — Takma Adı: enchant_dict_add()

Uyarı

Bu takma adın kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR.

### Açıklama

Bu işlev şu işlevin takma adıdır: enchant_dict_add().

# enchant_dict_add_to_session

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_add_to_session — Add 'word' to this spell-checking session

### Açıklama

function enchant_dict_add_to_session(EnchantDictionary `$dictionary`, string `$word`): void

Add a word to the given dictionary. It will be added only for the active spell-checking session.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  The word to add

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

### Ayrıca Bakınız

- enchant_broker_request_dict() - Create a new dictionary using a tag

# enchant_dict_check

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_check — Check whether a word is correctly spelled or not

### Açıklama

function enchant_dict_check(EnchantDictionary `$dictionary`, string `$word`): bool

If the word is correctly spelled return `true`, otherwise return `false`

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  The word to check

### Dönen Değerler

Returns `true` if the word is spelled correctly, `false` if not.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

# enchant_dict_describe

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_describe — Describes an individual dictionary

### Açıklama

function enchant_dict_describe(EnchantDictionary `$dictionary`): array

Returns the details of the dictionary.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.
8.0.0 | Prior to this version, the function returned `false` on failure.

### Örnekler

Örnek 1 A enchant_dict_describe() example

Check if a dictionary exists using enchant_broker_dict_exists() and show the detail of it.

    <?php
    $tag = 'en_US';
    $broker = enchant_broker_init();
    if (enchant_broker_dict_exists($broker, $tag)) {
        $dict = enchant_broker_request_dict($broker, $tag);
        $dict_details = enchant_dict_describe($dict);
        print_r($dict_details);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [lang] => en_US
        [name] => aspell
        [desc] => Aspell Provider
        [file] => /usr/lib/enchant/libenchant_aspell.so
    )

# enchant_dict_get_error

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_get_error — Returns the last error of the current spelling-session

### Açıklama

function enchant_dict_get_error(EnchantDictionary `$dictionary`): string|false

Returns the last error of the current spelling-session

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

### Dönen Değerler

Returns the error message as string or `false` if no error occurred.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

# enchant_dict_is_added

(PHP 8)

enchant_dict_is_added — Whether or not 'word' exists in this spelling-session

### Açıklama

function enchant_dict_is_added(EnchantDictionary `$dictionary`, string `$word`): bool

Tells whether or not a word already exists in the current session.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  The word to lookup

### Dönen Değerler

Returns `true` if the word exists or `false`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

### Ayrıca Bakınız

- enchant_dict_add_to_session() - Add 'word' to this spell-checking session

# enchant_dict_is_in_session

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_is_in_session — Takma Adı: enchant_dict_is_added()

Uyarı

Bu takma adın kullanımı PHP 8.0.0 itibariyle ÖNERİLMEMEKTEDİR.

### Açıklama

Bu işlev şu işlevin takma adıdır: enchant_dict_is_added().

# enchant_dict_quick_check

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant:0.2.0-1.0.1)

enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions

### Açıklama

function enchant_dict_quick_check(EnchantDictionary `$dictionary`, string `$word`, array `&$suggestions` = `null`): bool

If the word is correctly spelled return `true`, otherwise return `false`, if suggestions variable is provided, fill it with spelling alternatives.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  The word to check
`suggestions`
  If the word is not correctly spelled, this variable will contain an array of suggestions.

### Dönen Değerler

Returns `true` if the word is correctly spelled or `false`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

### Örnekler

Örnek 1 A enchant_dict_quick_check() example

    <?php
    $tag = 'en_US';
    $r = enchant_broker_init();

    if (enchant_broker_dict_exists($r,$tag)) {
        $d = enchant_broker_request_dict($r, $tag);
        enchant_dict_quick_check($d, 'soong', $suggs);
        print_r($suggs);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => song
        [1] => snog
        [2] => soon
        [3] => Sang
        [4] => Sung
        [5] => sang
        [6] => sung
        [7] => sponge
        [8] => spongy
        [9] => snag
        [10] => snug
        [11] => sonic
        [12] => sing
        [13] => songs
        [14] => Son
        [15] => Sonja
        [16] => Synge
        [17] => son
        [18] => Sejong
        [19] => sarong
        [20] => sooner
        [21] => Sony
        [22] => sown
        [23] => scone
        [24] => song's
    )

### Ayrıca Bakınız

- enchant_dict_check() - Check whether a word is correctly spelled or not
- enchant_dict_suggest() - Suggest spellings for a word

# enchant_dict_store_replacement

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_store_replacement — Add a correction for a word

### Açıklama

function enchant_dict_store_replacement(EnchantDictionary `$dictionary`, string `$misspelled`, string `$correct`): void

Add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list.

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`misspelled`
  The word to fix
`correct`
  The correct word

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

# enchant_dict_suggest

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL enchant >= 0.1.0 )

enchant_dict_suggest — Suggest spellings for a word

### Açıklama

function enchant_dict_suggest(EnchantDictionary `$dictionary`, string `$word`): array

### Bağımsız Değişkenler

`dictionary`

  An Enchant dictionary returned by enchant_broker_request_dict() or enchant_broker_request_pwl_dict().

`word`
  Word to use for the suggestions.

### Dönen Değerler

Will returns an array of suggestions if the word is bad spelled.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dictionary` expects an EnchantDictionary instance now; previoulsy, a resource was expected.

### Örnekler

Örnek 1 A enchant_dict_suggest() example

    <?php
    $tag = 'en_US';
    $r = enchant_broker_init();
    if (enchant_broker_dict_exists($r,$tag)) {
        $d = enchant_broker_request_dict($r, $tag);

        $wordcorrect = enchant_dict_check($d, "soong");
        if (!$wordcorrect) {
            $suggs = enchant_dict_suggest($d, "soong");
            echo "Suggestions for 'soong':";
            print_r($suggs);
        }
    }
    ?>

### Ayrıca Bakınız

- enchant_dict_check() - Check whether a word is correctly spelled or not
- enchant_dict_quick_check() - Check the word is correctly spelled and provide suggestions

## İçindekiler

- enchant_broker_describe — Enumerates the Enchant providers
- enchant_broker_dict_exists — Whether a dictionary exists or not
- enchant_broker_free — Free the broker resource and its dictionaries
- enchant_broker_free_dict — Free a dictionary resource
- enchant_broker_get_dict_path — Get the directory path for a given backend
- enchant_broker_get_error — Returns the last error of the broker
- enchant_broker_init — Create a new broker object
- enchant_broker_list_dicts — Returns a list of available dictionaries
- enchant_broker_request_dict — Create a new dictionary using a tag
- enchant_broker_request_pwl_dict — Creates a dictionary using a PWL file
- enchant_broker_set_dict_path — Set the directory path for a given backend
- enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language
- enchant_dict_add — Add a word to personal word list
- enchant_dict_add_to_personal — Takma Adı: enchant_dict_add
- enchant_dict_add_to_session — Add 'word' to this spell-checking session
- enchant_dict_check — Check whether a word is correctly spelled or not
- enchant_dict_describe — Describes an individual dictionary
- enchant_dict_get_error — Returns the last error of the current spelling-session
- enchant_dict_is_added — Whether or not 'word' exists in this spelling-session
- enchant_dict_is_in_session — Takma Adı: enchant_dict_is_added
- enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions
- enchant_dict_store_replacement — Add a correction for a word
- enchant_dict_suggest — Suggest spellings for a word

# The EnchantBroker class

(PHP 8)

## Giriş

A fully opaque class which replaces `enchant_broker` resources as of PHP 8.0.0.

## Sınıf Sözdizimi

final class EnchantBroker {
}

# The EnchantDictionary class

(PHP 8)

## Giriş

A fully opaque class which replaces `enchant_dict` resources as of PHP 8.0.0.

## Sınıf Sözdizimi

final class EnchantDictionary {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- Enchant İşlevleri
  - enchant_broker_describe — Enumerates the Enchant providers
  - enchant_broker_dict_exists — Whether a dictionary exists or not
  - enchant_broker_free — Free the broker resource and its dictionaries
  - enchant_broker_free_dict — Free a dictionary resource
  - enchant_broker_get_dict_path — Get the directory path for a given backend
  - enchant_broker_get_error — Returns the last error of the broker
  - enchant_broker_init — Create a new broker object
  - enchant_broker_list_dicts — Returns a list of available dictionaries
  - enchant_broker_request_dict — Create a new dictionary using a tag
  - enchant_broker_request_pwl_dict — Creates a dictionary using a PWL file
  - enchant_broker_set_dict_path — Set the directory path for a given backend
  - enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language
  - enchant_dict_add — Add a word to personal word list
  - enchant_dict_add_to_personal — Takma Adı: enchant_dict_add
  - enchant_dict_add_to_session — Add 'word' to this spell-checking session
  - enchant_dict_check — Check whether a word is correctly spelled or not
  - enchant_dict_describe — Describes an individual dictionary
  - enchant_dict_get_error — Returns the last error of the current spelling-session
  - enchant_dict_is_added — Whether or not 'word' exists in this spelling-session
  - enchant_dict_is_in_session — Takma Adı: enchant_dict_is_added
  - enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions
  - enchant_dict_store_replacement — Add a correction for a word
  - enchant_dict_suggest — Suggest spellings for a word
- EnchantBroker — The EnchantBroker class
- EnchantDictionary — The EnchantDictionary class

# Determine gender of firstnames

# Giriş

Gender PHP extension is a port of the gender.c program originally written by Joerg Michael. The main purpose is to find out the gender of firstnames. The current database contains >40000 firstnames from 54 countries.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/gender.

# Örnekler

## İçindekiler

- Usage example.

## Usage example.

Gender class usage example.

Örnek 1 Usage example.

    <?php

    namespace Gender;

    $gender = new Gender;

    $name = "Milene";
    $country = Gender::FRANCE;

    $result = $gender->get($name, $country);

    $data = $gender->country($country);

    switch($result) {
        case Gender::IS_FEMALE:
            printf("The name %s is female in %s\n", $name, $data['country']);
        break;

        case Gender::IS_MOSTLY_FEMALE:
            printf("The name %s is mostly female in %s\n", $name, $data['country']);
        break;

        case Gender::IS_MALE:
            printf("The name %s is male in %s\n", $name, $data['country']);
        break;

        case Gender::IS_MOSTLY_MALE:
            printf("The name %s is mostly male in %s\n", $name, $data['country']);
        break;

        case Gender::IS_UNISEX_NAME:
            printf("The name %s is unisex in %s\n", $name, $data['country']);
        break;

        case Gender::IS_A_COUPLE:
            printf("The name %s is both male and female in %s\n", $name, $data['country']);
        break;

        case Gender::NAME_NOT_FOUND:
            printf("The name %s was not found for %s\n", $name, $data['country']);
        break;

        case Gender::ERROR_IN_NAME:
            echo "There is an error in the given name!\n";
        break;

        default:
            echo "An error occurred!\n";
        break;

    }

# The Gender\Gender class

(PECL gender >= 0.6.0)

## Giriş

## Sınıf Sözdizimi

class Gender\Gender {
/* Sabitler */
const int IS_FEMALE = 70;
const int IS_MOSTLY_FEMALE = 102;
const int IS_MALE = 77;
const int IS_MOSTLY_MALE = 109;
const int IS_UNISEX_NAME = 63;
const int IS_A_COUPLE = 67;
const int NAME_NOT_FOUND = 32;
const int ERROR_IN_NAME = 69;
const int ANY_COUNTRY = 0;
const int BRITAIN = 1;
const int IRELAND = 2;
const int USA = 3;
const int SPAIN = 4;
const int PORTUGAL = 5;
const int ITALY = 6;
const int MALTA = 7;
const int FRANCE = 8;
const int BELGIUM = 9;
const int LUXEMBOURG = 10;
const int NETHERLANDS = 11;
const int GERMANY = 12;
const int EAST_FRISIA = 13;
const int AUSTRIA = 14;
const int SWISS = 15;
const int ICELAND = 16;
const int DENMARK = 17;
const int NORWAY = 18;
const int SWEDEN = 19;
const int FINLAND = 20;
const int ESTONIA = 21;
const int LATVIA = 22;
const int LITHUANIA = 23;
const int POLAND = 24;
const int CZECH_REP = 25;
const int SLOVAKIA = 26;
const int HUNGARY = 27;
const int ROMANIA = 28;
const int BULGARIA = 29;
const int BOSNIA = 30;
const int CROATIA = 31;
const int KOSOVO = 32;
const int MACEDONIA = 33;
const int MONTENEGRO = 34;
const int SERBIA = 35;
const int SLOVENIA = 36;
const int ALBANIA = 37;
const int GREECE = 38;
const int RUSSIA = 39;
const int BELARUS = 40;
const int MOLDOVA = 41;
const int UKRAINE = 42;
const int ARMENIA = 43;
const int AZERBAIJAN = 44;
const int GEORGIA = 45;
const int KAZAKH_UZBEK = 46;
const int TURKEY = 47;
const int ARABIA = 48;
const int ISRAEL = 49;
const int CHINA = 50;
const int INDIA = 51;
const int JAPAN = 52;
const int KOREA = 53;
/* Yöntemler */
public function __construct(string `$dsn` = ?)
public function connect(string `$dsn`): bool
public function country(int `$country`): array|false
public function get(string `$name`, int `$country` = ?): int
public function isNick(string `$name0`, string `$name1`, int `$country` = ?): array
public function similarNames(string `$name`, int `$country` = ?): array
}

## Öntanımlı Sabitler

`Gender\Gender::IS_FEMALE`
`Gender\Gender::IS_MOSTLY_FEMALE`
`Gender\Gender::IS_MALE`
`Gender\Gender::IS_MOSTLY_MALE`
`Gender\Gender::IS_UNISEX_NAME`
`Gender\Gender::IS_A_COUPLE`
`Gender\Gender::NAME_NOT_FOUND`
`Gender\Gender::ERROR_IN_NAME`
`Gender\Gender::ANY_COUNTRY`
`Gender\Gender::BRITAIN`
`Gender\Gender::IRELAND`
`Gender\Gender::USA`
`Gender\Gender::SPAIN`
`Gender\Gender::PORTUGAL`
`Gender\Gender::ITALY`
`Gender\Gender::MALTA`
`Gender\Gender::FRANCE`
`Gender\Gender::BELGIUM`
`Gender\Gender::LUXEMBOURG`
`Gender\Gender::NETHERLANDS`
`Gender\Gender::GERMANY`
`Gender\Gender::EAST_FRISIA`
`Gender\Gender::AUSTRIA`
`Gender\Gender::SWISS`
`Gender\Gender::ICELAND`
`Gender\Gender::DENMARK`
`Gender\Gender::NORWAY`
`Gender\Gender::SWEDEN`
`Gender\Gender::FINLAND`
`Gender\Gender::ESTONIA`
`Gender\Gender::LATVIA`
`Gender\Gender::LITHUANIA`
`Gender\Gender::POLAND`
`Gender\Gender::CZECH_REP`
`Gender\Gender::SLOVAKIA`
`Gender\Gender::HUNGARY`
`Gender\Gender::ROMANIA`
`Gender\Gender::BULGARIA`
`Gender\Gender::BOSNIA`
`Gender\Gender::CROATIA`
`Gender\Gender::KOSOVO`
`Gender\Gender::MACEDONIA`
`Gender\Gender::MONTENEGRO`
`Gender\Gender::SERBIA`
`Gender\Gender::SLOVENIA`
`Gender\Gender::ALBANIA`
`Gender\Gender::GREECE`
`Gender\Gender::RUSSIA`
`Gender\Gender::BELARUS`
`Gender\Gender::MOLDOVA`
`Gender\Gender::UKRAINE`
`Gender\Gender::ARMENIA`
`Gender\Gender::AZERBAIJAN`
`Gender\Gender::GEORGIA`
`Gender\Gender::KAZAKH_UZBEK`
`Gender\Gender::TURKEY`
`Gender\Gender::ARABIA`
`Gender\Gender::ISRAEL`
`Gender\Gender::CHINA`
`Gender\Gender::INDIA`
`Gender\Gender::JAPAN`
`Gender\Gender::KOREA`

# Gender\Gender::connect

(PECL gender >= 0.6.0)

Gender\Gender::connect — Connect to an external name dictionary

### Açıklama

public function Gender\Gender::connect(string `$dsn`): bool

Connect to an external name dictionary. Currently only streams are supported.

### Bağımsız Değişkenler

`dsn`
  DSN to open.

### Dönen Değerler

Boolean as success of failure.

# Gender\Gender::__construct

(PECL gender >= 0.6.0)

Gender\Gender::__construct — Construct the Gender object

### Açıklama

public function Gender\Gender::__construct(string `$dsn` = ?)

Create a Gender object optionally connecting to an external name dictionary. When no external database was given, compiled in data will be used.

### Bağımsız Değişkenler

`dsn`
  DSN to open.

# Gender\Gender::country

(PECL gender >= 0.8.0)

Gender\Gender::country — Get textual country representation

### Açıklama

public function Gender\Gender::country(int `$country`): array|false

Returns the textual representation of a country from a Gender class constant.

### Bağımsız Değişkenler

`country`
  A country ID specified by a Gender\Gender class constant.

### Dönen Değerler

Returns an array with the short and full names of the country on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Using Gender\Gender::country()

    $gender = new Gender\Gender;
    var_dump($gender->country(Gender\Gender::BRITAIN));

Yukarıdaki örneğin çıktısı:

    array(2) {
      'country_short' =>
      string(2) "UK"
      'country' =>
      string(13) "Great Britain"
    }

# Gender\Gender::get

(PECL gender >= 0.6.0)

Gender\Gender::get — Get gender of a name

### Açıklama

public function Gender\Gender::get(string `$name`, int `$country` = ?): int

Get the gender of the name in a particular country.

### Bağımsız Değişkenler

`name`
  Name to check.
`country`
  Country id identified by Gender class constant.

### Dönen Değerler

Returns gender of the name.

# Gender\Gender::isNick

(PECL gender >= 0.9.0)

Gender\Gender::isNick — Check if the name0 is an alias of the name1

### Açıklama

public function Gender\Gender::isNick(string `$name0`, string `$name1`, int `$country` = ?): array

Check whether the name0 is a nick of the name1.

### Bağımsız Değişkenler

`name0`
  Name to check.
`name1`
  Name to check.
`country`
  Country id identified by Gender class constant. If ommited ANY_COUNTRY is used.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# Gender\Gender::similarNames

(PECL gender >= 0.9.0)

Gender\Gender::similarNames — Get similar names

### Açıklama

public function Gender\Gender::similarNames(string `$name`, int `$country` = ?): array

Get similar names for the given name and country.

### Bağımsız Değişkenler

`name`
  Name to check.
`country`
  Country id identified by Gender class constant. If ommited ANY_COUNTRY is used.

### Dönen Değerler

Returns an array with the similar names found.

## İçindekiler

- Gender\Gender::connect — Connect to an external name dictionary
- Gender\Gender::__construct — Construct the Gender object
- Gender\Gender::country — Get textual country representation
- Gender\Gender::get — Get gender of a name
- Gender\Gender::isNick — Check if the name0 is an alias of the name1
- Gender\Gender::similarNames — Get similar names

- Yapılandırma/Kurulum
  - Kurulum
- Örnekler
  - Usage example.
- Gender\Gender — The Gender\Gender class
  - Gender\Gender::connect — Connect to an external name dictionary
  - Gender\Gender::__construct — Construct the Gender object
  - Gender\Gender::country — Get textual country representation
  - Gender\Gender::get — Get gender of a name
  - Gender\Gender::isNick — Check if the name0 is an alias of the name1
  - Gender\Gender::similarNames — Get similar names

# Gettext

# Giriş

Gettext işlevleri PHP uygulamalarınızı uluslararasılaştırmak için kullanabileceğiniz NLS (Yerel Dil Desteği) arayüzünü gerçekler. Bu işlevlerin ayrıntılı açıklamaları için sisteminizdeki gettext belgelerine veya » http://www.gnu.org/software/gettext/manual/gettext.html adresine bakınız.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

Bu işlevleri kullanabilmek için » http://www.gnu.org/software/gettext/gettext.html adresinden GNU gettext paketini indirip kurmanız gerekir.

## Kurulum

GNU gettext desteği için PHP paketini derlerken --with-gettext[=DiZiN] yapılandırma seçeneğini kullanmalısınız. Burada DiZiN, gettext'in kurulu olduğu dizin olup /usr/local öntanımlıdır.

# Gettext İşlevleri

# _

(PHP 4, PHP 5, PHP 7, PHP 8)

_ — Takma Adı: gettext()

### Açıklama

Bu işlev şu işlevin takma adıdır: gettext().

# bind_textdomain_codeset

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

bind_textdomain_codeset — Belli bir uygulamanın iletileri için karakter kodlaması tanımlar

### Açıklama

function bind_textdomain_codeset(string `$uygulama_adı`, ?string `$karküm`): string|false

bind_textdomain_codeset() işlevi, gettext() ve benzeri işlevler tarafından belli bir `uygulama_adı` için döndürülen iletilerin hangi karakter kodlaması ile kodlanacağını belirler.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`karküm`

  Karakter kümesi. `null` aktarılırsa geçerli karakter kümesi döndürülür.

### Dönen Değerler

Başarılı olursa bir dizge ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.3 | `karküm` artık `null` olabiliyor. Evvelce, geçerli karakter kümesi döndürülemiyordu.

### Notlar

> Bilginize:

> bind_textdomain_codeset() bilgisi süreç başınadır, evre başına değil.

# bindtextdomain

(PHP 4, PHP 5, PHP 7, PHP 8)

bindtextdomain — Uygulama adı için bir yol tanımlar

### Açıklama

function bindtextdomain(string `$uygulama_adı`, ?string `$dizin`): string|false

bindtextdomain() işleve bir uygulama için yol tanımlar.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`dizin`

  Bir dizinin yolu. Boş dizge geçerli dizin demektir. `null` aktarılırsa geçerli dizin döndürülür.

### Dönen Değerler

`uygulama_adı` için tanımlanan tam dizin yolu, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.3 | `dizin` artık `null` olabiliyor. Evvelce, geçerli dizin döndürülemiyordu.

### Örnekler

Örnek 1 - bindtextdomain() örneği

    <?php

    $domain = 'myapp';
    echo bindtextdomain($domain, '/usr/share/myapp/locale');

    ?>

Yukarıdaki örneğin çıktısı:

    /usr/share/myapp/locale

### Notlar

> Bilginize:

> The bindtextdomain() bilgisi süreç başınadır, evre başına değil.

# dcgettext

(PHP 4, PHP 5, PHP 7, PHP 8)

dcgettext — Belirtilen arama için geçerli uygulama adını değiştirir

### Açıklama

function dcgettext(string `$uygulama_adı`, string `$ileti`, int `$yerel`): string

dcgettext() işlevi, belirtilen iletinin belli bir `uygulama_adı` altında aranabilmesini sağlar.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`ileti`

  Özgün ileti.

`yerel`

  Yerel kategorisi.

### Dönen Değerler

Başarılı olursa bir dizge ile döner.

### Ayrıca Bakınız

- gettext() - Geçerli uygulama alanında bir iletiyi arar

# dcngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

dcngettext — dcgettext işlevinin çoğul biçemli sürümü

### Açıklama

function dcngettext(
string `$uygulama_adı`,
string `$tekil`,
string `$çoğul`,
int `$sayı`,
int `$yerel`
): string

dcngettext() işlevi, belirtilen çoğul iletilerin belli bir `uygulama_adı` altında aranabilmesini sağlar.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`tekil`

`çoğul`

`sayı`

`yerel`

### Dönen Değerler

Başarılı olursa bir dizge ile döner.

### Ayrıca Bakınız

- ngettext() - gettext işlevinin çoğul biçemli sürümü

# dgettext

(PHP 4, PHP 5, PHP 7, PHP 8)

dgettext — Geçerli uygulama adını değiştirir

### Açıklama

function dgettext(string `$uygulama_adı`, string `$ileti`): string

dgettext() işlevi, belirtilen iletinin belli bir `uygulama_adı` altında aranabilmesini sağlar.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`ileti`

  Özgün ileti.

### Dönen Değerler

Başarılı olursa bir dizge ile döner.

### Ayrıca Bakınız

- gettext() - Geçerli uygulama alanında bir iletiyi arar

# dngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

dngettext — dgettext işlevinin çoğul biçemli sürümü

### Açıklama

function dngettext(
string `$uygulama_adı`,
string `$tekil`,
string `$çoğul`,
int `$sayı`
): string

dngettext()işlevi, belirtilen çoğul biçemli iletilerin belli bir `uygulama_adı` altında aranabilmesini sağlar.

### Bağımsız Değişkenler

`uygulama_adı`

  Gettext iletileri için uygulama veya paket adı.

`msgid1`

`msgid2`

`n`

### Dönen Değerler

Başarılı olursa bir dizge döndürür.

### Ayrıca Bakınız

- ngettext() - gettext işlevinin çoğul biçemli sürümü

# gettext

(PHP 4, PHP 5, PHP 7, PHP 8)

gettext — Geçerli uygulama alanında bir iletiyi arar

### Açıklama

function gettext(string `$ileti`): string

Geçerli uygulama alanında bir iletiyi arar.

### Bağımsız Değişkenler

`ileti`

  Çevrilecek ileti.

### Dönen Değerler

Çevrilmişse çevrilmiş iletiyle, çevrilmemişse belirtilen iletiyle döner.

### Örnekler

Örnek 1 - gettext() örneği

    <?php
    // Yereli Türkçe yapalım
    putenv('LC_ALL=tr_TR')
    setlocale(LC_ALL, 'tr_TR');

    // Çevirilerin bulunduğu yeri belirtelim
    bindtextdomain("myPHPApp", "./locale");

    // Uygulama adını belirtelim
    textdomain("myPHPApp");

    // Böylece çevirilerin aranacağı yer
    // ./locale/tr_TR/LC_MESSAGES/myPHPApp.mo olarak belirlendi.

    // Bir ileti basalım
    echo gettext("Welcome to My PHP Application");

    // gettext() için rumuz olarak _() kullanalım
    echo _("Have a nice day");
    ?>

### Notlar

> Bilginize:

> Bu işlev için takma ad olarak altçizgi imini ('_') kullanabilirsiniz.

> Bilginize:

> Bir yereli bazı sistemlerde setlocale() ile atamak yeterli olmaz, putenv() işlevinin de kullanılması gerekir.

### Ayrıca Bakınız

- _() - Takma Adı: gettext
- setlocale() - Yereli ayarlar

# ngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

ngettext — gettext işlevinin çoğul biçemli sürümü

### Açıklama

function ngettext(string `$tekil`, string `$çoğul`, int `$sayı`): string

gettext() işlevinin çoğul biçemli sürümüdür. Bazı dillerde çoğul biçemli iletiler için birden fazla ileti gerekebilir.

### Bağımsız Değişkenler

`tekil`

  Tekil ileti kimliği.

`çoğul`

  Çoğul ileti kimliği.

`sayı`

  Geçerli dil için istenen çoğul iletinin çoğul sayısı.

### Dönen Değerler

Geçerli yerelde, `sayı` sayısı için `tekil` ve `çoğul` ile betimlenen doğru çoğul biçemli iletiyi döndürür.

### Örnekler

Örnek 1 ngettext() örneği

    <?php

    setlocale(LC_ALL, 'cs_CZ');
    printf(ngettext("%d window", "%d windows", 1), 1); // 1 okno
    printf(ngettext("%d window", "%d windows", 2), 2); // 2 okna
    printf(ngettext("%d window", "%d windows", 5), 5); // 5 oken

    ?>

# textdomain

(PHP 4, PHP 5, PHP 7, PHP 8)

textdomain — Öntanımlı uygulama adını tanımlar

### Açıklama

function textdomain(?string `$uygulama_adı`): string

gettext() çağrılarının yapıldığı arama bölgesini tanımlar. Bu arama bölgesine genellikle uygulamanın adı verilir.

### Bağımsız Değişkenler

`uygulama_adı`

  İletilerin ait olduğu uygulamanın adı; mevcut ayarların aynen kullanılması için `null` da belirtilebilir.

### Dönen Değerler

Başarılı olduğu takdirde (muhtemelen değiştirdiği) uygulama veya paket ismiyle döner.

### Notlar

> Bilginize:

> The textdomain() bilgisi süreç başınadır, evre başına değil.

## İçindekiler

- _ — Takma Adı: gettext
- bind_textdomain_codeset — Belli bir uygulamanın iletileri için karakter kodlaması tanımlar
- bindtextdomain — Uygulama adı için bir yol tanımlar
- dcgettext — Belirtilen arama için geçerli uygulama adını değiştirir
- dcngettext — dcgettext işlevinin çoğul biçemli sürümü
- dgettext — Geçerli uygulama adını değiştirir
- dngettext — dgettext işlevinin çoğul biçemli sürümü
- gettext — Geçerli uygulama alanında bir iletiyi arar
- ngettext — gettext işlevinin çoğul biçemli sürümü
- textdomain — Öntanımlı uygulama adını tanımlar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Gettext İşlevleri
  - _ — Takma Adı: gettext
  - bind_textdomain_codeset — Belli bir uygulamanın iletileri için karakter kodlaması tanımlar
  - bindtextdomain — Uygulama adı için bir yol tanımlar
  - dcgettext — Belirtilen arama için geçerli uygulama adını değiştirir
  - dcngettext — dcgettext işlevinin çoğul biçemli sürümü
  - dgettext — Geçerli uygulama adını değiştirir
  - dngettext — dgettext işlevinin çoğul biçemli sürümü
  - gettext — Geçerli uygulama alanında bir iletiyi arar
  - ngettext — gettext işlevinin çoğul biçemli sürümü
  - textdomain — Öntanımlı uygulama adını tanımlar

# Karakter Kümesi Dönüştürme

# Giriş

Bu modül, iconv karakter kümesi dönüştürme oluşumu için bir arayüz içerir. Bu modülle, bir dizgenin karakter kodlamasını yerel kodlamadan herhangi bir başka bir kodlamaya dönüştürebilirsiniz. Desteklenen karakter kümeleri sisteminizde kurulu iconv gerçeklenimine bağlıdır. iconv işlevinin bazı sistemlerde beklendiği gibi çalışmayabileceğine dikkat ediniz. Böyle bir durumda, daha uygun sonuçlar üreteceğinden » GNU libiconv kütüphanesinin kurulması önerilir.

Bu eklenti çok dilli betikleri yazmanızı kolaylaştıracak çeşitli işlevler içermektedir. Yeni özellikleri keşfetmek için bundan sonraki bölümlere bakınız.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

Günümüz POSIX-uyumlu sistemlerinden birini kullanıyorsanız standart C kütüphaneleri iconv oluşumlarını içerdiğinden bu özelliği elde etmek için hiçbir şey yapmanız gerekmez. Aksi takdirde, sisteminize » libiconv kütüphanesini kurmanız gerekir.

## Kurulum

Bu eklenti öntanımlı olarak etkin olduğundan iptal etmek için PHP'nin --without-iconv yapılandırma seçeneği ile derlenmesi gerekir.

PHP'nin derlendiği sistemde bulunan iconv kurulumunun yerini belirtmek gerekirse seçimlik --with-iconv[=DIR] derleme seçeneği kullanılabilir, bu yapılmazsa öntanımlı yerler taranır.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Iconv Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
iconv.input_encoding | "ISO-8859-1" | `INI_ALL` | PHP 5.6.0 itibariyle kullanımı önerilmiyor.
iconv.output_encoding | "ISO-8859-1" | `INI_ALL` | PHP 5.6.0 itibariyle kullanımı önerilmiyor.
iconv.internal_encoding | "ISO-8859-1" | `INI_ALL` | PHP 5.6.0 itibariyle kullanımı önerilmiyor.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

Uyarı

Bazı sistemler (IBM AIX gibi) "ISO-8859-1" yerine "ISO8859-1" kullanırlar. Dolayısıyla yapılandırma seçeneklerinde ve işlev bağımsız değişkenlerinde bu değerin kullanılması gerekir.

`iconv.input_encoding` string
  Uyarı

  Bu işlevin kullanımı PHP 5.6.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

  PHP 5.6 ve sonrasında bu seçenek boş bırakılıp yerine input_encoding kullanılmalıdır.

`iconv.output_encoding` string

`iconv.internal_encoding` string
  Uyarı

  Bu işlevin kullanımı PHP 5.6.0 itibariyle ÖNERİLMEMEKTEDİR. Bu işleve kesinlikle güvenilmemelidir.

  PHP 5.6 ve sonrasında bu seçenek boş bırakılıp yerine `default_charset` kullanılmalıdır.

# Öntanımlı Sabitler

Hangi `iconv` gerçekleniminin bu eklentiye uygun olduğunu çalışma anında tanımlamak mümkündür.

`iconv` gerçeklenim sabitleri
İsim | Tür | Açıklama
--- | --- | ---
`ICONV_IMPL` | string | Gerçeklenimin ismi.
`ICONV_VERSION` | string | Gerçeklenimin sürümü.

> Bilginize:

> Bu sabitleri kullanarak gerçeklenim bağımlısı betikler yazmanız kesinlikle önerilmez.

Aşağıdaki sabitler kullanılmaktadır:

Diğer `iconv` sabitleri
İsim | Tür | Açıklama
--- | --- | ---
`ICONV_MIME_DECODE_STRICT` | int | iconv_mime_decode() için kullanılan bir bit maskesi
`ICONV_MIME_DECODE_CONTINUE_ON_ERROR` | int | iconv_mime_decode() için kullanılan bir bit maskesi

# iconv İşlevleri

# Ayrıca Bakınız

GNU Recode işlevleri.

# iconv

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

iconv — Dizgenin karakter kodlamasını dönüştürür

### Açıklama

function iconv(string `$kodlamadan`, string `$kodlamaya`, string `$dizge`): string|false

`dizge` dizgesinin karakter kodlamasını `kodlamadan` `kodlamaya` dönüştürür.

### Bağımsız Değişkenler

`kodlamadan`

  `dizge`nin geçerli karakter kodlaması.

`kodlamaya`

  `dizge`nin dönüştürüleceği karakter kodlaması.

  Çıktı karakter kümesinin sonuna `//TRANSLIT` dizgesini eklerseniz, bu karakter kümesinde gösterilemeyen bir karaktere rastlanırsa bu karakterin yerine görünüş bakımından benzer bir karakter yerleştirilir. `//IGNORE` dizgesini eklerseniz, çıktı kararakter kümesinde gösterilemeyen bir karakter saptandığında karakter yoksayılır. Aksi takdirde bir `E_NOTICE` üretilir ve işlev `false` döndürür.

  Dikkat

  `//TRANSLIT` ekinin davranışı sistemin iconv gerçeklenimine bağlıdır (bkz. `ICONV_IMPL`). Bazı gerçeklenimler `//TRANSLIT` ekini yoksayar, dolayısıyla `kodlamaya` karakter kümesi için geçersiz karakterlerde başarısız olur.

`dizge`

  Dönüştürülecek dizge.

### Dönen Değerler

Dönüşüm başarılı olursa dönüştürülen dizge, aksi takdirde `false` döner.

### Örnekler

Örnek 1 - iconv() örneği

    <?php
    $text = "Bu bir Euro simgesidir: '€'.";

    echo 'Original : ', $text, PHP_EOL;
    echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
    echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
    echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Original : Bu bir Euro simgesidir: '€'.
    TRANSLIT : Bu bir Euro simgesidir: 'EUR'.
    IGNORE   : Bu bir Euro simgesidir: ''.
    Plain    :
    Notice: iconv(): Detected an illegal character in input string in .\iconv-example.php on line 7

### Notlar

> Bilginize:

> Kullanılabilecek karakter kodlamaları ve seçenekler, iconv'nin kurulu gerçeklenimine bağlıdır. `kodlamadan` veya `kodlamaya` kodlamaları sistem tarafından desteklenmiyorsa, `false` döner.

### Ayrıca Bakınız

- mb_convert_encoding() - Karakter kodlaması dönüşümü yapar
- UConverter::transcode() - Convert a string from one character encoding to another

# iconv_get_encoding

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

iconv_get_encoding — iconv eklentisinin dahili yapılandırma değişkenlerini döndürür

### Açıklama

function iconv_get_encoding(string `$tür` = "all"): array|string|false

iconv eklentisinin dahili yapılandırma değişkenlerini döndürür.

### Bağımsız Değişkenler

`tür`

  Belirtilmesi isteğe bağlı olup şunlardan biri belirtilebilir:

  - Hepsi için `all`
  - Girdi karakter kodlaması için `input_encoding`
  - Çıktı karakter kodlaması için `output_encoding`
  - Dahili karakter kodlaması için `internal_encoding`

### Dönen Değerler

Başarısızlık durumunda `false` aksi takdirde dahili yapılandırma değişkeninin değeri döner.

Eğer `tür` belirtilmezse veya "all" belirtilirse, iconv_get_encoding() bu değişkenleri içeren bir dizi ile döner.

### Örnekler

Örnek 1 - iconv_get_encoding() örneği

    <pre>
    <?php
    iconv_set_encoding("internal_encoding", "UTF-8");
    iconv_set_encoding("output_encoding", "ISO-8859-1");
    var_dump(iconv_get_encoding('all'));
    ?>
    </pre>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [input_encoding] => ISO-8859-1
        [output_encoding] => ISO-8859-1
        [internal_encoding] => UTF-8
    )

### Ayrıca Bakınız

- iconv_set_encoding() - Karakter kodlaması dönüşümü için geçerli karakter kümesini tanımlar
- ob_iconv_handler() - Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar

# iconv_mime_decode

(PHP 5, PHP 7, PHP 8)

iconv_mime_decode — Bir `MIME` başlık alanının kodunu çözer

### Açıklama

function iconv_mime_decode(string `$kodlanmış_başlık`, int `$kip` = 0, ?string `$karküm` = `null`): string|false

Bir `MIME` başlık alanının kodunu çözer.

### Bağımsız Değişkenler

`kodlanmış_başlık`

  Bir dizge olarak kodlanmış başlık.

`kip`

  `kip` bağımsız değişkeni, işlev bozuk bir MIME başlık alanı saptadığı takdirde işlevin davranışını belirler. Aşağıdaki değerleri bir bit maskesi olarak belirtebilirsiniz:

  iconv_mime_decode() tarafından desteklenen bit maskeleri
  Değer | Sabit | Açıklama
  --- | --- | ---
  1 | ICONV_MIME_DECODE_STRICT | Belirtilirse, başlık, » RFC2047'de tanımlanan standartlarla tam uyumlu kodlanır. Bu seçenek öntanımlı olarak kapalıdır, çünkü belirtime uymayan ve doğru `MIME` başlıkları üretmeyen pek çok kullanıcı eposta istemcisi var.
  2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | Belirtilirse, iconv_mime_decode_headers() işlevi yazım hatalarını yoksayıp belirtilen başlığı işlemeye devam etmeye çalışır.

`karküm`

  İsteğe bağlı `karküm` bağımsız değişkeni elde edilecek dizgenin karakter kümesini belirler. Belirtilmezse veya `null` belirtilirse dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olacağı varsayılır.

### Dönen Değerler

Başarı durumunda kodu çözülmüş `MIME` alanı, aksi takdirde `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık `null` olabiliyor.

### Örnekler

Örnek 1 - iconv_mime_decode() örneği

    <?php
    // Sonuç: "Subject: Prüfung Prüfung"
    echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
                           0, "ISO-8859-1");
    ?>

### Ayrıca Bakınız

- iconv_mime_decode_headers() - Bir defada birden fazla MIME başlık alanını çözümler
- mb_decode_mimeheader() - MIME başlık alanındaki dizgeyi dönüştürür
- imap_mime_header_decode() - MIME başlık elemanlarının kodlamasını açar
- imap_base64() - Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür
- imap_qprint() - Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür

# iconv_mime_decode_headers

(PHP 5, PHP 7, PHP 8)

iconv_mime_decode_headers — Bir defada birden fazla `MIME` başlık alanını çözümler

### Açıklama

function iconv_mime_decode_headers(string `$kodlanmış_başlıklar`, int `$kip` = 0, ?string `$karküm` = `null`): array|false

Çok sayıda `MIME` başlık alanını bir kerede çözümler.

### Bağımsız Değişkenler

`kodlanmış_başlıklar`

  Bir dizge olarak kodlanmış başlıklar.

`kip`

  `kip` bağımsız değişkeni, işlev bozuk bir `MIME` başlık alanı saptadığı takdirde işlevin davranışını belirler. Aşağıdaki değerleri bir bit maskesi olarak belirtebilirsiniz:

  iconv_mime_decode_headers() tarafından desteklenen bit maskeleri
  Değer | Sabit | Açıklama
  --- | --- | ---
  1 | ICONV_MIME_DECODE_STRICT | Belirtilirse, başlık, » RFC2047'de tanımlanan standartlarla tam uyumlu kodlanır. Bu seçenek öntanımlı olarak kapalıdır, çünkü belirtime uymayan ve doğru `MIME` başlıkları üretmeyen pek çok kullanıcı eposta istemcisi var.
  2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | Belirtilirse, iconv_mime_decode_headers() işlevi yazım hatalarını yoksayıp belirtilen başlığı işlemeye devam etmeye çalışır.

`karküm`

  İsteğe bağlı `karküm` bağımsız değişkeni elde edilecek dizgenin karakter kümesini belirler. Belirtilmezse, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olacağı varsayılır.

### Dönen Değerler

`kodlanmış_başlıklar` dizgesi ile belirtilen kodlanmış `MIME` başlık alanlarını çözümleyip sonucu bir ilişkisel dizi olarak döndürür. Bu işlem sırasında bir hata oluşursa `false` döner.

Dönen dizideki her anahtar bir başlık alanına, her değer de anahtarla ilgili bir başlık değerine karşılıktır. Aynı isimde birden fazla alan varsa işlev bunları otomatik olarak göründükleri sırayla sayısal indisli bir diziye yerleştirir. Başlık isimlerinin harf büyüklüğüne duyarsız oldukları unutulmamalıdır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık boş olabiliyor.

### Örnekler

Örnek 1 - iconv_mime_decode_headers() örneği

    <?php
    $headers_string = <<<EOF
    Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
    To: example@example.com
    Date: Thu, 1 Jan 1970 00:00:00 +0000
    Message-Id: <example@example.com>
    Received: from localhost (localhost [127.0.0.1]) by localhost
        with SMTP id example for <example@example.com>;
        Thu, 1 Jan 1970 00:00:00 +0000 (UTC)
        (envelope-from example-return-0000-example=example.com@example.com)
    Received: (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000

    EOF;

    $headers =  iconv_mime_decode_headers($headers_string, 0, "ISO-8859-1");
    print_r($headers);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [Subject] => Prüfung Prüfung
        [To] => example@example.com
        [Date] => Thu, 1 Jan 1970 00:00:00 +0000
        [Message-Id] => <example@example.com>
        [Received] => Array
            (
                [0] => from localhost (localhost [127.0.0.1]) by localhost with SMTP id example for <example@example.com>; Thu, 1 Jan 1970 00:00:00 +0000 (UTC) (envelope-from example-return-0000-example=example.com@example.com)
                [1] => (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000
            )

    )

### Ayrıca Bakınız

- iconv_mime_decode() - Bir MIME başlık alanının kodunu çözer
- mb_decode_mimeheader() - MIME başlık alanındaki dizgeyi dönüştürür
- imap_mime_header_decode() - MIME başlık elemanlarının kodlamasını açar
- imap_base64() - Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür
- imap_qprint() - Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür

# iconv_mime_encode

(PHP 5, PHP 7, PHP 8)

iconv_mime_encode — Bir `MIME` başlık alanını tertipler

### Açıklama

function iconv_mime_encode(string `$alan_adı`, string `$alan_değeri`, array `$seçenekler` = []): string|false

Örnekteki gibi, geçerli bir `MIME` başlık alanını bir dizge olarak tertipleyip döndürür:

    Subject: Re: PHP =?utf-8?q?=C3=87eviri?= Grubu

Bu örnekte, "Subject" alan ismi, "Re: PHP =?utf-8?..." ise alanın değeridir.

### Bağımsız Değişkenler

`alan_adı`

  Alan ismi.

`alan_değeri`

  Alanın değeri.

`seçenekler`

  İsteğe bağlı `seçenekler` bağımsız değişkeninde yapılandırma öğelerini içeren bir dizi belirterek iconv_mime_encode() işlevinin davranışını belirleyebilirsiniz. Desteklenen öğeler aşağıda listelenmiştir. Öğe isimlerinin harf büyüklüğüne duyarlı oluşuna dikkat ediniz.

  iconv_mime_encode() tarafından desteklenen yapılandırma öğeleri
  Öğe | Tür | Açıklama | Öntanımlı değer | Örnek
  --- | --- | --- | --- | ---
  scheme | string | Alan değerinin kodlanmasında kullanılacak yöntemi belirler. Bu öğenin değeri "B" veya "Q" olabilir. "B" `base64` kodlama şemasını, "Q" ise `quoted-printable` kodlama şemasını betimler. | B | B
  input-charset | string | `alan_adı` ve `alan_değeri` bağımsız değişkenleri için girdi karakter kümesini belirler. Belirtilmezse, iconv.internal_encoding INI yönergesinin değerinin kullanılacağı varsayılır. | iconv.internal_encoding | ISO-8859-1
  output-charset | string | `MIME` başlığını tertiplemekte kullanılacak karakter kümesini belirler. | iconv.internal_encoding | UTF-8
  line-length | integer | Başlık satırının azami uzunluğunu belirler. » RFC2822 - Genel Ağ İleti Biçemi belirtimine göre, bu değerden daha uzun bir başlık alanı satırı, en uzunu bu kadar baytlık satırlar halinde katlanır. Belirtilmezse, satır uzunluğu 76 karakterle sınırlanır. | 76 | 996
  line-break-chars | string | Uzun başlık alanlarına satır katlama uygulandığında satır sonlarına eklenecek dizgeyi belirler. Belirtilmezse, "\r\n" (`CR` `LF`) öntanımlıdır. Bu öğenin `input-charset` değerinden bağımsız olarak daima bir ASCII dizge olarak ele alınacağına dikkat ediniz. | \r\n | \n

### Dönen Değerler

Başarı durumunda kodlanmış `MIME` alanı, aksi takdirde `false` döner.

### Örnekler

Örnek 1 - iconv_mime_encode() örneği

    <?php
    $preferences = array(
        "input-charset" => "ISO-8859-1",
        "output-charset" => "UTF-8",
        "line-length" => 76,
        "line-break-chars" => "\n"
    );
    $preferences["scheme"] = "Q";
    // Sonucu: "Subject: =?UTF-8?Q?Pr=C3=BCfung=20Pr=C3=BCfung?="
    echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);

    $preferences["scheme"] = "B";
    // Sonucu: "Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?="
    echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);
    ?>

### Ayrıca Bakınız

- imap_binary() - 8 bitlik bir dizgeyi bir base64 dizgesine dönüştürür
- mb_encode_mimeheader() - Dizgeyi MIME başlığı için kodlar
- imap_8bit() - 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür
- quoted_printable_encode() - 8 bitlik bir dizgenin ASCII olarak basılabilir (quoted-printable) sürümünü döndürür

# iconv_set_encoding

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

iconv_set_encoding — Karakter kodlaması dönüşümü için geçerli karakter kümesini tanımlar

### Açıklama

function iconv_set_encoding(string `$türü`, string `$karküm`): bool

`türü` belirtilen dahili yapılandırma yönergesine değer olarak `karküm` atar.

### Bağımsız Değişkenler

`türü`

  Bir dizge olarak şunlardan biri olabilir:

  - input_encoding
  - output_encoding
  - internal_encoding
`karküm`

  Karakter kümesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - iconv_set_encoding() örneği

    <?php
    iconv_set_encoding("internal_encoding", "UTF-8");
    iconv_set_encoding("output_encoding", "ISO-8859-9");
    ?>

### Ayrıca Bakınız

- iconv_get_encoding() - iconv eklentisinin dahili yapılandırma değişkenlerini döndürür
- ob_iconv_handler() - Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar

# iconv_strlen

(PHP 5, PHP 7, PHP 8)

iconv_strlen — Dizgenin karakter sayısı ile döner

### Açıklama

function iconv_strlen(string `$dizge`, ?string `$karküm` = `null`): int|false

Taydaşı olan strlen() işlevinden farklı olarak bayt değil karakter sayar. Karakterler `karküm` ile belirlenen karakter kümesine göre değerlendirilirler.

### Bağımsız Değişkenler

`dizge`

  Karakter sayısı hesaplanacak dizge.

`karküm`

  Eğer `karküm` belirtilmezse veya `null` ise, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olduğu varsayılır.

### Dönen Değerler

`dizge` dizgesinin karakter sayısını bir tamsayı olarak döndürür. Hata oluşmuşsa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık `null` olabiliyor.

### Ayrıca Bakınız

- grapheme_strlen() - Dizgenin sesletim birimi cinsinden uzunluğunu döndürür
- mb_strlen() - Dizge uzunluğu ile döner
- strlen() - Dizge uzunluğunu döndürür

# iconv_strpos

(PHP 5, PHP 7, PHP 8)

iconv_strpos — Samanlıktaki ilk iğneyi bulur

### Açıklama

function iconv_strpos(
string `$samanlık`,
string `$iğne`,
int `$başlangıç` = 0,
?string `$encoding` = `null`
): int|false

Samanlık içindeki ilk iğnenin yerini bulur.

Benzeri olan strpos() işlevinden farklı olarak, ilk iğnenin başlangıcına kadar bayt sayısını değil karakter sayısını döndürür. Karakterler `karküm` ile belirlenen karakter kümesine göre karakter olarak sayılır.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge.

`iğne`

  Aranacak alt dizge.

`başlangıç`

  Aramanın başlatılacağı konum (seçimlik). Negatifse dizgenin sonundan itibaren sayılır.

`karküm`

  Eğer `karküm` belirtilmezse veya `null` ise, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olduğu varsayılır.

Eğer `samanlık` veya `iğne` birer dizge değilse bir dizgeye dönüştürülür ve değeri kendisi olan bir sabit gibi ele alınır.

### Dönen Değerler

İlk `iğne`'nin `samanlık` içinde bulunduğu yerin indisi ile döner.

Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık `null` olabiliyor.
7.1.0 | `başlangıç` negatif olabiliyor.

### Ayrıca Bakınız

- strpos() - Bir alt dizgenin ilkinin konumunu bulur
- iconv_strrpos() - Samanlıktakı son iğneyi bulur
- mb_strpos() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür

# iconv_strrpos

(PHP 5, PHP 7, PHP 8)

iconv_strrpos — Samanlıktakı son iğneyi bulur

### Açıklama

function iconv_strrpos(string `$samanlık`, string `$iğne`, ?string `$karküm` = `null`): int|false

Benzeri olan strrpos() işlevinden farklı olarak, "sonuncu" iğnenin başlangıcına kadar bayt sayısını değil "karakter sayısını" döndürür. Karakterler `karküm` ile belirlenen karakter kümesine göre karakter olarak sayılır.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge.

`iğne`

  Aranacak alt dizge.

`karküm`

  Eğer `karküm` belirtilmezse veya `null` ise, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olduğu varsayılır.

Eğer `samanlık` veya `iğne` birer dizge değilse bir dizgeye dönüştürülür ve değeri kendisi olan bir sabit gibi ele alınır.

### Dönen Değerler

Sonuncu `iğne`'nin `samanlık` içinde bulunduğu yerin indisi ile döner.

Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık `null` olabiliyor.

### Ayrıca Bakınız

- strrpos() - Bir dizgede bir karakterin sonuncusunu bulur
- iconv_strpos() - Samanlıktaki ilk iğneyi bulur
- mb_strrpos() - Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür

# iconv_substr

(PHP 5, PHP 7, PHP 8)

iconv_substr — Bir dizgenin bir alt dizgesini döndürür

### Açıklama

function iconv_substr(
string `$dizge`,
int `$başlangıç`,
?int `$uzunluk` = `null`,
?string `$karküm` = `null`
): string|false

`dizge` dizgesinden başlangıç konumu `başlangıç` ile belirtilen karakterden başlayan `uzunluk` karakterlik bir dizge döndürür.

### Bağımsız Değişkenler

`dizge`

  Özgün dizge.

`başlangıç`

  `başlangıç` negatif bir değer değilse, çıkarılacak alt dizgenin başlangıç karakteri, özgün dizgenin ilk karakteri 0 olmak üzere `başlangıç`'ıncı karakter olur.

  `başlangıç` negatif bir değer ise, çıkarılacak alt dizgenin ilk karakteri sondan sayılarak bulunur.

`uzunluk`

  `uzunluk` pozitif bir değerse, dönen dizge en fazla `uzunluk` karakter içerir (özgün dizgenin uzunluğuna bağlı olarak).

  `uzunluk` negatif bir değerse, özgün dizgenin başından itibaren `başlangıç`ıncı karakterden başlayıp, özgün dizgenin sondan itibaren `uzunluk`'uncu karakterinde biten alt dizge döndürülür. `başlangıç` da negatifse, her iki değerin pozitif olduğu durumda uygulanan işlem bu kez özgün dizgenin sonundan başlanarak uygulanır.

`karküm`

  `karküm` belirtilmezse veya `null` ise, dizge karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olduğu varsayılır.

  `başlangıç` ve `uzunluk` bağımsız değişkenlerinde sayılanlar bayt değil dizgenin karakter kümesine göre birer karakterdir. İşlevin benzeri olan subrstr() işlevinde baytlar sayılır.

### Dönen Değerler

Belirtilen `dizge` dizgesinin `başlangıç` ve `uzunluk` ile belirtilen parçasını döndürür.

Eğer `dizge` uzunluğu, `başlangıç` değerinden küçükse `false`, eşitse boş dizge döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` artık `null` olabiliyor.
7.0.11 | `dizge` eğer `başlangıç` karakter uzunluktaysa boş dizge döner, evvelce `false` dönerdi.

### Ayrıca Bakınız

- substr() - Dizgenin bir kısmını döndürür
- mb_substr() - Dizgenin bir alt dizgesini alır
- mb_strcut() - Dizgenin başlangıcı ve uzunluğu belirtilen parçası ile döner

# ob_iconv_handler

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

ob_iconv_handler — Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar

### Açıklama

function ob_iconv_handler(string `$içerik`, int `$durum`): string

Dizgenin karakter kodlamasını dahili kodlamadan (`internal_encoding`) çıktı kodlamasına (`output_encoding`) dönüştürür.

`internal_encoding` ve `output_encoding` ya php.ini dosyasında ya da iconv_set_encoding() işleviyle tanımlanmalıdır.

### Bağımsız Değişkenler

Bu bağımsız değişkenler için ob_start() işlevine bakınız.

### Dönen Değerler

Dönüş değerleri için ob_start() işlevine bakınız.

### Örnekler

Örnek 1 - ob_iconv_handler() örneği

    <?php
    iconv_set_encoding("internal_encoding", "UTF-8");
    iconv_set_encoding("output_encoding", "ISO-8859-9");
    ob_start("ob_iconv_handler"); // çıktı tamponlamayı başlat
    ?>

### Ayrıca Bakınız

- iconv_get_encoding() - iconv eklentisinin dahili yapılandırma değişkenlerini döndürür
- iconv_set_encoding() - Karakter kodlaması dönüşümü için geçerli karakter kümesini tanımlar
- Çıktı Denetim İşlevleri

## İçindekiler

- iconv — Dizgenin karakter kodlamasını dönüştürür
- iconv_get_encoding — iconv eklentisinin dahili yapılandırma değişkenlerini döndürür
- iconv_mime_decode — Bir MIME başlık alanının kodunu çözer
- iconv_mime_decode_headers — Bir defada birden fazla MIME başlık alanını çözümler
- iconv_mime_encode — Bir MIME başlık alanını tertipler
- iconv_set_encoding — Karakter kodlaması dönüşümü için geçerli karakter kümesini tanımlar
- iconv_strlen — Dizgenin karakter sayısı ile döner
- iconv_strpos — Samanlıktaki ilk iğneyi bulur
- iconv_strrpos — Samanlıktakı son iğneyi bulur
- iconv_substr — Bir dizgenin bir alt dizgesini döndürür
- ob_iconv_handler — Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- iconv İşlevleri
  - iconv — Dizgenin karakter kodlamasını dönüştürür
  - iconv_get_encoding — iconv eklentisinin dahili yapılandırma değişkenlerini döndürür
  - iconv_mime_decode — Bir MIME başlık alanının kodunu çözer
  - iconv_mime_decode_headers — Bir defada birden fazla MIME başlık alanını çözümler
  - iconv_mime_encode — Bir MIME başlık alanını tertipler
  - iconv_set_encoding — Karakter kodlaması dönüşümü için geçerli karakter kümesini tanımlar
  - iconv_strlen — Dizgenin karakter sayısı ile döner
  - iconv_strpos — Samanlıktaki ilk iğneyi bulur
  - iconv_strrpos — Samanlıktakı son iğneyi bulur
  - iconv_substr — Bir dizgenin bir alt dizgesini döndürür
  - ob_iconv_handler — Çıktı tamponu eylemcisi olarak karakter kodlaması dönüşümü yapar

# Uluslararasılaştırma İşlevleri

# Giriş

Uluslararasılaştırma uzantısı (bundan sonra Intl olarak anılacaktır) » ICU kitaplığı için bir sarmalayıcı olup PHP programcılarının biçimlendirme, harf dönüşümü, kodlama dönüşümü, takvim işlemleri, » UCA uyumlu karşılaştırma, metin bulma, yerel ayar tanımlayıcıları, zaman dilimleri ve sesletim kümeleri ile çalışma dahil ancak bunlarla sınırlı olmamak üzere çeşitli yerel ayara duyarlı işlemlerin gerçekleştirmesini sağlar.

ICU API'leri yakından izlendiğinden C/C++ veya Java'da ICU ile çalışma deneyimi olan kişiler PHP API'sini de kolayca kullanabilir. Ayrıca ICU belgeleri de çeşitli ICU işlevlerini anlamaya yardımcı olacaktır.

Eklenti çeşitli modüllerden oluşur ve her biri ICU'nun belli bir API'si ile ilgilidir:

- Karşılaştırıcı: Yerele duyarlı sıralama destekli dizge karşılaştırma yeteneği sağlar.
- Sayı Biçemleyici: Sayıların yerelleştirilmiş biçeme veya belirtilen şablona ya da belli bir kural kümesine uygun olarak gösterilmesini ve dizgelerin sayılara çözümlenmesini mümkün kılar.
- İleti Biçemleyici: Yerel kurallara ve belirtilen şablona göre biçemlenmiş verileri (sayılar, tarihler gibi) birleştirerek iletilerin oluşturulmasını ve içinden verileri çıkararak iletilerin çözümlenmesini mümkün kılar. Çoğulları, yerele göre sayıları, para birimlerini, kuralları ve çok daha fazlasını işleyebilir.
- Normalleştirici: Metni Evrenkod normalleştirme biçimlerinden birine dönüştürecek bir işlev ve normalleştirilmiş bir dizgeyi sınayacak bir yordam sağlar.
- Yerel: Yerel betimleyicilerden alt etiketleri almak için, yerel betimleyicilerle işlevler biçiminde etkileşim kurar; yerel betimleyicileri çözümler, birleştirir ve eşleştirir (sorgular ve süzer).
- Takvim: Yerele duyarlı takvim işlemleri için kullanılabilecek ve seçilen yerel için saat dilimi, haftanın ilk günü veya şimdi yaz saati uygulaması olup olmadığı gibi çeşitli bilgileri almak için kullanılabilecek bir sınıf sağlar.
- Zaman Dilimi: Dünyadaki tüm zaman dilimleri hakkında bilgi içeren » Zaman Dilimi Veritabanına bir sarmalayıcı sağlar.
- . Tarih Biçemleyici: Yerelleştirilmiş biçime veya verilen kalıba ya da kural kümesine göre tarih ve saati görüntülemeyi, dizeleri tarih ve saate ayrıştırmayı sağlar
- Abece dönüştürücü: Çeşitli dillerdeki dizelerin latin gösterimlerinin elde edilmesini sağlar.

## Kaynakça

- » Çeşitli ICU belgeleri

- » ICU Kullanıcı Kılavuzu

- » Evrenkod Karşılaştırma Algoritması

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

Bu eklentiyi derlemek için » ICU kütüphanesinin 4.0.0 veya üstü sürümünü kurmalısınız. PHP 7.4.0 itibariyle ICU 50.1 veya üstü gerekir.

## Kurulum

`--enable-intl` seçeneğini kullanarak PHP paketiyle gelen sürümü derlemek mümkündür.

ICU'yu standart dizinlerden birine kurmadıysanız dinamik ilintileyicinin (ld) kütüphaneyi bulabilmesi için kurduğunuz yeri `LD_LIBRARY_PATH` ortam değişkeninde belirtmelisiniz:

$ export LD_LIBRARY_PATH=/opt/icu/lib

Aksi takdirde, PHP ve ICU kendi öntanımlı dizinlerine kurulmuşsa paketi yapılandırmak için configure betiğine ek seçenekler gerekmez.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Intl Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
intl.default_locale |  | `INI_ALL` |
intl.error_level | 0 | `INI_ALL` |
intl.use_exceptions | 0 | `INI_ALL` | PECL 3.0.0a1 ve sonrasında kullanılabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`intl.default_locale` string

  Hiçbir şey belirtilmediğinde (karşılık gelen bağımsız değişkeni atlayarak veya `NULL` belirterek) intl işlevlerinde kullanılacak yerel. Bunlar ICU yerelleridir, sistem yerelleri değildir. Yerleşik ICU yerelleri ve bunları verileri » https://unicode-org.github.io/icu/userguide/locale/ adresinde bulunabilir.

  ICU öntanımlı yerelinin kullanımına zorlamak için öntanımlı değer boştur. Bir kez değiştirildikten sonra bu ini ayarı tekrar öntanımlı değere döndürülemez. Etkin değer sunucunun ortamına bağlı olduğundan, bu öntanımlı ayara güvenilmemelidir.

`intl.error_level` int

  ICU işlevlerinde bir hata oluştuğunda üretilen hata iletilerinin seviyesi. Bu, `E_WARNING` gibi bir PHP hata seviyesidir. Hata iletilerini engellemek için `0` atanabilir. Bu, hatayı gösteren dönüş değerlerini veya intl_get_error_code() tarafından döndürülen değerleri veya hata kodlarını ve iletilerini almak için kullanılan sınıfa özgü yöntemleri etkilemez.

  Öntanımlı değer: `0`.

`intl.use_exceptions` int

  True atanırsa, bir intl işlevinde hata oluştuğunda intl.error_level ile üretilen hata iletisine ek olarak IntlException türünde bir istisna yavrulanır.

  Öntanımlı değer: `false`

# Öntanımlı Sabitler

`INTL_ICU_DATA_VERSION` (string)
  Data version in ICU4C.
`INTL_ICU_VERSION` (string)
  The current ICU library version as a dotted-decimal string.
`INTL_MAX_LOCALE_LEN` (int)
  Limit on locale length, set to 80 in PHP code. Locale names longer than this limit will not be accepted.
`IDNA_DEFAULT` (int)
  Prohibit processing of unassigned codepoints in the input for IDN functions and do not check if the input conforms to domain name ASCII rules.
`IDNA_ALLOW_UNASSIGNED` (int)
  Allow processing of unassigned codepoints in the input for IDN functions.
`IDNA_USE_STD3_RULES` (int)
  Check if the input for IDN functions conforms to domain name ASCII rules.
`IDNA_CHECK_BIDI` (int)
  Check whether the input conforms to the BiDi rules. Ignored by the IDNA2003 implementation, which always performs this check.
`IDNA_CHECK_CONTEXTJ` (int)
  Check whether the input conforms to the CONTEXTJ rules. Ignored by the IDNA2003 implementation, as this check is new in IDNA2008.
`IDNA_NONTRANSITIONAL_TO_ASCII` (int)
  Option for nontransitional processing in idn_to_ascii(). Transitional processing is activated by default. This option is ignored by the IDNA2003 implementation.
`IDNA_NONTRANSITIONAL_TO_UNICODE` (int)
  Option for nontransitional processing in idn_to_utf8(). Transitional processing is activated by default. This option is ignored by the IDNA2003 implementation.
`INTL_IDNA_VARIANT_2003` (int)
  Use IDNA 2003 algorithm in idn_to_utf8() and idn_to_ascii(). This is the default. This constant and using the default has been deprecated as of PHP 7.2.0.
`INTL_IDNA_VARIANT_UTS46` (int)
  Use UTS #46 algorithm in idn_to_utf8() and idn_to_ascii(). Available as of ICU 4.6.
`GRAPHEME_EXTR_COUNT` (int)
  The number of default grapheme clusters to extract.
`GRAPHEME_EXTR_MAXBYTES` (int)
  The maximum number of bytes returned.
`GRAPHEME_EXTR_MAXCHARS` (int)
  The maximum number of UTF-8 characters returned.

The following errors are part of a bitmask returned by the UTS #46 algorithm in idn_to_utf8() and idn_to_ascii().

`IDNA_ERROR_EMPTY_LABEL` (int)
`IDNA_ERROR_LABEL_TOO_LONG` (int)
`IDNA_ERROR_DOMAIN_NAME_TOO_LONG` (int)
`IDNA_ERROR_LEADING_HYPHEN` (int)
`IDNA_ERROR_TRAILING_HYPHEN` (int)
`IDNA_ERROR_HYPHEN_3_4` (int)
`IDNA_ERROR_LEADING_COMBINING_MARK` (int)
`IDNA_ERROR_DISALLOWED` (int)
`IDNA_ERROR_PUNYCODE` (int)
`IDNA_ERROR_LABEL_HAS_DOT` (int)
`IDNA_ERROR_INVALID_ACE_LABEL` (int)
`IDNA_ERROR_BIDI` (int)
`IDNA_ERROR_CONTEXTJ` (int)
`ULOC_ACTUAL_LOCALE` (int)
  The locale the data actually comes from.
`ULOC_VALID_LOCALE` (int)
  The most specific locale supported by ICU.
`U_AMBIGUOUS_ALIAS_WARNING` (int)
  This converter alias can go to different converter implementations.
`U_BAD_VARIABLE_DEFINITION` (int)
  Missing `'$'` or duplicate variable name.
`U_BRK_ASSIGN_ERROR` (int)
  Syntax error in RBBI rule assignment statement.
`U_BRK_ERROR_LIMIT` (int)
  This must always be the last value to indicate the limit for Break Iterator failures.
`U_BRK_ERROR_START` (int)
  Start of codes indicating Break Iterator failures.
`U_BRK_HEX_DIGITS_EXPECTED` (int)
  Hex digits expected as part of a escaped char in a rule.
`U_BRK_INIT_ERROR` (int)
  Initialization failure. Probable missing ICU Data.
`U_BRK_INTERNAL_ERROR` (int)
  An internal error (bug) was detected.
`U_BRK_MALFORMED_RULE_TAG` (int)
  The `{nnn}` tag on a rule is mal formed.
`U_BRK_MISMATCHED_PAREN` (int)
  Mis-matched parentheses in an RBBI rule.
`U_BRK_NEW_LINE_IN_QUOTED_STRING` (int)
  Missing closing quote in an RBBI rule.
`U_BRK_RULE_EMPTY_SET` (int)
  Rule contains an empty Unicode Set.
`U_BRK_RULE_SYNTAX` (int)
  Syntax error in RBBI rule.
`U_BRK_SEMICOLON_EXPECTED` (int)
  Missing `';'` at the end of a RBBI rule.
`U_BRK_UNCLOSED_SET` (int)
  UnicodeSet writing an RBBI rule missing a closing `']'`.
`U_BRK_UNDEFINED_VARIABLE` (int)
  Use of an undefined `$Variable` in an RBBI rule.
`U_BRK_UNRECOGNIZED_OPTION` (int)
  Option in RBBI rules not recognized.
`U_BRK_VARIABLE_REDFINITION` (int)
  RBBI rule variable redefined.
`U_BUFFER_OVERFLOW_ERROR` (int)
  A result would not fit in the supplied buffer.
`U_CE_NOT_FOUND_ERROR` (int)
  Currently used only while setting variable top, but can be used generally.
`U_COLLATOR_VERSION_MISMATCH` (int)
  Collator version is not compatible with the base version.
`U_DIFFERENT_UCA_VERSION` (int)
  ucol_open encountered a mismatch between UCA version and collator image version, so the collator was constructed from rules. No impact to further function.
`U_ENUM_OUT_OF_SYNC_ERROR` (int)
  `UEnumeration` out of sync with underlying collection.
`U_ERROR_LIMIT` (int)
  Alias of `U_PLUGIN_ERROR_LIMIT`.
`U_ERROR_WARNING_LIMIT` (int)
  This must always be the last warning value to indicate the limit for UErrorCode warnings (last warning code +1).
`U_ERROR_WARNING_START` (int)
  Start of information results (semantically successful).
`U_FILE_ACCESS_ERROR` (int)
  The requested file cannot be found.
`U_FMT_PARSE_ERROR_LIMIT` (int)
  The limit for format library errors.
`U_FMT_PARSE_ERROR_START` (int)
  Start of format library errors.
`U_IDNA_ACE_PREFIX_ERROR` (int)
`U_IDNA_CHECK_BIDI_ERROR` (int)
`U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR` (int)
`U_IDNA_ERROR_LIMIT` (int)
`U_IDNA_ERROR_START` (int)
`U_IDNA_LABEL_TOO_LONG_ERROR` (int)
`U_IDNA_PROHIBITED_ERROR` (int)
`U_IDNA_STD3_ASCII_RULES_ERROR` (int)
`U_IDNA_UNASSIGNED_ERROR` (int)
`U_IDNA_VERIFICATION_ERROR` (int)
`U_IDNA_ZERO_LENGTH_LABEL_ERROR` (int)
`U_ILLEGAL_ARGUMENT_ERROR` (int)
  Indicates an incorrect argument value.
`U_ILLEGAL_CHAR_FOUND` (int)
  Character conversion: Illegal input sequence.
`U_ILLEGAL_CHAR_IN_SEGMENT` (int)
  Unused as of ICU 2.4.
`U_ILLEGAL_CHARACTER` (int)
  A special character is outside its allowed context.
`U_ILLEGAL_ESCAPE_SEQUENCE` (int)
  ISO-2022 illlegal escape sequence.
`U_ILLEGAL_PAD_POSITION` (int)
  Pad symbol misplaced in number pattern.
`U_INDEX_OUTOFBOUNDS_ERROR` (int)
  Trying to access the index that is out of bounds.
`U_INTERNAL_PROGRAM_ERROR` (int)
  Indicates a bug in the library code.
`U_INTERNAL_TRANSLITERATOR_ERROR` (int)
  Internal transliterator system error.
`U_INVALID_CHAR_FOUND` (int)
  Character conversion: Unmappable input sequence. In other APIs: Invalid character.
`U_INVALID_FORMAT_ERROR` (int)
  Data format is not what is expected.
`U_INVALID_FUNCTION` (int)
  A `'&fn()'` rule specifies an unknown transliterator.
`U_INVALID_ID` (int)
  A `'::id'` rule specifies an unknown transliterator.
`U_INVALID_PROPERTY_PATTERN` (int)
  Unused as of ICU 2.4.
`U_INVALID_RBT_SYNTAX` (int)
  A `'::id'` rule was passed to the RuleBasedTransliterator parser.
`U_INVALID_STATE_ERROR` (int)
  Requested operation can not be completed with ICU in its current state.
`U_INVALID_TABLE_FILE` (int)
  Conversion table file not found.
`U_INVALID_TABLE_FORMAT` (int)
  Conversion table file found, but corrupted.
`U_INVARIANT_CONVERSION_ERROR` (int)
  Unable to convert a `UChar*` string to `char*` with the invariant converter.
`U_MALFORMED_EXPONENTIAL_PATTERN` (int)
  Grouping symbol in exponent pattern.
`U_MALFORMED_PRAGMA` (int)
  A `'use'` pragma is invalid.
`U_MALFORMED_RULE` (int)
  Elements of a rule are misplaced.
`U_MALFORMED_SET` (int)
  A `UnicodeSet` pattern is invalid.
`U_MALFORMED_SYMBOL_REFERENCE` (int)
  Unused as of ICU 2.4.
`U_MALFORMED_UNICODE_ESCAPE` (int)
  A Unicode escape pattern is invalid.
`U_MALFORMED_VARIABLE_DEFINITION` (int)
  A variable definition is invalid.
`U_MALFORMED_VARIABLE_REFERENCE` (int)
  A variable reference is invalid.
`U_MEMORY_ALLOCATION_ERROR` (int)
  Memory allocation error.
`U_MESSAGE_PARSE_ERROR` (int)
  Unable to parse a message (message format).
`U_MISMATCHED_SEGMENT_DELIMITERS` (int)
  Unused as of ICU 2.4.
`U_MISPLACED_ANCHOR_START` (int)
  A start anchor appears at an illegal position.
`U_MISPLACED_COMPOUND_FILTER` (int)
  A compound filter is in an invalid location.
`U_MISPLACED_CURSOR_OFFSET` (int)
  A cursor offset occurs at an illegal position.
`U_MISPLACED_QUANTIFIER` (int)
  A quantifier appears after a segment close delimiter.
`U_MISSING_OPERATOR` (int)
  A rule contains no operator.
`U_MISSING_RESOURCE_ERROR` (int)
  The requested resource cannot be found.
`U_MISSING_SEGMENT_CLOSE` (int)
  Unused as of ICU 2.4.
`U_MULTIPLE_ANTE_CONTEXTS` (int)
  More than one ante context.
`U_MULTIPLE_COMPOUND_FILTERS` (int)
  More than one compound filter.
`U_MULTIPLE_CURSORS` (int)
  More than one cursor.
`U_MULTIPLE_DECIMAL_SEPARATORS` (int)
  More than one decimal separator in number pattern.
`U_MULTIPLE_DECIMAL_SEPERATORS` (int)
  Alias of `U_MULTIPLE_DECIMAL_SEPARATORS`.
`U_MULTIPLE_EXPONENTIAL_SYMBOLS` (int)
  More than one exponent symbol in number pattern.
`U_MULTIPLE_PAD_SPECIFIERS` (int)
  More than one pad symbol in number pattern.
`U_MULTIPLE_PERCENT_SYMBOLS` (int)
  More than one percent symbol in number pattern.
`U_MULTIPLE_PERMILL_SYMBOLS` (int)
  More than one permill symbol in number pattern.
`U_MULTIPLE_POST_CONTEXTS` (int)
  More than one post context.
`U_NO_SPACE_AVAILABLE` (int)
  No space available for in-buffer expansion for Arabic shaping.
`U_NO_WRITE_PERMISSION` (int)
  Attempt to modify read-only or constant data.
`U_PARSE_ERROR` (int)
  Equivalent to Java `ParseException`.
`U_PARSE_ERROR_LIMIT` (int)
  The limit for Transliterator errors.
`U_PARSE_ERROR_START` (int)
  Start of Transliterator errors.
`U_PATTERN_SYNTAX_ERROR` (int)
  Syntax error in format pattern.
`U_PRIMARY_TOO_LONG_ERROR` (int)
  User tried to set variable top to a primary that is longer than two bytes.
`U_REGEX_BAD_ESCAPE_SEQUENCE` (int)
  Unrecognized backslash escape sequence in pattern.
`U_REGEX_BAD_INTERVAL` (int)
  Error in `{min,max}` interval.
`U_REGEX_ERROR_LIMIT` (int)
  This must always be the last value to indicate the limit for regexp errors.
`U_REGEX_ERROR_START` (int)
  Start of codes indicating Regexp failures.
`U_REGEX_INTERNAL_ERROR` (int)
  An internal error (bug) was detected.
`U_REGEX_INVALID_BACK_REF` (int)
  Back-reference to a non-existent capture group.
`U_REGEX_INVALID_FLAG` (int)
  Invalid value for match mode flags.
`U_REGEX_INVALID_STATE` (int)
  `RegexMatcher` in invalid state for requested operation.
`U_REGEX_LOOK_BEHIND_LIMIT` (int)
  Look-Behind pattern matches must have a bounded maximum length.
`U_REGEX_MAX_LT_MIN` (int)
  In `{min,max}`, max is less than min.
`U_REGEX_MISMATCHED_PAREN` (int)
  Incorrectly nested parentheses in regexp pattern.
`U_REGEX_NUMBER_TOO_BIG` (int)
  Decimal number is too large.
`U_REGEX_PROPERTY_SYNTAX` (int)
  Incorrect Unicode property.
`U_REGEX_RULE_SYNTAX` (int)
  Syntax error in regexp pattern.
`U_REGEX_SET_CONTAINS_STRING` (int)
  Regexps cannot have `UnicodeSet`s containing strings.
`U_REGEX_UNIMPLEMENTED` (int)
  Use of regexp feature that is not yet implemented.
`U_RESOURCE_TYPE_MISMATCH` (int)
  An operation is requested over a resource that does not support it.
`U_RULE_MASK_ERROR` (int)
  A rule is hidden by an earlier more general rule.
`U_SAFECLONE_ALLOCATED_WARNING` (int)
  A `SafeClone` operation required allocating memory (informational only).
`U_SORT_KEY_TOO_SHORT_WARNING` (int)
  Number of levels requested in `getBound` is higher than the number of levels in the sort key.
`U_STANDARD_ERROR_LIMIT` (int)
  This must always be the last value to indicate the limit for standard errors.
`U_STATE_OLD_WARNING` (int)
  ICU has to use compatibility layer to construct the service. Expect performance/memory usage degradation.
`U_STATE_TOO_OLD_ERROR` (int)
  ICU cannot construct a service from this state, as it is no longer supported.
`U_STRING_NOT_TERMINATED_WARNING` (int)
  An output string could not be NUL-terminated because output `length==destCapacity`.
`U_STRINGPREP_CHECK_BIDI_ERROR` (int)
  Alias of `U_IDNA_CHECK_BIDI_ERROR`.
`U_STRINGPREP_PROHIBITED_ERROR` (int)
  Alias of `U_IDNA_PROHIBITED_ERROR`.
`U_STRINGPREP_UNASSIGNED_ERROR` (int)
  Alias of `U_IDNA_UNASSIGNED_ERROR`.
`U_TOO_MANY_ALIASES_ERROR` (int)
  There are too many aliases in the path to the requested resource. It is very possible that a circular alias definition has occurred.
`U_TRAILING_BACKSLASH` (int)
  A dangling backslash.
`U_TRUNCATED_CHAR_FOUND` (int)
  Character conversion: Incomplete input sequence.
`U_UNCLOSED_SEGMENT` (int)
  A closing `')'` is missing.
`U_UNDEFINED_SEGMENT_REFERENCE` (int)
  A segment reference does not correspond to a defined segment.
`U_UNDEFINED_VARIABLE` (int)
  A variable reference does not correspond to a defined variable.
`U_UNEXPECTED_TOKEN` (int)
  Syntax error in format pattern.
`U_UNMATCHED_BRACES` (int)
  Braces do not match in message pattern.
`U_UNQUOTED_SPECIAL` (int)
  A special character was not quoted or escaped.
`U_UNSUPPORTED_ATTRIBUTE` (int)
  Unused as of ICU 2.4.
`U_UNSUPPORTED_ERROR` (int)
  Requested operation not supported in current context.
`U_UNSUPPORTED_ESCAPE_SEQUENCE` (int)
  ISO-2022 unsupported escape sequence.
`U_UNSUPPORTED_PROPERTY` (int)
  Unused as of ICU 2.4.
`U_UNTERMINATED_QUOTE` (int)
  A closing single quote is missing.
`U_USELESS_COLLATOR_ERROR` (int)
  Collator is options only and no base is specified.
`U_USING_DEFAULT_WARNING` (int)
  A resource bundle lookup returned a result from the root locale (not an error).
`U_USING_FALLBACK_WARNING` (int)
  A resource bundle lookup returned a fallback result (not an error).
`U_VARIABLE_RANGE_EXHAUSTED` (int)
  Too many stand-ins generated for the given variable range.
`U_VARIABLE_RANGE_OVERLAP` (int)
  The variable range overlaps characters used in rules.
`U_ZERO_ERROR` (int)
  No error, no warning.

# Örnekler

## İçindekiler

- Bu eklentinin temel kullanımı

## Bu eklentinin temel kullanımı

Her modül iki çeşit API içerir: Yordamsal ve nesne yönelimli. Bunlar, ilgili belgelerde de açıklandığı gibi birbirlerine eşdeğerdir.

> Bilginize:

> Tüm girdi dizgeleri UTF-8 olmak zorundadır. Tüm çıktılar da ayrıca UTF-8'dir.

Örnek 1 - Yordamsal API kullanım örneği

    <?php
    $coll  = collator_create('en_US');
    $result = collator_compare($coll, "string#1", "string#2");
    ?>

Örnek 2 - Nesne yönelimli API kullanım örneği

    <?php
    $coll = new Collator('en_US');
    $al   = $coll->getLocale(Locale::ACTUAL_LOCALE);
    echo "Asıl yerel: $al\n";

    $formatter = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
    echo $formatter->format(1234567);
    ?>

# Collator sınıfı

(No version information available, might only be in Git)

## Giriş

Yerele duyarlı sıralama desteğiyle dizge karşılaştırma yeteneği sağlar.

## Sınıf Sözdizimi

class Collator {
/* Sabitler */
public const int DEFAULT_VALUE;
public const int PRIMARY;
public const int SECONDARY;
public const int TERTIARY;
public const int DEFAULT_STRENGTH;
public const int QUATERNARY;
public const int IDENTICAL;
public const int OFF;
public const int ON;
public const int SHIFTED;
public const int NON_IGNORABLE;
public const int LOWER_FIRST;
public const int UPPER_FIRST;
public const int FRENCH_COLLATION;
public const int ALTERNATE_HANDLING;
public const int CASE_FIRST;
public const int CASE_LEVEL;
public const int NORMALIZATION_MODE;
public const int STRENGTH;
public const int HIRAGANA_QUATERNARY_MODE;
public const int NUMERIC_COLLATION;
public const int SORT_REGULAR;
public const int SORT_STRING;
public const int SORT_NUMERIC;
/* Yöntemler */
public function __construct(string `$yerel`)
public function asort(array `&$dizi`, int `$sıralama_türü` = Collator::SORT_REGULAR): bool
public function compare(string `$dizge1`, string `$dizge2`): int|false
public static function create(string `$yerel`): ?Collator
public function getAttribute(int `$öznitelik`): int|false
public function getErrorCode(): int|false
public function getErrorMessage(): string|false
public function getLocale(int `$tür`): string|false
public function getSortKey(string `$string`): string|false
public function getStrength(): int
public function setAttribute(int `$öznitelik`, int `$değer`): bool
public function setStrength(int `$seviye`): bool
public function sort(array `&$dizi`, int `$sıralama_seçeneği` = Collator::SORT_REGULAR): bool
public function sortWithSortKeys(array `&$dizi`): bool
}

## Öntanımlı Sabitler

`Collator::FRENCH_COLLATION`

  Dizgenin geri planındaki farklı aksanlara göre dizgeleri sıralar. Bu öznitelik Fransızca yerellerde ve bir kaç başka yerelde otomatik olarak etkindir. Kullanıcılar normalde bu özniteliği açıkça etkinleştirme ihtiyacı duymazlar. Bu özniteliğe On değeri atamanın başarım açısından bir bedeli vardır fakat sıralama anahtarının uzunluğu tesirsizdir. Olası değerler şunlardır:

  - `Collator::ON`
  - `Collator::OFF`(öntanımlı)
  - `Collator::DEFAULT_VALUE`

  Örnek 1 - FRENCH_COLLATION kuralları

  - F=OFF cote < coté < côte < côté
  - F=ON cote < côte < coté < côté
`Collator::ALTERNATE_HANDLING`

  `Alternate` özniteliği, UCA'da değişken karakterler denen karakterleri (boşluk karakterleri, noktalama imleri ve simgeler) denetim altında tutmak için kullanılır. Eğer bu özniteliğe `NonIgnorable` (N) değeri atanırsa bu karakterler arasındaki farklar harfler arasındaki farklarla aynı önemdedir. Eğer `Shifted` (S) atanırsa bu karakterler çok düşük önemde olurlar. `Shifted` değeri çoğunlukla Strength (etki seviyesi) ile birlikte Dördüncüllüğü (`Quaternary`) belirtmekte kullanılır. Böyle bir durumda, boşluk karakterleri, noktalama imleri ve simgelerin dizgeleri karşılaştırırken hesaba katılabilmesi için dizgelerin tüm diğer şeyler (temel harfler, aksanlar ve harf büyüklüğü) bakımından eşdeğer olmaları gerekir. Eğer özniteliğe `Shifted` atanmazsa üçüncül (`Tertiary`) ve dördüncül (`Quaternary`) etki seviyeleri arasında hiçbir fark yoktur. Daha fazla bilgi ve örnekler için » UCA sitesindeki "Variable_Weighting" konusuna bakınız. Özniteliğin değerlerinin basitçe `On` ve `Off` olmamasının sebebi gelecekte başka değerlerin eklenebilecek olmasıdır. UCA seçeneği `Blanked` üçüncül etki seviyesi ile ifade edilir ve özniteliğe `Shifted` atanır. Çoğu yerel için `NonIgnorable` öntanımlıdır. Eğer `Shifted` seçilirse ve noktalama dışında birbirinin aynı çok sayıda dizge varsa işlem daha yavaş olabilir; etki seviyesi ayrıca arttırılmadıkça sıralama anahtarı uzunluğu tesirsiz olacaktır.

  Olası değerler:

  - `Collator::NON_IGNORABLE`(öntanımlı)
  - `Collator::SHIFTED`
  - `Collator::DEFAULT_VALUE`

  Örnek 2 - ALTERNATE_HANDLING kuralları

  - S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA
  - S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA
  - S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA
`Collator::CASE_FIRST` (int)

  `Case_First` özniteliği, dizgeler arasında başka farkların olmadığı durumda büyük harflerin küçük harflerden önce mi yoksa sonra mı olacağını belirler. Olası değerler, büyük harflerin önce geleceğini belirten `Uppercase_First` (U), küçük harflerin önce olacağını belirten `Lowercase_First` (L) değerlerine ilaveten standart `Default` ve `Off` değerleridir. Sonuçları bakımından `Off` ve `Lowercase_First` arasında hemen hemen hiç fark yoktur. Bu bakımdan kullanıcılar genelde `Lowercase_First` kullanmazlar, sadece `Off` veya `Uppercase_First` kullanırlar. X ve L arasındaki farkların ayrıntıları ile ilgilenen kullanıcılar Karşılaştırma Özelleştirmesini incelemelidirler. L veya U belirtmenin dizge karşılaştırma başarımında etkisi olmaz, fakat sıralama anahtarı uzunluğunu etkiler.

  Olası değerler:

  - `Collator::OFF`(öntanımlı)
  - `Collator::LOWER_FIRST`
  - `Collator::UPPER_FIRST`
  - `Collator:DEFAULT`

  Örnek 3 - CASE_FIRST kuralları

  - C=X or C=L "china" < "China" < "denmark" < "Denmark"
  - C=U "China" < "china" < "Denmark" < "denmark"
`Collator::CASE_LEVEL`

  `Case_Level` özniteliği harf büyüklüğünü değil aksanları yoksaymak için kullanılır. Böyle bir durumda, etki seviyesine (Strength) `Primary` ve `Case_Level` özniteliğine `On` atanır. Çoğu yerelde `On` öntanımlıdır ve bu değerin küçük bir dizge karşılaştırma başarımı ve sıralama anahtarı ektisi vardır.

  Olası değerler:

  - `Collator::OFF`(öntanımlı)
  - `Collator::ON`
  - `Collator::DEFAULT_VALUE`

  Örnek 4 - CASE_LEVEL kuralları

  - S=1, E=X role = Role = rôle
  - S=1, E=O role = rôle < Role
`Collator::NORMALIZATION_MODE`

  Normalleştirme ayarı, karşılaştırmada metnin tamamen normalleştirilip normalleştirilmeyeceğini belirler. Değeri off olsa bile (çoğu yerel için öntanımlıdır) ortak kullanımda gösterildiği haliyle metin doğru olarak karşılaştırılacaktır (Ayrıntılar için UTN #5'e bakınız). Sadece, meşru sırada olmayan aksan imleri sorun çıkarır. Özniteliğe `On` atanmışsa, olası tüm metin girdiler için en iyi sonuçlar garanti edilir ve normalleştirme gerektiren dizilimlerin sıklığına bağlı olarak orta seviyede bir dizge karşılaştırma başarımı maliyeti vardır. Sıralama anahtarı uzunluğu üzerinde önemli bir etkisi yoktur. Eğer girdi metninin NFD veya NFKD normalleştirme şekillerinden birinde olduğu biliniyorsa bu normalleştirme seçeneğini etkin kılmaya gerek yoktur.

  Olası değerler:

  - `Collator::OFF`(öntanımlı)
  - `Collator::ON`
  - `Collator::DEFAULT_VALUE`
`Collator::STRENGTH`

  ICU Karşılaştırma hizmeti çok seviyeli karşılaştırmayı destekler (bunlara seviye (level) dendiği gibi tesir derecesi de (Strength) denir). Bu seviyeler sayesinde ICU, dizgeleri yerel uzlaşımlara bağlı olarak hassas bir şekilde sıralar. Bununla birlikte, metin içinde dizge araması, seviyelerin seçilerek devreye sokulmasına izin verilerek çeşitli eşleşme koşullarıyla gerçekleştirilebilir. Daha ayrıntılı bilgi edinmek için collator_set_strength() işlevine bakınız.

  Olası değerler:

  - `Collator::PRIMARY`
  - `Collator::SECONDARY`
  - `Collator::TERTIARY`(öntanımlı)
  - `Collator::QUATERNARY`
  - `Collator::IDENTICAL`
  - `Collator::DEFAULT_VALUE`
`Collator::HIRAGANA_QUATERNARY_MODE`

  JIS x 4061 ile uyumluluk Hiragana ve Katakana karakterler arasında ayrım sağlayacak ek seviyeler gerektirir. Eğer standartla uyumluluk gerekirse bu özniteliğe `On` atanmalı ve seviye olarak Quaternary (dördüncül) kullanılmalıdır. Bu, sıralama anahtarı uzunluğunu ve dizge karşılaştırma başarımını etkiler.

  Olası değerler:

  - `Collator::OFF`(öntanımlı)
  - `Collator::ON`
  - `Collator::DEFAULT_VALUE`
`Collator::NUMERIC_COLLATION`

  Etkin kılınırsa bu öznitelik, rakamlardan oluşan altdizgelerin sayısal değerleri için bir karşılaştırma anahtarı üretir. Bu, sıralamada '2''den sonra '100' almanın bir yoludur.

  Olası değerler:

  - `Collator::OFF`(default)
  - `Collator::ON`
  - `Collator::DEFAULT_VALUE`
`Collator::DEFAULT_VALUE`
`Collator::PRIMARY`
`Collator::SECONDARY`
`Collator::TERTIARY`
`Collator::DEFAULT_STRENGTH`
`Collator::QUATERNARY`
`Collator::IDENTICAL`
`Collator::OFF`
`Collator::ON`
`Collator::SHIFTED`
`Collator::NON_IGNORABLE`
`Collator::LOWER_FIRST`
`Collator::UPPER_FIRST`
`Collator::SORT_REGULAR`

`Collator::SORT_STRING`

`Collator::SORT_NUMERIC`

# Collator::asort

# collator_asort

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::asort -- collator_asort — Diziyi indislerin arasındaki ilişkilere göre sıralar

### Açıklama

Nesne yönelimli kullanım

public function Collator::asort(array `&$dizi`, int `$sıralama_türü` = Collator::SORT_REGULAR): bool

Yordamsal kullanım

function collator_asort(Collator `$nesne`, array `&$dizi`, int `$sıralama_türü` = Collator::SORT_REGULAR): bool

Bir diziyi indislerinin arasındaki ilişkilere uygun olarak sıralar. Elemanlarının sıralamasının önem kazandığı yerlerde ilişkisel dizilerin içeriğini sıraya sokmakta kullanılır. Dizi elemanları yerele özgü kurallara göre sıralanır.

PHP'nin standart asort() işlevinin eşdeğeridir.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`dizi`

  Sıralanacak dizgeleri içeren dizi.

`sıralama_türü`

  İsteğe bağlı sıralama türü şunlardan biri olabilir:

  - `Collator::SORT_REGULAR` - öğeleri normal olarak karşılaştırır (tür değişmez).

  - `Collator::SORT_NUMERIC` - öğeler sayısal olarak sıralanır.

  - `Collator::SORT_STRING` - öğeler dizge olarak karşılaştırılır.

  Öntanımlı değer `Collator::SORT_REGULAR` olup geçersiz sıralama türü belirtildiğinde de geçerli olur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_asort() örneği

    <?php
    $coll = collator_create( 'en_US' );
    $dizi = array(
         'a' => '100',
         'b' => '50',
         'c' => '7'
    );
    collator_asort( $coll, $dizi, Collator::SORT_NUMERIC );
    var_export( $dizi );

    collator_asort( $coll, $dizi, Collator::SORT_STRING );
    var_export( $dizi );
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      'c' => '7',
      'b' => '50',
      'a' => '100',
    )array (
      'a' => '100',
      'b' => '50',
      'c' => '7',
    )

### Ayrıca Bakınız

- Collator sabitleri
- collator_sort() - Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar
- collator_sort_with_sort_keys() - Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar

# Collator::compare

# collator_compare

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::compare -- collator_compare — İki Evrenkodlu dizgeyi karşılaştırır

### Açıklama

Nesne yönelimli kullanım

public function Collator::compare(string `$dizge1`, string `$dizge2`): int|false

Yordamsal kullanım

function collator_compare(Collator `$nesne`, string `$dizge1`, string `$dizge2`): int|false

İki Unicode dizgeyi yerelin karşılaştırma kurallarına uygun olarak karşılaştırır.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`dizge1`

  Karşılaştırılacak dizgelerden biri.

`dizge2`

  Karşılaştırılacak dizgelerden biri.

### Dönen Değerler

Dönen karşılaştırma sonuçları:

- `dizge1`, `dizge2`'den büyükse: 1

- `dizge1` ve `dizge2` aynıysa: 0

- `dizge1`, `dizge2`'den küçükse: 2

Hata oluşmuşsa `false` döner.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Örnekler

Örnek 1 - collator_compare() örneği

    <?php
    $s1 = 'Hello';
    $s2 = 'hello';

    $coll = collator_create( 'en_US' );
    $res  = collator_compare( $coll, $s1, $s2 );

    if ($res === false) {
        echo collator_get_error_message( $coll );
    } else if( $res > 0 ) {
        echo "s1, s2'den büyüktür\n";
    } else if( $res < 0 ) {
        echo "s1, s2'den küçüktür\n";
    } else {
        echo "s1 ve s2 aynıdır\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

s1, s2'den büyüktür

Örnek 2 - Aksansız veya büyük/küçük harfe duyarlı olmayan dizeleri karşılaştırma

    <?php
    $c = new Collator('en');
    $c->setStrength(Collator::PRIMARY);

    if ($c->compare('Séan', 'Sean') == 0)
    {
        echo "İkisi aynı\n";
    }

Yukarıdaki örneğin çıktısı:

İkisi aynı

Bu örnek, karşlaştırıcıya yalnızca temel karakterleri hesaba katarak karşılaştırma yapması talimatını verir. Karşılaştırma seviyeleri Collator->setStrength() belgesinde açıklanmıştır.

### Ayrıca Bakınız

- collator_sort() - Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar

# Collator::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::__construct — Bir karşılaştırıcı oluşturur

### Açıklama

public function Collator::__construct(string `$yerel`)

Yeni bir Collator örneği oluşturur.

### Bağımsız Değişkenler

`yerel`

  Kullanılacak karşılaştırma kurallarını içeren yerel. Yerel olarak özel değerler verilebilir; eğer boş bir dizge aktarılırsa öntanımlı yerelin karşılaştırma kuralları geçerli olur. Eğer "root" verilirse » UCA kuralları geçerli olur.

  Kullanıcının farklı ülke ve yörelerle ilgili beklentilerine bağlı olarak, doğru sıralama ve eşleştirmeyi yapabilmek için `locale` en önemli özniteliktir. Öntanımlı » UCA kuralları sadece Felemenkçe, Portekizce gibi bir kaç yerel için doğru sıralama yapar (buradaki "doğru" sözcüğü, kullanıcının dille ilgili beklentileri ile ilgilidir). Öntanımlı yerelin yetmediği noktada UCA'nın beklediğiniz sıralamayı yapabilmesi için doğru yereli belirtmelisiniz. Yerelin seçilmesiyle, yerel için makul sayılabilecek tüm öznitelikler otomatik olarak belli değerlere ayarlanır. Bu bakımdan çoğunlukla yerele özgü özniteliklerin ayrıca belirtilmesi gerekmez. Bazı durumlarda yerel seçimi dizge karşılaştırma başarımında ve/veya sıralama anahtarı uzunluğunda bir fark oluşturabilir.

### Hatalar/İstisnalar

Hata durumunda "boş" bir nesne döner. Neler olup bittiğini öğrenmek için intl_get_error_code() ve/veya intl_get_error_message() işlevini kullanabilirsiniz.

### Örnekler

Örnek 1 - Collator::__construct() örneği

    <?php
    $coll = new Collator('en_CA');
    ?>

### Ayrıca Bakınız

- Collator::create() - Bir karşılaştırıcı oluşturur
- collator_create() - Bir karşılaştırıcı oluşturur

# Collator::create

# collator_create

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::create -- collator_create — Bir karşılaştırıcı oluşturur

### Açıklama

Nesne yönelimli kullanım

public static function Collator::create(string `$yerel`): ?Collator

Yordamsal kullanım

function collator_create(string `$yerel`): ?Collator

Dizgeler yerel kurallara uygun olarak karşılaştırılır.

### Bağımsız Değişkenler

`yerel`

  Gereken karşılaştırma kurallarını içeren yerel. Yerel olarak özel değerler verilebilir; eğer boş bir dizge aktarılırsa öntanımlı yerelin karşılaştırma kuralları geçerli olur. Eğer `"root"` aktarılırsa » UCA kuralları geçerli olur.

### Dönen Değerler

Bir hata oluşursa `null`, aksi takdirde Collator nesnesinin yeni bir örneği.

### Örnekler

Örnek 1 - collator_create() örneği

    <?php
    $coll = collator_create( 'en_US' );

    if( !isset( $coll ) ) {
        printf( "Nesne örneği oluşturulamadı: %s\n", intl_get_error_message() );
        exit( 1 );
    }
    ?>

### Ayrıca Bakınız

- Collator::__construct() - Bir karşılaştırıcı oluşturur

# Collator::getAttribute

# collator_get_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::getAttribute -- collator_get_attribute — Karşılaştırma özniteliğinin değerini döndürür

### Açıklama

Nesne yönelimli kullanım

public function Collator::getAttribute(int `$öznitelik`): int|false

Yordamsal kullanım

function collator_get_attribute(Collator `$nesne`, int `$öznitelik`): int|false

Karşılaştırma özniteliğinin değerini tamsayı olarak döndürür.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`öznitelik`

  Değeri öğrenilecek öznitelik.

### Dönen Değerler

Özniteliğin değeri, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_get_attribute() örneği

    <?php
    $coll = collator_create( 'en_CA' );
    $val = collator_get_attribute( $coll, Collator::NUMERIC_COLLATION );
    if( $val === false )
    {
        // Hata ile ilgili işlemler.
    }
    ?>

### Ayrıca Bakınız

- Collator sabitleri
- collator_set_attribute() - Karşılaştırma özniteliği tanımlar
- collator_get_strength() - Geçerli karşılaştırma seviyesini döndürür

# Collator::getErrorCode

# collator_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::getErrorCode -- collator_get_error_code — Karşılaştırıcının son hata kodunu döndürür

### Açıklama

Nesne yönelimli kullanım

public function Collator::getErrorCode(): int|false

Yordamsal kullanım

function collator_get_error_code(Collator `$nesne`): int|false

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

### Dönen Değerler

Son karşılaştırma işlevi çağrısında oluşan hatanın kodu, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_get_error_code() örneği

    <?php
    $coll = collator_create( 'en_US' );
    if( collator_get_attribute( $coll, Collator::FRENCH_COLLATION ) === false )
            handle_error( collator_get_error_code() );
    ?>

### Ayrıca Bakınız

- collator_get_error_message() - Karşılaştırıcının son hata iletisini döndürür

# Collator::getErrorMessage

# collator_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::getErrorMessage -- collator_get_error_message — Karşılaştırıcının son hata iletisini döndürür

### Açıklama

Nesne yönelimli kullanım

public function Collator::getErrorMessage(): string|false

Yordamsal kullanım

function collator_get_error_message(Collator `$nesne`): string|false

Son hatanın iletisini döndürür.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

### Dönen Değerler

Son karşılaştırma işlevi çağrısında oluşan hatanın açıklaması, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_get_error_message() örneği

    <?php
    $coll = collator_create( 'lt' );
    if( collator_compare( $coll, 'y', 'k' ) === false ) {
        echo collator_get_error_message( $coll );
    }
    ?>

### Ayrıca Bakınız

- collator_get_error_code() - Karşılaştırıcının son hata kodunu döndürür

# Collator::getLocale

# collator_get_locale

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::getLocale -- collator_get_locale — Karşılaştırıcının yerel ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public function Collator::getLocale(int `$tür`): string|false

Yordamsal kullanım

function collator_get_locale(Collator `$nesne`, int `$tür`): string|false

Karşılaştırıcının yerel adını döndürür.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`tür`

  Geçerli yerel için `Locale::VALID_LOCALE`, fiili yerel için `Locale::ACTUAL_LOCALE` belirtilir. Fiili yerel öntanımlıdır.

### Dönen Değerler

Karşılaştırma verisinin geldiği gerçek yerel ismi. Eğer karşılaştırıcı kurallardan örneklenmişse veya hata oluşursa `false` döner.

### Örnekler

Örnek 1 - collator_get_locale() örneği

    <?php
    $coll    = collator_create( 'tr_TR_Istanbul' );
    $res_val = collator_get_locale( $coll, Locale::VALID_LOCALE );
    $res_act = collator_get_locale( $coll, Locale::ACTUAL_LOCALE );
    echo "İstenen yerel ismi: tr_TR_Istanbul\n";
    printf("Geçerli yerel ismi: %s\nFiili yerel ismi: %s\n", $res_val, $res_act );
    ?>

Yukarıdaki örneğin çıktısı:

    İstenen yerel ismi: tr_TR_Istanbul
    Geçerli yerel ismi: tr_TR
    Fiili yerel ismi: tr

### Ayrıca Bakınız

- collator_create() - Bir karşılaştırıcı oluşturur

# Collator::getSortKey

# collator_get_sort_key

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 1.0.3)

Collator::getSortKey -- collator_get_sort_key — Get sorting key for a string

### Açıklama

Nesne yönelimli kullanım

public function Collator::getSortKey(string `$string`): string|false

Yordamsal kullanım

function collator_get_sort_key(Collator `$object`, string `$string`): string|false

Return collation key for a string. Collation keys can be compared directly instead of strings, though are implementation specific and may change between ICU library versions. Sort keys are generally only useful in databases or other circumstances where function calls are extremely expensive.

### Bağımsız Değişkenler

`object`

  Collator object.

`string`

  The string to produce the key from.

### Dönen Değerler

Returns the collation key for the string, başarısızlık durumunda `false` döner.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Örnekler

Örnek 1 collator_get_sort_key() example

    <?php

    $s1 = 'Hello';

    $coll = collator_create('en_US');
    $res  = collator_get_sort_key($coll, $s1);

    echo bin2hex($res);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

3832404046010901dc08

Örnek 2 Collator::getSortKey() example with usort()

    <?php

    $data = [
        [ 'name' => '🇳🇱 Derick Rethans', 'linked_account' => 'https://phpc.social/users/derickr' ],
        [ 'name' => 'Elephpant', 'linked_account' => 'https://phpc.social/phpc' ],
        [ 'name' => '🇫🇷 Marcus Bointon', 'linked_account' => 'https://phpc.social/users/Synchro' ],
    ];

    /* Create the collator */
    $col = new Collator('en');

    /* Sort upper-case letters before lower-case letters */
    $col->setAttribute(Collator::CASE_FIRST, Collator::UPPER_FIRST);

    /* Use a user-defined function with sort, that strips out the emojis */
    usort(
        $data,
        function($a, $b) use ($col) {
            /* Remove the character class 'S' (the Symbols), and remove whitespace
             * (with trim) */
            $aName = trim(preg_replace('/\p{S}+/u', '', $a['name']));
            $bName = trim(preg_replace('/\p{S}+/u', '', $b['name']));

                                    /* Create the sort key */
            $aKey = $col->getSortKey($aName);
            $bKey = $col->getSortKey($bName);

                                    /* Use the sort key to signal which element sorts first */
            return $aKey <=> $bKey;
        }
    );

    var_dump($data);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

array(3) {
[0] =>
array(2) {
'name' =>
string(25) "🇳🇱 Derick Rethans"
'linked_account' =>
string(33) "https://phpc.social/users/derickr"
}
[1] =>
array(2) {
'name' =>
string(9) "Elephpant"
'linked_account' =>
string(24) "https://phpc.social/phpc"
}
[2] =>
array(2) {
'name' =>
string(25) "🇫🇷 Marcus Bointon"
'linked_account' =>
string(33) "https://phpc.social/users/Synchro"
}
}

### Ayrıca Bakınız

- collator_sort() - Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar
- collator_sort_with_sort_keys() - Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar

# Collator::getStrength

# collator_get_strength

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::getStrength -- collator_get_strength — Geçerli karşılaştırma seviyesini döndürür

### Açıklama

Nesne yönelimli kullanım

public function Collator::getStrength(): int

Yordamsal kullanım

function collator_get_strength(Collator `$nesne`): int

Geçerli karşılaştırma seviyesini döndürür.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

### Dönen Değerler

Karşılaştırma seviyesi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_get_strength() örneği

    <?php
    $coll     = collator_create( 'en_US' );
    $strength = collator_get_strength( $coll );
    ?>

### Ayrıca Bakınız

- Collator sabitleri
- collator_set_strength() - Sıralamanın seviyesini ayarlar
- collator_get_attribute() - Karşılaştırma özniteliğinin değerini döndürür

# Collator::setAttribute

# collator_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::setAttribute -- collator_set_attribute — Karşılaştırma özniteliği tanımlar

### Açıklama

Nesne yönelimli kullanım

public function Collator::setAttribute(int `$öznitelik`, int `$değer`): bool

Yordamsal kullanım

function collator_set_attribute(Collator `$nesne`, int `$öznitelik`, int `$değer`): bool

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`öznitelik`

  Öznitelik.

`değer`

  Özniteliğe atanacak değer.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_set_attribute() örneği

    <?php
    $coll = collator_create( 'en_CA' );
    $val  = collator_get_attribute( $coll, Collator::NUMERIC_COLLATION );
    if ($val === false) {
        // Hata işleme.
    } elseif ($val === Collator::ON) {
        // Bazı işlemler.
    }
    ?>

### Ayrıca Bakınız

- Collator sabitleri
- collator_get_attribute() - Karşılaştırma özniteliğinin değerini döndürür
- collator_set_strength() - Sıralamanın seviyesini ayarlar

# Collator::setStrength

# collator_set_strength

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::setStrength -- collator_set_strength — Sıralamanın seviyesini ayarlar

### Açıklama

Nesne yönelimli kullanım

public function Collator::setStrength(int `$seviye`): bool

Yordamsal kullanım

function collator_set_strength(Collator `$nesne`, int `$seviye`): bool

» ICU Karşılaştırma Hizmeti çok seviyeli karşılaştırmayı destekler. Bu sınıflandırma sayesinde ICU dizgeleri sıralamayı yerel uzlaşımlara uygun olarak daha büyük hassasiyetle yerine getirir. Bununla birlikte, seviyelerin seçmeli olarak devreye sokulabilmesi sayesinde metin içinde bir dizgenin aranması çeşitli eşleşme koşullarıyla yapılabilir.

1. Birincil seviye: Bu genel olarak, temel karakterler arasındaki farkları ("a" < "b" gibi) ifade etmek için kullanılır. Bu en güçlü farktır. Örneğin sözlükler bu temel karakterlere göre farklı bölümlere ayrılırlar. Buna ayrıca `level 1` nitelik adı verilir.

2. İkincil seviye: Karakterlerdeki aksanlar ikincil farklar olarak ele alınır (örneğin, "as" < "às" < "at") Dile bağlı olarak harfler arasındaki diğer farklar da ikincil farklar olarak ele alınabilir. Dizgelerin içinde herhangi bir yerde birincil dereceden bir farkın varlığında ikincil seviyeden bir fark yoksayılır. Buna ayrıca `level 2` nitelik adı verilir.

   > Bilginize:

   > Bazı dillerde (Danca gibi) bazı aksanlı karakterler temel karakterler olarak ele alınırlar. Bununla birlikte çoğu dilde aksanlı bir karakter aynı harfin aksansız olanına göre ikinci dereceden bir farktan başka bir şey değildir.

3. Üçüncül seviye: Büyük ve küçük harfler arasındaki farklar üçüncül seviyeden farklardandır (örneğin, "ao" < "Ao" < "aò"). Buna ek olarak, bir harfin büyük veya küçük harflisinin temel karakterlerden farkları da ("A" ve "𝒶" gibi) üçüncül seviyedendir. Bu farklara diğer bir örnek de büyük ve küçük Kana arasındaki farktır. Dizgelerin içinde herhangi bir yerde bir birincil veya ikincil seviyeden farkın varlığında üçüncül seviyeden bir fark yoksayılır. Buna ayrıca `level 3` nitelik adı verilir.

4. Dördüncül seviye: 13. seviyede, noktalama yoksayıldığında (Noktalamanın Yoksayılması'na bakınız), noktalamalı ve noktalamasız sözcükleri ayırmakta ek bir seviye kullanılabilir (örneğin, "ab" < "a-b" < "aB"). Bu fark, birinci, ikincil veya üçüncül seviyeden farkların varlığında yoksayılır. Bu, `level 4` nitelik olarak da bilinir. Dördüncül seviye sadece, noktalamanın yok sayılması gerekliyse veya bir Japonca metin işleniyorsa kullanılmalıdır (Hiragana işlemi'ne bakınız).

5. Eş seviye: Diğer tüm seviyelerin eşitliğinde eşitliği bozmak için eş seviye kullanılır. NFD biçimindeki her dizgenin Unicode kod değerleri, 14. seviyede fark bulunmayan durumda, bu seviyede karşılaştırılır. Örneğin İbranice şive imleri sadece bu seviyede ayrımsanır. Bu seviye gereksiz yere kullanılmamalı, iki dizge arasındaki sadece kod değerleri arasındaki farklar gibi oldukça nadir durumlarda kullanılmalıdır. Bu seviyenin kullanımı, esasen, hem arttırımlı karşılaştırma hem de sıralama anahtarı üretiminde (sıralama anahtarı uzunluğunu arttırması gibi) başarımı azaltır. Bu, `level 5` nitelik olarak da bilinir.

Örneğin, bazıları, metin içinde arama yaparken aksanlı karakterleri veya aksanlı karakterleri ve büyük/küçük harf farklarını yoksaymayı seçebilirler. Hemen hemen tüm karakterler ilk üç seviyeye göre ayrımsanabilir ve bu bakımdan çoğu yerelde üçüncül (Tertiary) seviye öntanımlıdır. Bununla birlikte, Alternate özniteliğine Shifted atanırsa, boşluk ve noktalama karakterleri ve simgeler diğer taraftan yoksayılmadıkça bunlar arasındaki eşitlikleri bozmak için dördüncül (Quaternary) seviye kullanılabilir. Karakterler arasında çok hassas ayrım gerekliyse, eş (Identical) seviye de kullanılabilir. (Örneğin, Matematiksel Kalın Küçük A ile Matematiksel Eğik Küçük A arasındaki ayrımı sadece eş seviye sağlayabilir.) Bununla birlikte, üçüncül ve eş seviyelerden daha yüksek seviyelerin kullanımı belirgin şekilde daha uzun sıralama anahtarları ve eş dizgeler arasında daha yavaş karşılaştırma başarımı ile sonuçlanır.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`seviye`

  Atanacak seviye.

  Olası değerler:

  - `Collator::PRIMARY`

  - `Collator::SECONDARY`

  - `Collator::TERTIARY`

  - `Collator::QUATERNARY`

  - `Collator::IDENTICAL`

  - `Collator::DEFAULT_STRENGTH`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_set_strength() örneği

    <?php
    $arr  = array( 'aò', 'Ao', 'ao' );
    $coll = collator_create( 'en_US' );

    // Diziyi öntanımlı seviyeyle sıralayalım.
    collator_sort( $coll, $arr );
    var_export( $arr );

    // Diziyi birincil seviyeyle sıralayalım.
    collator_set_strength( $coll, Collator::PRIMARY );
    collator_sort( $coll, $arr );
    var_export( $arr );
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      0 => 'ao',
      1 => 'Ao',
      2 => 'aò',
    )
    array (
      0 => 'aò',
      1 => 'Ao',
      2 => 'ao',
    )

### Ayrıca Bakınız

- Collator sabitleri
- collator_get_strength() - Geçerli karşılaştırma seviyesini döndürür

# Collator::sort

# collator_sort

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::sort -- collator_sort — Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar

### Açıklama

Nesne yönelimli kullanım

public function Collator::sort(array `&$dizi`, int `$sıralama_seçeneği` = Collator::SORT_REGULAR): bool

Yordamsal kullanım

function collator_sort(Collator `$nesne`, array `&$dizi`, int `$sıralama_seçeneği` = Collator::SORT_REGULAR): bool

Bu işlev bir diziyi geçerli yerel kurallarına uygun olarak sıralar.

Standart PHP sort() işlevine eşdeğerdir.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`dizi`

  Sıralanacak dizge dizisi.

`sıralama_türü`

  İsteğe bağla sıralama türü, şunlardan biri olabilir:

  - `Collator::SORT_REGULAR` - öğeler normal olarak karşılaştırılır (türleri değiştirilmez). Bağımsız değişkene geçersiz değer belirtilirse bu sabit kullanılır.

  - `Collator::SORT_NUMERIC` - öğeler sayısal olarak karşılaştırılır.

  - `Collator::SORT_STRING` - öğeler dizgesel olarak karşılaştırılır.

  Öntanımlı sıralama türü: `Collator::SORT_REGULAR`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_sort() örneği

    <?php
    $coll = collator_create( 'tr_TR' );
    $arr  = array( 'zor', 'ışık', 'çok', 'iğne' );

    var_export( $arr );
    collator_sort( $coll, $arr );
    var_export( $arr );
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      0 => 'zor',
      1 => 'ışık',
      2 => 'çok',
      3 => 'iğne',
    )array (
      0 => 'çok',
      1 => 'ışık',
      2 => 'iğne',
      3 => 'zor',
    )

### Ayrıca Bakınız

- Collator sabitleri
- collator_asort() - Diziyi indislerin arasındaki ilişkilere göre sıralar
- collator_sort_with_sort_keys() - Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar

# Collator::sortWithSortKeys

# collator_sort_with_sort_keys

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::sortWithSortKeys -- collator_sort_with_sort_keys — Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar

### Açıklama

Nesne yönelimli kullanım

public function Collator::sortWithSortKeys(array `&$dizi`): bool

Yordamsal kullanım

function collator_sort_with_sort_keys(Collator `$nesne`, array `&$dizi`): bool

collator_sort() işlevine benzer, fakat büyük dizilerde daha fazla hız kazanmak için ucol_getSortKey() tarafından üretilen ICU sıralama anahtarını kullanır.

### Bağımsız Değişkenler

`nesne`

  Collator nesnesi.

`dizi`

  Sıralanacak dizge dizisi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - collator_sort_with_sort_keys() örneği

    <?php
    $arr  = array( 'Kuytu', 'Kuğu', 'Kuş' );
    $coll = collator_create( 'tr' );

    collator_sort_with_sort_keys( $coll, $arr );
    var_export( $arr );
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      0 => 'Kuğu',
      1 => 'Kuş',
      2 => 'Kuytu',
    )

### Ayrıca Bakınız

- Collator sabitleri
- collator_sort() - Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar
- collator_asort() - Diziyi indislerin arasındaki ilişkilere göre sıralar

## İçindekiler

- Collator::asort — Diziyi indislerin arasındaki ilişkilere göre sıralar
- Collator::compare — İki Evrenkodlu dizgeyi karşılaştırır
- Collator::__construct — Bir karşılaştırıcı oluşturur
- Collator::create — Bir karşılaştırıcı oluşturur
- Collator::getAttribute — Karşılaştırma özniteliğinin değerini döndürür
- Collator::getErrorCode — Karşılaştırıcının son hata kodunu döndürür
- Collator::getErrorMessage — Karşılaştırıcının son hata iletisini döndürür
- Collator::getLocale — Karşılaştırıcının yerel ismini döndürür
- Collator::getSortKey — Get sorting key for a string
- Collator::getStrength — Geçerli karşılaştırma seviyesini döndürür
- Collator::setAttribute — Karşılaştırma özniteliği tanımlar
- Collator::setStrength — Sıralamanın seviyesini ayarlar
- Collator::sort — Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar
- Collator::sortWithSortKeys — Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar

# NumberFormatter sınıfı

(No version information available, might only be in Git)

## Giriş

Uygulamalar sayılar üzerinde işlem yapmak ve bunları saklamak için yerelden bağımsız bir ikil gösterim kullanır. Sayılar gösterilirken veya basılırken bunlar yerele özgü dizgelere dönüştürülür. Örneğin, 12345.67 sayısı ABD için "12,345.67", Fransa için "12 345,67" ve Almanya ve Türkiye için "12.345,67" biçimindedir.

NumberFormatter (SayıBiçemleyici) sınıfınca sağlanmış yöntemleri çağırmak suretiyle sayılar, paralar ve yüzdeler öntanımlı yerele veya belirtilen yerele uygun olarak biçemlenebilir. NumberFormatter sınıfı yerele duyarlı olduğundan her yerel için yeni bir sayı biçemleyici oluşturmak gerekir. NumberFormatter sınıfının yöntemleri kayan noktalı sayılar gibi ilkel sayı türlerini biçemler ve bunları yerele özgü dizgeler olarak çıktılar.

Paraları, uygun bir sayı ve para birimi simgesiyle biçemleyip bir dizge olarak döndürmek için bir biçemleyici oluşturmak amacıyla para biçemleme türü kullanılabilir. Şüphesiz, NumberFormatter sınıfı paralar arasındaki kıymet oranlarını bilmez ve belirtilen paranın değerini belirtilen yerele göre dönüştürmez. Yani para birimi ne olursa olsun para biriminin yanında hep belirtilen miktar görünür. 9988776.65 değeri için sonuçlar şöyle olabilir:

- Fransa'da 9 988 776,65 €
- Türkiye'de 9.988.776,65 YTL veya 9.988.776 TL
- ABD'de $9,988,776.65

Yüzdeleri biçemlemek için, yüzde biçemleme türü kullanılarak yerele özgü bir biçemleyici oluşturulur. Bu biçemleyici ile örneğin, 0.75 gibi bir ondalık sayı %75 olarak gösterilir.

Sayıların hecelenmesi gibi daha karmaşık biçemlemeler için kurala dayalı sayı biçemleyici kullanılır.

## Sınıf Sözdizimi

class NumberFormatter {
/* Sabitler */
public const int PATTERN_DECIMAL;
public const int DECIMAL;
public const int CURRENCY;
public const int PERCENT;
public const int SCIENTIFIC;
public const int SPELLOUT;
public const int ORDINAL;
public const int DURATION;
public const int PATTERN_RULEBASED;
public const int IGNORE;
public const int CURRENCY_ACCOUNTING;
public const int DEFAULT_STYLE;
public const int ROUND_CEILING;
public const int ROUND_FLOOR;
public const int ROUND_DOWN;
public const int ROUND_UP;
public const int ROUND_HALFEVEN;
public const int ROUND_HALFDOWN;
public const int ROUND_HALFUP;
public const int PAD_BEFORE_PREFIX;
public const int PAD_AFTER_PREFIX;
public const int PAD_BEFORE_SUFFIX;
public const int PAD_AFTER_SUFFIX;
public const int PARSE_INT_ONLY;
public const int GROUPING_USED;
public const int DECIMAL_ALWAYS_SHOWN;
public const int MAX_INTEGER_DIGITS;
public const int MIN_INTEGER_DIGITS;
public const int INTEGER_DIGITS;
public const int MAX_FRACTION_DIGITS;
public const int MIN_FRACTION_DIGITS;
public const int FRACTION_DIGITS;
public const int MULTIPLIER;
public const int GROUPING_SIZE;
public const int ROUNDING_MODE;
public const int ROUNDING_INCREMENT;
public const int FORMAT_WIDTH;
public const int PADDING_POSITION;
public const int SECONDARY_GROUPING_SIZE;
public const int SIGNIFICANT_DIGITS_USED;
public const int MIN_SIGNIFICANT_DIGITS;
public const int MAX_SIGNIFICANT_DIGITS;
public const int LENIENT_PARSE;
public const int POSITIVE_PREFIX;
public const int POSITIVE_SUFFIX;
public const int NEGATIVE_PREFIX;
public const int NEGATIVE_SUFFIX;
public const int PADDING_CHARACTER;
public const int CURRENCY_CODE;
public const int DEFAULT_RULESET;
public const int PUBLIC_RULESETS;
public const int DECIMAL_SEPARATOR_SYMBOL;
public const int GROUPING_SEPARATOR_SYMBOL;
public const int PATTERN_SEPARATOR_SYMBOL;
public const int PERCENT_SYMBOL;
public const int ZERO_DIGIT_SYMBOL;
public const int DIGIT_SYMBOL;
public const int MINUS_SIGN_SYMBOL;
public const int PLUS_SIGN_SYMBOL;
public const int CURRENCY_SYMBOL;
public const int INTL_CURRENCY_SYMBOL;
public const int MONETARY_SEPARATOR_SYMBOL;
public const int EXPONENTIAL_SYMBOL;
public const int PERMILL_SYMBOL;
public const int PAD_ESCAPE_SYMBOL;
public const int INFINITY_SYMBOL;
public const int NAN_SYMBOL;
public const int SIGNIFICANT_DIGIT_SYMBOL;
public const int MONETARY_GROUPING_SEPARATOR_SYMBOL;
public const int TYPE_DEFAULT;
public const int TYPE_INT32;
public const int TYPE_INT64;
public const int TYPE_DOUBLE;
public const int TYPE_CURRENCY;
/* Yöntemler */
public function __construct(string `$yerel`, int `$tür`, ?string `$kalıp` = `null`)
public static function create(string `$yerel`, int `$tür`, ?string `$kalıp` = `null`): ?NumberFormatter
public function format(int|float `$sayı`, int `$tür` = NumberFormatter::TYPE_DEFAULT): string|false
public function formatCurrency(float `$miktar`, string `$para_birimi`): string|false
public function getAttribute(int `$öznitelik`): int|float|false
public function getErrorCode(): int
public function getErrorMessage(): string
public function getLocale(int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false
public function getPattern(): string|false
public function getSymbol(int `$simge`): string|false
public function getTextAttribute(int `$öznitelik`): string|false
public function parse(string `$dizge`, int `$tür` = NumberFormatter::TYPE_DOUBLE, int `&$konum` = `null`): int|float|false
public function parseCurrency(string `$dizge`, string `&$para_simgesi`, int `&$konum` = `null`): float|false
public function setAttribute(int `$öznitelik`, int|float `$değer`): bool
public function setPattern(string `$kalıp`): bool
public function setSymbol(int `$simge`, string `$değer`): bool
public function setTextAttribute(int `$öznitelik`, string `$değer`): bool
}

## Öntanımlı Sabitler

## Biçem Türleri

Bu biçemler numfmt_create() işlevi tarafından biçemleyici türünü tanımlamak için kullanılırlar.

`NumberFormatter::PATTERN_DECIMAL`
  Şablona göre tanımlı ondalık biçem
`NumberFormatter::DECIMAL`
  Ondalık biçem
`NumberFormatter::CURRENCY`
  Para birimi biçemi
`NumberFormatter::PERCENT`
  Yüzde biçemi
`NumberFormatter::SCIENTIFIC`
  Bilimsel sayı gösterim biçemi
`NumberFormatter::SPELLOUT`
  Kurala dayalı heceleme biçemi
`NumberFormatter::ORDINAL`
  Kurala dayalı sıra gösterim biçemi
`NumberFormatter::DURATION`
  Kurala dayalı süre gösterim biçemi
`NumberFormatter::PATTERN_RULEBASED`
  Şablona göre tanımlı kurala dayalı biçem
`NumberFormatter::CURRENCY_ACCOUNTING`
  Muhasebe için para birimi biçemi, örneğin, negatif para birimi miktarı için `-$3.00` yerine `($3.00)` gibi. PHP 7.4.1 itibariyle ve ICU 53 ile kullanılabilir.
`NumberFormatter::DEFAULT_STYLE`
  Yerele özgü öntanımlı biçem
`NumberFormatter::IGNORE`
  PATTERN_DECIMAL için takma ad

## Sayı Biçemi Belirteçleri

Bu sabitler sayıların nasıl çözümlenip biçemleneceğini tanımlar. numfmt_format() ve numfmt_parse() işlevlerinin bağımsız değişkenleri olarak kullanılırlar.

`NumberFormatter::TYPE_DEFAULT`
  Türü değişken türünden türet
`NumberFormatter::TYPE_INT32`
  32 bitlik tamsayı olarak çözümle/biçemle
`NumberFormatter::TYPE_INT64`
  64 bitlik tamsayı olarak çözümle/biçemle
`NumberFormatter::TYPE_DOUBLE`
  Bir kayan noktalı sayı olarak çözümle/biçemle
`NumberFormatter::TYPE_CURRENCY`
  Para birimi olarak çözümle/biçemle. PHP 8.3.0'dan itibaren kullanımdan kaldırılmıştır

## Sayı Biçemi Öznitelikleri

numfmt_get_attribute() ve numfmt_set_attribute() işlevi tarafından kullanılan sayı biçemleme öznitelikleri:

`NumberFormatter::PARSE_INT_ONLY`
  Sadece tamsayıları çözümle.
`NumberFormatter::GROUPING_USED`
  Gruplama ayracı kullan.
`NumberFormatter::DECIMAL_ALWAYS_SHOWN`
  Ondalık noktayı daima göster.
`NumberFormatter::MAX_INTEGER_DIGITS`
  Azami tamsayı hane sayısı.
`NumberFormatter::MIN_INTEGER_DIGITS`
  Asgari tamsayı hane sayısı.
`NumberFormatter::INTEGER_DIGITS`
  Tamsayı hane sayısı.
`NumberFormatter::MAX_FRACTION_DIGITS`
  Ondalık kısım azami hane sayısı
`NumberFormatter::MIN_FRACTION_DIGITS`
  Ondalık kısım asgari hane sayısı.
`NumberFormatter::FRACTION_DIGITS`
  Ondalık kısım hane sayısı
`NumberFormatter::MULTIPLIER`
  Çarpan.
`NumberFormatter::GROUPING_SIZE`
  Grup genişliği.
`NumberFormatter::ROUNDING_MODE`
  Yuvarlama kipi.
`NumberFormatter::ROUNDING_INCREMENT`
  Yuvarlama artışı.
`NumberFormatter::FORMAT_WIDTH`
  Çıktı biçeminde dolgu genişliği.
`NumberFormatter::PADDING_POSITION`
  Dolgunun konumu. Olası değerler için dolgu konumlama sabitlerine bakınız.
`NumberFormatter::SECONDARY_GROUPING_SIZE`
  İkincil gruplama genişliği.
`NumberFormatter::SIGNIFICANT_DIGITS_USED`
  Kıymetli haneleri kullan.
`NumberFormatter::MIN_SIGNIFICANT_DIGITS`
  Asgari kıymetli hane sayısı.
`NumberFormatter::MAX_SIGNIFICANT_DIGITS`
  Azami kıymetli hane sayısı.
`NumberFormatter::LENIENT_PARSE`
  Kurala dayalı biçemlerde kullanılan esnek çözümleme kipi.

## Sayı Biçemi Metin Öznitelikleri

numfmt_get_text_attribute() ve numfmt_set_text_attribute() işlevlerinde kullanılan sayı biçemi metin öznitelikleri:

`NumberFormatter::POSITIVE_PREFIX`
  Pozitif öneki.
`NumberFormatter::POSITIVE_SUFFIX`
  Pozitif soneki.
`NumberFormatter::NEGATIVE_PREFIX`
  Negatif öneki.
`NumberFormatter::NEGATIVE_SUFFIX`
  Negatif soneki.
`NumberFormatter::PADDING_CHARACTER`
  Dolgu karakteri.
`NumberFormatter::CURRENCY_CODE`
  ISO para birimi.
`NumberFormatter::DEFAULT_RULESET`
  Öntanımlı kural kümesi. Sadece kurala dayalı biçemleyicilerle kullanılabilir.
`NumberFormatter::PUBLIC_RULESETS`
  Genel kural kümeleri. Sadece kurala dayalı biçemleyicilerle kullanılabilir. Salt okunur bir özniteliktir. Genel kural kümeleri, kural kümesi isimleri noktalı virgüllerle (;) ayrılarak tek bir dizge halinde gönderilir.

## Simge Biçemi Belirteçleri

numfmt_get_symbol() ve numfmt_set_symbol() işlevleri tarafından kullanılan sayı biçemleme simgeleri.

`NumberFormatter::DECIMAL_SEPARATOR_SYMBOL`
  Ondalık ayraç.
`NumberFormatter::GROUPING_SEPARATOR_SYMBOL`
  Gruplama ayracı.
`NumberFormatter::PATTERN_SEPARATOR_SYMBOL`
  Şablon ayracı.
`NumberFormatter::PERCENT_SYMBOL`
  Yüzde imi.
`NumberFormatter::ZERO_DIGIT_SYMBOL`
  Sıfır.
`NumberFormatter::DIGIT_SYMBOL`
  Şablonda bir rakamı ifade eden karakter.
`NumberFormatter::MINUS_SIGN_SYMBOL`
  Eksi imi.
`NumberFormatter::PLUS_SIGN_SYMBOL`
  Artı imi.
`NumberFormatter::CURRENCY_SYMBOL`
  Para birimi simgesi.
`NumberFormatter::INTL_CURRENCY_SYMBOL`
  Uluslararası para birimi simgesi.
`NumberFormatter::MONETARY_SEPARATOR_SYMBOL`
  Para ayracı.
`NumberFormatter::EXPONENTIAL_SYMBOL`
  Üstel imi.
`NumberFormatter::PERMILL_SYMBOL`
  Binde imi.
`NumberFormatter::PAD_ESCAPE_SYMBOL`
  Öncelem dolgu karakteri.
`NumberFormatter::INFINITY_SYMBOL`
  Sonsuz imi.
`NumberFormatter::NAN_SYMBOL`
  Bir-sayı-değil imi.
`NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL`
  Kıymetli hane imi.
`NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL`
  Para gruplama imi.

## Yuvarlama Kipleri

numfmt_get_attribute() ve numfmt_set_attribute() işlevleri tarafından `NumberFormatter::ROUNDING_MODE` özniteliği ile kullanılan yuvarlama kipi değerleri.

`NumberFormatter::ROUND_CEILING`
  Pozitif sonsuza yuvarlama kipi.
`NumberFormatter::ROUND_DOWN`
  Sıfıra yuvarlama kipi.
`NumberFormatter::ROUND_FLOOR`
  Negatif sonsuza yuvarlama kipi.
`NumberFormatter::ROUND_HALFDOWN`
  İki komşuya da eşit uzaklıkta olmamak koşuluyla aşağı yuvarlama kipi.
`NumberFormatter::ROUND_HALFEVEN`
  İki komşuya da eşit uzaklıkta olmamak koşuluyla çift sayılı komşuya yuvarlama kipi.
`NumberFormatter::ROUND_HALFUP`
  İki komşuya da eşit uzaklıkta olmamak koşuluyla yukarı yuvarlama kipi.
`NumberFormatter::ROUND_UP`
  Sıfırdan öteye yuvarlama kipi.

## Dolgu Belirteçleri

numfmt_get_attribute() ve numfmt_set_attribute() işlevleri tarafından `NumberFormatter::PADDING_POSITION` özniteliği ile birlikte kullanılan dolgu konumu değerleri:

`NumberFormatter::PAD_AFTER_PREFIX`
  Dolgu karakterlerini önekten sonra yerleştir.
`NumberFormatter::PAD_AFTER_SUFFIX`
  Dolgu karakterlerini sonekten sonra yerleştir.
`NumberFormatter::PAD_BEFORE_PREFIX`
  Dolgu karakterlerini önekten önce yerleştir.
`NumberFormatter::PAD_BEFORE_SUFFIX`
  Dolgu karakterlerini sonekten önce yerleştir.

## Ayrıca Bakınız

- » ICU biçemleme belgeleri
- » ICU sayı biçemleyicileri
- » ICU ondalık sayı biçemleyicileri
- » ICU kurala dayalı sayı biçemleyecileri

# NumberFormatter::create

# numfmt_create

# NumberFormatter::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::create -- numfmt_create -- NumberFormatter::__construct — Bir sayı biçemleyici oluşturur

### Açıklama

Nesne yönelimli kullanım

public static function NumberFormatter::create(string `$yerel`, int `$tür`, ?string `$kalıp` = `null`): ?NumberFormatter

Yordamsal kullanım

function numfmt_create(string `$yerel`, int `$tür`, ?string `$kalıp` = `null`): ?NumberFormatter

Nesne yönelimli kullanım (kurucu):

public function NumberFormatter::__construct(string `$yerel`, int `$tür`, ?string `$kalıp` = `null`)

Bir sayı biçemleyici oluşturur.

### Bağımsız Değişkenler

`yerel`

  Sayının biçemleneceği yerel (tr_TR gibi bir yerel ismi).

`tür`

  Biçemleyici türü sabitlerinden biri. Eğer değer olarak `NumberFormatter::PATTERN_DECIMAL` veya `NumberFormatter::PATTERN_RULEBASED` belirtilmişse, sayı biçemi, `numfmt_set_pattern` tarafından desteklenen kalıp karakterlerine veya » ICU RuleBasedNumberFormat belgesinde açıklanan sözdizimine uygun olarak belirtilen kalıba uygun olarak açılır.

`kalıp`

  Biçemleyici türünün bir kalıp gerektirmesi durumunda kalıp dizgesi.

### Dönen Değerler

Bir hata oluşursa `null`, aksi takdirde NumberFormatter nesnesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kalıp` artık `null` olabiliyor.

### Örnekler

Örnek 1 - numfmt_create() örneği

    <?php
    $fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    $fmt = numfmt_create( 'tr', NumberFormatter::SPELLOUT );
    echo numfmt_format($fmt, 1142)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt = new NumberFormatter( 'tr', NumberFormatter::SPELLOUT );
    echo $fmt->format(1142)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1.234.567,891
    bin yüz kırk iki

### Ayrıca Bakınız

- numfmt_format() - Bir sayıyı biçemler
- numfmt_parse() - Bir sayı dizgesini sayıya dönüştürür

# NumberFormatter::format

# numfmt_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::format -- numfmt_format — Bir sayıyı biçemler

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::format(int|float `$sayı`, int `$tür` = NumberFormatter::TYPE_DEFAULT): string|false

Yordamsal kullanım

function numfmt_format(NumberFormatter `$biçemleyici`, int|float `$sayı`, int `$tür` = NumberFormatter::TYPE_DEFAULT): string|false

Bir sayıyı biçemleyici kurallarına uygun olarak biçemler.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`sayı`

  Biçemlenecek sayı. int veya float türünde olabilir, diğer türler bir sayısal türe dönüştürülür.

`tür`

  Kullanılacak biçemleme türü. `NumberFormatter::TYPE_CURRENCY` sabitinin desteklenmediği unutulmamalı, yerine NumberFormatter::formatCurrency() kullanılmalıdır.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde biçemlenmiş değeri içeren dizge döner.

### Örnekler

Örnek 1 - numfmt_format() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    $data = numfmt_format($fmt, 1234567.891234567890000);
    if(intl_is_failure(numfmt_format($fmt))) {
        report_error("Biçemleyici hatası");
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    $fmt->format(1234567.891234567890000);
    if(intl_is_failure($fmt->getErrorCode())) {
        report_error("Biçemleyici hatası");
    }
    ?>

Yukarıdaki örneğin çıktısı:

    1.234.567,891

### Notlar

> Bilginize:

> Bu biçimlendirme yöntemiyle elde edilebilen biçimler, temel ICU kütüphanesinin, para birimini dar para birimi simgesiyle biçimlendirmek gibi, olanaklarını tam olarak kullanamaz.

> Tüm olanaklar için msgfmt_format_message() kullanılabilir.

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_format_currency() - Bir para değerini biçemler
- numfmt_parse() - Bir sayı dizgesini sayıya dönüştürür
- msgfmt_format_message() - İletiyi çabuk biçemler

# NumberFormatter::formatCurrency

# numfmt_format_currency

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::formatCurrency -- numfmt_format_currency — Bir para değerini biçemler

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::formatCurrency(float `$miktar`, string `$para_birimi`): string|false

Yordamsal kullanım

function numfmt_format_currency(NumberFormatter `$biçemleyici`, float `$miktar`, string `$para_birimi`): string|false

Biçemleyici kurallarına uygun olarak para miktarını biçemler.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`miktar`

  Sayısal olarak para miktarı.

`para_birimi`

  3 harfli ISO 4217 para birimi.

### Dönen Değerler

Biçemlenmiş para miktarı dizgesi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - numfmt_format_currency() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::CURRENCY );
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "TRL")."\n";
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "YTL")."\n\n";
    $fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "TRL")."\n";
    echo numfmt_format_currency($fmt, 1234567.891234567890000, "TRY")."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::CURRENCY );
    echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
    echo $fmt->formatCurrency(1234567.891234567890000, "TRL")."\n";
    echo $fmt->formatCurrency(1234567.891234567890000, "YTL")."\n\n";
    $fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
    echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
    echo $fmt->formatCurrency(1234567.891234567890000, "TRL")."\n";
    echo $fmt->formatCurrency(1234567.891234567890000, "TRY")."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    €1.234.567,89
    TRL 1.234.568
    YTL 1.234.567,89

    1.234.567,89 €
    1.234.568 TRL
    1.234.567,89 TRY

### Notlar

> Bilginize:

> Bu biçimlendirme yöntemiyle elde edilebilen biçimler, temel ICU kütüphanesinin, para birimini dar para birimi simgesiyle biçimlendirmek gibi, olanaklarını tam olarak kullanamaz.

> Tüm olanaklar için msgfmt_format_message() kullanılabilir.

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_format() - Bir sayıyı biçemler
- numfmt_parse_currency() - Bir para gösteriminin sayısal değeri ile döner
- msgfmt_format_message() - İletiyi çabuk biçemler

# NumberFormatter::getAttribute

# numfmt_get_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getAttribute -- numfmt_get_attribute — Bir sayısal öznitelikle döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getAttribute(int `$öznitelik`): int|float|false

Yordamsal kullanım

function numfmt_get_attribute(NumberFormatter `$biçemleyici`, int `$öznitelik`): int|float|false

Biçemleyici ile ilgili belirtilen sayısal özniteliğin değerini döndürür. Tamsayı hanelerin sayısı, sayısal bir öznitelik örneği olarak verilebilir.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`öznitelik`

  Öznitelik belirteci; sayısal öznitelik sabitlerinden biri.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde öznitelik değeri döner.

### Örnekler

Örnek 1 - numfmt_get_attribute() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Hane sayısı: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Hane sayısı: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Hane sayısı: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Hane sayısı: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Hane sayısı: 3
    1.234.567,891
    Hane sayısı: 2
    1.234.567,89

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_get_text_attribute() - Bir metin öznitelik ile döner
- numfmt_set_attribute() - Bir öznitelik tanımlar

# NumberFormatter::getErrorCode

# numfmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getErrorCode -- numfmt_get_error_code — Biçemleyicinin son hata numarası ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getErrorCode(): int

Yordamsal kullanım

function numfmt_get_error_code(NumberFormatter `$biçemleyici`): int

Biçimleyicinin çağrılan son işlevinden dönen hatanın numarasını döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

### Dönen Değerler

Biçimleyicinin çağrılan son işlevinden dönen hatanın numarası.

### Örnekler

Örnek 1 - numfmt_get_error_code() örneği

    <?php
    $fmt  = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    $data = numfmt_format($fmt, 1234567.891234567890000);
    if(intl_is_failure(numfmt_get_error_code($fmt))) {
        report_error("Biçemleyici hatası");
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    $fmt->format(1234567.891234567890000);
    if(intl_is_failure($fmt->getErrorCode())) {
        report_error("Biçemleyici hatası");
    }
    ?>

### Ayrıca Bakınız

- numfmt_get_error_message() - Biçemleyicinin son hata iletisini döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# NumberFormatter::getErrorMessage

# numfmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getErrorMessage -- numfmt_get_error_message — Biçemleyicinin son hata iletisini döndürür

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getErrorMessage(): string

Yordamsal kullanım

function numfmt_get_error_message(NumberFormatter `$biçemleyici`): string

Biçimleyicinin çağrılan son işlevinden dönen hatanın iletisini döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

### Dönen Değerler

Biçimleyicinin çalışan son işlevinden dönen hatanın iletisini döndürür.

### Örnekler

Örnek 1 - numfmt_get_error_message() örneği

    <?php
    $fmt = numfmt_create('tr_TR', NumberFormatter::DECIMAL);
    $data = numfmt_format($fmt, 1234567.891234567890000);
    var_dump(numfmt_get_error_message($fmt));
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter('tr_TR', NumberFormatter::DECIMAL);
    $fmt->format(1234567.891234567890000);
    var_dump(numfmt_get_error_message($fmt));
    ?>

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# NumberFormatter::getLocale

# numfmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getLocale -- numfmt_get_locale — Biçemleyici yerelin ismi ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getLocale(int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false

Yordamsal kullanım

function numfmt_get_locale(NumberFormatter `$biçemleyici`, int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false

Biçemleyici yerelin ismi ile döner.

### Bağımsız Değişkenler

`fmt`

  NumberFormatter nesnesi.

`tür`

  Geçerli yereli `Locale::VALID_LOCALE` sabitiyle fiili yereli `Locale::ACTUAL_LOCALE` sabitiyle belirtebilirsiniz. Fiili yerel öntanımlıdır.

### Dönen Değerler

Biçemleyici yerelin ismi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - numfmt_get_locale() örneği

    <?php
    $req     = 'tr_TR_OTTOMAN';
    $fmt     = numfmt_create( $req,  NumberFormatter::DECIMAL);
    $res_val = numfmt_get_locale( $fmt, Locale::VALID_LOCALE );
    $res_act = numfmt_get_locale( $fmt, Locale::ACTUAL_LOCALE );
    printf( "İstenen yerel ismi: %s\nGeçerli yerel ismi: %s\nFiili yerel ismi: %s\n",
             $req, $res_val, $res_act );
    ?>

Yukarıdaki örneğin çıktısı:

    İstenen yerel ismi: tr_TR_OTTOMAN
    Geçerli yerel ismi: tr_TR
    Fiili yerel ismi: tr

### Ayrıca Bakınız

- numfmt_create() - Bir sayı biçemleyici oluşturur
- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner

# NumberFormatter::getPattern

# numfmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getPattern -- numfmt_get_pattern — Biçemleyici tarafından kullanılan kalıp dizgesi ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getPattern(): string|false

Yordamsal kullanım

function numfmt_get_pattern(NumberFormatter `$biçemleyici`): string|false

Biçemleyici tarafından kullanılan kalıp dizgesi ile döner

### Bağımsız Değişkenler

`fmt`

  NumberFormatter nesnesi.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde biçemleyici tarafından kullanılan kalıp dizgesi ile döner.

### Örnekler

Örnek 1 - numfmt_get_pattern() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Kalıp: ".numfmt_get_pattern($fmt)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_pattern($fmt, "#0.# kg");
    echo "Kalıp: ".numfmt_get_pattern($fmt)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Kalıp: ".$fmt->getPattern()."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setPattern("#0.# kg");
    echo "Kalıp: ".$fmt->getPattern()."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Kalıp: #,##0.###
    1.234.567,891
    Kalıp: #0.# kg
    1234567,9 kg

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_set_pattern() - Biçemleyici kalıbı tanımlar
- numfmt_create() - Bir sayı biçemleyici oluşturur

# NumberFormatter::getSymbol

# numfmt_get_symbol

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getSymbol -- numfmt_get_symbol — Simge değeri ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getSymbol(int `$simge`): string|false

Yordamsal kullanım

function numfmt_get_symbol(NumberFormatter `$biçemleyici`, int `$simge`): string|false

Biçemleyici ile ilgili bir simge döndürür. Biçemleyici, bir sayıda yüzde imi gibi yerele bağlı karakterleri ifade eden simgeler kullanır. Bu arayüz, kurala dayalı biçemleyicileri desteklemez.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`simge`

  Biçem simgesi sabitlerinden biri olarak simge belirteci.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde simge dizgesi döner.

### Örnekler

Örnek 1 - numfmt_get_symbol() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Ayraç: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
    echo "Ayraç: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Ayraç: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
    echo "Ayraç: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Ayraç: .
    1.234.567,891
    Ayraç: *
    1*234*567,891

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_set_symbol() - Bir simge değeri tanımlar

# NumberFormatter::getTextAttribute

# numfmt_get_text_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::getTextAttribute -- numfmt_get_text_attribute — Bir metin öznitelik ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::getTextAttribute(int `$öznitelik`): string|false

Yordamsal kullanım

function numfmt_get_text_attribute(NumberFormatter `$biçemleyici`, int `$öznitelik`): string|false

Biçemleyici ile ilgili bir metin öznitelik değeri ile döner. Pozitif sayı soneki, bir metin öznitelik örneği olarak verilebilir. Eğer biçimleyici özniteliği anlamazsa `U_UNSUPPORTED_ERROR` hatası üretilir. Kurala dayalı biçemleyiciler sadece `NumberFormatter::DEFAULT_RULESET` ve `NumberFormatter::PUBLIC_RULESETS` kural kümeleridir.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`öznitelik`

  Öznitelik belirteci. Metin öznitelik sabitlerinden biri.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde öznitelik değeri döner.

### Örnekler

Örnek 1 - numfmt_get_text_attribute() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Önek: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo numfmt_format($fmt, -1234567.891234567890000)."\n";
    numfmt_set_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX, "EKSİ");
    echo "Önek: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo numfmt_format($fmt, -1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Önek: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo $fmt->format(-1234567.891234567890000)."\n";
    $fmt->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "EKSİ");
    echo "Önek: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo $fmt->format(-1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Önek: -
    -1.234.567,891
    Önek: EKSİ
    EKSİ1.234.567,891

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_get_attribute() - Bir sayısal öznitelikle döner
- numfmt_set_text_attribute() - Bir metin öznitelik tanımlar

# NumberFormatter::parse

# numfmt_parse

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::parse -- numfmt_parse — Bir sayı dizgesini sayıya dönüştürür

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::parse(string `$dizge`, int `$tür` = NumberFormatter::TYPE_DOUBLE, int `&$konum` = `null`): int|float|false

Yordamsal kullanım

function numfmt_parse(
NumberFormatter `$biçemleyici`,
string `$dizge`,
int `$tür` = NumberFormatter::TYPE_DOUBLE,
int `&$konum` = `null`
): int|float|false

Geçerli biçemleyici kurallarına uygun olarak bir dizgeyi bir sayıya çevirir.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`dizge`

  Sayıya dönüştürülecek dizge.

`tür`

  Kullanılacak biçemleme türü. Öntanımlı olarak, `NumberFormatter::TYPE_DOUBLE` kullanılır. `NumberFormatter::TYPE_CURRENCY` sabitinin desteklenmediği unutulmamalı, yerine NumberFormatter::parseCurrency() kullanılmalıdır.

`konum`

  Çözümlemenin başlatılacağı dizge konumu. İşlev döndüğünde bu bağımsız değişken çözümlemenin bittiği konumu gösterir.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde dönüştürülen sayı değeri döner.

### Örnekler

Örnek 1 - numfmt_parse() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    $num = "1.234.567,891";
    echo numfmt_parse($fmt, $num)."\n";
    echo numfmt_parse($fmt, $num, NumberFormatter::TYPE_INT32)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    $num = "1.234.567,891";
    echo $fmt->parse($num)."\n";
    echo $fmt->parse($num, NumberFormatter::TYPE_INT32)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1234567.891
    1234567

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_format() - Bir sayıyı biçemler
- numfmt_parse_currency() - Bir para gösteriminin sayısal değeri ile döner

# NumberFormatter::parseCurrency

# numfmt_parse_currency

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::parseCurrency -- numfmt_parse_currency — Bir para gösteriminin sayısal değeri ile döner

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::parseCurrency(string `$dizge`, string `&$para_simgesi`, int `&$konum` = `null`): float|false

Yordamsal kullanım

function numfmt_parse_currency(
NumberFormatter `$biçemleyici`,
string `$dizge`,
string `&$para_simgesi`,
int `&$konum` = `null`
): float|false

Geçerli biçemleyiciyi kullanarak, bir para dizgesini float türünde bir sayıya ve para birimine dönüştürür.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`dizge`

  Sayıya dönüştürülecek dizge.

`para_simgesi`

  Para biriminin döndürüleceği bağımsız değişken (3 harflik ISO 4217 para birimi).

`konum`

  Çözümlemenin başlatılacağı dizge konumu. İşlev döndüğünde bu bağımsız değişken çözümlemenin bittiği konumu gösterir.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde dönüştürülen sayı değeri döner.

### Örnekler

Örnek 1 - numfmt_parse_currency() örneği

    <?php
    $fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
    $num = "1.234.567,89\xc2\xa0$";
    echo "We have ".numfmt_parse_currency($fmt, $num, $curr)." in $curr\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
    $num = "1.234.567,89\xc2\xa0$";
    echo "We have ".$fmt->parseCurrency($num, $curr)." in $curr\n";
    ?>

Yukarıdaki örneğin çıktısı:

    We have 1234567.89 in USD

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_parse() - Bir sayı dizgesini sayıya dönüştürür
- numfmt_format_currency() - Bir para değerini biçemler

# NumberFormatter::setAttribute

# numfmt_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setAttribute -- numfmt_set_attribute — Bir öznitelik tanımlar

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::setAttribute(int `$öznitelik`, int|float `$değer`): bool

Yordamsal kullanım

function numfmt_set_attribute(NumberFormatter `$biçemleyici`, int `$öznitelik`, int|float `$değer`): bool

Biçemleyici ile ilgili sayısal bir özniteliğe bir değer tanımlar. Tamsayı hanelerin sayısı, sayısal bir öznitelik örneği olarak verilebilir.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`öznitelik`

  Öznitelik belirteci; sayısal öznitelik sabitlerinden biri.

`değer`

  Öznitelik değeri.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - numfmt_set_attribute() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Hane sayısı: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Hane sayısı: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Hane sayısı: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
    echo "Hane sayısı: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Hane sayısı: 3
    1.234.567,891
    Hane sayısı: 2
    1.234.567,89

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_get_attribute() - Bir sayısal öznitelikle döner
- numfmt_set_text_attribute() - Bir metin öznitelik tanımlar

# NumberFormatter::setPattern

# numfmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setPattern -- numfmt_set_pattern — Biçemleyici kalıbı tanımlar

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::setPattern(string `$kalıp`): bool

Yordamsal kullanım

function numfmt_set_pattern(NumberFormatter `$biçemleyici`, string `$kalıp`): bool

Biçemleyici tarafından kullanılan kalıbı tanımlar. Kurala dayalı biçemleyicilerde kullanılamaz.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`kalıp`

  numfmt_set_pattern() tarafından desteklenen kalıp karakterleri
  simge | Konum | Yerelleşti rilebilir mi | Açıklama
  --- | --- | --- | ---
  0 | Rakam | Evet | Rakam
  1-9 | Rakam | Evet | Yuvarlama belirten '1'den '9'a kadar rakam
  @ | Rakam | Hayır | Anlamlı hane.
  # | Rakam | Evet | Rakam; sıfır yokluk ifade eder.
  . | Rakam | Evet | Ondalık veya kuruş ayracı.
  - | Rakam | Evet | Eksi imi.
  , | Rakam | Evet | Gruplama ayracı.
  E | Rakam | Evet | Bilimsel gösterimde sayı ile üssü ayırır. Önek veya sonek içinde tırnak içine alınmaz.
  + | Üs | Evet | Yerelleştirilmiş artı imi ile potitif üs için önek. Önek veya sonek içinde tırnak içine alınmaz.
  ; | Alt kalıplar arasında | Evet | Pozitif ve negatif alt kalıpları ayırır.
  % | Önek veya sonek | Evet | 100 ile çarpma veya yüzde gösterimi.
  ‰ (\u2030) | Önek veya sonek | Evet | 1000 ile çarpma veya binde gösterimi.
  ¤ (\u00A4) | Önek veya sonek | Hayır | Tek olursa yerel para simgesi ile, çift olursa uluslararası para simgesi ile değiştirilir. Bu simgenin bulunduğu bir kalıpta ondalık ayraç yerine kuruş ayracı kullanılır.
  ' | Önek veya sonek | Hayır | Önek veya sonek içinde özel karakterleri tırnak içine almak için kullanılır. Örneğin, `"'#'#"` kalıbı 123 sayısını "#123" olarak biçemler. Tek tırnağın kendisini belirtmek için `"# o''clock"` örneğindeki gibi kendisiyle öncelenir.
  * | Önek veya sonek | Evet | Dolgu karakterini önceler.

  Ayrıca, » ICU DecimalFormat belgesinden de yararlanılabilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 numfmt_set_pattern() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Kalıp: ".numfmt_get_pattern($fmt)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_pattern($fmt, "#0.# kg");
    echo "Kalıp: ".numfmt_get_pattern($fmt)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Kalıp: ".$fmt->getPattern()."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setPattern("#0.# kg");
    echo "Kalıp: ".$fmt->getPattern()."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Kalıp: #,##0.###
    1.234.567,891
    Kalıp: #0.# kg
    1234567,9 kg

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_create() - Bir sayı biçemleyici oluşturur
- numfmt_get_pattern() - Biçemleyici tarafından kullanılan kalıp dizgesi ile döner

# NumberFormatter::setSymbol

# numfmt_set_symbol

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setSymbol -- numfmt_set_symbol — Bir simge değeri tanımlar

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::setSymbol(int `$simge`, string `$değer`): bool

Yordamsal kullanım

function numfmt_set_symbol(NumberFormatter `$biçemleyici`, int `$simge`, string `$değer`): bool

Bir biçemleyici ile ilgili bir simge tanımlar. Biçemleyici, bir sayıda yüzde imi gibi yerele bağlı karakterleri ifade eden simgeler kullanır. Bu arayüz, kurala dayalı biçemleyicileri desteklemez.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`simge`

  Biçem simgesi sabitlerinden biri olarak simge belirteci.

`değer`

  Simge için metin.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - numfmt_set_symbol() örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Ayraç: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    numfmt_set_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
    echo "Ayraç: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo numfmt_format($fmt, 1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Ayraç: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    $fmt->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
    echo "Ayraç: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
    echo $fmt->format(1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Ayraç: .
    1.234.567,891
    Ayraç: *
    1*234*567,891

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_get_symbol() - Simge değeri ile döner

# NumberFormatter::setTextAttribute

# numfmt_set_text_attribute

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::setTextAttribute -- numfmt_set_text_attribute — Bir metin öznitelik tanımlar

### Açıklama

Nesne yönelimli kullanım

public function NumberFormatter::setTextAttribute(int `$öznitelik`, string `$değer`): bool

Yordamsal kullanım

function numfmt_set_text_attribute(NumberFormatter `$biçemleyici`, int `$öznitelik`, string `$değer`): bool

Biçemleyici ile ilgili bir metin tanımlar. Bir metin özniteliğe bir örnek olarak pozitif sayı soneki gösterilebilir. Eğer biçemleyici özniteliği anlamazsa `U_UNSUPPORTED_ERROR` hatası üretilir. Kurala dayalı biçemleyiciler sadece `NumberFormatter::DEFAULT_RULESET` ve `NumberFormatter::PUBLIC_RULESETS` kural kümeleridir.

### Bağımsız Değişkenler

`biçemleyici`

  NumberFormatter nesnesi.

`öznitelik`

  Öznitelik belirteci. metin öznitelik sabitlerinden biri.

`değer`

  Öznitelik değeri için metin.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Yordamsal kullanım örneği

    <?php
    $fmt = numfmt_create( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Önek: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo numfmt_format($fmt, -1234567.891234567890000)."\n";
    numfmt_set_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX, "EKSİ");
    echo "Önek: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo numfmt_format($fmt, -1234567.891234567890000)."\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new NumberFormatter( 'tr_TR', NumberFormatter::DECIMAL );
    echo "Önek: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo $fmt->format(-1234567.891234567890000)."\n";
    $fmt->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "EKSİ");
    echo "Önek: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
    echo $fmt->format(-1234567.891234567890000)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Önek: -
    -1.234.567,891
    Önek: EKSİ
    EKSİ1.234.567,891

### Ayrıca Bakınız

- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner
- numfmt_get_text_attribute() - Bir metin öznitelik ile döner
- numfmt_set_attribute() - Bir öznitelik tanımlar

## İçindekiler

- NumberFormatter::create — Bir sayı biçemleyici oluşturur
- NumberFormatter::format — Bir sayıyı biçemler
- NumberFormatter::formatCurrency — Bir para değerini biçemler
- NumberFormatter::getAttribute — Bir sayısal öznitelikle döner
- NumberFormatter::getErrorCode — Biçemleyicinin son hata numarası ile döner
- NumberFormatter::getErrorMessage — Biçemleyicinin son hata iletisini döndürür
- NumberFormatter::getLocale — Biçemleyici yerelin ismi ile döner
- NumberFormatter::getPattern — Biçemleyici tarafından kullanılan kalıp dizgesi ile döner
- NumberFormatter::getSymbol — Simge değeri ile döner
- NumberFormatter::getTextAttribute — Bir metin öznitelik ile döner
- NumberFormatter::parse — Bir sayı dizgesini sayıya dönüştürür
- NumberFormatter::parseCurrency — Bir para gösteriminin sayısal değeri ile döner
- NumberFormatter::setAttribute — Bir öznitelik tanımlar
- NumberFormatter::setPattern — Biçemleyici kalıbı tanımlar
- NumberFormatter::setSymbol — Bir simge değeri tanımlar
- NumberFormatter::setTextAttribute — Bir metin öznitelik tanımlar

# Locale sınıfı

(No version information available, might only be in Git)

## Giriş

Bir yerel (Locale), API'den dili, kültürü ve bölgeye özge özellikleri öğrenmek için kullanılan bir betimleyicidir. PHP yerelleri ICU (ve birçok Unix benzeri sistem üreticisi, Mac, Java, vs.) tarafından kullanılan CLDR yerelleriyle aynı yöntemle düzenlenip betimlenirler. Yereller, (alt çizgi yerine tire kullanılan) RFC 4646 dil yaftalarına ek olarak daha geleneksel olan alt çizgi kullanan betimleyiciler kullanılarak da betimlenebilir. Aksi belirtilmedikçe bu sınıftaki işlevler her iki gösterim biçemine de duyarlıdır.

Yerel betimleyicileri için örnekler:

- tr-TR (Türkçe, Türkiye)
- zh-Hant-TW (Çince, Geleneksel Yazı, Tayvan)
- fr-CA, fr-FR (Kanada Fransızcası ve Fransa Fransızcası)

Locale sınıfı (ve ilgili yordamsal işlevler) yerel betimleyicileri ile etkileşim, bir betimleyicinin iyi biçimliliğini, geçerliliğini doğrulama, vs. için kullanılırlar. UAX #35'teki (ve ICU tarafından miras alınan) CLDR tarafından kullanılan eklentiler ICU'da da normal olarak geçerlidir ve kullanılırlar.

Locale sınıfı bir nesne olarak örneklenemez. Sağlanan tüm işlev/yöntemler duruktur.

Boş veya `null` dizge "kök" yerel olarak ele alınır ve CLDR'de "en_US_POSIX" yereline denktir. Dil yaftaları (ve dolayısıyla yerel betimleyicileri) harf büyüklüğüne duyarsızdır. Belirtimle harf eşleştirmesi yapacak bir meşrulaştırma işlevi mevcuttur.

## Sınıf Sözdizimi

class Locale {
/* Sabitler */
public const int ACTUAL_LOCALE;
public const int VALID_LOCALE;
public const null DEFAULT_LOCALE = null;
public const string LANG_TAG;
public const string EXTLANG_TAG;
public const string SCRIPT_TAG;
public const string REGION_TAG;
public const string VARIANT_TAG;
public const string GRANDFATHERED_LANG_TAG;
public const string PRIVATE_TAG;
/* Yöntemler */
public static function acceptFromHttp(string `$başlık`): string|false
public static function canonicalize(string `$locale`): ?string
public static function composeLocale(array `$alt_yaftalar`): string|false
public static function filterMatches(string `$dil_yaftası`, string `$yerel`, bool `$meşru` = `false`): ?bool
public static function getAllVariants(string `$yerel`): ?array
public static function getDefault(): string
public static function getDisplayLanguage(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false
public static function getDisplayName(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false
public static function getDisplayRegion(string `$ülke_yereli`, ?string `$adlandırma_yereli` = `null`): string|false
public static function getDisplayScript(string `$yazı_yereli`, ?string `$adlandırma_yereli` = `null`): string|false
public static function getDisplayVariant(string `$lehçe_yereli`, ?string `$adlandırma_yereli` = `null`): string|false
static function getKeywords(string `$yerel`): array|false|null
public static function getPrimaryLanguage(string `$yerel`): ?string
public static function getRegion(string `$yerel`): ?string
publicstatic function getScript(string `$yerel`): ?string
public static function isRightToLeft( string `$locale` = "" ): bool
public static function lookup(
array `$dil_yaftası`,
string `$yerel`,
bool `$meşru` = `false`,
?string `$öntanımlı_yerel` = `null`
): ?string
public static function parseLocale(string `$yerel`): ?array
public static function setDefault(string `$yerel`): bool
}

## Yerel Yaftaları

`Locale::DEFAULT_LOCALE`
  NumberFormatter gibi yereli etkileyen çeşitli sınıfların çeşitli yöntemlerinde yerel bağımsız değişkeni olarak kullanılır. Bu sabit, bu yöntemlerin öntanımlı yereli kullanmasını sağlar.

Bu sabitler çeşitli sınıfların getLocale yöntemleri için yerel seçimlerini belirler.

`Locale::ACTUAL_LOCALE`
  Asıl verinin geldiği yereldir.
`Locale::VALID_LOCALE`
  ICU tarafından desteklenen en geçerli yereldir.

## Yerel Alt Yaftaları

Bu sabitler, yerellerin nasıl çözümlenip oluşturulduğunu tanımlar. Bunların, locale_compose() işlevinin dizi bağımsız değişkeninde anahtar olarak kullanılması gerekir ve locale_parse() işlevinden dönen ilişkisel dizinin anahtarlarıdırlar.

`Locale::LANG_TAG`
  Dil alt yaftası
`Locale::EXTLANG_TAG`
  Ek dil alt yaftası
`Locale::SCRIPT_TAG`
  Yazı alt yaftası
`Locale::REGION_TAG`
  Bölge yaftası
`Locale::VARIANT_TAG`
  Lehçe alt yaftası
`Locale::GRANDFATHERED_LANG_TAG`
  Ebeveyn dil alt yaftası
`Locale::PRIVATE_TAG`
  Özel alt yafta

## Ayrıca Bakınız

- » RFC 4646 - Dilleri Betimleyen Yaftalar
- » RFC 4647 - Dil Yaftalarıyla Eşleşme
- » Unicode CLDR Projesi: Ortak Yerel Veri Deposu
- » IANA Dil Alt Yaftaları Kütüğü
- » ICU Kullanıcı Kılavuzu - Yerel
- » ICU Locale API'si

# Locale::acceptFromHttp

# locale_accept_from_http

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::acceptFromHttp -- locale_accept_from_http — HTTP "Accept-Language" başlığıyla en iyi eşleşen yereli bulmaya çalışır

### Açıklama

Nesne yönelimli kullanım

public static function Locale::acceptFromHttp(string `$başlık`): string|false

Yordamsal kullanım

function locale_accept_from_http(string `$başlık`): string|false

HTTP "Accept-Language" başlığında talep edilen dillerle en uyumlu yereli bulmaya çalışır.

### Bağımsız Değişkenler

`başlık`

  "Accept-Language" başlığını RFC 2616'daki biçeme uygun olarak içeren dizge .

### Dönen Değerler

Başlıkla eşleşen yerel.

`başlık` `INTL_MAX_LOCALE_LEN`'den uzunsa `false` döner.

### Örnekler

Örnek 1 - locale_accept_from_http() örneği

    <?php
    $locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
    echo $locale;
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
    echo $locale;
    ?>

Yukarıdaki örneğin çıktısı:

    tr_TR

### Ayrıca Bakınız

- locale_lookup() - En iyi eşleşen dili bulmak için dil yaftası listesini araştırır

# Locale::canonicalize

# locale_canonicalize

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::canonicalize -- locale_canonicalize — Canonicalize the locale string

### Açıklama

public static function Locale::canonicalize(string `$locale`): ?string

Canonicalizes the passed locale string to ICU format.

This does not necessarily indicate or return a valid locale. It is only a version of the input that has been canonicalized according to ICU rules.

The behavior of this function depends on the version of ICU PHP is using (`INTL_ICU_VERSION`).

### Bağımsız Değişkenler

`locale`
  Original locale string.

### Dönen Değerler

Canonicalized locale string.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 locale_canonicalize() example

    echo Locale::canonicalize('en-US.utf8') . "\n";
    echo Locale::canonicalize('totally-not-valid') . "\n";

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    en_US
    totally_NOT_VALID

# Locale::composeLocale

# locale_compose

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::composeLocale -- locale_compose — Doğru sıralanmış yerel ile döner

### Açıklama

Nesne yönelimli kullanım

public static function Locale::composeLocale(array `$alt_yaftalar`): string|false

Yordamsal kullanım

function locale_compose(array `$alt_yaftalar`): string|false

Anahtarların yerel alt yaftalarının betimleyicileri, değerlerin ise bu alt yaftalarla ilişkili değerler olduğu bir ilişkisel dizi ile belirtilen yereli bu alt yaftaları doğru sırayla birleştirerek oluşturur.

### Bağımsız Değişkenler

`alt_yaftalar`

  Anahtarların yerel alt yaftalarının betimleyicileri, değerlerin ise bu alt yaftalarla ilişkili değerler olduğu bir ilişkisel dizi.

  > Bilginize:

  > `'extlang'` anahtarı en fazla 3 değer alabilirken `'variant'` ve `'private'` alt yaftaları en fazla 15 değer alabilir ve 0-14 indislerine sahip olabilir. Bu bakımdan, girdi dizisindeki anahtarlar `variant0`, `variant1`, …, `variant14` olabilir. Döndürülen yerele bu yaftalar sonek olarak bu sırayla yerleştirilir.

  > `'variant'`, `'private'` ve `'extlang'` için çoklu değerler belli bir anahtarın (`'variant'` gibi) alt dizisi olarak (bu durumda alt yafta numara sınırlaması uygulanmaz) belirtilebileceği gibi `'variant0'`, `'variant1'`, şeklinde ayrı ayrı anahtar-değer çiftleriyle de belirtilebilir.

### Dönen Değerler

`alt_yaftalar` boşsa `false`, yoksa oluşturulan yerelin tanıtıcısı döner.

### Örnekler

Örnek 1 - locale_compose() örneği

    <?php
    $arr = array(
        'language'=>'en',
        'script'  =>'Hans',
        'region'  =>'CN',
        'variant2'=>'rozaj',
        'variant1'=>'nedis',
        'private1'=>'prv1',
        'private2'=>'prv2'
    );
    echo locale_compose($arr);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $arr = array(
        'language'=>'en',
        'script'  =>'Hans',
        'region'  =>'CN',
        'variant2'=>'rozaj',
        'variant1'=>'nedis',
        'private1'=>'prv1',
        'private2'=>'prv2'
    );
    echo Locale::composeLocale($arr);
    ?>

Yukarıdaki örneğin çıktısı:

    Locale: en_Hans_CN_nedis_rozaj_x_prv1_prv2

Örnek 3 - Alt yafta sınırlaması

`alt_yaftalar` numara sonlandırmalı olarak ayrı anahtarlar olarak belirtilirse, desteklenmeyen anahtarlar sessizce yok sayılır (bu durumda`'extlang3'`) ve sonuç numaralara göre sıralanır. Alt yaftalar bir dizi olarak belirtilirse sıralamaya numara sınırlaması uygulanmaz.

    <?php
    $arr = array(
        'language' => 'en',
        'script'   => 'Hans',
        'region'   => 'CN',
        'extlang3' => 'd',
        'extlang2' => 'c',
        'extlang1' => 'b',
        'extlang0' => 'a',
    );
    echo locale_compose($arr), PHP_EOL;

    $arr = array(
        'language' => 'en',
        'script'   => 'Hans',
        'region'   => 'CN',
        'extlang'  => ['a', 'b', 'c', 'd'],
    );
    echo locale_compose($arr), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    en_a_b_c_Hans_CN
    en_a_b_c_d_Hans_CN

### Ayrıca Bakınız

- locale_parse() - Yerel yaftasını oluşturan alt yaftaları içeren bir dizi döndürür

# Locale::filterMatches

# locale_filter_matches

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::filterMatches -- locale_filter_matches — Bir dil yaftasının bir yerelle eşleşip eşleşmediğine bakar

### Açıklama

Nesne yönelimli kullanım

public static function Locale::filterMatches(string `$dil_yaftası`, string `$yerel`, bool `$meşru` = `false`): ?bool

Yordamsal kullanım

function locale_filter_matches(string `$dil_yaftası`, string `$yerel`, bool `$meşru` = `false`): ?bool

RFC 4647'nin temel süzme algoritmasına göre `dil_yaftası`nın `yerel` ile eşleşip eşleşmediğine bakar.

### Bağımsız Değişkenler

`dil_yaftası`

  Sınanacak dil yaftası.

`yerel`

  Dil yaftasının sınanacağı yerel.

`meşru`

  `true` ise bağımsız değişkenler eşleştirilmeden önce meşru biçeme dönüştürülür.

### Dönen Değerler

`dil_yaftası` ile `yerel` eşleşirse `true` eşleşmezse `false` döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 - locale_filter_matches() örneği

    <?php
    echo (locale_filter_matches('de-DEVA','de-DE', false)) ?
              "Eşleşir" : "Eşleşmez";
    echo '; ';
    echo (locale_filter_matches('de-DE_1996','de-DE', false)) ?
              "Eşleşir" : "Eşleşmez";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo (Locale::filterMatches('de-DEVA','de-DE', false)) ?
              "Eşleşir" : "Eşleşmez";
    echo '; ';
    echo (Locale::filterMatches('de-DE-1996','de-DE', false)) ?
              "Eşleşir" : "Eşleşmez";
    ?>

Yukarıdaki örneğin çıktısı:

    Eşleşmez; Eşleşir

### Ayrıca Bakınız

- locale_lookup() - En iyi eşleşen dili bulmak için dil yaftası listesini araştırır

# Locale::getAllVariants

# locale_get_all_variants

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getAllVariants -- locale_get_all_variants — Girdi yerelindeki tüm lehçeleri döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getAllVariants(string `$yerel`): ?array

Yordamsal kullanım

function locale_get_all_variants(string `$yerel`): ?array

Girdi yerelindeki tüm lehçeleri döndürür.

### Bağımsız Değişkenler

`yerel`

  Lehçelerin çıkarılacağı yerel.

### Dönen Değerler

Varsa girdi yerelindeki tüm lehçeler bir dizi içinde döner, yoksa `null` döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 - locale_get_all_variants() örneği

    <?php
    $arr = locale_get_all_variants('sl_IT_NEDIS_ROJAZ_1901');
    var_export( $arr );
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $arr = Locale::getAllVariants('sl_IT_NEDIS_ROJAZ_1901');
    var_export( $arr );
    ?>

Yukarıdaki örneğin çıktısı:

    array (
        0 => 'NEDIS',
        1 => 'ROJAZ',
        2 => '1901',
    )

### Ayrıca Bakınız

- locale_get_primary_language() - Girdi yerelinden anadil kodunu döndürür
- locale_get_script() - Girdi yereli için yazı yaftasını döndürür
- locale_get_region() - Girdi yerelinden ülke kodunu döndürür

# Locale::getDefault

# locale_get_default

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDefault -- locale_get_default — Öntanımlı yerel değerini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDefault(): string

Yordamsal kullanım

function locale_get_default(): string

Küresel 'default_locale' değişkenindeki öntanımlı yerel değerini döndürür. Bu değer PHP yapılandırması sırasında php.ini dosyasında intl.default_locale yönergesine atanır. Öntanımlı yerel, php.ini dosyasında belirtilmemişse ICU'nun uloc_getDefault() işlevi kullanılır.

### Bağımsız Değişkenler

### Dönen Değerler

Geçerli çalışma anı yereli.

### Örnekler

Örnek 1 - locale_get_default() örneği

    <?php
    ini_set('intl.default_locale', 'tr-TR');
    echo locale_get_default();
    echo '; ';
    locale_set_default('en');
    echo locale_get_default();
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    ini_set('intl.default_locale', 'tr-TR');
    echo Locale::getDefault();
    echo '; ';
    Locale::setDefault('en');
    echo Locale::getDefault();
    ?>

Yukarıdaki örneğin çıktısı:

    tr-TR; en

### Ayrıca Bakınız

- locale_set_default() - Öntanımlı çalışma anı yerelini tanımlar

# Locale::getDisplayLanguage

# locale_get_display_language

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayLanguage -- locale_get_display_language — Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDisplayLanguage(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false

Yordamsal kullanım

function locale_get_display_language(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false

Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür. `adlandırma_yereli` `null` ise öntanımlı yerel kullanılır.

### Bağımsız Değişkenler

`hedef_yerel`

  Anadil adı döndürülecek yerel.

`adlandırma_yereli`

  İsteğe bağlı olarak anadil isminin gösteriminde kullanılacak yerel.

### Dönen Değerler

`hedef_yerel` ile belirtilen yerelin anadil kodunun `adlandırma_yereli` ile belirtilen yereldeki ismi döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `adlandırma_yereli` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_get_display_language() örneği

    <?php
    echo locale_get_display_language('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo locale_get_display_language('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo locale_get_display_language('sl-Latn-IT-nedis', 'tr');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'tr');
    ?>

Yukarıdaki örneğin çıktısı:

    Slovenian;
    slovène;
    Slovence

### Ayrıca Bakınız

- locale_get_display_name() - Girdi yerelinin yerelleştirilmiş ismini döndürür
- locale_get_display_script() - Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
- locale_get_display_region() - Girdi yereli için yerelleştirilmiş ülke ismini döndürür
- locale_get_display_variant() - Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür

# Locale::getDisplayName

# locale_get_display_name

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayName -- locale_get_display_name — Girdi yerelinin yerelleştirilmiş ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDisplayName(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false

Yordamsal kullanım

function locale_get_display_name(string `$hedef_yerel`, ?string `$adlandırma_yereli` = `null`): string|false

Girdi yerelinin yerelleştirilmiş ismini döndürür. `adlandırma_yereli` `null` ise öntanımlı yerel kullanılır.

### Bağımsız Değişkenler

`hedef_yerel`

  İsmi gösterilecek yerel.

`adlandırma_yereli`

  İsteğe bağlı olarak yerel isminin gösteriminde kullanılacak yerel.

### Dönen Değerler

`hedef_yerel` ile belirtilen yerelin `adlandırma_yereli` ile belirtilen yereldeki ismi döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `adlandırma_yereli` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_get_display_name() örneği

    <?php
    echo locale_get_display_name('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo locale_get_display_name('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo locale_get_display_name('sl-Latn-IT-nedis', 'tr');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getDisplayName('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo Locale::getDisplayName('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo Locale::getDisplayName('sl-Latn-IT-nedis', 'tr');
    ?>

Yukarıdaki örneğin çıktısı:

    Slovenian (Latin, Italy, Natisone dialect);
    slovène (latin, Italie, dialecte de Natisone);
    Slovence (Latin, İtalya, Natisone Lehçesi)

### Ayrıca Bakınız

- locale_get_display_language() - Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
- locale_get_display_script() - Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
- locale_get_display_region() - Girdi yereli için yerelleştirilmiş ülke ismini döndürür
- locale_get_display_variant() - Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür

# Locale::getDisplayRegion

# locale_get_display_region

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayRegion -- locale_get_display_region — Girdi yereli için yerelleştirilmiş ülke ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDisplayRegion(string `$ülke_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Yordamsal kullanım

function locale_get_display_region(string `$ülke_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Girdi yereli için yerelleştirilmiş ülke ismini döndürür. `adlandırma_yereli` `null` ise öntanımlı yerel kullanılır.

### Bağımsız Değişkenler

`ülke_yereli`

  Ülke ismi gösterilecek yerel.

`adlandırma_yereli`

  İsteğe bağlı olarak ülke isminin gösteriminde kullanılacak yerel.

### Dönen Değerler

`ülke_yereli` bağımsız değişkenindeki yerel yaftasında belirtilen ülke isminin `adlandırma_yereli` ile belirtilen yereldeki karşılığı döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `adlandırma_yereli` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_get_display_region() örneği

    <?php
    echo locale_get_display_region('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo locale_get_display_region('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo locale_get_display_region('sl-Latn-IT-nedis', 'tr');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'tr');
    ?>

Yukarıdaki örneğin çıktısı:

    Italy;
    Italie;
    İtalya

### Ayrıca Bakınız

- locale_get_display_name() - Girdi yerelinin yerelleştirilmiş ismini döndürür
- locale_get_display_language() - Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
- locale_get_display_script() - Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
- locale_get_display_variant() - Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür

# Locale::getDisplayScript

# locale_get_display_script

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayScript -- locale_get_display_script — Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDisplayScript(string `$yazı_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Yordamsal kullanım

function locale_get_display_script(string `$yazı_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür. `adlandırma_yereli` `null` ise öntanımlı yerel kullanılır.

### Bağımsız Değişkenler

`yazı_yereli`

  Yazı türü gösterilecek yerel.

`adlandırma_yereli`

  İsteğe bağlı olarak yazı isminin gösteriminde kullanılacak yerel.

### Dönen Değerler

`yazı_yereli` bağımsız değişkenindeki yerel yaftasında belirtilen yazı isminin `adlandırma_yereli` ile belirtilen yereldeki karşılığı döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `adlandırma_yereli` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_get_display_script() örneği

    <?php
    echo locale_get_display_script('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo locale_get_display_script('sl-Latn-IT-nedis', 'de');
    echo ";\n";
    echo locale_get_display_script('sl-Latn-IT-nedis', 'tr');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'de');
    echo ";\n";
    echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'tr');
    ?>

Yukarıdaki örneğin çıktısı:

    Latin;
    Lateinisch;
    Latin

### Ayrıca Bakınız

- locale_get_display_name() - Girdi yerelinin yerelleştirilmiş ismini döndürür
- locale_get_display_language() - Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
- locale_get_display_region() - Girdi yereli için yerelleştirilmiş ülke ismini döndürür
- locale_get_display_variant() - Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür

# Locale::getDisplayVariant

# locale_get_display_variant

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getDisplayVariant -- locale_get_display_variant — Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getDisplayVariant(string `$lehçe_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Yordamsal kullanım

function locale_get_display_variant(string `$lehçe_yereli`, ?string `$adlandırma_yereli` = `null`): string|false

Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür. `adlandırma_yereli` `null` ise öntanımlı yerel kullanılır.

### Bağımsız Değişkenler

`lehçe_yereli`

  Lehçe ismi döndürülecek yerel.

`adlandırma_yereli`

  İsteğe bağlı olarak lehçe isminin gösteriminde kullanılacak yerel.

### Dönen Değerler

`lehçe_yereli` ile belirtilen yerel yaftasında belirtilen lehçe isminin `adlandırma_yereli` ile belirtilen yereldeki karşılığı döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `adlandırma_yereli` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_get_display_variant() örneği

    <?php
    echo locale_get_display_variant('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo locale_get_display_variant('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo locale_get_display_variant('sl-Latn-IT-nedis', 'tr');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'en');
    echo ";\n";
    echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'fr');
    echo ";\n";
    echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'tr');
    ?>

Yukarıdaki örneğin çıktısı:

    Natisone dialect;
    dialecte de Natisone;
    Natisone Lehçesi

### Ayrıca Bakınız

- locale_get_display_name() - Girdi yerelinin yerelleştirilmiş ismini döndürür
- locale_get_display_language() - Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
- locale_get_display_script() - Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
- locale_get_display_region() - Girdi yereli için yerelleştirilmiş ülke ismini döndürür

# Locale::getKeywords

# locale_get_keywords

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getKeywords -- locale_get_keywords — Girdi yerelindeki anahtar sözcükleri döndürür

### Açıklama

Nesne yönelimli kullanım

static function Locale::getKeywords(string `$yerel`): array|false|null

Yordamsal kullanım

function locale_get_keywords(string `$yerel`): array|false|null

Girdi yerelindeki anahtar sözcükleri döndürür.

### Bağımsız Değişkenler

`yerel`

  Anahtar sözcüklerin çıkarılacağı yerel.

### Dönen Değerler

Belirtilen yerel ile ilgili anahtar-değer çiftlerini içeren bir ilişkisel dizi döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 - locale_get_keywords() örneği

    <?php
    $keywords_arr = locale_get_keywords('de_DE@currency=EUR;collation=PHONEBOOK');
    if ($keywords_arr) {
        foreach ($keywords_arr as $key => $value) {
            echo "$key = $value\n";
        }
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $keywords_arr = Locale::getKeywords('de_DE@currency=EUR;collation=PHONEBOOK');
    if ($keywords_arr) {
        foreach ($keywords_arr as $key => $value){
            echo "$key = $value\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    collation = PHONEBOOK
    currency = EUR

### Ayrıca Bakınız

- locale_get_all_variants() - Girdi yerelindeki tüm lehçeleri döndürür

# Locale::getPrimaryLanguage

# locale_get_primary_language

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getPrimaryLanguage -- locale_get_primary_language — Girdi yerelinden anadil kodunu döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getPrimaryLanguage(string `$yerel`): ?string

Yordamsal kullanım

function locale_get_primary_language(string `$yerel`): ?string

Girdi yerelinde belirtilen anadil kodunu döndürür.

### Bağımsız Değişkenler

`yerel`

  Anadil kodu çıkarılacak yerel.

### Dönen Değerler

Varsa anadil kodu döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 - locale_get_primary_language() örneği

    <?php
    echo locale_get_primary_language('zh-Hant');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getPrimaryLanguage('zh-Hant');
    ?>

Yukarıdaki örneğin çıktısı:

    zh

### Ayrıca Bakınız

- locale_get_script() - Girdi yereli için yazı yaftasını döndürür
- locale_get_region() - Girdi yerelinden ülke kodunu döndürür
- locale_get_all_variants() - Girdi yerelindeki tüm lehçeleri döndürür

# Locale::getRegion

# locale_get_region

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getRegion -- locale_get_region — Girdi yerelinden ülke kodunu döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::getRegion(string `$yerel`): ?string

Yordamsal kullanım

function locale_get_region(string `$yerel`): ?string

Girdi yerelinde belirtilen ülke kodunu döndürür

### Bağımsız Değişkenler

`yerel`

  Ülke kodu çıkarılacak yerel.

### Dönen Değerler

Varsa ülke alt yaftası, yoksa `null` döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Örnekler

Örnek 1 - locale_get_region() örneği

    <?php
    echo locale_get_region('de-CH-1901');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getRegion('de-CH-1901');
    ?>

Yukarıdaki örneğin çıktısı:

    CH

### Ayrıca Bakınız

- locale_get_primary_language() - Girdi yerelinden anadil kodunu döndürür
- locale_get_script() - Girdi yereli için yazı yaftasını döndürür
- locale_get_all_variants() - Girdi yerelindeki tüm lehçeleri döndürür

# Locale::getScript

# locale_get_script

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::getScript -- locale_get_script — Girdi yereli için yazı yaftasını döndürür

### Açıklama

Nesne yönelimli kullanım

publicstatic function Locale::getScript(string `$yerel`): ?string

Yordamsal kullanım

function locale_get_script(string `$yerel`): ?string

Girdi yereli için yazı yaftasını döndürür.

### Bağımsız Değişkenler

`yerel`

  Yazı alt yaftası çıkarılacak yerel.

### Dönen Değerler

Varsa yazı alt yaftası, yoksa `null` döner.

### Örnekler

Örnek 1 locale_get_script() örneği

    <?php
    echo locale_get_script('sr-Cyrl');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    echo Locale::getScript('sr-Cyrl');
    ?>

Yukarıdaki örneğin çıktısı:

    Cyrl

### Ayrıca Bakınız

- locale_get_primary_language() - Girdi yerelinden anadil kodunu döndürür
- locale_get_region() - Girdi yerelinden ülke kodunu döndürür
- locale_get_all_variants() - Girdi yerelindeki tüm lehçeleri döndürür

# Locale::isRightToLeft

(No version information available, might only be in Git)

Locale::isRightToLeft — Check whether a locale uses a right-to-left writing system

### Açıklama

public static function Locale::isRightToLeft( string `$locale` = "" ): bool

Determines whether a locale uses a right-to-left writing system.

This method relies on the ICU library and evaluates the dominant script associated with the locale.

If an empty string is provided, the default locale is used.

### Bağımsız Değişkenler

`locale`
  The locale identifier. If empty, the default locale is used.

### Dönen Değerler

Returns `true` if the locale uses a right-to-left writing system, or `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.5.0 | Added Locale::isRightToLeft().

### Örnekler

Örnek 1 Checking text direction for a locale

    <?php

    var_dump(Locale::isRightToLeft('en-US'));
    var_dump(Locale::isRightToLeft('ar'));

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)

# Locale::lookup

# locale_lookup

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::lookup -- locale_lookup — En iyi eşleşen dili bulmak için dil yaftası listesini araştırır

### Açıklama

Nesne yönelimli kullanım

public static function Locale::lookup(
array `$dil_yaftası`,
string `$yerel`,
bool `$meşru` = `false`,
?string `$öntanımlı_yerel` = `null`
): ?string

Yordamsal kullanım

function locale_lookup(
array `$dil_yaftası`,
string `$yerel`,
bool `$meşru` = `false`,
?string `$öntanımlı_yerel` = `null`
): ?string

RFC 4647'nin arama algoritmasına uygun olarak, `yerel` ile belirtilen dil aralığı ile en iyi eşleşen dil yaftasını `dil_yaftası` içindeki öğeler arasında arar.

### Bağımsız Değişkenler

`dil_yaftası`

  `yerel` ile karşılaştırılacak dil yaftalarının listesini içeren bir dizi. En fazya 100 öğeye izin verilir.

`yerel`

  Dil aralığını eşleştirmek için kullanılacak yerel.

`meşru`

  `true` ise bağımsız değişkenler eşleştirilmeden önce meşru biçeme dönüştürülür.

`öntanımlı_yerel`

  Bir eşleşme bulunamadığı takdirde kullanılacak yerel.

### Dönen Değerler

Bulunduğu takdirde en iyi eşleşen dil yaftası, aksi takdirde öntanımlı değer döner.

`yerel` `INTL_MAX_LOCALE_LEN`'den uzunsa `null` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `öntanımlı_yerel` artık `null` olabiliyor.

### Örnekler

Örnek 1 - locale_lookup() örneği

    <?php
    $arr = array(
        'de-DEVA',
        'de-DE-1996',
        'de',
        'de-De'
    );
    echo locale_lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $arr = array(
        'de-DEVA',
        'de-DE-1996',
        'de',
        'de-De'
    );
    echo Locale::lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
    ?>

Yukarıdaki örneğin çıktısı:

    de_de_1996

### Ayrıca Bakınız

- locale_filter_matches() - Bir dil yaftasının bir yerelle eşleşip eşleşmediğine bakar

# Locale::parseLocale

# locale_parse

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::parseLocale -- locale_parse — Yerel yaftasını oluşturan alt yaftaları içeren bir dizi döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Locale::parseLocale(string `$yerel`): ?array

Yordamsal kullanım

function locale_parse(string `$yerel`): ?array

Yerel alt yaftalarını anahtar-değer çiftleri halinde içeren bir dizi döndürür.

### Bağımsız Değişkenler

`yerel`

  Alt yafta dizisi çıkarılacak yerel. Bilginize: 'extlang' anahtarı en fazla 3 değer alabilirken 'variant' ve 'private' alt yaftaları en fazla 15 değer alabilir.

### Dönen Değerler

Anahtarların yerel alt yaftalarının betimleyicileri, değerlerin ise bu alt yaftalarla ilişkili değerler olduğu bir ilişkisel dizi ile döner. Dizi içeriği yerel alt yaftaların yerel değerindeki belirtiliş sırasına göre oluşturulur. Örneğin, alt yaftalar '-varX-varY-varZ' biçiminde belirtilmişse, dönen dizi şunları içerecektir: variant0=>varX , variant1=>varY , variant2=>varZ

`yerel` uzunluğu `INTL_MAX_LOCALE_LEN`'den büyükse `null` döner.

### Örnekler

Örnek 1 - locale_parse() örneği

    <?php
    $arr = locale_parse('sl-Latn-IT-nedis');
    if ($arr) {
        foreach ($arr as $key => $value) {
            echo "$key : $value , ";
        }
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $arr = Locale::parseLocale('sl-Latn-IT-nedis');
    if ($arr) {
        foreach ($arr as $key => $value) {
            echo "$key : $value , ";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    language : sl , script : Latn , region : IT , variant0 : NEDIS ,

### Ayrıca Bakınız

- locale_compose() - Doğru sıralanmış yerel ile döner

# Locale::setDefault

# locale_set_default

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::setDefault -- locale_set_default — Öntanımlı çalışma anı yerelini tanımlar

### Açıklama

Nesne yönelimli kullanım

public static function Locale::setDefault(string `$yerel`): bool

Yordamsal kullanım

function locale_set_default(string `$yerel`): bool

Öntanımlı çalışma anı yerelini `yerel` olarak tanımlar. Bu değişiklik, küresel 'default_locale' INTL yerel betimleyicisinin değerini ayarlar. UAX #35 uzantıları kabul edilir.

### Bağımsız Değişkenler

`yerel`

  BCP 47 uyumlu bir dil yaftası.

### Dönen Değerler

`true` döner.

### Örnekler

Örnek 1 - locale_set_default() örneği

    <?php
    locale_set_default('tr-TR');
    echo locale_get_default();
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    Locale::setDefault('tr-TR');
    echo Locale::getDefault();
    ?>

Yukarıdaki örneğin çıktısı:

    tr-TR

### Ayrıca Bakınız

- locale_get_default() - Öntanımlı yerel değerini döndürür

## İçindekiler

- Locale::acceptFromHttp — HTTP "Accept-Language" başlığıyla en iyi eşleşen yereli bulmaya çalışır
- Locale::canonicalize — Canonicalize the locale string
- Locale::composeLocale — Doğru sıralanmış yerel ile döner
- Locale::filterMatches — Bir dil yaftasının bir yerelle eşleşip eşleşmediğine bakar
- Locale::getAllVariants — Girdi yerelindeki tüm lehçeleri döndürür
- Locale::getDefault — Öntanımlı yerel değerini döndürür
- Locale::getDisplayLanguage — Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
- Locale::getDisplayName — Girdi yerelinin yerelleştirilmiş ismini döndürür
- Locale::getDisplayRegion — Girdi yereli için yerelleştirilmiş ülke ismini döndürür
- Locale::getDisplayScript — Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
- Locale::getDisplayVariant — Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür
- Locale::getKeywords — Girdi yerelindeki anahtar sözcükleri döndürür
- Locale::getPrimaryLanguage — Girdi yerelinden anadil kodunu döndürür
- Locale::getRegion — Girdi yerelinden ülke kodunu döndürür
- Locale::getScript — Girdi yereli için yazı yaftasını döndürür
- Locale::isRightToLeft — Check whether a locale uses a right-to-left writing system
- Locale::lookup — En iyi eşleşen dili bulmak için dil yaftası listesini araştırır
- Locale::parseLocale — Yerel yaftasını oluşturan alt yaftaları içeren bir dizi döndürür
- Locale::setDefault — Öntanımlı çalışma anı yerelini tanımlar

# Normalizer sınıfı

(No version information available, might only be in Git)

## Giriş

Normalleştirme, karakterlerin ve karakter dizilimlerinin biçemsel olarak tanımlanmış temel bir gösterim oluşturacak şekilde dönüştürülme işlemidir. Bu işlem, bir metin aranırken veya sıralanırken gereken karşılaştırma ihtiyaçlarının karşılanması için çok önemli olup bunun yanında, metnin saklanması sırasında metnin uygun gösterimle saklandığından emin olunmasını da sağlar.

Unicode Konsorsiyumu, uygulamaların çeşitli ihtiyaçlarını karşılamak üzere bazı normalleştirme biçimleri tanımlamıştır:

- Normalleştirme Biçimi D (NFD) - Normal Ayrıştırma
- Normalleştirme Biçimi C (NFC) - Normal Ayrıştırmayı izleyen Normal Birleştirme
- Normalleştirme Biçimi KD (NFKD) - Uyumluluk Ayrıştırması
- Normalleştirme Biçimi KC (NFKC) - Uyumluluk Ayrıştırmasını izleyen Normal Birleştirme

Farklı biçimler, metin üzerindeki dünüşüm kümesinin kurallarına uygun olarak tanımlanır, dönüşümler ise hem bir algoritma hem de bir veri dosyaları kümesi olarak ifade edilir.

## Sınıf Sözdizimi

class Normalizer {
/* Sabitler */
public const int FORM_D;
public const int NFD;
public const int FORM_KD;
public const int NFKD;
public const int FORM_C;
public const int NFC;
public const int FORM_KC;
public const int NFKC;
public const int FORM_KC_CF;
public const int NFKC_CF;
/* Yöntemler */
public static function getRawDecomposition(string `$string`, int `$form` = `Normalizer::FORM_C`): ?string
public static function isNormalized(string `$dizge`, int `$biçim` = Normalizer::FORM_C): bool
public static function normalize(string `$dizge`, int `$biçim` = Normalizer::FORM_C): string|false
}

## Öntanımlı Sabitler

Aşağıdaki sabitler normalleştirici tarafından kullanılan normalleştirme biçimlerini tanımlar:

`Normalizer::FORM_C`
  Normalleştirme Biçimi C (NFC) - Normal Ayrıştırmayı izleyen Normal Birleştirme
`Normalizer::FORM_D`
  Normalleştirme Biçimi D (NFD) - Normal Ayrıştırma
`Normalizer::NFD`

`Normalizer::FORM_KC`
  Normalleştirme Biçimi KC (NFKC) -Uyumluluk Ayrıştırmasını izleyen Normal Birleştirme
`Normalizer::NFKC`

`Normalizer::FORM_KC_CF`

`Normalizer::FORM_KD`
  Normalleştirme Biçimi KD (NFKD) - Uyumluluk Ayrıştırması
`Normalizer::NFKD`

`Normalizer::NFC`

`Normalizer::NFKC_CF`

## Ayrıca Bakınız

- » Evrenkod Normalleştirmesi
- » Evrenkod Normalleştirme SSS'si
- » ICU Kullanıcı Kılavuzu - Normalleştirme
- » ICU API Başvuru Kılavuzu - Normalleştirme

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `Normalizer::NONE` kaldırıldı.

# Normalizer::getRawDecomposition

# normalizer_get_raw_decomposition

(PHP 7 >= 7.3, PHP 8)

Normalizer::getRawDecomposition -- normalizer_get_raw_decomposition — Gets the Decomposition_Mapping property for the given UTF-8 encoded code point

### Açıklama

Nesne yönelimli kullanım

public static function Normalizer::getRawDecomposition(string `$string`, int `$form` = `Normalizer::FORM_C`): ?string

Yordamsal kullanım

function normalizer_get_raw_decomposition(string `$string`, int `$form` = `Normalizer::FORM_C`): ?string

Gets the Decomposition_Mapping property, as specified in the Unicode Character Database (UCD), for the given UTF-8 encoded code point.

### Bağımsız Değişkenler

`string`

  The input string, which should be a single, UTF-8 encoded, code point.

### Dönen Değerler

Returns a string containing the Decomposition_Mapping property, if present in the UCD.

Returns `null` if there is no Decomposition_Mapping property for the character.

### Örnekler

Örnek 1 Normalizer::getRawDecomposition() example

    <?php

    $result = "";
    $strings = [
        "a",
        "\u{FFDA}",
        "\u{FDFA}",
        "",
        "aa",
        "\xF5",
    ];

    foreach ($strings as $string) {
        $decomposition = Normalizer::getRawDecomposition($string);
        // $decomposition = normalizer_get_raw_decomposition($string); Procedural way

        $error_code = intl_get_error_code();
        $error_message = intl_get_error_message();

        $string_hex = bin2hex($string);
        $result .= "---------------------\n";

        if ($decomposition === null) {
            $result .= "'$string_hex' has no decomposition mapping\n" ;
        } else {
            $result .= "'$string_hex' has the decomposition mapping '" . bin2hex($decomposition) . "'\n" ;
        }

        $result .= "error info: '$error_message' ($error_code)\n";
    }

    echo $result;
    ?>

Yukarıdaki örneğin çıktısı:

    ---------------------
    '61' has no decomposition mapping
    error info: 'U_ZERO_ERROR' (0)
    ---------------------
    'efbf9a' has the decomposition mapping 'e385a1'
    error info: 'U_ZERO_ERROR' (0)
    ---------------------
    'efb7ba' has the decomposition mapping 'd8b5d984d98920d8a7d984d984d98720d8b9d984d98ad98720d988d8b3d984d985'
    error info: 'U_ZERO_ERROR' (0)
    ---------------------
    '' has no decomposition mapping
    error info: 'Input string must be exactly one UTF-8 encoded code point long.: U_ILLEGAL_ARGUMENT_ERROR' (1)
    ---------------------
    '6161' has no decomposition mapping
    error info: 'Input string must be exactly one UTF-8 encoded code point long.: U_ILLEGAL_ARGUMENT_ERROR' (1)
    ---------------------
    'f5' has no decomposition mapping
    error info: 'Code point out of range: U_ILLEGAL_ARGUMENT_ERROR' (1)

### Ayrıca Bakınız

- Normalizer::normalize() - Belirtilen girdiyi normalleştirir ve dizge olarak döndürür
- Normalizer::isNormalized() - Belirtilen dizge normalleştirilmiş mi diye bakar

# Normalizer::isNormalized

# normalizer_is_normalized

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Normalizer::isNormalized -- normalizer_is_normalized — Belirtilen dizge normalleştirilmiş mi diye bakar

### Açıklama

Nesne yönelimli kullanım

public static function Normalizer::isNormalized(string `$dizge`, int `$biçim` = Normalizer::FORM_C): bool

Yordamsal kullanım

function normalizer_is_normalized(string `$dizge`, int `$biçim` = Normalizer::FORM_C): bool

Belirtilen dizge belirtilen normalleştirme türünde mi diye bakar.

### Bağımsız Değişkenler

`dizge`

  Normalleştirilmiş mi diye bakılacak dizge.

`biçim`

  Normalleştirme biçimlerinden biri.

### Dönen Değerler

Dizge normalleştirilmişse `true` aksi takdirde veya bir hata oluşursa `false` döner.

### Örnekler

Örnek 1 - normalizer_is_normalized() örneği

    <?php
    $char_A_ring = "\xC3\x85"; // 'å' (U+00C5)
    $char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

    $char_orig = 'A' . $char_combining_ring_above;
    $char_norm = normalizer_normalize( 'A' . $char_combining_ring_above,
                  Normalizer::FORM_C );

    echo ( normalizer_is_normalized($char_orig, Normalizer::FORM_C) ) ?
            "normalleştirilmiş" : "normalleştirilmemiş";
    echo '; ';
    echo ( normalizer_is_normalized($char_norm, Normalizer::FORM_C) ) ?
            "normalleştirilmiş" : "normalleştirilmemiş";
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $char_A_ring = "\xC3\x85"; // 'å' (U+00C5)
    $char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

    $char_orig = 'A' . $char_combining_ring_above;
    $char_norm = Normalizer::normalize( 'A' . $char_combining_ring_above,
                 Normalizer::FORM_C );

    echo ( Normalizer::isNormalized($char_orig, Normalizer::FORM_C) ) ?
            "normalleştirilmiş" : "normalleştirilmemiş";
    echo '; ';
    echo ( Normalizer::isNormalized($char_norm, Normalizer::FORM_C) ) ?
            "normalleştirilmiş" : "normalleştirilmemiş";
    ?>

Yukarıdaki örneğin çıktısı:

    normalleştirilmemiş; normalleştirilmiş

### Ayrıca Bakınız

- normalizer_normalize() - Belirtilen girdiyi normalleştirir ve dizge olarak döndürür

# Normalizer::normalize

# normalizer_normalize

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Normalizer::normalize -- normalizer_normalize — Belirtilen girdiyi normalleştirir ve dizge olarak döndürür

### Açıklama

Nesne yönelimli kullanım

public static function Normalizer::normalize(string `$dizge`, int `$biçim` = Normalizer::FORM_C): string|false

Yordamsal kullanım

function normalizer_normalize(string `$dizge`, int `$biçim` = Normalizer::FORM_C): string|false

Belirtilen girdiyi normalleştirir ve dizge olarak döndürür.

### Bağımsız Değişkenler

`dizge`

  Normalleştirilecek dizge

`biçim`

  Normalleştirme biçimlerinden biri.

### Dönen Değerler

Bir hata oluşursa `false`, aksi takdirde normalleştirilen dizge döner.

### Örnekler

Örnek 1 - normalizer_normalize() örneği

    <?php
    $char_A_ring = "\xC3\x85"; // 'å' (U+00C5)
    $char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

    $char_1 = normalizer_normalize( $char_A_ring, Normalizer::FORM_C );
    $char_2 = normalizer_normalize( 'A' . $char_combining_ring_above,
                                     Normalizer::FORM_C );

    echo urlencode($char_1);
    echo ' ';
    echo urlencode($char_2);
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $char_A_ring = "\xC3\x85"; // 'å' (U+00C5)
    $char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

    $char_1 = Normalizer::normalize( $char_A_ring, Normalizer::FORM_C );
    $char_2 = Normalizer::normalize( 'A' . $char_combining_ring_above,
                                     Normalizer::FORM_C );

    echo urlencode($char_1);
    echo ' ';
    echo urlencode($char_2);
    ?>

Yukarıdaki örneğin çıktısı:

    %C3%85 %C3%85

### Ayrıca Bakınız

- normalizer_is_normalized() - Belirtilen dizge normalleştirilmiş mi diye bakar

## İçindekiler

- Normalizer::getRawDecomposition — Gets the Decomposition_Mapping property for the given UTF-8 encoded code point
- Normalizer::isNormalized — Belirtilen dizge normalleştirilmiş mi diye bakar
- Normalizer::normalize — Belirtilen girdiyi normalleştirir ve dizge olarak döndürür

# MessageFormatter sınıfı

(No version information available, might only be in Git)

## Giriş

MessageFormatter (İleti Biçemleyici), dilden bağımsız iletiler üretmeyi ve birleştirmeyi mümkün kılan somut bir sınıftır. Bu sınıfın yöntemleri, son kullanıcılar tarafından görülecek iletileri derlemek için kullanılır.

MessageFormatter sınıfı, program tarafından sağlanan çeşitli (metin, sayı ve tarih gibi) veri parçaları sayesinde iletilerin montajını yapar. MessageFormatter'ın bir sınıf olmasından dolayı programın bu veri parçalarının sırasını bilmeye ihtiyacı yoktur. Sınıf bu veri parçaları için biçemleme belirtimlerini kullanarak iletiyi bir özkaynak paketi içinde tek bir dizge halinde monte eder. Örneğin, MessageFormatter "Finished printing x out of y files..." cümlesini çeviriye izin verecek esneklikte basmanıza yardımcı olacaktır.

Öncelikle, bir son kullanıcı iletisi bir cümle olarak oluşturulur ve bir dizge olarak elde edilir. Cümle yapısı, sözcük sırası, sayı biçemi ve daha bir çok şey dilden dile farklılıklar gösterdiğinden bu işlem yerelleştiriciler açısından sorunlara yol açar. İletileri dilden bağımsız bir yolla oluşturmak için iletinin parçaları her veri için bir anahtar sağlanarak ayrı ayrı yerlerde tutulur. MessageFormatter sınıfı bu anahtarları kullanarak ileti parçalarını birleştirebilir, bunları yerelleştirebilir ve son kullanıcıya iyi biçimlenmiş bir dizge olarak gösterebilir.

MessageFormatter, bir nesne kümesini alır, bunları biçemler ve bunları uygun yerlerde bir şablon içine yerleştirir. Seçim biçemleri, çoğul biçemlerin sayılarla eşleştirilip bir öğe dizisinden seçilebilmesini sağlar. Genelde, bağımsız değişkenler ve özkaynaklar üzerinden gelen ileti biçemi çalışma anında dinamik olarak bağımsız değişkenlere atanır.

## Sınıf Sözdizimi

class MessageFormatter {
/* Yöntemler */
public function __construct(string `$yerel`, string `$kalıp`)
public static function create(string `$locale`, string `$pattern`): ?MessageFormatter
public function format(array `$bağımsız_değişkenler`): string|false
public static function formatMessage(string `$yerel`, string `$kalıp`, array `$bağımsız_değişkenler`): string|false
public function getErrorCode(): int
public function getErrorMessage(): string
public function getLocale(): string
public function getPattern(): string|false
public function parse(string `$dizge`): array|false
public static function parseMessage(string `$yerel`, string `$kalıp`, string `$ileti`): array|false
public function setPattern(string `$kalıp`): bool
}

## Ayrıca Bakınız

- » ICU biçemleme belgeleri
- » ICU ileti biçemleme belgesi
- » ICU ileti biçemleyicileri
- » ICU seçim biçemleyicileri

# MessageFormatter::create

# MessageFormatter::__construct

# msgfmt_create

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::create -- MessageFormatter::__construct -- msgfmt_create — Yeni bir ileti biçemleyici nesne oluşturur

### Açıklama

Nesne yönelimli kullanım (yöntem)

public static function MessageFormatter::create(string `$locale`, string `$pattern`): ?MessageFormatter

Nesne yönelimli kullanım (kurucu):

public function MessageFormatter::__construct(string `$yerel`, string `$kalıp`)

Yordamsal kullanım

function msgfmt_create(string `$yerel`, string `$kalıp`): ?MessageFormatter

Yeni bir ileti biçemleyici nesne oluşturur.

### Bağımsız Değişkenler

`yerel`

  Bağımsız değişkenlerin biçemlenmesinde kullanılacak yerel.

`kalıp`

  Bağımsız değişkenlerin içine yerleştirileceği dizge. Kalıp 'tek tırnak dostu' sözdizimi kullanır; yorumlanmadan önce dahili olarak » Tırnaklama/Önceleme işleminden geçirilir.

### Dönen Değerler

Biçemleyici nesne, başarısızlık durumunda `null`.

### Hatalar/İstisnalar

Kurucu olarak çağrıldığında başarısızlık durumunda IntlException yavrulanır.

### Örnekler

Örnek 1 - msgfmt_create() örneği

    <?php
    $fmt = msgfmt_create("en_US", "{0,number,integer} monkeys on {1,number,
            integer} trees make {2,number} monkeys per tree");
    echo msgfmt_format($fmt, array(4560, 123, 4560/123));
    $fmt = msgfmt_create("tr", "{0,number,integer} ağaçta {1,number,
            integer} maymun, ağaç başına {2,number} maymun eder");
    echo msgfmt_format($fmt, array(123, 4560, 4560/123));
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter("en_US", "{0,number,integer} monkeys on {1,number,
            integer} trees make {2,number} monkeys per tree");
    echo $fmt->format(array(4560, 123, 4560/123));
    $fmt = new MessageFormatter("tr", "{0,number,integer} ağaçta {1,number,
            integer} maymun, ağaç başına {2,number} maymun eder");
    echo $fmt->format(array(123, 4560, 4560/123));
    ?>

Yukarıdaki örneğin çıktısı:

    4,560 monkeys on 123 trees make 37.073 monkeys per tree
    123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder

### Ayrıca Bakınız

- msgfmt_format() - İleti biçemler
- msgfmt_parse() - Girdi dizgesini kalıba uygun olarak çözümler
- msgfmt_get_error_code() - Son işlemin hata kodunu döndürür
- msgfmt_get_error_message() - Son işlemin hata iletisini döndürür

# MessageFormatter::format

# msgfmt_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::format -- msgfmt_format — İleti biçemler

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::format(array `$bağımsız_değişkenler`): string|false

Yordamsal kullanım

function msgfmt_format(MessageFormatter `$biçemleyici`, array `$bağımsız_değişkenler`): string|false

Yerelin kurallarına uygun olarak biçem dizgesi içine veri yerleştirerek iletiyi biçemler.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici.

`bağımsı_ değişkenler`

  Biçem dizgesine yerleştirilecek bağımsız değişkenler.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde biçemlenmiş dizge ile döner.

### Örnekler

Örnek 1 - msgfmt_format() örneği

    <?php
    $fmt = msgfmt_create("en_US", "{0,number,integer} monkeys on {1,number,
            integer} trees make {2,number} monkeys per tree");
    echo msgfmt_format($fmt, array(4560, 123, 4560/123));
    $fmt = msgfmt_create("tr", "{0,number,integer} ağaçta {1,number,
            integer} maymun, ağaç başına {2,number} maymun eder");
    echo msgfmt_format($fmt, array(123, 4560, 4560/123));
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter("en_US", "{0,number,integer} monkeys on {1,
            number,integer} trees make {2,number} monkeys per tree");
    echo $fmt->format(array(4560, 123, 4560/123));
    $fmt = new MessageFormatter("tr", "{0,number,integer} ağaçta {1,
            number,integer} maymun, ağaç başına {2,number} maymun eder");
    echo $fmt->format(array(123, 4560, 4560/123));
    ?>

Yukarıdaki örneğin çıktısı:

    4,560 monkeys on 123 trees make 37.073 monkeys per tree
    123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_parse() - Girdi dizgesini kalıba uygun olarak çözümler
- msgfmt_format_message() - İletiyi çabuk biçemler
- msgfmt_get_error_code() - Son işlemin hata kodunu döndürür
- msgfmt_get_error_message() - Son işlemin hata iletisini döndürür

# MessageFormatter::formatMessage

# msgfmt_format_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::formatMessage -- msgfmt_format_message — İletiyi çabuk biçemler

### Açıklama

Nesne yönelimli kullanım

public static function MessageFormatter::formatMessage(string `$yerel`, string `$kalıp`, array `$bağımsız_değişkenler`): string|false

Yordamsal kullanım

function msgfmt_format_message(string `$yerel`, string `$kalıp`, array `$bağımsız_değişkenler`): string|false

Girdi dizgesini bir biçemleyici nesne oluşturmaya gerek bırakmaksızın biçemler. Bu işlev, çözümleme işleminin bir kereliğine yapılıp bağımsız değişkenlerin ve durumun saklanmasına ihtiyaç olmadığında veya doğrudan ICU'ya ek bağlam sağlayarak çıktı özelleştirilmek istendiğinde kullanılır.

### Bağımsız Değişkenler

`yerel`

  Yerele bağlı kısımların biçemlenmesinde kullanılacak yerel.

`kalıp`

  İçine veri yerleştirilecek kalıp dizgesi. Kalıp 'tek tırnak dostu' sözdizimi kullanır; yorumlanmadan önce dahili olarak » Tırnaklama/Önceleme işleminden geçirilir.

`bağımsız_değişkenler`

  Biçem dizgesine yerleştirilecek bağımsız değişkenleri içeren dizi.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde biçemlenmiş kalıp dizgesi ile döner.

### Örnekler

Örnek 1 - msgfmt_format_message() örneği

    <?php
    echo msgfmt_format_message("en_US", "{0,number,integer} monkeys on {1,number,
         integer} trees make {2,number} monkeys per tree\n",
            array(4560, 123, 4560/123));
    echo msgfmt_format_message("tr", "{0,number,integer} ağaçta {1,number,
         integer} maymun, ağaç başına {2,number} maymun eder\n",
            array(123, 4560, 4560/123));
    echo msgfmt_format_message("en", 'You finished {place, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}!', ['place' => 3]), "\n";
    echo msgfmt_format_message("en",
            "There {apple, plural,
                =0 {are no apples}
                =1 {is one apple...}
                other {are # apples!}
            }",
        ['apple' => 0]
    ), "\n";

Örnek 2 - Nesne yönelimli örnek

    <?php
    echo MessageFormatter::formatMessage("en_US", "{0,number,
        integer} monkeys on {1,number,
        integer} trees make {2,number} monkeys per tree\n",
        array(4560, 123, 4560/123));
    echo MessageFormatter::formatMessage("tr", "{0,number,
        integer} ağaçta {1,number,
        integer} maymun, ağaç başına {2,number} maymun eder\n",
        array(123, 4560, 4560/123));
    echo MessageFormatter::formatMessage("en", 'You finished {place, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}!', ['place' => 3]), "\n";
    echo MessageFormatter::formatMessage("en",
            "There {apple, plural,
                =0 {are no apples}
                =1 {is one apple...}
                other {are # apples!}
            }",
        ['apple' => 0]
    ), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    4,560 monkeys on 123 trees make 37.073 monkeys per tree
    123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder
    You finished 3rd!
    There are no apples

Örnek 3 - ICU'ya para birimini ortak ve dar para birimi simgesiyle biçimlendirme talimatı vermek

ICU ≥ 67 gerekir.

    <?php
    echo msgfmt_format_message("cs_CZ", "{0, number, :: currency/CAD}", array(123.45));
    echo msgfmt_format_message("cs_CZ", "{0, number, :: currency/CAD unit-width-narrow}", array(123.45));

Yukarıdaki örneğin çıktısı:

    123,45 CA$
    123,45 $

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_parse() - Girdi dizgesini kalıba uygun olarak çözümler
- msgfmt_get_error_code() - Son işlemin hata kodunu döndürür
- msgfmt_get_error_message() - Son işlemin hata iletisini döndürür

# MessageFormatter::getErrorCode

# msgfmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::getErrorCode -- msgfmt_get_error_code — Son işlemin hata kodunu döndürür

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::getErrorCode(): int

Yordamsal kullanım

function msgfmt_get_error_code(MessageFormatter `$biçemleyici`): int

Son işlemin hata kodunu döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici

### Dönen Değerler

UErrorCode değerlerinden biri olarak hata kodu. İlk değer: U_ZERO_ERROR.

### Ayrıca Bakınız

- msgfmt_get_error_message() - Son işlemin hata iletisini döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# MessageFormatter::getErrorMessage

# msgfmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::getErrorMessage -- msgfmt_get_error_message — Son işlemin hata iletisini döndürür

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::getErrorMessage(): string

Yordamsal kullanım

function msgfmt_get_error_message(MessageFormatter `$biçemleyici`): string

Son işlemin hata iletisini döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici.

### Dönen Değerler

Son hatanın açıklaması.

### Örnekler

Örnek 1 - msgfmt_get_error_message() örneği

    <?php
    $fmt = msgfmt_create( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    $str = msgfmt_format($fmt, array());
    if(!$str) {
        echo "ERROR: ".msgfmt_get_error_message($fmt) . " (" . msgfmt_get_error_code($fmt) . ")\n";
    }
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    $str = $fmt->format(array());
    if(!$str) {
        echo "ERROR: ".$fmt->getErrorMessage()." (" . $fmt->getErrorCode().")\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    ERROR: msgfmt_format: not enough parameters: U_ILLEGAL_ARGUMENT_ERROR (1)

### Ayrıca Bakınız

- msgfmt_get_error_code() - Son işlemin hata kodunu döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# MessageFormatter::getLocale

# msgfmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::getLocale -- msgfmt_get_locale — Biçemleyicinin oluşturulduğu yereli döndürür

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::getLocale(): string

Yordamsal kullanım

function msgfmt_get_locale(MessageFormatter `$biçemleyici`): string

Biçemleyicinin oluşturulduğu yereli döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne

### Dönen Değerler

Yerel ismi

### Örnekler

Örnek 1 - msgfmt_get_locale() örneği

    <?php
    $fmt = msgfmt_create('tr_TR', "Sayı: {0,number}");
    echo msgfmt_get_locale($fmt);
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter('tr_TR', "Sayı: {0,number}");
    echo $fmt->getLocale();
    ?>

Yukarıdaki örneğin çıktısı:

    tr_TR

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur

# MessageFormatter::getPattern

# msgfmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::getPattern -- msgfmt_get_pattern — Biçemleyici tarafından kullanılan kalıbı döndürür

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::getPattern(): string|false

Yordamsal kullanım

function msgfmt_get_pattern(MessageFormatter `$biçemleyici`): string|false

Biçemleyici tarafından kullanılan kalıbı döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici.

### Dönen Değerler

İleti biçemleyici tarafından kullanılan kalıp dizgesi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - msgfmt_get_pattern() örneği

    <?php
    $fmt = msgfmt_create( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    echo "Öntanımlı kalıp: '" . msgfmt_get_pattern( $fmt ) . "'\n";
    echo "Biçemleme sonucu: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";

    msgfmt_set_pattern( $fmt, "{0, number} maymuna karşılık {1, number} ağaç var." );
    echo "Yeni kalıp: '" . msgfmt_get_pattern( $fmt ) . "'\n";
    echo "Biçemleme sonucu: " . msgfmt_format( $fmt, array(456, 123) ) . "\n";
    ?>
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    echo "Öntanımlı kalıp: '" . $fmt->getPattern() . "'\n";
    echo "Biçemleme sonucu: " . $fmt->format(array(123, 456)) . "\n";

    $fmt->setPattern("{0, number} maymuna karşılık {1, number} ağaç var." );
    echo "Yeni kalıp: '" . $fmt->getPattern() . "'\n";
    echo "Biçemleme sonucu: " . $fmt->format(array(456, 123)) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Öntanımlı kalıp: '{0, number} ağaçta {1, number} maymun var.'
    Biçemleme sonucu: 123 ağaçta 456 maymun var.
    Yeni kalıp: '{0, number} maymuna karşılık {1, number} ağaç var.'
    Biçemleme sonucu: 456 maymuna karşılık 123 ağaç var.

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_set_pattern() - Biçemleyici tarafından kullanılacak kalıbı tanımlar

# MessageFormatter::parse

# msgfmt_parse

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::parse -- msgfmt_parse — Girdi dizgesini kalıba uygun olarak çözümler

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::parse(string `$dizge`): array|false

Yordamsal kullanım

function msgfmt_parse(MessageFormatter `$biçemleyici`, string `$dizge`): array|false

Girdi dizgesini çözümler ve elde edilen öğeleri bir dizi içinde döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici.

`dizge`

  Çözümlenecek dizge.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde çözümleme sonucu elde edilen öğeleri içeren bir dizi.

### Örnekler

Örnek 1 - msgfmt_parse() örneği

    <?php
    $fmt = msgfmt_create('en_US', "{0,number,integer} monkeys on {1,number,
                          integer} trees make {2,number} monkeys per tree");
    $res = msgfmt_parse($fmt,
                 "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
    var_export($res);

    $fmt = msgfmt_create('tr', "{0,number,integer} ağaçta {1,number,
                      integer} maymun, ağaç başına {2,number} maymun eder");
    $res = msgfmt_parse($fmt,
                  "123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder");
    var_export($res);
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter('en_US', "{0,number,integer} monkeys on {1,
                    number,integer} trees make {2,number} monkeys per tree");
    $res = $fmt->parse("4,560 monkeys on 123 trees make 37.073 monkeys per tree");
    var_export($res);

    $fmt = new MessageFormatter('tr', "{0,number,integer} ağaçta {1,
                number,integer} maymun, ağaç başına {2,number} maymun eder");
    $res = $fmt->parse("123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder");
    var_export($res);
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      0 => 4560,
      1 => 123,
      2 => 37.073,
    )array (
      0 => 123,
      1 => 4560,
      2 => 37.073,
    )

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_format() - İleti biçemler
- msgfmt_parse_message() - Girdi dizgesini hızla çözümler

# MessageFormatter::parseMessage

# msgfmt_parse_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::parseMessage -- msgfmt_parse_message — Girdi dizgesini hızla çözümler

### Açıklama

Nesne yönelimli kullanım

public static function MessageFormatter::parseMessage(string `$yerel`, string `$kalıp`, string `$ileti`): array|false

Yordamsal kullanım

function msgfmt_parse_message(string `$yerel`, string `$kalıp`, string `$ileti`): array|false

Girdi dizgesini bir biçemleyici nesne oluşturmaya gerek bırakmaksızın çözümler. Bu işlev, çözümleme işleminin bir kereliğine yapılıp bağımsız değişkenlerin ve durumun saklanmasına ihtiyaç olmadığında kullanılır.

### Bağımsız Değişkenler

`yerel`

  Yerele bağlı kısımların çözümlenmesinde kullanılacak yerel.

`kalıp`

  `ileti`nin çözümlenmesinde kullanılacak dizge.

`ileti`

  `kalıp` dizgesine uygun olarak çözümlenecek dizge.

### Dönen Değerler

Bir hata oluşmuşsa `false`, aksi takdirde çözümleme sonucu elde edilen öğeleri içeren bir dizi.

### Örnekler

Örnek 1 - msgfmt_parse_message() örneği

    <?php
    $res = msgfmt_parse_message('en_US', "{0,number,integer} monkeys on {1,
                   number,integer} trees make {2,number} monkeys per tree",
                   "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
    var_export($res);

    $res = msgfmt_parse_message('tr',"{0,number,integer} ağaçta {1,
                  number,integer} maymun, ağaç başına {2,number} maymun eder",
                     "123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder");
    var_export($res);
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $res = MessageFormatter::parseMessage('en_US', "{0,number,
     integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree",
     "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
    var_export($res);

    $res = MessageFormatter::parseMessage('tr', "{0,number,integer} ağaçta {1,
                  number,integer} maymun, ağaç başına {2,number} maymun eder",
                     "123 ağaçta 4.560 maymun, ağaç başına 37,073 maymun eder");
    var_export($res);
    ?>

Yukarıdaki örneğin çıktısı:

    array (
      0 => 4560,
      1 => 123,
      2 => 37.073,
    )array (
      0 => 123,
      1 => 4560,
      2 => 37.073,
    )

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_format_message() - İletiyi çabuk biçemler
- msgfmt_parse() - Girdi dizgesini kalıba uygun olarak çözümler

# MessageFormatter::setPattern

# msgfmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

MessageFormatter::setPattern -- msgfmt_set_pattern — Biçemleyici tarafından kullanılacak kalıbı tanımlar

### Açıklama

Nesne yönelimli kullanım

public function MessageFormatter::setPattern(string `$kalıp`): bool

Yordamsal kullanım

function msgfmt_set_pattern(MessageFormatter `$biçemleyici`, string `$kalıp`): bool

Biçemleyici tarafından kullanılacak kalıbı tanımlar.

### Bağımsız Değişkenler

`biçemleyici`

  İleti biçemleyici

`kalıp`

  Bu ileti biçemleyici tarafından kullanılacak kalıp dizgesi. Kalıp 'tek tırnak dostu' sözdizimi kullanır; yorumlanmadan önce dahili olarak » Tırnaklama/Önceleme işleminden geçirilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - msgfmt_set_pattern() örneği

    <?php
    $fmt = msgfmt_create( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    echo "Öntanımlı kalıp: '" . msgfmt_get_pattern( $fmt ) . "'\n";
    echo "Biçemleme sonucu: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";

    msgfmt_set_pattern( $fmt, "{0, number} maymuna karşılık {1, number} ağaç var." );
    echo "Yeni kalıp: '" . msgfmt_get_pattern( $fmt ) . "'\n";
    echo "Biçemleme sonucu: " . msgfmt_format( $fmt, array(456, 123) ) . "\n";
    ?>

Örnek 2 - Nesne yönelimli örnek

    <?php
    $fmt = new MessageFormatter( "tr_TR", "{0, number} ağaçta {1, number} maymun var." );
    echo "Öntanımlı kalıp: '" . $fmt->getPattern() . "'\n";
    echo "Biçemleme sonucu: " . $fmt->format(array(123, 456)) . "\n";

    $fmt->setPattern("{0, number} maymuna karşılık {1, number} ağaç var." );
    echo "Yeni kalıp: '" . $fmt->getPattern() . "'\n";
    echo "Biçemleme sonucu: " . $fmt->format(array(456, 123)) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Öntanımlı kalıp: '{0, number} ağaçta {1, number} maymun var.'
    Biçemleme sonucu: 123 ağaçta 456 maymun var.
    Yeni kalıp: '{0, number} maymuna karşılık {1, number} ağaç var.'
    Biçemleme sonucu: 456 maymuna karşılık 123 ağaç var.

### Ayrıca Bakınız

- msgfmt_create() - Yeni bir ileti biçemleyici nesne oluşturur
- msgfmt_get_pattern() - Biçemleyici tarafından kullanılan kalıbı döndürür

## İçindekiler

- MessageFormatter::create — Yeni bir ileti biçemleyici nesne oluşturur
- MessageFormatter::format — İleti biçemler
- MessageFormatter::formatMessage — İletiyi çabuk biçemler
- MessageFormatter::getErrorCode — Son işlemin hata kodunu döndürür
- MessageFormatter::getErrorMessage — Son işlemin hata iletisini döndürür
- MessageFormatter::getLocale — Biçemleyicinin oluşturulduğu yereli döndürür
- MessageFormatter::getPattern — Biçemleyici tarafından kullanılan kalıbı döndürür
- MessageFormatter::parse — Girdi dizgesini kalıba uygun olarak çözümler
- MessageFormatter::parseMessage — Girdi dizgesini hızla çözümler
- MessageFormatter::setPattern — Biçemleyici tarafından kullanılacak kalıbı tanımlar

# The IntlCalendar class

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

## Giriş

## Sınıf Sözdizimi

class IntlCalendar {
/* Sabitler */
public const int FIELD_ERA;
public const int FIELD_YEAR;
public const int FIELD_MONTH;
public const int FIELD_WEEK_OF_YEAR;
public const int FIELD_WEEK_OF_MONTH;
public const int FIELD_DATE;
public const int FIELD_DAY_OF_YEAR;
public const int FIELD_DAY_OF_WEEK;
public const int FIELD_DAY_OF_WEEK_IN_MONTH;
public const int FIELD_AM_PM;
public const int FIELD_HOUR;
public const int FIELD_HOUR_OF_DAY;
public const int FIELD_MINUTE;
public const int FIELD_SECOND;
public const int FIELD_MILLISECOND;
public const int FIELD_ZONE_OFFSET;
public const int FIELD_DST_OFFSET;
public const int FIELD_YEAR_WOY;
public const int FIELD_DOW_LOCAL;
public const int FIELD_EXTENDED_YEAR;
public const int FIELD_JULIAN_DAY;
public const int FIELD_MILLISECONDS_IN_DAY;
public const int FIELD_IS_LEAP_MONTH;
public const int FIELD_FIELD_COUNT;
public const int FIELD_DAY_OF_MONTH;
public const int DOW_SUNDAY;
public const int DOW_MONDAY;
public const int DOW_TUESDAY;
public const int DOW_WEDNESDAY;
public const int DOW_THURSDAY;
public const int DOW_FRIDAY;
public const int DOW_SATURDAY;
public const int DOW_TYPE_WEEKDAY;
public const int DOW_TYPE_WEEKEND;
public const int DOW_TYPE_WEEKEND_OFFSET;
public const int DOW_TYPE_WEEKEND_CEASE;
public const int WALLTIME_FIRST;
public const int WALLTIME_LAST;
public const int WALLTIME_NEXT_VALID;
/* Yöntemler */
private function __construct()
public function add(int `$field`, int `$value`): bool
public function after(IntlCalendar `$other`): bool
public function before(IntlCalendar `$other`): bool
public function clear(?int `$field` = `null`): true
public static function createInstance(IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`, ?string `$locale` = `null`): ?IntlCalendar
public function equals(IntlCalendar `$other`): bool
public function fieldDifference(float `$timestamp`, int `$field`): int|false
public static function fromDateTime(DateTime|string `$datetime`, ?string `$locale` = `null`): ?IntlCalendar
public function get(int `$field`): int|false
public function getActualMaximum(int `$field`): int|false
public function getActualMinimum(int `$field`): int|false
public static function getAvailableLocales(): array
public function getDayOfWeekType(int `$dayOfWeek`): int|false
public function getErrorCode(): int|false
public function getErrorMessage(): string|false
public function getFirstDayOfWeek(): int|false
public function getGreatestMinimum(int `$field`): int|false
public static function getKeywordValuesForLocale(string `$keyword`, string `$locale`, bool `$onlyCommon`): IntlIterator|false
public function getLeastMaximum(int `$field`): int|false
public function getLocale(int `$type`): string|false
public function getMaximum(int `$field`): int|false
public function getMinimalDaysInFirstWeek(): int|false
public function getMinimum(int `$field`): int|false
public static function getNow(): float
public function getRepeatedWallTimeOption(): int
public function getSkippedWallTimeOption(): int
public function getTime(): float|false
public function getTimeZone(): IntlTimeZone|false
public function getType(): string
public function getWeekendTransition(int `$dayOfWeek`): int|false
public function inDaylightTime(): bool
public function isEquivalentTo(IntlCalendar `$other`): bool
public function isLenient(): bool
public function isSet(int `$field`): bool
public function isWeekend(?float `$timestamp` = `null`): bool
public function roll(int `$field`, int|bool `$value`): bool
public function set(int `$field`, int `$value`): true
public function set(
int `$year`,
int `$month`,
int `$dayOfMonth` = NULL,
int `$hour` = NULL,
int `$minute` = NULL,
int `$second` = NULL
): true
public function setDate(int `$year`, int `$month`, int `$dayOfMonth`): void
public function setDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): void
public function setFirstDayOfWeek(int `$dayOfWeek`): true
public function setLenient(bool `$lenient`): true
public function setMinimalDaysInFirstWeek(int `$days`): true
public function setRepeatedWallTimeOption(int `$option`): true
public function setSkippedWallTimeOption(int `$option`): true
public function setTime(float `$timestamp`): bool
public function setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool
public function toDateTime(): DateTime|false
}

## Öntanımlı Sabitler

`IntlCalendar::FIELD_ERA` int

  Calendar field numerically representing an era, for instance `1` for AD and `0` for BC in the Gregorian/Julian calendars and `235` for the Heisei (平成) era in the Japanese calendar. Not all calendars have more than one era.

`IntlCalendar::FIELD_YEAR` int

  Calendar field for the year. This is not unique across eras. If the calendar type has more than one era, generally the minimum value for this field will be `1`.

`IntlCalendar::FIELD_MONTH` int

  Calendar field for the month. The month sequence is zero-based, so January (here used to signify the first month of the calendar; this may be called another name, such as Muharram in the Islamic calendar) is represented by `0`, February by `1`, …, December by `11` and, for calendars that have it, the 13th or leap month by `12`.

`IntlCalendar::FIELD_WEEK_OF_YEAR` int

  Calendar field for the number of the week of the year. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

`IntlCalendar::FIELD_WEEK_OF_MONTH` int

  Calendar field for the number of the week of the month. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

`IntlCalendar::FIELD_DATE` int

  Calendar field for the day of the month. The same as `IntlCalendar::FIELD_DAY_OF_MONTH`, which has a clearer name.

`IntlCalendar::FIELD_DAY_OF_YEAR` int

  Calendar field for the day of the year. For the Gregorian calendar, starts with `1` and ends with `365` or `366`.

`IntlCalendar::FIELD_DAY_OF_WEEK` int

  Calendar field for the day of the week. Its values start with `1` (Sunday, see `IntlCalendar::DOW_SUNDAY` and subsequent constants) and the last valid value is 7 (Saturday).

`IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH` int

  Given a day of the week (Sunday, Monday, …), this calendar field assigns an ordinal to such a day of the week in a specific month. Thus, if the value of this field is `1` and the value of the day of the week is `2` (Monday), then the set day of the month is the 1st Monday of the month; the maximum value is `5`.

  Additionally, the value `0` and negative values are also allowed. The value `0` encompasses the seven days that occur immediately before the first seven days of a month (which therefore have a ‘day of week in month’ with value `1`). Negative values starts counting from the end of the month – `-1` points to the last occurrence of a day of the week in a month, `-2` to the second last, and so on.

  Unlike `IntlCalendar::FIELD_WEEK_OF_MONTH` and `IntlCalendar::FIELD_WEEK_OF_YEAR`, this value does not depend on IntlCalendar::getFirstDayOfWeek() or on IntlCalendar::getMinimalDaysInFirstWeek(). The first Monday is the first Monday, even if it occurs in a week that belongs to the previous month.

`IntlCalendar::FIELD_AM_PM` int

  Calendar field indicating whether a time is before noon (value `0`, AM) or after (`1`). Midnight is AM, noon is PM.

`IntlCalendar::FIELD_HOUR` int

  Calendar field for the hour, without specifying whether itʼs in the morning or in the afternoon. Valid values are `0` to `11`.

`IntlCalendar::FIELD_HOUR_OF_DAY` int

  Calendar field for the full (24h) hour of the day. Valid values are `0` to `23`.

`IntlCalendar::FIELD_MINUTE` int

  Calendar field for the minutes component of the time.

`IntlCalendar::FIELD_SECOND` int

  Calendar field for the seconds component of the time.

`IntlCalendar::FIELD_MILLISECOND` int

  Calendar field the milliseconds component of the time.

`IntlCalendar::FIELD_ZONE_OFFSET` int

  Calendar field indicating the raw offset of the timezone, in milliseconds. The raw offset is the timezone offset, excluding any offset due to daylight saving time.

`IntlCalendar::FIELD_DST_OFFSET` int

  Calendar field for the daylight saving time offset of the calendarʼs timezone, in milliseconds, if active for calendarʼs time.

`IntlCalendar::FIELD_YEAR_WOY` int

  Calendar field representing the year for week of year purposes.

`IntlCalendar::FIELD_DOW_LOCAL` int

  Calendar field for the localized day of the week. This is a value between `1` and `7`, `1` being used for the day of the week that matches the value returned by IntlCalendar::getFirstDayOfWeek().

`IntlCalendar::FIELD_EXTENDED_YEAR` int

  Calendar field for a year number representation that is continuous across eras. For the Gregorian calendar, the value of this field matches that of `IntlCalendar::FIELD_YEAR` for AD years; a BC year `y` is represented by `-y + 1`.

`IntlCalendar::FIELD_JULIAN_DAY` int

  Calendar field for a modified Julian day number. It is different from a conventional Julian day number in that its transitions occur at local zone midnight rather than at noon UTC. It uniquely identifies a date.

`IntlCalendar::FIELD_MILLISECONDS_IN_DAY` int

  Calendar field encompassing the information in `IntlCalendar::FIELD_HOUR_OF_DAY`, `IntlCalendar::FIELD_MINUTE`, `IntlCalendar::FIELD_SECOND` and `IntlCalendar::FIELD_MILLISECOND`. Range is from the `0` to `24 * 3600 * 1000 - 1`. It is not the amount of milliseconds elapsed in the day since on DST transitions it will have discontinuities analog to those of the wall time.

`IntlCalendar::FIELD_IS_LEAP_MONTH` int

  Calendar field whose value is `1` for indicating a leap month and `0` otherwise.

`IntlCalendar::FIELD_FIELD_COUNT` int

  The total number of fields.

`IntlCalendar::FIELD_DAY_OF_MONTH` int

  Alias for `IntlCalendar::FIELD_DATE`.

`IntlCalendar::DOW_SUNDAY` int

  Sunday.

`IntlCalendar::DOW_MONDAY` int

  Monday.

`IntlCalendar::DOW_TUESDAY` int

  Tuesday.

`IntlCalendar::DOW_WEDNESDAY` int

  Wednesday.

`IntlCalendar::DOW_THURSDAY` int

  Thursday.

`IntlCalendar::DOW_FRIDAY` int

  Friday.

`IntlCalendar::DOW_SATURDAY` int

  Saturday.

`IntlCalendar::DOW_TYPE_WEEKDAY` int

  Output of IntlCalendar::getDayOfWeekType() indicating a day of week is a weekday.

`IntlCalendar::DOW_TYPE_WEEKEND` int

  Output of IntlCalendar::getDayOfWeekType() indicating a day of week belongs to the weekend.

`IntlCalendar::DOW_TYPE_WEEKEND_OFFSET` int

  Output of IntlCalendar::getDayOfWeekType() indicating the weekend begins during the given day of week.

`IntlCalendar::DOW_TYPE_WEEKEND_CEASE` int

  Output of IntlCalendar::getDayOfWeekType() indicating the weekend ends during the given day of week.

`IntlCalendar::WALLTIME_FIRST` int

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour less and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the first occurrence of such wall time.

`IntlCalendar::WALLTIME_LAST` int

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour after and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the second occurrence of such wall time.

`IntlCalendar::WALLTIME_NEXT_VALID` int

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the instant when the daylight saving time transition occurs (begins).

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.

# IntlCalendar::add

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::add — Add a (signed) amount of time to a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::add(int `$field`, int `$value`): bool

Yordamsal kullanım

function intlcal_add(IntlCalendar `$calendar`, int `$field`, int `$value`): bool

Add a signed amount to a field. Adding a positive amount allows advances in time, even if the numeric value of the field decreases (e.g. when working with years in BC dates).

Other fields may need to adjusted – for instance, adding a month to the 31st of January will result in the 28th (or 29th) of February. Contrary to IntlCalendar::roll(), when a value wraps around, more significant fields may change. For instance, adding a day to the 31st of January will result in the 1st of February, not the 1st of January.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

`value`

  The signed amount to add to the current field. If the amount is positive, the instant will be moved forward; if it is negative, the instant will be moved into the past. The unit is implicit to the field type. For instance, hours for `IntlCalendar::FIELD_HOUR_OF_DAY`.

### Dönen Değerler

Returns `true` on success başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::add()

    <?php
    ini_set('intl.default_locale', 'fr_FR');
    ini_set('date.timezone', 'UTC');

    $cal = new IntlGregorianCalendar(2012, 0 /* January */, 31);
    echo IntlDateFormatter::formatObject($cal), "\n";

    $cal->add(IntlCalendar::FIELD_MONTH, 1);
    echo IntlDateFormatter::formatObject($cal), "\n";

    $cal->add(IntlCalendar::FIELD_DAY_OF_MONTH, 1);
    echo IntlDateFormatter::formatObject($cal), "\n";

Yukarıdaki örneğin çıktısı:

    31 janv. 2012 00:00:00
    29 févr. 2012 00:00:00
    1 mars 2012 00:00:00

# IntlCalendar::after

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::after — Whether this objectʼs time is after that of the passed object

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::after(IntlCalendar `$other`): bool

Yordamsal kullanım

function intlcal_after(IntlCalendar `$calendar`, IntlCalendar `$other`): bool

Returns whether this objectʼs time succeeds the argumentʼs time.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`other`

  The calendar whose time will be checked against the primary objectʼs time.

### Dönen Değerler

Returns `true` if this objectʼs current time is after that of the `calendar` argumentʼs time. Returns `false` otherwise.

Başarısızlık durumunda ayrıca `false` döner. Hataları yakalamak için ya intl_get_error_code() işlevini kullanın ya da Intl eklentisini istisnaları yavrulamaya ayarlayın.

### Örnekler

Örnek 1 IntlCalendar::after()

    <?php
    $cal1 = IntlCalendar::createInstance();
    $cal2 = clone $cal1;

    var_dump($cal1->after($cal2), //false
            $cal2->after($cal1)); //false

    $cal1->roll(IntlCalendar::FIELD_MILLISECOND, true);

    var_dump($cal1->after($cal2), //true
            $cal2->after($cal1)); //false

# IntlCalendar::before

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::before — Whether this objectʼs time is before that of the passed object

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::before(IntlCalendar `$other`): bool

Yordamsal kullanım

function intlcal_before(IntlCalendar `$calendar`, IntlCalendar `$other`): bool

Returns whether this objectʼs time precedes the argumentʼs time.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`other`

  The calendar whose time will be checked against the primary objectʼs time.

### Dönen Değerler

Returns `true` if this objectʼs current time is before that of the `calendar` argumentʼs time. Returns `false` otherwise.

Başarısızlık durumunda ayrıca `false` döner. Hataları yakalamak için ya intl_get_error_code() işlevini kullanın ya da Intl eklentisini istisnaları yavrulamaya ayarlayın.

# IntlCalendar::clear

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::clear — Clear a field or all fields

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::clear(?int `$field` = `null`): true

Yordamsal kullanım

function intlcal_clear(IntlCalendar `$calendar`, ?int `$field` = `null`): true

Clears either all of the fields or a specific field. A cleared field is marked as unset, giving it the lowest priority against overlapping fields or even default values when calculating the time. Additionally, its value is set to `0`, though given the fieldʼs low priority, its value may have been internally set to another value by the time the field has finished been queried.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.

### Örnekler

Örnek 1 IntlCalendar::clear() examples

    <?php
    ini_set('intl.default_locale', 'es_ES');
    ini_set('date.timezone', 'UTC');

    $fields = array(
        'FIELD_ERA'                  => 0,
        'FIELD_YEAR'                 => 1,
        'FIELD_MONTH'                => 2,
        'FIELD_WEEK_OF_YEAR'         => 3,
        'FIELD_WEEK_OF_MONTH'        => 4,
        'FIELD_DATE'                 => 5,
        'FIELD_DAY_OF_YEAR'          => 6,
        'FIELD_DAY_OF_WEEK'          => 7,
        'FIELD_DAY_OF_WEEK_IN_MONTH' => 8,
        'FIELD_AM_PM'                => 9,
        'FIELD_HOUR'                 => 10,
        'FIELD_HOUR_OF_DAY'          => 11,
        'FIELD_MINUTE'               => 12,
        'FIELD_SECOND'               => 13,
        'FIELD_MILLISECOND'          => 14,
        'FIELD_ZONE_OFFSET'          => 15,
        'FIELD_DST_OFFSET'           => 16,
        'FIELD_YEAR_WOY'             => 17,
        'FIELD_DOW_LOCAL'            => 18,
        'FIELD_EXTENDED_YEAR'        => 19,
        'FIELD_JULIAN_DAY'           => 20,
        'FIELD_MILLISECONDS_IN_DAY'  => 21,
        'FIELD_IS_LEAP_MONTH'        => 22,
        'FIELD_FIELD_COUNT'          => 23,
    );
    function getSetFields(IntlCalendar $cal) {
        global $fields;
        $ret = array();
        foreach ($fields as $name => $value) {
            if ($cal->isSet($value)) {
                $ret[] = $name;
            }
        }
        return $ret;
    }

    $cal = new IntlGregorianCalendar(2013, 2 /* March */, 15);
    echo "After GregorianCalendar creation\n";
    print_r(getSetFields($cal));
    echo "\n";

    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "After the formatter requested the extended year\n";
    print_r(getSetFields($cal));
    echo "\n";

    $cal->clear(IntlCalendar::FIELD_YEAR);
    echo "After the year has been cleared, the date stays the same\n";
    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "because FIELD_EXTENDED_YEAR is still set\n";
    print_r(getSetFields($cal));
    echo "\n";

    var_dump($cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR));
    echo "After the extended year has been cleared\n";
    print_r(getSetFields($cal));
    echo IntlDateFormatter::formatObject($cal), "\n";
    echo "\n";

    echo "After the fields are recalculated,\n"
            . " extended year is set again (to 1970)\n";
    print_r(getSetFields($cal));
    echo "\n";

    $cal->clear();
    echo "After calling variant with no arguments\n";
    print_r(getSetFields($cal));
    echo IntlDateFormatter::formatObject($cal), "\n";

Yukarıdaki örneğin çıktısı:

    After GregorianCalendar creation
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_YEAR
        [2] => FIELD_MONTH
        [3] => FIELD_DATE
    )

    15/03/2013 00:00:00
    After the formatter requested the extended year
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_YEAR
        [2] => FIELD_MONTH
        [3] => FIELD_DATE
        [4] => FIELD_EXTENDED_YEAR
    )

    After the year has been cleared, the date stays the same
    15/03/2013 00:00:00
    because FIELD_EXTENDED_YEAR is still set
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
        [3] => FIELD_EXTENDED_YEAR
    )

    bool(true)
    After the extended year has been cleared
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
    )
    15/03/1970 00:00:00

    After the fields are recalculated,
     extended year is set again (to 1970)
    Array
    (
        [0] => FIELD_ERA
        [1] => FIELD_MONTH
        [2] => FIELD_DATE
        [3] => FIELD_EXTENDED_YEAR
    )

    After calling variant with no arguments
    Array
    (
    )
    01/01/1970 00:00:00

# IntlCalendar::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::__construct — Private constructor for disallowing instantiation

### Açıklama

private function IntlCalendar::__construct()

A private constructor for disallowing instantiation with the new operator.

Call IntlCalendar::createInstance() instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# IntlCalendar::createInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::createInstance — Create a new IntlCalendar

### Açıklama

Nesne yönelimli kullanım

public static function IntlCalendar::createInstance(IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`, ?string `$locale` = `null`): ?IntlCalendar

Yordamsal kullanım

function intlcal_create_instance(IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`, ?string `$locale` = `null`): ?IntlCalendar

Given a timezone and locale, this method creates an IntlCalendar object. This factory method may return a subclass of IntlCalendar.

The calendar created will represent the time instance at which it was created, based on the system time. The fields can all be cleared by calling IntCalendar::clear() with no arguments. See also IntlGregorianCalendar::__construct().

### Bağımsız Değişkenler

`timezone`

  The timezone to use.

  - date_default_timezone_get() tarafından döndürüldüğü gibi ve date_default_timezone_set() işlevi üzerinden veya date.timezone ini yönergesinde belirtildiği gibi, öntanımlı zaman dilimi kullanıldığı durumda `null`.

  - Doğrudan kullanılacaksa, IntlTimeZone.

  - DateTimeZone. Tanımlayıcısı çıkarılır ve bir ICU zaman dilimi nesnesi oluşturulur; zaman dilimi PHP'nin değil, ICU'nun veritabanı tarafından desteklenir.

  - Geçerli bir ICU zaman dilimi tanımlayıcısı olması gereken bir dizge. Bkz: IntlTimeZone::createTimeZoneIDEnumeration(). `"GMT+08:30"` gibi ham gösterimler de kabul edilir

`locale`

  A locale to use or `null` to use the default locale.

### Dönen Değerler

The created IntlCalendar instance or `null` on failure.

### Örnekler

Örnek 1 IntlCalendar::createInstance()

    <?php
    ini_set('intl.default_locale', 'es_ES');
    ini_set('date.timezone', 'Europe/Madrid');

    $cal = IntlCalendar::createInstance();
    echo "No arguments\n";
    var_dump(get_class($cal),
            IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
    echo "\n";

    echo "Explicit timezone\n";
    $cal = IntlCalendar::createInstance(IntlTimeZone::getGMT());
    var_dump(get_class($cal),
            IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
    echo "\n";

    echo "Explicit locale (with calendar)\n";
    $cal = IntlCalendar::createInstance(NULL, 'es_ES@calendar=persian');
    var_dump(get_class($cal),
            IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));

Yukarıdaki örneğin çıktısı:

    No arguments
    string(21) "IntlGregorianCalendar"
    string(68) "martes 18 de junio de 2013 14:11:02 Hora de verano de Europa Central"

    Explicit timezone
    string(21) "IntlGregorianCalendar"
    string(45) "martes 18 de junio de 2013 12:11:02 GMT+00:00"

    Explicit locale (with calendar)
    string(12) "IntlCalendar"
    string(70) "martes 28 de Khordad de 1392 14:11:02 Hora de verano de Europa Central"

### Ayrıca Bakınız

- IntlGregorianCalendar::__construct() - Create the Gregorian Calendar class

# IntlCalendar::equals

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::equals — Compare time of two IntlCalendar objects for equality

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::equals(IntlCalendar `$other`): bool

Yordamsal kullanım

function intlcal_equals(IntlCalendar `$calendar`, IntlCalendar `$other`): bool

Returns true if this calendar and the given calendar have the same time. The settings, calendar types and field states do not have to be the same.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`other`

  The calendar to compare with the primary object.

### Dönen Değerler

Returns `true` if the current time of both this and the passed in IntlCalendar object are the same, or `false` otherwise.

Başarısızlık durumunda ayrıca `false` döner. Hataları yakalamak için ya intl_get_error_code() işlevini kullanın ya da Intl eklentisini istisnaları yavrulamaya ayarlayın.

### Örnekler

Örnek 1 IntlCalendar::equals()

    <?php
    ini_set('date.timezone', 'UTC');

    $cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
    $cal2 = clone $cal1;

    var_dump($cal1->equals($cal2)); //TRUE

    //The locale is not included in the comparison
    $cal2 = IntlCalendar::createInstance(NULL, 'pt_PT');
    $cal2->setTime($cal1->getTime());
    var_dump($cal1->equals($cal2)); //TRUE

    //And set fields state is not included as well
    $cal2->clear(IntlCalendar::FIELD_YEAR);
    var_dump($cal1->isSet(IntlCalendar::FIELD_YEAR) ==
            $cal2->isSet(IntlCalendar::FIELD_YEAR)); //FALSE
    var_dump($cal1->equals($cal2)); //TRUE

    //Neither is the calendar type
    $cal2 = IntlCalendar::createInstance(NULL, 'es_ES@calendar=islamic');
    $cal2->setTime($cal1->getTime());
    var_dump($cal1->equals($cal2)); //TRUE

    //Only the time is
    $cal2 = clone $cal1;
    $cal2->setTime($cal1->getTime() + 1.);
    var_dump($cal1->equals($cal2)); //FALSE

# IntlCalendar::fieldDifference

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::fieldDifference — Calculate difference between given time and this objectʼs time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::fieldDifference(float `$timestamp`, int `$field`): int|false

Yordamsal kullanım

function intlcal_field_difference(IntlCalendar `$calendar`, float `$timestamp`, int `$field`): int|false

Return the difference between the given time and the time this object is set to, with respect to the quantity specified the `field` parameter.

This method is meant to be called successively, first with the most significant field of interest down to the least significant field. To this end, as a side effect, this calendarʼs value for the field specified is advanced by the amount returned.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`timestamp`

  The time against which to compare the quantity represented by the `field`. For the result to be positive, the time given for this parameter must be ahead of the time of the object the method is being invoked on.

`field`

  The field that represents the quantity being compared.

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

Returns a (signed) difference of time in the unit associated with the specified field başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::fieldDifference()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'fr_FR');

    $cal1 = IntlCalendar::fromDateTime('2012-02-29 09:00:11');
    $cal2 = IntlCalendar::fromDateTime('2013-03-01 09:19:29');
    $time = $cal2->getTime();

    echo "Time before: ", IntlDateFormatter::formatObject($cal1), "\n";

    printf(
        "The difference in time is %d year(s), %d month(s), "
      . "%d day(s), %d hour(s) and %d minute(s)\n",
        $cal1->fieldDifference($time, IntlCalendar::FIELD_YEAR),
        $cal1->fieldDifference($time, IntlCalendar::FIELD_MONTH),
        $cal1->fieldDifference($time, IntlCalendar::FIELD_DAY_OF_MONTH),
        $cal1->fieldDifference($time, IntlCalendar::FIELD_HOUR_OF_DAY),
        $cal1->fieldDifference($time, IntlCalendar::FIELD_MINUTE)
    );

    //now it was advanced to the target time, exception for the seconds,
    //for which we did not measure the difference
    echo "Time after: ", IntlDateFormatter::formatObject($cal1), "\n";

Yukarıdaki örneğin çıktısı:

    Time before: 29 févr. 2012 09:00:11
    The difference in time is 1 year(s), 0 month(s), 1 day(s), 0 hour(s) and 19 minute(s)
    Time after: 1 mars 2013 09:19:11

# IntlCalendar::fromDateTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a2)

IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string

### Açıklama

Nesne yönelimli kullanım

public static function IntlCalendar::fromDateTime(DateTime|string `$datetime`, ?string `$locale` = `null`): ?IntlCalendar

Yordamsal kullanım

function intlcal_from_date_time(DateTime|string `$datetime`, ?string `$locale` = `null`): ?IntlCalendar

Creates an IntlCalendar object either from a DateTime object or from a string from which a DateTime object can be built.

The new calendar will represent not only the same instant as the given DateTime (subject to precision loss for dates very far into the past or future), but also the same timezone (subject to the caveat that different timezone databases will be used, and therefore the results may differ).

### Bağımsız Değişkenler

`datetime`

  A DateTime object or a string that can be passed to DateTime::__construct().

### Dönen Değerler

The created IntlCalendar object or `null` in case of failure. If a string is passed, any exception that occurs inside the DateTime constructor is propagated.

### Örnekler

Örnek 1 IntlCalendar::fromDateTime()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');

    //same as IntlCalendar::fromDateTime(new DateTime(...))
    $cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin', 'de_DE');

    //Note the timezone is Europe/Berlin, not the default Europe/Lisbon
    echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

Yukarıdaki örneğin çıktısı:

    2013 Februar 28 00:01:02 Deutschland Zeit

# IntlCalendar::get

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::get — Get the value for a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::get(int `$field`): int|false

Yordamsal kullanım

function intlcal_get(IntlCalendar `$calendar`, int `$field`): int|false

Gets the value for a specific field.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An integer with the value of the time field.

### Örnekler

Örnek 1 IntlCalendar::get()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');

    $class = new ReflectionClass('IntlCalendar');
    $fields = array();
    foreach ($class->getConstants() as $name => $val) {
        if (strpos($name, 'FIELD_') !== 0 || $val > 22)
            continue;
        $fields[$val] = $name;
    }

    $cal = IntlCalendar::createInstance(); // current time
    var_dump(IntlDateFormatter::formatObject($cal));
    foreach ($fields as $val => $name) {
        echo "$val ($name)", "\n    ", $cal->get($val), "\n";
    }

Yukarıdaki örneğin çıktısı:

    string(23) "Jul 1, 2013, 4:44:44 AM"
    0 (FIELD_ERA)
        1
    1 (FIELD_YEAR)
        2013
    2 (FIELD_MONTH)
        6
    3 (FIELD_WEEK_OF_YEAR)
        27
    4 (FIELD_WEEK_OF_MONTH)
        1
    5 (FIELD_DAY_OF_MONTH)
        1
    6 (FIELD_DAY_OF_YEAR)
        182
    7 (FIELD_DAY_OF_WEEK)
        2
    8 (FIELD_DAY_OF_WEEK_IN_MONTH)
        1
    9 (FIELD_AM_PM)
        0
    10 (FIELD_HOUR)
        4
    11 (FIELD_HOUR_OF_DAY)
        4
    12 (FIELD_MINUTE)
        44
    13 (FIELD_SECOND)
        44
    14 (FIELD_MILLISECOND)
        551
    15 (FIELD_ZONE_OFFSET)
        0
    16 (FIELD_DST_OFFSET)
        3600000
    17 (FIELD_YEAR_WOY)
        2013
    18 (FIELD_DOW_LOCAL)
        2
    19 (FIELD_EXTENDED_YEAR)
        2013
    20 (FIELD_JULIAN_DAY)
        2456475
    21 (FIELD_MILLISECONDS_IN_DAY)
        17084551
    22 (FIELD_IS_LEAP_MONTH)
        0

# IntlCalendar::getActualMaximum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getActualMaximum — The maximum value for a field, considering the objectʼs current time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getActualMaximum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_actual_maximum(IntlCalendar `$calendar`, int `$field`): int|false

Returns a fieldʼs relative maximum value around the current time. The exact semantics vary by field, but in the general case this is the value that would be obtained if one would set the field value into the smallest relative maximum for the field and would increment it until reaching the global maximum or the field value wraps around, in which the value returned would be the global maximum or the value before the wrapping, respectively.

For instance, in the gregorian calendar, the actual maximum value for the day of month would vary between `28` and `31`, depending on the month and year of the current time.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing the maximum value in the units associated with the given `field` başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getActualMaximum()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');

    $cal = IntlCalendar::fromDateTime('2013-02-15');
    var_dump($cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)); //28

    $cal->add(IntlCalendar::FIELD_EXTENDED_YEAR, -1);
    var_dump($cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)); //29

Yukarıdaki örneğin çıktısı:

    int(28)
    int(29)

### Ayrıca Bakınız

- IntlCalendar::getMaximum() - Get the global maximum value for a field
- IntlCalendar::getLeastMaximum() - Get the smallest local maximum for a field
- IntlCalendar::getActualMinimum() - The minimum value for a field, considering the objectʼs current time

# IntlCalendar::getActualMinimum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getActualMinimum — The minimum value for a field, considering the objectʼs current time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getActualMinimum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_actual_minimum(IntlCalendar `$calendar`, int `$field`): int|false

Returns a fieldʼs relative minimum value around the current time. The exact semantics vary by field, but in the general case this is the value that would be obtained if one would set the field value into the greatest relative minimum for the field and would decrement it until reaching the global minimum or the field value wraps around, in which the value returned would be the global minimum or the value before the wrapping, respectively.

For the Gregorian calendar, this is always the same as IntlCalendar::getMinimum().

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing the minimum value in the fieldʼs unit başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- IntlCalendar::getMinimum() - Get the global minimum value for a field
- IntlCalendar::getGreatestMinimum() - Get the largest local minimum value for a field
- IntlCalendar::getActualMaximum() - The maximum value for a field, considering the objectʼs current time

# IntlCalendar::getAvailableLocales

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getAvailableLocales — Get array of locales for which there is data

### Açıklama

Nesne yönelimli kullanım

public static function IntlCalendar::getAvailableLocales(): array

Yordamsal kullanım

function intlcal_get_available_locales(): array

Gives the list of locales for which calendars are installed. As of ICU 51, this is the list of all installed ICU locales.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of strings, one for each locale.

### Örnekler

Örnek 1 IntlCalendar::getAvailableLocales()

    <?php
    print_r(IntlCalendar::getAvailableLocales());

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => af
        [1] => af_NA
        [2] => af_ZA
        [3] => agq
        [4] => agq_CM
        [5] => ak
        [6] => ak_GH
        [7] => am
        [8] => am_ET
        [9] => ar
        [10] => ar_001
        [11] => ar_AE
        [12] => ar_BH
        [13] => ar_DJ
        … output abbreviated …
        [595] => zh_Hant_HK
        [596] => zh_Hant_MO
        [597] => zh_Hant_TW
        [598] => zu
        [599] => zu_ZA
    )

# IntlCalendar::getDayOfWeekType

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getDayOfWeekType(int `$dayOfWeek`): int|false

Yordamsal kullanım

function intlcal_get_day_of_week_type(IntlCalendar `$calendar`, int `$dayOfWeek`): int|false

Returns whether the passed day is a weekday (`IntlCalendar::DOW_TYPE_WEEKDAY`), a weekend day (`IntlCalendar::DOW_TYPE_WEEKEND`), a day during which a transition occurs into the weekend (`IntlCalendar::DOW_TYPE_WEEKEND_OFFSET`) or a day during which the weekend ceases (`IntlCalendar::DOW_TYPE_WEEKEND_CEASE`).

If the return is either `IntlCalendar::DOW_TYPE_WEEKEND_OFFSET` or `IntlCalendar::DOW_TYPE_WEEKEND_CEASE`, then IntlCalendar::getWeekendTransition() can be called to obtain the time of the transition.

This function requires ICU 4.4 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`dayOfWeek`

  One of the constants `IntlCalendar::DOW_SUNDAY`, `IntlCalendar::DOW_MONDAY`, …, `IntlCalendar::DOW_SATURDAY`.

### Dönen Değerler

Returns one of the constants `IntlCalendar::DOW_TYPE_WEEKDAY`, `IntlCalendar::DOW_TYPE_WEEKEND`, `IntlCalendar::DOW_TYPE_WEEKEND_OFFSET` or `IntlCalendar::DOW_TYPE_WEEKEND_CEASE` başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getDayOfWeekType()

    <?php
    foreach (array('en_US', 'ar_SA') as $locale) {
        echo "Locale: ", Locale::getDisplayName($locale, "en_US"), "\n";

        $cal = IntlCalendar::createInstance('UTC', $locale);

        for ($i = IntlCalendar::DOW_SUNDAY; $i <= IntlCalendar::DOW_SATURDAY; $i++) {
            $type = $cal->getDayOfWeekType($i);
            $transition = ($type !== IntlCalendar::DOW_TYPE_WEEKDAY)
                ? $cal->getWeekendTransition($i)
                : '';
            echo $i, " ", $type, " ", $transition, "\n";
        }
        echo "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Locale: English (United States)
    1 1 86400000
    2 0
    3 0
    4 0
    5 0
    6 0
    7 1 0

    Locale: Arabic (Saudi Arabia)
    1 0
    2 0
    3 0
    4 0
    5 0
    6 1 0
    7 1 86400000

# IntlCalendar::getErrorCode

# intlcal_get_error_code

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getErrorCode -- intlcal_get_error_code — Get last error code on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlCalendar::getErrorCode(): int|false

Yordamsal kullanım:

function intlcal_get_error_code(IntlCalendar `$calendar`): int|false

Returns the numeric ICU error code for the last call on this object (including cloning) or the IntlCalendar given for the `calendar` parameter (in the procedural‒style version). This may indicate only a warning (negative error code) or no error at all (`U_ZERO_ERROR`). The actual presence of an error can be tested with intl_is_failure().

Invalid arguments detected on the PHP side (before invoking functions of the ICU library) are not recorded for the purposes of this function.

The last error that occurred in any call to a function of the intl extension, including early argument errors, can be obtained with intl_get_error_code(). This function resets the global error code, but not the objectʼs error code.

### Bağımsız Değişkenler

`calendar`

  The calendar object, on the procedural style interface.

### Dönen Değerler

An ICU error code indicating either success, failure or a warning. Returns `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::getErrorCode() and IntlCalendar::getErrorMessage()

    <?php
    ini_set("intl.error_level", E_WARNING);
    ini_set("intl.default_locale", "nl");

    $intlcal = new IntlGregorianCalendar(2012, 1, 29);
    var_dump(
        $intlcal->getErrorCode(),
        $intlcal->getErrorMessage()
    );
    $intlcal->fieldDifference(-1e100, IntlCalendar::FIELD_SECOND);

    var_dump(
        $intlcal->getErrorCode(),
        $intlcal->getErrorMessage()
    );

Yukarıdaki örneğin çıktısı:

    int(0)
    string(12) "U_ZERO_ERROR"

    Warning: IntlCalendar::fieldDifference(): intlcal_field_difference: Call to ICU method has failed in /home/glopes/php/ws/example.php on line 10
    int(1)
    string(81) "intlcal_field_difference: Call to ICU method has failed: U_ILLEGAL_ARGUMENT_ERROR"

### Ayrıca Bakınız

- IntlCalendar::getErrorMessage() - Get last error message on the object
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar
- intl_error_name() - Belirtilen hata kodunun simgesel ismini döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_get_error_message() - Son hatayı açıklayan bir dizge ile döner

# IntlCalendar::getErrorMessage

# intlcal_get_error_message

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getErrorMessage -- intlcal_get_error_message — Get last error message on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlCalendar::getErrorMessage(): string|false

Yordamsal kullanım:

function intlcal_get_error_message(IntlCalendar `$calendar`): string|false

Returns the error message (if any) associated with the error reported by IntlCalendar::getErrorCode() or intlcal_get_error_code(). If there is no associated error message, only the string representation of the name of the error constant will be returned. Otherwise, the message also includes a message set on the side of the PHP binding.

### Bağımsız Değişkenler

`calendar`

  The calendar object, on the procedural style interface.

### Dönen Değerler

The error message associated with last error that occurred in a function call on this object, or a string indicating the non-existence of an error. Returns `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::getErrorMessage()

    <?php
    $cal = IntlCalendar::createInstance('UTC', 'en_US');
    var_dump($cal->getErrorMessage());

    $cal->getWeekendTransition(IntlCalendar::DOW_WEDNESDAY);
    var_dump($cal->getErrorMessage());

Yukarıdaki örneğin çıktısı:

    string(12) "U_ZERO_ERROR"
    string(82) "intlcal_get_weekend_transition: Error calling ICU method: U_ILLEGAL_ARGUMENT_ERROR"

# IntlCalendar::getFirstDayOfWeek

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendarʼs locale

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getFirstDayOfWeek(): int|false

Yordamsal kullanım

function intlcal_get_first_day_of_week(IntlCalendar `$calendar`): int|false

The week day deemed to start a week, either the default value for this locale or the value set with IntlCalendar::setFirstDayOfWeek().

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

One of the constants `IntlCalendar::DOW_SUNDAY`, `IntlCalendar::DOW_MONDAY`, …, `IntlCalendar::DOW_SATURDAY` başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getFirstDayOfWeek()

    <?php
    ini_set('date.timezone', 'UTC');

    $cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
    var_dump($cal1->getFirstDayOfWeek()); // Monday
    $cal1->set(2013, 1 /* February */, 3); // a Sunday
    var_dump($cal1->get(IntlCalendar::FIELD_WEEK_OF_YEAR)); // 5

    $cal2 = IntlCalendar::createInstance(NULL, 'en_US');
    var_dump($cal2->getFirstDayOfWeek()); // Sunday
    $cal2->set(2013, 1 /* February */, 3); // a Sunday
    var_dump($cal2->get(IntlCalendar::FIELD_WEEK_OF_YEAR)); // 6

Yukarıdaki örneğin çıktısı:

    int(2)
    int(5)
    int(1)
    int(6)

### Ayrıca Bakınız

- IntlCalendar::setFirstDayOfWeek() - Set the day on which the week is deemed to start

# IntlCalendar::getGreatestMinimum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getGreatestMinimum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_greatest_minimum(IntlCalendar `$calendar`, int `$field`): int|false

Returns the largest local minimum for a field. This should be a value larger or equal to that returned by IntlCalendar::getActualMinimum(), which is in its turn larger or equal to that returned by IntlCalendar::getMinimum(). All these three functions return the same value for the Gregorian calendar.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing a field value, in the fieldʼs unit, başarısızlık durumunda `false` döner.

# IntlCalendar::getKeywordValuesForLocale

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values

### Açıklama

Nesne yönelimli kullanım

public static function IntlCalendar::getKeywordValuesForLocale(string `$keyword`, string `$locale`, bool `$onlyCommon`): IntlIterator|false

Yordamsal kullanım

function intlcal_get_keyword_values_for_locale(string `$keyword`, string `$locale`, bool `$onlyCommon`): IntlIterator|false

For a given locale key, get the set of values for that key that would result in a different behavior. For now, only the `'calendar'` keyword is supported.

This function requires ICU 4.2 or later.

### Bağımsız Değişkenler

`keyword`

  The locale keyword for which relevant values are to be queried. Only `'calendar'` is supported.

`locale`

  The locale onto which the keyword/value pair are to be appended.

`onlyCommon`

  Whether to show only the values commonly used for the specified locale.

### Dönen Değerler

An iterator that yields strings with the locale keyword values başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getKeywordValuesForLocale()

    <?php
    print_r(
            iterator_to_array(
                    IntlCalendar::getKeywordValuesForLocale(
                            'calendar', 'fa_IR', true)));
    print_r(
            iterator_to_array(
                    IntlCalendar::getKeywordValuesForLocale(
                            'calendar', 'fa_IR', false)));

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => persian
        [1] => gregorian
        [2] => islamic
        [3] => islamic-civil
    )
    Array
    (
        [0] => persian
        [1] => gregorian
        [2] => islamic
        [3] => islamic-civil
        [4] => japanese
        [5] => buddhist
        [6] => roc
        [7] => hebrew
        [8] => chinese
        [9] => indian
        [10] => coptic
        [11] => ethiopic
        [12] => ethiopic-amete-alem
    )

# IntlCalendar::getLeastMaximum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getLeastMaximum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_least_maximum(IntlCalendar `$calendar`, int `$field`): int|false

Returns the smallest local maximum for a field. This should be a value smaller or equal to that returned by IntlCalendar::getActualMaximum(), which is in its turn smaller or equal to that returned by IntlCalendar::getMaximum().

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing a field value in the fieldʼs unit başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Maxima examples

    <?php
    ini_set('date.timezone', 'UTC');
    ini_set('intl.default_locale', 'it_IT');

    $cal = new IntlGregorianCalendar(2013, 3 /* April */, 6);
    var_dump(
        $cal->getLeastMaximum(IntlCalendar::FIELD_DAY_OF_MONTH),  // 28
        $cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH), // 30
        $cal->getMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)        // 31
    );

Yukarıdaki örneğin çıktısı:

    int(28)
    int(30)
    int(31)

### Ayrıca Bakınız

- IntlCalendar::getActualMaximum() - The maximum value for a field, considering the objectʼs current time
- IntlCalendar::getMaximum() - Get the global maximum value for a field
- IntlCalendar::getGreatestMinimum() - Get the largest local minimum value for a field

# IntlCalendar::getLocale

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getLocale — Get the locale associated with the object

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getLocale(int `$type`): string|false

Yordamsal kullanım

function intlcal_get_locale(IntlCalendar `$calendar`, int `$type`): string|false

Returns the locale used by this calendar object.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`type`

  Whether to fetch the actual locale (the locale from which the calendar data originates, with `Locale::ACTUAL_LOCALE`) or the valid locale, i.e., the most specific locale supported by ICU relatively to the requested locale – see `Locale::VALID_LOCALE`. From the most general to the most specific, the locales are ordered in this fashion – actual locale, valid locale, requested locale.

### Dönen Değerler

A locale string başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getLocale()

    <?php
    $cal = IntlCalendar::createInstance(IntlTimeZone::getGMT(), 'en_US_CALIFORNIA');
    var_dump(
        $cal->getLocale(Locale::ACTUAL_LOCALE),
        $cal->getLocale(Locale::VALID_LOCALE)
    );

Yukarıdaki örneğin çıktısı:

    string(2) "en"
    string(5) "en_US"

# IntlCalendar::getMaximum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getMaximum — Get the global maximum value for a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getMaximum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_maximum(IntlCalendar `$calendar`, int `$field`): int|false

Gets the global maximum for a field, in this specific calendar. This value is larger or equal to that returned by IntlCalendar::getActualMaximum(), which is in its turn larger or equal to that returned by IntlCalendar::getLeastMaximum().

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing a field value in the fieldʼs unit başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- IntlCalendar::getActualMaximum() - The maximum value for a field, considering the objectʼs current time
- IntlCalendar::getLeastMaximum() - Get the smallest local maximum for a field
- IntlCalendar::getMinimum() - Get the global minimum value for a field

# IntlCalendar::getMinimalDaysInFirstWeek

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getMinimalDaysInFirstWeek(): int|false

Yordamsal kullanım

function intlcal_get_minimal_days_in_first_week(IntlCalendar `$calendar`): int|false

Returns the smallest number of days the first week of a year or month must have in the new year or month. For instance, in the Gregorian calendar, if this value is 1, then the first week of the year will necessarily include January 1st, while if this value is 7, then the week with January 1st will be the first week of the year only if the day of the week for January 1st matches the day of the week returned by IntlCalendar::getFirstDayOfWeek(); otherwise it will be the previous yearʼs last week.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

An int representing a number of days başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlCalendar::getMinimalDaysInFirstWeek()

    <?php
    ini_set('date.timezone', 'UTC');
    ini_set('intl.default_locale', 'en_US');

    $cal = new IntlGregorianCalendar(2013, 0 /* January */, 2);
    var_dump(IntlDateFormatter::formatObject($cal, 'cccc')); // Wednesday

    var_dump($cal->getMinimalDaysInFirstWeek(), // 1
    $cal->getFirstDayofWeek()); // 1 (Sunday)

    // Week 1 of 2013
    var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

    $cal->setMinimalDaysInFirstWeek(4);
    // Still Week 1 of 2013 (1st week has 5 days in the new year)
    var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

    $cal->setMinimalDaysInFirstWeek(6);
    // Week 53 of 2012
    var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

Yukarıdaki örneğin çıktısı:

    string(9) "Wednesday"
    int(1)
    int(1)
    string(14) "Week 1 of 2013"
    string(14) "Week 1 of 2013"
    string(15) "Week 53 of 2012"

# IntlCalendar::getMinimum

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getMinimum — Get the global minimum value for a field

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getMinimum(int `$field`): int|false

Yordamsal kullanım

function intlcal_get_minimum(IntlCalendar `$calendar`, int `$field`): int|false

Gets the global minimum for a field, in this specific calendar. This value is smaller or equal to that returned by IntlCalendar::getActualMinimum(), which is in its turn smaller or equal to that returned by IntlCalendar::getGreatestMinimum(). For the Gregorian calendar, these three functions always return the same value (for each field).

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

An int representing a value for the given field in the fieldʼs unit başarısızlık durumunda `false` döner.

# IntlCalendar::getNow

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getNow — Get number representing the current time

### Açıklama

Nesne yönelimli kullanım

public static function IntlCalendar::getNow(): float

Yordamsal kullanım

function intlcal_get_now(): float

The number of milliseconds that have passed since the reference date. This number is derived from the system time.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A float representing a number of milliseconds since the epoch, not counting leap seconds.

### Örnekler

Örnek 1 IntlCalendar::getNow()

    <?php
    $formatter = IntlDateFormatter::create('es_ES',
            IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,
            'Europe/Madrid');

    $val = IntlCalendar::getNow();

    var_dump($val);
    echo $formatter->format(IntlCalendar::getNow() / 1000.), "\n";

Yukarıdaki örneğin çıktısı:

    float(1371425814666)
    lunes, 17 de junio de 2013 01:36:54 Hora de verano de Europa central

# IntlCalendar::getRepeatedWallTimeOption

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getRepeatedWallTimeOption(): int

Yordamsal kullanım

function intlcal_get_repeated_wall_time_option(IntlCalendar `$calendar`): int

Gets the current strategy for dealing with wall times that are repeated whenever the clock is set back during dailight saving time end transitions. The default value is `IntlCalendar::WALLTIME_LAST`.

This function requires ICU 4.9 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

One of the constants `IntlCalendar::WALLTIME_FIRST` or `IntlCalendar::WALLTIME_LAST`.

### Örnekler

Örnek 1 IntlCalendar::getRepeatedWallTimeOption()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');
    ini_set('intl.error_level', E_WARNING);

    //On October 27th at 0200, the clock goes back 1 hour and from GMT+01 to GMT+00
    $cal = new IntlGregorianCalendar(2013, 9 /* October */, 27, 1, 30);

    var_dump($cal->getRepeatedWalltimeOption()); // 0 WALLTIME_LAST

    $formatter = IntlDateFormatter::create(
        NULL,
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'UTC'
    );
    var_dump($formatter->format($cal->getTime() / 1000.));

    $cal->setRepeatedWalltimeOption(IntlCalendar::WALLTIME_FIRST);
    var_dump($cal->getRepeatedWalltimeOption()); // 1 WALLTIME_FIRST
    $cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

    var_dump($formatter->format($cal->getTime() / 1000.));

Yukarıdaki örneğin çıktısı:

    int(0)
    string(42) "Sunday, October 27, 2013 at 1:30:00 AM GMT"
    int(1)
    string(43) "Sunday, October 27, 2013 at 12:30:00 AM GMT"

### Ayrıca Bakınız

- IntlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time
- IntlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
- IntlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions

# IntlCalendar::getSkippedWallTimeOption

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getSkippedWallTimeOption(): int

Yordamsal kullanım

function intlcal_get_skipped_wall_time_option(IntlCalendar `$calendar`): int

Gets the current strategy for dealing with wall times that are skipped whenever the clock is forwarded during dailight saving time start transitions. The default value is `IntlCalendar::WALLTIME_LAST`.

The calendar must be lenient for this option to have any effect, otherwise attempting to set a non-existing time will cause an error.

This function requires ICU 4.9 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

One of the constants `IntlCalendar::WALLTIME_FIRST`, `IntlCalendar::WALLTIME_LAST` or `IntlCalendar::WALLTIME_NEXT_VALID`.

### Örnekler

Örnek 1 IntlCalendar::getSkippedWallTimeOption()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');
    ini_set('intl.error_level', E_WARNING);

    //On March 31st at 0100, the clock goes forward 1 hour and from GMT+00 to GMT+01
    $cal = new IntlGregorianCalendar(2013, 2 /* March */, 31, 1, 30);

    var_dump(
        $cal->isLenient(),               // true
        $cal->getSkippedWalltimeOption() // 0 WALLTIME_LAST
    );

    $formatter = IntlDateFormatter::create(
        NULL,
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'UTC'
    );
    var_dump($formatter->format($cal->getTime() / 1000));

    $cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_FIRST);
    var_dump($cal->getSkippedWalltimeOption()); // 1 WALLTIME_FIRST
    $cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

    var_dump($formatter->format($cal->getTime() / 1000));

    $cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_NEXT_VALID);
    var_dump($cal->getSkippedWalltimeOption()); // 2 WALLTIME_NEXT_VALID
    $cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

    var_dump($formatter->format($cal->getTime() / 1000));

Yukarıdaki örneğin çıktısı:

    bool(true)
    int(0)
    string(40) "Sunday, March 31, 2013 at 1:30:00 AM GMT"
    int(1)
    string(41) "Sunday, March 31, 2013 at 12:30:00 AM GMT"
    int(2)
    string(40) "Sunday, March 31, 2013 at 1:00:00 AM GMT"

### Ayrıca Bakınız

- IntlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time
- IntlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
- IntlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions

# IntlCalendar::getTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getTime — Get time currently represented by the object

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getTime(): float|false

Yordamsal kullanım

function intlcal_get_time(IntlCalendar `$calendar`): float|false

Returns the time associated with this object, expressed as the number of milliseconds since the epoch.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

A float representing the number of milliseconds elapsed since the reference time (1 Jan 1970 00:00:00 UTC), başarısızlık durumunda `false` döner

### Örnekler

Örnek 1 IntlCalendar::getTime()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');

    $cal = new IntlGregorianCalendar(2013, 4 /* May */, 1, 0, 0, 0);
    $time = $cal->getTime();
    var_dump($time, $time / 1000 == strtotime('2013-05-01 00:00:00')); //true

Yukarıdaki örneğin çıktısı:

    float(1367362800000)
    bool(true)

### Ayrıca Bakınız

- IntlCalendar::getNow() - Get number representing the current time

# IntlCalendar::getTimeZone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getTimeZone — Get the objectʼs timezone

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getTimeZone(): IntlTimeZone|false

Yordamsal kullanım

function intlcal_get_time_zone(IntlCalendar `$calendar`): IntlTimeZone|false

Returns the IntlTimeZone object associated with this calendar.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

An IntlTimeZone object corresponding to the one used internally in this object. Returns `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::getTimeZone()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');

    $cal = IntlCalendar::createInstance();
    print_r($cal->getTimeZone());

    $cal->setTimeZone('UTC');
    print_r($cal->getTimeZone());

    $cal = IntlCalendar::fromDateTime('2012-01-01 00:00:00 GMT+03:33');
    print_r($cal->getTimeZone());

Yukarıdaki örneğin çıktısı:

    IntlTimeZone Object
    (
        [valid] => 1
        [id] => Europe/Lisbon
        [rawOffset] => 0
        [currentOffset] => 3600000
    )
    IntlTimeZone Object
    (
        [valid] => 1
        [id] => UTC
        [rawOffset] => 0
        [currentOffset] => 0
    )
    IntlTimeZone Object
    (
        [valid] => 1
        [id] => GMT+03:33
        [rawOffset] => 12780000
        [currentOffset] => 12780000
    )

### Ayrıca Bakınız

- IntlCalendar::setTimeZone() - Set the timezone used by this calendar
- IntlCalendar::createInstance() - Create a new IntlCalendar
- IntlGregorianCalendar::__construct() - Create the Gregorian Calendar class

# IntlCalendar::getType

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getType — Get the calendar type

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getType(): string

Yordamsal kullanım

function intlcal_get_type(IntlCalendar `$calendar`): string

A string describing the type of this calendar. This is one of the valid values for the calendar keyword value `'calendar'`.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

A string representing the calendar type, such as `'gregorian'`, `'islamic'`, etc.

### Örnekler

Örnek 1 IntlCalendar::getType()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'en_US');

    $cal = IntlCalendar::createInstance(NULL, '@calendar=ethiopic-amete-alem');
    var_dump($cal->getType());

    $cal = new IntlGregorianCalendar();
    var_dump($cal->getType());

Yukarıdaki örneğin çıktısı:

    string(19) "ethiopic-amete-alem"
    string(9) "gregorian"

# IntlCalendar::getWeekendTransition

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::getWeekendTransition(int `$dayOfWeek`): int|false

Yordamsal kullanım

function intlcal_get_weekend_transition(IntlCalendar `$calendar`, int `$dayOfWeek`): int|false

Returns the number of milliseconds after midnight at which the weekend begins or ends.

This is only applicable for days of the week for which IntlCalendar::getDayOfWeekType() returns either `IntlCalendar::DOW_TYPE_WEEKEND_OFFSET` or `IntlCalendar::DOW_TYPE_WEEKEND_CEASE`. Calling this function for other days of the week is an error condition.

This function requires ICU 4.4 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`dayOfWeek`

  One of the constants `IntlCalendar::DOW_SUNDAY`, `IntlCalendar::DOW_MONDAY`, …, `IntlCalendar::DOW_SATURDAY`.

### Dönen Değerler

The number of milliseconds into the day at which the weekend begins or ends başarısızlık durumunda `false` döner.

### Örnekler

See example on IntlCalendar::getDayOfWeekType().

# IntlCalendar::inDaylightTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::inDaylightTime — Whether the objectʼs time is in Daylight Savings Time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::inDaylightTime(): bool

Yordamsal kullanım

function intlcal_in_daylight_time(IntlCalendar `$calendar`): bool

Whether, for the instant represented by this object and for this objectʼs timezone, daylight saving time is in place.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

Returns `true` if the date is in Daylight Savings Time, `false` otherwise.

Başarısızlık durumunda ayrıca `false` döner. Hataları yakalamak için ya intl_get_error_code() işlevini kullanın ya da Intl eklentisini istisnaları yavrulamaya ayarlayın.

### Örnekler

Örnek 1 IntlCalendar::inDaylightTime()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'pt_PT');

    $cal = new IntlGregorianCalendar(2013, 6 /* July */, 1, 4, 56, 31);
    var_dump($cal->inDaylightTime()); // true
    $cal->set(IntlCalendar::FIELD_MONTH, 11 /* December */);
    var_dump($cal->inDaylightTime()); // false

    //DST end transition on 2013-10-27 at 0200 (wall time back 1 hour)
    $cal = new IntlGregorianCalendar(2013, 9 /* October */, 27, 1, 30, 0);

    var_dump($cal->inDaylightTime()); // false (default WALLTIME_LAST)

    $cal->setRepeatedWallTimeOption(IntlCalendar::WALLTIME_FIRST);
    $cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1); // force time recalculation
    var_dump($cal->inDaylightTime()); // true

# IntlCalendar::isEquivalentTo

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::isEquivalentTo(IntlCalendar `$other`): bool

Yordamsal kullanım

function intlcal_is_equivalent_to(IntlCalendar `$calendar`, IntlCalendar `$other`): bool

Returns whether this and the given object are equivalent for all purposes except as to the time they have set. The locales do not have to match, as long as no change in behavior results from such mismatch. This includes the timezone, whether the lenient mode is set, the repeated and skipped wall time settings, the days of the week when the weekend starts and ceases and the times where such transitions occur. It may also include other calendar specific settings, such as the Gregorian/Julian transition instant.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`other`

  The other calendar against which the comparison is to be made.

### Dönen Değerler

Assuming there are no argument errors, returns `true` if the calendars are equivalent except possibly for their set time.

### Örnekler

Örnek 1 IntlCalendar::isEquivalentTo()

    <?php
    $cal1 = IntlCalendar::createInstance('Europe/Lisbon', 'pt_PT');
    $cal2 = IntlCalendar::createInstance('Europe/Lisbon', 'es_ES');
    $cal2->clear();

    var_dump($cal1->isEquivalentTo($cal2)); // true

    $cal3 = IntlCalendar::createInstance('Europe/Lisbon', 'en_US');
    var_dump($cal1->isEquivalentTo($cal3)); // false
    var_dump($cal1->getFirstDayOfWeek(),    // 2 (Monday)
    $cal3->getFirstDayOfWeek());            // 1 (Sunday)

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    int(2)
    int(1)

### Ayrıca Bakınız

- IntlCalendar::equals() - Compare time of two IntlCalendar objects for equality

# IntlCalendar::isLenient

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::isLenient(): bool

Yordamsal kullanım

function intlcal_is_lenient(IntlCalendar `$calendar`): bool

Returns whether the current date/time interpretations is lenient (the default). If that is case, some out of range values for fields will be accepted instead of raising an error.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

A bool representing whether the calendar is set to lenient mode.

### Örnekler

Örnek 1 IntlCalendar::isLenient()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'pt_PT');
    ini_set('intl.use_exceptions', '1');

    $cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
    var_dump(IntlDateFormatter::formatObject($cal), // 01/07/2013, 00:00:00
    $cal->isLenient()); // true

    $cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 33);
    var_dump(IntlDateFormatter::formatObject($cal)); // 02/08/2013, 00:00:00

    $cal->setLenient(false);
    var_dump($cal->isLenient()); // false
    $cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 33);
    var_dump(IntlDateFormatter::formatObject($cal)); // error

Yukarıdaki örneğin çıktısı:

    string(20) "01/07/2013, 00:00:00"
    bool(true)
    string(20) "02/08/2013, 00:00:00"
    bool(false)

    Fatal error: Uncaught exception 'IntlException' with message 'datefmt_format_object: error obtaining instant from IntlCalendar' in /home/foobar/example.php:16
    Stack trace:
    #0 /home/foobar/example.php(16): IntlDateFormatter::formatObject(Object(IntlGregorianCalendar))
    #1 {main}
      thrown in /home/foobar/example.php on line 16

# IntlCalendar::isSet

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::isSet — Whether a field is set

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::isSet(int `$field`): bool

Yordamsal kullanım

function intlcal_is_set(IntlCalendar `$calendar`, int `$field`): bool

Returns whether a field is set (as opposed to clear). Set fields take priority over unset fields and their default values when the date/time is being calculated. Fields set later take priority over fields set earlier.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

### Dönen Değerler

Assuming there are no argument errors, returns `true` if the field is set.

### Örnekler

See the example on IntlCalendar::clear().

### Ayrıca Bakınız

- IntlCalendar::clear() - Clear a field or all fields
- IntlCalendar::set() - Set a time field or several common fields at once

# IntlCalendar::isWeekend

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::isWeekend — Whether a certain date/time is in the weekend

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::isWeekend(?float `$timestamp` = `null`): bool

Yordamsal kullanım

function intlcal_is_weekend(IntlCalendar `$calendar`, ?float `$timestamp` = `null`): bool

Returns whether either the obejctʼs current time or the provided timestamp occur during a weekend in this objectʼs calendar system.

This function requires ICU 4.4 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`timestamp`

  An optional timestamp representing the number of milliseconds since the epoch, excluding leap seconds. If `null`, this objectʼs current time is used instead.

### Dönen Değerler

A bool indicating whether the given or this objectʼs time occurs in a weekend.

Başarısızlık durumunda ayrıca `false` döner. Hataları yakalamak için ya intl_get_error_code() işlevini kullanın ya da Intl eklentisini istisnaları yavrulamaya ayarlayın.

### Örnekler

Örnek 1 IntlCalendar::isWeekend()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');

    $cal = new IntlGregorianCalendar(NULL, 'en_US');
    $cal->set(2013, 6 /* July */, 7); // a Sunday

    var_dump($cal->isWeekend()); // true
    var_dump($cal->isWeekend(strtotime('2013-07-01 00:00:00'))); // false, Monday

    $cal = new IntlGregorianCalendar(NULL, 'ar_SA');
    $cal->set(2013, 6 /* July */, 7); // a Sunday
    var_dump($cal->isWeekend()); // false, Sunday not in weekend in this calendar

### Ayrıca Bakınız

- IntlCalendar::getDayOfWeekType() - Tell whether a day is a weekday, weekend or a day that has a transition between the two
- IntlCalendar::getWeekendTransition() - Get time of the day at which weekend begins or ends

# IntlCalendar::roll

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::roll — Add value to field without carrying into more significant fields

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::roll(int `$field`, int|bool `$value`): bool

Yordamsal kullanım

function intlcal_roll(IntlCalendar `$calendar`, int `$field`, int|bool `$value`): bool

Adds a (signed) amount to a field. The difference with respect to IntlCalendar::add() is that when the field value overflows, it does not carry into more significant fields.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

`value`

  The (signed) amount to add to the field, `true` for rolling up (adding `1`), or `false` for rolling down (subtracting `1`).

### Dönen Değerler

Returns `true` on success or `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::roll()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'pt_PT');

    $cal = new IntlGregorianCalendar(2013, 5 /* June */, 30);

    $cal->add(IntlCalendar::FIELD_DAY_OF_MONTH, 1);
    var_dump(IntlDateFormatter::formatObject($cal)); // "01/07/2013, 00:00:00"

    $cal->set(2013, 5 /* June */, 30);
    $cal->roll(IntlCalendar::FIELD_DAY_OF_MONTH, true); // roll up, same as rolling +1
    var_dump(IntlDateFormatter::formatObject($cal)); // "01/06/2013, 00:00:00"

Yukarıdaki örneğin çıktısı:

    string(20) "01/07/2013, 00:00:00"
    string(20) "01/06/2013, 00:00:00"

### Ayrıca Bakınız

- IntlCalendar::add() - Add a (signed) amount of time to a field
- IntlCalendar::set() - Set a time field or several common fields at once

# IntlCalendar::set

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::set — Set a time field or several common fields at once

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::set(int `$field`, int `$value`): true
public function IntlCalendar::set(
int `$year`,
int `$month`,
int `$dayOfMonth` = NULL,
int `$hour` = NULL,
int `$minute` = NULL,
int `$second` = NULL
): true

Yordamsal kullanım

function intlcal_set(IntlCalendar `$cal`, int `$field`, int `$value`): true
function intlcal_set(
IntlCalendar `$cal`,
int `$year`,
int `$month`,
int `$dayOfMonth` = NULL,
int `$hour` = NULL,
int `$minute` = NULL,
int `$second` = NULL
): bool

Sets either a specific field to the given value, or sets at once several common fields. The range of values that are accepted depend on whether the calendar is using the lenient mode.

For fields that conflict, the fields that are set later have priority.

This method cannot be called with exactly four arguments.

### Bağımsız Değişkenler

`cal`

  IntlCalendar örneği.

`field`

  IntlCalendar tarih/zaman allan sabitlerinden biri. Bu tamsayı değerler `0` ile `IntlCalendar::FIELD_COUNT` arasındadır.

`value`

  The new value of the given field.

`year`

  The new value for `IntlCalendar::FIELD_YEAR`.

`month`

  The new value for `IntlCalendar::FIELD_MONTH`. The month sequence is zero-based, i.e., January is represented by 0, February by 1, …, December is 11 and Undecember (if the calendar has it) is 12.

`dayOfMonth`

  The new value for `IntlCalendar::FIELD_DAY_OF_MONTH`.

`hour`

  The new value for `IntlCalendar::FIELD_HOUR_OF_DAY`.

`minute`

  The new value for `IntlCalendar::FIELD_MINUTE`.

`second`

  The new value for `IntlCalendar::FIELD_SECOND`.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.
8.4.0 | This had been deprecated in favor of the methods IntlCalendar::setDate() and IntlCalendar::setDateTime().

### Örnekler

Örnek 1 IntlCalendar::set()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'pt_PT');

    //Calls made later have priority
    $cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
    $cal->set(IntlCalendar::FIELD_YEAR, 2012);
    $cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
    var_dump(IntlDateFormatter::formatObject($cal));

    $cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
    $cal->set(IntlCalendar::FIELD_YEAR, 2012);
    $cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
    //the time has not been recalculated yet. If we clear the extended year,
    //the year set before will be used
    $cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR);
    var_dump(IntlDateFormatter::formatObject($cal));

Yukarıdaki örneğin çıktısı:

    string(20) "01/07/2011, 00:00:00"
    string(20) "01/07/2012, 00:00:00"

### Ayrıca Bakınız

- IntlCalendar::get() - Get the value for a field
- IntlCalendar::add() - Add a (signed) amount of time to a field
- IntlCalendar::roll() - Add value to field without carrying into more significant fields

# IntlCalendar::setDate

(PHP 8 >= 8.3.0)

IntlCalendar::setDate — Set a date fields

### Açıklama

public function IntlCalendar::setDate(int `$year`, int `$month`, int `$dayOfMonth`): void

Sets a date fields to the given value.

### Bağımsız Değişkenler

`year`

  The new value for `IntlCalendar::FIELD_YEAR`.

`month`

  The new value for `IntlCalendar::FIELD_MONTH`. The month sequence is zero-based, i.e., January is represented by 0, February by 1, …, December is 11 and Undecember (if the calendar has it) is 12.

`dayOfMonth`

  The new value for `IntlCalendar::FIELD_DAY_OF_MONTH`.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 IntlCalendar::setDate() example

    <?php
    $intlCal = IntlCalendar::createInstance('UTC');

    $intlCal->setDate(2012, 1, 29);
    ?>

# IntlCalendar::setDateTime

(PHP 8 >= 8.3.0)

IntlCalendar::setDateTime — Set a date and time fields

### Açıklama

public function IntlCalendar::setDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): void

Sets a date and time fields to the given value.

### Bağımsız Değişkenler

`year`

  The new value for `IntlCalendar::FIELD_YEAR`.

`month`

  The new value for `IntlCalendar::FIELD_MONTH`. The month sequence is zero-based, i.e., January is represented by 0, February by 1, …, December is 11 and Undecember (if the calendar has it) is 12.

`dayOfMonth`

  The new value for `IntlCalendar::FIELD_DAY_OF_MONTH`.

`hour`

  The new value for `IntlCalendar::FIELD_HOUR_OF_DAY`.

`minute`

  The new value for `IntlCalendar::FIELD_MINUTE`.

`second`

  The new value for `IntlCalendar::FIELD_SECOND`.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 IntlCalendar::setDateTime() example

    <?php
    $intlCal = IntlCalendar::createInstance('UTC');

    $intlCal->setDateTime(2012, 1, 29, 23, 58);
    ?>

# IntlCalendar::setFirstDayOfWeek

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setFirstDayOfWeek(int `$dayOfWeek`): true

Yordamsal kullanım

function intlcal_set_first_day_of_week(IntlCalendar `$calendar`, int `$dayOfWeek`): true

Defines the day of week deemed to start the week. This affects the behavior of fields that depend on the concept of week start and end such as `IntlCalendar::FIELD_WEEK_OF_YEAR` and `IntlCalendar::FIELD_YEAR_WOY`.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`dayOfWeek`

  One of the constants `IntlCalendar::DOW_SUNDAY`, `IntlCalendar::DOW_MONDAY`, …, `IntlCalendar::DOW_SATURDAY`.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.

### Örnekler

Örnek 1 IntlCalendar::setFirstDayOfWeek()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'es_ES');

    $cal = IntlCalendar::createInstance();
    $cal->set(2013, 5 /* June */, 30); // A Sunday

    var_dump($cal->getFirstDayOfWeek()); // 2 (Monday)

    echo IntlDateFormatter::formatObject($cal, <<<EOD
    'local day of week: 'cc'
    week of month    : 'W'
    week of year     : 'ww
    EOD
    ), "\n";

    $cal->setFirstDayOfWeek(IntlCalendar::DOW_SUNDAY);

    echo IntlDateFormatter::formatObject($cal, <<<EOD
    'local day of week: 'cc'
    week of month    : 'W'
    week of year     : 'ww
    EOD
    ), "\n";

Yukarıdaki örneğin çıktısı:

    int(2)
    local day of week: 7
    week of month    : 4
    week of year     : 26
    local day of week: 1
    week of month    : 5
    week of year     : 27

# IntlCalendar::setLenient

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setLenient(bool `$lenient`): true

Yordamsal kullanım

function intlcal_set_lenient(IntlCalendar `$calendar`, bool `$lenient`): true

Defines whether the calendar is ‘lenient mode’. In such a mode, some of out-of-bounds values for some fields are accepted, the behavior being similar to that of IntlCalendar::add() (i.e., the value wraps around, carrying into more significant fields each time). If the lenient mode is off, then such values will generate an error.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`lenient`

  Use `true` to activate the lenient mode; `false` otherwise.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.

### Örnekler

See the example in IntlCalendar::isLenient().

# IntlCalendar::setMinimalDaysInFirstWeek

(PHP 5 >= 5.5.1, PHP 7, PHP 8)

IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setMinimalDaysInFirstWeek(int `$days`): true

Yordamsal kullanım

function intlcal_set_minimal_days_in_first_week(IntlCalendar `$calendar`, int `$days`): true

Sets the smallest number of days the first week of a year or month must have in the new year or month. For instance, in the Gregorian calendar, if this value is 1, then the first week of the year will necessarily include January 1st, while if this value is 7, then the week with January 1st will be the first week of the year only if the day of the week for January 1st matches the day of the week returned by IntlCalendar::getFirstDayOfWeek(); otherwise it will be the previous yearʼs last week.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`days`

  The number of minimal days to set.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

ValueError if `days` is out of range (less than `1` or more than `7`).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | A ValueError is now thrown on invalid input. Previously, `false` was returned.

# IntlCalendar::setRepeatedWallTimeOption

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setRepeatedWallTimeOption(int `$option`): true

Yordamsal kullanım

function intlcal_set_repeated_wall_time_option(IntlCalendar `$calendar`, int `$option`): true

Sets the current strategy for dealing with wall times that are repeated whenever the clock is set back during dailight saving time end transitions. The default value is `IntlCalendar::WALLTIME_LAST` (take the post-DST instant). The other possible value is `IntlCalendar::WALLTIME_FIRST` (take the instant that occurs during DST).

This function requires ICU 4.9 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`option`

  One of the constants `IntlCalendar::WALLTIME_FIRST` or `IntlCalendar::WALLTIME_LAST`.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.

### Örnekler

See the example on IntlCalendar::getRepeatedWallTimeOption().

### Ayrıca Bakınız

- intlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time
- intlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
- intlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time

# IntlCalendar::setSkippedWallTimeOption

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setSkippedWallTimeOption(int `$option`): true

Yordamsal kullanım

function intlcal_set_skipped_wall_time_option(IntlCalendar `$calendar`, int `$option`): true

Sets the current strategy for dealing with wall times that are skipped whenever the clock is forwarded during dailight saving time start transitions. The default value is `IntlCalendar::WALLTIME_LAST` (take it as being the same instant as the one when the wall time is one hour more). Alternative values are `IntlCalendar::WALLTIME_FIRST` (same instant as the one with a wall time of one hour less) and `IntlCalendar::WALLTIME_NEXT_VALID` (same instant as when DST begins).

This affects only the instant represented by the calendar (as reported by IntlCalendar::getTime()), the field values will not be rewritten accordingly.

The calendar must be lenient for this option to have any effect, otherwise attempting to set a non-existing time will cause an error.

This function requires ICU 4.9 or later.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`option`

  One of the constants `IntlCalendar::WALLTIME_FIRST`, `IntlCalendar::WALLTIME_LAST` or `IntlCalendar::WALLTIME_NEXT_VALID`.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Dönüş türü artık `true`;evvelce, bool idi.

### Örnekler

See the example on IntlCalendar::getSkippedWallTimeOption().

### Ayrıca Bakınız

- intlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time
- intlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions
- intlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time

# IntlCalendar::setTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setTime(float `$timestamp`): bool

Yordamsal kullanım

function intlcal_set_time(IntlCalendar `$calendar`, float `$timestamp`): bool

Sets the instant represented by this object. The instant is represented by a float whose value should be an integer number of milliseconds since the epoch (1 Jan 1970 00:00:00.000 UTC), ignoring leap seconds. All the field values will be recalculated accordingly.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`timestamp`

  An instant represented by the number of number of milliseconds between such instant and the epoch, ignoring leap seconds.

### Dönen Değerler

Returns `true` on success and `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::setTime()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'fr_FR');

    $cal = new IntlGregorianCalendar(2013, 5 /* May */, 1, 12, 0, 0);

    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

    /* In Europe/Lisbon, on 2013-10-27 at 0200, the clock goes back one hour and
       the timezone from UTC+01 to UTC+00 */

    $cal->setTime(strtotime('2013-10-27 00:30:00 UTC') * 1000.);

    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

    $cal->setTime(strtotime('2013-10-27 01:30:00 UTC') * 1000.);

    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

Yukarıdaki örneğin çıktısı:

    samedi 1 juin 2013 12:00:00 heure avancée d’Europe de l’Ouest
    dimanche 27 octobre 2013 01:30:00 heure avancée d’Europe de l’Ouest
    dimanche 27 octobre 2013 01:30:00 heure normale d’Europe de l’Ouest

# IntlCalendar::setTimeZone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::setTimeZone — Set the timezone used by this calendar

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool

Yordamsal kullanım

function intlcal_set_time_zone(IntlCalendar `$calendar`, IntlTimeZone|DateTimeZone|string|null `$timezone`): bool

Defines a new timezone for this calendar. The time represented by the object is preserved to the detriment of the field values.

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

`timezone`

  The new timezone to be used by this calendar. It can be specified in the following ways:

  - date_default_timezone_get() tarafından döndürüldüğü gibi ve date_default_timezone_set() işlevi üzerinden veya date.timezone ini yönergesinde belirtildiği gibi, öntanımlı zaman dilimi kullanıldığı durumda `null`.

  - Doğrudan kullanılacaksa, IntlTimeZone.

  - DateTimeZone. Tanımlayıcısı çıkarılır ve bir ICU zaman dilimi nesnesi oluşturulur; zaman dilimi PHP'nin değil, ICU'nun veritabanı tarafından desteklenir.

  - Geçerli bir ICU zaman dilimi tanımlayıcısı olması gereken bir dizge. Bkz: IntlTimeZone::createTimeZoneIDEnumeration(). `"GMT+08:30"` gibi ham gösterimler de kabul edilir

### Dönen Değerler

Returns `true` on success and `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::setTimeZone()

    <?php
    ini_set('date.timezone', 'Europe/Lisbon');
    ini_set('intl.default_locale', 'es_ES');

    $cal = new IntlGregorianCalendar(2013, 5 /* May */, 1, 12, 0, 0);

    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
    echo "(instant {$cal->getTime()})\n";

    $cal->setTimeZone(IntlTimeZone::getGMT());
    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
    echo "(instant {$cal->getTime()})\n";

    $cal->setTimeZone('GMT+03:33');
    echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
    echo "(instant {$cal->getTime()})\n";

Yukarıdaki örneğin çıktısı:

    sábado, 1 de junio de 2013 12:00:00 Hora de verano de Europa occidental
    (instant 1370084400000)
    sábado, 1 de junio de 2013 11:00:00 GMT
    (instant 1370084400000)
    sábado, 1 de junio de 2013 14:33:00 GMT+03:33
    (instant 1370084400000)

# IntlCalendar::toDateTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a2)

IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object

### Açıklama

Nesne yönelimli kullanım

public function IntlCalendar::toDateTime(): DateTime|false

Yordamsal kullanım

function intlcal_to_date_time(IntlCalendar `$calendar`): DateTime|false

Create a DateTime object that represents the same instant (up to second precision, with a rounding error of less than 1 second) and has an analog timezone to this object (the difference being DateTimeʼs timezone will be backed by PHPʼs timezone while IntlCalendarʼs timezone is backed by ICUʼs).

### Bağımsız Değişkenler

`calendar`

  IntlCalendar örneği.

### Dönen Değerler

A DateTime object with the same timezone as this object (though using PHPʼs database instead of ICUʼs) and the same time, except for the smaller precision (second precision instead of millisecond). Returns `false` on failure.

### Örnekler

Örnek 1 IntlCalendar::toDateTime()

    <?php
    ini_set('date.timezone', 'UTC');
    ini_set('intl.default_locale', 'pt_PT');

    $cal = IntlCalendar::createInstance('Europe/Lisbon'); //current time

    $dt = $cal->toDateTime();
    print_r($dt);

Yukarıdaki örneğin çıktısı:

    DateTime Object
    (
        [date] => 2013-07-02 00:29:13
        [timezone_type] => 3
        [timezone] => Europe/Lisbon
    )

### Ayrıca Bakınız

- IntlCalendar::fromDateTime() - Create an IntlCalendar from a DateTime object or string
- IntlCalendar::getTime() - Get time currently represented by the object
- IntlCalendar::createInstance() - Create a new IntlCalendar
- DateTime::__construct() - Returns new DateTime object

## İçindekiler

- IntlCalendar::add — Add a (signed) amount of time to a field
- IntlCalendar::after — Whether this objectʼs time is after that of the passed object
- IntlCalendar::before — Whether this objectʼs time is before that of the passed object
- IntlCalendar::clear — Clear a field or all fields
- IntlCalendar::__construct — Private constructor for disallowing instantiation
- IntlCalendar::createInstance — Create a new IntlCalendar
- IntlCalendar::equals — Compare time of two IntlCalendar objects for equality
- IntlCalendar::fieldDifference — Calculate difference between given time and this objectʼs time
- IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string
- IntlCalendar::get — Get the value for a field
- IntlCalendar::getActualMaximum — The maximum value for a field, considering the objectʼs current time
- IntlCalendar::getActualMinimum — The minimum value for a field, considering the objectʼs current time
- IntlCalendar::getAvailableLocales — Get array of locales for which there is data
- IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two
- IntlCalendar::getErrorCode — Get last error code on the object
- IntlCalendar::getErrorMessage — Get last error message on the object
- IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendarʼs locale
- IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field
- IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values
- IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field
- IntlCalendar::getLocale — Get the locale associated with the object
- IntlCalendar::getMaximum — Get the global maximum value for a field
- IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have
- IntlCalendar::getMinimum — Get the global minimum value for a field
- IntlCalendar::getNow — Get number representing the current time
- IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time
- IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time
- IntlCalendar::getTime — Get time currently represented by the object
- IntlCalendar::getTimeZone — Get the objectʼs timezone
- IntlCalendar::getType — Get the calendar type
- IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends
- IntlCalendar::inDaylightTime — Whether the objectʼs time is in Daylight Savings Time
- IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time
- IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode
- IntlCalendar::isSet — Whether a field is set
- IntlCalendar::isWeekend — Whether a certain date/time is in the weekend
- IntlCalendar::roll — Add value to field without carrying into more significant fields
- IntlCalendar::set — Set a time field or several common fields at once
- IntlCalendar::setDate — Set a date fields
- IntlCalendar::setDateTime — Set a date and time fields
- IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start
- IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient
- IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have
- IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions
- IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions
- IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch
- IntlCalendar::setTimeZone — Set the timezone used by this calendar
- IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object

# The IntlGregorianCalendar class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

## Sınıf Sözdizimi

class IntlGregorianCalendar extends IntlCalendar {
/* Miras alınan sabitler */
public const int IntlCalendar::FIELD_ERA;
public const int IntlCalendar::FIELD_YEAR;
public const int IntlCalendar::FIELD_MONTH;
public const int IntlCalendar::FIELD_WEEK_OF_YEAR;
public const int IntlCalendar::FIELD_WEEK_OF_MONTH;
public const int IntlCalendar::FIELD_DATE;
public const int IntlCalendar::FIELD_DAY_OF_YEAR;
public const int IntlCalendar::FIELD_DAY_OF_WEEK;
public const int IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH;
public const int IntlCalendar::FIELD_AM_PM;
public const int IntlCalendar::FIELD_HOUR;
public const int IntlCalendar::FIELD_HOUR_OF_DAY;
public const int IntlCalendar::FIELD_MINUTE;
public const int IntlCalendar::FIELD_SECOND;
public const int IntlCalendar::FIELD_MILLISECOND;
public const int IntlCalendar::FIELD_ZONE_OFFSET;
public const int IntlCalendar::FIELD_DST_OFFSET;
public const int IntlCalendar::FIELD_YEAR_WOY;
public const int IntlCalendar::FIELD_DOW_LOCAL;
public const int IntlCalendar::FIELD_EXTENDED_YEAR;
public const int IntlCalendar::FIELD_JULIAN_DAY;
public const int IntlCalendar::FIELD_MILLISECONDS_IN_DAY;
public const int IntlCalendar::FIELD_IS_LEAP_MONTH;
public const int IntlCalendar::FIELD_FIELD_COUNT;
public const int IntlCalendar::FIELD_DAY_OF_MONTH;
public const int IntlCalendar::DOW_SUNDAY;
public const int IntlCalendar::DOW_MONDAY;
public const int IntlCalendar::DOW_TUESDAY;
public const int IntlCalendar::DOW_WEDNESDAY;
public const int IntlCalendar::DOW_THURSDAY;
public const int IntlCalendar::DOW_FRIDAY;
public const int IntlCalendar::DOW_SATURDAY;
public const int IntlCalendar::DOW_TYPE_WEEKDAY;
public const int IntlCalendar::DOW_TYPE_WEEKEND;
public const int IntlCalendar::DOW_TYPE_WEEKEND_OFFSET;
public const int IntlCalendar::DOW_TYPE_WEEKEND_CEASE;
public const int IntlCalendar::WALLTIME_FIRST;
public const int IntlCalendar::WALLTIME_LAST;
public const int IntlCalendar::WALLTIME_NEXT_VALID;
/* Yöntemler */
public function __construct(IntlTimeZone `$tz` = ?, string `$locale` = ?)
public function __construct(int `$timeZoneOrYear`, int `$localeOrMonth`, int `$dayOfMonth`)
public function __construct(
int `$timeZoneOrYear`,
int `$localeOrMonth`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
int `$second` = ?
)
public static function createFromDate(int `$year`, int `$month`, int `$dayOfMonth`): static
public static function createFromDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): static
public function getGregorianChange(): float
public function isLeapYear(int `$year`): bool
public function setGregorianChange(float `$timestamp`): bool
/* Miras alınan yöntemler */
public function IntlCalendar::add(int `$field`, int `$value`): bool
public function IntlCalendar::after(IntlCalendar `$other`): bool
public function IntlCalendar::before(IntlCalendar `$other`): bool
public function IntlCalendar::clear(?int `$field` = `null`): true
public static function IntlCalendar::createInstance(IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`, ?string `$locale` = `null`): ?IntlCalendar
public function IntlCalendar::equals(IntlCalendar `$other`): bool
public function IntlCalendar::fieldDifference(float `$timestamp`, int `$field`): int|false
public static function IntlCalendar::fromDateTime(DateTime|string `$datetime`, ?string `$locale` = `null`): ?IntlCalendar
public function IntlCalendar::get(int `$field`): int|false
public function IntlCalendar::getActualMaximum(int `$field`): int|false
public function IntlCalendar::getActualMinimum(int `$field`): int|false
public static function IntlCalendar::getAvailableLocales(): array
public function IntlCalendar::getDayOfWeekType(int `$dayOfWeek`): int|false
public function IntlCalendar::getErrorCode(): int|false
public function IntlCalendar::getErrorMessage(): string|false
public function IntlCalendar::getFirstDayOfWeek(): int|false
public function IntlCalendar::getGreatestMinimum(int `$field`): int|false
public static function IntlCalendar::getKeywordValuesForLocale(string `$keyword`, string `$locale`, bool `$onlyCommon`): IntlIterator|false
public function IntlCalendar::getLeastMaximum(int `$field`): int|false
public function IntlCalendar::getLocale(int `$type`): string|false
public function IntlCalendar::getMaximum(int `$field`): int|false
public function IntlCalendar::getMinimalDaysInFirstWeek(): int|false
public function IntlCalendar::getMinimum(int `$field`): int|false
public static function IntlCalendar::getNow(): float
public function IntlCalendar::getRepeatedWallTimeOption(): int
public function IntlCalendar::getSkippedWallTimeOption(): int
public function IntlCalendar::getTime(): float|false
public function IntlCalendar::getTimeZone(): IntlTimeZone|false
public function IntlCalendar::getType(): string
public function IntlCalendar::getWeekendTransition(int `$dayOfWeek`): int|false
public function IntlCalendar::inDaylightTime(): bool
public function IntlCalendar::isEquivalentTo(IntlCalendar `$other`): bool
public function IntlCalendar::isLenient(): bool
public function IntlCalendar::isSet(int `$field`): bool
public function IntlCalendar::isWeekend(?float `$timestamp` = `null`): bool
public function IntlCalendar::roll(int `$field`, int|bool `$value`): bool
public function IntlCalendar::set(int `$field`, int `$value`): true
public function IntlCalendar::set(
int `$year`,
int `$month`,
int `$dayOfMonth` = NULL,
int `$hour` = NULL,
int `$minute` = NULL,
int `$second` = NULL
): true
public function IntlCalendar::setDate(int `$year`, int `$month`, int `$dayOfMonth`): void
public function IntlCalendar::setDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): void
public function IntlCalendar::setFirstDayOfWeek(int `$dayOfWeek`): true
public function IntlCalendar::setLenient(bool `$lenient`): true
public function IntlCalendar::setMinimalDaysInFirstWeek(int `$days`): true
public function IntlCalendar::setRepeatedWallTimeOption(int `$option`): true
public function IntlCalendar::setSkippedWallTimeOption(int `$option`): true
public function IntlCalendar::setTime(float `$timestamp`): bool
public function IntlCalendar::setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool
public function IntlCalendar::toDateTime(): DateTime|false
}

# IntlGregorianCalendar::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlGregorianCalendar::__construct — Create the Gregorian Calendar class

### Açıklama

public function IntlGregorianCalendar::__construct(IntlTimeZone `$tz` = ?, string `$locale` = ?)
public function IntlGregorianCalendar::__construct(int `$timeZoneOrYear`, int `$localeOrMonth`, int `$dayOfMonth`)
public function IntlGregorianCalendar::__construct(
int `$timeZoneOrYear`,
int `$localeOrMonth`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
int `$second` = ?
)

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`tz`

`locale`

`timeZoneOrYear`

`localeOrMonth`

`dayOfMonth`

`hour`

`minute`

`second`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | This had been deprecated in favor of the methods IntlGregorianCalendar::createFromDate() and IntlGregorianCalendar::createFromDateTime().

# IntlGregorianCalendar::createFromDate

(PHP 8 >= 8.3.0)

IntlGregorianCalendar::createFromDate — Create a new IntlGregorianCalendar instance from date

### Açıklama

public static function IntlGregorianCalendar::createFromDate(int `$year`, int `$month`, int `$dayOfMonth`): static

Creates a new IntlGregorianCalendar instance from date.

### Bağımsız Değişkenler

`year`

  The new value for `IntlGregorianCalendar::FIELD_YEAR`.

`month`

  The new value for `IntlGregorianCalendar::FIELD_MONTH`. The month sequence is zero-based, i.e., January is represented by 0, February by 1, …, December is 11 and Undecember (if the calendar has it) is 12.

`dayOfMonth`

  The new value for `IntlGregorianCalendar::FIELD_DAY_OF_MONTH`.

### Dönen Değerler

Returns a new IntlGregorianCalendar instance.

### Örnekler

Örnek 1 IntlGregorianCalendar::createFromDate() example

    <?php

    $intlCalendar = IntlGregorianCalendar::createFromDate(2023, 11, 23);
    var_dump($intlCalendar);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(IntlGregorianCalendar)#1 (5) {
      ["valid"]=>
      bool(true)
      ["type"]=>
      string(9) "gregorian"
      ["timeZone"]=>
      array(4) {
        ["valid"]=>
        bool(true)
        ["id"]=>
        string(16) "Europe/Amsterdam"
        ["rawOffset"]=>
        int(3600000)
        ["currentOffset"]=>
        int(3600000)
      }
      ["locale"]=>
      string(11) "en_US_POSIX"
      ["fields"]=>
      array(23) {
        ["era"]=>
        int(1)
        ["year"]=>
        int(2023)
        ["month"]=>
        int(11)
        ["week of year"]=>
        int(51)
        ["week of month"]=>
        int(4)
        ["day of year"]=>
        int(357)
        ["day of month"]=>
        int(23)
        ["day of week"]=>
        int(7)
        ["day of week in month"]=>
        int(4)
        ["AM/PM"]=>
        int(0)
        ["hour"]=>
        int(0)
        ["hour of day"]=>
        int(0)
        ["minute"]=>
        int(0)
        ["second"]=>
        int(0)
        ["millisecond"]=>
        int(0)
        ["zone offset"]=>
        int(3600000)
        ["DST offset"]=>
        int(0)
        ["year for week of year"]=>
        int(2023)
        ["localized day of week"]=>
        int(7)
        ["extended year"]=>
        int(2023)
        ["julian day"]=>
        int(2460302)
        ["milliseconds in day"]=>
        int(0)
        ["is leap month"]=>
        int(0)
      }
    }

### Ayrıca Bakınız

- IntlGregorianCalendar::createFromDateTime() - Create a new IntlGregorianCalendar instance from date and time

# IntlGregorianCalendar::createFromDateTime

(PHP 8 >= 8.3.0)

IntlGregorianCalendar::createFromDateTime — Create a new IntlGregorianCalendar instance from date and time

### Açıklama

public static function IntlGregorianCalendar::createFromDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): static

Creates a new IntlGregorianCalendar instance from date and time.

### Bağımsız Değişkenler

`year`

  The new value for `IntlGregorianCalendar::FIELD_YEAR`.

`month`

  The new value for `IntlGregorianCalendar::FIELD_MONTH`. The month sequence is zero-based, i.e., January is represented by 0, February by 1, …, December is 11 and Undecember (if the calendar has it) is 12.

`dayOfMonth`

  The new value for `IntlGregorianCalendar::FIELD_DAY_OF_MONTH`.

`hour`

  The new value for `IntlGregorianCalendar::FIELD_HOUR_OF_DAY`.

`minute`

  The new value for `IntlGregorianCalendar::FIELD_MINUTE`.

`second`

  The new value for `IntlGregorianCalendar::FIELD_SECOND`.

### Dönen Değerler

Returns a new IntlGregorianCalendar instance.

### Örnekler

Örnek 1 IntlGregorianCalendar::createFromDateTime() example

    <?php

    $intlCalendar = IntlGregorianCalendar::createFromDateTime(2023, 11, 23, 12, 00);
    var_dump($intlCalendar);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(IntlGregorianCalendar)#1 (5) {
      ["valid"]=>
      bool(true)
      ["type"]=>
      string(9) "gregorian"
      ["timeZone"]=>
      array(4) {
        ["valid"]=>
        bool(true)
        ["id"]=>
        string(16) "Europe/Amsterdam"
        ["rawOffset"]=>
        int(3600000)
        ["currentOffset"]=>
        int(3600000)
      }
      ["locale"]=>
      string(11) "en_US_POSIX"
      ["fields"]=>
      array(23) {
        ["era"]=>
        int(1)
        ["year"]=>
        int(2023)
        ["month"]=>
        int(11)
        ["week of year"]=>
        int(51)
        ["week of month"]=>
        int(4)
        ["day of year"]=>
        int(357)
        ["day of month"]=>
        int(23)
        ["day of week"]=>
        int(7)
        ["day of week in month"]=>
        int(4)
        ["AM/PM"]=>
        int(1)
        ["hour"]=>
        int(0)
        ["hour of day"]=>
        int(12)
        ["minute"]=>
        int(0)
        ["second"]=>
        int(0)
        ["millisecond"]=>
        int(0)
        ["zone offset"]=>
        int(3600000)
        ["DST offset"]=>
        int(0)
        ["year for week of year"]=>
        int(2023)
        ["localized day of week"]=>
        int(7)
        ["extended year"]=>
        int(2023)
        ["julian day"]=>
        int(2460302)
        ["milliseconds in day"]=>
        int(43200000)
        ["is leap month"]=>
        int(0)
      }
    }

### Ayrıca Bakınız

- IntlGregorianCalendar::createFromDate() - Create a new IntlGregorianCalendar instance from date

# IntlGregorianCalendar::getGregorianChange

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlGregorianCalendar::getGregorianChange — Get the Gregorian Calendar change date

### Açıklama

public function IntlGregorianCalendar::getGregorianChange(): float

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the change date.

# IntlGregorianCalendar::isLeapYear

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlGregorianCalendar::isLeapYear — Determine if the given year is a leap year

### Açıklama

public function IntlGregorianCalendar::isLeapYear(int `$year`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`year`

### Dönen Değerler

Returns `true` for leap years, `false` otherwise and on failure.

# IntlGregorianCalendar::setGregorianChange

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlGregorianCalendar::setGregorianChange — Set the Gregorian Calendar the change date

### Açıklama

public function IntlGregorianCalendar::setGregorianChange(float `$timestamp`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timestamp`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

## İçindekiler

- IntlGregorianCalendar::__construct — Create the Gregorian Calendar class
- IntlGregorianCalendar::createFromDate — Create a new IntlGregorianCalendar instance from date
- IntlGregorianCalendar::createFromDateTime — Create a new IntlGregorianCalendar instance from date and time
- IntlGregorianCalendar::getGregorianChange — Get the Gregorian Calendar change date
- IntlGregorianCalendar::isLeapYear — Determine if the given year is a leap year
- IntlGregorianCalendar::setGregorianChange — Set the Gregorian Calendar the change date

# The IntlTimeZone class

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

## Giriş

## Sınıf Sözdizimi

class IntlTimeZone {
/* Sabitler */
public const int DISPLAY_SHORT;
public const int DISPLAY_LONG;
public const int DISPLAY_SHORT_GENERIC;
public const int DISPLAY_LONG_GENERIC;
public const int DISPLAY_SHORT_GMT;
public const int DISPLAY_LONG_GMT;
public const int DISPLAY_SHORT_COMMONLY_USED;
public const int DISPLAY_GENERIC_LOCATION;
public const int TYPE_ANY;
public const int TYPE_CANONICAL;
public const int TYPE_CANONICAL_LOCATION;
/* Yöntemler */
private function __construct()
public static function countEquivalentIDs(string `$timezoneId`): int|false
public static function createDefault(): IntlTimeZone
public static function createEnumeration(string|int|null `$countryOrRawOffset` = `null`): IntlIterator|false
public static function createTimeZone(string `$timezoneId`): ?IntlTimeZone
public static function createTimeZoneIDEnumeration(int `$type`, ?string `$region` = `null`, ?int `$rawOffset` = `null`): IntlIterator|false
public static function fromDateTimeZone(DateTimeZone `$timezone`): ?IntlTimeZone
public static function getCanonicalID(string `$timezoneId`, bool `&$isSystemId` = `null`): string|false
public function getDisplayName(bool `$dst` = `false`, int `$style` = `IntlTimeZone::DISPLAY_LONG`, ?string `$locale` = `null`): string|false
public function getDSTSavings(): int
public static function getEquivalentID(string `$timezoneId`, int `$offset`): string|false
public function getErrorCode(): int|false
public function getErrorMessage(): string|false
public static function getGMT(): IntlTimeZone
public static function getIanaID(string `$timezoneId`): string|false
public function getID(): string|false
public static function getIDForWindowsID(string `$timezoneId`, ?string `$region` = `null`): string|false
public function getOffset(
float `$timestamp`,
bool `$local`,
int `&$rawOffset`,
int `&$dstOffset`
): bool
public function getRawOffset(): int
public static function getRegion(string `$timezoneId`): string|false
public static function getTZDataVersion(): string|false
public static function getUnknown(): IntlTimeZone
public static function getWindowsID(string `$timezoneId`): string|false
public function hasSameRules(IntlTimeZone `$other`): bool
public function toDateTimeZone(): DateTimeZone|false
public function useDaylightTime(): bool
}

## Öntanımlı Sabitler

`IntlTimeZone::DISPLAY_SHORT` int

`IntlTimeZone::DISPLAY_LONG` int

`IntlTimeZone::DISPLAY_SHORT_GENERIC` int

`IntlTimeZone::DISPLAY_LONG_GENERIC` int

`IntlTimeZone::DISPLAY_SHORT_GMT` int

`IntlTimeZone::DISPLAY_LONG_GMT` int

`IntlTimeZone::DISPLAY_SHORT_COMMONLY_USED` int

`IntlTimeZone::DISPLAY_GENERIC_LOCATION` int

`IntlTimeZone::TYPE_ANY` int

`IntlTimeZone::TYPE_CANONICAL` int

`IntlTimeZone::TYPE_CANONICAL_LOCATION` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.

# IntlTimeZone::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::__construct — Private constructor to disallow direct instantiation

### Açıklama

private function IntlTimeZone::__construct()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# IntlTimeZone::countEquivalentIDs

# intltz_count_equivalent_ids

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::countEquivalentIDs -- intltz_count_equivalent_ids — Get the number of IDs in the equivalency group that includes the given ID

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::countEquivalentIDs(string `$timezoneId`): int|false

Yordamsal kullanım:

function intltz_count_equivalent_ids(string `$timezoneId`): int|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

### Dönen Değerler

# IntlTimeZone::createDefault

# intltz_create_default

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::createDefault -- intltz_create_default — Create a new copy of the default timezone for this host

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::createDefault(): IntlTimeZone

Yordamsal kullanım:

function intltz_create_default(): IntlTimeZone

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::createEnumeration

# intltz_create_enumeration

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::createEnumeration -- intltz_create_enumeration — Get an enumeration over time zone IDs associated with the given country or offset

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::createEnumeration(string|int|null `$countryOrRawOffset` = `null`): IntlIterator|false

Yordamsal kullanım:

function intltz_create_enumeration(string|int|null `$countryOrRawOffset` = `null`): IntlIterator|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`countryOrRawOffset`

### Dönen Değerler

# IntlTimeZone::createTimeZone

# intltz_create_time_zone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::createTimeZone -- intltz_create_time_zone — Create a timezone object for the given ID

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::createTimeZone(string `$timezoneId`): ?IntlTimeZone

Yordamsal kullanım:

function intltz_create_time_zone(string `$timezoneId`): ?IntlTimeZone

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

### Dönen Değerler

# IntlTimeZone::createTimeZoneIDEnumeration

# intltz_create_time_zone_id_enumeration

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlTimeZone::createTimeZoneIDEnumeration -- intltz_create_time_zone_id_enumeration — Get an enumeration over system time zone IDs with the given filter conditions

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::createTimeZoneIDEnumeration(int `$type`, ?string `$region` = `null`, ?int `$rawOffset` = `null`): IntlIterator|false

Yordamsal kullanım:

function intltz_create_time_zone_id_enumeration(int `$type`, ?string `$region` = `null`, ?int `$rawOffset` = `null`): IntlIterator|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`type`

`region`

`rawOffset`

### Dönen Değerler

Returns IntlIterator başarısızlık durumunda `false` döner.

# IntlTimeZone::fromDateTimeZone

# intltz_from_date_time_zone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::fromDateTimeZone -- intltz_from_date_time_zone — Create a timezone object from DateTimeZone

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::fromDateTimeZone(DateTimeZone `$timezone`): ?IntlTimeZone

Yordamsal kullanım:

function intltz_from_date_time_zone(DateTimeZone `$timezone`): ?IntlTimeZone

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezone`

### Dönen Değerler

# IntlTimeZone::getCanonicalID

# intltz_get_canonical_id

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getCanonicalID -- intltz_get_canonical_id — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getCanonicalID(string `$timezoneId`, bool `&$isSystemId` = `null`): string|false

Yordamsal kullanım:

function intltz_get_canonical_id(string `$timezoneId`, bool `&$isSystemId` = `null`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

`isSystemId`

### Dönen Değerler

# IntlTimeZone::getDisplayName

# intltz_get_display_name

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getDisplayName -- intltz_get_display_name — Get a name of this time zone suitable for presentation to the user

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getDisplayName(bool `$dst` = `false`, int `$style` = `IntlTimeZone::DISPLAY_LONG`, ?string `$locale` = `null`): string|false

Yordamsal kullanım:

function intltz_get_display_name(
IntlTimeZone `$timezone`,
bool `$dst` = `false`,
int `$style` = `IntlTimeZone::DISPLAY_LONG`,
?string `$locale` = `null`
): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`dst`

`style`

`locale`

### Dönen Değerler

# IntlTimeZone::getDSTSavings

# intltz_get_dst_savings

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getDSTSavings -- intltz_get_dst_savings — Get the amount of time to be added to local standard time to get local wall clock time

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getDSTSavings(): int

Yordamsal kullanım:

function intltz_get_dst_savings(IntlTimeZone `$timezone`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getEquivalentID

# intltz_get_equivalent_id

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getEquivalentID -- intltz_get_equivalent_id — Get an ID in the equivalency group that includes the given ID

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getEquivalentID(string `$timezoneId`, int `$offset`): string|false

Yordamsal kullanım:

function intltz_get_equivalent_id(string `$timezoneId`, int `$offset`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

`offset`

### Dönen Değerler

# IntlTimeZone::getErrorCode

# intltz_get_error_code

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getErrorCode -- intltz_get_error_code — Get last error code on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getErrorCode(): int|false

Yordamsal kullanım:

function intltz_get_error_code(IntlTimeZone `$timezone`): int|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getErrorMessage

# intltz_get_error_message

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getErrorMessage -- intltz_get_error_message — Get last error message on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getErrorMessage(): string|false

Yordamsal kullanım:

function intltz_get_error_message(IntlTimeZone `$timezone`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getGMT

# intltz_get_gmt

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getGMT -- intltz_get_gmt — Create GMT (UTC) timezone

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getGMT(): IntlTimeZone

Yordamsal kullanım:

function intltz_get_gmt(): IntlTimeZone

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getIanaID

# intltz_get_iana_id

(PHP 8 >= 8.4.0)

IntlTimeZone::getIanaID -- intltz_get_iana_id — Translate a timezone identifier to its IANA equivalent

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getIanaID(string `$timezoneId`): string|false

Yordamsal kullanım:

function intltz_get_iana_id(string `$timezoneId`): string|false

Translates a timezone identifier to its IANA equivalent. For example, `"GMT"` returns `"Etc/GMT"`, and `"US/Eastern"` returns `"America/New_York"`.

> Bilginize: This function requires ICU version >= 74.

### Bağımsız Değişkenler

`timezoneId`
  The timezone identifier to translate.

### Dönen Değerler

Returns the IANA timezone identifier as a string, or `false` on failure.

### Ayrıca Bakınız

- intltz_get_id_for_windows_id() - Translate a Windows timezone into a system timezone
- intltz_get_windows_id() - Translate a system timezone into a Windows timezone
- intltz_create_time_zone() - Create a timezone object for the given ID

# IntlTimeZone::getID

# intltz_get_id

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getID -- intltz_get_id — Get timezone ID

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getID(): string|false

Yordamsal kullanım:

function intltz_get_id(IntlTimeZone `$timezone`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getIDForWindowsID

# intltz_get_id_for_windows_id

(PHP 7 >= 7.1.0, PHP 8)

IntlTimeZone::getIDForWindowsID -- intltz_get_id_for_windows_id — Translate a Windows timezone into a system timezone

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getIDForWindowsID(string `$timezoneId`, ?string `$region` = `null`): string|false

Yordamsal kullanım:

function intltz_get_id_for_windows_id(string `$timezoneId`, ?string `$region` = `null`): string|false

Translates a Windows timezone (e.g. "Pacific Standard Time") into a system timezone (e.g. "America/Los_Angeles").

> Bilginize: This function requires ICU version ≥ 52.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

`region`

### Dönen Değerler

Returns the system timezone başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `region` is now nullable.

### Ayrıca Bakınız

- IntlTimeZone::getWindowsID() - Translate a system timezone into a Windows timezone

# IntlTimeZone::getOffset

# intltz_get_offset

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getOffset -- intltz_get_offset — Get the time zone raw and GMT offset for the given moment in time

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getOffset(
float `$timestamp`,
bool `$local`,
int `&$rawOffset`,
int `&$dstOffset`
): bool

Yordamsal kullanım:

function intltz_get_offset(
IntlTimeZone `$timezone`,
float `$timestamp`,
bool `$local`,
int `&$rawOffset`,
int `&$dstOffset`
): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timestamp`

`local`

`rawOffset`

`dstOffset`

### Dönen Değerler

# IntlTimeZone::getRawOffset

# intltz_get_raw_offset

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getRawOffset -- intltz_get_raw_offset — Get the raw GMT offset (before taking daylight savings time into account

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::getRawOffset(): int

Yordamsal kullanım:

function intltz_get_raw_offset(IntlTimeZone `$timezone`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getRegion

# intltz_get_region

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlTimeZone::getRegion -- intltz_get_region — Get the region code associated with the given system time zone ID

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getRegion(string `$timezoneId`): string|false

Yordamsal kullanım:

function intltz_get_region(string `$timezoneId`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

### Dönen Değerler

Return region başarısızlık durumunda `false` döner.

# IntlTimeZone::getTZDataVersion

# intltz_get_tz_data_version

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::getTZDataVersion -- intltz_get_tz_data_version — Get the timezone data version currently used by ICU

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getTZDataVersion(): string|false

Yordamsal kullanım:

function intltz_get_tz_data_version(): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::getUnknown

# intltz_get_unknown

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlTimeZone::getUnknown -- intltz_get_unknown — Get the "unknown" time zone

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getUnknown(): IntlTimeZone

Yordamsal kullanım:

function intltz_get_unknown(): IntlTimeZone

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns IntlTimeZone or `null` on failure.

# IntlTimeZone::getWindowsID

# intltz_get_windows_id

(PHP 7 >= 7.1.0, PHP 8)

IntlTimeZone::getWindowsID -- intltz_get_windows_id — Translate a system timezone into a Windows timezone

### Açıklama

Nesne yönelimli kullanım (method):

public static function IntlTimeZone::getWindowsID(string `$timezoneId`): string|false

Yordamsal kullanım:

function intltz_get_windows_id(string `$timezoneId`): string|false

Translates a system timezone (e.g. "America/Los_Angeles") into a Windows timezone (e.g. "Pacific Standard Time").

> Bilginize: This function requires ICU version ≥ 52.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`timezoneId`

### Dönen Değerler

Returns the Windows timezone başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- IntlTimeZone::getIDForWindowsID() - Translate a Windows timezone into a system timezone

# IntlTimeZone::hasSameRules

# intltz_has_same_rules

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::hasSameRules -- intltz_has_same_rules — Check if this zone has the same rules and offset as another zone

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::hasSameRules(IntlTimeZone `$other`): bool

Yordamsal kullanım:

function intltz_has_same_rules(IntlTimeZone `$timezone`, IntlTimeZone `$other`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`other`

### Dönen Değerler

# IntlTimeZone::toDateTimeZone

# intltz_to_date_time_zone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::toDateTimeZone -- intltz_to_date_time_zone — Convert to DateTimeZone object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::toDateTimeZone(): DateTimeZone|false

Yordamsal kullanım:

function intltz_to_date_time_zone(IntlTimeZone `$timezone`): DateTimeZone|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlTimeZone::useDaylightTime

# intltz_use_daylight_time

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlTimeZone::useDaylightTime -- intltz_use_daylight_time — Check if this time zone uses daylight savings time

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlTimeZone::useDaylightTime(): bool

Yordamsal kullanım:

function intltz_use_daylight_time(IntlTimeZone `$timezone`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- IntlTimeZone::__construct — Private constructor to disallow direct instantiation
- IntlTimeZone::countEquivalentIDs — Get the number of IDs in the equivalency group that includes the given ID
- IntlTimeZone::createDefault — Create a new copy of the default timezone for this host
- IntlTimeZone::createEnumeration — Get an enumeration over time zone IDs associated with the given country or offset
- IntlTimeZone::createTimeZone — Create a timezone object for the given ID
- IntlTimeZone::createTimeZoneIDEnumeration — Get an enumeration over system time zone IDs with the given filter conditions
- IntlTimeZone::fromDateTimeZone — Create a timezone object from DateTimeZone
- IntlTimeZone::getCanonicalID — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
- IntlTimeZone::getDisplayName — Get a name of this time zone suitable for presentation to the user
- IntlTimeZone::getDSTSavings — Get the amount of time to be added to local standard time to get local wall clock time
- IntlTimeZone::getEquivalentID — Get an ID in the equivalency group that includes the given ID
- IntlTimeZone::getErrorCode — Get last error code on the object
- IntlTimeZone::getErrorMessage — Get last error message on the object
- IntlTimeZone::getGMT — Create GMT (UTC) timezone
- IntlTimeZone::getIanaID — Translate a timezone identifier to its IANA equivalent
- IntlTimeZone::getID — Get timezone ID
- IntlTimeZone::getIDForWindowsID — Translate a Windows timezone into a system timezone
- IntlTimeZone::getOffset — Get the time zone raw and GMT offset for the given moment in time
- IntlTimeZone::getRawOffset — Get the raw GMT offset (before taking daylight savings time into account
- IntlTimeZone::getRegion — Get the region code associated with the given system time zone ID
- IntlTimeZone::getTZDataVersion — Get the timezone data version currently used by ICU
- IntlTimeZone::getUnknown — Get the "unknown" time zone
- IntlTimeZone::getWindowsID — Translate a system timezone into a Windows timezone
- IntlTimeZone::hasSameRules — Check if this zone has the same rules and offset as another zone
- IntlTimeZone::toDateTimeZone — Convert to DateTimeZone object
- IntlTimeZone::useDaylightTime — Check if this time zone uses daylight savings time

# IntlDateFormatter sınıfı

(No version information available, might only be in Git)

## Giriş

Date Formatter (Tarih Biçemleyici), şablon dizgeleri ve/veya kayıtlı şablonları kullanarak yerele bağlı tarih biçemlemeyi/çözümlemeyi etkin kılan somut bir sınıftır.

Bu sınıf, ICU tarih biçemleme işlevselliğini temsil eder. Kullanıcıların tarihleri yerelleştirilmiş biçemde gösterebilmesini veya şablon dizgelerini ve kayıtlı şablonları kullanarak, dizgeleri PHP tarih değerleri olarak çözümlemelerini mümkün kılar.

## Sınıf Sözdizimi

class IntlDateFormatter {
/* Sabitler */
public const int FULL;
public const int LONG;
public const int MEDIUM;
public const int SHORT;
public const int NONE;
public const int RELATIVE_FULL;
public const int RELATIVE_LONG;
public const int RELATIVE_MEDIUM;
public const int RELATIVE_SHORT;
public const int GREGORIAN;
public const int TRADITIONAL;
/* Yöntemler */
public function __construct(
?string `$yerel`,
int `$tarih_türü` = IntlDateFormatter::FULL,
int `$saat_türü` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$zaman_dilimi` = `null`,
IntlCalendar|int|null `$takvim` = `null`,
?string `$kalıp` = `null`
)
public static function create(
?string `$yerel`,
int `$tarih_türü` = IntlDateFormatter::FULL,
int `$saat_türü` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$zaman_dilimi` = `null`,
IntlCalendar|int|null `$takvim` = `null`,
?string `$kalıp` = `null`
): ?IntlDateFormatter
public function format(IntlCalendar|DateTimeInterface|array|string|int|float `$değer`): string|false
public static function formatObject(IntlCalendar|DateTimeInterface `$datetime`, array|int|string|null `$format` = `null`, ?string `$locale` = `null`): string|false
public function getCalendar(): int|false
public function getDateType(): int|false
public function getErrorCode(): int
public function getErrorMessage(): string
public function getLocale(int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false
public function getPattern(): string|false
public function getTimeType(): int|false
public function getTimeZoneId(): string|false
public function getCalendarObject(): IntlCalendar|false|null
public function getTimeZone(): IntlTimeZone|false
public function isLenient(): bool
public function localtime(string `$dizge`, int `&$başlangıç` = `null`): array|false
public function parse(string `$dizge`, int `&$başlangıç` = `null`): int|float|false
public function parseToCalendar(string `$string`, int `&$offset` = `null`): int|float|false
public function setCalendar(IntlCalendar|int|null `$takvim`): bool
public function setLenient(bool `$esnek`): void
public function setPattern(string `$pattern`): bool
public function setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool
}

## Ayrıca Bakınız

- » ICU Tarih biçemcisi
- » ICU Tarih biçemleri

## Öntanımlı Sabitler

Bu sabitler, DateType ve TimeType kurucularında farklı biçemler belirtmek için kullanılırlar.

`IntlDateFormatter::NONE`
  Bu elemanı içerme
`IntlDateFormatter::FULL`
  Tamamen belirtilmiş biçim (01 Ocak 1970 Perşembe 02:00:00 Türkiye Saati)
`IntlDateFormatter::LONG`
  Uzun biçim (01 Ocak 1970 Perşembe veya 02:00:00)
`IntlDateFormatter::MEDIUM`
  Ortalama biçim (01 Oca 1970)
`IntlDateFormatter::SHORT`
  En kısa biçim, sadece esas veri (12/13/52 or 3:30pm)
`IntlDateFormatter::RELATIVE_FULL`
  `IntlDateFormatter::FULL` ile aynı, fakat dün, bugün ve yarın `yesterday`, `today` ve `tomorrow` olarak gösterilir. PHP 8.0.0 ve sonrasında kullanılabilir, sadece `dateType` içindir.
`IntlDateFormatter::RELATIVE_LONG`
  `IntlDateFormatter::LONG` ile aynı, fakat dün, bugün ve yarın `yesterday`, `today` ve `tomorrow` olarak gösterilir. PHP 8.0.0 ve sonrasında kullanılabilir, sadece `dateType` içindir.
`IntlDateFormatter::RELATIVE_MEDIUM`
  `IntlDateFormatter::MEDIUM` ile aynı, fakat dün, bugün ve yarın `yesterday`, `today` ve `tomorrow` olarak gösterilir. PHP 8.0.0 ve sonrasında kullanılabilir, sadece `dateType` içindir.
`IntlDateFormatter::RELATIVE_SHORT`
  `IntlDateFormatter::SHORT` ile aynı, fakat dün, bugün ve yarın `yesterday`, `today` ve `tomorrow` olarak gösterilir. PHP 8.0.0 ve sonrasında kullanılabilir, sadece `dateType` içindir.

Aşağıdaki sabitler takvim belirtmek için kullanılır. Bu takvimlerin tamamı doğrudan Gregoriyen takvimine dayanır. Gregoriyen olmayan takvimlerin yerelde belirtilmesi gerekir. Örnek: locale="hi@calendar=BUDDHIST".

`IntlDateFormatter::TRADITIONAL`
  Gregoriyen olmayan takvim
`IntlDateFormatter::GREGORIAN`
  Gregoriyen takvimi

# IntlDateFormatter::create

# datefmt_create

# IntlDateFormatter::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::create -- datefmt_create -- IntlDateFormatter::__construct — Bir tarih biçemleyici oluşturur

### Açıklama

Nesne yönelimli kullanım

public static function IntlDateFormatter::create(
?string `$yerel`,
int `$tarih_türü` = IntlDateFormatter::FULL,
int `$saat_türü` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$zaman_dilimi` = `null`,
IntlCalendar|int|null `$takvim` = `null`,
?string `$kalıp` = `null`
): ?IntlDateFormatter

Nesne yönelimli kullanım (kurucu)

public function IntlDateFormatter::__construct(
?string `$yerel`,
int `$tarih_türü` = IntlDateFormatter::FULL,
int `$saat_türü` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$zaman_dilimi` = `null`,
IntlCalendar|int|null `$takvim` = `null`,
?string `$kalıp` = `null`
)

Yordamsal kullanım

function datefmt_create(
?string `$yerel`,
int `$tarih_türü` = IntlDateFormatter::FULL,
int `$saat_türü` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$zaman_dilimi` = `null`,
IntlCalendar|int|null `$takvim` = `null`,
?string `$kalıp` = `null`
): ?IntlDateFormatter

Bir tarih biçemleyici oluşturur

### Bağımsız Değişkenler

`yerel`

  Biçemleme ve çözümleme için kullanılacak yerel veya intl.default_locale ini yönergesinde belirtilen değeri kullanmak için `null`.

`tarih_türü`

  Kullanılacak tarih türü IntlDateFormatter sabitlerinden biri olmalıdır. `IntlDateFormatter::FULL` ön tanımlıdır.

`saat_türü`

  Kullanılacak saat türü IntlDateFormatter sabitlerinden biri olmalıdır. `IntlDateFormatter::FULL` ön tanımlıdır.

`zaman_dilimi`

  Zaman dilimi. Öntanımlı değer (`null` belirtilirse kullanılan), date_default_timezone_get() tarafından döndürülen veya varsa, `takvim` bağımsız değişkeni için aktarılan IntlCalendar nesnesinde tanımlı olandır. Bu değer, ICU'nun veritabanında geçerli bir tanımlayıcı veya `GMT-05:30` gibi açık bir konumu temsil eden bir değer olmalıdır.

`takvim`

  Biçemleme ve çözümleme için kullanılacak takvim. Öntanımlı değer, `IntlDateFormatter::GREGORIAN` sabitine karşılık gelen `null` değeridir. Bu, IntlDateFormatter takvim sabitlerinden biri veya IntlCalendar nesnesi olabilir. Aktarılan herhangi bir IntlCalendar nesnesi kopyalanır; IntlDateFormatter tarafından değiştirilmez. Bu, kullanılan takvim türünü (Gregoryen, İslami, Fars vb.) ve `zaman_dilimi` bağımsız değişkeni için `null` değeri verilirse kullanılan saat dilimini de belirler.

`kalıp`

  Biçemleme ve çözümleme için kullanılacak isteğe beğlı kalıp. Olası kalıplar için bkz: » https://unicode-org.github.io/icu/userguide/format_parse/datetime/

### Dönen Değerler

Oluşturulan IntlDateFormatter nesnesi veya başarısızlık durumunda `null` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `tarih_türü` ve `saat_türü` belirtmek artık isteğe bağlı.

### Örnekler

Örnek 1 - datefmt_create() örneği

    <?php
    $fmt = datefmt_create("tr_TR", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN);
    echo "İlk biçemli çıktı: ".datefmt_format($fmt, 1234567890);
    $fmt = datefmt_create("en-US", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL, 'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN);
    echo "\nİkinci biçemli çıktı: ".datefmt_format($fmt, 1234567890);

    $fmt = datefmt_create("tr_TR", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL, 'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN, "dd/MM/yyyy");
    echo "\nİlk kalıbın çıktısı: ".datefmt_format( $fmt, 1234567890);
    $fmt = datefmt_create("en-US", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL, 'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN, "MM/dd/yyyy");
    echo "\nİkinci kalıbın çıktısı: ".datefmt_format($fmt, 1234567890);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter("tr_TR", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN);
    echo "İlk biçemli çıktı: ".$fmt->format(1234567890);
    $fmt = new IntlDateFormatter("en-US", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL, 'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN);
    echo "\nİkinci biçemli çıktı: ".$fmt->format(1234567890);

    $fmt = new IntlDateFormatter("tr_TR", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN, "dd/MM/yyyy");
    echo "\nİlk kalıbın çıktısı: ".$fmt->format(1234567890);
    $fmt = new IntlDateFormatter("en-US", IntlDateFormatter::FULL,
            IntlDateFormatter::FULL, 'Europe/Istanbul',
            IntlDateFormatter::GREGORIAN, "MM/dd/yyyy");
    echo "\nİkinci kalıbın çıktısı: ".$fmt->format(1234567890);
    ?>

Yukarıdaki örneğin çıktısı:

    İlk biçemli çıktı: 14 Şubat 2009 Cumartesi 01:31:30 Doğu Avrupa Standart Saati
    İkinci biçemli çıktı: Saturday, February 14, 2009 at 1:31:30 AM Eastern European Standard Time
    İlk kalıbın çıktısı: 14/02/2009
    İkinci kalıbın çıktısı: 02/14/2009

Örnek 3 - Geçersiz yerel örneği

    <?php
    try {
        $fmt = new IntlDateFormatter(
            'gecersiz_yerel',
            IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,
            'bilmemneresi',
            IntlDateFormatter::GREGORIAN,
        );
    } catch (\Error $e) {
        // ...
    }
    ?>

### Ayrıca Bakınız

- datefmt_format() - Tarih/saat değerini bir dizge olarak biçemler
- datefmt_parse() - Dizgeyi bir zaman damgası değerine dönüştürür
- datefmt_get_error_code() - Son işlemin hata kodunu döndürür
- datefmt_get_error_message() - Son işlemin hata iletisini döndürür

# IntlDateFormatter::format

# datefmt_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::format -- datefmt_format — Tarih/saat değerini bir dizge olarak biçemler

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::format(IntlCalendar|DateTimeInterface|array|string|int|float `$değer`): string|false

Yordamsal kullanım

function datefmt_format(IntlDateFormatter `$biçemleyici`, IntlCalendar|DateTimeInterface|array|string|int|float `$değer`): string|false

Zaman değerini bir dizge olarak biçemler.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`değer`

  Biçemlenecek değer. Bu bir DateTimeInterface nesnesi, bir IntlCalendar nesnesi, Unix zaman başlangıcından itibaren saniye sayısını (muhtemelen kesirli) temsil eden sayısal bir tür veya localtime() tarafından çıktılanan biçimde bir dizi olabilir.

  Değer olarak DateTime veya IntlCalendar nesnesi iletilirse, zaman dilimi dikkate alınmaz. Nesne, biçimlendiricinin yapılandırılmış zaman dilimi kullanılarak biçimlendirilir. Biçimlendirilecek nesnenin zaman dilimi kullanılmak istenirse, IntlDateFormatter::setTimeZone() nesnenin zaman dilimiyle çağrılmalıdır. Veya, bunun yerine IntlDateFormatter::formatObject() statik işlevi de kullanılabilir.

### Dönen Değerler

Bir hata oluşmuşsa `false` aksi takdirde biçemli dizge.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.5 | `değer` bağımsız değişkenine genel DateTimeInterface nesnelerinin aktarımı artık destekleniyor. Evvelce, sadece uygun DateTime nesneleri desteklenirdi.
PECL 3.0.0 | `değer` bağımsız değişkenine artık IntlCalendar nesneleri belirtilebiliyor.

### Örnekler

Örnek 1 - datefmt_format() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "İlk biçemli çıktı: ".datefmt_format($fmt, 1234567890);

    $fmt = datefmt_create(
        "en-US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
     );
    echo "\nİkinci biçemli çıktı: ".datefmt_format($fmt, 1234567890);

    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "\nİlk kalıbın çıktısı: ".datefmt_format( $fmt, 1234567890);

    $fmt = datefmt_create(
        "en-US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "MM/dd/yyyy"
    );
    echo "\nİkinci kalıbın çıktısı: ".datefmt_format($fmt, 1234567890);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "İlk biçemli çıktı: ".$fmt->format(1234567890);

    $fmt = new IntlDateFormatter(
        "en-US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nİkinci biçemli çıktı: ".$fmt->format(1234567890);

    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "\nİlk kalıbın çıktısı: ".$fmt->format(1234567890);

    $fmt = new IntlDateFormatter(
        "en-US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "MM/dd/yyyy"
    );
    echo "\nİkinci kalıbın çıktısı: ".$fmt->format(1234567890);
    ?>

Yukarıdaki örneğin çıktısı:

    İlk biçemli çıktı: 14 Şubat 2009 Cumartesi 01:31:30 Doğu Avrupa Standart Saati
    İkinci biçemli çıktı: Saturday, February 14, 2009 at 1:31:30 AM Eastern European Standard Time
    İlk kalıbın çıktısı: 14/02/2009
    İkinci kalıbın çıktısı: 02/14/2009

Örnek 3 - IntlCalendar nesnesi ile

    <?php
    $tz = reset(iterator_to_array(IntlTimeZone::createEnumeration('FR')));
    $formatter = IntlDateFormatter::create(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        $tz,
        IntlDateFormatter::GREGORIAN
    );

    $cal = IntlCalendar::createInstance($tz, '@calendar=islamic-civil');
    $cal->set(IntlCalendar::FIELD_MONTH, 8); //9. ay, Ramazan
    $cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 1); //İlk gün
    $cal->clear(IntlCalendar::FIELD_HOUR_OF_DAY);
    $cal->clear(IntlCalendar::FIELD_MINUTE);
    $cal->clear(IntlCalendar::FIELD_SECOND);
    $cal->clear(IntlCalendar::FIELD_MILLISECOND);

    echo "İslami yılda Ramazan başlangıcı:\n\t",
            $formatter->format($cal), "\n";

    // Biçemleyici zaman dilimi değişirse
    $formatter->setTimeZone('Asia/Tokyo');
    echo "Zaman dilimi değiştiğinde:\n\t",
            $formatter->format($cal), "\n";

    // Örnek hatalı... Gün doğru; saat yanlış.

Yukarıdaki örneğin çıktısı:

    İslami yılda Ramazan başlangıcı:
            13 Nisan 2021 Salı 15:00:00 Orta Avrupa Yaz Saati
    Zaman dilimi değiştiğinde:
            13 Nisan 2021 Salı 22:00:00 Japonya Standart Saati

### Ayrıca Bakınız

- datefmt_create() - Bir tarih biçemleyici oluşturur
- datefmt_parse() - Dizgeyi bir zaman damgası değerine dönüştürür
- datefmt_get_error_code() - Son işlemin hata kodunu döndürür
- datefmt_get_error_message() - Son işlemin hata iletisini döndürür
- datefmt_format_object() - Formats an object

# IntlDateFormatter::formatObject

# datefmt_format_object

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL intl >= 3.0.0)

IntlDateFormatter::formatObject -- datefmt_format_object — Formats an object

### Açıklama

Nesne yönelimli kullanım

public static function IntlDateFormatter::formatObject(IntlCalendar|DateTimeInterface `$datetime`, array|int|string|null `$format` = `null`, ?string `$locale` = `null`): string|false

Yordamsal kullanım

function datefmt_format_object(IntlCalendar|DateTimeInterface `$datetime`, array|int|string|null `$format` = `null`, ?string `$locale` = `null`): string|false

This function allows formatting an IntlCalendar or DateTime object without first explicitly creating a IntlDateFormatter object.

The temporary IntlDateFormatter that will be created will take the timezone from the passed in object. The timezone database bundled with PHP will not be used – ICU's will be used instead. The timezone identifier used in DateTime objects must therefore also exist in ICU's database.

### Bağımsız Değişkenler

`datetime`

  An object of type IntlCalendar or DateTime. The timezone information in the object will be used.

`format`

  How to format the date/time. This can either be an array with two elements (first the date style, then the time style, these being one of the constants `IntlDateFormatter::NONE`, `IntlDateFormatter::SHORT`, `IntlDateFormatter::MEDIUM`, `IntlDateFormatter::LONG`, `IntlDateFormatter::FULL`), an int with the value of one of these constants (in which case it will be used both for the time and the date) or a string with the format described in » the ICU documentation. If `null`, the default style will be used.

`locale`

  The locale to use, or `null` to use the default one.

### Dönen Değerler

A string with result başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlDateFormatter::formatObject() examples

    <?php
    /* default timezone is irrelevant; timezone taken from the object */
    ini_set('date.timezone', 'UTC');
    /* default locale is taken from this ini setting */
    ini_set('intl.default_locale', 'fr_FR');

    $cal = IntlCalendar::fromDateTime("2013-06-06 17:05:06 Europe/Dublin");
    echo "default:\n\t",
            IntlDateFormatter::formatObject($cal),
            "\n";

    echo "long \$format (full):\n\t",
            IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL),
            "\n";

    echo "array \$format (none, full):\n\t",
            IntlDateFormatter::formatObject($cal, array(
                    IntlDateFormatter::NONE,
                    IntlDateFormatter::FULL)),
            "\n";

    echo "string \$format (d 'of' MMMM y):\n\t",
            IntlDateFormatter::formatObject($cal, "d 'of' MMMM y", 'en_US'),
            "\n";

    echo "with DateTime:\n\t",
            IntlDateFormatter::formatObject(
                    new DateTime("2013-09-09 09:09:09 Europe/Madrid"),
                    IntlDateFormatter::FULL,
                    'es_ES'),
            "\n";

Yukarıdaki örneğin çıktısı:

    default:
        6 juin 2013 17:05:06
    long $format (full):
        jeudi 6 juin 2013 17:05:06 heure d’été irlandaise
    array $format (none, full):
        17:05:06 heure d’été irlandaise
    string $format (d 'of' MMMM y):
        6 of June 2013
    with DateTime:
        lunes, 9 de septiembre de 2013 09:09:09 Hora de verano de Europa central

# IntlDateFormatter::getCalendar

# datefmt_get_calendar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getCalendar -- datefmt_get_calendar — IntlDateFormatter tarafından kullanılan takvim türünü döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getCalendar(): int|false

Yordamsal kullanım

function datefmt_get_calendar(IntlDateFormatter `$biçemleyici`): int|false

Biçemleyici tarafından kullanılan takvimin türünü döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Biçemleyici tarafından kullanılan takvim türü. `IntlDateFormatter::TRADITIONAL` veya `IntlDateFormatter::GREGORIAN` olabilir. Başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_calendar() örneği

    <?php
    $fmt = datefmt_create(
        "en_US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin takvimi: " . datefmt_get_calendar($fmt);
    datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
    echo "\nBiçemleyicinin yeni takvimi: " . datefmt_get_calendar($fmt);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "en_US",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin takvimi: ".$fmt->getCalendar();
    $fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
    echo "\nBiçemleyicinin yeni takvimi: ".$fmt->getCalendar();

    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyicinin takvimi: 1
    Biçemleyicinin yeni takvimi: 0

Örnek 3 - Geçersiz yerel örneği

    <?php
    try {
        $fmt = new IntlDateFormatter(
            'gecersiz_yerel',
            IntlDateFormatter::FULL,
            IntlDateFormatter::FULL,
            'bilmemneresi',
            IntlDateFormatter::GREGORIAN,
        );
    } catch (\Error $e) {
        // ...
    }
    ?>

### Ayrıca Bakınız

- datefmt_get_calendar_object() - Get copy of formatterʼs calendar object
- datefmt_set_calendar() - Kullanılacak takvimi tanımlar
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getDateType

# datefmt_get_datetype

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getDateType -- datefmt_get_datetype — IntlDateFormatter tarafından kullanılan tarih gösterim türünü döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getDateType(): int|false

Yordamsal kullanım

function datefmt_get_datetype(IntlDateFormatter `$biçemleyici`): int|false

Biçemleyici tarafından kullanılan tarih gösterim türünü döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Geçerli tarih gösterim türü, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_datetype() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin tarih gösterim türü: ".datefmt_get_datetype($fmt);
    echo "\nBiçemli çıktı: ".datefmt_format($fmt, 1234567890);

    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::SHORT,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyicinin yeni tarih gösterim türü: ".datefmt_get_datetype($fmt);
    echo "\nİkinci biçemli çıktı: ".datefmt_format($fmt, 1234567890);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin tarih gösterim türü: ".$fmt->getDateType();
    echo "\nBiçemli çıktı: ".datefmt_format( $fmt, 1234567890);

    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::SHORT,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyicinin yeni tarih gösterim türü: ".$fmt->getDateType();
    echo "\nİkinci biçemli çıktı: ".datefmt_format( $fmt, 1234567890);
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyicinin tarih gösterim türü: 0
    Biçemli çıktı: 14 Şubat 2009 Cumartesi 01:31:30 Doğu Avrupa Standart Saati
    Biçemleyicinin yeni tarih gösterim türü: 3
    İkinci biçemli çıktı: 14.02.2009 01:31:30 Doğu Avrupa Standart Saati

### Ayrıca Bakınız

- datefmt_get_timetype() - IntlDateFormatter tarafından kullanılan zaman gösterim türünü döndürür
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getErrorCode

# datefmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getErrorCode -- datefmt_get_error_code — Son işlemin hata kodunu döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getErrorCode(): int

Yordamsal kullanım

function datefmt_get_error_code(IntlDateFormatter `$biçemleyici`): int

Son sayı biçemleme işleminin hata kodunu döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

UErrorCode değerlerinden biri olarak bir hata kodu. İlk değer: U_ZERO_ERROR.

### Örnekler

Örnek 1 - datefmt_get_error_code() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $str = datefmt_format($fmt, 0);

    printf(
        "HATA: %s (%d)\n",
        datefmt_get_error_message($fmt),
        datefmt_get_error_code($fmt)
    );
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $str = $fmt->format(0);

    printf(
        "HATA: %s (%d)\n",
        $fmt->getErrorMessage(),
        $fmt->getErrorCode()
    );
    ?>

Yukarıdaki örneğin çıktısı:

    HATA: U_ZERO_ERROR (0)

### Ayrıca Bakınız

- datefmt_get_error_message() - Son işlemin hata iletisini döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# IntlDateFormatter::getErrorMessage

# datefmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getErrorMessage -- datefmt_get_error_message — Son işlemin hata iletisini döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getErrorMessage(): string

Yordamsal kullanım

function datefmt_get_error_message(IntlDateFormatter `$formatter`): string

Son işlemin hata iletisini döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Son hatanın metni.

### Örnekler

Örnek 1 - datefmt_get_error_message() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $str = datefmt_format($fmt, 0);

    printf(
        "HATA: %s (%d)\n",
        datefmt_get_error_message($fmt),
        datefmt_get_error_code($fmt)
    );
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $str = $fmt->format(0);

    printf(
        "HATA: %s (%d)\n",
        $fmt->getErrorMessage(),
        $fmt->getErrorCode()
    );
    ?>

Yukarıdaki örneğin çıktısı:

    HATA: U_ZERO_ERROR (0)

### Ayrıca Bakınız

- datefmt_get_error_code() - Son işlemin hata kodunu döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# IntlDateFormatter::getLocale

# datefmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getLocale -- datefmt_get_locale — Biçemleyicinin kullandığı yereli döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getLocale(int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false

Yordamsal kullanım

function datefmt_get_locale(IntlDateFormatter `$biçemleyici`, int `$tür` = `ULOC_ACTUAL_LOCALE`): string|false

Biçemleyicinin kullandığı yereli döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`tür`

  Geçerli yerel için `Locale::VALID_LOCALE`, fiili yerel için `Locale::ACTUAL_LOCALE` belirtilir. Fiili yerel öntanımlıdır.

### Dönen Değerler

Biçemleyicinin kullandığı yerel, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_locale() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyici yereli: ".datefmt_get_locale($fmt);
    echo "\nBiçemli çıktı: ".datefmt_format( $fmt , 0);

    $fmt = datefmt_create(
        'de-DE',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyici yereli: ".datefmt_get_locale($fmt);
    echo "\nYeni biçemli çıktı: ".datefmt_format( $fmt , 0);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyici yereli: ".$fmt->getLocale();
    echo "\nBiçemli çıktı: ".$fmt->format(0);

    $fmt = new IntlDateFormatter(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyici yereli: ".$fmt->getLocale();
    echo "\nYeni biçemli çıktı: ".$fmt->format(0);
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyici yereli: en
    Biçemli çıktı: Wednesday, December 31, 1969 at 4:00:00 PM Pacific Standard Time
    Biçemleyici yereli: tr
    Yeni biçemli çıktı: 31 Aralık 1969 Çarşamba 16:00:00 Kuzey Amerika Pasifik Standart Saati

### Ayrıca Bakınız

- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getPattern

# datefmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getPattern -- datefmt_get_pattern — IntlDateFormatter tarafından kullanılan kalıbı döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getPattern(): string|false

Yordamsal kullanım

function datefmt_get_pattern(IntlDateFormatter `$biçemleyici`): string|false

Biçemleyici tarafından kullanılan kalıbı döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Çözümleme/biçemleme amacıyla kullanılan kalıp dizgesi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_pattern() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "Biçem kalıbı: " . datefmt_get_pattern($fmt) . "\n";
    echo "İlk biçem kalıplı çıktı: " . datefmt_format($fmt, 0) . "\n";
    datefmt_set_pattern($fmt,'dd-MM-yyyy hh:mm:ss z');
    echo "Yeni biçem kalıbı: " . datefmt_get_pattern($fmt) . "\n";
    echo "İkinci biçem kalıplı çıktı: " . datefmt_format($fmt, 0) . "\n";
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "Biçem kalıbı: ", $fmt->getPattern(), "\n";
    echo "İlk biçem kalıplı çıktı: ", $fmt->format(0), "\n";
    $fmt->setPattern('dd-MM-yyyy hh:mm:ss z');
    echo "Yeni biçem kalıbı: ", $fmt->getPattern(), "\n";
    echo "İkinci biçem kalıplı çıktı: ", $fmt->format(0), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    Biçem kalıbı: dd/MM/yyyy
    İlk biçem kalıplı çıktı: 01/01/1970
    Yeni biçem kalıbı: dd-MM-yyyy hh:mm:ss z
    İkinci biçem kalıplı çıktı: 01-01-1970 02:00:00 GMT+2

### Ayrıca Bakınız

- datefmt_set_pattern() - IntlDateFormatter tarafından kullanılan kalıbı tanımlar
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getTimeType

# datefmt_get_timetype

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getTimeType -- datefmt_get_timetype — IntlDateFormatter tarafından kullanılan zaman gösterim türünü döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getTimeType(): int|false

Yordamsal kullanım

function datefmt_get_timetype(IntlDateFormatter `$biçemleyici`): int|false

IntlDateFormatter tarafından kullanılan zaman gösterim türünü döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Biçemleyicinin geçerli tarih gösterim türü, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_timetype() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin tarih gösterim türü: ".datefmt_get_timetype($fmt);
    echo "\nBiçemli çıktı: ".datefmt_format($fmt, 0);

    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::SHORT,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyicinin yeni tarih gösterim türü: ".datefmt_get_timetype($fmt);
    echo "\nİkinci biçemli çıktı: ".datefmt_format($fmt, 0);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin tarih gösterim türü: ".$fmt->getTimeType();
    echo "\nBiçemli çıktı: ".$fmt->format(0);

    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::SHORT,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nBiçemleyicinin yeni tarih gösterim türü: ".$fmt->getTimeType();
    echo "\nİkinci biçemli çıktı: ".$fmt->format(0);
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyicinin tarih gösterim türü: 0
    Biçemli çıktı: 1 Ocak 1970 Perşembe 02:00:00 Doğu Avrupa Standart Saati
    Biçemleyicinin yeni tarih gösterim türü: 3
    İkinci biçemli çıktı: 1 Ocak 1970 Perşembe 02:00

### Ayrıca Bakınız

- datefmt_get_datetype() - IntlDateFormatter tarafından kullanılan tarih gösterim türünü döndürür
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getTimeZoneId

# datefmt_get_timezone_id

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::getTimeZoneId -- datefmt_get_timezone_id — IntlDateFormatter tarafından kullanılan zaman dilimi tantıcısını döndürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getTimeZoneId(): string|false

Yordamsal kullanım

function datefmt_get_timezone_id(IntlDateFormatter `$biçemleyici`): string|false

IntlDateFormatter tarafından kullanılan zaman dilimi tantıcısını döndürür.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

IntlDateFormatter tarafından kullanılan zaman dilimi tanıtıcısı, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_get_timezone_id() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyicinin zaman dilimi: ". datefmt_get_timezone_id($fmt) . "\n";
    datefmt_set_timezone_id($fmt, 'Europe/Madrid');
    echo "Yeni biçemleyicinin zaman dilimi: ".datefmt_get_timezone_id($fmt);

    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "timezone_id of the formatter is : " . $fmt->getTimezoneId() . "\n";
    $fmt->setTimezoneId('Europe/Madrid');
    echo "Now timezone_id of the formatter is : ".$fmt->getTimezoneId();

    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyicinin zaman dilimi: America/Los_Angeles
    Yeni biçemleyicinin zaman dilimi: Europe/Madrid

### Ayrıca Bakınız

- datefmt_set_timezone() - Sets formatterʼs timezone
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::getCalendarObject

# datefmt_get_calendar_object

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL intl >= 3.0.0)

IntlDateFormatter::getCalendarObject -- datefmt_get_calendar_object — Get copy of formatterʼs calendar object

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getCalendarObject(): IntlCalendar|false|null

Yordamsal kullanım

function datefmt_get_calendar_object(IntlDateFormatter `$formatter`): IntlCalendar|false|null

Obtain a copy of the calendar object used internally by this formatter. This calendar will have a type (as in gregorian, japanese, buddhist, roc, persian, islamic, etc.) and a timezone that match the type and timezone used by the formatter. The date/time of the object is unspecified.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A copy of the internal calendar object used by this formatter, or `null` if none has been set, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlDateFormatter::getCalendarObject() example

    <?php
    $formatter = IntlDateFormatter::create(
        "fr_FR@calendar=islamic",
        NULL,
        NULL,
        "GMT-01:00",
        IntlDateFormatter::TRADITIONAL
    );

    $cal = $formatter->getCalendarObject();

    var_dump(
        $cal->getType(),
        $cal->getTimeZone(),
        $cal->getLocale(Locale::VALID_LOCALE)
    );

Yukarıdaki örneğin çıktısı:

    string(7) "islamic"
    object(IntlTimeZone)#3 (4) {
      ["valid"]=>
      bool(true)
      ["id"]=>
      string(9) "GMT-01:00"
      ["rawOffset"]=>
      int(-3600000)
      ["currentOffset"]=>
      int(-3600000)
    }
    string(5) "fr_FR"

### Ayrıca Bakınız

- IntlDateFormatter::getCalendar() - IntlDateFormatter tarafından kullanılan takvim türünü döndürür
- IntlDateFormatter::setCalendar() - Kullanılacak takvimi tanımlar
- IntlCalendar

# IntlDateFormatter::getTimeZone

# datefmt_get_timezone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL intl >= 3.0.0)

IntlDateFormatter::getTimeZone -- datefmt_get_timezone — Get formatterʼs timezone

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::getTimeZone(): IntlTimeZone|false

Yordamsal kullanım

function datefmt_get_timezone(IntlDateFormatter `$formatter`): IntlTimeZone|false

Returns an IntlTimeZone object representing the timezone that will be used by this object to format dates and times. When formatting IntlCalendar and DateTime objects with this IntlDateFormatter, the timezone used will be the one returned by this method, not the one associated with the objects being formatted.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The associated IntlTimeZone object başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlDateFormatter::getTimeZone() examples

    <?php

    $madrid = IntlDateFormatter::create(NULL, NULL, NULL, 'Europe/Madrid');
    $lisbon = IntlDateFormatter::create(NULL, NULL, NULL, 'Europe/Lisbon');

    var_dump($madrid->getTimezone());
    echo $madrid->getTimezone()->getDisplayName(
            false, IntlTimeZone::DISPLAY_GENERIC_LOCATION, "en_US"), "\n";
    echo $lisbon->getTimeZone()->getId(), "\n";
    //The id can also be retrieved with ->getTimezoneId()
    echo $lisbon->getTimeZoneId(), "\n";

Yukarıdaki örneğin çıktısı:

    object(IntlTimeZone)#4 (4) {
      ["valid"]=>
      bool(true)
      ["id"]=>
      string(13) "Europe/Madrid"
      ["rawOffset"]=>
      int(3600000)
      ["currentOffset"]=>
      int(7200000)
    }
    Spain Time
    Europe/Lisbon
    Europe/Lisbon

### Ayrıca Bakınız

- IntlDateFormatter::getTimeZoneId() - IntlDateFormatter tarafından kullanılan zaman dilimi tantıcısını döndürür
- IntlDateFormatter::setTimeZone() - Sets formatterʼs timezone
- IntlTimeZone

# IntlDateFormatter::isLenient

# datefmt_is_lenient

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::isLenient -- datefmt_is_lenient — IntlDateFormatter esnek çözümleme mi yapıyor diye bakar

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::isLenient(): bool

Yordamsal kullanım

function datefmt_is_lenient(IntlDateFormatter `$biçemleyici`): bool

Kalıpla tam olarak eşleşmeyen girdilerin yorumlanmasında çözümleyicinin esnek mi yoksa katı mı davrandığına bakar.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

### Dönen Değerler

Çözümleyici esnekse `true` değilse `false`. Öntanımlı olarak çözümleyici esnektir.

### Örnekler

Örnek 1 - datefmt_is_lenient() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/mm/yyyy"
    );
    echo "Biçemleyici esnek mi?: ";
    if( $fmt->isLenient() ){
            echo('EVET');
    } else {
            echo('HAYIR');
    }
    datefmt_parse($fmt,"35/13/1971");
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " .
            datefmt_parse($fmt,"35/13/1971");
    if( intl_get_error_code() !=0 ){
            echo "\n Hata iletisi: ".intl_get_error_message();
            echo "\n Hata kodu: ".intl_get_error_code();
    }
    datefmt_set_lenient($fmt,false);
    echo "\nYeni biçemleyici esnek mi?: ";
    if( $fmt->isLenient() ){
            echo('EVET');
    } else {
            echo('HAYIR');
    }
    datefmt_parse($fmt,"35/13/1971");
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " .
            datefmt_parse($fmt,"35/13/1971");
    if( intl_get_error_code() !=0 ){
            echo "\n Hata iletisi: ".intl_get_error_message();
            echo "\n Hata kodu: ".intl_get_error_code()."\n";
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/mm/yyyy"
    );
    echo "Biçemleyici esnek mi?: ";
    if( $fmt->isLenient() ){
            echo('EVET');
    } else {
            echo('HAYIR');
    }
    $fmt->parse("35/13/1971");
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " .
            $fmt->parse("35/13/1971");
    if( intl_get_error_code() !=0 ){
            echo "\n Hata iletisi: ".intl_get_error_message();
            echo "\n Hata kodu: ".intl_get_error_code();
    }

    $fmt->setLenient(FALSE);
    echo "\nYeni biçemleyici esnek mi?: ";
    if( $fmt->isLenient() ){
            echo('EVET');
    } else {
            echo('HAYIR');
    }
    $fmt->parse("35/13/1971");
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " .$fmt->parse("35/13/1971");
    if( intl_get_error_code() !=0 ){
            echo "\n Hata iletisi: ".intl_get_error_message();
            echo "\n Hata kodu: ".intl_get_error_code()."\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyici esnek mi?: EVET
     '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: 34467180
    Yeni biçemleyici esnek mi?: HAYIR
     '35/13/1971' çözümlenmeye çalışılıyor. Sonuç:
     Hata iletisi: Date parsing failed: U_PARSE_ERROR
     Hata kodu: 9

### Ayrıca Bakınız

- datefmt_set_lenient() - Çözümleyiciye esneklik verir
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::localtime

# datefmt_localtime

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::localtime -- datefmt_localtime — Tarih dizgesini alanlarına çözümler

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::localtime(string `$dizge`, int `&$başlangıç` = `null`): array|false

Yordamsal kullanım

function datefmt_localtime(IntlDateFormatter `$biçemleyici`, string `$dizge`, int `&$başlangıç` = `null`): array|false

Belirtilen `dizge`'nin `başlangıç` konumundan itibaren olabildiğince çok veri toplayarak tarihi oluşturan alanları bir dizi içine ayrıştırır.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesnesi.

`dizge`

  Dönüştürülecek dizge.

`başlangıç`

  `başlangıç`, dizgenin başlangıcı 0 kabul edilerek bulunur. Dizgeden veri toplanırken bir hata oluşmazsa, bu bağımsız değişkene -1 yerleştirilir, aksi takdirde hata oluştuğu sırada okunan son konum yerleştirilir. `başlangıç` > strlen($dizge) ise çözümleme, anında başarısız olur.

### Dönen Değerler

Yerel zamana uygun, tamsayılardan oluşan bir dizi, başarısızlık durumunda `false` döner. 'tm_hour' alanındaki saat değeri, 24 saattir.

### Örnekler

Örnek 1 - datefmt_localtime() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $arr = datefmt_localtime($fmt,
            "Wednesday, December 31, 1969 4:00:00 PM PT");
    echo "Çözümleme sonucu:\n";
    if ($arr) {
        foreach ($arr as $key => $value) {
            echo "$key : $value\n";
        }
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    $arr = $fmt->localtime("Wednesday, December 31, 1969 4:00:00 PM PT");
    echo "Çözümleme sonucu:\n";
    if ($arr) {
        foreach ($arr as $key => $value) {
            echo "$key: $value\n";
        }
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Çözümleme sonucu:
    tm_sec: 0
    tm_min: 0
    tm_hour: 16
    tm_year: 69
    tm_mday: 31
    tm_wday: 3
    tm_yday: 365
    tm_mon: 11
    tm_isdst: 0

### Ayrıca Bakınız

- datefmt_create() - Bir tarih biçemleyici oluşturur
- datefmt_format() - Tarih/saat değerini bir dizge olarak biçemler
- datefmt_parse() - Dizgeyi bir zaman damgası değerine dönüştürür
- datefmt_get_error_code() - Son işlemin hata kodunu döndürür
- datefmt_get_error_message() - Son işlemin hata iletisini döndürür

# IntlDateFormatter::parse

# datefmt_parse

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::parse -- datefmt_parse — Dizgeyi bir zaman damgası değerine dönüştürür

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::parse(string `$dizge`, int `&$başlangıç` = `null`): int|float|false

Yordamsal kullanım

function datefmt_parse(IntlDateFormatter `$biçemleyici`, string `$dizge`, int `&$başlangıç` = `null`): int|float|false

Belirtilen `dizge`'nin `başlangıç` konumundan itibaren olabildiğinçe çok veri toplayarak bir arttırımlı zaman değeri oluşturmaya çalışır.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`dizge`

  Zaman damgasına dönüştürülecek dizge.

`başlangıç`

  `başlangıç`, dizgenin başlangıcı 0 kabul edilerek bulunur. Dizgeden veri toplanırken bir hata oluşmazsa, bu bağımsız değişkene -1 yerleştirilir, aksi takdirde hata oluştuğu sırada okunan son konum yerleştirilir. `başlangıç` > `strlen($string)` ise çözümleme, anında başarısız olur.

### Dönen Değerler

Zaman damgası, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "İlk çözümleme sonucu: ".
            $fmt->parse("Wednesday, December 20, 1989 4:00:00 PM Pacific Standard Time");
    $fmt = new IntlDateFormatter(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nİkinci  çözümleme sonucu: ".
            $fmt->parse("21 Aralık 1989 Perşembe 02:00:00 Doğu Avrupa Standart Saati")."\n";
    ?>

Örnek 2 - datefmt_parse() örneği

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo "İlk çözümleme sonucu: ". datefmt_parse( $fmt,
            "Wednesday, December 20, 1989 4:00:00 PM Pacific Standard Time");
    $fmt = datefmt_create(
    $fmt = new IntlDateFormatter(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "\nİkinci  çözümleme sonucu: ".datefmt_parse( $fmt,
            "21 Aralık 1989 Perşembe 02:00:00 Doğu Avrupa Standart Saati")."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    İlk çözümleme sonucu: 630201600
    İkinci  çözümleme sonucu: 630201600

### Ayrıca Bakınız

- datefmt_create() - Bir tarih biçemleyici oluşturur
- datefmt_format() - Tarih/saat değerini bir dizge olarak biçemler
- datefmt_localtime() - Tarih dizgesini alanlarına çözümler
- datefmt_get_error_code() - Son işlemin hata kodunu döndürür
- datefmt_get_error_message() - Son işlemin hata iletisini döndürür

# IntlDateFormatter::parseToCalendar

(PHP 8 >= 8.4.0)

IntlDateFormatter::parseToCalendar — Parse a string into a timestamp, updating an open calendar

### Açıklama

public function IntlDateFormatter::parseToCalendar(string `$string`, int `&$offset` = `null`): int|float|false

Converts `string` to an incremental time value, starting at `offset` and consuming as much of the input value as possible.

This method behaves like IntlDateFormatter::parse(), except that the time zone of the formatter is updated according to the time zone information contained in the parsed `string`.

### Bağımsız Değişkenler

`string`
  The string to convert to a time.
`offset`
  Position at which to start the parsing in `string` (zero-based). If no error occurs before `string` is consumed, `offset` will contain -1, otherwise it will contain the position at which parsing ended (and the error occurred). This variable will contain the end position if the parse fails. If `offset` > `strlen($string)`, the parse fails immediately.

### Dönen Değerler

Timestamp of parsed value, or `false` if value cannot be parsed.

### Örnekler

Örnek 1 IntlDateFormatter::parseToCalendar() example

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN
    );
    echo $fmt->parseToCalendar('Wednesday, December 20, 1989 at 4:00:00 PM Pacific Standard Time');
    ?>

Yukarıdaki örneğin çıktısı:

    630201600

### Ayrıca Bakınız

- IntlDateFormatter::parse() - Dizgeyi bir zaman damgası değerine dönüştürür
- IntlDateFormatter::format() - Tarih/saat değerini bir dizge olarak biçemler
- IntlDateFormatter::getErrorCode() - Son işlemin hata kodunu döndürür
- IntlDateFormatter::getErrorMessage() - Son işlemin hata iletisini döndürür

# IntlDateFormatter::setCalendar

# datefmt_set_calendar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setCalendar -- datefmt_set_calendar — Kullanılacak takvimi tanımlar

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::setCalendar(IntlCalendar|int|null `$takvim`): bool

Yordamsal kullanım

function datefmt_set_calendar(IntlDateFormatter `$biçemleyici`, IntlCalendar|int|null `$takvim`): bool

Biçemleyici tarafından kullanılacak takvimi tanımlar.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`takvim`

  Ya kullanılacak takvimdir. Ya `IntlDateFormatter::GREGORIAN`'dır; bu öntanımlı olup `null` belirtildiğinde de kullanılır. Ya da IntlCalendar nesnesidir.

  Aktarılan IntlCalendar nesneleri kopyalanır fakat değişiklik yapılmaz.

  IntlCalendar nesnesi aktarılırsa biçemleyicinin zaman dilimine dokunulmaz, aksi takdirde aktarılan nesnenin zaman dilimi geçerli olur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
5.5.0/PECL 3.0.0 | Artık IntlCalendar nesnesi aktarılabiliyor.

### Örnekler

Örnek 1 - datefmt_set_calendar() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyici takvimi: ".datefmt_get_calendar($fmt);
    datefmt_set_calendar($fmt,IntlDateFormatter::TRADITIONAL);
    echo "\nYenisi: ".datefmt_get_calendar($fmt);
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN
    );
    echo "Biçemleyici takvimi: ".$fmt->getCalendar();
    $fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
    echo "\nYenisi: ".$fmt->getCalendar();
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyici takvimi: 1
    Yenisi: 0

Örnek 3 - IntlCalendar nesneli örnek

    <?php
    $time = strtotime("2013-03-03 00:00:00 UTC");
    $formatter = IntlDateFormatter::create("tr_TR", NULL, NULL, "Europe/Amsterdam");

    echo "önce: ", $formatter->format($time), "\n";

    /* takvimin yerelinin kullanılmayışına dikkat! */
    $formatter->setCalendar(IntlCalendar::createInstance(
                   "America/New_York", "pt_BR@calendar=islamic"));

    echo "sonra:  ", $formatter->format($time), "\n";

Yukarıdaki örneğin çıktısı:

    önce: 3 Mart 2013 Pazar 01:00:00 Orta Avrupa Standart Saati
    sonra:  20 Rebiülahir 1434 Cumartesi 19:00:00 Kuzey Amerika Doğu Standart Saati

### Ayrıca Bakınız

- datefmt_get_calendar() - IntlDateFormatter tarafından kullanılan takvim türünü döndürür
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::setLenient

# datefmt_set_lenient

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setLenient -- datefmt_set_lenient — Çözümleyiciye esneklik verir

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::setLenient(bool `$esnek`): void

Yordamsal kullanım

function datefmt_set_lenient(IntlDateFormatter `$biçemleyici`, bool `$esnek`): void

Kalıpla tam olarak eşleşmeyen girdilerin yorumlanmasında çözümleyicinin esnek mi yoksa katı mı davranacağını belirler. Esnek çözümleme etkin olduğunda çözümleyici kusurlu tarih ve saat kalıplarını kabul eder ve olabildiğince bir değer oluşturmaya çalışır. Fazladan boşluklar, tanınmayan dizgecikler veya geçersiz değerler ("February 30th" gibi) kabul edilmez.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`esnek`

  Çözümleyicinin esnek olması isteniyorsa `true` istenmiyorsa `false` belirtilir. `true` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - datefmt_set_lenient() örneği

    <?php
    $fmt = datefmt_create(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        'dd/MM/yyyy'
    );
    echo 'Biçemleyici esnek mi?: ';
    if ($fmt->isLenient()) {
        echo 'EVET';
    } else {
        echo 'HAYIR';
    }
    datefmt_parse($fmt, '35/13/1971');
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " . datefmt_parse($fmt, '35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\n Hata iletisi: " . intl_get_error_message();
        echo "\n Hata kodu: " . intl_get_error_code();
    }
    datefmt_set_lenient($fmt, false);
    echo "\nNow lenient of the formatter is : ";
    if ($fmt->isLenient()) {
        echo 'EVET';
    } else {
        echo 'HAYIR';
    }
    datefmt_parse($fmt, '35/13/1971');
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " . datefmt_parse($fmt, '35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\n Hata iletisi: ".intl_get_error_message();
        echo "\n Hata kodu: ".intl_get_error_code();
    }
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        'tr_TR',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        'dd/MM/yyyy'
    );
    echo 'Biçemleyici esnek mi?: ';
    if ($fmt->isLenient()) {
        echo 'EVET';
    } else {
        echo 'HAYIR';
    }
    $fmt->parse('35/13/1971');
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " . $fmt->parse('35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\n Hata iletisi: " . intl_get_error_message();
        echo "\n Hata kodu: " . intl_get_error_code();
    }
    $fmt->setLenient(FALSE);
    echo "\nYeni biçemleyici esnek mi?: ";
    if ($fmt->isLenient()) {
        echo 'EVET';
    } else {
        echo 'HAYIR';
    }
    $fmt->parse('35/13/1971');
    echo "\n '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: " . $fmt->parse('35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\n Hata iletisi: " . intl_get_error_message();
        echo "\n Hata kodu: " . intl_get_error_code();
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Biçemleyici esnek mi?: EVET
     '35/13/1971' çözümlenmeye çalışılıyor. Sonuç: 66002400
    Yeni biçemleyici esnek mi?: HAYIR
     '35/13/1971' çözümlenmeye çalışılıyor. Sonuç:
     Hata iletisi: Date parsing failed: U_PARSE_ERROR
     Hata kodu: 9

### Ayrıca Bakınız

- datefmt_is_lenient() - IntlDateFormatter esnek çözümleme mi yapıyor diye bakar
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::setPattern

# datefmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setPattern -- datefmt_set_pattern — IntlDateFormatter tarafından kullanılan kalıbı tanımlar

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::setPattern(string `$pattern`): bool

Yordamsal kullanım

function datefmt_set_pattern(IntlDateFormatter `$biçemleyici`, string `$kalıp`): bool

IntlDateFormatter tarafından kullanılan kalıbı tanımlar.

### Bağımsız Değişkenler

`biçemleyici`

  Biçemleyici nesne.

`kalıp`

  Kullanılacak kalıp dizgesi. Olası kalıplar için bkz: » https://unicode-org.github.io/icu/userguide/format_parse/datetime/

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner. Yanlış oluşturulmuş biçem dizgeleri genelde hataya sebep olur.

### Örnekler

Örnek 1 - datefmt_set_pattern() örneği

    <?php
    $fmt = datefmt_create(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Istanbul',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "Biçem kalıbı: ", datefmt_get_pattern($fmt), PHP_EOL;
    echo "İlk biçem kalıplı çıktı: ", datefmt_format($fmt, 0), PHP_EOL;
    datefmt_set_pattern($fmt,'dd-MM-yyyy hh:mm:ss z');
    echo "Yeni biçem kalıbı: ", datefmt_get_pattern($fmt), PHP_EOL;
    echo "İkinci biçem kalıplı çıktı: ", datefmt_format($fmt, 0), PHP_EOL;
    ?>

Örnek 2 - Nesne yönelimli kullanım örneği

    <?php
    $fmt = new IntlDateFormatter(
        "tr_TR",
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN,
        "dd/MM/yyyy"
    );
    echo "Biçem kalıbı: ", $fmt->getPattern(), PHP_EOL;
    echo "İlk biçem kalıplı çıktı: ", $fmt->format(0), PHP_EOL;
    $fmt->setPattern('dd-MM-yyyy hh:mm:ss z');
    echo "Yeni biçem kalıbı: ", $fmt->getPattern(), PHP_EOL;
    echo "İkinci biçem kalıplı çıktı: ", $fmt->format(0), PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    Biçem kalıbı: dd/MM/yyyy
    İlk biçem kalıplı çıktı: 31/12/1969
    Yeni biçem kalıbı: dd-MM-yyyy hh:mm:ss z
    İkinci biçem kalıplı çıktı: 31-12-1969 04:00:00 GMT-8

### Ayrıca Bakınız

- datefmt_get_pattern() - IntlDateFormatter tarafından kullanılan kalıbı döndürür
- datefmt_create() - Bir tarih biçemleyici oluşturur

# IntlDateFormatter::setTimeZone

# datefmt_set_timezone

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL intl >= 3.0.0)

IntlDateFormatter::setTimeZone -- datefmt_set_timezone — Sets formatterʼs timezone

### Açıklama

Nesne yönelimli kullanım

public function IntlDateFormatter::setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): bool

Yordamsal kullanım

function datefmt_set_timezone(IntlDateFormatter `$formatter`, IntlTimeZone|DateTimeZone|string|null `$timezone`): bool

Sets the timezone used for the IntlDateFormatter. object.

### Bağımsız Değişkenler

`formatter`

  The formatter resource.

`timezone`

  The timezone to use for this formatter. This can be specified in the following forms:

  - date_default_timezone_get() tarafından döndürüldüğü gibi ve date_default_timezone_set() işlevi üzerinden veya date.timezone ini yönergesinde belirtildiği gibi, öntanımlı zaman dilimi kullanıldığı durumda `null`.

  - Doğrudan kullanılacaksa, IntlTimeZone.

  - DateTimeZone. Tanımlayıcısı çıkarılır ve bir ICU zaman dilimi nesnesi oluşturulur; zaman dilimi PHP'nin değil, ICU'nun veritabanı tarafından desteklenir.

  - Geçerli bir ICU zaman dilimi tanımlayıcısı olması gereken bir dizge. Bkz: IntlTimeZone::createTimeZoneIDEnumeration(). `"GMT+08:30"` gibi ham gösterimler de kabul edilir

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | This function now returns `true` on success; previously it returns `null`.

### Örnekler

Örnek 1 IntlDateFormatter::setTimeZone() examples

    <?php
    ini_set('date.timezone', 'Europe/Amsterdam');

    $formatter = IntlDateFormatter::create(NULL, NULL, NULL, "UTC");

    $formatter->setTimeZone(NULL);
    echo "NULL\n    ", $formatter->getTimeZone()->getId(), "\n";

    $formatter->setTimeZone(IntlTimeZone::createTimeZone('Europe/Lisbon'));
    echo "IntlTimeZone\n    ", $formatter->getTimeZone()->getId(), "\n";

    $formatter->setTimeZone(new DateTimeZone('Europe/Paris'));
    echo "DateTimeZone\n    ", $formatter->getTimeZone()->getId(), "\n";

    $formatter->setTimeZone('Europe/Rome');
    echo "String\n    ", $formatter->getTimeZone()->getId(), "\n";

    $formatter->setTimeZone('GMT+00:30');
    print_r($formatter->getTimeZone());

Yukarıdaki örneğin çıktısı:

    NULL
        Europe/Amsterdam
    IntlTimeZone
        Europe/Lisbon
    DateTimeZone
        Europe/Paris
    String
        Europe/Rome
    IntlTimeZone Object
    (
        [valid] => 1
        [id] => GMT+00:30
        [rawOffset] => 1800000
        [currentOffset] => 1800000
    )

### Ayrıca Bakınız

- IntlDateFormatter::getTimeZone() - Get formatterʼs timezone

## İçindekiler

- IntlDateFormatter::create — Bir tarih biçemleyici oluşturur
- IntlDateFormatter::format — Tarih/saat değerini bir dizge olarak biçemler
- IntlDateFormatter::formatObject — Formats an object
- IntlDateFormatter::getCalendar — IntlDateFormatter tarafından kullanılan takvim türünü döndürür
- IntlDateFormatter::getDateType — IntlDateFormatter tarafından kullanılan tarih gösterim türünü döndürür
- IntlDateFormatter::getErrorCode — Son işlemin hata kodunu döndürür
- IntlDateFormatter::getErrorMessage — Son işlemin hata iletisini döndürür
- IntlDateFormatter::getLocale — Biçemleyicinin kullandığı yereli döndürür
- IntlDateFormatter::getPattern — IntlDateFormatter tarafından kullanılan kalıbı döndürür
- IntlDateFormatter::getTimeType — IntlDateFormatter tarafından kullanılan zaman gösterim türünü döndürür
- IntlDateFormatter::getTimeZoneId — IntlDateFormatter tarafından kullanılan zaman dilimi tantıcısını döndürür
- IntlDateFormatter::getCalendarObject — Get copy of formatterʼs calendar object
- IntlDateFormatter::getTimeZone — Get formatterʼs timezone
- IntlDateFormatter::isLenient — IntlDateFormatter esnek çözümleme mi yapıyor diye bakar
- IntlDateFormatter::localtime — Tarih dizgesini alanlarına çözümler
- IntlDateFormatter::parse — Dizgeyi bir zaman damgası değerine dönüştürür
- IntlDateFormatter::parseToCalendar — Parse a string into a timestamp, updating an open calendar
- IntlDateFormatter::setCalendar — Kullanılacak takvimi tanımlar
- IntlDateFormatter::setLenient — Çözümleyiciye esneklik verir
- IntlDateFormatter::setPattern — IntlDateFormatter tarafından kullanılan kalıbı tanımlar
- IntlDateFormatter::setTimeZone — Sets formatterʼs timezone

# The ResourceBundle class

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

## Giriş

Localized software products often require sets of data that are to be customized depending on current locale, e.g.: messages, labels, formatting patterns. ICU resource mechanism allows to define sets of resources that the application can load on locale basis, while accessing them in unified locale-independent fashion.

This class implements access to ICU resource data files. These files are binary data arrays which ICU uses to store the localized data.

ICU resource bundle can hold simple resources and complex resources. Complex resources are containers which can be either integer-indexed or string-indexed (just like PHP arrays). Simple resources can be of the following types: string, integer, binary data field or integer array.

ResourceBundle supports direct access to the data through array access pattern and iteration via foreach, as well as access via class methods. The result will be PHP value for simple resources and ResourceBundle object for complex ones. All resources are read-only.

## Sınıf Sözdizimi

class ResourceBundle implements IteratorAggregate, Countable {
/* Yöntemler */
public function __construct(?string `$locale`, ?string `$bundle`, bool `$fallback` = `true`)
public function count(): int
public static function create(?string `$locale`, ?string `$bundle`, bool `$fallback` = `true`): ?ResourceBundle
public function get(string|int `$index`, bool `$fallback` = `true`): ResourceBundle|array|string|int|null
public function getErrorCode(): int
public function getErrorMessage(): string
public static function getLocales(string `$bundle`): array|false
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | ResourceBundle implements IteratorAggregate now. Previously, Traversable was implemented instead.
7.4.0 | ResourceBundle implements Countable now.

## Ayrıca Bakınız

- » ICU Resource Management
- » ICU Data

# ResourceBundle::count

# resourcebundle_count

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::count -- resourcebundle_count — Get number of elements in the bundle

### Açıklama

Nesne yönelimli kullanım

public function ResourceBundle::count(): int

Yordamsal kullanım

function resourcebundle_count(ResourceBundle `$bundle`): int

Get the number of elements in the bundle.

### Bağımsız Değişkenler

`bundle`

  ResourceBundle object.

### Dönen Değerler

Returns number of elements in the bundle.

### Örnekler

Örnek 1 resourcebundle_count() example

    <?php
    $r = resourcebundle_create( 'es', "/usr/share/data/myapp");
    echo resourcebundle_count($r);
    ?>

Örnek 2 OO example

    <?php
    $r = new ResourceBundle( 'es', "/usr/share/data/myapp");
    echo $r->count();
    ?>

Yukarıdaki örneğin çıktısı:

    42

### Ayrıca Bakınız

- resourcebundle_get() - Get data from the bundle

# ResourceBundle::create

# resourcebundle_create

# ResourceBundle::__construct

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::create -- resourcebundle_create -- ResourceBundle::__construct — Create a resource bundle

### Açıklama

Nesne yönelimli kullanım (method)

public static function ResourceBundle::create(?string `$locale`, ?string `$bundle`, bool `$fallback` = `true`): ?ResourceBundle

Yordamsal kullanım

function resourcebundle_create(?string `$locale`, ?string `$bundle`, bool `$fallback` = `true`): ?ResourceBundle

Nesne yönelimli kullanım (constructor):

public function ResourceBundle::__construct(?string `$locale`, ?string `$bundle`, bool `$fallback` = `true`)

Creates a resource bundle.

### Bağımsız Değişkenler

`locale`

  Locale for which the resources should be loaded (locale name, e.g. en_CA).

`bundle`

  The directory where the data is stored or the name of the .dat file.

`fallback`

  Whether locale should match exactly or fallback to parent locale is allowed.

### Dönen Değerler

Returns ResourceBundle object or `null` on error.

### Örnekler

Örnek 1 resourcebundle_create() example

    <?php
    $r = resourcebundle_create( 'es', "/usr/share/data/myapp");
    echo $r['teststring'];
    ?>

Örnek 2 ResourceBundle::create() example

    <?php
    $r = ResourceBundle::create( 'es', "/usr/share/data/myapp");
    echo $r['teststring'];
    ?>

Yukarıdaki örneğin çıktısı:

    ¡Hola, mundo!

### Ayrıca Bakınız

- resourcebundle_get() - Get data from the bundle

# ResourceBundle::get

# resourcebundle_get

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::get -- resourcebundle_get — Get data from the bundle

### Açıklama

Nesne yönelimli kullanım

public function ResourceBundle::get(string|int `$index`, bool `$fallback` = `true`): ResourceBundle|array|string|int|null

Yordamsal kullanım

function resourcebundle_get(ResourceBundle `$bundle`, string|int `$index`, bool `$fallback` = `true`): ResourceBundle|array|string|int|null

Get the data from the bundle by index or string key.

### Bağımsız Değişkenler

`bundle`

  ResourceBundle object.

`index`

  Data index, must be string or integer.

`fallback`

  Whether locale should match exactly or fallback to parent locale is allowed.

### Dönen Değerler

Returns the data located at the index or `null` on error. Strings, integers and binary data strings are returned as corresponding PHP types, integer array is returned as PHP array. Complex types are returned as ResourceBundle object.

### Hatalar/İstisnalar

A TypeError is thrown if the offset type is invalid.

A ValueError is thrown if if `index` is a string and is empty or is a int and does not fit into a 32 bit integer type.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | A TypeError is thrown if the offset type is invalid. A ValueError is thrown if if `index` is a string and is empty or is a int and does not fit into a 32 bit integer type.

### Örnekler

Örnek 1 resourcebundle_get() example

    <?php
    $r = resourcebundle_create( 'es', "/usr/share/data/myapp");
    echo resourcebundle_get($r, 'somestring');
    ?>

Örnek 2 OO example

    <?php
    $r = new ResourceBundle( 'es', "/usr/share/data/myapp");
    echo $r->get('somestring');
    ?>

Yukarıdaki örneğin çıktısı:

    ?Hola, mundo!

### Ayrıca Bakınız

- resourcebundle_count() - Get number of elements in the bundle

# ResourceBundle::getErrorCode

# resourcebundle_get_error_code

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::getErrorCode -- resourcebundle_get_error_code — Get bundle's last error code

### Açıklama

Nesne yönelimli kullanım

public function ResourceBundle::getErrorCode(): int

Yordamsal kullanım

function resourcebundle_get_error_code(ResourceBundle `$bundle`): int

Get error code from the last function performed by the bundle object.

### Bağımsız Değişkenler

`bundle`

  ResourceBundle object.

### Dönen Değerler

Returns error code from last bundle object call.

### Örnekler

Örnek 1 resourcebundle_get_error_code() example

    <?php
    $r = resourcebundle_create( 'es', "/usr/share/data/myapp");
    echo $r['somestring'];
    if(intl_is_failure(resourcebundle_get_error_code($r))) {
        report_error("Bundle error");
    }
    ?>

Örnek 2 OO example

    <?php
    $r = new ResourceBundle( 'es', "/usr/share/data/myapp");
    echo $r['somestring'];
    if(intl_is_failure(ResourceBundle::getErrorCode($r))) {
        report_error("Bundle error");
    }
    ?>

### Ayrıca Bakınız

- resourcebundle_get_error_message() - Get bundle's last error message
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# ResourceBundle::getErrorMessage

# resourcebundle_get_error_message

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::getErrorMessage -- resourcebundle_get_error_message — Get bundle's last error message

### Açıklama

Nesne yönelimli kullanım

public function ResourceBundle::getErrorMessage(): string

Yordamsal kullanım

function resourcebundle_get_error_message(ResourceBundle `$bundle`): string

Get error message from the last function performed by the bundle object.

### Bağımsız Değişkenler

`bundle`

  ResourceBundle object.

### Dönen Değerler

Returns error message from last bundle object's call.

### Örnekler

Örnek 1 resourcebundle_get_error_message() example

    <?php
    $r = resourcebundle_create( 'es', "/usr/share/data/myapp");
    echo $r['somestring'];
    if(intl_is_failure(resourcebundle_get_error_code($r))) {
        report_error("Bundle error: ".resourcebundle_get_error_message($r));
    }
    ?>

Örnek 2 OO example

    <?php
    $r = new ResourceBundle( 'es', "/usr/share/data/myapp");
    echo $r['somestring'];
    if(intl_is_failure(ResourceBundle::getErrorCode($r))) {
        report_error("Bundle error: ".ResourceBundle::getErrorMessage($r));
    }
    ?>

### Ayrıca Bakınız

- resourcebundle_get_error_code() - Get bundle's last error code
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# ResourceBundle::getLocales

# resourcebundle_locales

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

ResourceBundle::getLocales -- resourcebundle_locales — Get supported locales

### Açıklama

Nesne yönelimli kullanım

public static function ResourceBundle::getLocales(string `$bundle`): array|false

Yordamsal kullanım

function resourcebundle_locales(string `$bundle`): array|false

Get available locales from ResourceBundle name.

### Bağımsız Değişkenler

`bundle`

  Path of ResourceBundle for which to get available locales, or empty string for default locales list.

### Dönen Değerler

Returns the list of locales supported by the bundle, or `false` on failure.

### Örnekler

Örnek 1 resourcebundle_locales() example

    <?php
    $bundle = "/user/share/data/myapp";
    echo join(PHP_EOL, resourcebundle_locales($bundle));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    es
    root

Örnek 2 OO example

    <?php
    $bundle = "/usr/share/data/myapp";
    $r = new ResourceBundle( 'es', $bundle);
    echo join("\n", $r->getLocales($bundle));
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    es
    root

### Ayrıca Bakınız

- resourcebundle_get() - Get data from the bundle

## İçindekiler

- ResourceBundle::count — Get number of elements in the bundle
- ResourceBundle::create — Create a resource bundle
- ResourceBundle::get — Get data from the bundle
- ResourceBundle::getErrorCode — Get bundle's last error code
- ResourceBundle::getErrorMessage — Get bundle's last error message
- ResourceBundle::getLocales — Get supported locales

# The Spoofchecker class

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

## Giriş

This class is provided because Unicode contains large number of characters and incorporates the varied writing systems of the world and their incorrect usage can expose programs or systems to possible security attacks using characters similarity.

Provided methods allow to check whether an individual string is likely an attempt at confusing the reader (`spoof detection`), such as "pаypаl" spelled with Cyrillic 'а' characters.

## Sınıf Sözdizimi

class Spoofchecker {
/* Sabitler */
public const int SINGLE_SCRIPT_CONFUSABLE;
public const int MIXED_SCRIPT_CONFUSABLE;
public const int WHOLE_SCRIPT_CONFUSABLE;
public const int ANY_CASE;
public const int SINGLE_SCRIPT;
public const int INVISIBLE;
public const int CHAR_LIMIT;
public const int ASCII;
public const int HIGHLY_RESTRICTIVE;
public const int MODERATELY_RESTRICTIVE;
public const int MINIMALLY_RESTRICTIVE;
public const int UNRESTRICTIVE;
public const int SINGLE_SCRIPT_RESTRICTIVE;
public const int MIXED_NUMBERS;
public const int HIDDEN_OVERLAY;
public const int IGNORE_SPACE;
public const int CASE_INSENSITIVE;
public const int ADD_CASE_MAPPINGS;
public const int SIMPLE_CASE_INSENSITIVE;
/* Yöntemler */
public function __construct()
public function areConfusable(string `$string1`, string `$string2`, int `&$errorCode` = `null`): bool
public function isSuspicious(string `$string`, int `&$errorCode` = `null`): bool
public function setAllowedChars(string `$pattern`, int `$patternOptions` = 0): void
public function setAllowedLocales(string `$locales`): void
public function setChecks(int `$checks`): void
public function setRestrictionLevel(int `$level`): void
}

## Öntanımlı Sabitler

`Spoofchecker::SINGLE_SCRIPT_CONFUSABLE` int

`Spoofchecker::MIXED_SCRIPT_CONFUSABLE` int

`Spoofchecker::WHOLE_SCRIPT_CONFUSABLE` int

`Spoofchecker::ANY_CASE` int

`Spoofchecker::SINGLE_SCRIPT` int

`Spoofchecker::INVISIBLE` int

`Spoofchecker::CHAR_LIMIT` int

`Spoofchecker::ASCII` int

`Spoofchecker::HIGHLY_RESTRICTIVE` int

`Spoofchecker::MODERATELY_RESTRICTIVE` int

`Spoofchecker::MINIMALLY_RESTRICTIVE` int

`Spoofchecker::UNRESTRICTIVE` int

`Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE` int

`Spoofchecker::MIXED_NUMBERS` int

`Spoofchecker::HIDDEN_OVERLAY` int

`Spoofchecker::IGNORE_SPACE` int

`Spoofchecker::CASE_INSENSITIVE` int
  Enables case-insensitive matching
`Spoofchecker::ADD_CASE_MAPPINGS` int

  Adds all case mappings for each element in the set

`Spoofchecker::SIMPLE_CASE_INSENSITIVE` int
  Enables case-insensitive matching

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Added `Spoofchecker::IGNORE_SPACE`, `Spoofchecker::CASE_INSENSITIVE`, `Spoofchecker::ADD_CASE_MAPPINGS`, `Spoofchecker::SIMPLE_CASE_INSENSITIVE`.
8.4.0 | The class constants are now typed.
7.3.0 | Class constants used by Spoofchecker::setRestrictionLevel() such as `Spoofchecker::ASCII`, `Spoofchecker::HIGHLY_RESTRICTIVE`, `Spoofchecker::MODERATELY_RESTRICTIVE`, `Spoofchecker::MINIMALLY_RESTRICTIVE`, `Spoofchecker::UNRESTRICTIVE`, `Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE` has been added.

# Spoofchecker::areConfusable

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Spoofchecker::areConfusable — Checks if given strings can be confused

### Açıklama

public function Spoofchecker::areConfusable(string `$string1`, string `$string2`, int `&$errorCode` = `null`): bool

Checks whether two given strings can easily be mistaken.

### Bağımsız Değişkenler

`string1`

  First string to check.

`string2`

  Second string to check.

`errorCode`

  This variable is set by-reference to int containing an error, if there was any.

### Dönen Değerler

Returns `true` if two given strings can be confused, `false` otherwise.

### Örnekler

Örnek 1 Spoofchecker::areConfusable() example

    <?php
    $checker = new Spoofchecker();

    $checker->areConfusable('google.com', 'goog1e.com'); // true
    // Lower l can be confused with digit one

    $checker->areConfusable('google.com', 'g00g1e.com'); // false
    // Zero (0) cannot be easily confused with "o" letter

# Spoofchecker::__construct

(No version information available, might only be in Git)

Spoofchecker::__construct — Constructor

### Açıklama

public function Spoofchecker::__construct()

Creates new instance of Spoofchecker.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# Spoofchecker::isSuspicious

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters

### Açıklama

public function Spoofchecker::isSuspicious(string `$string`, int `&$errorCode` = `null`): bool

Checks if given string contains any suspicious characters like letters which are almost identical visually, but are Unicode characters from different sets.

### Bağımsız Değişkenler

`string`

  String to test.

`errorCode`

  This variable is set by-reference to int containing an error, if there was any.

### Dönen Değerler

Returns `true` if there are suspicious characters, `false` otherwise.

### Örnekler

Örnek 1 Spoofchecker::isSuspicious() example

    <?php
    $checker = new Spoofchecker();

    $checker->isSuspicious('google.com'); // FALSE: only ASCII characters

    $checker->isSuspicious('Рaypal.com'); // TRUE
    // The first letter is from Cyrylic, not a regular latin "P"

# Spoofchecker::setAllowedChars

(PHP 8 >= 8.4.0)

Spoofchecker::setAllowedChars — Set the set of characters allowed when running checks

### Açıklama

public function Spoofchecker::setAllowedChars(string `$pattern`, int `$patternOptions` = 0): void

Restricts the characters that are considered acceptable by subsequent checks to the set described by `pattern`. Any character outside of this set causes Spoofchecker::isSuspicious() to report a result.

### Bağımsız Değişkenler

`pattern`
  A character set described as a `UnicodeSet` pattern, that is a regular-expression style character class. It must begin with `[` and end with `]`, for example `[a-z0-9]`.
`patternOptions`
  A bitmask controlling how `pattern` is interpreted. It must be `0`, or `Spoofchecker::IGNORE_SPACE` on its own or combined with exactly one of `Spoofchecker::CASE_INSENSITIVE`, `Spoofchecker::ADD_CASE_MAPPINGS`, or `Spoofchecker::SIMPLE_CASE_INSENSITIVE`.

### Dönen Değerler

No value is returned.

### Hatalar/İstisnalar

Throws a ValueError if `pattern` is not a valid character set pattern, or if `patternOptions` is not a valid combination of options.

### Örnekler

Örnek 1 Spoofchecker::setAllowedChars() example

    <?php
    $checker = new Spoofchecker();
    $checker->setAllowedChars('[a-z0-9]');

    var_dump($checker->isSuspicious('hello'));
    var_dump($checker->isSuspicious('héllo'));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)

### Ayrıca Bakınız

- Spoofchecker::setAllowedLocales() - Locales to use when running checks
- Spoofchecker::isSuspicious() - Checks if a given text contains any suspicious characters

# Spoofchecker::setAllowedLocales

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Spoofchecker::setAllowedLocales — Locales to use when running checks

### Açıklama

public function Spoofchecker::setAllowedLocales(string `$locales`): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locales`

### Dönen Değerler

# Spoofchecker::setChecks

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Spoofchecker::setChecks — Set the checks to run

### Açıklama

public function Spoofchecker::setChecks(int `$checks`): void

Sets the checks that will be performed by SpoofChecker::isSuspicious().

### Bağımsız Değişkenler

`checks`

  The checks that will be performed by SpoofChecker::isSuspicious(). A bitmask of `Spoofchecker::SINGLE_SCRIPT_CONFUSABLE`, `Spoofchecker::MIXED_SCRIPT_CONFUSABLE`, `Spoofchecker::WHOLE_SCRIPT_CONFUSABLE`, `Spoofchecker::ANY_CASE`, `Spoofchecker::SINGLE_SCRIPT`, `Spoofchecker::INVISIBLE`, or `Spoofchecker::CHAR_LIMIT`. Defaults to all checks as of ICU 58; prior to that version, `Spoofchecker::SINGLE_SCRIPT` was excluded.

### Dönen Değerler

Hiçbir değer dönmez.

# Spoofchecker::setRestrictionLevel

(PHP 7 >= 7.3.0, PHP 8)

Spoofchecker::setRestrictionLevel — Set the restriction level

### Açıklama

public function Spoofchecker::setRestrictionLevel(int `$level`): void

Sets the restriction level of SpoofChecker::isSuspicious().

### Bağımsız Değişkenler

`level`

  The restriction level of SpoofChecker::isSuspicious(). One of `Spoofchecker::ASCII`, `Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE`, `Spoofchecker::HIGHLY_RESTRICTIVE`, `Spoofchecker::MODERATELY_RESTRICTIVE`, `Spoofchecker::MINIMALLY_RESTRICTIVE`, or `Spoofchecker::UNRESTRICTIVE`. Defaults to `Spoofchecker::HIGHLY_RESTRICTIVE`.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- Spoofchecker::areConfusable — Checks if given strings can be confused
- Spoofchecker::__construct — Constructor
- Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters
- Spoofchecker::setAllowedChars — Set the set of characters allowed when running checks
- Spoofchecker::setAllowedLocales — Locales to use when running checks
- Spoofchecker::setChecks — Set the checks to run
- Spoofchecker::setRestrictionLevel — Set the restriction level

# The Transliterator class

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

## Giriş

Transliterator provides transliteration of strings.

## Sınıf Sözdizimi

class Transliterator {
/* Sabitler */
public const int FORWARD;
public const int REVERSE;
/* Özellikler */
public readonly string $id;
/* Yöntemler */
final private function __construct()
public static function create(string `$id`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator
public static function createFromRules(string `$rules`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator
public function createInverse(): ?Transliterator
public function getErrorCode(): int
public function getErrorMessage(): string
public static function listIDs(): array|false
public function transliterate(string `$string`, int `$start` = 0, int `$end` = -1): string|false
}

## Özellikler

id

## Öntanımlı Sabitler

`Transliterator::FORWARD` int

`Transliterator::REVERSE` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.
8.2.0 | The id property is now readonly.

# Transliterator::__construct

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::__construct — Private constructor to deny instantiation

### Açıklama

final private function Transliterator::__construct()

This method should not be called. Its only purpose is to deny instantiation with the new operator.

Use the factory methods Transliterator::create() or Transliterator::createFromRules() instead.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- Transliterator::create() - Create a transliterator
- Transliterator::createFromRules() - Create transliterator from rules

# Transliterator::create

# transliterator_create

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::create -- transliterator_create — Create a transliterator

### Açıklama

Nesne yönelimli kullanım

public static function Transliterator::create(string `$id`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator

Yordamsal kullanım

function transliterator_create(string `$id`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator

Opens a Transliterator by ID.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`id`

  The ID. A list of all registered transliterator IDs can be retrieved by using Transliterator::listIDs().

`direction`

  The direction, defaults to Transliterator::FORWARD. May also be set to Transliterator::REVERSE.

### Dönen Değerler

Returns a Transliterator object on success, or `null` on failure.

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::__construct() - Private constructor to deny instantiation

# Transliterator::createFromRules

# transliterator_create_from_rules

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::createFromRules -- transliterator_create_from_rules — Create transliterator from rules

### Açıklama

Nesne yönelimli kullanım

public static function Transliterator::createFromRules(string `$rules`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator

Yordamsal kullanım

function transliterator_create_from_rules(string `$rules`, int `$direction` = `Transliterator::FORWARD`): ?Transliterator

Creates a Transliterator from rules.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`rules`

  The rules as defined in Transform Rules Syntax of UTS #35: Unicode LDML.

`direction`

  The direction, defaults to Transliterator::FORWARD. May also be set to Transliterator::REVERSE.

### Dönen Değerler

Returns a Transliterator object on success, or `null` on failure.

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::create() - Create a transliterator

# Transliterator::createInverse

# transliterator_create_inverse

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::createInverse -- transliterator_create_inverse — Create an inverse transliterator

### Açıklama

Nesne yönelimli kullanım

public function Transliterator::createInverse(): ?Transliterator

Yordamsal kullanım

function transliterator_create_inverse(Transliterator `$transliterator`): ?Transliterator

Opens the inverse transliterator.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a Transliterator object on success, or `null` on failure

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::create() - Create a transliterator

# Transliterator::getErrorCode

# transliterator_get_error_code

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::getErrorCode -- transliterator_get_error_code — Get last error code

### Açıklama

Nesne yönelimli kullanım

public function Transliterator::getErrorCode(): int

Yordamsal kullanım

function transliterator_get_error_code(Transliterator `$transliterator`): int

Gets the last error code for this transliterator.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`transliterator`

### Dönen Değerler

The error code on success, or `false` if none exists, or on failure.

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::listIDs() - Get transliterator IDs

# Transliterator::getErrorMessage

# transliterator_get_error_message

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::getErrorMessage -- transliterator_get_error_message — Get last error message

### Açıklama

Nesne yönelimli kullanım

public function Transliterator::getErrorMessage(): string

Yordamsal kullanım

function transliterator_get_error_message(Transliterator `$transliterator`): string

Gets the last error message for this transliterator.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`transliterator`

### Dönen Değerler

The error message on success, or `false` if none exists, or on failure.

### Ayrıca Bakınız

- Transliterator::getErrorCode() - Get last error code
- Transliterator::listIDs() - Get transliterator IDs

# Transliterator::listIDs

# transliterator_list_ids

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::listIDs -- transliterator_list_ids — Get transliterator IDs

### Açıklama

Nesne yönelimli kullanım

public static function Transliterator::listIDs(): array|false

Yordamsal kullanım

function transliterator_list_ids(): array|false

Returns an array with the registered transliterator IDs.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array of registered transliterator IDs on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Retrieving the registered transliterator IDs

    <?php
    print_r(Transliterator::listIDs());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => ASCII-Latin
        [1] => Accents-Any
        [2] => Amharic-Latin/BGN
        [3] => Any-Accents
        [4] => Any-Publishing
    ...
        [650] => Any-ps_Latn/BGN
        [651] => Any-tk/BGN
        [652] => Any-ch_FONIPA
        [653] => Any-cs_FONIPA
        [654] => Any-cy_FONIPA
    )

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::transliterate() - Transliterate a string

# Transliterator::transliterate

# transliterator_transliterate

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

Transliterator::transliterate -- transliterator_transliterate — Transliterate a string

### Açıklama

Nesne yönelimli kullanım

public function Transliterator::transliterate(string `$string`, int `$start` = 0, int `$end` = -1): string|false

Yordamsal kullanım

function transliterator_transliterate(
Transliterator|string `$transliterator`,
string `$string`,
int `$start` = 0,
int `$end` = -1
): string|false

Transforms a string or part thereof using an ICU transliterator.

### Bağımsız Değişkenler

`transliterator`

  In the procedural version, either a Transliterator or a string from which a Transliterator can be built.

`string`

  The string to be transformed.

`start`

  The start index (in UTF-16 code units) from which the string will start to be transformed, inclusive. Indexing starts at 0. The text before will be left as is.

`end`

  The end index (in UTF-16 code units) until which the string will be transformed, exclusive. Indexing starts at 0. The text after will be left as is.

### Dönen Değerler

The transformed string on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Converting escaped UTF-16 code units

    <?php
    $s = "\u304A\u65E9\u3046\u3054\u3056\u3044\u307E\u3059";
    echo transliterator_transliterate("Hex-Any/Java", $s), "\n";

    //now the reverse operation with a supplementary character
    $supplChar = html_entity_decode('&#x1D11E;');
    echo mb_strlen($supplChar, "UTF-8"), "\n";
    $encSupplChar = transliterator_transliterate("Any-Hex/Java", $supplChar);
    //echoes two encoded UTF-16 code units
    echo $encSupplChar, "\n";
    //and back
    echo transliterator_transliterate("Hex-Any/Java", $encSupplChar), "\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    お早うございます
    1
    \uD834\uDD1E
    𝄞

### Ayrıca Bakınız

- Transliterator::getErrorMessage() - Get last error message
- Transliterator::__construct() - Private constructor to deny instantiation

## İçindekiler

- Transliterator::__construct — Private constructor to deny instantiation
- Transliterator::create — Create a transliterator
- Transliterator::createFromRules — Create transliterator from rules
- Transliterator::createInverse — Create an inverse transliterator
- Transliterator::getErrorCode — Get last error code
- Transliterator::getErrorMessage — Get last error message
- Transliterator::listIDs — Get transliterator IDs
- Transliterator::transliterate — Transliterate a string

# The IntlBreakIterator class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

A “break iterator” is an ICU object that exposes methods for locating boundaries in text (e.g. word or sentence boundaries). The PHP IntlBreakIterator serves as the base class for all types of ICU break iterators. Where extra functionality is available, the intl extension may expose the ICU break iterator with suitable subclasses, such as IntlRuleBasedBreakIterator or IntlCodePointBreakIterator.

This class implements IteratorAggregate. Traversing an IntlBreakIterator yields non-negative integer values representing the successive locations of the text boundaries, expressed as UTF-8 code units (byte) counts, taken from the beginning of the text (which has the location `0`). The keys yielded by the iterator simply form the sequence of natural numbers `{0, 1, 2, …}`.

## Sınıf Sözdizimi

class IntlBreakIterator implements IteratorAggregate {
/* Sabitler */
public const int DONE;
public const int WORD_NONE;
public const int WORD_NONE_LIMIT;
public const int WORD_NUMBER;
public const int WORD_NUMBER_LIMIT;
public const int WORD_LETTER;
public const int WORD_LETTER_LIMIT;
public const int WORD_KANA;
public const int WORD_KANA_LIMIT;
public const int WORD_IDEO;
public const int WORD_IDEO_LIMIT;
public const int LINE_SOFT;
public const int LINE_SOFT_LIMIT;
public const int LINE_HARD;
public const int LINE_HARD_LIMIT;
public const int SENTENCE_TERM;
public const int SENTENCE_TERM_LIMIT;
public const int SENTENCE_SEP;
public const int SENTENCE_SEP_LIMIT;
/* Yöntemler */
private function __construct()
public static function createCharacterInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function createCodePointInstance(): IntlCodePointBreakIterator
public static function createLineInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function createSentenceInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function createTitleInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function createWordInstance(?string `$locale` = `null`): ?IntlBreakIterator
public function current(): int
public function first(): int
public function following(int `$offset`): int
public function getErrorCode(): int
public function getErrorMessage(): string
public function getLocale(int `$type`): string|false
public function getPartsIterator(int `$type` = `IntlPartsIterator::KEY_SEQUENTIAL`): IntlPartsIterator
public function getText(): ?string
public function isBoundary(int `$offset`): bool
public function last(): int
public function next(?int `$offset` = `null`): int
public function preceding(int `$offset`): int
public function previous(): int
public function setText(string `$text`): bool
}

## Öntanımlı Sabitler

`IntlBreakIterator::DONE` int

`IntlBreakIterator::WORD_NONE` int

`IntlBreakIterator::WORD_NONE_LIMIT` int

`IntlBreakIterator::WORD_NUMBER` int

`IntlBreakIterator::WORD_NUMBER_LIMIT` int

`IntlBreakIterator::WORD_LETTER` int

`IntlBreakIterator::WORD_LETTER_LIMIT` int

`IntlBreakIterator::WORD_KANA` int

`IntlBreakIterator::WORD_KANA_LIMIT` int

`IntlBreakIterator::WORD_IDEO` int

`IntlBreakIterator::WORD_IDEO_LIMIT` int

`IntlBreakIterator::LINE_SOFT` int

`IntlBreakIterator::LINE_SOFT_LIMIT` int

`IntlBreakIterator::LINE_HARD` int

`IntlBreakIterator::LINE_HARD_LIMIT` int

`IntlBreakIterator::SENTENCE_TERM` int

`IntlBreakIterator::SENTENCE_TERM_LIMIT` int

`IntlBreakIterator::SENTENCE_SEP` int

`IntlBreakIterator::SENTENCE_SEP_LIMIT` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.
8.0.0 | IntlBreakIterator implements IteratorAggregate now. Previously, Traversable was implemented instead.

# IntlBreakIterator::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::__construct — Private constructor for disallowing instantiation

### Açıklama

private function IntlBreakIterator::__construct()

IntlBreakIterator instances should be created by using one of the static factory methods.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Ayrıca Bakınız

- IntlBreakIterator::createCharacterInstance() - Create break iterator for boundaries of combining character sequences
- IntlBreakIterator::createCodePointInstance() - Create break iterator for boundaries of code points
- IntlBreakIterator::createLineInstance() - Create break iterator for logically possible line breaks
- IntlBreakIterator::createSentenceInstance() - Create break iterator for sentence breaks
- IntlBreakIterator::createTitleInstance() - Create break iterator for title-casing breaks
- IntlBreakIterator::createWordInstance() - Create break iterator for word breaks

# IntlBreakIterator::createCharacterInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences

### Açıklama

public static function IntlBreakIterator::createCharacterInstance(?string `$locale` = `null`): ?IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locale`

### Dönen Değerler

# IntlBreakIterator::createCodePointInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points

### Açıklama

public static function IntlBreakIterator::createCodePointInstance(): IntlCodePointBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::createLineInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks

### Açıklama

public static function IntlBreakIterator::createLineInstance(?string `$locale` = `null`): ?IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locale`

### Dönen Değerler

# IntlBreakIterator::createSentenceInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks

### Açıklama

public static function IntlBreakIterator::createSentenceInstance(?string `$locale` = `null`): ?IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locale`

### Dönen Değerler

# IntlBreakIterator::createTitleInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks

### Açıklama

public static function IntlBreakIterator::createTitleInstance(?string `$locale` = `null`): ?IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locale`

### Dönen Değerler

# IntlBreakIterator::createWordInstance

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::createWordInstance — Create break iterator for word breaks

### Açıklama

public static function IntlBreakIterator::createWordInstance(?string `$locale` = `null`): ?IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`locale`

### Dönen Değerler

# IntlBreakIterator::current

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::current — Get index of current position

### Açıklama

public function IntlBreakIterator::current(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::first

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::first — Set position to the first character in the text

### Açıklama

public function IntlBreakIterator::first(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::following

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset

### Açıklama

public function IntlBreakIterator::following(int `$offset`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`offset`

### Dönen Değerler

# IntlBreakIterator::getErrorCode

# intl_get_error_code

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::getErrorCode -- intl_get_error_code — Get last error code on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlBreakIterator::getErrorCode(): int

Yordamsal kullanım:

function intl_get_error_code(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::getErrorMessage

# intl_get_error_message

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::getErrorMessage -- intl_get_error_message — Get last error message on the object

### Açıklama

Nesne yönelimli kullanım (method):

public function IntlBreakIterator::getErrorMessage(): string

Yordamsal kullanım:

function intl_get_error_message(): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::getLocale

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::getLocale — Get the locale associated with the object

### Açıklama

public function IntlBreakIterator::getLocale(int `$type`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`type`

### Dönen Değerler

# IntlBreakIterator::getPartsIterator

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries

### Açıklama

public function IntlBreakIterator::getPartsIterator(int `$type` = `IntlPartsIterator::KEY_SEQUENTIAL`): IntlPartsIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`type`

  Optional key type. Possible values are:

  - `IntlPartsIterator::KEY_SEQUENTIAL` - The default. Sequentially increasing integers used as key.
  - `IntlPartsIterator::KEY_LEFT` - Byte offset left of current part used as key.
  - `IntlPartsIterator::KEY_RIGHT` - Byte offset right of current part used as key.

### Dönen Değerler

# IntlBreakIterator::getText

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::getText — Get the text being scanned

### Açıklama

public function IntlBreakIterator::getText(): ?string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::isBoundary

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::isBoundary — Tell whether an offset is a boundaryʼs offset

### Açıklama

public function IntlBreakIterator::isBoundary(int `$offset`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`offset`

### Dönen Değerler

# IntlBreakIterator::last

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::last — Set the iterator position to index beyond the last character

### Açıklama

public function IntlBreakIterator::last(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::next

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::next — Advance the iterator the next boundary

### Açıklama

public function IntlBreakIterator::next(?int `$offset` = `null`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`offset`

### Dönen Değerler

# IntlBreakIterator::preceding

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset

### Açıklama

public function IntlBreakIterator::preceding(int `$offset`): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`offset`

### Dönen Değerler

# IntlBreakIterator::previous

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current

### Açıklama

public function IntlBreakIterator::previous(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlBreakIterator::setText

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlBreakIterator::setText — Set the text being scanned

### Açıklama

public function IntlBreakIterator::setText(string `$text`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`text`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | This method now returns `false` on failure; previously it returns `null`.

## İçindekiler

- IntlBreakIterator::__construct — Private constructor for disallowing instantiation
- IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences
- IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points
- IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks
- IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks
- IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks
- IntlBreakIterator::createWordInstance — Create break iterator for word breaks
- IntlBreakIterator::current — Get index of current position
- IntlBreakIterator::first — Set position to the first character in the text
- IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset
- IntlBreakIterator::getErrorCode — Get last error code on the object
- IntlBreakIterator::getErrorMessage — Get last error message on the object
- IntlBreakIterator::getLocale — Get the locale associated with the object
- IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries
- IntlBreakIterator::getText — Get the text being scanned
- IntlBreakIterator::isBoundary — Tell whether an offset is a boundaryʼs offset
- IntlBreakIterator::last — Set the iterator position to index beyond the last character
- IntlBreakIterator::next — Advance the iterator the next boundary
- IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset
- IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current
- IntlBreakIterator::setText — Set the text being scanned

# The IntlRuleBasedBreakIterator class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

A subclass of IntlBreakIterator that encapsulates ICU break iterators whose behavior is specified using a set of rules. This is the most common kind of break iterators.

These rules are described in the » ICU Boundary Analysis User Guide.

## Sınıf Sözdizimi

class IntlRuleBasedBreakIterator extends IntlBreakIterator {
/* Miras alınan sabitler */
public const int IntlBreakIterator::DONE;
public const int IntlBreakIterator::WORD_NONE;
public const int IntlBreakIterator::WORD_NONE_LIMIT;
public const int IntlBreakIterator::WORD_NUMBER;
public const int IntlBreakIterator::WORD_NUMBER_LIMIT;
public const int IntlBreakIterator::WORD_LETTER;
public const int IntlBreakIterator::WORD_LETTER_LIMIT;
public const int IntlBreakIterator::WORD_KANA;
public const int IntlBreakIterator::WORD_KANA_LIMIT;
public const int IntlBreakIterator::WORD_IDEO;
public const int IntlBreakIterator::WORD_IDEO_LIMIT;
public const int IntlBreakIterator::LINE_SOFT;
public const int IntlBreakIterator::LINE_SOFT_LIMIT;
public const int IntlBreakIterator::LINE_HARD;
public const int IntlBreakIterator::LINE_HARD_LIMIT;
public const int IntlBreakIterator::SENTENCE_TERM;
public const int IntlBreakIterator::SENTENCE_TERM_LIMIT;
public const int IntlBreakIterator::SENTENCE_SEP;
public const int IntlBreakIterator::SENTENCE_SEP_LIMIT;
/* Yöntemler */
public function __construct(string `$rules`, bool `$compiled` = `false`)
public function getBinaryRules(): string|false
public function getRules(): string|false
public function getRuleStatus(): int
public function getRuleStatusVec(): array|false
/* Miras alınan yöntemler */
public static function IntlBreakIterator::createCharacterInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createCodePointInstance(): IntlCodePointBreakIterator
public static function IntlBreakIterator::createLineInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createSentenceInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createTitleInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createWordInstance(?string `$locale` = `null`): ?IntlBreakIterator
public function IntlBreakIterator::current(): int
public function IntlBreakIterator::first(): int
public function IntlBreakIterator::following(int `$offset`): int
public function IntlBreakIterator::getErrorCode(): int
public function IntlBreakIterator::getErrorMessage(): string
public function IntlBreakIterator::getLocale(int `$type`): string|false
public function IntlBreakIterator::getPartsIterator(int `$type` = `IntlPartsIterator::KEY_SEQUENTIAL`): IntlPartsIterator
public function IntlBreakIterator::getText(): ?string
public function IntlBreakIterator::isBoundary(int `$offset`): bool
public function IntlBreakIterator::last(): int
public function IntlBreakIterator::next(?int `$offset` = `null`): int
public function IntlBreakIterator::preceding(int `$offset`): int
public function IntlBreakIterator::previous(): int
public function IntlBreakIterator::setText(string `$text`): bool
}

# IntlRuleBasedBreakIterator::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset

### Açıklama

public function IntlRuleBasedBreakIterator::__construct(string `$rules`, bool `$compiled` = `false`)

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`rules`

`compiled`

### Dönen Değerler

# IntlRuleBasedBreakIterator::getBinaryRules

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules

### Açıklama

public function IntlRuleBasedBreakIterator::getBinaryRules(): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlRuleBasedBreakIterator::getRules

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object

### Açıklama

public function IntlRuleBasedBreakIterator::getRules(): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlRuleBasedBreakIterator::getRuleStatus

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position

### Açıklama

public function IntlRuleBasedBreakIterator::getRuleStatus(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlRuleBasedBreakIterator::getRuleStatusVec

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position

### Açıklama

public function IntlRuleBasedBreakIterator::getRuleStatusVec(): array|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset
- IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules
- IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object
- IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position
- IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position

# The IntlCodePointBreakIterator class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

This break iterator identifies the boundaries between UTF-8 code points.

## Sınıf Sözdizimi

class IntlCodePointBreakIterator extends IntlBreakIterator {
/* Miras alınan sabitler */
public const int IntlBreakIterator::DONE;
public const int IntlBreakIterator::WORD_NONE;
public const int IntlBreakIterator::WORD_NONE_LIMIT;
public const int IntlBreakIterator::WORD_NUMBER;
public const int IntlBreakIterator::WORD_NUMBER_LIMIT;
public const int IntlBreakIterator::WORD_LETTER;
public const int IntlBreakIterator::WORD_LETTER_LIMIT;
public const int IntlBreakIterator::WORD_KANA;
public const int IntlBreakIterator::WORD_KANA_LIMIT;
public const int IntlBreakIterator::WORD_IDEO;
public const int IntlBreakIterator::WORD_IDEO_LIMIT;
public const int IntlBreakIterator::LINE_SOFT;
public const int IntlBreakIterator::LINE_SOFT_LIMIT;
public const int IntlBreakIterator::LINE_HARD;
public const int IntlBreakIterator::LINE_HARD_LIMIT;
public const int IntlBreakIterator::SENTENCE_TERM;
public const int IntlBreakIterator::SENTENCE_TERM_LIMIT;
public const int IntlBreakIterator::SENTENCE_SEP;
public const int IntlBreakIterator::SENTENCE_SEP_LIMIT;
/* Yöntemler */
public function getLastCodePoint(): int
/* Miras alınan yöntemler */
public static function IntlBreakIterator::createCharacterInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createCodePointInstance(): IntlCodePointBreakIterator
public static function IntlBreakIterator::createLineInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createSentenceInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createTitleInstance(?string `$locale` = `null`): ?IntlBreakIterator
public static function IntlBreakIterator::createWordInstance(?string `$locale` = `null`): ?IntlBreakIterator
public function IntlBreakIterator::current(): int
public function IntlBreakIterator::first(): int
public function IntlBreakIterator::following(int `$offset`): int
public function IntlBreakIterator::getErrorCode(): int
public function IntlBreakIterator::getErrorMessage(): string
public function IntlBreakIterator::getLocale(int `$type`): string|false
public function IntlBreakIterator::getPartsIterator(int `$type` = `IntlPartsIterator::KEY_SEQUENTIAL`): IntlPartsIterator
public function IntlBreakIterator::getText(): ?string
public function IntlBreakIterator::isBoundary(int `$offset`): bool
public function IntlBreakIterator::last(): int
public function IntlBreakIterator::next(?int `$offset` = `null`): int
public function IntlBreakIterator::preceding(int `$offset`): int
public function IntlBreakIterator::previous(): int
public function IntlBreakIterator::setText(string `$text`): bool
}

# IntlCodePointBreakIterator::getLastCodePoint

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator

### Açıklama

public function IntlCodePointBreakIterator::getLastCodePoint(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator

# The IntlDatePatternGenerator class

(PHP 8 >= 8.1.0)

## Giriş

Generates localized date and/or time format pattern strings suitable for use in IntlDateFormatter.

## Sınıf Sözdizimi

class IntlDatePatternGenerator {
/* Yöntemler */
public function __construct(?string `$locale` = `null`)
public static function create(?string `$locale` = `null`): ?IntlDatePatternGenerator
public function getBestPattern(string `$skeleton`): string|false
}

# IntlDatePatternGenerator::create

# IntlDatePatternGenerator::__construct

(PHP 8 >= 8.1.0)

IntlDatePatternGenerator::create -- IntlDatePatternGenerator::__construct — Creates a new IntlDatePatternGenerator instance

### Açıklama

public static function IntlDatePatternGenerator::create(?string `$locale` = `null`): ?IntlDatePatternGenerator
public function IntlDatePatternGenerator::__construct(?string `$locale` = `null`)

Creates a new IntlDatePatternGenerator instance.

### Bağımsız Değişkenler

`locale`

  The locale. If `null` is passed, uses the ini setting intl.default_locale.

### Dönen Değerler

Returns an IntlDatePatternGenerator instance on success, or `null` on failure.

# IntlDatePatternGenerator::getBestPattern

(PHP 8 >= 8.1.0)

IntlDatePatternGenerator::getBestPattern — Determines the most suitable date/time format

### Açıklama

public function IntlDatePatternGenerator::getBestPattern(string `$skeleton`): string|false

Determines which date/time format is most suitable for a particular locale.

### Bağımsız Değişkenler

`skeleton`

  The skeleton.

### Dönen Değerler

Returns an ICU date/time pattern accepted by IntlDateFormatter on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 IntlDatePatternGenerator::getBestPattern() example

    <?php

    $skeleton = 'YYYYMMdd';
    $today = \DateTimeImmutable::createFromFormat('Y-m-d', '2021-04-24');

    $patternGenerator = new \IntlDatePatternGenerator('de_DE');
    $pattern = $patternGenerator->getBestPattern($skeleton);
    echo 'de: ', \IntlDateFormatter::formatObject($today, $pattern, 'de_DE'), "\n";

    $patternGenerator = new \IntlDatePatternGenerator('en_US');
    $pattern = $patternGenerator->getBestPattern($skeleton);
    echo 'en: ', \IntlDateFormatter::formatObject($today, $pattern, 'en_US');
    ?>

Yukarıdaki örneğin çıktısı:

    de: 24.04.2021
    en: 04/24/2021

## İçindekiler

- IntlDatePatternGenerator::create — Creates a new IntlDatePatternGenerator instance
- IntlDatePatternGenerator::getBestPattern — Determines the most suitable date/time format

# The IntlPartsIterator class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

Objects of this class can be obtained from IntlBreakIterator objects. While the break iterators provide a sequence of boundary positions when iterated, IntlPartsIterator objects provide, as a convenience, the text fragments comprehended between two successive boundaries.

The keys may represent the offset of the left boundary, right boundary, or they may just the sequence of non-negative integers. See IntlBreakIterator::getPartsIterator().

## Sınıf Sözdizimi

class IntlPartsIterator extends IntlIterator {
/* Sabitler */
public const int KEY_SEQUENTIAL;
public const int KEY_LEFT;
public const int KEY_RIGHT;
/* Yöntemler */
public function getBreakIterator(): IntlBreakIterator
/* Miras alınan yöntemler */
public function IntlIterator::current(): mixed
public function IntlIterator::key(): mixed
public function IntlIterator::next(): void
public function IntlIterator::rewind(): void
public function IntlIterator::valid(): bool
}

## Öntanımlı Sabitler

`IntlPartsIterator::KEY_SEQUENTIAL` int

`IntlPartsIterator::KEY_LEFT` int

`IntlPartsIterator::KEY_RIGHT` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.

# IntlPartsIterator::getBreakIterator

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator

### Açıklama

public function IntlPartsIterator::getBreakIterator(): IntlBreakIterator

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator

# The UConverter class

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

## Giriş

## Sınıf Sözdizimi

class UConverter {
/* Sabitler */
public const int REASON_UNASSIGNED;
public const int REASON_ILLEGAL;
public const int REASON_IRREGULAR;
public const int REASON_RESET;
public const int REASON_CLOSE;
public const int REASON_CLONE;
public const int UNSUPPORTED_CONVERTER;
public const int SBCS;
public const int DBCS;
public const int MBCS;
public const int LATIN_1;
public const int UTF8;
public const int UTF16_BigEndian;
public const int UTF16_LittleEndian;
public const int UTF32_BigEndian;
public const int UTF32_LittleEndian;
public const int EBCDIC_STATEFUL;
public const int ISO_2022;
public const int LMBCS_1;
public const int LMBCS_2;
public const int LMBCS_3;
public const int LMBCS_4;
public const int LMBCS_5;
public const int LMBCS_6;
public const int LMBCS_8;
public const int LMBCS_11;
public const int LMBCS_16;
public const int LMBCS_17;
public const int LMBCS_18;
public const int LMBCS_19;
public const int LMBCS_LAST;
public const int HZ;
public const int SCSU;
public const int ISCII;
public const int US_ASCII;
public const int UTF7;
public const int BOCU1;
public const int UTF16;
public const int UTF32;
public const int CESU8;
public const int IMAP_MAILBOX;
/* Yöntemler */
public function __construct(?string `$destination_encoding` = `null`, ?string `$source_encoding` = `null`)
public function convert(string `$str`, bool `$reverse` = `false`): string|false
public function fromUCallback(
int `$reason`,
array `$source`,
int `$codePoint`,
int `&$error`
): string|int|array|null
public static function getAliases(string `$name`): array|false|null
public static function getAvailable(): array
public function getDestinationEncoding(): string|false|null
public function getDestinationType(): int|false|null
public function getErrorCode(): int
public function getErrorMessage(): ?string
public function getSourceEncoding(): string|false|null
public function getSourceType(): int|false|null
public static function getStandards(): ?array
public function getSubstChars(): string|false|null
public static function reasonText(int `$reason`): string
public function setDestinationEncoding(string `$encoding`): bool
public function setSourceEncoding(string `$encoding`): bool
public function setSubstChars(string `$chars`): bool
public function toUCallback(
int `$reason`,
string `$source`,
string `$codeUnits`,
int `&$error`
): string|int|array|null
public static function transcode(
string `$str`,
string `$toEncoding`,
string `$fromEncoding`,
?array `$options` = `null`
): string|false
}

## Öntanımlı Sabitler

`UConverter::REASON_UNASSIGNED` int

`UConverter::REASON_ILLEGAL` int

`UConverter::REASON_IRREGULAR` int

`UConverter::REASON_RESET` int

`UConverter::REASON_CLOSE` int

`UConverter::REASON_CLONE` int

`UConverter::UNSUPPORTED_CONVERTER` int

`UConverter::SBCS` int

`UConverter::DBCS` int

`UConverter::MBCS` int

`UConverter::LATIN_1` int

`UConverter::UTF8` int

`UConverter::UTF16_BigEndian` int

`UConverter::UTF16_LittleEndian` int

`UConverter::UTF32_BigEndian` int

`UConverter::UTF32_LittleEndian` int

`UConverter::EBCDIC_STATEFUL` int

`UConverter::ISO_2022` int

`UConverter::LMBCS_1` int

`UConverter::LMBCS_2` int

`UConverter::LMBCS_3` int

`UConverter::LMBCS_4` int

`UConverter::LMBCS_5` int

`UConverter::LMBCS_6` int

`UConverter::LMBCS_8` int

`UConverter::LMBCS_11` int

`UConverter::LMBCS_16` int

`UConverter::LMBCS_17` int

`UConverter::LMBCS_18` int

`UConverter::LMBCS_19` int

`UConverter::LMBCS_LAST` int

`UConverter::HZ` int

`UConverter::SCSU` int

`UConverter::ISCII` int

`UConverter::US_ASCII` int

`UConverter::UTF7` int

`UConverter::BOCU1` int

`UConverter::UTF16` int

`UConverter::UTF32` int

`UConverter::CESU8` int

`UConverter::IMAP_MAILBOX` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | The class constants are now typed.

# UConverter::__construct

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::__construct — Create UConverter object

### Açıklama

public function UConverter::__construct(?string `$destination_encoding` = `null`, ?string `$source_encoding` = `null`)

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`destination_encoding`

`source_encoding`

### Dönen Değerler

# UConverter::convert

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::convert — Convert string from one charset to another

### Açıklama

public function UConverter::convert(string `$str`, bool `$reverse` = `false`): string|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`str`

`reverse`

### Dönen Değerler

# UConverter::fromUCallback

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::fromUCallback — Default "from" callback function

### Açıklama

public function UConverter::fromUCallback(
int `$reason`,
array `$source`,
int `$codePoint`,
int `&$error`
): string|int|array|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`reason`

`source`

`codePoint`

`error`

### Dönen Değerler

# UConverter::getAliases

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getAliases — Get the aliases of the given name

### Açıklama

public static function UConverter::getAliases(string `$name`): array|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`name`

### Dönen Değerler

# UConverter::getAvailable

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getAvailable — Get the available canonical converter names

### Açıklama

public static function UConverter::getAvailable(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getDestinationEncoding

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getDestinationEncoding — Get the destination encoding

### Açıklama

public function UConverter::getDestinationEncoding(): string|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getDestinationType

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getDestinationType — Get the destination converter type

### Açıklama

public function UConverter::getDestinationType(): int|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getErrorCode

# intl_get_error_code

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getErrorCode -- intl_get_error_code — Get last error code on the object

### Açıklama

public function UConverter::getErrorCode(): int

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getErrorMessage

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getErrorMessage — Get last error message on the object

### Açıklama

public function UConverter::getErrorMessage(): ?string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getSourceEncoding

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getSourceEncoding — Get the source encoding

### Açıklama

public function UConverter::getSourceEncoding(): string|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getSourceType

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getSourceType — Get the source converter type

### Açıklama

public function UConverter::getSourceType(): int|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getStandards

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getStandards — Get standards associated to converter names

### Açıklama

public static function UConverter::getStandards(): ?array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::getSubstChars

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::getSubstChars — Get substitution chars

### Açıklama

public function UConverter::getSubstChars(): string|false|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# UConverter::reasonText

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::reasonText — Get string representation of the callback reason

### Açıklama

public static function UConverter::reasonText(int `$reason`): string

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`reason`

### Dönen Değerler

# UConverter::setDestinationEncoding

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::setDestinationEncoding — Set the destination encoding

### Açıklama

public function UConverter::setDestinationEncoding(string `$encoding`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`encoding`

### Dönen Değerler

# UConverter::setSourceEncoding

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::setSourceEncoding — Set the source encoding

### Açıklama

public function UConverter::setSourceEncoding(string `$encoding`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`encoding`

### Dönen Değerler

# UConverter::setSubstChars

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::setSubstChars — Set the substitution chars

### Açıklama

public function UConverter::setSubstChars(string `$chars`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`chars`

### Dönen Değerler

# UConverter::toUCallback

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::toUCallback — Default "to" callback function

### Açıklama

public function UConverter::toUCallback(
int `$reason`,
string `$source`,
string `$codeUnits`,
int `&$error`
): string|int|array|null

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`reason`

`source`

`codeUnits`

`error`

### Dönen Değerler

# UConverter::transcode

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::transcode — Convert a string from one character encoding to another

### Açıklama

public static function UConverter::transcode(
string `$str`,
string `$toEncoding`,
string `$fromEncoding`,
?array `$options` = `null`
): string|false

Converts `str` from `fromEncoding` to `toEncoding`.

### Bağımsız Değişkenler

`str`

  The string to be converted.

`toEncoding`

  The desired encoding of the result.

`fromEncoding`

  The current encoding used to interpret `str`.

`options`

  An optional array, which may contain the following keys:

  - `'to_subst'` - the substitution character to use in place of any character of `str` which cannot be encoded in `toEncoding`. If specified, it must represent a single character in the target encoding.

### Dönen Değerler

Returns the converted string başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Converting from UTF-8 to UTF-16 and back

    <?php
    $utf8_string = "\x5A\x6F\xC3\xAB"; // 'Zoë' in UTF-8
    $utf16_string = UConverter::transcode($utf8_string, 'UTF-16BE', 'UTF-8');
    echo bin2hex($utf16_string), "\n";

    $new_utf8_string = UConverter::transcode($utf16_string, 'UTF-8', 'UTF-16BE');
    echo bin2hex($new_utf8_string), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    005a006f00eb
    5a6fc3ab

Örnek 2 Invalid characters in input

If the input string contains a sequence of bytes which is not valid in the encoding specified by `fromEncoding`, they are replaced by Unicode code point U+FFFD (Replacement Character) before converting to `toEncoding`.

    <?php
    $invalid_utf8_string = "\xC3"; // incomplete multi-byte UTF-8 sequence
    $utf16_string = UConverter::transcode($invalid_utf8_string, 'UTF-16BE', 'UTF-8');
    echo bin2hex($utf16_string), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    fffd

Örnek 3 Characters which cannot be encoded

If the input string contains characters which cannot be represented in `toEncoding`, they are replaced with a single character. The default character to use depends on the encoding, and can be controlled using the `'to_subst'` option.

    <?php
    $utf8_string = "\xE2\x82\xAC"; // € (Euro Sign) does not exist in ISO 8859-1

    // Default replacement in ISO 8859-1 is "\x1A" (Substitute)
    $iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF-8');
    echo bin2hex($iso8859_1_string), "\n";

    // Specify a replacement of '?' ("\x3F") instead
    $iso8859_1_string = UConverter::transcode(
        $utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
    );
    echo bin2hex($iso8859_1_string), "\n";

    // Since ISO 8859-1 cannot map U+FFFD, invalid input is also replaced by to_subst
    $invalid_utf8_string = "\xC3"; // incomplete multi-byte UTF-8 sequence
    $iso8859_1_string = UConverter::transcode(
        $invalid_utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
    );
    echo bin2hex($iso8859_1_string), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1a
    3f
    3f

### Ayrıca Bakınız

- mb_convert_encoding() - Karakter kodlaması dönüşümü yapar
- iconv() - Dizgenin karakter kodlamasını dönüştürür

## İçindekiler

- UConverter::__construct — Create UConverter object
- UConverter::convert — Convert string from one charset to another
- UConverter::fromUCallback — Default "from" callback function
- UConverter::getAliases — Get the aliases of the given name
- UConverter::getAvailable — Get the available canonical converter names
- UConverter::getDestinationEncoding — Get the destination encoding
- UConverter::getDestinationType — Get the destination converter type
- UConverter::getErrorCode — Get last error code on the object
- UConverter::getErrorMessage — Get last error message on the object
- UConverter::getSourceEncoding — Get the source encoding
- UConverter::getSourceType — Get the source converter type
- UConverter::getStandards — Get standards associated to converter names
- UConverter::getSubstChars — Get substitution chars
- UConverter::reasonText — Get string representation of the callback reason
- UConverter::setDestinationEncoding — Set the destination encoding
- UConverter::setSourceEncoding — Set the source encoding
- UConverter::setSubstChars — Set the substitution chars
- UConverter::toUCallback — Default "to" callback function
- UConverter::transcode — Convert a string from one character encoding to another

# Grapheme (Sesletim Kümeleri) İşlevleri

# grapheme_extract

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_extract — UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür

### Açıklama

Yordamsal kullanım

function grapheme_extract(
string `$samanlık`,
int `$boyut`,
int `$tür` = `GRAPHEME_EXTR_COUNT`,
int `$başlangıç` = 0,
int `&$sonraki` = `null`
): string

UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge.

`boyut`

  Döndürülecek azami `tür` sayısı.

`tür`

  `boyut` bağımsız değişkenini oluşturacak tür:

  - GRAPHEME_EXTR_COUNT (öntanımlı) - `boyut`, döndürülecek öntanımlı sesletim kümesi sayısıdır.
  - GRAPHEME_EXTR_MAXBYTES - `boyut`, döndürülecek azami bayt sayısıdır.
  - GRAPHEME_EXTR_MAXCHARS - `boyut`, döndürülecek UTF-8 karakterlerin azami sayısıdır.
`başlangıç`

  Bayt cinsinden aramanın başlatılacağı konum. Belirtildiği takdirde, sıfır veya `samanlık` uzunluğuna eşit veya daha küçük bir tamsayı olmalıdır. Negatif değerler `samanlık`'ın sonundan itibarten sayılır. `başlangıç` bir UTF-8 karakterin ilk baytı değilse, sonraki karakterin ilk baytına taşınır.

`sonraki`

  Sonraki aramanın başlangıç konumu. Çağrı sonunda dönen dizgenin son karakterinden sonraki ilk baytın konumu olacaktır.

### Dönen Değerler

Belirtilen `başlangıç` konumunda başlayıp, `boyut` ve `tür` bağımsız değişkenlerine göre uzunluğu belirlenen bir öntanımlı sesletim kümesini içeren bir dizge ile döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Örnekler

Örnek 1 - grapheme_extract() örneği

    <?php
    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print urlencode(grapheme_extract( $char_a_ring_nfd . $char_o_diaeresis_nfd, 1,
                                      GRAPHEME_EXTR_COUNT, 2));

    ?>

Yukarıdaki örneğin çıktısı:

    o%CC%88

### Ayrıca Bakınız

- grapheme_substr() - Bir alt dizge döndürür
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_str_split

(PHP 8 >= 8.4.0)

grapheme_str_split — Split a string into an array

### Açıklama

function grapheme_str_split(string `$string`, int `$length` = 1): array|false

This function will return an array of strings, it is a version of str_split() with support for grapheme cluster byte characters. If the `length` parameter is specified, the string is broken down into chunks of the specified length in grapheme clusters (not bytes).

### Bağımsız Değişkenler

`string`

  The string to split into grapheme clusters or chunks. `string` must be valid UTF-8.

`length`

  Each element of the returned array will be composed of `length` grapheme clusters.

### Dönen Değerler

grapheme_str_split() returns an array of strings, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

If `length` is less than `1`, a ValueError will be thrown.

### Ayrıca Bakınız

- str_split() - Bir dizgeyi bir diziye dönüştürür
- mb_str_split() - Belirtilen çok baytlı dizgenin karakterlerini içeren bir dizi döndürür
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_stripos

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_stripos — Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur

### Açıklama

Yordamsal kullanım

function grapheme_stripos(string `$samanlık`, string `$iğne`, int `$başlangıç` = 0): int|false

Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı yeri belirten isteğe bağlı bağımsız değişken. Konum, bayt veya karakter değil, sesletim birimi cinsinden belirtilmelidir. Belirtilmezse sıfır öntanımlıdır. Döndürülen konum, belirtilen `başlangıç` konumuna göre değil, `samanlık` dizgesinin başlangıcına göredir. Negatif `başlangıç` `samanlık` dizgesinin sonundan itibaren sayılır.

### Dönen Değerler

Konumu bir tamsayı olarak döndürür. `iğne` bulunamazsa işlev `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Örnekler

Örnek 1 - grapheme_stripos() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"
    $char_O_diaeresis_nfd = "O\xCC\x88"; // 'Ö' (U+00D6) normalleştirme biçimi "D"

    print grapheme_stripos( $char_a_ring_nfd . $char_a_ring_nfd .
                            $char_o_diaeresis_nfd, $char_O_diaeresis_nfd);

    ?>

Yukarıdaki örneğin çıktısı:

    2

### Ayrıca Bakınız

- grapheme_stristr() - Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_strpos() - Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strripos() - Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strrpos() - Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr() - Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_stristr

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_stristr — Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner

### Açıklama

Yordamsal kullanım

function grapheme_stristr(string `$samanlık`, string `$iğne`, bool `$ilk_parça` = `false`): string|false

Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`ilk_parça`

  `true` ise `iğne`'nin bulunduğu ilk konuma göre `samanlık` dizgesinin ilk parçası döner (`iğne` dahil).

### Dönen Değerler

`iğne` bulunamazsa `false`, aksi takdirde `samanlık` parçası ile döner.

### Örnekler

Örnek 1 - grapheme_stristr() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"
    $char_O_diaeresis_nfd = "O\xCC\x88"; // 'Ö' (U+00D6) normalleştirme biçimi "D"

    print urlencode(grapheme_stristr( $char_a_ring_nfd . $char_o_diaeresis_nfd .
                    $char_a_ring_nfd, $char_O_diaeresis_nfd));

    ?>

Yukarıdaki örneğin çıktısı:

    o%CC%88a%CC%8A

### Ayrıca Bakınız

- grapheme_stripos() - Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strpos() - Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strripos() - Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strrpos() - Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr() - Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_strlen

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strlen — Dizgenin sesletim birimi cinsinden uzunluğunu döndürür

### Açıklama

Yordamsal kullanım

function grapheme_strlen(string `$dizge`): int|false|null

Dizgenin sesletim birimi (bayt veya karakter değil) cinsinden uzunluğunu döndürür.

### Bağımsız Değişkenler

`dizge`

  Uzunluğu sesletim birimi cinsinden ölçülecek dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

### Dönen Değerler

Dizge boşsa 0, değilse dizgenin uzunluğu, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - grapheme_strlen() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print grapheme_strlen( 'abc' . $char_a_ring_nfd . $char_o_diaeresis_nfd .
                           $char_a_ring_nfd);

    ?>

Yukarıdaki örneğin çıktısı:

    6

### Ayrıca Bakınız

- » Unicode Text Segmentation: Grapheme Cluster Boundaries
- iconv_strlen() - Dizgenin karakter sayısı ile döner
- mb_strlen() - Dizge uzunluğu ile döner
- strlen() - Dizge uzunluğunu döndürür

# grapheme_strpos

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strpos — Bir dizgede ilk sesletim biriminin yerini bulur

### Açıklama

Yordamsal kullanım

function grapheme_strpos(string `$samanlık`, string `$iğne`, int `$başlangıç` = 0): int|false

Bir dizgede ilk sesletim biriminin yerini bulur.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı yeri belirten isteğe bağlı bağımsız değişken. Konum, bayt veya karakter değil, sesletim birimi cinsinden belirtilmelidir. Belirtilmezse sıfır öntanımlıdır. Döndürülen konum, belirtilen `başlangıç` konumuna göre değil, `samanlık` dizgesinin başlangıcına göredir. Negatif `başlangıç` `samanlık` dizgesinin sonundan itibaren sayılır.

### Dönen Değerler

Konumu bir tamsayı olarak döndürür. `iğne` bulunamazsa işlev `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Örnekler

Örnek 1 - grapheme_strpos() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd .
                           $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);

    ?>

Yukarıdaki örneğin çıktısı:

    2

### Ayrıca Bakınız

- grapheme_stripos() - Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_stristr() - Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_strripos() - Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strrpos() - Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr() - Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_strripos

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strripos — Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur

### Açıklama

Yordamsal kullanım

function grapheme_strripos(string `$samanlık`, string `$iğne`, int `$konum` = 0): int|false

Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı yeri belirten isteğe bağlı bağımsız değişken. Konum, bayt veya karakter değil, sesletim birimi cinsinden belirtilmelidir. Döndürülen konum, belirtilen `başlangıç` konumuna göre değil, `samanlık` dizgesinin başlangıcına göredir.

### Dönen Değerler

Konumu bir tamsayı olarak döndürür. `iğne` bulunamazsa işlev `false` döndürür.

### Örnekler

Örnek 1 - grapheme_strripos() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"
    $char_O_diaeresis_nfd = "O\xCC\x88"; // 'Ö' (U+00D6) normalleştirme biçimi "D"

    print grapheme_strripos( $char_a_ring_nfd . $char_o_diaeresis_nfd .
                             $char_o_diaeresis_nfd, $char_O_diaeresis_nfd);

    ?>

Yukarıdaki örneğin çıktısı:

    2

### Ayrıca Bakınız

- grapheme_stripos() - Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_stristr() - Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_strpos() - Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strrpos() - Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr() - Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_strrpos

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strrpos — Bir dizgedeki sonuncu sesletim biriminin yerini bulur

### Açıklama

Yordamsal kullanım

function grapheme_strrpos(string `$samanlık`, string `$iğne`, int `$başlangıç` = 0): int|false

Bir dizgedeki sonuncu sesletim biriminin yerini bulur.

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı yeri belirten isteğe bağlı bağımsız değişken. Konum, bayt veya karakter değil, sesletim birimi cinsinden belirtilmelidir. Döndürülen konum, belirtilen `başlangıç` konumuna göre değil, `samanlık` dizgesinin başlangıcına göredir.

### Dönen Değerler

Konumu bir tamsayı olarak döndürür. `iğne` bulunamazsa işlev `false` döndürür.

### Örnekler

Örnek 1 - grapheme_strrpos() örneği

    <?php
    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print grapheme_strrpos( $char_a_ring_nfd . $char_o_diaeresis_nfd .
                            $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);
    ?>

Yukarıdaki örneğin çıktısı:

    2

### Ayrıca Bakınız

- grapheme_stripos() - Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_stristr() - Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_strpos() - Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strripos() - Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr() - Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_strstr

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strstr — Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner

### Açıklama

Yordamsal kullanım

function grapheme_strstr(string `$samanlık`, string `$iğne`, bool `$ilk_parça` = `false`): string|false

Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner (iğne dahil).

### Bağımsız Değişkenler

`samanlık`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`iğne`

  Aranacak dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`ilk_parça`

  `true` ise `iğne`'nin bulunduğu ilk konuma göre `samanlık` dizgesinin ilk parçası döner (`iğne` dahil).

### Dönen Değerler

`iğne` bulunamazsa `false`, aksi takdirde `samanlık` parçası ile döner.

### Örnekler

Örnek 1 - grapheme_strstr() örneği

    <?php
    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print urlencode(grapheme_stristr( $char_a_ring_nfd . $char_o_diaeresis_nfd .
                                      $char_a_ring_nfd, $char_o_diaeresis_nfd));
    ?>

Yukarıdaki örneğin çıktısı:

    o%CC%88a%CC%8A

### Ayrıca Bakınız

- grapheme_stristr() - Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_stripos() - Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strpos() - Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strripos() - Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strrpos() - Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

# grapheme_substr

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_substr — Bir alt dizge döndürür

### Açıklama

Yordamsal kullanım

function grapheme_substr(string `$dizge`, int `$başlangıç`, ?int `$uzunluk` = `null`): string|false

Bir alt dizge döndürür.

### Bağımsız Değişkenler

`dizge`

  Aramanın yapılacağı dizge. Geçerli bir UTF-8 dizgesi olmalıdır.

`başlangıç`

  Sesletim birimi cinsinden döndürülecek dizgenin başlangıç konumu. `başlangıç` negatifse, dönen dizgenin başlangıç konumu `dizge`'nin sonundan itibaren sayılır, değilse `dizge`'nin başlangıcından itibaren sıfırdan başlayarak sayılır.

`uzunluk`

  Sesletim birimi cinsinden döndürülecek dizgenin uzunluğu. Eğer `uzunluk` pozitifse, dizgenin başından itibaren `başlangıç`'ıncı konumdan başlayan (dizgenin uzunluğuna bağlı olarak) en fazla `uzunluk` sayıda sesletim birimi döner. Eğer dizge, `başlangıç` sayıda sesletim birimi içermiyorsa veya ancak bu kadar sesletim birimi içeriyorsa işlev `false` döndürür. Eğer `uzunluk` negatifse, döndürülecek dizgenin son sesletim birimi, dizgenin sonundan itibaren `uzunluk`'uncu sesletim birimi olur. Eğer `başlangıç` da negatifse, dizgenin sonundan itibaren önce `başlangıç` birim sayılıp döndürülecek dizgenin son sesletim birimine ulaşılır sonra da bu konumdan itibaren sayılan `uzunluk`'uncu birim döndürülecek dizgenin ilk sesletim birimi olur.

### Dönen Değerler

Bir dizge parçası, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | İşlev artık sınır dışı başlangıçları daima dizge sınırına kenetliyor. Evvelce, bazı durumlarda `false` yerine boş dizge dönerdi.

### Örnekler

Örnek 1 - grapheme_substr() örneği

    <?php

    $char_a_ring_nfd = "a\xCC\x8A";      // 'å' (U+00E5) normalleştirme biçimi "D"
    $char_o_diaeresis_nfd = "o\xCC\x88"; // 'ö' (U+00F6) normalleştirme biçimi "D"

    print urlencode(grapheme_substr( "ao" . $char_a_ring_nfd . "bc" .
                                     $char_o_diaeresis_nfd . "O", 2, -1 ));
    ?>

Yukarıdaki örneğin çıktısı:

    a%CC%8Abco%CC%88

### Ayrıca Bakınız

- grapheme_extract() - UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür
- » Unicode Text Segmentation: Grapheme Cluster Boundaries

## İçindekiler

- grapheme_extract — UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür
- grapheme_str_split — Split a string into an array
- grapheme_stripos — Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_stristr — Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_strlen — Dizgenin sesletim birimi cinsinden uzunluğunu döndürür
- grapheme_strpos — Bir dizgede ilk sesletim biriminin yerini bulur
- grapheme_strripos — Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strrpos — Bir dizgedeki sonuncu sesletim biriminin yerini bulur
- grapheme_strstr — Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
- grapheme_substr — Bir alt dizge döndürür

# IDN İşlevleri

# idn_to_ascii

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.2, PECL idn >= 0.1)

idn_to_ascii — Alan adını IDNA ASCII biçimine dönüştürür

### Açıklama

Yordamsal kullanım

function idn_to_ascii(
string `$alan`,
int `$seçenekler` = `IDNA_DEFAULT`,
int `$varyant` = `INTL_IDNA_VARIANT_UTS46`,
array `&$idna_info` = `null`
): string|false

Unicode alan adını IDNA ASCII kodlu alan adına dönüştürür.

### Bağımsız Değişkenler

`alan`

  Dönüştürülecek alan adı. UTF-8 kodlu olmalıdır.

`seçenekler`

  IDNA_* sabitlerinden oluşan dönüşüm seçenekleri. (IDNA_ERROR_* sabitleri hariç)

`varyant`

  Ya IDNA 2003 için `INTL_IDNA_VARIANT_2003` (kullanımı PHP 7.2.0 itibariyle önerilmiyor) ya da UTS #46 için `INTL_IDNA_VARIANT_UTS46` (sadece ICU 4.6 ve üstü ile kullanılabilir).

`idna_info`

  Bu bağımsız değişken sadece `varyant` için `INTL_IDNA_VARIANT_UTS46` kullanılmışsa kullanılabilir. Bu durumda, muhtemelen meşru olmayan bir dönüşümün sonucu olarak `'result'`, sonucu değiştirmiş ya da değiştirecek olan UTS #46'nın geçiş mekanizmalarının kullanımının değişip değişmediğini gösteren bir mantıksal değer olarak `'isTransitionalDifferent'` ve IDNA_ERROR_* hata sabitlerinin bir bit kümesini temsil eden birer tamsayı olarak `'errors'` anahtarlı bir dizi ile doldurulur.

### Dönen Değerler

ASCII uyumlu kodlanmış alan adı, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `varyant` bağımsız değişkeninin öntanımlısı artık `INTL_IDNA_VARIANT_UTS46` oldu; evvelce `INTL_IDNA_VARIANT_2003` idi ve kulllanımı önerilmiyordu.
7.2.0 | `INTL_IDNA_VARIANT_2003` sabitinin kulllanımı artık önerilmiyor; yerine `INTL_IDNA_VARIANT_UTS46` kullanılmalıdır.

### Örnekler

Örnek 1 - idn_to_ascii() örneği

    <?php

    echo idn_to_ascii('täst.de');

    ?>

Yukarıdaki örneğin çıktısı:

    xn--tst-qla.de

### Ayrıca Bakınız

- idn_to_utf8() - Alan adı kodlamasını IDNA ASCII'den UTF-8'e dönüştürür

# idn_to_utf8

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.2, PECL idn >= 0.1)

idn_to_utf8 — Alan adı kodlamasını IDNA ASCII'den UTF-8'e dönüştürür

### Açıklama

Yordamsal kullanım

function idn_to_utf8(
string `$alan`,
int `$seçenekler` = `IDNA_DEFAULT`,
int `$varyant` = `INTL_IDNA_VARIANT_UTS46`,
array `&$idna_info` = `null`
): string|false

Belirtilen IDNA ASCII kodlamalı Unicode alan adını normal UTF-8 kodlamalı alan adına dönüştürür.

### Bağımsız Değişkenler

`alan`

  Kodlaması UTF-8'e dönüştürülecek IDNA ASCII kodlu alan adı.

`seçenekler`

  IDNA_* sabitlerinden oluşan dönüşüm seçenekleri. (IDNA_ERROR_* sabitleri hariç)

`varyant`

  Ya IDNA 2003 için `INTL_IDNA_VARIANT_2003` (kullanımı PHP 7.2.0 itibariyle önerilmiyor) ya da UTS #46 için `INTL_IDNA_VARIANT_UTS46` (sadece ICU 4.6 ve üstü ile kullanılabilir).

`idna_info`

  Bu bağımsız değişken sadece `varyant` için `INTL_IDNA_VARIANT_UTS46` kullanılmışsa kullanılabilir. Bu durumda, muhtemelen meşru olmayan bir dönüşümün sonucu olarak `'result'`, sonucu değiştirmiş ya da değiştirecek olan UTS #46'nın geçiş mekanizmalarının kullanımının değişip değişmediğini gösteren bir mantıksal değer olarak `'isTransitionalDifferent'` ve IDNA_ERROR_* hata sabitlerinin bir bit kümesini temsil eden birer tamsayı olarak `'errors'` anahtarlı bir dizi ile doldurulur.

### Dönen Değerler

UTF-8 kodlu alan adı, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | `varyant` bağımsız değişkeninin öntanımlısı artık `INTL_IDNA_VARIANT_UTS46` oldu; evvelce `INTL_IDNA_VARIANT_2003` idi ve kulllanımı önerilmiyordu.
7.2.0 | `INTL_IDNA_VARIANT_2003` sabitinin kulllanımı artık önerilmiyor; yerine `INTL_IDNA_VARIANT_UTS46` kullanılmalıdır.

### Örnekler

Örnek 1 - idn_to_utf8() örneği

    <?php

    echo idn_to_utf8('xn--tst-qla.de');

    ?>

Yukarıdaki örneğin çıktısı:

    täst.de

### Ayrıca Bakınız

- idn_to_ascii() - Alan adını IDNA ASCII biçimine dönüştürür

## İçindekiler

- idn_to_ascii — Alan adını IDNA ASCII biçimine dönüştürür
- idn_to_utf8 — Alan adı kodlamasını IDNA ASCII'den UTF-8'e dönüştürür

# IntlChar

(PHP 7, PHP 8)

## Giriş

IntlChar provides access to a number of utility methods that can be used to access information about Unicode characters.

The methods and constants adhere closely to the names and behavior used by the underlying ICU library.

## Sınıf Sözdizimi

class IntlChar {
/* Sabitler */
public const string UNICODE_VERSION;
public const int CODEPOINT_MIN;
public const int CODEPOINT_MAX;
public const float NO_NUMERIC_VALUE;
public const int PROPERTY_ALPHABETIC;
public const int PROPERTY_BINARY_START;
public const int PROPERTY_ASCII_HEX_DIGIT;
public const int PROPERTY_BIDI_CONTROL;
public const int PROPERTY_BIDI_MIRRORED;
public const int PROPERTY_DASH;
public const int PROPERTY_DEFAULT_IGNORABLE_CODE_POINT;
public const int PROPERTY_DEPRECATED;
public const int PROPERTY_DIACRITIC;
public const int PROPERTY_EXTENDER;
public const int PROPERTY_FULL_COMPOSITION_EXCLUSION;
public const int PROPERTY_GRAPHEME_BASE;
public const int PROPERTY_GRAPHEME_EXTEND;
public const int PROPERTY_GRAPHEME_LINK;
public const int PROPERTY_HEX_DIGIT;
public const int PROPERTY_HYPHEN;
public const int PROPERTY_ID_CONTINUE;
public const int PROPERTY_ID_START;
public const int PROPERTY_IDEOGRAPHIC;
public const int PROPERTY_IDS_BINARY_OPERATOR;
public const int PROPERTY_IDS_TRINARY_OPERATOR;
public const int PROPERTY_IDS_UNARY_OPERATOR;
public const int PROPERTY_ID_COMPAT_MATH_START;
public const int PROPERTY_ID_COMPAT_MATH_CONTINUE;
public const int PROPERTY_JOIN_CONTROL;
public const int PROPERTY_LOGICAL_ORDER_EXCEPTION;
public const int PROPERTY_LOWERCASE;
public const int PROPERTY_MATH;
public const int PROPERTY_NONCHARACTER_CODE_POINT;
public const int PROPERTY_QUOTATION_MARK;
public const int PROPERTY_RADICAL;
public const int PROPERTY_SOFT_DOTTED;
public const int PROPERTY_TERMINAL_PUNCTUATION;
public const int PROPERTY_UNIFIED_IDEOGRAPH;
public const int PROPERTY_UPPERCASE;
public const int PROPERTY_WHITE_SPACE;
public const int PROPERTY_XID_CONTINUE;
public const int PROPERTY_XID_START;
public const int PROPERTY_CASE_SENSITIVE;
public const int PROPERTY_S_TERM;
public const int PROPERTY_VARIATION_SELECTOR;
public const int PROPERTY_NFD_INERT;
public const int PROPERTY_NFKD_INERT;
public const int PROPERTY_NFC_INERT;
public const int PROPERTY_NFKC_INERT;
public const int PROPERTY_SEGMENT_STARTER;
public const int PROPERTY_PATTERN_SYNTAX;
public const int PROPERTY_PATTERN_WHITE_SPACE;
public const int PROPERTY_POSIX_ALNUM;
public const int PROPERTY_POSIX_BLANK;
public const int PROPERTY_POSIX_GRAPH;
public const int PROPERTY_POSIX_PRINT;
public const int PROPERTY_POSIX_XDIGIT;
public const int PROPERTY_CASED;
public const int PROPERTY_CASE_IGNORABLE;
public const int PROPERTY_CHANGES_WHEN_LOWERCASED;
public const int PROPERTY_CHANGES_WHEN_UPPERCASED;
public const int PROPERTY_CHANGES_WHEN_TITLECASED;
public const int PROPERTY_CHANGES_WHEN_CASEFOLDED;
public const int PROPERTY_CHANGES_WHEN_CASEMAPPED;
public const int PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED;
public const int PROPERTY_BINARY_LIMIT;
public const int PROPERTY_BIDI_CLASS;
public const int PROPERTY_INT_START;
public const int PROPERTY_BLOCK;
public const int PROPERTY_CANONICAL_COMBINING_CLASS;
public const int PROPERTY_DECOMPOSITION_TYPE;
public const int PROPERTY_EAST_ASIAN_WIDTH;
public const int PROPERTY_GENERAL_CATEGORY;
public const int PROPERTY_JOINING_GROUP;
public const int PROPERTY_JOINING_TYPE;
public const int PROPERTY_LINE_BREAK;
public const int PROPERTY_NUMERIC_TYPE;
public const int PROPERTY_SCRIPT;
public const int PROPERTY_HANGUL_SYLLABLE_TYPE;
public const int PROPERTY_NFD_QUICK_CHECK;
public const int PROPERTY_NFKD_QUICK_CHECK;
public const int PROPERTY_NFC_QUICK_CHECK;
public const int PROPERTY_NFKC_QUICK_CHECK;
public const int PROPERTY_LEAD_CANONICAL_COMBINING_CLASS;
public const int PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS;
public const int PROPERTY_GRAPHEME_CLUSTER_BREAK;
public const int PROPERTY_SENTENCE_BREAK;
public const int PROPERTY_WORD_BREAK;
public const int PROPERTY_BIDI_PAIRED_BRACKET_TYPE;
public const int PROPERTY_INT_LIMIT;
public const int PROPERTY_GENERAL_CATEGORY_MASK;
public const int PROPERTY_MASK_START;
public const int PROPERTY_MASK_LIMIT;
public const int PROPERTY_NUMERIC_VALUE;
public const int PROPERTY_DOUBLE_START;
public const int PROPERTY_DOUBLE_LIMIT;
public const int PROPERTY_AGE;
public const int PROPERTY_STRING_START;
public const int PROPERTY_BIDI_MIRRORING_GLYPH;
public const int PROPERTY_CASE_FOLDING;
public const int PROPERTY_ISO_COMMENT;
public const int PROPERTY_LOWERCASE_MAPPING;
public const int PROPERTY_NAME;
public const int PROPERTY_SIMPLE_CASE_FOLDING;
public const int PROPERTY_SIMPLE_LOWERCASE_MAPPING;
public const int PROPERTY_SIMPLE_TITLECASE_MAPPING;
public const int PROPERTY_SIMPLE_UPPERCASE_MAPPING;
public const int PROPERTY_TITLECASE_MAPPING;
public const int PROPERTY_UNICODE_1_NAME;
public const int PROPERTY_UPPERCASE_MAPPING;
public const int PROPERTY_BIDI_PAIRED_BRACKET;
public const int PROPERTY_STRING_LIMIT;
public const int PROPERTY_SCRIPT_EXTENSIONS;
public const int PROPERTY_OTHER_PROPERTY_START;
public const int PROPERTY_OTHER_PROPERTY_LIMIT;
public const int PROPERTY_INVALID_CODE;
public const int CHAR_CATEGORY_UNASSIGNED;
public const int CHAR_CATEGORY_GENERAL_OTHER_TYPES;
public const int CHAR_CATEGORY_UPPERCASE_LETTER;
public const int CHAR_CATEGORY_LOWERCASE_LETTER;
public const int CHAR_CATEGORY_TITLECASE_LETTER;
public const int CHAR_CATEGORY_MODIFIER_LETTER;
public const int CHAR_CATEGORY_OTHER_LETTER;
public const int CHAR_CATEGORY_NON_SPACING_MARK;
public const int CHAR_CATEGORY_ENCLOSING_MARK;
public const int CHAR_CATEGORY_COMBINING_SPACING_MARK;
public const int CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER;
public const int CHAR_CATEGORY_LETTER_NUMBER;
public const int CHAR_CATEGORY_OTHER_NUMBER;
public const int CHAR_CATEGORY_SPACE_SEPARATOR;
public const int CHAR_CATEGORY_LINE_SEPARATOR;
public const int CHAR_CATEGORY_PARAGRAPH_SEPARATOR;
public const int CHAR_CATEGORY_CONTROL_CHAR;
public const int CHAR_CATEGORY_FORMAT_CHAR;
public const int CHAR_CATEGORY_PRIVATE_USE_CHAR;
public const int CHAR_CATEGORY_SURROGATE;
public const int CHAR_CATEGORY_DASH_PUNCTUATION;
public const int CHAR_CATEGORY_START_PUNCTUATION;
public const int CHAR_CATEGORY_END_PUNCTUATION;
public const int CHAR_CATEGORY_CONNECTOR_PUNCTUATION;
public const int CHAR_CATEGORY_OTHER_PUNCTUATION;
public const int CHAR_CATEGORY_MATH_SYMBOL;
public const int CHAR_CATEGORY_CURRENCY_SYMBOL;
public const int CHAR_CATEGORY_MODIFIER_SYMBOL;
public const int CHAR_CATEGORY_OTHER_SYMBOL;
public const int CHAR_CATEGORY_INITIAL_PUNCTUATION;
public const int CHAR_CATEGORY_FINAL_PUNCTUATION;
public const int CHAR_CATEGORY_CHAR_CATEGORY_COUNT;
public const int CHAR_DIRECTION_LEFT_TO_RIGHT;
public const int CHAR_DIRECTION_RIGHT_TO_LEFT;
public const int CHAR_DIRECTION_EUROPEAN_NUMBER;
public const int CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR;
public const int CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR;
public const int CHAR_DIRECTION_ARABIC_NUMBER;
public const int CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR;
public const int CHAR_DIRECTION_BLOCK_SEPARATOR;
public const int CHAR_DIRECTION_SEGMENT_SEPARATOR;
public const int CHAR_DIRECTION_WHITE_SPACE_NEUTRAL;
public const int CHAR_DIRECTION_OTHER_NEUTRAL;
public const int CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING;
public const int CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE;
public const int CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC;
public const int CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING;
public const int CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE;
public const int CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT;
public const int CHAR_DIRECTION_DIR_NON_SPACING_MARK;
public const int CHAR_DIRECTION_BOUNDARY_NEUTRAL;
public const int CHAR_DIRECTION_FIRST_STRONG_ISOLATE;
public const int CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE;
public const int CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE;
public const int CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE;
public const int CHAR_DIRECTION_CHAR_DIRECTION_COUNT;
public const int BLOCK_CODE_NO_BLOCK;
public const int BLOCK_CODE_BASIC_LATIN;
public const int BLOCK_CODE_LATIN_1_SUPPLEMENT;
public const int BLOCK_CODE_LATIN_EXTENDED_A;
public const int BLOCK_CODE_LATIN_EXTENDED_B;
public const int BLOCK_CODE_IPA_EXTENSIONS;
public const int BLOCK_CODE_SPACING_MODIFIER_LETTERS;
public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS;
public const int BLOCK_CODE_GREEK;
public const int BLOCK_CODE_CYRILLIC;
public const int BLOCK_CODE_ARMENIAN;
public const int BLOCK_CODE_HEBREW;
public const int BLOCK_CODE_ARABIC;
public const int BLOCK_CODE_SYRIAC;
public const int BLOCK_CODE_THAANA;
public const int BLOCK_CODE_DEVANAGARI;
public const int BLOCK_CODE_BENGALI;
public const int BLOCK_CODE_GURMUKHI;
public const int BLOCK_CODE_GUJARATI;
public const int BLOCK_CODE_ORIYA;
public const int BLOCK_CODE_TAMIL;
public const int BLOCK_CODE_TELUGU;
public const int BLOCK_CODE_KANNADA;
public const int BLOCK_CODE_MALAYALAM;
public const int BLOCK_CODE_SINHALA;
public const int BLOCK_CODE_THAI;
public const int BLOCK_CODE_LAO;
public const int BLOCK_CODE_TIBETAN;
public const int BLOCK_CODE_MYANMAR;
public const int BLOCK_CODE_GEORGIAN;
public const int BLOCK_CODE_HANGUL_JAMO;
public const int BLOCK_CODE_ETHIOPIC;
public const int BLOCK_CODE_CHEROKEE;
public const int BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS;
public const int BLOCK_CODE_OGHAM;
public const int BLOCK_CODE_RUNIC;
public const int BLOCK_CODE_KHMER;
public const int BLOCK_CODE_MONGOLIAN;
public const int BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL;
public const int BLOCK_CODE_GREEK_EXTENDED;
public const int BLOCK_CODE_GENERAL_PUNCTUATION;
public const int BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS;
public const int BLOCK_CODE_CURRENCY_SYMBOLS;
public const int BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS;
public const int BLOCK_CODE_LETTERLIKE_SYMBOLS;
public const int BLOCK_CODE_NUMBER_FORMS;
public const int BLOCK_CODE_ARROWS;
public const int BLOCK_CODE_MATHEMATICAL_OPERATORS;
public const int BLOCK_CODE_MISCELLANEOUS_TECHNICAL;
public const int BLOCK_CODE_CONTROL_PICTURES;
public const int BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION;
public const int BLOCK_CODE_ENCLOSED_ALPHANUMERICS;
public const int BLOCK_CODE_BOX_DRAWING;
public const int BLOCK_CODE_BLOCK_ELEMENTS;
public const int BLOCK_CODE_GEOMETRIC_SHAPES;
public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS;
public const int BLOCK_CODE_DINGBATS;
public const int BLOCK_CODE_BRAILLE_PATTERNS;
public const int BLOCK_CODE_CJK_RADICALS_SUPPLEMENT;
public const int BLOCK_CODE_KANGXI_RADICALS;
public const int BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS;
public const int BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION;
public const int BLOCK_CODE_HIRAGANA;
public const int BLOCK_CODE_KATAKANA;
public const int BLOCK_CODE_BOPOMOFO;
public const int BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO;
public const int BLOCK_CODE_KANBUN;
public const int BLOCK_CODE_BOPOMOFO_EXTENDED;
public const int BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS;
public const int BLOCK_CODE_CJK_COMPATIBILITY;
public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS;
public const int BLOCK_CODE_YI_SYLLABLES;
public const int BLOCK_CODE_YI_RADICALS;
public const int BLOCK_CODE_HANGUL_SYLLABLES;
public const int BLOCK_CODE_HIGH_SURROGATES;
public const int BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES;
public const int BLOCK_CODE_LOW_SURROGATES;
public const int BLOCK_CODE_PRIVATE_USE_AREA;
public const int BLOCK_CODE_PRIVATE_USE;
public const int BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS;
public const int BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS;
public const int BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A;
public const int BLOCK_CODE_COMBINING_HALF_MARKS;
public const int BLOCK_CODE_CJK_COMPATIBILITY_FORMS;
public const int BLOCK_CODE_SMALL_FORM_VARIANTS;
public const int BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B;
public const int BLOCK_CODE_SPECIALS;
public const int BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS;
public const int BLOCK_CODE_OLD_ITALIC;
public const int BLOCK_CODE_GOTHIC;
public const int BLOCK_CODE_DESERET;
public const int BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS;
public const int BLOCK_CODE_MUSICAL_SYMBOLS;
public const int BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS;
public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B;
public const int BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT;
public const int BLOCK_CODE_TAGS;
public const int BLOCK_CODE_CYRILLIC_SUPPLEMENT;
public const int BLOCK_CODE_CYRILLIC_SUPPLEMENTARY;
public const int BLOCK_CODE_TAGALOG;
public const int BLOCK_CODE_HANUNOO;
public const int BLOCK_CODE_BUHID;
public const int BLOCK_CODE_TAGBANWA;
public const int BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A;
public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_A;
public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_B;
public const int BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B;
public const int BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS;
public const int BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS;
public const int BLOCK_CODE_VARIATION_SELECTORS;
public const int BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A;
public const int BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B;
public const int BLOCK_CODE_LIMBU;
public const int BLOCK_CODE_TAI_LE;
public const int BLOCK_CODE_KHMER_SYMBOLS;
public const int BLOCK_CODE_PHONETIC_EXTENSIONS;
public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS;
public const int BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS;
public const int BLOCK_CODE_LINEAR_B_SYLLABARY;
public const int BLOCK_CODE_LINEAR_B_IDEOGRAMS;
public const int BLOCK_CODE_AEGEAN_NUMBERS;
public const int BLOCK_CODE_UGARITIC;
public const int BLOCK_CODE_SHAVIAN;
public const int BLOCK_CODE_OSMANYA;
public const int BLOCK_CODE_CYPRIOT_SYLLABARY;
public const int BLOCK_CODE_TAI_XUAN_JING_SYMBOLS;
public const int BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT;
public const int BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION;
public const int BLOCK_CODE_ANCIENT_GREEK_NUMBERS;
public const int BLOCK_CODE_ARABIC_SUPPLEMENT;
public const int BLOCK_CODE_BUGINESE;
public const int BLOCK_CODE_CJK_STROKES;
public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT;
public const int BLOCK_CODE_COPTIC;
public const int BLOCK_CODE_ETHIOPIC_EXTENDED;
public const int BLOCK_CODE_ETHIOPIC_SUPPLEMENT;
public const int BLOCK_CODE_GEORGIAN_SUPPLEMENT;
public const int BLOCK_CODE_GLAGOLITIC;
public const int BLOCK_CODE_KHAROSHTHI;
public const int BLOCK_CODE_MODIFIER_TONE_LETTERS;
public const int BLOCK_CODE_NEW_TAI_LUE;
public const int BLOCK_CODE_OLD_PERSIAN;
public const int BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT;
public const int BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION;
public const int BLOCK_CODE_SYLOTI_NAGRI;
public const int BLOCK_CODE_TIFINAGH;
public const int BLOCK_CODE_VERTICAL_FORMS;
public const int BLOCK_CODE_NKO;
public const int BLOCK_CODE_BALINESE;
public const int BLOCK_CODE_LATIN_EXTENDED_C;
public const int BLOCK_CODE_LATIN_EXTENDED_D;
public const int BLOCK_CODE_PHAGS_PA;
public const int BLOCK_CODE_PHOENICIAN;
public const int BLOCK_CODE_CUNEIFORM;
public const int BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION;
public const int BLOCK_CODE_COUNTING_ROD_NUMERALS;
public const int BLOCK_CODE_SUNDANESE;
public const int BLOCK_CODE_LEPCHA;
public const int BLOCK_CODE_OL_CHIKI;
public const int BLOCK_CODE_CYRILLIC_EXTENDED_A;
public const int BLOCK_CODE_VAI;
public const int BLOCK_CODE_CYRILLIC_EXTENDED_B;
public const int BLOCK_CODE_SAURASHTRA;
public const int BLOCK_CODE_KAYAH_LI;
public const int BLOCK_CODE_REJANG;
public const int BLOCK_CODE_CHAM;
public const int BLOCK_CODE_ANCIENT_SYMBOLS;
public const int BLOCK_CODE_PHAISTOS_DISC;
public const int BLOCK_CODE_LYCIAN;
public const int BLOCK_CODE_CARIAN;
public const int BLOCK_CODE_LYDIAN;
public const int BLOCK_CODE_MAHJONG_TILES;
public const int BLOCK_CODE_DOMINO_TILES;
public const int BLOCK_CODE_SAMARITAN;
public const int BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED;
public const int BLOCK_CODE_TAI_THAM;
public const int BLOCK_CODE_VEDIC_EXTENSIONS;
public const int BLOCK_CODE_LISU;
public const int BLOCK_CODE_BAMUM;
public const int BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS;
public const int BLOCK_CODE_DEVANAGARI_EXTENDED;
public const int BLOCK_CODE_HANGUL_JAMO_EXTENDED_A;
public const int BLOCK_CODE_JAVANESE;
public const int BLOCK_CODE_MYANMAR_EXTENDED_A;
public const int BLOCK_CODE_TAI_VIET;
public const int BLOCK_CODE_MEETEI_MAYEK;
public const int BLOCK_CODE_HANGUL_JAMO_EXTENDED_B;
public const int BLOCK_CODE_IMPERIAL_ARAMAIC;
public const int BLOCK_CODE_OLD_SOUTH_ARABIAN;
public const int BLOCK_CODE_AVESTAN;
public const int BLOCK_CODE_INSCRIPTIONAL_PARTHIAN;
public const int BLOCK_CODE_INSCRIPTIONAL_PAHLAVI;
public const int BLOCK_CODE_OLD_TURKIC;
public const int BLOCK_CODE_RUMI_NUMERAL_SYMBOLS;
public const int BLOCK_CODE_KAITHI;
public const int BLOCK_CODE_EGYPTIAN_HIEROGLYPHS;
public const int BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT;
public const int BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT;
public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C;
public const int BLOCK_CODE_MANDAIC;
public const int BLOCK_CODE_BATAK;
public const int BLOCK_CODE_ETHIOPIC_EXTENDED_A;
public const int BLOCK_CODE_BRAHMI;
public const int BLOCK_CODE_BAMUM_SUPPLEMENT;
public const int BLOCK_CODE_KANA_SUPPLEMENT;
public const int BLOCK_CODE_PLAYING_CARDS;
public const int BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS;
public const int BLOCK_CODE_EMOTICONS;
public const int BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS;
public const int BLOCK_CODE_ALCHEMICAL_SYMBOLS;
public const int BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D;
public const int BLOCK_CODE_ARABIC_EXTENDED_A;
public const int BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS;
public const int BLOCK_CODE_CHAKMA;
public const int BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS;
public const int BLOCK_CODE_MEROITIC_CURSIVE;
public const int BLOCK_CODE_MEROITIC_HIEROGLYPHS;
public const int BLOCK_CODE_MIAO;
public const int BLOCK_CODE_SHARADA;
public const int BLOCK_CODE_SORA_SOMPENG;
public const int BLOCK_CODE_SUNDANESE_SUPPLEMENT;
public const int BLOCK_CODE_TAKRI;
public const int BLOCK_CODE_BASSA_VAH;
public const int BLOCK_CODE_CAUCASIAN_ALBANIAN;
public const int BLOCK_CODE_COPTIC_EPACT_NUMBERS;
public const int BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED;
public const int BLOCK_CODE_DUPLOYAN;
public const int BLOCK_CODE_ELBASAN;
public const int BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED;
public const int BLOCK_CODE_GRANTHA;
public const int BLOCK_CODE_KHOJKI;
public const int BLOCK_CODE_KHUDAWADI;
public const int BLOCK_CODE_LATIN_EXTENDED_E;
public const int BLOCK_CODE_LINEAR_A;
public const int BLOCK_CODE_MAHAJANI;
public const int BLOCK_CODE_MANICHAEAN;
public const int BLOCK_CODE_MENDE_KIKAKUI;
public const int BLOCK_CODE_MODI;
public const int BLOCK_CODE_MRO;
public const int BLOCK_CODE_MYANMAR_EXTENDED_B;
public const int BLOCK_CODE_NABATAEAN;
public const int BLOCK_CODE_OLD_NORTH_ARABIAN;
public const int BLOCK_CODE_OLD_PERMIC;
public const int BLOCK_CODE_ORNAMENTAL_DINGBATS;
public const int BLOCK_CODE_PAHAWH_HMONG;
public const int BLOCK_CODE_PALMYRENE;
public const int BLOCK_CODE_PAU_CIN_HAU;
public const int BLOCK_CODE_PSALTER_PAHLAVI;
public const int BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS;
public const int BLOCK_CODE_SIDDHAM;
public const int BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS;
public const int BLOCK_CODE_SUPPLEMENTAL_ARROWS_C;
public const int BLOCK_CODE_TIRHUTA;
public const int BLOCK_CODE_WARANG_CITI;
public const int BLOCK_CODE_COUNT;
public const int BLOCK_CODE_INVALID_CODE;
public const int BPT_NONE;
public const int BPT_OPEN;
public const int BPT_CLOSE;
public const int BPT_COUNT;
public const int EA_NEUTRAL;
public const int EA_AMBIGUOUS;
public const int EA_HALFWIDTH;
public const int EA_FULLWIDTH;
public const int EA_NARROW;
public const int EA_WIDE;
public const int EA_COUNT;
public const int UNICODE_CHAR_NAME;
public const int UNICODE_10_CHAR_NAME;
public const int EXTENDED_CHAR_NAME;
public const int CHAR_NAME_ALIAS;
public const int CHAR_NAME_CHOICE_COUNT;
public const int SHORT_PROPERTY_NAME;
public const int LONG_PROPERTY_NAME;
public const int PROPERTY_NAME_CHOICE_COUNT;
public const int DT_NONE;
public const int DT_CANONICAL;
public const int DT_COMPAT;
public const int DT_CIRCLE;
public const int DT_FINAL;
public const int DT_FONT;
public const int DT_FRACTION;
public const int DT_INITIAL;
public const int DT_ISOLATED;
public const int DT_MEDIAL;
public const int DT_NARROW;
public const int DT_NOBREAK;
public const int DT_SMALL;
public const int DT_SQUARE;
public const int DT_SUB;
public const int DT_SUPER;
public const int DT_VERTICAL;
public const int DT_WIDE;
public const int DT_COUNT;
public const int JT_NON_JOINING;
public const int JT_JOIN_CAUSING;
public const int JT_DUAL_JOINING;
public const int JT_LEFT_JOINING;
public const int JT_RIGHT_JOINING;
public const int JT_TRANSPARENT;
public const int JT_COUNT;
public const int JG_NO_JOINING_GROUP;
public const int JG_AIN;
public const int JG_ALAPH;
public const int JG_ALEF;
public const int JG_BEH;
public const int JG_BETH;
public const int JG_DAL;
public const int JG_DALATH_RISH;
public const int JG_E;
public const int JG_FEH;
public const int JG_FINAL_SEMKATH;
public const int JG_GAF;
public const int JG_GAMAL;
public const int JG_HAH;
public const int JG_TEH_MARBUTA_GOAL;
public const int JG_HAMZA_ON_HEH_GOAL;
public const int JG_HE;
public const int JG_HEH;
public const int JG_HEH_GOAL;
public const int JG_HETH;
public const int JG_KAF;
public const int JG_KAPH;
public const int JG_KNOTTED_HEH;
public const int JG_LAM;
public const int JG_LAMADH;
public const int JG_MEEM;
public const int JG_MIM;
public const int JG_NOON;
public const int JG_NUN;
public const int JG_PE;
public const int JG_QAF;
public const int JG_QAPH;
public const int JG_REH;
public const int JG_REVERSED_PE;
public const int JG_SAD;
public const int JG_SADHE;
public const int JG_SEEN;
public const int JG_SEMKATH;
public const int JG_SHIN;
public const int JG_SWASH_KAF;
public const int JG_SYRIAC_WAW;
public const int JG_TAH;
public const int JG_TAW;
public const int JG_TEH_MARBUTA;
public const int JG_TETH;
public const int JG_WAW;
public const int JG_YEH;
public const int JG_YEH_BARREE;
public const int JG_YEH_WITH_TAIL;
public const int JG_YUDH;
public const int JG_YUDH_HE;
public const int JG_ZAIN;
public const int JG_FE;
public const int JG_KHAPH;
public const int JG_ZHAIN;
public const int JG_BURUSHASKI_YEH_BARREE;
public const int JG_FARSI_YEH;
public const int JG_NYA;
public const int JG_ROHINGYA_YEH;
public const int JG_MANICHAEAN_ALEPH;
public const int JG_MANICHAEAN_AYIN;
public const int JG_MANICHAEAN_BETH;
public const int JG_MANICHAEAN_DALETH;
public const int JG_MANICHAEAN_DHAMEDH;
public const int JG_MANICHAEAN_FIVE;
public const int JG_MANICHAEAN_GIMEL;
public const int JG_MANICHAEAN_HETH;
public const int JG_MANICHAEAN_HUNDRED;
public const int JG_MANICHAEAN_KAPH;
public const int JG_MANICHAEAN_LAMEDH;
public const int JG_MANICHAEAN_MEM;
public const int JG_MANICHAEAN_NUN;
public const int JG_MANICHAEAN_ONE;
public const int JG_MANICHAEAN_PE;
public const int JG_MANICHAEAN_QOPH;
public const int JG_MANICHAEAN_RESH;
public const int JG_MANICHAEAN_SADHE;
public const int JG_MANICHAEAN_SAMEKH;
public const int JG_MANICHAEAN_TAW;
public const int JG_MANICHAEAN_TEN;
public const int JG_MANICHAEAN_TETH;
public const int JG_MANICHAEAN_THAMEDH;
public const int JG_MANICHAEAN_TWENTY;
public const int JG_MANICHAEAN_WAW;
public const int JG_MANICHAEAN_YODH;
public const int JG_MANICHAEAN_ZAYIN;
public const int JG_STRAIGHT_WAW;
public const int JG_COUNT;
public const int GCB_OTHER;
public const int GCB_CONTROL;
public const int GCB_CR;
public const int GCB_EXTEND;
public const int GCB_L;
public const int GCB_LF;
public const int GCB_LV;
public const int GCB_LVT;
public const int GCB_T;
public const int GCB_V;
public const int GCB_SPACING_MARK;
public const int GCB_PREPEND;
public const int GCB_REGIONAL_INDICATOR;
public const int GCB_COUNT;
public const int WB_OTHER;
public const int WB_ALETTER;
public const int WB_FORMAT;
public const int WB_KATAKANA;
public const int WB_MIDLETTER;
public const int WB_MIDNUM;
public const int WB_NUMERIC;
public const int WB_EXTENDNUMLET;
public const int WB_CR;
public const int WB_EXTEND;
public const int WB_LF;
public const int WB_MIDNUMLET;
public const int WB_NEWLINE;
public const int WB_REGIONAL_INDICATOR;
public const int WB_HEBREW_LETTER;
public const int WB_SINGLE_QUOTE;
public const int WB_DOUBLE_QUOTE;
public const int WB_COUNT;
public const int SB_OTHER;
public const int SB_ATERM;
public const int SB_CLOSE;
public const int SB_FORMAT;
public const int SB_LOWER;
public const int SB_NUMERIC;
public const int SB_OLETTER;
public const int SB_SEP;
public const int SB_SP;
public const int SB_STERM;
public const int SB_UPPER;
public const int SB_CR;
public const int SB_EXTEND;
public const int SB_LF;
public const int SB_SCONTINUE;
public const int SB_COUNT;
public const int LB_UNKNOWN;
public const int LB_AMBIGUOUS;
public const int LB_ALPHABETIC;
public const int LB_BREAK_BOTH;
public const int LB_BREAK_AFTER;
public const int LB_BREAK_BEFORE;
public const int LB_MANDATORY_BREAK;
public const int LB_CONTINGENT_BREAK;
public const int LB_CLOSE_PUNCTUATION;
public const int LB_COMBINING_MARK;
public const int LB_CARRIAGE_RETURN;
public const int LB_EXCLAMATION;
public const int LB_GLUE;
public const int LB_HYPHEN;
public const int LB_IDEOGRAPHIC;
public const int LB_INSEPARABLE;
public const int LB_INSEPERABLE;
public const int LB_INFIX_NUMERIC;
public const int LB_LINE_FEED;
public const int LB_NONSTARTER;
public const int LB_NUMERIC;
public const int LB_OPEN_PUNCTUATION;
public const int LB_POSTFIX_NUMERIC;
public const int LB_PREFIX_NUMERIC;
public const int LB_QUOTATION;
public const int LB_COMPLEX_CONTEXT;
public const int LB_SURROGATE;
public const int LB_SPACE;
public const int LB_BREAK_SYMBOLS;
public const int LB_ZWSPACE;
public const int LB_NEXT_LINE;
public const int LB_WORD_JOINER;
public const int LB_H2;
public const int LB_H3;
public const int LB_JL;
public const int LB_JT;
public const int LB_JV;
public const int LB_CLOSE_PARENTHESIS;
public const int LB_CONDITIONAL_JAPANESE_STARTER;
public const int LB_HEBREW_LETTER;
public const int LB_REGIONAL_INDICATOR;
public const int LB_COUNT;
public const int NT_NONE;
public const int NT_DECIMAL;
public const int NT_DIGIT;
public const int NT_NUMERIC;
public const int NT_COUNT;
public const int HST_NOT_APPLICABLE;
public const int HST_LEADING_JAMO;
public const int HST_VOWEL_JAMO;
public const int HST_TRAILING_JAMO;
public const int HST_LV_SYLLABLE;
public const int HST_LVT_SYLLABLE;
public const int HST_COUNT;
public const int FOLD_CASE_DEFAULT;
public const int FOLD_CASE_EXCLUDE_SPECIAL_I;
/* Yöntemler */
public static function charAge(int|string `$codepoint`): ?array
public static function charDigitValue(int|string `$codepoint`): ?int
public static function charDirection(int|string `$codepoint`): ?int
public static function charFromName(string `$name`, int `$type` = `IntlChar::UNICODE_CHAR_NAME`): ?int
public static function charMirror(int|string `$codepoint`): int|string|null
public static function charName(int|string `$codepoint`, int `$type` = `IntlChar::UNICODE_CHAR_NAME`): ?string
public static function charType(int|string `$codepoint`): ?int
public static function chr(int|string `$codepoint`): ?string
public static function digit(int|string `$codepoint`, int `$base` = 10): int|false|null
public static function enumCharNames(
int|string `$start`,
int|string `$end`,
callable `$callback`,
int `$type` = `IntlChar::UNICODE_CHAR_NAME`
): bool
public static function enumCharTypes(callable `$callback`): void
public static function foldCase(int|string `$codepoint`, int `$options` = `IntlChar::FOLD_CASE_DEFAULT`): int|string|null
public static function forDigit(int `$digit`, int `$base` = 10): int
public static function getBidiPairedBracket(int|string `$codepoint`): int|string|null
public static function getBlockCode(int|string `$codepoint`): ?int
public static function getCombiningClass(int|string `$codepoint`): ?int
public static function getFC_NFKC_Closure(int|string `$codepoint`): string|false|null
public static function getIntPropertyMaxValue(int `$property`): int
public static function getIntPropertyMinValue(int `$property`): int
public static function getIntPropertyValue(int|string `$codepoint`, int `$property`): ?int
public static function getNumericValue(int|string `$codepoint`): ?float
public static function getPropertyEnum(string `$alias`): int
public static function getPropertyName(int `$property`, int `$type` = `IntlChar::LONG_PROPERTY_NAME`): string|false
public static function getPropertyValueEnum(int `$property`, string `$name`): int
public static function getPropertyValueName(int `$property`, int `$value`, int `$type` = `IntlChar::LONG_PROPERTY_NAME`): string|false
public static function getUnicodeVersion(): array
public static function hasBinaryProperty(int|string `$codepoint`, int `$property`): ?bool
public static function isalnum(int|string `$codepoint`): ?bool
public static function isalpha(int|string `$codepoint`): ?bool
public static function isbase(int|string `$codepoint`): ?bool
public static function isblank(int|string `$codepoint`): ?bool
public static function iscntrl(int|string `$codepoint`): ?bool
public static function isdefined(int|string `$codepoint`): ?bool
public static function isdigit(int|string `$codepoint`): ?bool
public static function isgraph(int|string `$codepoint`): ?bool
public static function isIDIgnorable(int|string `$codepoint`): ?bool
public static function isIDPart(int|string `$codepoint`): ?bool
public static function isIDStart(int|string `$codepoint`): ?bool
public static function isISOControl(int|string `$codepoint`): ?bool
public static function isJavaIDPart(int|string `$codepoint`): ?bool
public static function isJavaIDStart(int|string `$codepoint`): ?bool
public static function isJavaSpaceChar(int|string `$codepoint`): ?bool
public static function islower(int|string `$codepoint`): ?bool
public static function isMirrored(int|string `$codepoint`): ?bool
public static function isprint(int|string `$codepoint`): ?bool
public static function ispunct(int|string `$codepoint`): ?bool
public static function isspace(int|string `$codepoint`): ?bool
public static function istitle(int|string `$codepoint`): ?bool
public static function isUAlphabetic(int|string `$codepoint`): ?bool
public static function isULowercase(int|string `$codepoint`): ?bool
public static function isupper(int|string `$codepoint`): ?bool
public static function isUUppercase(int|string `$codepoint`): ?bool
public static function isUWhiteSpace(int|string `$codepoint`): ?bool
public static function isWhitespace(int|string `$codepoint`): ?bool
public static function isxdigit(int|string `$codepoint`): ?bool
public static function ord(int|string `$character`): ?int
public static function tolower(int|string `$codepoint`): int|string|null
public static function totitle(int|string `$codepoint`): int|string|null
public static function toupper(int|string `$codepoint`): int|string|null
}

## Öntanımlı Sabitler

`IntlChar::UNICODE_VERSION` string

`IntlChar::CODEPOINT_MIN` int

`IntlChar::CODEPOINT_MAX` int

`IntlChar::NO_NUMERIC_VALUE` int

  Special value that is returned by IntlChar::getNumericValue() when no numeric value is defined for a code point.

`IntlChar::PROPERTY_ALPHABETIC` int

`IntlChar::PROPERTY_BINARY_START` int

`IntlChar::PROPERTY_ASCII_HEX_DIGIT` int

`IntlChar::PROPERTY_BIDI_CONTROL` int

`IntlChar::PROPERTY_BIDI_MIRRORED` int

`IntlChar::PROPERTY_DASH` int

`IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT` int

`IntlChar::PROPERTY_DEPRECATED` int

`IntlChar::PROPERTY_DIACRITIC` int

`IntlChar::PROPERTY_EXTENDER` int

`IntlChar::PROPERTY_FULL_COMPOSITION_EXCLUSION` int

`IntlChar::PROPERTY_GRAPHEME_BASE` int

`IntlChar::PROPERTY_GRAPHEME_EXTEND` int

`IntlChar::PROPERTY_GRAPHEME_LINK` int

`IntlChar::PROPERTY_HEX_DIGIT` int

`IntlChar::PROPERTY_HYPHEN` int

`IntlChar::PROPERTY_ID_CONTINUE` int

`IntlChar::PROPERTY_ID_START` int

`IntlChar::PROPERTY_IDEOGRAPHIC` int

`IntlChar::PROPERTY_IDS_BINARY_OPERATOR` int

`IntlChar::PROPERTY_IDS_TRINARY_OPERATOR` int

`IntlChar::PROPERTY_IDS_UNARY_OPERATOR` int
  For programmatic determination of Ideographic Description Sequences. Available as of PHP 8.4.0.
`IntlChar::PROPERTY_ID_COMPAT_MATH_START` int
  Used in mathematical identifier profile in UAX 31. Available as of PHP 8.4.0.
`IntlChar::PROPERTY_ID_COMPAT_MATH_CONTINUE` int
  Used in mathematical identifier profile in UAX 31. Available as of PHP 8.4.0.
`IntlChar::PROPERTY_JOIN_CONTROL` int

`IntlChar::PROPERTY_LOGICAL_ORDER_EXCEPTION` int

`IntlChar::PROPERTY_LOWERCASE` int

`IntlChar::PROPERTY_MATH` int

`IntlChar::PROPERTY_NONCHARACTER_CODE_POINT` int

`IntlChar::PROPERTY_QUOTATION_MARK` int

`IntlChar::PROPERTY_RADICAL` int

`IntlChar::PROPERTY_SOFT_DOTTED` int

`IntlChar::PROPERTY_TERMINAL_PUNCTUATION` int

`IntlChar::PROPERTY_UNIFIED_IDEOGRAPH` int

`IntlChar::PROPERTY_UPPERCASE` int

`IntlChar::PROPERTY_WHITE_SPACE` int

`IntlChar::PROPERTY_XID_CONTINUE` int

`IntlChar::PROPERTY_XID_START` int

`IntlChar::PROPERTY_CASE_SENSITIVE` int

`IntlChar::PROPERTY_S_TERM` int

`IntlChar::PROPERTY_VARIATION_SELECTOR` int

`IntlChar::PROPERTY_NFD_INERT` int

`IntlChar::PROPERTY_NFKD_INERT` int

`IntlChar::PROPERTY_NFC_INERT` int

`IntlChar::PROPERTY_NFKC_INERT` int

`IntlChar::PROPERTY_SEGMENT_STARTER` int

`IntlChar::PROPERTY_PATTERN_SYNTAX` int

`IntlChar::PROPERTY_PATTERN_WHITE_SPACE` int

`IntlChar::PROPERTY_POSIX_ALNUM` int

`IntlChar::PROPERTY_POSIX_BLANK` int

`IntlChar::PROPERTY_POSIX_GRAPH` int

`IntlChar::PROPERTY_POSIX_PRINT` int

`IntlChar::PROPERTY_POSIX_XDIGIT` int

`IntlChar::PROPERTY_CASED` int

`IntlChar::PROPERTY_CASE_IGNORABLE` int

`IntlChar::PROPERTY_CHANGES_WHEN_LOWERCASED` int

`IntlChar::PROPERTY_CHANGES_WHEN_UPPERCASED` int

`IntlChar::PROPERTY_CHANGES_WHEN_TITLECASED` int

`IntlChar::PROPERTY_CHANGES_WHEN_CASEFOLDED` int

`IntlChar::PROPERTY_CHANGES_WHEN_CASEMAPPED` int

`IntlChar::PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED` int

`IntlChar::PROPERTY_BINARY_LIMIT` int

`IntlChar::PROPERTY_BIDI_CLASS` int

`IntlChar::PROPERTY_INT_START` int

`IntlChar::PROPERTY_BLOCK` int

`IntlChar::PROPERTY_CANONICAL_COMBINING_CLASS` int

`IntlChar::PROPERTY_DECOMPOSITION_TYPE` int

`IntlChar::PROPERTY_EAST_ASIAN_WIDTH` int

`IntlChar::PROPERTY_GENERAL_CATEGORY` int

`IntlChar::PROPERTY_JOINING_GROUP` int

`IntlChar::PROPERTY_JOINING_TYPE` int

`IntlChar::PROPERTY_LINE_BREAK` int

`IntlChar::PROPERTY_NUMERIC_TYPE` int

`IntlChar::PROPERTY_SCRIPT` int

`IntlChar::PROPERTY_HANGUL_SYLLABLE_TYPE` int

`IntlChar::PROPERTY_NFD_QUICK_CHECK` int

`IntlChar::PROPERTY_NFKD_QUICK_CHECK` int

`IntlChar::PROPERTY_NFC_QUICK_CHECK` int

`IntlChar::PROPERTY_NFKC_QUICK_CHECK` int

`IntlChar::PROPERTY_LEAD_CANONICAL_COMBINING_CLASS` int

`IntlChar::PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS` int

`IntlChar::PROPERTY_GRAPHEME_CLUSTER_BREAK` int

`IntlChar::PROPERTY_SENTENCE_BREAK` int

`IntlChar::PROPERTY_WORD_BREAK` int

`IntlChar::PROPERTY_BIDI_PAIRED_BRACKET_TYPE` int

`IntlChar::PROPERTY_INT_LIMIT` int

`IntlChar::PROPERTY_GENERAL_CATEGORY_MASK` int

`IntlChar::PROPERTY_MASK_START` int

`IntlChar::PROPERTY_MASK_LIMIT` int

`IntlChar::PROPERTY_NUMERIC_VALUE` int

`IntlChar::PROPERTY_DOUBLE_START` int

`IntlChar::PROPERTY_DOUBLE_LIMIT` int

`IntlChar::PROPERTY_AGE` int

`IntlChar::PROPERTY_STRING_START` int

`IntlChar::PROPERTY_BIDI_MIRRORING_GLYPH` int

`IntlChar::PROPERTY_CASE_FOLDING` int

`IntlChar::PROPERTY_ISO_COMMENT` int

`IntlChar::PROPERTY_LOWERCASE_MAPPING` int

`IntlChar::PROPERTY_NAME` int

`IntlChar::PROPERTY_SIMPLE_CASE_FOLDING` int

`IntlChar::PROPERTY_SIMPLE_LOWERCASE_MAPPING` int

`IntlChar::PROPERTY_SIMPLE_TITLECASE_MAPPING` int

`IntlChar::PROPERTY_SIMPLE_UPPERCASE_MAPPING` int

`IntlChar::PROPERTY_TITLECASE_MAPPING` int

`IntlChar::PROPERTY_UNICODE_1_NAME` int

`IntlChar::PROPERTY_UPPERCASE_MAPPING` int

`IntlChar::PROPERTY_BIDI_PAIRED_BRACKET` int

`IntlChar::PROPERTY_STRING_LIMIT` int

`IntlChar::PROPERTY_SCRIPT_EXTENSIONS` int

`IntlChar::PROPERTY_OTHER_PROPERTY_START` int

`IntlChar::PROPERTY_OTHER_PROPERTY_LIMIT` int

`IntlChar::PROPERTY_INVALID_CODE` int

`IntlChar::CHAR_CATEGORY_UNASSIGNED` int

`IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES` int

`IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER` int

`IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER` int

`IntlChar::CHAR_CATEGORY_TITLECASE_LETTER` int

`IntlChar::CHAR_CATEGORY_MODIFIER_LETTER` int

`IntlChar::CHAR_CATEGORY_OTHER_LETTER` int

`IntlChar::CHAR_CATEGORY_NON_SPACING_MARK` int

`IntlChar::CHAR_CATEGORY_ENCLOSING_MARK` int

`IntlChar::CHAR_CATEGORY_COMBINING_SPACING_MARK` int

`IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER` int

`IntlChar::CHAR_CATEGORY_LETTER_NUMBER` int

`IntlChar::CHAR_CATEGORY_OTHER_NUMBER` int

`IntlChar::CHAR_CATEGORY_SPACE_SEPARATOR` int

`IntlChar::CHAR_CATEGORY_LINE_SEPARATOR` int

`IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR` int

`IntlChar::CHAR_CATEGORY_CONTROL_CHAR` int

`IntlChar::CHAR_CATEGORY_FORMAT_CHAR` int

`IntlChar::CHAR_CATEGORY_PRIVATE_USE_CHAR` int

`IntlChar::CHAR_CATEGORY_SURROGATE` int

`IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_START_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_END_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_CONNECTOR_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_MATH_SYMBOL` int

`IntlChar::CHAR_CATEGORY_CURRENCY_SYMBOL` int

`IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL` int

`IntlChar::CHAR_CATEGORY_OTHER_SYMBOL` int

`IntlChar::CHAR_CATEGORY_INITIAL_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_FINAL_PUNCTUATION` int

`IntlChar::CHAR_CATEGORY_CHAR_CATEGORY_COUNT` int

`IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT` int

`IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT` int

`IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER` int

`IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR` int

`IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR` int

`IntlChar::CHAR_DIRECTION_ARABIC_NUMBER` int

`IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR` int

`IntlChar::CHAR_DIRECTION_BLOCK_SEPARATOR` int

`IntlChar::CHAR_DIRECTION_SEGMENT_SEPARATOR` int

`IntlChar::CHAR_DIRECTION_WHITE_SPACE_NEUTRAL` int

`IntlChar::CHAR_DIRECTION_OTHER_NEUTRAL` int

`IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING` int

`IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE` int

`IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC` int

`IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING` int

`IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE` int

`IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT` int

`IntlChar::CHAR_DIRECTION_DIR_NON_SPACING_MARK` int

`IntlChar::CHAR_DIRECTION_BOUNDARY_NEUTRAL` int

`IntlChar::CHAR_DIRECTION_FIRST_STRONG_ISOLATE` int

`IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE` int

`IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE` int

`IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE` int

`IntlChar::CHAR_DIRECTION_CHAR_DIRECTION_COUNT` int

`IntlChar::BLOCK_CODE_NO_BLOCK` int

`IntlChar::BLOCK_CODE_BASIC_LATIN` int

`IntlChar::BLOCK_CODE_LATIN_1_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_A` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_B` int

`IntlChar::BLOCK_CODE_IPA_EXTENSIONS` int

`IntlChar::BLOCK_CODE_SPACING_MODIFIER_LETTERS` int

`IntlChar::BLOCK_CODE_COMBINING_DIACRITICAL_MARKS` int

`IntlChar::BLOCK_CODE_GREEK` int

`IntlChar::BLOCK_CODE_CYRILLIC` int

`IntlChar::BLOCK_CODE_ARMENIAN` int

`IntlChar::BLOCK_CODE_HEBREW` int

`IntlChar::BLOCK_CODE_ARABIC` int

`IntlChar::BLOCK_CODE_SYRIAC` int

`IntlChar::BLOCK_CODE_THAANA` int

`IntlChar::BLOCK_CODE_DEVANAGARI` int

`IntlChar::BLOCK_CODE_BENGALI` int

`IntlChar::BLOCK_CODE_GURMUKHI` int

`IntlChar::BLOCK_CODE_GUJARATI` int

`IntlChar::BLOCK_CODE_ORIYA` int

`IntlChar::BLOCK_CODE_TAMIL` int

`IntlChar::BLOCK_CODE_TELUGU` int

`IntlChar::BLOCK_CODE_KANNADA` int

`IntlChar::BLOCK_CODE_MALAYALAM` int

`IntlChar::BLOCK_CODE_SINHALA` int

`IntlChar::BLOCK_CODE_THAI` int

`IntlChar::BLOCK_CODE_LAO` int

`IntlChar::BLOCK_CODE_TIBETAN` int

`IntlChar::BLOCK_CODE_MYANMAR` int

`IntlChar::BLOCK_CODE_GEORGIAN` int

`IntlChar::BLOCK_CODE_HANGUL_JAMO` int

`IntlChar::BLOCK_CODE_ETHIOPIC` int

`IntlChar::BLOCK_CODE_CHEROKEE` int

`IntlChar::BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS` int

`IntlChar::BLOCK_CODE_OGHAM` int

`IntlChar::BLOCK_CODE_RUNIC` int

`IntlChar::BLOCK_CODE_KHMER` int

`IntlChar::BLOCK_CODE_MONGOLIAN` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL` int

`IntlChar::BLOCK_CODE_GREEK_EXTENDED` int

`IntlChar::BLOCK_CODE_GENERAL_PUNCTUATION` int

`IntlChar::BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS` int

`IntlChar::BLOCK_CODE_CURRENCY_SYMBOLS` int

`IntlChar::BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS` int

`IntlChar::BLOCK_CODE_LETTERLIKE_SYMBOLS` int

`IntlChar::BLOCK_CODE_NUMBER_FORMS` int

`IntlChar::BLOCK_CODE_ARROWS` int

`IntlChar::BLOCK_CODE_MATHEMATICAL_OPERATORS` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_TECHNICAL` int

`IntlChar::BLOCK_CODE_CONTROL_PICTURES` int

`IntlChar::BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION` int

`IntlChar::BLOCK_CODE_ENCLOSED_ALPHANUMERICS` int

`IntlChar::BLOCK_CODE_BOX_DRAWING` int

`IntlChar::BLOCK_CODE_BLOCK_ELEMENTS` int

`IntlChar::BLOCK_CODE_GEOMETRIC_SHAPES` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS` int

`IntlChar::BLOCK_CODE_DINGBATS` int

`IntlChar::BLOCK_CODE_BRAILLE_PATTERNS` int

`IntlChar::BLOCK_CODE_CJK_RADICALS_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_KANGXI_RADICALS` int

`IntlChar::BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS` int

`IntlChar::BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION` int

`IntlChar::BLOCK_CODE_HIRAGANA` int

`IntlChar::BLOCK_CODE_KATAKANA` int

`IntlChar::BLOCK_CODE_BOPOMOFO` int

`IntlChar::BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO` int

`IntlChar::BLOCK_CODE_KANBUN` int

`IntlChar::BLOCK_CODE_BOPOMOFO_EXTENDED` int

`IntlChar::BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS` int

`IntlChar::BLOCK_CODE_CJK_COMPATIBILITY` int

`IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A` int

`IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS` int

`IntlChar::BLOCK_CODE_YI_SYLLABLES` int

`IntlChar::BLOCK_CODE_YI_RADICALS` int

`IntlChar::BLOCK_CODE_HANGUL_SYLLABLES` int

`IntlChar::BLOCK_CODE_HIGH_SURROGATES` int

`IntlChar::BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES` int

`IntlChar::BLOCK_CODE_LOW_SURROGATES` int

`IntlChar::BLOCK_CODE_PRIVATE_USE_AREA` int

`IntlChar::BLOCK_CODE_PRIVATE_USE` int

`IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS` int

`IntlChar::BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS` int

`IntlChar::BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A` int

`IntlChar::BLOCK_CODE_COMBINING_HALF_MARKS` int

`IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_FORMS` int

`IntlChar::BLOCK_CODE_SMALL_FORM_VARIANTS` int

`IntlChar::BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B` int

`IntlChar::BLOCK_CODE_SPECIALS` int

`IntlChar::BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS` int

`IntlChar::BLOCK_CODE_OLD_ITALIC` int

`IntlChar::BLOCK_CODE_GOTHIC` int

`IntlChar::BLOCK_CODE_DESERET` int

`IntlChar::BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS` int

`IntlChar::BLOCK_CODE_MUSICAL_SYMBOLS` int

`IntlChar::BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS` int

`IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B` int

`IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_TAGS` int

`IntlChar::BLOCK_CODE_CYRILLIC_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_CYRILLIC_SUPPLEMENTARY` int

`IntlChar::BLOCK_CODE_TAGALOG` int

`IntlChar::BLOCK_CODE_HANUNOO` int

`IntlChar::BLOCK_CODE_BUHID` int

`IntlChar::BLOCK_CODE_TAGBANWA` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A` int

`IntlChar::BLOCK_CODE_SUPPLEMENTAL_ARROWS_A` int

`IntlChar::BLOCK_CODE_SUPPLEMENTAL_ARROWS_B` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B` int

`IntlChar::BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS` int

`IntlChar::BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS` int

`IntlChar::BLOCK_CODE_VARIATION_SELECTORS` int

`IntlChar::BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A` int

`IntlChar::BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B` int

`IntlChar::BLOCK_CODE_LIMBU` int

`IntlChar::BLOCK_CODE_TAI_LE` int

`IntlChar::BLOCK_CODE_KHMER_SYMBOLS` int

`IntlChar::BLOCK_CODE_PHONETIC_EXTENSIONS` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS` int

`IntlChar::BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS` int

`IntlChar::BLOCK_CODE_LINEAR_B_SYLLABARY` int

`IntlChar::BLOCK_CODE_LINEAR_B_IDEOGRAMS` int

`IntlChar::BLOCK_CODE_AEGEAN_NUMBERS` int

`IntlChar::BLOCK_CODE_UGARITIC` int

`IntlChar::BLOCK_CODE_SHAVIAN` int

`IntlChar::BLOCK_CODE_OSMANYA` int

`IntlChar::BLOCK_CODE_CYPRIOT_SYLLABARY` int

`IntlChar::BLOCK_CODE_TAI_XUAN_JING_SYMBOLS` int

`IntlChar::BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION` int

`IntlChar::BLOCK_CODE_ANCIENT_GREEK_NUMBERS` int

`IntlChar::BLOCK_CODE_ARABIC_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_BUGINESE` int

`IntlChar::BLOCK_CODE_CJK_STROKES` int

`IntlChar::BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_COPTIC` int

`IntlChar::BLOCK_CODE_ETHIOPIC_EXTENDED` int

`IntlChar::BLOCK_CODE_ETHIOPIC_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_GEORGIAN_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_GLAGOLITIC` int

`IntlChar::BLOCK_CODE_KHAROSHTHI` int

`IntlChar::BLOCK_CODE_MODIFIER_TONE_LETTERS` int

`IntlChar::BLOCK_CODE_NEW_TAI_LUE` int

`IntlChar::BLOCK_CODE_OLD_PERSIAN` int

`IntlChar::BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION` int

`IntlChar::BLOCK_CODE_SYLOTI_NAGRI` int

`IntlChar::BLOCK_CODE_TIFINAGH` int

`IntlChar::BLOCK_CODE_VERTICAL_FORMS` int

`IntlChar::BLOCK_CODE_NKO` int

`IntlChar::BLOCK_CODE_BALINESE` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_C` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_D` int

`IntlChar::BLOCK_CODE_PHAGS_PA` int

`IntlChar::BLOCK_CODE_PHOENICIAN` int

`IntlChar::BLOCK_CODE_CUNEIFORM` int

`IntlChar::BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION` int

`IntlChar::BLOCK_CODE_COUNTING_ROD_NUMERALS` int

`IntlChar::BLOCK_CODE_SUNDANESE` int

`IntlChar::BLOCK_CODE_LEPCHA` int

`IntlChar::BLOCK_CODE_OL_CHIKI` int

`IntlChar::BLOCK_CODE_CYRILLIC_EXTENDED_A` int

`IntlChar::BLOCK_CODE_VAI` int

`IntlChar::BLOCK_CODE_CYRILLIC_EXTENDED_B` int

`IntlChar::BLOCK_CODE_SAURASHTRA` int

`IntlChar::BLOCK_CODE_KAYAH_LI` int

`IntlChar::BLOCK_CODE_REJANG` int

`IntlChar::BLOCK_CODE_CHAM` int

`IntlChar::BLOCK_CODE_ANCIENT_SYMBOLS` int

`IntlChar::BLOCK_CODE_PHAISTOS_DISC` int

`IntlChar::BLOCK_CODE_LYCIAN` int

`IntlChar::BLOCK_CODE_CARIAN` int

`IntlChar::BLOCK_CODE_LYDIAN` int

`IntlChar::BLOCK_CODE_MAHJONG_TILES` int

`IntlChar::BLOCK_CODE_DOMINO_TILES` int

`IntlChar::BLOCK_CODE_SAMARITAN` int

`IntlChar::BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED` int

`IntlChar::BLOCK_CODE_TAI_THAM` int

`IntlChar::BLOCK_CODE_VEDIC_EXTENSIONS` int

`IntlChar::BLOCK_CODE_LISU` int

`IntlChar::BLOCK_CODE_BAMUM` int

`IntlChar::BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS` int

`IntlChar::BLOCK_CODE_DEVANAGARI_EXTENDED` int

`IntlChar::BLOCK_CODE_HANGUL_JAMO_EXTENDED_A` int

`IntlChar::BLOCK_CODE_JAVANESE` int

`IntlChar::BLOCK_CODE_MYANMAR_EXTENDED_A` int

`IntlChar::BLOCK_CODE_TAI_VIET` int

`IntlChar::BLOCK_CODE_MEETEI_MAYEK` int

`IntlChar::BLOCK_CODE_HANGUL_JAMO_EXTENDED_B` int

`IntlChar::BLOCK_CODE_IMPERIAL_ARAMAIC` int

`IntlChar::BLOCK_CODE_OLD_SOUTH_ARABIAN` int

`IntlChar::BLOCK_CODE_AVESTAN` int

`IntlChar::BLOCK_CODE_INSCRIPTIONAL_PARTHIAN` int

`IntlChar::BLOCK_CODE_INSCRIPTIONAL_PAHLAVI` int

`IntlChar::BLOCK_CODE_OLD_TURKIC` int

`IntlChar::BLOCK_CODE_RUMI_NUMERAL_SYMBOLS` int

`IntlChar::BLOCK_CODE_KAITHI` int

`IntlChar::BLOCK_CODE_EGYPTIAN_HIEROGLYPHS` int

`IntlChar::BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C` int

`IntlChar::BLOCK_CODE_MANDAIC` int

`IntlChar::BLOCK_CODE_BATAK` int

`IntlChar::BLOCK_CODE_ETHIOPIC_EXTENDED_A` int

`IntlChar::BLOCK_CODE_BRAHMI` int

`IntlChar::BLOCK_CODE_BAMUM_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_KANA_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_PLAYING_CARDS` int

`IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS` int

`IntlChar::BLOCK_CODE_EMOTICONS` int

`IntlChar::BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS` int

`IntlChar::BLOCK_CODE_ALCHEMICAL_SYMBOLS` int

`IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D` int

`IntlChar::BLOCK_CODE_ARABIC_EXTENDED_A` int

`IntlChar::BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS` int

`IntlChar::BLOCK_CODE_CHAKMA` int

`IntlChar::BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS` int

`IntlChar::BLOCK_CODE_MEROITIC_CURSIVE` int

`IntlChar::BLOCK_CODE_MEROITIC_HIEROGLYPHS` int

`IntlChar::BLOCK_CODE_MIAO` int

`IntlChar::BLOCK_CODE_SHARADA` int

`IntlChar::BLOCK_CODE_SORA_SOMPENG` int

`IntlChar::BLOCK_CODE_SUNDANESE_SUPPLEMENT` int

`IntlChar::BLOCK_CODE_TAKRI` int

`IntlChar::BLOCK_CODE_BASSA_VAH` int

`IntlChar::BLOCK_CODE_CAUCASIAN_ALBANIAN` int

`IntlChar::BLOCK_CODE_COPTIC_EPACT_NUMBERS` int

`IntlChar::BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED` int

`IntlChar::BLOCK_CODE_DUPLOYAN` int

`IntlChar::BLOCK_CODE_ELBASAN` int

`IntlChar::BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED` int

`IntlChar::BLOCK_CODE_GRANTHA` int

`IntlChar::BLOCK_CODE_KHOJKI` int

`IntlChar::BLOCK_CODE_KHUDAWADI` int

`IntlChar::BLOCK_CODE_LATIN_EXTENDED_E` int

`IntlChar::BLOCK_CODE_LINEAR_A` int

`IntlChar::BLOCK_CODE_MAHAJANI` int

`IntlChar::BLOCK_CODE_MANICHAEAN` int

`IntlChar::BLOCK_CODE_MENDE_KIKAKUI` int

`IntlChar::BLOCK_CODE_MODI` int

`IntlChar::BLOCK_CODE_MRO` int

`IntlChar::BLOCK_CODE_MYANMAR_EXTENDED_B` int

`IntlChar::BLOCK_CODE_NABATAEAN` int

`IntlChar::BLOCK_CODE_OLD_NORTH_ARABIAN` int

`IntlChar::BLOCK_CODE_OLD_PERMIC` int

`IntlChar::BLOCK_CODE_ORNAMENTAL_DINGBATS` int

`IntlChar::BLOCK_CODE_PAHAWH_HMONG` int

`IntlChar::BLOCK_CODE_PALMYRENE` int

`IntlChar::BLOCK_CODE_PAU_CIN_HAU` int

`IntlChar::BLOCK_CODE_PSALTER_PAHLAVI` int

`IntlChar::BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS` int

`IntlChar::BLOCK_CODE_SIDDHAM` int

`IntlChar::BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS` int

`IntlChar::BLOCK_CODE_SUPPLEMENTAL_ARROWS_C` int

`IntlChar::BLOCK_CODE_TIRHUTA` int

`IntlChar::BLOCK_CODE_WARANG_CITI` int

`IntlChar::BLOCK_CODE_COUNT` int

`IntlChar::BLOCK_CODE_INVALID_CODE` int

`IntlChar::BPT_NONE` int

`IntlChar::BPT_OPEN` int

`IntlChar::BPT_CLOSE` int

`IntlChar::BPT_COUNT` int

`IntlChar::EA_NEUTRAL` int

`IntlChar::EA_AMBIGUOUS` int

`IntlChar::EA_HALFWIDTH` int

`IntlChar::EA_FULLWIDTH` int

`IntlChar::EA_NARROW` int

`IntlChar::EA_WIDE` int

`IntlChar::EA_COUNT` int

`IntlChar::UNICODE_CHAR_NAME` int

`IntlChar::UNICODE_10_CHAR_NAME` int

`IntlChar::EXTENDED_CHAR_NAME` int

`IntlChar::CHAR_NAME_ALIAS` int

`IntlChar::CHAR_NAME_CHOICE_COUNT` int

`IntlChar::SHORT_PROPERTY_NAME` int

`IntlChar::LONG_PROPERTY_NAME` int

`IntlChar::PROPERTY_NAME_CHOICE_COUNT` int

`IntlChar::DT_NONE` int

`IntlChar::DT_CANONICAL` int

`IntlChar::DT_COMPAT` int

`IntlChar::DT_CIRCLE` int

`IntlChar::DT_FINAL` int

`IntlChar::DT_FONT` int

`IntlChar::DT_FRACTION` int

`IntlChar::DT_INITIAL` int

`IntlChar::DT_ISOLATED` int

`IntlChar::DT_MEDIAL` int

`IntlChar::DT_NARROW` int

`IntlChar::DT_NOBREAK` int

`IntlChar::DT_SMALL` int

`IntlChar::DT_SQUARE` int

`IntlChar::DT_SUB` int

`IntlChar::DT_SUPER` int

`IntlChar::DT_VERTICAL` int

`IntlChar::DT_WIDE` int

`IntlChar::DT_COUNT` int

`IntlChar::JT_NON_JOINING` int

`IntlChar::JT_JOIN_CAUSING` int

`IntlChar::JT_DUAL_JOINING` int

`IntlChar::JT_LEFT_JOINING` int

`IntlChar::JT_RIGHT_JOINING` int

`IntlChar::JT_TRANSPARENT` int

`IntlChar::JT_COUNT` int

`IntlChar::JG_NO_JOINING_GROUP` int

`IntlChar::JG_AIN` int

`IntlChar::JG_ALAPH` int

`IntlChar::JG_ALEF` int

`IntlChar::JG_BEH` int

`IntlChar::JG_BETH` int

`IntlChar::JG_DAL` int

`IntlChar::JG_DALATH_RISH` int

`IntlChar::JG_E` int

`IntlChar::JG_FEH` int

`IntlChar::JG_FINAL_SEMKATH` int

`IntlChar::JG_GAF` int

`IntlChar::JG_GAMAL` int

`IntlChar::JG_HAH` int

`IntlChar::JG_TEH_MARBUTA_GOAL` int

`IntlChar::JG_HAMZA_ON_HEH_GOAL` int

`IntlChar::JG_HE` int

`IntlChar::JG_HEH` int

`IntlChar::JG_HEH_GOAL` int

`IntlChar::JG_HETH` int

`IntlChar::JG_KAF` int

`IntlChar::JG_KAPH` int

`IntlChar::JG_KNOTTED_HEH` int

`IntlChar::JG_LAM` int

`IntlChar::JG_LAMADH` int

`IntlChar::JG_MEEM` int

`IntlChar::JG_MIM` int

`IntlChar::JG_NOON` int

`IntlChar::JG_NUN` int

`IntlChar::JG_PE` int

`IntlChar::JG_QAF` int

`IntlChar::JG_QAPH` int

`IntlChar::JG_REH` int

`IntlChar::JG_REVERSED_PE` int

`IntlChar::JG_SAD` int

`IntlChar::JG_SADHE` int

`IntlChar::JG_SEEN` int

`IntlChar::JG_SEMKATH` int

`IntlChar::JG_SHIN` int

`IntlChar::JG_SWASH_KAF` int

`IntlChar::JG_SYRIAC_WAW` int

`IntlChar::JG_TAH` int

`IntlChar::JG_TAW` int

`IntlChar::JG_TEH_MARBUTA` int

`IntlChar::JG_TETH` int

`IntlChar::JG_WAW` int

`IntlChar::JG_YEH` int

`IntlChar::JG_YEH_BARREE` int

`IntlChar::JG_YEH_WITH_TAIL` int

`IntlChar::JG_YUDH` int

`IntlChar::JG_YUDH_HE` int

`IntlChar::JG_ZAIN` int

`IntlChar::JG_FE` int

`IntlChar::JG_KHAPH` int

`IntlChar::JG_ZHAIN` int

`IntlChar::JG_BURUSHASKI_YEH_BARREE` int

`IntlChar::JG_FARSI_YEH` int

`IntlChar::JG_NYA` int

`IntlChar::JG_ROHINGYA_YEH` int

`IntlChar::JG_MANICHAEAN_ALEPH` int

`IntlChar::JG_MANICHAEAN_AYIN` int

`IntlChar::JG_MANICHAEAN_BETH` int

`IntlChar::JG_MANICHAEAN_DALETH` int

`IntlChar::JG_MANICHAEAN_DHAMEDH` int

`IntlChar::JG_MANICHAEAN_FIVE` int

`IntlChar::JG_MANICHAEAN_GIMEL` int

`IntlChar::JG_MANICHAEAN_HETH` int

`IntlChar::JG_MANICHAEAN_HUNDRED` int

`IntlChar::JG_MANICHAEAN_KAPH` int

`IntlChar::JG_MANICHAEAN_LAMEDH` int

`IntlChar::JG_MANICHAEAN_MEM` int

`IntlChar::JG_MANICHAEAN_NUN` int

`IntlChar::JG_MANICHAEAN_ONE` int

`IntlChar::JG_MANICHAEAN_PE` int

`IntlChar::JG_MANICHAEAN_QOPH` int

`IntlChar::JG_MANICHAEAN_RESH` int

`IntlChar::JG_MANICHAEAN_SADHE` int

`IntlChar::JG_MANICHAEAN_SAMEKH` int

`IntlChar::JG_MANICHAEAN_TAW` int

`IntlChar::JG_MANICHAEAN_TEN` int

`IntlChar::JG_MANICHAEAN_TETH` int

`IntlChar::JG_MANICHAEAN_THAMEDH` int

`IntlChar::JG_MANICHAEAN_TWENTY` int

`IntlChar::JG_MANICHAEAN_WAW` int

`IntlChar::JG_MANICHAEAN_YODH` int

`IntlChar::JG_MANICHAEAN_ZAYIN` int

`IntlChar::JG_STRAIGHT_WAW` int

`IntlChar::JG_COUNT` int

`IntlChar::GCB_OTHER` int

`IntlChar::GCB_CONTROL` int

`IntlChar::GCB_CR` int

`IntlChar::GCB_EXTEND` int

`IntlChar::GCB_L` int

`IntlChar::GCB_LF` int

`IntlChar::GCB_LV` int

`IntlChar::GCB_LVT` int

`IntlChar::GCB_T` int

`IntlChar::GCB_V` int

`IntlChar::GCB_SPACING_MARK` int

`IntlChar::GCB_PREPEND` int

`IntlChar::GCB_REGIONAL_INDICATOR` int

`IntlChar::GCB_COUNT` int

`IntlChar::WB_OTHER` int

`IntlChar::WB_ALETTER` int

`IntlChar::WB_FORMAT` int

`IntlChar::WB_KATAKANA` int

`IntlChar::WB_MIDLETTER` int

`IntlChar::WB_MIDNUM` int

`IntlChar::WB_NUMERIC` int

`IntlChar::WB_EXTENDNUMLET` int

`IntlChar::WB_CR` int

`IntlChar::WB_EXTEND` int

`IntlChar::WB_LF` int

`IntlChar::WB_MIDNUMLET` int

`IntlChar::WB_NEWLINE` int

`IntlChar::WB_REGIONAL_INDICATOR` int

`IntlChar::WB_HEBREW_LETTER` int

`IntlChar::WB_SINGLE_QUOTE` int

`IntlChar::WB_DOUBLE_QUOTE` int

`IntlChar::WB_COUNT` int

`IntlChar::SB_OTHER` int

`IntlChar::SB_ATERM` int

`IntlChar::SB_CLOSE` int

`IntlChar::SB_FORMAT` int

`IntlChar::SB_LOWER` int

`IntlChar::SB_NUMERIC` int

`IntlChar::SB_OLETTER` int

`IntlChar::SB_SEP` int

`IntlChar::SB_SP` int

`IntlChar::SB_STERM` int

`IntlChar::SB_UPPER` int

`IntlChar::SB_CR` int

`IntlChar::SB_EXTEND` int

`IntlChar::SB_LF` int

`IntlChar::SB_SCONTINUE` int

`IntlChar::SB_COUNT` int

`IntlChar::LB_UNKNOWN` int

`IntlChar::LB_AMBIGUOUS` int

`IntlChar::LB_ALPHABETIC` int

`IntlChar::LB_BREAK_BOTH` int

`IntlChar::LB_BREAK_AFTER` int

`IntlChar::LB_BREAK_BEFORE` int

`IntlChar::LB_MANDATORY_BREAK` int

`IntlChar::LB_CONTINGENT_BREAK` int

`IntlChar::LB_CLOSE_PUNCTUATION` int

`IntlChar::LB_COMBINING_MARK` int

`IntlChar::LB_CARRIAGE_RETURN` int

`IntlChar::LB_EXCLAMATION` int

`IntlChar::LB_GLUE` int

`IntlChar::LB_HYPHEN` int

`IntlChar::LB_IDEOGRAPHIC` int

`IntlChar::LB_INSEPARABLE` int

`IntlChar::LB_INSEPERABLE` int

`IntlChar::LB_INFIX_NUMERIC` int

`IntlChar::LB_LINE_FEED` int

`IntlChar::LB_NONSTARTER` int

`IntlChar::LB_NUMERIC` int

`IntlChar::LB_OPEN_PUNCTUATION` int

`IntlChar::LB_POSTFIX_NUMERIC` int

`IntlChar::LB_PREFIX_NUMERIC` int

`IntlChar::LB_QUOTATION` int

`IntlChar::LB_COMPLEX_CONTEXT` int

`IntlChar::LB_SURROGATE` int

`IntlChar::LB_SPACE` int

`IntlChar::LB_BREAK_SYMBOLS` int

`IntlChar::LB_ZWSPACE` int

`IntlChar::LB_NEXT_LINE` int

`IntlChar::LB_WORD_JOINER` int

`IntlChar::LB_H2` int

`IntlChar::LB_H3` int

`IntlChar::LB_JL` int

`IntlChar::LB_JT` int

`IntlChar::LB_JV` int

`IntlChar::LB_CLOSE_PARENTHESIS` int

`IntlChar::LB_CONDITIONAL_JAPANESE_STARTER` int

`IntlChar::LB_HEBREW_LETTER` int

`IntlChar::LB_REGIONAL_INDICATOR` int

`IntlChar::LB_COUNT` int

`IntlChar::NT_NONE` int

`IntlChar::NT_DECIMAL` int

`IntlChar::NT_DIGIT` int

`IntlChar::NT_NUMERIC` int

`IntlChar::NT_COUNT` int

`IntlChar::HST_NOT_APPLICABLE` int

`IntlChar::HST_LEADING_JAMO` int

`IntlChar::HST_VOWEL_JAMO` int

`IntlChar::HST_TRAILING_JAMO` int

`IntlChar::HST_LV_SYLLABLE` int

`IntlChar::HST_LVT_SYLLABLE` int

`IntlChar::HST_COUNT` int

`IntlChar::FOLD_CASE_DEFAULT` int

`IntlChar::FOLD_CASE_EXCLUDE_SPECIAL_I` int

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Added `IntlChar::PROPERTY_IDS_UNARY_OPERATOR`, `IntlChar::PROPERTY_ID_COMPAT_MATH_START`, `IntlChar::PROPERTY_ID_COMPAT_MATH_CONTINUE`.
8.4.0 | The class constants are now typed.
7.0.6 | The `IntlChar::NO_NUMERIC_VALUE` constant was added.

# IntlChar::charAge

(PHP 7, PHP 8)

IntlChar::charAge — Get the "age" of the code point

### Açıklama

public static function IntlChar::charAge(int|string `$codepoint`): ?array

Gets the "age" of the code point.

The "age" is the Unicode version when the code point was first designated (as a non-character or for Private Use) or assigned a character. This can be useful to avoid emitting code points to receiving processes that do not accept newer characters.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

The Unicode version number, as an array. For example, version 1.3.31.2 would be represented as `[1, 3, 31, 2]`. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charage("\u{2603}"));
    var_dump(IntlChar::charage("\u{1F576}"));
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      int(1)
      [1]=>
      int(1)
      [2]=>
      int(0)
      [3]=>
      int(0)
    }
    array(4) {
      [0]=>
      int(7)
      [1]=>
      int(0)
      [2]=>
      int(0)
      [3]=>
      int(0)
    }

### Ayrıca Bakınız

- IntlChar::getUnicodeVersion() - Get the Unicode version
- IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
- IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point

# IntlChar::charDigitValue

(PHP 7, PHP 8)

IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character

### Açıklama

public static function IntlChar::charDigitValue(int|string `$codepoint`): ?int

Returns the decimal digit value of a decimal digit character.

Such characters have the general category "Nd" (decimal digit numbers) and a Numeric_Type of Decimal.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

The decimal digit value of `codepoint`, or `-1` if it is not a decimal digit character. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charDigitValue("1"));
    var_dump(IntlChar::charDigitValue("\u{0662}"));
    var_dump(IntlChar::charDigitValue("\u{0E53}"));
    ?>

Yukarıdaki örneğin çıktısı:

    int(1)
    int(2)
    int(3)

### Ayrıca Bakınız

- IntlChar::getNumericValue() - Get the numeric value for a Unicode code point

# IntlChar::charDirection

(PHP 7, PHP 8)

IntlChar::charDirection — Get bidirectional category value for a code point

### Açıklama

public static function IntlChar::charDirection(int|string `$codepoint`): ?int

Returns the bidirectional category value for the code point, which is used in the » Unicode bidirectional algorithm (UAX #9).

> Bilginize:

> Some unassigned code points have bidi values of R or AL because they are in blocks that are reserved for Right-To-Left scripts.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

The bidirectional category value; one of the following constants:

- `IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT`
- `IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT`
- `IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER`
- `IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR`
- `IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR`
- `IntlChar::CHAR_DIRECTION_ARABIC_NUMBER`
- `IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR`
- `IntlChar::CHAR_DIRECTION_BLOCK_SEPARATOR`
- `IntlChar::CHAR_DIRECTION_SEGMENT_SEPARATOR`
- `IntlChar::CHAR_DIRECTION_WHITE_SPACE_NEUTRAL`
- `IntlChar::CHAR_DIRECTION_OTHER_NEUTRAL`
- `IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING`
- `IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE`
- `IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC`
- `IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING`
- `IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE`
- `IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT`
- `IntlChar::CHAR_DIRECTION_DIR_NON_SPACING_MARK`
- `IntlChar::CHAR_DIRECTION_BOUNDARY_NEUTRAL`
- `IntlChar::CHAR_DIRECTION_FIRST_STRONG_ISOLATE`
- `IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE`
- `IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE`
- `IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE`
- `IntlChar::CHAR_DIRECTION_CHAR_DIRECTION_COUNT`

Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charDirection("A") === IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT);
    var_dump(IntlChar::charDirection("\u{05E9}") === IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT);
    var_dump(IntlChar::charDirection("+") === IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR);
    var_dump(IntlChar::charDirection(".") === IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(true)

# IntlChar::charFromName

(PHP 7, PHP 8)

IntlChar::charFromName — Find Unicode character by name and return its code point value

### Açıklama

public static function IntlChar::charFromName(string `$name`, int `$type` = `IntlChar::UNICODE_CHAR_NAME`): ?int

Finds a Unicode character by its name and returns its code point value.

The name is matched exactly and completely. If the name does not correspond to a code point, `null` is returned.

A Unicode 1.0 name is matched only if it differs from the modern name. Unicode names are all uppercase. Extended names are lowercase followed by an uppercase hexadecimal number, and within angle brackets.

### Bağımsız Değişkenler

`name`

  Full name of the Unicode character.

`type`

  Which set of names to use for the lookup. Can be any of these constants:

  - `IntlChar::UNICODE_CHAR_NAME` (default)
  - `IntlChar::UNICODE_10_CHAR_NAME`
  - `IntlChar::EXTENDED_CHAR_NAME`
  - `IntlChar::CHAR_NAME_ALIAS`
  - `IntlChar::CHAR_NAME_CHOICE_COUNT`

### Dönen Değerler

The Unicode value of the code point with the given name (as an int), or `null` if there is no such code point.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charFromName("LATIN CAPITAL LETTER A"));
    var_dump(IntlChar::charFromName("SNOWMAN"));
    var_dump(IntlChar::charFromName("RECYCLING SYMBOL FOR TYPE-1 PLASTICS"));
    var_dump(IntlChar::charFromName("A RANDOM STRING WHICH DOESN'T CORRESPOND TO ANY UNICODE CHARACTER"));
    ?>

Yukarıdaki örneğin çıktısı:

    int(65)
    int(9731)
    int(9843)
    NULL

### Ayrıca Bakınız

- IntlChar::charName() - Retrieve the name of a Unicode character
- IntlChar::enumCharNames() - Enumerate all assigned Unicode characters within a range

# IntlChar::charMirror

(PHP 7, PHP 8)

IntlChar::charMirror — Get the "mirror-image" character for a code point

### Açıklama

public static function IntlChar::charMirror(int|string `$codepoint`): int|string|null

Maps the specified character to a "mirror-image" character.

For characters with the Bidi_Mirrored property, implementations sometimes need a "poor man's" mapping to another Unicode character (code point) such that the default glyph may serve as the mirror-image of the default glyph of the specified character. This is useful for text conversion to and from codepages with visual order, and for displays without glyph selection capabilities.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns another Unicode code point that may serve as a mirror-image substitute, or `codepoint` itself if there is no such mapping or `codepoint` does not have the Bidi_Mirrored property.

Unicode karakter kodu string türünde ise dönüş türü string, Unicode karakter kodu int türündeyse dönüş türü int olacaktır. Başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charMirror("A"));
    var_dump(IntlChar::charMirror("<"));
    var_dump(IntlChar::charMirror("("));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "A"
    string(1) ">"
    string(2) ")"

### Ayrıca Bakınız

- IntlChar::isMirrored() - Check if code point has the Bidi_Mirrored property
- `IntlChar::PROPERTY_BIDI_MIRRORED`

# IntlChar::charName

(PHP 7, PHP 8)

IntlChar::charName — Retrieve the name of a Unicode character

### Açıklama

public static function IntlChar::charName(int|string `$codepoint`, int `$type` = `IntlChar::UNICODE_CHAR_NAME`): ?string

Retrieves the name of a Unicode character.

Depending on `type`, the resulting character name is the "modern" name or the name that was defined in Unicode version 1.0. The name contains only "invariant" characters like A-Z, 0-9, space, and '-'. Unicode 1.0 names are only retrieved if they are different from the modern names and if ICU contains the data for them.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

`type`

  Which set of names to use for the lookup. Can be any of these constants:

  - `IntlChar::UNICODE_CHAR_NAME` (default)
  - `IntlChar::UNICODE_10_CHAR_NAME`
  - `IntlChar::EXTENDED_CHAR_NAME`
  - `IntlChar::CHAR_NAME_ALIAS`
  - `IntlChar::CHAR_NAME_CHOICE_COUNT`

### Dönen Değerler

The corresponding name, or an empty string if there is no name for this character, or `null` if there is no such code point.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charName("."));
    var_dump(IntlChar::charName(".", IntlChar::UNICODE_CHAR_NAME));
    var_dump(IntlChar::charName("\u{2603}"));
    var_dump(IntlChar::charName("\u{0000}"));
    ?>

Yukarıdaki örneğin çıktısı:

    string(9) "FULL STOP"
    string(9) "FULL STOP"
    string(7) "SNOWMAN"
    string(0) ""

### Ayrıca Bakınız

- IntlChar::charFromName() - Find Unicode character by name and return its code point value
- IntlChar::enumCharNames() - Enumerate all assigned Unicode characters within a range

# IntlChar::charType

(PHP 7, PHP 8)

IntlChar::charType — Get the general category value for a code point

### Açıklama

public static function IntlChar::charType(int|string `$codepoint`): ?int

Returns the general category value for the code point.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the general category type, which may be one of the following constants:

- `IntlChar::CHAR_CATEGORY_UNASSIGNED`
- `IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES`
- `IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER`
- `IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER`
- `IntlChar::CHAR_CATEGORY_TITLECASE_LETTER`
- `IntlChar::CHAR_CATEGORY_MODIFIER_LETTER`
- `IntlChar::CHAR_CATEGORY_OTHER_LETTER`
- `IntlChar::CHAR_CATEGORY_NON_SPACING_MARK`
- `IntlChar::CHAR_CATEGORY_ENCLOSING_MARK`
- `IntlChar::CHAR_CATEGORY_COMBINING_SPACING_MARK`
- `IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER`
- `IntlChar::CHAR_CATEGORY_LETTER_NUMBER`
- `IntlChar::CHAR_CATEGORY_OTHER_NUMBER`
- `IntlChar::CHAR_CATEGORY_SPACE_SEPARATOR`
- `IntlChar::CHAR_CATEGORY_LINE_SEPARATOR`
- `IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR`
- `IntlChar::CHAR_CATEGORY_CONTROL_CHAR`
- `IntlChar::CHAR_CATEGORY_FORMAT_CHAR`
- `IntlChar::CHAR_CATEGORY_PRIVATE_USE_CHAR`
- `IntlChar::CHAR_CATEGORY_SURROGATE`
- `IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_START_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_END_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_CONNECTOR_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_MATH_SYMBOL`
- `IntlChar::CHAR_CATEGORY_CURRENCY_SYMBOL`
- `IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL`
- `IntlChar::CHAR_CATEGORY_OTHER_SYMBOL`
- `IntlChar::CHAR_CATEGORY_INITIAL_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_FINAL_PUNCTUATION`
- `IntlChar::CHAR_CATEGORY_CHAR_CATEGORY_COUNT`

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::charType("A") === IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER);
    var_dump(IntlChar::charType(".") === IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION);
    var_dump(IntlChar::charType("\t") === IntlChar::CHAR_CATEGORY_CONTROL_CHAR);
    var_dump(IntlChar::charType("\u{2603}") === IntlChar::CHAR_CATEGORY_OTHER_SYMBOL);
    var_dump(IntlChar::charType("multiple chars") === null);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(true)
    bool(true)

# IntlChar::chr

(PHP 7, PHP 8)

IntlChar::chr — Return Unicode character by code point value

### Açıklama

public static function IntlChar::chr(int|string `$codepoint`): ?string

Returns a string containing the character specified by the Unicode code point value.

This method complements IntlChar::ord().

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

A string containing the single character specified by the Unicode code point value, or `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    $values = ["A", 63, 123, 9731];
    foreach ($values as $value) {
        var_dump(IntlChar::chr($value));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "A"
    string(1) "?"
    string(1) "{"
    string(3) "☃"

### Ayrıca Bakınız

- IntlChar::ord() - Return Unicode code point value of character
- mb_chr() - Unicode karakter koduna göre karakteri döndürür
- chr() - Bir sayıdan tek baytlık dizge üretir

# IntlChar::digit

(PHP 7, PHP 8)

IntlChar::digit — Get the decimal digit value of a code point for a given radix

### Açıklama

public static function IntlChar::digit(int|string `$codepoint`, int `$base` = 10): int|false|null

Returns the decimal digit value of the code point in the specified radix.

If the radix is not in the range `2 <= radix <= 36` or if the value of `codepoint` is not a valid digit in the specified radix, `false` is returned. A character is a valid digit if at least one of the following is true:

- The character has a decimal digit value. Such characters have the general category "Nd" (decimal digit numbers) and a Numeric_Type of "Decimal". In this case the value is the character's decimal digit value.
- The character is one of the uppercase Latin letters `'A'` through `'Z'`. In this case the value is `codepoint - 'A' + 10`.
- The character is one of the lowercase Latin letters `'a'` through `'z'`. In this case the value is `codepoint - 'a' + 10`.
- Latin letters from both the ASCII range (`0061..007A`, `0041..005A`) as well as from the Fullwidth ASCII range (`FF41..FF5A`, `FF21..FF3A`) are recognized.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

`base`

  The radix (defaults to `10`).

### Dönen Değerler

Returns the numeric value represented by the character in the specified radix, or `false` if there is no value or if the value exceeds the radix. Returns `null` on failure.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php

    var_dump(IntlChar::digit("0"));
    var_dump(IntlChar::digit("3"));

    var_dump(IntlChar::digit("A", 16));
    var_dump(IntlChar::digit("A"));

    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(3)
    int(10)
    bool(false)

### Ayrıca Bakınız

- IntlChar::forDigit() - Get character representation for a given digit and radix
- IntlChar::charDigitValue() - Get the decimal digit value of a decimal digit character
- IntlChar::isdigit() - Check if code point is a digit character
- `IntlChar::PROPERTY_NUMERIC_TYPE`

# IntlChar::enumCharNames

(PHP 7, PHP 8)

IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range

### Açıklama

public static function IntlChar::enumCharNames(
int|string `$start`,
int|string `$end`,
callable `$callback`,
int `$type` = `IntlChar::UNICODE_CHAR_NAME`
): bool

Enumerate all assigned Unicode characters between the start and limit code points (start inclusive, limit exclusive) and call a function for each, passing the code point value and the character name.

For Unicode 1.0 names, only those are enumerated that differ from the modern names.

### Bağımsız Değişkenler

`start`

  The first code point in the enumeration range.

`end`

  One more than the last code point in the enumeration range (the first one after the range).

`callback`

  The function that is to be called for each character name. The following three arguments will be passed into it:

  - int `$codepoint` - The numeric code point value
  - int `$nameChoice` - The same value as the `type` parameter below
  - string `$name` - The name of the character
`type`

  Selector for which kind of names to enumerate. Can be any of these constants:

  - `IntlChar::UNICODE_CHAR_NAME` (default)
  - `IntlChar::UNICODE_10_CHAR_NAME`
  - `IntlChar::EXTENDED_CHAR_NAME`
  - `IntlChar::CHAR_NAME_ALIAS`
  - `IntlChar::CHAR_NAME_CHOICE_COUNT`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | This method now returns `false` on failure; previously it returns `null`.

### Örnekler

Örnek 1 Enumerating over a sample range of code points

    <?php
    IntlChar::enumCharNames(0x2600, 0x2610, function($codepoint, $nameChoice, $name) {
        printf("U+%04x %s\n", $codepoint, $name);
    });
    ?>

Yukarıdaki örneğin çıktısı:

    U+2600 BLACK SUN WITH RAYS
    U+2601 CLOUD
    U+2602 UMBRELLA
    U+2603 SNOWMAN
    U+2604 COMET
    U+2605 BLACK STAR
    U+2606 WHITE STAR
    U+2607 LIGHTNING
    U+2608 THUNDERSTORM
    U+2609 SUN
    U+260a ASCENDING NODE
    U+260b DESCENDING NODE
    U+260c CONJUNCTION
    U+260d OPPOSITION
    U+260e BLACK TELEPHONE
    U+260f WHITE TELEPHONE

### Ayrıca Bakınız

- IntlChar::charName() - Retrieve the name of a Unicode character
- IntlChar::charFromName() - Find Unicode character by name and return its code point value

# IntlChar::enumCharTypes

(PHP 7, PHP 8)

IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories

### Açıklama

public static function IntlChar::enumCharTypes(callable `$callback`): void

Enumerates efficiently all code points with their Unicode general categories. This is useful for building data structures, for enumerating all assigned code points, etc.

For each contiguous range of code points with a given general category ("character type"), the `callback` function is called. Adjacent ranges have different types. The Unicode Standard guarantees that the numeric value of the type is 0..31.

### Bağımsız Değişkenler

`callback`

  The function that is to be called for each contiguous range of code points with the same general category. The following three arguments will be passed into it:

  - int `$start` - The starting code point of the range
  - int `$end` - The ending code point of the range
  - int `$name` - The category type (one of the `IntlChar::CHAR_CATEGORY_*` constants)

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Enumerating over a sample range of code points

    <?php
    IntlChar::enumCharTypes(function($start, $end, $type) {
        printf("U+%04x through U+%04x are in category %d\n", $start, $end, $type);
    });
    ?>

Yukarıdaki örneğin çıktısı:

    U+0000 through U+0020 are in category 15
    U+0020 through U+0021 are in category 12
    U+0021 through U+0024 are in category 23
    U+0024 through U+0025 are in category 25
    U+0025 through U+0028 are in category 23
    U+0028 through U+0029 are in category 20
    U+0029 through U+002a are in category 21
    U+002a through U+002b are in category 23
    U+002b through U+002c are in category 24
    U+002c through U+002d are in category 23
    U+002d through U+002e are in category 19
    U+002e through U+0030 are in category 23
    U+0030 through U+003a are in category 9
    ...

# IntlChar::foldCase

(PHP 7, PHP 8)

IntlChar::foldCase — Perform case folding on a code point

### Açıklama

public static function IntlChar::foldCase(int|string `$codepoint`, int `$options` = `IntlChar::FOLD_CASE_DEFAULT`): int|string|null

The given character is mapped to its case folding equivalent; if the character has no case folding equivalent, the character itself is returned.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

`options`

  Either `IntlChar::FOLD_CASE_DEFAULT` (default) or `IntlChar::FOLD_CASE_EXCLUDE_SPECIAL_I`.

### Dönen Değerler

Returns the Simple_Case_Folding of the code point, if any; otherwise the code point itself on success, or `null` on failure.

# IntlChar::forDigit

(PHP 7, PHP 8)

IntlChar::forDigit — Get character representation for a given digit and radix

### Açıklama

public static function IntlChar::forDigit(int `$digit`, int `$base` = 10): int

Determines the character representation for a specific digit in the specified radix.

If the value of radix is not a valid radix, or the value of digit is not a valid digit in the specified radix, the null character (`U+0000`) is returned.

The radix argument is valid if it is greater than or equal to `2` and less than or equal to `36`. The digit argument is valid if `0 <= digit < radix`.

If the digit is less than `10`, then '0' + digit is returned. Otherwise, the value 'a' + digit - 10 is returned.

### Bağımsız Değişkenler

`digit`

  The number to convert to a character.

`base`

  The radix (defaults to `10`).

### Dönen Değerler

The character representation (as a int) of the specified digit in the specified radix.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::forDigit(0));
    var_dump(IntlChar::forDigit(3));
    var_dump(IntlChar::forDigit(3, 10));
    var_dump(IntlChar::forDigit(10));
    var_dump(IntlChar::forDigit(10, 16));
    ?>

Yukarıdaki örneğin çıktısı:

    int(48)
    int(51)
    int(51)
    int(0)
    int(97)

### Ayrıca Bakınız

- IntlChar::digit() - Get the decimal digit value of a code point for a given radix
- IntlChar::charDigitValue() - Get the decimal digit value of a decimal digit character
- IntlChar::isdigit() - Check if code point is a digit character
- `IntlChar::PROPERTY_NUMERIC_TYPE`

# IntlChar::getBidiPairedBracket

(PHP 7, PHP 8)

IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point

### Açıklama

public static function IntlChar::getBidiPairedBracket(int|string `$codepoint`): int|string|null

Maps the specified character to its paired bracket character.

For `IntlChar::PROPERTY_BIDI_PAIRED_BRACKET_TYPE !== IntlChar::BPT_NONE`, this is the same as IntlChar::charMirror(). Otherwise `codepoint` itself is returned.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the paired bracket code point, or `codepoint` itself if there is no such mapping. Returns `null` on failure.

Unicode karakter kodu string türünde ise dönüş türü string, Unicode karakter kodu int türündeyse dönüş türü int olacaktır. Başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::getBidiPairedBracket(91));
    var_dump(IntlChar::getBidiPairedBracket('['));
    ?>

Yukarıdaki örneğin çıktısı:

    int(93)
    string(1) "]"

### Notlar

> Bilginize:

> This method is available as of ICU version 52.

### Ayrıca Bakınız

- IntlChar::charMirror() - Get the "mirror-image" character for a code point
- `IntlChar::PROPERTY_BIDI_PAIRED_BRACKET`
- `IntlChar::PROPERTY_BIDI_PAIRED_BRACKET_TYPE`

# IntlChar::getBlockCode

(PHP 7, PHP 8)

IntlChar::getBlockCode — Get the Unicode allocation block containing a code point

### Açıklama

public static function IntlChar::getBlockCode(int|string `$codepoint`): ?int

Returns the Unicode allocation block that contains the character.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the block value for `codepoint`. See the `IntlChar::BLOCK_CODE_*` constants for possible return values. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::getBlockCode("A") === IntlChar::BLOCK_CODE_BASIC_LATIN);
    var_dump(IntlChar::getBlockCode("Φ") === IntlChar::BLOCK_CODE_GREEK);
    var_dump(IntlChar::getBlockCode("\u{2603}") === IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)

# IntlChar::getCombiningClass

(PHP 7, PHP 8)

IntlChar::getCombiningClass — Get the combining class of a code point

### Açıklama

public static function IntlChar::getCombiningClass(int|string `$codepoint`): ?int

Returns the combining class of the code point.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the combining class of the character. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::getCombiningClass("A"));
    var_dump(IntlChar::getCombiningClass("\u{0334}"));
    var_dump(IntlChar::getCombiningClass("\u{0358}"));
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(1)
    int(232)

# IntlChar::getFC_NFKC_Closure

(PHP 7, PHP 8)

IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point

### Açıklama

public static function IntlChar::getFC_NFKC_Closure(int|string `$codepoint`): string|false|null

Gets the FC_NFKC_Closure property string for a character.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the FC_NFKC_Closure property string for the `codepoint`, or an empty string if there is none. Returns `null` or `false` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::getFC_NFKC_Closure("\u{2121}"));
    var_dump(IntlChar::getFC_NFKC_Closure("\u{1D2D}"));
    ?>

Yukarıdaki örneğin çıktısı:

    string(3) "tel"
    string(2) "æ"

# IntlChar::getIntPropertyMaxValue

(PHP 7, PHP 8)

IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property

### Açıklama

public static function IntlChar::getIntPropertyMaxValue(int `$property`): int

Gets the maximum value for an enumerated/integer/binary Unicode property.

### Bağımsız Değişkenler

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

### Dönen Değerler

The maximum value returned by IntlChar::getIntPropertyValue() for a Unicode property. `<=0` if the property selector is out of range.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_BIDI_CLASS));
    var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_SCRIPT));
    var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_IDEOGRAPHIC));
    var_dump(IntlChar::getIntPropertyMaxValue(999999999)); // Some made-up value
    ?>

Yukarıdaki örneğin çıktısı:

    int(22)
    int(166)
    int(1)
    int(-1)

### Ayrıca Bakınız

- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
- IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
- IntlChar::getUnicodeVersion() - Get the Unicode version

# IntlChar::getIntPropertyMinValue

(PHP 7, PHP 8)

IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property

### Açıklama

public static function IntlChar::getIntPropertyMinValue(int `$property`): int

Gets the minimum value for an enumerated/integer/binary Unicode property.

### Bağımsız Değişkenler

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

### Dönen Değerler

The minimum value returned by IntlChar::getIntPropertyValue() for a Unicode property. `0` if the property selector is out of range.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_BIDI_CLASS));
    var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_SCRIPT));
    var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_IDEOGRAPHIC));
    var_dump(IntlChar::getIntPropertyMinValue(999999999)); // Some made-up value
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(0)
    int(0)
    int(0)

### Ayrıca Bakınız

- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- IntlChar::getIntPropertyMaxValue() - Get the max value for a Unicode property
- IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
- IntlChar::getUnicodeVersion() - Get the Unicode version

# IntlChar::getIntPropertyValue

(PHP 7, PHP 8)

IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point

### Açıklama

public static function IntlChar::getIntPropertyValue(int|string `$codepoint`, int `$property`): ?int

Gets the property value for an enumerated or integer Unicode property for a code point. Also returns binary and mask property values.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

### Dönen Değerler

Returns the numeric value that is directly the property value or, for enumerated properties, corresponds to the numeric value of the enumerated constant of the respective property value enumeration type. Returns `null` on failure.

Returns `0` or `1` (for `false`/`true`) for binary Unicode properties.

Returns a bit-mask for mask properties.

Returns `0` if `property` is out of bounds or if the Unicode version does not have data for the property at all, or not for this code point.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getIntPropertyValue("A", IntlChar::PROPERTY_ALPHABETIC) === 1);
    var_dump(IntlChar::getIntPropertyValue("[", IntlChar::PROPERTY_BIDI_MIRRORED) === 1);
    var_dump(IntlChar::getIntPropertyValue("Φ", IntlChar::PROPERTY_BLOCK) === IntlChar::BLOCK_CODE_GREEK);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
- IntlChar::getIntPropertyMaxValue() - Get the max value for a Unicode property
- IntlChar::getUnicodeVersion() - Get the Unicode version

# IntlChar::getNumericValue

(PHP 7, PHP 8)

IntlChar::getNumericValue — Get the numeric value for a Unicode code point

### Açıklama

public static function IntlChar::getNumericValue(int|string `$codepoint`): ?float

Gets the numeric value for a Unicode code point as defined in the Unicode Character Database.

For characters without any numeric values in the Unicode Character Database, this function will return `IntlChar::NO_NUMERIC_VALUE`.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Numeric value of `codepoint`, or `IntlChar::NO_NUMERIC_VALUE` if none is defined. This constant was added in PHP 7.0.6, prior to this version the literal value (float)`-123456789` may be used instead. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::getNumericValue("4"));
    var_dump(IntlChar::getNumericValue("x"));
    var_dump(IntlChar::getNumericValue("\u{216C}"));
    ?>

Yukarıdaki örneğin çıktısı:

    float(4)
    float(-123456789)
    float(50)

# IntlChar::getPropertyEnum

(PHP 7, PHP 8)

IntlChar::getPropertyEnum — Get the property constant value for a given property name

### Açıklama

public static function IntlChar::getPropertyEnum(string `$alias`): int

Returns the property constant value for a given property name, as specified in the Unicode database file PropertyAliases.txt. Short, long, and any other variants are recognized.

In addition, this function maps the synthetic names "gcm" / "General_Category_Mask" to the property `IntlChar::PROPERTY_GENERAL_CATEGORY_MASK`. These names are not in PropertyAliases.txt.

This function complements IntlChar::getPropertyName().

### Bağımsız Değişkenler

`alias`

  The property name to be matched. The name is compared using "loose matching" as described in PropertyAliases.txt.

### Dönen Değerler

Returns an `IntlChar::PROPERTY_` constant value, or `IntlChar::PROPERTY_INVALID_CODE` if the given name does not match any property.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getPropertyEnum('Bidi_Class') === IntlChar::PROPERTY_BIDI_CLASS);
    var_dump(IntlChar::getPropertyEnum('script') === IntlChar::PROPERTY_SCRIPT);
    var_dump(IntlChar::getPropertyEnum('IDEOGRAPHIC') === IntlChar::PROPERTY_IDEOGRAPHIC);
    var_dump(IntlChar::getPropertyEnum('Some made-up string') === IntlChar::PROPERTY_INVALID_CODE);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::getPropertyName() - Get the Unicode name for a property

# IntlChar::getPropertyName

(PHP 7, PHP 8)

IntlChar::getPropertyName — Get the Unicode name for a property

### Açıklama

public static function IntlChar::getPropertyName(int `$property`, int `$type` = `IntlChar::LONG_PROPERTY_NAME`): string|false

Returns the Unicode name for a given property, as given in the Unicode database file PropertyAliases.txt.

In addition, this function maps the property `IntlChar::PROPERTY_GENERAL_CATEGORY_MASK` to the synthetic names "gcm" / "General_Category_Mask". These names are not in PropertyAliases.txt.

This function complements IntlChar::getPropertyEnum().

### Bağımsız Değişkenler

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

  `IntlChar::PROPERTY_INVALID_CODE` should not be used. Also, if `property` is out of range, `false` is returned.

`type`

  Selector for which name to get. If out of range, `false` is returned.

  All properties have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to `IntlChar::LONG_PROPERTY_NAME`.

### Dönen Değerler

Returns the name, or `false` if either the `property` or the `type` is out of range.

If a given `type` returns `false`, then all larger values of `type` will return `false`, with one exception: if `false` is returned for `IntlChar::SHORT_PROPERTY_NAME`, then `IntlChar::LONG_PROPERTY_NAME` (and higher) may still return a non-`false` value.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS));
    var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::SHORT_PROPERTY_NAME));
    var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::LONG_PROPERTY_NAME));
    var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::LONG_PROPERTY_NAME + 1));
    ?>

Yukarıdaki örneğin çıktısı:

    string(10) "Bidi_Class"
    string(2) "bc"
    string(10) "Bidi_Class"
    bool(false)

### Ayrıca Bakınız

- IntlChar::getPropertyEnum() - Get the property constant value for a given property name

# IntlChar::getPropertyValueEnum

(PHP 7, PHP 8)

IntlChar::getPropertyValueEnum — Get the property value for a given value name

### Açıklama

public static function IntlChar::getPropertyValueEnum(int `$property`, string `$name`): int

Returns the property value integer for a given value name, as specified in the Unicode database file PropertyValueAliases.txt. Short, long, and any other variants are recognized.

> Bilginize:

> Some of the names in PropertyValueAliases.txt will only be recognized with `IntlChar::PROPERTY_GENERAL_CATEGORY_MASK`, not `IntlChar::PROPERTY_GENERAL_CATEGORY`. These include:

> - "C" / "Other"
> - "L" / "Letter"
> - "LC" / "Cased_Letter"
> - "M" / "Mark"
> - "N" / "Number"
> - "P" / "Punctuation"
> - "S" / "Symbol"
> - "Z" / "Separator"

### Bağımsız Değişkenler

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

  If out of range, or this method doesn't work with the given value, `IntlChar::PROPERTY_INVALID_CODE` is returned.

`name`

  The value name to be matched. The name is compared using "loose matching" as described in PropertyValueAliases.txt.

### Dönen Değerler

Returns the corresponding value integer, or `IntlChar::PROPERTY_INVALID_CODE` if the given name does not match any value of the given property, or if the property is invalid.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BLOCK, 'greek') === IntlChar::BLOCK_CODE_GREEK);
    var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BIDI_CLASS, 'RIGHT_TO_LEFT') === IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT);
    var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BIDI_CLASS, 'some made-up string') === IntlChar::PROPERTY_INVALID_CODE);
    var_dump(IntlChar::getPropertyValueEnum(123456789, 'RIGHT_TO_LEFT') === IntlChar::PROPERTY_INVALID_CODE);
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(true)

# IntlChar::getPropertyValueName

(PHP 7, PHP 8)

IntlChar::getPropertyValueName — Get the Unicode name for a property value

### Açıklama

public static function IntlChar::getPropertyValueName(int `$property`, int `$value`, int `$type` = `IntlChar::LONG_PROPERTY_NAME`): string|false

Returns the Unicode name for a given property value, as given in the Unicode database file PropertyValueAliases.txt.

> Bilginize:

> Some of the names in PropertyValueAliases.txt can only be retrieved using `IntlChar::PROPERTY_GENERAL_CATEGORY_MASK`, not `IntlChar::PROPERTY_GENERAL_CATEGORY`. These include:

> - "C" / "Other"
> - "L" / "Letter"
> - "LC" / "Cased_Letter"
> - "M" / "Mark"
> - "N" / "Number"
> - "P" / "Punctuation"
> - "S" / "Symbol"
> - "Z" / "Separator"

### Bağımsız Değişkenler

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

  If out of range, or this method doesn't work with the given value, `false` is returned.

`value`

  Selector for a value for the given property. If out of range, `false` is returned.

  In general, valid values range from `0` up to some maximum. There are a couple exceptions:

  - `IntlChar::PROPERTY_BLOCK` values begin at the non-zero value `IntlChar::BLOCK_CODE_BASIC_LATIN`
  - `IntlChar::PROPERTY_CANONICAL_COMBINING_CLASS` values are not contiguous and range from 0..240.
`type`

  Selector for which name to get. If out of range, `false` is returned.

  All values have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to `IntlChar::LONG_PROPERTY_NAME`.

### Dönen Değerler

Returns the name, or `false` if either the `property` or the `type` is out of range. Returns `null` on failure.

If a given `type` returns `false`, then all larger values of `type` will return `false`, with one exception: if `false` is returned for `IntlChar::SHORT_PROPERTY_NAME`, then `IntlChar::LONG_PROPERTY_NAME` (and higher) may still return a non-`false` value.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK));
    var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::SHORT_PROPERTY_NAME));
    var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::LONG_PROPERTY_NAME));
    var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::LONG_PROPERTY_NAME + 1));
    ?>

Yukarıdaki örneğin çıktısı:

    string(16) "Greek_And_Coptic"
    string(5) "Greek"
    string(16) "Greek_And_Coptic"
    bool(false)

# IntlChar::getUnicodeVersion

(PHP 7, PHP 8)

IntlChar::getUnicodeVersion — Get the Unicode version

### Açıklama

public static function IntlChar::getUnicodeVersion(): array

Gets the Unicode version information.

The version array is filled in with the version information for the Unicode standard that is currently used by ICU. For example, Unicode version 3.1.1 is represented as an array with the values `[3, 1, 1, 0]`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array containing the Unicode version number.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::getUnicodeVersion());
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      [0]=>
      int(7)
      [1]=>
      int(0)
      [2]=>
      int(0)
      [3]=>
      int(0)
    }

### Ayrıca Bakınız

- IntlChar::charAge() - Get the "age" of the code point

# IntlChar::hasBinaryProperty

(PHP 7, PHP 8)

IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point

### Açıklama

public static function IntlChar::hasBinaryProperty(int|string `$codepoint`, int `$property`): ?bool

Checks a binary Unicode property for a code point.

Unicode, especially in version 3.2, defines many more properties than the original set in UnicodeData.txt.

The properties APIs are intended to reflect Unicode properties as defined in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR). For details about the properties see » http://www.unicode.org/ucd/. For names of Unicode properties see the UCD file PropertyAliases.txt.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

`property`

  Aranacak Unicode özelliği (bkz. `IntlChar::PROPERTY_*` sabitleri).

### Dönen Değerler

Returns `true` or `false` according to the binary Unicode property value for `codepoint`. Also `false` if `property` is out of bounds or if the Unicode version does not have data for the property at all, or not for this code point. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı özelliklerin denenmesi

    <?php
    var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_ALPHABETIC));
    var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_CASE_SENSITIVE));
    var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_BIDI_MIRRORED));
    var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_ALPHABETIC));
    var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_CASE_SENSITIVE));
    var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_BIDI_MIRRORED));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
- IntlChar::getUnicodeVersion() - Get the Unicode version

# IntlChar::isalnum

(PHP 7, PHP 8)

IntlChar::isalnum — Check if code point is an alphanumeric character

### Açıklama

public static function IntlChar::isalnum(int|string `$codepoint`): ?bool

Determines whether the specified code point is an alphanumeric character (letter or digit). `true` for characters with general categories "L" (letters) and "Nd" (decimal digit numbers).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is an alphanumeric character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isalnum("A"));
    var_dump(IntlChar::isalnum("1"));
    var_dump(IntlChar::isalnum("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isdigit() - Check if code point is a digit character
- ctype_alnum() - Sınama, abecesayısal karakterler için yapılır

# IntlChar::isalpha

(PHP 7, PHP 8)

IntlChar::isalpha — Check if code point is a letter character

### Açıklama

public static function IntlChar::isalpha(int|string `$codepoint`): ?bool

Determines whether the specified code point is a letter character. `true` for general categories "L" (letters).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a letter character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isalpha("A"));
    var_dump(IntlChar::isalpha("1"));
    var_dump(IntlChar::isalpha("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalnum() - Check if code point is an alphanumeric character
- IntlChar::isdigit() - Check if code point is a digit character
- ctype_alpha() - Sınama, abecesel karakterler için yapılır

# IntlChar::isbase

(PHP 7, PHP 8)

IntlChar::isbase — Check if code point is a base character

### Açıklama

public static function IntlChar::isbase(int|string `$codepoint`): ?bool

Determines whether the specified code point is a base character. `true` for general categories "L" (letters), "N" (numbers), "Mc" (spacing combining marks), and "Me" (enclosing marks).

> Bilginize:

> This is different from the Unicode definition in chapter 3.5, conformance clause D13, which defines base characters to be all characters (not Cn) that do not graphically combine with preceding characters (M) and that are neither control (Cc) or format (Cf) characters.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a base character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isbase("A"));
    var_dump(IntlChar::isbase("1"));
    var_dump(IntlChar::isbase("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isdigit() - Check if code point is a digit character

# IntlChar::isblank

(PHP 7, PHP 8)

IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character

### Açıklama

public static function IntlChar::isblank(int|string `$codepoint`): ?bool

Determines whether the specified code point is a "blank" or "horizontal space", a character that visibly separates words on a line.

The following are equivalent definitions:

- `true` for Unicode White_Space characters except for "vertical space controls" where "vertical space controls" are the following characters: U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
- `true` for U+0009 (TAB) and characters with general category "Zs" (space separators) except Zero Width Space (ZWSP, U+200B).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is either a "blank" or "horizontal space" character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isblank("A"));
    var_dump(IntlChar::isblank(" "));
    var_dump(IntlChar::isblank("\t"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isspace() - Check if code point is a space character
- IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
- IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property
- IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU

# IntlChar::iscntrl

(PHP 7, PHP 8)

IntlChar::iscntrl — Check if code point is a control character

### Açıklama

public static function IntlChar::iscntrl(int|string `$codepoint`): ?bool

Determines whether the specified code point is a control character.

A control character is one of the following:

- ISO 8-bit control character (U+0000..U+001f and U+007f..U+009f)
- `IntlChar::CHAR_CATEGORY_CONTROL_CHAR` (Cc)
- `IntlChar::CHAR_CATEGORY_FORMAT_CHAR` (Cf)
- `IntlChar::CHAR_CATEGORY_LINE_SEPARATOR` (Zl)
- `IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR` (Zp)

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a control character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::iscntrl("A"));
    var_dump(IntlChar::iscntrl(" "));
    var_dump(IntlChar::iscntrl("\n"));
    var_dump(IntlChar::iscntrl("\u{200e}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isprint() - Check if code point is a printable character
- `IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT`
- ctype_cntrl() - Sınama, denetim karakterleri için yapılır

# IntlChar::isdefined

(PHP 7, PHP 8)

IntlChar::isdefined — Check whether the code point is defined

### Açıklama

public static function IntlChar::isdefined(int|string `$codepoint`): ?bool

Determines whether the specified code point is "defined", which usually means that it is assigned a character.

`true` for general categories other than "Cn" (other, not assigned).

> Bilginize:

> Note that non-character code points (e.g., U+FDD0) are not "defined" (they are Cn), but surrogate code points are "defined" (Cs).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a defined character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isdefined("A"));
    var_dump(IntlChar::isdefined(" "));
    var_dump(IntlChar::isdefined("\u{FDD0}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isdigit() - Check if code point is a digit character
- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isalnum() - Check if code point is an alphanumeric character
- IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
- IntlChar::islower() - Check if code point is a lowercase letter
- IntlChar::istitle() - Check if code point is a titlecase letter

# IntlChar::isdigit

(PHP 7, PHP 8)

IntlChar::isdigit — Check if code point is a digit character

### Açıklama

public static function IntlChar::isdigit(int|string `$codepoint`): ?bool

Determines whether the specified code point is a digit character.

`true` for characters with general category "Nd" (decimal digit numbers). Beginning with Unicode 4, this is the same as testing for the Numeric_Type of Decimal.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a digit character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isdigit("A"));
    var_dump(IntlChar::isdigit("1"));
    var_dump(IntlChar::isdigit("\t"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isalnum() - Check if code point is an alphanumeric character
- IntlChar::isxdigit() - Check if code point is a hexadecimal digit
- ctype_digit() - Sınama, rakamlar için yapılır

# IntlChar::isgraph

(PHP 7, PHP 8)

IntlChar::isgraph — Check if code point is a graphic character

### Açıklama

public static function IntlChar::isgraph(int|string `$codepoint`): ?bool

Determines whether the specified code point is a "graphic" character (printable, excluding spaces).

`true` for all characters except those with general categories "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates), "Cn" (unassigned), and "Z" (separators).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a "graphic" character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isgraph("A"));
    var_dump(IntlChar::isgraph("1"));
    var_dump(IntlChar::isgraph("\u{2603}"));
    var_dump(IntlChar::isgraph("\n"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- ctype_graph() - Sınama, boşluk karakterleri hariç basılabilir karakterler için yapılır

# IntlChar::isIDIgnorable

(PHP 7, PHP 8)

IntlChar::isIDIgnorable — Check if code point is an ignorable character

### Açıklama

public static function IntlChar::isIDIgnorable(int|string `$codepoint`): ?bool

Determines if the specified character should be regarded as an ignorable character in an identifier.

`true` for characters with general category "Cf" (format controls) as well as non-whitespace ISO controls (U+0000..U+0008, U+000E..U+001B, U+007F..U+009F).

> Bilginize:

> Note that Unicode just recommends to ignore Cf (format controls).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is ignorable in identifiers, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isIDIgnorable("A"));
    var_dump(IntlChar::isIDIgnorable(" "));
    var_dump(IntlChar::isIDIgnorable("\u{007F}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
- IntlChar::isIDPart() - Check if code point is permissible in an identifier
- `IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT`

# IntlChar::isIDPart

(PHP 7, PHP 8)

IntlChar::isIDPart — Check if code point is permissible in an identifier

### Açıklama

public static function IntlChar::isIDPart(int|string `$codepoint`): ?bool

Determines if the specified character is permissible in an identifier.

`true` for characters with general categories "L" (letters), "Nl" (letter numbers), "Nd" (decimal digits), "Mc" and "Mn" (combining marks), "Pc" (connecting punctuation), and u_isIDIgnorable(c).

> Bilginize:

> This is almost the same as Unicode's ID_Continue (`IntlChar::PROPERTY_ID_CONTINUE`) except that Unicode recommends to ignore Cf which is less than IntlChar::isIDIgnorable().

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is the code point may occur in an identifier, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isIDPart("A"));
    var_dump(IntlChar::isIDPart("$"));
    var_dump(IntlChar::isIDPart("\n"));
    var_dump(IntlChar::isIDPart("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isIDIgnorable() - Check if code point is an ignorable character
- IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
- `IntlChar::PROPERTY_ID_CONTINUE`

# IntlChar::isIDStart

(PHP 7, PHP 8)

IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier

### Açıklama

public static function IntlChar::isIDStart(int|string `$codepoint`): ?bool

Determines if the specified character is permissible as the first character in an identifier according to Unicode (The Unicode Standard, Version 3.0, chapter 5.16 Identifiers).

`true` for characters with general categories "L" (letters) and "Nl" (letter numbers).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` may start an identifier, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isIDStart("A"));
    var_dump(IntlChar::isIDStart("$"));
    var_dump(IntlChar::isIDStart("\n"));
    var_dump(IntlChar::isIDStart("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isIDPart() - Check if code point is permissible in an identifier
- `IntlChar::PROPERTY_ID_START`

# IntlChar::isISOControl

(PHP 7, PHP 8)

IntlChar::isISOControl — Check if code point is an ISO control code

### Açıklama

public static function IntlChar::isISOControl(int|string `$codepoint`): ?bool

Determines whether the specified code point is an ISO control code.

`true` for U+0000..U+001f and U+007f..U+009f (general category "Cc").

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is an ISO control code, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isISOControl(" "));
    var_dump(IntlChar::isISOControl("\n"));
    var_dump(IntlChar::isISOControl("\u{200e}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::iscntrl() - Check if code point is a control character

# IntlChar::isJavaIDPart

(PHP 7, PHP 8)

IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier

### Açıklama

public static function IntlChar::isJavaIDPart(int|string `$codepoint`): ?bool

Determines if the specified character is permissible in a Java identifier.

In addition to IntlChar::isIDPart(), `true` for characters with general category "Sc" (currency symbols).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` may occur in a Java identifier, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isJavaIDPart("A"));
    var_dump(IntlChar::isJavaIDPart("$"));
    var_dump(IntlChar::isJavaIDPart("\n"));
    var_dump(IntlChar::isJavaIDPart("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isIDIgnorable() - Check if code point is an ignorable character
- IntlChar::isIDPart() - Check if code point is permissible in an identifier
- IntlChar::isJavaIDStart() - Check if code point is permissible as the first character in a Java identifier
- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::isdigit() - Check if code point is a digit character

# IntlChar::isJavaIDStart

(PHP 7, PHP 8)

IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier

### Açıklama

public static function IntlChar::isJavaIDStart(int|string `$codepoint`): ?bool

Determines if the specified character is permissible as the start of a Java identifier.

In addition to IntlChar::isIDStart(), `true` for characters with general categories "Sc" (currency symbols) and "Pc" (connecting punctuation).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` may start a Java identifier, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isJavaIDStart("A"));
    var_dump(IntlChar::isJavaIDStart("$"));
    var_dump(IntlChar::isJavaIDStart("\n"));
    var_dump(IntlChar::isJavaIDStart("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
- IntlChar::isJavaIDPart() - Check if code point is permissible in a Java identifier
- IntlChar::isalpha() - Check if code point is a letter character

# IntlChar::isJavaSpaceChar

(PHP 7, PHP 8)

IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java

### Açıklama

public static function IntlChar::isJavaSpaceChar(int|string `$codepoint`): ?bool

Determine if the specified code point is a space character according to Java.

`true` for characters with general categories "Z" (separators), which does not include control codes (e.g., TAB or Line Feed).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a space character according to Java, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isJavaSpaceChar("A"));
    var_dump(IntlChar::isJavaSpaceChar(" "));
    var_dump(IntlChar::isJavaSpaceChar("\n"));
    var_dump(IntlChar::isJavaSpaceChar("\t"));
    var_dump(IntlChar::isJavaSpaceChar("\u{00A0}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isspace() - Check if code point is a space character
- IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
- IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property

# IntlChar::islower

(PHP 7, PHP 8)

IntlChar::islower — Check if code point is a lowercase letter

### Açıklama

public static function IntlChar::islower(int|string `$codepoint`): ?bool

Determines whether the specified code point has the general category "Ll" (lowercase letter).

> Bilginize:

> This misses some characters that are also lowercase but have a different general category value. In order to include those, use IntlChar::isULowercase().

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is an Ll lowercase letter, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::islower("A"));
    var_dump(IntlChar::islower("a"));
    var_dump(IntlChar::islower("Φ"));
    var_dump(IntlChar::islower("φ"));
    var_dump(IntlChar::islower("1"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
- IntlChar::istitle() - Check if code point is a titlecase letter
- IntlChar::tolower() - Make Unicode character lowercase
- IntlChar::toupper() - Make Unicode character uppercase
- `IntlChar::PROPERTY_LOWERCASE`
- ctype_lower() - Sınama, küçük harfler için yapılır

# IntlChar::isMirrored

(PHP 7, PHP 8)

IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property

### Açıklama

public static function IntlChar::isMirrored(int|string `$codepoint`): ?bool

Determines whether the code point has the Bidi_Mirrored property.

This property is set for characters that are commonly used in Right-To-Left contexts and need to be displayed with a "mirrored" glyph.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` has the Bidi_Mirrored property, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isMirrored("A"));
    var_dump(IntlChar::isMirrored("<"));
    var_dump(IntlChar::isMirrored("("));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::charMirror() - Get the "mirror-image" character for a code point
- `IntlChar::PROPERTY_BIDI_MIRRORED`

# IntlChar::isprint

(PHP 7, PHP 8)

IntlChar::isprint — Check if code point is a printable character

### Açıklama

public static function IntlChar::isprint(int|string `$codepoint`): ?bool

Determines whether the specified code point is a printable character.

`true` for general categories other than "C" (controls).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a printable character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isprint("A"));
    var_dump(IntlChar::isprint(" "));
    var_dump(IntlChar::isprint("\n"));
    var_dump(IntlChar::isprint("\u{200e}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::iscntrl() - Check if code point is a control character
- `IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT`
- ctype_print() - Sınama, basılabilir karakterler için yapılır

# IntlChar::ispunct

(PHP 7, PHP 8)

IntlChar::ispunct — Check if code point is punctuation character

### Açıklama

public static function IntlChar::ispunct(int|string `$codepoint`): ?bool

Determines whether the specified code point is a punctuation character.

`true` for characters with general categories "P" (punctuation).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a punctuation character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::ispunct("."));
    var_dump(IntlChar::ispunct(","));
    var_dump(IntlChar::ispunct("\n"));
    var_dump(IntlChar::ispunct("$"));

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- ctype_punct() - Sınama, birer alfasayısal veya boşluk karakteri olmayan basılabilir karakterler için yapılır

# IntlChar::isspace

(PHP 7, PHP 8)

IntlChar::isspace — Check if code point is a space character

### Açıklama

public static function IntlChar::isspace(int|string `$codepoint`): ?bool

Determines if the specified character is a space character or not.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a space character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isspace("A"));
    var_dump(IntlChar::isspace(" "));
    var_dump(IntlChar::isspace("\n"));
    var_dump(IntlChar::isspace("\t"));
    var_dump(IntlChar::isspace("\u{00A0}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(true)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
- IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
- IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property
- ctype_space() - Sınama, boşluk karakterleri için yapılır

# IntlChar::istitle

(PHP 7, PHP 8)

IntlChar::istitle — Check if code point is a titlecase letter

### Açıklama

public static function IntlChar::istitle(int|string `$codepoint`): ?bool

Determines whether the specified code point is a titlecase letter.

`true` for general category "Lt" (titlecase letter).

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a titlecase letter, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    // Latin Capital Letter Dz with Caron U+01C4
    var_dump(IntlChar::istitle("Ǆ"));
    // Latin Capital Letter D with Small Letter Z with Caron U+01C5
    var_dump(IntlChar::istitle("ǅ"));
    // Latin Small Letter Dz with Caron U+01C6
    var_dump(IntlChar::istitle("ǆ"));

    // Greek Capital Letter Alpha with Prosgegrammeni U+1FBC
    var_dump(IntlChar::istitle("ᾼ"));
    // Greek Small Letter Alpha with Ypogegrammeni U+1FB3
    var_dump(IntlChar::istitle("ᾳ"));
    // Greek Capital Letter Alpha U+0391
    var_dump(IntlChar::istitle("Α"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
- IntlChar::islower() - Check if code point is a lowercase letter
- IntlChar::totitle() - Make Unicode character titlecase

# IntlChar::isUAlphabetic

(PHP 7, PHP 8)

IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property

### Açıklama

public static function IntlChar::isUAlphabetic(int|string `$codepoint`): ?bool

Check if a code point has the Alphabetic Unicode property.

This is the same as `IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_ALPHABETIC)`

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` has the Alphabetic Unicode property, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isUAlphabetic("A"));
    var_dump(IntlChar::isUAlphabetic("1"));
    var_dump(IntlChar::isUAlphabetic("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isalpha() - Check if code point is a letter character
- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- `IntlChar::PROPERTY_ALPHABETIC`

# IntlChar::isULowercase

(PHP 7, PHP 8)

IntlChar::isULowercase — Check if code point has the Lowercase Unicode property

### Açıklama

public static function IntlChar::isULowercase(int|string `$codepoint`): ?bool

Check if a code point has the Lowercase Unicode property.

This is the same as `IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_LOWERCASE)`

> Bilginize:

> This is different than IntlChar::islower() and will return `true` for more characters.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` has the Lowercase Unicode property, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isULowercase("A"));
    var_dump(IntlChar::isULowercase("a"));
    var_dump(IntlChar::isULowercase("Φ"));
    var_dump(IntlChar::isULowercase("φ"));
    var_dump(IntlChar::isULowercase("1"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(false)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::islower() - Check if code point is a lowercase letter
- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- `IntlChar::PROPERTY_LOWERCASE`

# IntlChar::isupper

(PHP 7, PHP 8)

IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)

### Açıklama

public static function IntlChar::isupper(int|string `$codepoint`): ?bool

Determines whether the specified code point has the general category "Lu" (uppercase letter).

> Bilginize:

> This misses some characters that are also uppercase but have a different general category value. In order to include those, use IntlChar::isUUppercase().

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is an Lu uppercase letter, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isupper("A"));
    var_dump(IntlChar::isupper("a"));
    var_dump(IntlChar::isupper("Φ"));
    var_dump(IntlChar::isupper("φ"));
    var_dump(IntlChar::isupper("1"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::islower() - Check if code point is a lowercase letter
- IntlChar::istitle() - Check if code point is a titlecase letter
- IntlChar::tolower() - Make Unicode character lowercase
- IntlChar::toupper() - Make Unicode character uppercase
- `IntlChar::PROPERTY_UPPERCASE`
- ctype_upper() - Sınama, büyük harfler için yapılır

# IntlChar::isUUppercase

(PHP 7, PHP 8)

IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property

### Açıklama

public static function IntlChar::isUUppercase(int|string `$codepoint`): ?bool

Check if a code point has the Uppercase Unicode property.

This is the same as `IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_UPPERCASE)`

> Bilginize:

> This is different than IntlChar::isupper() and will return `true` for more characters.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` has the Uppercase Unicode property, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isUUppercase("A"));
    var_dump(IntlChar::isUUppercase("a"));
    var_dump(IntlChar::isUUppercase("Φ"));
    var_dump(IntlChar::isUUppercase("φ"));
    var_dump(IntlChar::isUUppercase("1"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(true)
    bool(false)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- `IntlChar::PROPERTY_UPPERCASE`

# IntlChar::isUWhiteSpace

(PHP 7, PHP 8)

IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property

### Açıklama

public static function IntlChar::isUWhiteSpace(int|string `$codepoint`): ?bool

Check if a code point has the White_Space Unicode property.

This is the same as `IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_WHITE_SPACE)`

> Bilginize:

> This is different from both IntlChar::isspace() and IntlChar::isWhitespace().

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` has the White_Space Unicode property, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isUWhiteSpace("A"));
    var_dump(IntlChar::isUWhiteSpace(" "));
    var_dump(IntlChar::isUWhiteSpace("\n"));
    var_dump(IntlChar::isUWhiteSpace("\t"));
    var_dump(IntlChar::isUWhiteSpace("\u{00A0}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(true)
    bool(true)
    bool(true)

### Ayrıca Bakınız

- IntlChar::isspace() - Check if code point is a space character
- IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
- IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
- IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
- `IntlChar::PROPERTY_WHITE_SPACE`

# IntlChar::isWhitespace

(PHP 7, PHP 8)

IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU

### Açıklama

public static function IntlChar::isWhitespace(int|string `$codepoint`): ?bool

Determines if the specified code point is a whitespace character according to ICU.

A character is considered to be a ICU whitespace character if and only if it satisfies one of the following criteria:

- It is a Unicode Separator character (categories "Z" = "Zs" or "Zl" or "Zp"), but is not also a non-breaking space (U+00A0 NBSP or U+2007 Figure Space or U+202F Narrow NBSP).
- It is U+0009 HORIZONTAL TABULATION.
- It is U+000A LINE FEED.
- It is U+000B VERTICAL TABULATION.
- It is U+000C FORM FEED.
- It is U+000D CARRIAGE RETURN.
- It is U+001C FILE SEPARATOR.
- It is U+001D GROUP SEPARATOR.
- It is U+001E RECORD SEPARATOR.
- It is U+001F UNIT SEPARATOR.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a whitespace character according to ICU, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::iswhitespace("A"));
    var_dump(IntlChar::iswhitespace(" "));
    var_dump(IntlChar::iswhitespace("\n"));
    var_dump(IntlChar::iswhitespace("\t"));
    var_dump(IntlChar::iswhitespace("\u{00A0}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)
    bool(true)
    bool(true)
    bool(false)

### Ayrıca Bakınız

- IntlChar::isspace() - Check if code point is a space character
- IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
- IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property

# IntlChar::isxdigit

(PHP 7, PHP 8)

IntlChar::isxdigit — Check if code point is a hexadecimal digit

### Açıklama

public static function IntlChar::isxdigit(int|string `$codepoint`): ?bool

Determines whether the specified code point is a hexadecimal digit.

`true` for characters with general category "Nd" (decimal digit numbers) as well as Latin letters a-f and A-F in both ASCII and Fullwidth ASCII. (That is, for letters with code points 0041..0046, 0061..0066, FF21..FF26, FF41..FF46.)

This is equivalent to `IntlChar::digit($codepoint, 16) >= 0`.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns `true` if `codepoint` is a hexadecimal character, `false` if not. Returns `null` on failure.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::isxdigit("A"));
    var_dump(IntlChar::isxdigit("1"));
    var_dump(IntlChar::isxdigit("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(true)
    bool(false)

### Notlar

> Bilginize:

> In order to narrow the definition of hexadecimal digits to only ASCII characters use:

>     <?php
>     $isASCIIHexadecimal = IntlChar::ord($codepoint) <= 0x7F && IntlChar::isxdigit($codepoint);
>     ?>

### Ayrıca Bakınız

- IntlChar::isdigit() - Check if code point is a digit character
- ctype_xdigit() - Sınama, onaltılık rakamlar için yapılır

# IntlChar::ord

(PHP 7, PHP 8)

IntlChar::ord — Return Unicode code point value of character

### Açıklama

public static function IntlChar::ord(int|string `$character`): ?int

Returns the Unicode code point value of the given character.

This function complements IntlChar::chr().

### Bağımsız Değişkenler

`character`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the Unicode code point value as an integer.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::ord("A"));
    var_dump(IntlChar::ord(" "));
    var_dump(IntlChar::ord("\u{2603}"));
    ?>

Yukarıdaki örneğin çıktısı:

    int(65)
    int(32)
    int(9731)

### Ayrıca Bakınız

- IntlChar::chr() - Return Unicode character by code point value
- mb_ord() - Karakterin Unicode karakter kodunu döndürür
- ord() - Dizgenin ilk baytını 0-255 arasında bir değere dönüştürür

# IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolower — Make Unicode character lowercase

### Açıklama

public static function IntlChar::tolower(int|string `$codepoint`): int|string|null

The given character is mapped to its lowercase equivalent. If the character has no lowercase equivalent, the original character itself is returned.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the Simple_Lowercase_Mapping of the code point, if any; otherwise the code point itself. Returns `null` on failure.

Unicode karakter kodu string türünde ise dönüş türü string, Unicode karakter kodu int türündeyse dönüş türü int olacaktır. Başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::tolower("A"));
    var_dump(IntlChar::tolower("a"));
    var_dump(IntlChar::tolower("Φ"));
    var_dump(IntlChar::tolower("φ"));
    var_dump(IntlChar::tolower("1"));
    var_dump(IntlChar::tolower(ord("A")));
    var_dump(IntlChar::tolower(ord("a")));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "a"
    string(1) "a"
    string(2) "φ"
    string(2) "φ"
    string(1) "1"
    int(97)
    int(97)

### Ayrıca Bakınız

- IntlChar::totitle() - Make Unicode character titlecase
- IntlChar::toupper() - Make Unicode character uppercase
- mb_strtolower() - Dizgeyi küçük harfli yapar

# IntlChar::totitle

(PHP 7, PHP 8)

IntlChar::totitle — Make Unicode character titlecase

### Açıklama

public static function IntlChar::totitle(int|string `$codepoint`): int|string|null

The given character is mapped to its titlecase equivalent. If the character has no titlecase equivalent, the original character itself is returned.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the Simple_Titlecase_Mapping of the code point, if any; otherwise the code point itself. Returns `null` on failure.

Unicode karakter kodu string türünde ise dönüş türü string, Unicode karakter kodu int türündeyse dönüş türü int olacaktır. Başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::totitle("Ǆ"));
    var_dump(IntlChar::totitle("ǆ"));
    var_dump(IntlChar::totitle("Φ"));
    var_dump(IntlChar::totitle("φ"));
    var_dump(IntlChar::totitle("1"));
    var_dump(IntlChar::totitle("ᾳ"));
    var_dump(IntlChar::totitle(ord("A")));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "ǅ"
    string(1) "ǅ"
    string(2) "Φ"
    string(2) "φ"
    string(1) "1"
    string(1) "ᾼ"
    int(65)

### Ayrıca Bakınız

- IntlChar::tolower() - Make Unicode character lowercase
- IntlChar::toupper() - Make Unicode character uppercase
- IntlChar::istitle() - Check if code point is a titlecase letter
- mb_convert_case() - Bir dizgeye büyük-küçük harf dönüşümü uygular

# IntlChar::toupper

(PHP 7, PHP 8)

IntlChar::toupper — Make Unicode character uppercase

### Açıklama

public static function IntlChar::toupper(int|string `$codepoint`): int|string|null

The given character is mapped to its uppercase equivalent. If the character has no uppercase equivalent, the character itself is returned.

### Bağımsız Değişkenler

`codepoint`

  int türünde Unicode karakter kodu (örn. U+2603 SNOWMAN için `0x2603`) veya string türünde Unicode karakter kodu (örn. `"\u{2603}"`)

### Dönen Değerler

Returns the Simple_Uppercase_Mapping of the code point, if any; otherwise the code point itself.

Unicode karakter kodu string türünde ise dönüş türü string, Unicode karakter kodu int türündeyse dönüş türü int olacaktır. Başarısızlık durumunda `null` döner.

### Örnekler

Örnek 1 Farklı karakter kodlarının denenmesi

    <?php
    var_dump(IntlChar::toupper("A"));
    var_dump(IntlChar::toupper("a"));
    var_dump(IntlChar::toupper("Φ"));
    var_dump(IntlChar::toupper("φ"));
    var_dump(IntlChar::toupper("1"));
    var_dump(IntlChar::toupper(ord("A")));
    var_dump(IntlChar::toupper(ord("a")));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "A"
    string(1) "A"
    string(2) "Φ"
    string(2) "Φ"
    string(1) "1"
    int(65)
    int(65)

### Ayrıca Bakınız

- IntlChar::tolower() - Make Unicode character lowercase
- IntlChar::totitle() - Make Unicode character titlecase
- mb_strtoupper() - Dizgeyi büyük harfli yapar

## İçindekiler

- IntlChar::charAge — Get the "age" of the code point
- IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character
- IntlChar::charDirection — Get bidirectional category value for a code point
- IntlChar::charFromName — Find Unicode character by name and return its code point value
- IntlChar::charMirror — Get the "mirror-image" character for a code point
- IntlChar::charName — Retrieve the name of a Unicode character
- IntlChar::charType — Get the general category value for a code point
- IntlChar::chr — Return Unicode character by code point value
- IntlChar::digit — Get the decimal digit value of a code point for a given radix
- IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range
- IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories
- IntlChar::foldCase — Perform case folding on a code point
- IntlChar::forDigit — Get character representation for a given digit and radix
- IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point
- IntlChar::getBlockCode — Get the Unicode allocation block containing a code point
- IntlChar::getCombiningClass — Get the combining class of a code point
- IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point
- IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property
- IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property
- IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point
- IntlChar::getNumericValue — Get the numeric value for a Unicode code point
- IntlChar::getPropertyEnum — Get the property constant value for a given property name
- IntlChar::getPropertyName — Get the Unicode name for a property
- IntlChar::getPropertyValueEnum — Get the property value for a given value name
- IntlChar::getPropertyValueName — Get the Unicode name for a property value
- IntlChar::getUnicodeVersion — Get the Unicode version
- IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point
- IntlChar::isalnum — Check if code point is an alphanumeric character
- IntlChar::isalpha — Check if code point is a letter character
- IntlChar::isbase — Check if code point is a base character
- IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character
- IntlChar::iscntrl — Check if code point is a control character
- IntlChar::isdefined — Check whether the code point is defined
- IntlChar::isdigit — Check if code point is a digit character
- IntlChar::isgraph — Check if code point is a graphic character
- IntlChar::isIDIgnorable — Check if code point is an ignorable character
- IntlChar::isIDPart — Check if code point is permissible in an identifier
- IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier
- IntlChar::isISOControl — Check if code point is an ISO control code
- IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier
- IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier
- IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java
- IntlChar::islower — Check if code point is a lowercase letter
- IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property
- IntlChar::isprint — Check if code point is a printable character
- IntlChar::ispunct — Check if code point is punctuation character
- IntlChar::isspace — Check if code point is a space character
- IntlChar::istitle — Check if code point is a titlecase letter
- IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property
- IntlChar::isULowercase — Check if code point has the Lowercase Unicode property
- IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)
- IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property
- IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property
- IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU
- IntlChar::isxdigit — Check if code point is a hexadecimal digit
- IntlChar::ord — Return Unicode code point value of character
- IntlChar::tolower — Make Unicode character lowercase
- IntlChar::totitle — Make Unicode character titlecase
- IntlChar::toupper — Make Unicode character uppercase

# Exception class for intl errors

(PHP 5 > 5.5.0, PHP 7, PHP 8, PECL intl > 3.0.0a1)

## Giriş

This class is used for generating exceptions when errors occur inside intl functions. Such exceptions are only generated when intl.use_exceptions is enabled.

## Sınıf Sözdizimi

class IntlException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Miras alınan yöntemler */
public function Exception::__construct(string `$message` = "", int `$code` = 0, ?Throwable `$previous` = `null`)
final public function Exception::getMessage(): string
final public function Exception::getPrevious(): ?Throwable
final public function Exception::getCode(): int
final public function Exception::getFile(): string
final public function Exception::getLine(): int
final public function Exception::getTrace(): array
final public function Exception::getTraceAsString(): string
public function Exception::__toString(): string
private function Exception::__clone(): void
}

# The IntlIterator class

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

## Giriş

This class represents iterator objects throughout the intl extension whenever the iterator cannot be identified with any other object provided by the extension. The distinct iterator object used internally by the `foreach` construct can only be obtained (in the relevant part here) from objects, so objects of this class serve the purpose of providing the hook through which this internal object can be obtained. As a convenience, this class also implements the Iterator interface, allowing the collection of values to be navigated using the methods defined in that interface. Both these methods and the internal iterator objects provided to `foreach` are backed by the same state (e.g. the position of the iterator and its current value).

Subclasses may provide richer functionality.

## Sınıf Sözdizimi

class IntlIterator implements Iterator {
/* Yöntemler */
public function current(): mixed
public function key(): mixed
public function next(): void
public function rewind(): void
public function valid(): bool
}

# IntlIterator::current

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlIterator::current — Get the current element

### Açıklama

public function IntlIterator::current(): mixed

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlIterator::key

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlIterator::key — Get the current key

### Açıklama

public function IntlIterator::key(): mixed

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlIterator::next

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlIterator::next — Move forward to the next element

### Açıklama

public function IntlIterator::next(): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlIterator::rewind

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlIterator::rewind — Rewind the iterator to the first element

### Açıklama

public function IntlIterator::rewind(): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# IntlIterator::valid

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

IntlIterator::valid — Check if current position is valid

### Açıklama

public function IntlIterator::valid(): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

## İçindekiler

- IntlIterator::current — Get the current element
- IntlIterator::key — Get the current key
- IntlIterator::next — Move forward to the next element
- IntlIterator::rewind — Rewind the iterator to the first element
- IntlIterator::valid — Check if current position is valid

# intl İşlevleri

# intl_error_name

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

intl_error_name — Belirtilen hata kodunun simgesel ismini döndürür

### Açıklama

function intl_error_name(int `$hata_kodu`): string

ICU hata kodunun ismini döndürür.

### Bağımsız Değişkenler

`hata_kodu`

  ICU hata kodu.

### Dönen Değerler

Hata kodu sabitinin ismi.

### Örnekler

Örnek 1 - intl_error_name() örneği

    <?php
    $coll     = collator_create( 'en_RU' );
    $err_code = collator_get_error_code( $coll );

    printf( "%d hata kodu için sabit ismi: %s\n.", $err_code, intl_error_name( $err_code ) );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    -128 hata kodu için sabit ismi: U_USING_FALLBACK_WARNING

### Ayrıca Bakınız

- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_get_error_message() - Son hatayı açıklayan bir dizge ile döner

# intl_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

intl_get_error_code — Son hatanın kodunu döndürür

### Açıklama

function intl_get_error_code(): int

Duruk yöntemlerde hata oluştuğunda hatanın alınacağı bir nesne yoksa hata kodunu öğrenmek için yararlıdır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Son API işlevi çağrısından dönen hata kodu.

### Örnekler

Örnek 1 - intl_get_error_code() örneği

    <?php
    $coll = collator_create( '<bad_param>' );
    if( !$coll ) {
        handle_error( intl_get_error_code() );
    }
    ?>

### Ayrıca Bakınız

- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar
- intl_error_name() - Belirtilen hata kodunun simgesel ismini döndürür
- intl_get_error_message() - Son hatayı açıklayan bir dizge ile döner
- collator_get_error_code() - Karşılaştırıcının son hata kodunu döndürür
- numfmt_get_error_code() - Biçemleyicinin son hata numarası ile döner

# intl_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

intl_get_error_message — Son hatayı açıklayan bir dizge ile döner

### Açıklama

function intl_get_error_message(): string

Son çağrılan uluslararasılaştırma işlevinde oluşan hatayı açıklayan dizge ile döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Son API işlevi çağrısında oluşan hatayı açıklayan dizge.

### Örnekler

Örnek 1 - intl_get_error_message() örneği

    <?php
    if( Collator::getAvailableLocales() === false ) {
        show_error( intl_get_error_message() );
    }
    ?>

### Ayrıca Bakınız

- intl_error_name() - Belirtilen hata kodunun simgesel ismini döndürür
- intl_get_error_code() - Son hatanın kodunu döndürür
- intl_is_failure() - Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar
- collator_get_error_message() - Karşılaştırıcının son hata iletisini döndürür
- numfmt_get_error_message() - Biçemleyicinin son hata iletisini döndürür

# intl_is_failure

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

intl_is_failure — Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

### Açıklama

function intl_is_failure(int `$hata_kodu`): bool

Belirtilen `hata_kodu` bir başarısızlık göstergesi ise `true` döner.

### Bağımsız Değişkenler

`hata_kodu`

  intl_get_error_code() ve collator_get_error_code() işlevlerinden dönen değer.

### Dönen Değerler

Hata kodu bir başarısızlığın ifadesi ise `true`, başarı veya uyarı ifadesi ise `false` döner.

### Örnekler

Örnek 1 - intl_is_failure() örneği

    <?php
    function check( $err_code )
    {
        var_export( intl_is_failure( $err_code ) );
        echo "\n";
    }

    check( U_ZERO_ERROR );
    check( U_USING_FALLBACK_WARNING );
    check( U_ILLEGAL_ARGUMENT_ERROR );
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    false
    false
    true

### Ayrıca Bakınız

- intl_get_error_code() - Son hatanın kodunu döndürür
- collator_get_error_code() - Karşılaştırıcının son hata kodunu döndürür
- Collator-getErrorCode()

## İçindekiler

- intl_error_name — Belirtilen hata kodunun simgesel ismini döndürür
- intl_get_error_code — Son hatanın kodunu döndürür
- intl_get_error_message — Son hatayı açıklayan bir dizge ile döner
- intl_is_failure — Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
  - Bu eklentinin temel kullanımı
- Karşılaştırıcı — Collator sınıfı
  - Collator::asort — Diziyi indislerin arasındaki ilişkilere göre sıralar
  - Collator::compare — İki Evrenkodlu dizgeyi karşılaştırır
  - Collator::__construct — Bir karşılaştırıcı oluşturur
  - Collator::create — Bir karşılaştırıcı oluşturur
  - Collator::getAttribute — Karşılaştırma özniteliğinin değerini döndürür
  - Collator::getErrorCode — Karşılaştırıcının son hata kodunu döndürür
  - Collator::getErrorMessage — Karşılaştırıcının son hata iletisini döndürür
  - Collator::getLocale — Karşılaştırıcının yerel ismini döndürür
  - Collator::getSortKey — Get sorting key for a string
  - Collator::getStrength — Geçerli karşılaştırma seviyesini döndürür
  - Collator::setAttribute — Karşılaştırma özniteliği tanımlar
  - Collator::setStrength — Sıralamanın seviyesini ayarlar
  - Collator::sort — Belirtilen karşılaştırıcıyı kullanarak diziyi sıralar
  - Collator::sortWithSortKeys — Bir diziyi belirtilen karşılaştırıcıyı ve sıralama anahtarlarını kullanarak sıralar
- Sayı Biçemleyici — NumberFormatter sınıfı
  - NumberFormatter::create — Bir sayı biçemleyici oluşturur
  - NumberFormatter::format — Bir sayıyı biçemler
  - NumberFormatter::formatCurrency — Bir para değerini biçemler
  - NumberFormatter::getAttribute — Bir sayısal öznitelikle döner
  - NumberFormatter::getErrorCode — Biçemleyicinin son hata numarası ile döner
  - NumberFormatter::getErrorMessage — Biçemleyicinin son hata iletisini döndürür
  - NumberFormatter::getLocale — Biçemleyici yerelin ismi ile döner
  - NumberFormatter::getPattern — Biçemleyici tarafından kullanılan kalıp dizgesi ile döner
  - NumberFormatter::getSymbol — Simge değeri ile döner
  - NumberFormatter::getTextAttribute — Bir metin öznitelik ile döner
  - NumberFormatter::parse — Bir sayı dizgesini sayıya dönüştürür
  - NumberFormatter::parseCurrency — Bir para gösteriminin sayısal değeri ile döner
  - NumberFormatter::setAttribute — Bir öznitelik tanımlar
  - NumberFormatter::setPattern — Biçemleyici kalıbı tanımlar
  - NumberFormatter::setSymbol — Bir simge değeri tanımlar
  - NumberFormatter::setTextAttribute — Bir metin öznitelik tanımlar
- Yerel — Locale sınıfı
  - Locale::acceptFromHttp — HTTP "Accept-Language" başlığıyla en iyi eşleşen yereli bulmaya çalışır
  - Locale::canonicalize — Canonicalize the locale string
  - Locale::composeLocale — Doğru sıralanmış yerel ile döner
  - Locale::filterMatches — Bir dil yaftasının bir yerelle eşleşip eşleşmediğine bakar
  - Locale::getAllVariants — Girdi yerelindeki tüm lehçeleri döndürür
  - Locale::getDefault — Öntanımlı yerel değerini döndürür
  - Locale::getDisplayLanguage — Girdi yerelindeki anadil kodunun yerelleştirilmiş ismini döndürür
  - Locale::getDisplayName — Girdi yerelinin yerelleştirilmiş ismini döndürür
  - Locale::getDisplayRegion — Girdi yereli için yerelleştirilmiş ülke ismini döndürür
  - Locale::getDisplayScript — Girdi yereli yazı türünün yerelleştirilmiş ismini döndürür
  - Locale::getDisplayVariant — Girdi yereli lehçesinin yerelleştirilmiş ismini döndürür
  - Locale::getKeywords — Girdi yerelindeki anahtar sözcükleri döndürür
  - Locale::getPrimaryLanguage — Girdi yerelinden anadil kodunu döndürür
  - Locale::getRegion — Girdi yerelinden ülke kodunu döndürür
  - Locale::getScript — Girdi yereli için yazı yaftasını döndürür
  - Locale::isRightToLeft — Check whether a locale uses a right-to-left writing system
  - Locale::lookup — En iyi eşleşen dili bulmak için dil yaftası listesini araştırır
  - Locale::parseLocale — Yerel yaftasını oluşturan alt yaftaları içeren bir dizi döndürür
  - Locale::setDefault — Öntanımlı çalışma anı yerelini tanımlar
- Normalleştirici — Normalizer sınıfı
  - Normalizer::getRawDecomposition — Gets the Decomposition_Mapping property for the given UTF-8 encoded code point
  - Normalizer::isNormalized — Belirtilen dizge normalleştirilmiş mi diye bakar
  - Normalizer::normalize — Belirtilen girdiyi normalleştirir ve dizge olarak döndürür
- İleti Biçemleyici — MessageFormatter sınıfı
  - MessageFormatter::create — Yeni bir ileti biçemleyici nesne oluşturur
  - MessageFormatter::format — İleti biçemler
  - MessageFormatter::formatMessage — İletiyi çabuk biçemler
  - MessageFormatter::getErrorCode — Son işlemin hata kodunu döndürür
  - MessageFormatter::getErrorMessage — Son işlemin hata iletisini döndürür
  - MessageFormatter::getLocale — Biçemleyicinin oluşturulduğu yereli döndürür
  - MessageFormatter::getPattern — Biçemleyici tarafından kullanılan kalıbı döndürür
  - MessageFormatter::parse — Girdi dizgesini kalıba uygun olarak çözümler
  - MessageFormatter::parseMessage — Girdi dizgesini hızla çözümler
  - MessageFormatter::setPattern — Biçemleyici tarafından kullanılacak kalıbı tanımlar
- IntlCalendar — The IntlCalendar class
  - IntlCalendar::add — Add a (signed) amount of time to a field
  - IntlCalendar::after — Whether this objectʼs time is after that of the passed object
  - IntlCalendar::before — Whether this objectʼs time is before that of the passed object
  - IntlCalendar::clear — Clear a field or all fields
  - IntlCalendar::__construct — Private constructor for disallowing instantiation
  - IntlCalendar::createInstance — Create a new IntlCalendar
  - IntlCalendar::equals — Compare time of two IntlCalendar objects for equality
  - IntlCalendar::fieldDifference — Calculate difference between given time and this objectʼs time
  - IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string
  - IntlCalendar::get — Get the value for a field
  - IntlCalendar::getActualMaximum — The maximum value for a field, considering the objectʼs current time
  - IntlCalendar::getActualMinimum — The minimum value for a field, considering the objectʼs current time
  - IntlCalendar::getAvailableLocales — Get array of locales for which there is data
  - IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two
  - IntlCalendar::getErrorCode — Get last error code on the object
  - IntlCalendar::getErrorMessage — Get last error message on the object
  - IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendarʼs locale
  - IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field
  - IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values
  - IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field
  - IntlCalendar::getLocale — Get the locale associated with the object
  - IntlCalendar::getMaximum — Get the global maximum value for a field
  - IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have
  - IntlCalendar::getMinimum — Get the global minimum value for a field
  - IntlCalendar::getNow — Get number representing the current time
  - IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time
  - IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time
  - IntlCalendar::getTime — Get time currently represented by the object
  - IntlCalendar::getTimeZone — Get the objectʼs timezone
  - IntlCalendar::getType — Get the calendar type
  - IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends
  - IntlCalendar::inDaylightTime — Whether the objectʼs time is in Daylight Savings Time
  - IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time
  - IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode
  - IntlCalendar::isSet — Whether a field is set
  - IntlCalendar::isWeekend — Whether a certain date/time is in the weekend
  - IntlCalendar::roll — Add value to field without carrying into more significant fields
  - IntlCalendar::set — Set a time field or several common fields at once
  - IntlCalendar::setDate — Set a date fields
  - IntlCalendar::setDateTime — Set a date and time fields
  - IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start
  - IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient
  - IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have
  - IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions
  - IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions
  - IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch
  - IntlCalendar::setTimeZone — Set the timezone used by this calendar
  - IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object
- IntlGregorianCalendar — The IntlGregorianCalendar class
  - IntlGregorianCalendar::__construct — Create the Gregorian Calendar class
  - IntlGregorianCalendar::createFromDate — Create a new IntlGregorianCalendar instance from date
  - IntlGregorianCalendar::createFromDateTime — Create a new IntlGregorianCalendar instance from date and time
  - IntlGregorianCalendar::getGregorianChange — Get the Gregorian Calendar change date
  - IntlGregorianCalendar::isLeapYear — Determine if the given year is a leap year
  - IntlGregorianCalendar::setGregorianChange — Set the Gregorian Calendar the change date
- IntlTimeZone — The IntlTimeZone class
  - IntlTimeZone::__construct — Private constructor to disallow direct instantiation
  - IntlTimeZone::countEquivalentIDs — Get the number of IDs in the equivalency group that includes the given ID
  - IntlTimeZone::createDefault — Create a new copy of the default timezone for this host
  - IntlTimeZone::createEnumeration — Get an enumeration over time zone IDs associated with the given country or offset
  - IntlTimeZone::createTimeZone — Create a timezone object for the given ID
  - IntlTimeZone::createTimeZoneIDEnumeration — Get an enumeration over system time zone IDs with the given filter conditions
  - IntlTimeZone::fromDateTimeZone — Create a timezone object from DateTimeZone
  - IntlTimeZone::getCanonicalID — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
  - IntlTimeZone::getDisplayName — Get a name of this time zone suitable for presentation to the user
  - IntlTimeZone::getDSTSavings — Get the amount of time to be added to local standard time to get local wall clock time
  - IntlTimeZone::getEquivalentID — Get an ID in the equivalency group that includes the given ID
  - IntlTimeZone::getErrorCode — Get last error code on the object
  - IntlTimeZone::getErrorMessage — Get last error message on the object
  - IntlTimeZone::getGMT — Create GMT (UTC) timezone
  - IntlTimeZone::getIanaID — Translate a timezone identifier to its IANA equivalent
  - IntlTimeZone::getID — Get timezone ID
  - IntlTimeZone::getIDForWindowsID — Translate a Windows timezone into a system timezone
  - IntlTimeZone::getOffset — Get the time zone raw and GMT offset for the given moment in time
  - IntlTimeZone::getRawOffset — Get the raw GMT offset (before taking daylight savings time into account
  - IntlTimeZone::getRegion — Get the region code associated with the given system time zone ID
  - IntlTimeZone::getTZDataVersion — Get the timezone data version currently used by ICU
  - IntlTimeZone::getUnknown — Get the "unknown" time zone
  - IntlTimeZone::getWindowsID — Translate a system timezone into a Windows timezone
  - IntlTimeZone::hasSameRules — Check if this zone has the same rules and offset as another zone
  - IntlTimeZone::toDateTimeZone — Convert to DateTimeZone object
  - IntlTimeZone::useDaylightTime — Check if this time zone uses daylight savings time
- Tarih Biçemleyici — IntlDateFormatter sınıfı
  - IntlDateFormatter::create — Bir tarih biçemleyici oluşturur
  - IntlDateFormatter::format — Tarih/saat değerini bir dizge olarak biçemler
  - IntlDateFormatter::formatObject — Formats an object
  - IntlDateFormatter::getCalendar — IntlDateFormatter tarafından kullanılan takvim türünü döndürür
  - IntlDateFormatter::getDateType — IntlDateFormatter tarafından kullanılan tarih gösterim türünü döndürür
  - IntlDateFormatter::getErrorCode — Son işlemin hata kodunu döndürür
  - IntlDateFormatter::getErrorMessage — Son işlemin hata iletisini döndürür
  - IntlDateFormatter::getLocale — Biçemleyicinin kullandığı yereli döndürür
  - IntlDateFormatter::getPattern — IntlDateFormatter tarafından kullanılan kalıbı döndürür
  - IntlDateFormatter::getTimeType — IntlDateFormatter tarafından kullanılan zaman gösterim türünü döndürür
  - IntlDateFormatter::getTimeZoneId — IntlDateFormatter tarafından kullanılan zaman dilimi tantıcısını döndürür
  - IntlDateFormatter::getCalendarObject — Get copy of formatterʼs calendar object
  - IntlDateFormatter::getTimeZone — Get formatterʼs timezone
  - IntlDateFormatter::isLenient — IntlDateFormatter esnek çözümleme mi yapıyor diye bakar
  - IntlDateFormatter::localtime — Tarih dizgesini alanlarına çözümler
  - IntlDateFormatter::parse — Dizgeyi bir zaman damgası değerine dönüştürür
  - IntlDateFormatter::parseToCalendar — Parse a string into a timestamp, updating an open calendar
  - IntlDateFormatter::setCalendar — Kullanılacak takvimi tanımlar
  - IntlDateFormatter::setLenient — Çözümleyiciye esneklik verir
  - IntlDateFormatter::setPattern — IntlDateFormatter tarafından kullanılan kalıbı tanımlar
  - IntlDateFormatter::setTimeZone — Sets formatterʼs timezone
- ResourceBundle — The ResourceBundle class
  - ResourceBundle::count — Get number of elements in the bundle
  - ResourceBundle::create — Create a resource bundle
  - ResourceBundle::get — Get data from the bundle
  - ResourceBundle::getErrorCode — Get bundle's last error code
  - ResourceBundle::getErrorMessage — Get bundle's last error message
  - ResourceBundle::getLocales — Get supported locales
- Spoofchecker — The Spoofchecker class
  - Spoofchecker::areConfusable — Checks if given strings can be confused
  - Spoofchecker::__construct — Constructor
  - Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters
  - Spoofchecker::setAllowedChars — Set the set of characters allowed when running checks
  - Spoofchecker::setAllowedLocales — Locales to use when running checks
  - Spoofchecker::setChecks — Set the checks to run
  - Spoofchecker::setRestrictionLevel — Set the restriction level
- Transliterator — The Transliterator class
  - Transliterator::__construct — Private constructor to deny instantiation
  - Transliterator::create — Create a transliterator
  - Transliterator::createFromRules — Create transliterator from rules
  - Transliterator::createInverse — Create an inverse transliterator
  - Transliterator::getErrorCode — Get last error code
  - Transliterator::getErrorMessage — Get last error message
  - Transliterator::listIDs — Get transliterator IDs
  - Transliterator::transliterate — Transliterate a string
- IntlBreakIterator — The IntlBreakIterator class
  - IntlBreakIterator::__construct — Private constructor for disallowing instantiation
  - IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences
  - IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points
  - IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks
  - IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks
  - IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks
  - IntlBreakIterator::createWordInstance — Create break iterator for word breaks
  - IntlBreakIterator::current — Get index of current position
  - IntlBreakIterator::first — Set position to the first character in the text
  - IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset
  - IntlBreakIterator::getErrorCode — Get last error code on the object
  - IntlBreakIterator::getErrorMessage — Get last error message on the object
  - IntlBreakIterator::getLocale — Get the locale associated with the object
  - IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries
  - IntlBreakIterator::getText — Get the text being scanned
  - IntlBreakIterator::isBoundary — Tell whether an offset is a boundaryʼs offset
  - IntlBreakIterator::last — Set the iterator position to index beyond the last character
  - IntlBreakIterator::next — Advance the iterator the next boundary
  - IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset
  - IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current
  - IntlBreakIterator::setText — Set the text being scanned
- IntlRuleBasedBreakIterator — The IntlRuleBasedBreakIterator class
  - IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset
  - IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules
  - IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object
  - IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position
  - IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position
- IntlCodePointBreakIterator — The IntlCodePointBreakIterator class
  - IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator
- IntlDatePatternGenerator — The IntlDatePatternGenerator class
  - IntlDatePatternGenerator::create — Creates a new IntlDatePatternGenerator instance
  - IntlDatePatternGenerator::getBestPattern — Determines the most suitable date/time format
- IntlPartsIterator — The IntlPartsIterator class
  - IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator
- UConverter — The UConverter class
  - UConverter::__construct — Create UConverter object
  - UConverter::convert — Convert string from one charset to another
  - UConverter::fromUCallback — Default "from" callback function
  - UConverter::getAliases — Get the aliases of the given name
  - UConverter::getAvailable — Get the available canonical converter names
  - UConverter::getDestinationEncoding — Get the destination encoding
  - UConverter::getDestinationType — Get the destination converter type
  - UConverter::getErrorCode — Get last error code on the object
  - UConverter::getErrorMessage — Get last error message on the object
  - UConverter::getSourceEncoding — Get the source encoding
  - UConverter::getSourceType — Get the source converter type
  - UConverter::getStandards — Get standards associated to converter names
  - UConverter::getSubstChars — Get substitution chars
  - UConverter::reasonText — Get string representation of the callback reason
  - UConverter::setDestinationEncoding — Set the destination encoding
  - UConverter::setSourceEncoding — Set the source encoding
  - UConverter::setSubstChars — Set the substitution chars
  - UConverter::toUCallback — Default "to" callback function
  - UConverter::transcode — Convert a string from one character encoding to another
- Grapheme (Sesletim Kümeleri) İşlevleri
  - grapheme_extract — UTF-8 kodlanmış bir metin tamponundan öntanımlı sesletim kümelerinden oluşan bir dizilimi döndürür
  - grapheme_str_split — Split a string into an array
  - grapheme_stripos — Harf büyüklüğüne duyarsız olarak bir dizgede ilk sesletim biriminin yerini bulur
  - grapheme_stristr — Harf büyüklüğüne duyarsız olarak bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
  - grapheme_strlen — Dizgenin sesletim birimi cinsinden uzunluğunu döndürür
  - grapheme_strpos — Bir dizgede ilk sesletim biriminin yerini bulur
  - grapheme_strripos — Harf büyüklüğüne duyarsız olarak bir dizgedeki sonuncu sesletim biriminin yerini bulur
  - grapheme_strrpos — Bir dizgedeki sonuncu sesletim biriminin yerini bulur
  - grapheme_strstr — Bir dizgedeki ilk sesletim birimine göre ilk veya ikinci parça ile döner
  - grapheme_substr — Bir alt dizge döndürür
- IDN İşlevleri
  - idn_to_ascii — Alan adını IDNA ASCII biçimine dönüştürür
  - idn_to_utf8 — Alan adı kodlamasını IDNA ASCII'den UTF-8'e dönüştürür
- IntlChar
  - IntlChar::charAge — Get the "age" of the code point
  - IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character
  - IntlChar::charDirection — Get bidirectional category value for a code point
  - IntlChar::charFromName — Find Unicode character by name and return its code point value
  - IntlChar::charMirror — Get the "mirror-image" character for a code point
  - IntlChar::charName — Retrieve the name of a Unicode character
  - IntlChar::charType — Get the general category value for a code point
  - IntlChar::chr — Return Unicode character by code point value
  - IntlChar::digit — Get the decimal digit value of a code point for a given radix
  - IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range
  - IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories
  - IntlChar::foldCase — Perform case folding on a code point
  - IntlChar::forDigit — Get character representation for a given digit and radix
  - IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point
  - IntlChar::getBlockCode — Get the Unicode allocation block containing a code point
  - IntlChar::getCombiningClass — Get the combining class of a code point
  - IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point
  - IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property
  - IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property
  - IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point
  - IntlChar::getNumericValue — Get the numeric value for a Unicode code point
  - IntlChar::getPropertyEnum — Get the property constant value for a given property name
  - IntlChar::getPropertyName — Get the Unicode name for a property
  - IntlChar::getPropertyValueEnum — Get the property value for a given value name
  - IntlChar::getPropertyValueName — Get the Unicode name for a property value
  - IntlChar::getUnicodeVersion — Get the Unicode version
  - IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point
  - IntlChar::isalnum — Check if code point is an alphanumeric character
  - IntlChar::isalpha — Check if code point is a letter character
  - IntlChar::isbase — Check if code point is a base character
  - IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character
  - IntlChar::iscntrl — Check if code point is a control character
  - IntlChar::isdefined — Check whether the code point is defined
  - IntlChar::isdigit — Check if code point is a digit character
  - IntlChar::isgraph — Check if code point is a graphic character
  - IntlChar::isIDIgnorable — Check if code point is an ignorable character
  - IntlChar::isIDPart — Check if code point is permissible in an identifier
  - IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier
  - IntlChar::isISOControl — Check if code point is an ISO control code
  - IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier
  - IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier
  - IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java
  - IntlChar::islower — Check if code point is a lowercase letter
  - IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property
  - IntlChar::isprint — Check if code point is a printable character
  - IntlChar::ispunct — Check if code point is punctuation character
  - IntlChar::isspace — Check if code point is a space character
  - IntlChar::istitle — Check if code point is a titlecase letter
  - IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property
  - IntlChar::isULowercase — Check if code point has the Lowercase Unicode property
  - IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)
  - IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property
  - IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property
  - IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU
  - IntlChar::isxdigit — Check if code point is a hexadecimal digit
  - IntlChar::ord — Return Unicode code point value of character
  - IntlChar::tolower — Make Unicode character lowercase
  - IntlChar::totitle — Make Unicode character titlecase
  - IntlChar::toupper — Make Unicode character uppercase
- IntlException — Exception class for intl errors
- IntlIterator — The IntlIterator class
  - IntlIterator::current — Get the current element
  - IntlIterator::key — Get the current key
  - IntlIterator::next — Move forward to the next element
  - IntlIterator::rewind — Rewind the iterator to the first element
  - IntlIterator::valid — Check if current position is valid
- intl İşlevleri
  - intl_error_name — Belirtilen hata kodunun simgesel ismini döndürür
  - intl_get_error_code — Son hatanın kodunu döndürür
  - intl_get_error_message — Son hatayı açıklayan bir dizge ile döner
  - intl_is_failure — Belirtilen hata kodunun bir başarısızlık göstergesi olup olmadığına bakar

# Çok Baytlı Dizgeler

# Giriş

Çoğu dilde her karakter 8 bitlik bir değerle bire bir eşleşerek gösterilebilirken bazılarında bunun için bir bayttan fazlası gerekir. (Bir bayt 8 bittir. Her bit, sıfır ve bir olmak üzere en fazla iki değere sahip olabilir. Bundan dolayı, bir baytlık genişlikle 256 (2^8) farklı değer gösterilebilir.) Çok baytlı karakter kodlama şeması, normal bit seviyesi kodlama sistemindeki 256 karakterden fazlasını gösterebilmek için geliştirilmiştir.

Çok baytlı karakter kodlaması kullanılan bir dizgede bazı karakterler ardarda iki veya daha fazla baytla gösterilebildiğinden bu dizgeler üzerinde değişiklik (ekleme, sıralama, vs.) yapmak için özel işlevler gerekir. Böyle dizgelere tek baytlık karakterlere göre tasarlanmış sıradan işlevler uygulanırsa bir çok baytlı karakterin baytlarının bölünmesi çok muhtemeldir. Böyle bir durumda çok baytlı dizgenin anlamı değişecektir.

`mbstring` modülü, PHP'de çok baytlı kodlama ile çalışabilmeniz için çok baytlı dizge işlevleri sağlar. Bunun yanında olası karakter kodlama çiftleri arasında karakter kodlaması dönüşümleri yapılabilmesini de sağlar. `mbstring` modülü, UTF_8, UCS-2 gibi Evrenkod temelli kodlamaların yanında uyumluluk için tek baytlı karakter kodlamalarını da destekleyecek şekilde tasarlanmıştır (Bkz: Desteklenen Karakter Kodlamaları).

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

`mbstring` öntanımlı olarak etkin modüllerden biri değildir, yani PHP'yi derlerken etkinleştirmeniz gerekir. Ayrıntılar için Yapılandırma ve Kurulum bölümüne bakınız.

`mbstring` modülü ile ilgili yapılandırma seçenekleri:

- --enable-mbstring: `mbstring` işlevlerini etkin kılar. `mbstring` işlevleri kullanmak istiyorsanız yapılandırma seçeneklerinize bunu da dahil etmelisiniz.

  `mbstring` modülü libmbfl kütüphanesini gerektirir. Bu kütüphane `mbstring` ile birlikte gelmektedir. PHP 7.3.0 öncesinde, libmbfl sistemde zaten kuruluysa, kurulu kütüphanenin kullanılması için --with-libmbfl[=DiZiN] seçeneğini belirtebilirsiniz.

- --disable-mbregex: Çok baytlı karakter destekli düzenli ifade işlevlerini iptal eder.

  Oniguruma, çok baytlı karakter destekli düzenli ifade işlevleri için gereklidir. PHP 7.4.0'dan itibaren pkg-config, libonig kütüphanesini saptamak için kullanılmaktadır. PHP 7.4.0'dan önce Oniguruma, `mbstring` ile paketlenmişti, ancak --with-onig[=DIR] seçeneği ile önceden yüklenmiş bir libonig'e rağmen derleme yapmak mümkündü.

  Çok baytlı regex geriye dönük sınamasını --disable-mbregex-backtrack seçeneğini belirterek iptal etmek mümkündür.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

mbstring yapılandırma yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mbstring.language | "neutral" | `INI_ALL` |
mbstring.detect_order | NULL | `INI_ALL` |
mbstring.http_input | "pass" | `INI_ALL` | Kullanımı önerilmemektedir.
mbstring.http_output | "pass" | `INI_ALL` | Kullanımı önerilmemektedir.
mbstring.internal_encoding | NULL | `INI_ALL` | Kullanımı önerilmemektedir.
mbstring.script_encoding | NULL | `INI_ALL` | PHP 5.0.0'da kaldırıldı. Yarine zend.script_encoding kullanın.
mbstring.substitute_character | NULL | `INI_ALL` |
mbstring.func_overload | "0" | `INI_SYSTEM` | PHP <= 5.2.6'da `INI_PERDIR`. PHP 7.2.0 itibariyle kullanımı önerilmemektedir.PHP 8.0.0'da kaldırıldı.
mbstring.encoding_translation | "0" | `INI_PERDIR` |
mbstring.http_output_conv_mimetypes | "^(text/|application/xhtml\+xml)" | `INI_ALL` |
mbstring.strict_detection | "0" | `INI_ALL` |
mbstring.regex_retry_limit | "1000000" | `INI_ALL` | PHP 7.4.0 ve sonrasında kullanılabilir.
mbstring.regex_stack_limit | "100000" | `INI_ALL` | PHP 7.3.5 ve sonrasında kullanılabilir.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mbstring.language` string

  Mbstring modülünde kullanılan öntanımlı ulusal dil ayarı (NLS). Bu yönerge, php.ini dosyasında kendinden sonra tanımlanması gereken `mbstring.internal_encoding` yönergesini otomatik ve sihirli olarak etkin kılar.

`mbstring.encoding_translation` bool

  HTTP sorgularında girdi kodlamasını algılayıp dahili karakter kodlamasına dönüştüren şeffaf karakter kodlama süzgecini etkin kılar.

`mbstring.internal_encoding` string
  Uyarı

  Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

  Öntanımlı dahili karakter kodlamasını tanımlar.

  Bu boş bıraklımalı ve yerine `default_charset` kullanılmalıdır.

`mbstring.http_input` string
  Uyarı

  Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

  Öntanımlı HTTP girdi karakter kodlamasını tanımlar.

  Bu boş bıraklımalı ve yerine `default_charset` kullanılmalıdır.

`mbstring.http_output` string
  Uyarı

  Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

  Öntanımlı HTTP çıktı karakter kodlamasını tanımlar (çıktı, dahili karakter kodlamasından HTTP çıktı karakter kodlamasına dönüştürülerek çıktılanır).

  Bu boş bıraklımalı ve yerine `default_charset` kullanılmalıdır.

`mbstring.detect_order` string

  Öntanımlı karakter kodlaması algılama sırasını tanımlar. Ayrıca bakınız: mb_detect_order().

`mbstring.substitute_character` string

  Geçersiz karakter kodlaması yerine kullanılacak karakteri tanımlar. Desteklenen değerler için mb_substitute_character() işlevine bakın.

`mbstring.func_overload` string
  Uyarı

  Bu özelliğin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

  Mbstring taydaşları tarafından sağlanan tek baytlık işlevlerin yerine otomatik olarak mbstring işlevlerinin kullanılmasını sağlar. Daha ayrınılı bilgi için İşlevlerin Aşırı Yüklenme Özelliği bölümüne bakınız.

  Bu atama sadece php.ini dosyasından değiştiilebilir.

`mbstring.http_output_conv_mimetypes` string

`mbstring.strict_detection` bool

  Katı kodlama algılaması etkin kılınır. Açıklama ve örnekler mb_detect_encoding()işlevinde bulunabilir.

`mbstring.regex_retry_limit` int

  Çok baytlı düzenli ifade eşleştirmesi sırasında işlenebilen geri izleme miktarını sınırlar.

  Bu yönerge yalnızca kurulum oniguruma >= 6.8.0 ile ilintilenmişse kullanılabilir.

`mbstring.regex_stack_limit` int

  Mbstring düzenli ifadelerinin yığıt derinliği sınırlar.

» HTML 4.01 belirtimine göre, tarayıcıların, bir formdan sayfada kullanılandan farklı bir karakter kodlaması ile veri göndermelerine izin verilmektedir. Tarayıcılar tarafından kullanılan karakter kodlamasının saptanması hakkında bilgi edinmek için mb_http_input() işlevine bakınız.

Günümüz tarayıcıları bir HTML sayfanın karakter kodlamasını kabul edilebilir bir doğrulukta tahmin edebiliyor olsalar da, `Content-Type` HTTP başlığının `charset` bağımsız değişkenine header() işleviyle veya default_charset INI yönergesiyle uygun bir değer atamak daha iyidir.

Örnek 1 - php.ini ayar örnekleri

    ; Öntanımlı dili belirtin.
    mbstring.language        = Neutral; öntanımlıdır; belli bir dil yoktur (UTF-8)
    mbstring.language        = Turkish; öntanımlı dil Türkçe
    mbstring.language        = Japanese; öntanımlı dil Japonca

    ;; Öntanımlı dahili kodlamasını tanımlayın.
    ;; Önemli: PHP'de çalışan bir karakter kodlaması belirtin
    mbstring.internal_encoding    = UTF-8  ; Dahili kodlama UTF-8

    ;; HTTP girdi kodlaması dönüşümü etkindir.
    mbstring.encoding_translation = On

    ;; Öntanımlı HTTP girdi karakter kodlamasını tanımlayın.
    ;; Önemli: Betik, http_input ayarını değiştiremez.
    mbstring.http_input           = pass    ; Dönüşüm yok.
    mbstring.http_input           = auto    ; HTTP girdisi otomatik
               ; "auto"  mbstring.language atamasına göre genişletilir.
    mbstring.http_input           = SJIS    ; HTTP girdisi SJIS olur
    mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Sıralama belirtir

    ;; Öntanımlı HTTP çıktı karakter kodlamasını tanımlayın.
    mbstring.http_output          = pass    ; Dönüşüm yok.
    mbstring.http_output          = UTF-8   ; HTTP çıktı kodlaması UTF-8

    ;; Öntanımlı kodlama algılama sırasını belirtin.
    mbstring.detect_order         = auto    ; Algılama sırası otomatik
    mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Sıralama belirtir

    ;; Öntanımlı geçersiz karakter ikame karakteri
    mbstring.substitute_character = 12307   ; Bir Evrenkodlu değer
    mbstring.substitute_character = none    ; Karakter basılmaz
    mbstring.substitute_character = long    ; Uzun, örnek: U+3000,JIS+7E7E

Örnek 2 - `EUC-JP` kullanıcıları için php.ini ayarları

    ;; Çıktı Tamponlaması kapalı
    output_buffering      = Off

    ;; HTTP başlık karakter kümesi
    default_charset       = EUC-JP

    ;; Öntanımlı dil: Japonca
    mbstring.language = Japanese

    ;; HTTP girdi kodlaması dönüşümü etkin
    mbstring.encoding_translation = On

    ;; HTTP girdi kodlaması dönüşümü: otomatik
    mbstring.http_input   = auto

    ;; HTTP çıktısı EUC-JP'ye dönüştürülür
    mbstring.http_output  = EUC-JP

    ;; Dahili kodlama EUC-JP'dir
    mbstring.internal_encoding = EUC-JP

    ;; Geçersiz karakter basılmaz
    mbstring.substitute_character = none

Örnek 3 - `SJIS` kullanıcıları için php.ini ayarları

    ;; Çıktı Tamponlaması etkin
    output_buffering     = On

    ;; çıktı dönüşümünü mb_output_handler yapar
    output_handler       = mb_output_handler

    ;; HTTP başlık karakter kümesi
    default_charset      = Shift_JIS

    ;; Öntanımlı dil: Japonca
    mbstring.language = Japanese

    ;; HTTP girdi kodlaması dönüşümü: otomatik
    mbstring.http_input  = auto

    ;; HTTP çıktısı SJIS'e dönüştürülür
    mbstring.http_output = SJIS

    ;; Dahili kodlama EUC-JP'dir
    mbstring.internal_encoding = EUC-JP

    ;; Geçersiz karakter basılmaz
    mbstring.substitute_character = none

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`MB_OVERLOAD_MAIL` (integer)
  PHP 8.0.0'da kaldırıldı.
`MB_OVERLOAD_STRING` (integer)
  PHP 8.0.0'da kaldırıldı.
`MB_OVERLOAD_REGEX` (integer)
  PHP 8.0.0'da kaldırıldı.
`MB_CASE_UPPER` (integer)
  Tam bir küçük harf satır katlaması gerçekleştirir. Bu, dizinin uzunluğunu değiştirebilir. Bu, mb_strtolower () tarafından kullanılan kiptir.
`MB_CASE_LOWER` (integer)
`MB_CASE_TITLE` (integer)
  Cased ve CaseIgnorable türetilmiş Unicode özelliklerine göre tam bir başlık-büyük/küçük harf dönüşümü gerçekleştirir. Özellikle bu, alıntıların ve kesme işaretlerinin işlenmesini iyileştirir. Bu, dizinin uzunluğunu değiştirebilir.
`MB_CASE_FOLD` (int)
  Dizede bulunan büyük/küçük harf ayrımlarını ortadan kaldıran bir tam büyük/küçük harf dönüşümü gerçekleştirir. Bu, harf büyüklüğüne duyarsız eşleştirme için kullanılır. Bu, dizinin uzunluğunu değiştirebilir. PHP 7.3'ten beri mevcuttur.
`MB_CASE_LOWER_SIMPLE` (int)
  Basit bir küçük harfe dönüşüm gerçekleştirir. Bu, dizenin uzunluğunu değiştirmez. PHP 7.3'ten beri mevcuttur.
`MB_CASE_UPPER_SIMPLE` (int)
  Basit bir büyük harfe dönüşüm gerçekleştirir. Bu, dizenin uzunluğunu değiştirmez. PHP 7.3'ten beri mevcuttur.
`MB_CASE_TITLE_SIMPLE` (int)
  Basit başlık-büyük/küçük harf dönüşümü gerçekleştirir. Bu, dizenin uzunluğunu değiştirmez. PHP 7.3'ten beri mevcuttur.
`MB_CASE_FOLD_SIMPLE` (int)
  Dizede bulunan büyük/küçük harf ayrımlarını kaldıran basit bir büyük/küçük harf dönüşümü gerçekleştirir. Bu, harf büyüklüğüne duyarsız eşleştirme için kullanılır. Bu, dizenin uzunluğunu değiştirmez. MBString eklentisi tarafından dahili olarak harf büyüklüğüne duyarsız işlemlerde kullanılır. PHP 7.3'ten beri mevcuttur.
`MB_ONIGURUMA_VERSION` (string)
  Oniguruma sürüm, örn. `6.9.4`. PHP 7.4'ten beri mevcuttur.

# Desteklenen kodlamaların özetleri

Desteklenen kodlamaların özetleri
IANA karakter kümesi kütüğündeki isim | Dayandığı karakter kümesi | Açıklama | Ek bilgi
--- | --- | --- | ---
ISO-10646-UCS-4 | ISO 10646 | 31 bitlik kod genişliğine sahip Evrensel Karakter Kümesi, ISO/IEC 10646 tarafından UCS-4 olarak standartlaştırılmıştır. Evrenkodlu eşlemin en son sürümü ile eşzamanlı olarak güncellenir. | Eğer bu isim kodlama dönüşüm oluşumlarında kullanılırsa, dönüştürücü ard arda gelen baytların sıralamasını başa bir bayt sıralama imi ekleyerek betimlemeye çalışır.
ISO-10646-UCS-4 | UCS-4BE | Yukarı bakınız. | `UCS-4`'ün tersine, bayt sıralamasında en kıymetli baytın başta olduğu varsayılır.
ISO-10646-UCS-4 | UCS-4LE | Yukarı bakınız. | `UCS-4`'ün tersine, bayt sıralamasında en kıymetsiz baytın başta olduğu varsayılır.
ISO-10646-UCS-2 | UCS-2 | 16 bitlik kod genişliğine sahip Evrensel Karakter Kümesi, ISO/IEC 10646 tarafından UCS-2 olarak standartlaştırılmıştır. Evrenkodlu eşlemin en son sürümü ile eşzamanlı olarak güncellenir. | Eğer bu isim kodlama dönüşüm oluşumlarında kullanılırsa, dönüştürücü ard arda gelen baytların sıralamasını başa bir bayt sıralama imi ekleyerek betimlemeye çalışır.
ISO-10646-UCS-2 | UCS-2BE | Yukarı bakınız. | `UCS-2`'nin tersine, bayt sıralamasında en kıymetli baytın başta olduğu varsayılır.
ISO-10646-UCS-2 | UCS-2LE | Yukarı bakınız. | `UCS-2`'nin tersine, bayt sıralamasında en kıymetsiz baytın başta olduğu varsayılır.
UTF-32 | Unicode | 32 bitlik birim genişlikte Evrenkod Dönüşüm Biçemi. Kodlama uzayı Evrenkod karakter kümesi standardını kullanır. Evrenkod kod uzayı 21 bit genişlikte olduğundan, bu kodlama şeması UCS-4'e eşdeğer değildir. | Eğer bu isim kodlama dönüşüm oluşumlarında kullanılırsa, dönüştürücü ard arda gelen baytların sıralamasını başa bir bayt sıralama imi ekleyerek betimlemeye çalışır.
UTF-32BE | Unicode | Yukarı bakınız. | `UTF-32`'nin tersine, bayt sıralamasında en kıymetli baytın başta olduğu varsayılır.
UTF-32LE | Unicode | Yukarı bakınız. | `UTF-32`'nin tersine, bayt sıralamasında en kıymetsiz baytın başta olduğu varsayılır.
UTF-16 | Unicode | 16 bitlik birim genişlikte Evrenkod Dönüşüm Biçemi. Unicode 2.0 ve UTF-16, 21 bitlik bir kod uzayına sahip olduğundan, UTF-16 UCS-2'ye eşdeğer değildir. | Eğer bu isim kodlama dönüşüm oluşumlarında kullanılırsa, dönüştürücü ard arda gelen baytların sıralamasını başa bir bayt sıralama imi ekleyerek betimlemeye çalışır.
UTF-16BE | Unicode | Yukarı bakınız. | `UTF-16`'nın tersine, bayt sıralamasında en kıymetli baytın başta olduğu varsayılır.
UTF-16LE | Unicode | Yukarı bakınız. | `UTF-16`'nın tersine, bayt sıralamasında en kıymetsiz baytın başta olduğu varsayılır.
UTF-8 | Unicode / UCS | 8 bitlik birim genişlikte Evrenkod Dönüşüm Biçemi. | none
UTF-7 | Unicode | » RFC2152'de belirtilen, epostalara uygun bir Evrenkod dönüşüm biçemi. | none
(none) | Unicode | » IMAP protokolünde kullanmak üzere özelleştirilmiş bir UTF-7 çeşidi. | none
US-ASCII (MIME adı olarak tercih edilir) / iso-ir-6 / ANSI_X3.4-1986 / ISO_646.irv:1991 / ASCII / ISO646-US / us / IBM367 / CP367 / csASCII | ASCII / ISO 646 | Bilgi dönüşümü için Amerikan kod standardı olup genellikle 7 bitlik kodlamayı kullanır. Ayrıca, ISO 646 ile bir uluslararası standart haline getirilmiştir. | (none)
EUC-JP (MIME adı olarak tercih edilir) / Extended_UNIX_Code_Packed_Format_for_Japanese / csEUCPkdFmtJapanese | US-ASCII / JIS X0201:1997 birleşimi (hankaku kana part) / JIS X0208:1990 / JIS X0212:1990 | İsim, Extended UNIX Code Packed Format for Japanese sözcüklerinden türetilmiş bir kısaltma olup, bu kodlama genellikle Unix ve benzeri platformlarda kullanılır. Özgün kodlama şeması, Genişletilmiş UNIX Kodu, ISO 2022 temel alınarak tasarlanmıştır. | EUC-JP adıyla anılan karakter kümesi, OS/2® ve Microsoft® Windows® tarafından kullanılan IBM932 / CP932'den farklıdır. Bu platformlar arasında dönüşüm bilgisi için EUCJP-WIN kullanın.
Shift_JIS (MIME adı olarak tercih edilir) / MS_Kanji / csShift_JIS | JIS X0201:1997 / JIS X0208:1997 birleşimi | Shift_JIS, eski kodlama şeması JIS X 0201:1976 ile uyumluluk sağlamak için pazara getirilen kişisel Japonca kelime işlemciler zamanında, 80'lerin başlarında geliştirlmiştir. IANA tanımına göre Shift_JIS karakter kümesi IBM932 / CP932'den pek az farklıdır. Bununla birlikte, "SJIS" / "Shift_JIS" çoğunlukla yanlış olarak bu kod kümelerini betimlemek için kullanılır. | CP932 kod eşlemi için, SJIS-WIN kullanın.
(none) | JIS X0201:1997 / JIS X0208:1997 / IBM eklentileri / NEC eklentileri birleşimi | Bu "kodlama" EUC-JP ile aynı kodlama şemasını kullanırsa da dayandıkları karakter kümeleri farklıdır. Yani, aynı kodlar farklı karakterlere karşılık gelir. | none
Windows-31J / csWindows31J | JIS X0201:1997 / JIS X0208:1997 / IBM eklentileri / NEC eklentileri birleşimi | Bu "kodlama" Shift_JIS ile aynı kodlama şemasını kullanırsa da dayandıkları karakter kümeleri farklıdır. Yani aynı kodlar farklı karakterlere karşılık gelir. | (none)
ISO-2022-JP (MIME adı olarak tercih edilir) / csISO2022JP | US-ASCII / JIS X0201:1976 / JIS X0208:1978 / JIS X0208:1983 | » RFC1468 | (none)
JIS |  |  |
ISO-8859-1 |  |  |
ISO-8859-2 |  |  |
ISO-8859-3 |  |  |
ISO-8859-4 |  |  |
ISO-8859-5 |  |  |
ISO-8859-6 |  |  |
ISO-8859-7 |  |  |
ISO-8859-8 |  |  |
ISO-8859-9 |  |  |
ISO-8859-10 |  |  |
ISO-8859-13 |  |  |
ISO-8859-14 |  |  |
ISO-8859-15 |  |  |
ISO-8859-16 |  |  |
byte2be |  |  |
byte2le |  |  |
byte4be |  |  |
byte4le |  |  |
BASE64 |  |  |
HTML-ENTITIES |  |  |
7bit |  |  |
8bit |  |  |
EUC-CN |  |  |
CP936 |  |  |
HZ |  |  |
EUC-TW |  |  |
CP950 |  |  |
BIG-5 |  |  |
EUC-KR |  |  |
UHC (CP949) |  |  |
ISO-2022-KR |  |  |
Windows-1251 (CP1251) |  |  |
Windows-1252 (CP1252) |  |  |
CP866 (IBM866) |  |  |
KOI8-R |  |  |
KOI8-U |  |  |

# Japonca çok baytlı kodlamanın temelleri

Japonca karakterler sadece çok baytlı karakter kodlaması ile gösterilebilir ve çok baytlı kodlama standartlar platforma ve kullanılan metnin amacına göre değişir. Daha da kötüsü bu kodlama standartları birbirlerinden oldukça farklıdır. Bir geliştirici, Japonca bir ortamda kullanılabilecek bir HTTP uygulaması oluşturulurken doğru karakter kodlamalarını kullanabilmek için bu karmaşayı iyi bilmek zorundadır.

- Altı bayta kadar bayt içerebilen karakterlerin saklanması
- Çoğu Japonca çok baytlı karakter tek baytlı karakterelerin iki katı genişliktedir. Bu karakterlere Japonca'da "zen-kaku" denir ve "tam geniş" anlamına gelir. Dar olanlarına ise "han-kaku" denir ve "yarı geniş" anlamına gelir. Karakterlerin çizgesel özellikleri, bunları göstermekte kullanılan yazı tiplerine bağlıdır.
- Bazı karakter kodlamaları, belli bir kod bölgesine (`00h` .. `7fh`) geçmek için ISO-2022 ile tanımlanmış kaydırma (öncelem) dizilimleri kullanır.
- SMTP/NNTP için ISO-2022-JP kullanılmalı; başlıklar ve öğeler RFC gereksinimlerine uygun olarak yeniden kodlanmalıdır. Bunlar elzem olmasa da çoğu kullanıcı aracı başka kodlama yöntemi tanımadığından bunları kullanmak daha iyidir.
- » i-mode veya » EZweb gibi taşınabilir telefon hizmetleri için oluşturulan sayfaların Shift_JIS kullandıkları varsayılır.
- » i-mode veya » EZweb gibi taşınabilir telefon hizmetleri için resim-yazı (pictogram) karakterleri desteklenmektedir.

# HTTP Girdisi ve Çıktısı

HTTP giriş/çıkış karakter kodlaması dönüşümü ikil verileri de dönüştürebilir, HTTP girdi/çıktısında ikil veri kullanılması durumunda karakter kod dönüşümünü kullanıcının denetleyeceği varsayılır.

> Bilginize:

> HTML formunun `enctype` özniteliğine `multipart/form-data` atanır ve php.ini dosyasında `mbstring.encoding_translation` yönergesine On değeri atanırsa POST edilen değişkenler ve karşıya yüklenen dosyaların isimleri de dahili karakter kodlamasına dönüştürülür. Bununla birlikte, sorgu anahtarlarına dönüşüm uygulanmaz.

- HTTP Girdisi

  HTTP girdi karakter kümesini bir PHP betiğinden denetlemenin bir yolu yoktur. HTTP girdi karakter kümesi dönüşümü php.ini dosyasından kapatılır.

  Örnek 1 - HTTP girdi dönüşümünün php.ini'de kapatılması

      ;; HTTP girdi dönüşümünü kapatalım
      mbstring.http_input = pass
      ;; HTTP girdi dönüşümünü kapatalım
      mbstring.encoding_translation = Off

  PHP bir Apache modülü olarak kullanıldığında bu ayarları .htaccess ile dizinler için ve httpd.conf içinde sanal konaklar için geçersiz kılmak mümkündür. Ayrıntılar için Apache belgelerine ve bu kılavuzun Çalışma Anı Yapılandırması bölümüne bakınız.

- HTTP Çıktısı

  Çıktı karakter kodlaması dönüşümünü etkin kılmanın çeşitli yolları vardır. Biri php.ini dosyasını kullanmak; diğeri ise ob_start() ile geriçağırım işlevi olarak mb_output_handler() kullanmaktır.

Örnek 2 - php.ini ayarları örneği

    ;; Çıktı karakter kodlaması dönüşümünü tüm PHP sayfaları için etkin kılalım

    ;; Çıktı tamponlamasını açalım
    output_buffering    = On

    ;; çıktı dönüşümünü mb_output_handler yapsın
    output_handler      = mb_output_handler

Örnek 3 - Betik örneği

    <?php

    // Çıktı karakter kodlaması dönüşümünü sadece bu sayfa için etkin kılalım

    // HTTP Çıktı karakter kodlamasını SJIS yapalım
    mb_http_output('SJIS');

    // Geriçağırım işlevi olarak "mb_output_handler" belirtelim ve
    // tamponlamayı başlatalım
    ob_start('mb_output_handler');

    ?>

# Desteklenen Karakter Kodlamaları

Şu anda, `mbstring` modülü tarafından aşağıdaki karakter kodlamaları desteklenmektedir. Bu karakter kodlamalarınının her birini `mbstring` işlevlerinin `kodlama` bağımsız değişkeninde belirtebilirsiniz.

Bu PHP modülünde şu karakter kodlamaları desteklenmektedir:

- UCS-4*
- UCS-4BE
- UCS-4LE*
- UCS-2
- UCS-2BE
- UCS-2LE
- UTF-32*
- UTF-32BE*
- UTF-32LE*
- UTF-16*
- UTF-16BE*
- UTF-16LE*
- UTF-7
- UTF7-IMAP
- UTF-8*
- ASCII*
- EUC-JP*
- SJIS*
- eucJP-win*
- SJIS-win*
- ISO-2022-JP
- ISO-2022-JP-MS
- CP932
- CP51932
- SJIS-mac (alias: MacJapanese)
- SJIS-Mobile#DOCOMO (alias: SJIS-DOCOMO)
- SJIS-Mobile#KDDI (alias: SJIS-KDDI)
- SJIS-Mobile#SOFTBANK (alias: SJIS-SOFTBANK)
- UTF-8-Mobile#DOCOMO (alias: UTF-8-DOCOMO)
- UTF-8-Mobile#KDDI-A
- UTF-8-Mobile#KDDI-B (alias: UTF-8-KDDI)
- UTF-8-Mobile#SOFTBANK (alias: UTF-8-SOFTBANK)
- ISO-2022-JP-MOBILE#KDDI (alias: ISO-2022-JP-KDDI)
- JIS
- JIS-ms
- CP50220
- CP50220raw
- CP50221
- CP50222
- ISO-8859-1*
- ISO-8859-2*
- ISO-8859-3*
- ISO-8859-4*
- ISO-8859-5*
- ISO-8859-6*
- ISO-8859-7*
- ISO-8859-8*
- ISO-8859-9*
- ISO-8859-10*
- ISO-8859-13*
- ISO-8859-14*
- ISO-8859-15*
- ISO-8859-16*
- byte2be
- byte2le
- byte4be
- byte4le
- BASE64
- HTML-ENTITIES (rumuz: HTML)
- 7bit
- 8bit
- EUC-CN*
- CP936
- GB18030
- HZ
- EUC-TW*
- CP950
- BIG-5*
- EUC-KR*
- UHC (rumuz: CP949)
- ISO-2022-KR
- Windows-1251 (rumuz: CP1251)
- Windows-1252 (rumuz: CP1252)
- CP866 (rumuz: IBM866)
- KOI8-R*
- KOI8-U*
- ArmSCII-8 (rumuz: ArmSCII8)

* imi, bu kodlamaların düzenli ifadelerde de kullanılabildiğini ifade eder.

Bir kodlama ismi kabul eden her php.ini yönergesi ayrıca "`auto`" ve "`pass`" değerlerini de kabul eder. Bir kodlama ismi kabul eden her `mbstring` işlevinde ayrıca "`auto`" değeri de belirtilebilir.

Değer olarak "`pass`" atanmışsa hiçbir karakter kodlaması dönüşümü yapılmaz.

Değer olarak "`auto`" atanmışsa bu değer öntanımlı ulusal dil ayarı (NLS) için tanımlanmış kodlamaların listesine genişletilir. Örneğin, NLS olarak `Japanese` tanımlanmışsa bu değerin "`ASCII,JIS,UTF-8,EUC-JP,SJIS`" olduğu varsayılır.

Ayrıca bakınız: mb_detect_order()

# İşlevlerin Aşırı Yüklenme Özelliği

Uyarı

Bu özelliğin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

Genellikle, çalışan bir PHP uygulamasını çok baytlı bir ortamda çalışır duruma getirmek çoğu kişiye zor gelir. Bu durum genellikle çok baytlı kodlanmış dizgelerle düzgün şekilde çalışamayan substr() gibi standart dizge işlevleriyle yazılmış PHP uygulamalarında karşımıza çıkar.

Mbstring modülü, bir uygulamayı çok baytlı ortamlarda çalışır duruma getirmek için kod değişikliği yapılmaksızın standart dizge işlevlerinin çok baytlı taydaşlarının yerini almasını sağlayan 'işlevlerin aşırı yüklenme' özelliğini destekler. Örneğin, eğer aşırı yükleme etkin kılınmışsa substr() işlevi yerine mb_substr() işlevi çağrılır. Bu özellik, çoğu durumda, sadece tek baytlı karakter kodlamasını destekleyen uygulamaların çok baytlı karakter kodlaması kullanılan ortamlara kolayca uyarlanmasını sağlar.

İşlevlerin aşırı yüklenmesini sağlamak için php.ini dosyasında `mbstring.func_overload` yönergesine, aşırı yüklenecek işlev sınıflarını belirten bit maskelerinden oluşan bir değerin atanması gerekir. mail() işlevini aşırı yüklemek için 1, dizge işlevleri için 2, düzenli ifade işlevleri için 4 girmek gerekir. Örneğin, yönergeye 7 değeri atanırsa bu üç sınıfa ait işlevler aşırı yüklenecektir. Aşırı yüklenebilen işlevler aşağıda listelenmiştir.

Aşırı yüklenebilen işlevler
mbstring.func_overload değeri | özgün işlev | aşırı yükleyen işlev
--- | --- | ---
1 | mail() | mb_send_mail()
2 | strlen() | mb_strlen()
2 | strpos() | mb_strpos()
2 | strrpos() | mb_strrpos()
2 | substr() | mb_substr()
2 | strtolower() | mb_strtolower()
2 | strtoupper() | mb_strtoupper()
2 | stripos() | mb_stripos()
2 | strripos() | mb_strripos()
2 | strstr() | mb_strstr()
2 | stristr() | mb_stristr()
2 | strrchr() | mb_strrchr()
2 | substr_count() | mb_substr_count()

> Bilginize:

> Dizin bağlamında yapılandırmalarda işlevlerin aşırı yüklenme özelliğinin kullanılması önerilmez. Çünkü, bu özelliğin üretim ortamında kullanılabilecek kararlılığa sahip olduğu henüz onaylanmamıştır; bu bakımdan önceden kestirilemeyen bazı davranışlarla karşılaşmak olasıdır.

# PHP Karakter Kodlaması Gereksinimleri

Aşağıdaki karakter kodlaması türleri PHP'de güvenle kullanılabilmektedir.

- Tek baytlık kodlama

  - `00h` .. `7fh` aralığındaki karakterlerden oluşan ASCII uyumlu (ISO646 uyumlu) eşlemler.

- Çok baytlı kodlama

  - `00h` .. `7fh` aralığındaki karakterlerden oluşan ASCII uyumlu (ISO646 uyumlu) eşlemler.
  - ISO2022 öncelem dizileri kullanılmaz.
  - `00h` .. `7fh` aralığındaki baytların hiçbiri, çok baytlı bir karakterin baytlarından biri olarak kullanılmaz.

Aşağıdaki karakter kodlamaları PHP'da çalışmayan karakter kodlaması örnekleridir.

    JIS, SJIS, ISO-2022-JP, BIG-5

Özellikle bu karakter kodlamalarıyla yazılmış dizgelerin betik içinde betimleyici olarak kulanıldığı durumda, bu kodlamalarla yazılmış PHP betikleri çalışmasa da, gelen HTTP sorguları için `mbstring` modülünün şeffaf kodlama süzme işlevi etkin kılınarak bu kodlamalardan büyük oranda kaçınmak mümkündür.

> Bilginize:

> Çözümleyici, tarayıcı ve karakter kodlaması konularında uzmanlığınız yoksa dahili karakter kodlaması olarak SJIS, BIG5, CP936, CP949 ve GB18030'u kesinlikle kullanmamalısınız.

> Bilginize:

> PHP ile bir veritabanını bağlanıyorsanız, başarımı artırmak ve kullanım kolaylığı bakımından dahili kodlama ile veritabanında kullandığınız kodlamanın aynı olması tercih edilmelidir.

> PostgreSQL kullanıyorsanız ve PostgreSQL ön ve artalan arasında otomatik karakter kodlaması dönüşümünü destekliyorsa, veritabanında kullanılan karakter kodlaması PHP'nin kullandığından farklı olabilir.

# Çok baytlı Dizge İşlevleri

# Kaynakça

Çok baytlı karakter kodlama şemaları ve bunlarla ilgili konular oldukça karmaşık olup bu belgelemenin kapsamı dışındadır. Bu konularla ilgili daha ayrıntılı bilgi edinmek için aşağıdaki adreslere ve başka kaynaklara bakınız.

- Evrenkod gereçleri

  » http://www.unicode.org/

- Japonca/Korece/Çince karakter bilgileri

  » https://resources.oreilly.com/examples/9781565922242/blob/master/doc/cjk.inf

# mb_check_encoding

(PHP 4 >= 4.4.3, PHP 5 >= 5.1.3, PHP 7, PHP 8)

mb_check_encoding — Dizgelerin belirtilen kodlama için geçerli olup olmadığını sınar

### Açıklama

function mb_check_encoding(array|string|null `$değer` = `null`, ?string `$kodlama` = `null`): bool

Belirtilen bayt diziliminin belirtilen kodlamaya uygun olup olmadığını sınar. `değer` bir dizi ise tüm anahtarlar ve değerler sırayla doğrulanır. "Geçersiz Kodlama Saldırısı"'nı önlemek için yararlıdır.

### Bağımsız Değişkenler

`değer`

  Sınanacak bayt akımı veya bir dizi. Belirtilmezse, isteğin başlangıcından itibaren tüm girdi sınanır.

  Uyarı

  PHP 8.1.0 ve sonrasında, bu bağımsız değişkenin atlanması veya `null` aktarılması önerilmemektedir.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `değer` belirtilmeksizin veya bağımsız değişkene `null` atanarak işlevin çağrılması önerilmemektedir.
8.0.0 | `değer` ve `kodlama` artık `null` olabiliyor.
7.2.0 | İşlev `değer` olarak artık bir dizi olabiliyor. Evvelce sadece dizgeler destekleniyordu.

# mb_chr

(PHP 7 >= 7.2.0, PHP 8)

mb_chr — Unicode karakter koduna göre karakteri döndürür

### Açıklama

function mb_chr(int `$karakter_kodu`, ?string `$kodlama` = `null`): string|false

Belirtilen karakter kodlamasına göre belirtilen karakter kodunun Unicode karakterini döndürür.

mb_ord() işlevinin tersiniridir.

### Bağımsız Değişkenler

`karakter_kodu`

  Unicode karakter kodu. Örn, "🐘" karakterini döndürmek için `128024` belirtilmelidir.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Başarı durumunda Unicode karakter kodu belirtilen karakterin belirtilen karakter kodlamasındaki gösterimini, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Farklı karakter kodlarının denenmesi

    <?php
    $values = [65, 63, 0x20AC, 128024];
    foreach ($values as $value) {
        var_dump(mb_chr($value, 'UTF-8'));
        var_dump(mb_chr($value, 'ISO-8859-15'));
    }
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "A"
    string(1) "A"
    string(1) "?"
    string(1) "?"
    string(3) "€"
    string(1) "�"
    string(4) "🐘"
    bool(false)

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_ord() - Karakterin Unicode karakter kodunu döndürür
- IntlChar::ord() - Return Unicode code point value of character
- chr() - Bir sayıdan tek baytlık dizge üretir

# mb_convert_case

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mb_convert_case — Bir dizgeye büyük-küçük harf dönüşümü uygular

### Açıklama

function mb_convert_case(string `$dizge`, int `$kip`, ?string `$kodlama` = `null`): string

Belirtilen dizgeye belirtilen kipe göre büyük-küçük harf dönüşümü uygular.

### Bağımsız Değişkenler

`dizge`

  Dönüştürülecek dizge.

`kip`

  Dönüşüm kipi. `MB_CASE_UPPER`, `MB_CASE_LOWER`, `MB_CASE_TITLE`, `MB_CASE_FOLD`, `MB_CASE_UPPER_SIMPLE`, `MB_CASE_LOWER_SIMPLE`, `MB_CASE_TITLE_SIMPLE`, `MB_CASE_FOLD_SIMPLE` sabitlerinden biri olabilir.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`kip` ile belirtilen şekilde büyük-küçük harf dönüşümü yapılmış `dizge`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Yunanca sigma harfi için koşullu büyük-küçük harf kuralları gerçeklendi; bu kurallar yalnızca `MB_CASE_LOWER` ve `MB_CASE_TITLE` kiplerine uygulanır, `MB_CASE_LOWER_SIMPLE` ve `MB_CASE_TITLE_SIMPLE` kiplerine uygulanmaz.
7.3.0 | `kip` artık `MB_CASE_FOLD`, `MB_CASE_UPPER_SIMPLE`, `MB_CASE_LOWER_SIMPLE`, `MB_CASE_TITLE_SIMPLE` ve `MB_CASE_FOLD_SIMPLE` sabitlerini de destekliyor.

### Örnekler

Örnek 1 - mb_convert_case() yerel ayarlara bakmaz

    <?php
    $str = "Pınar'ın çok sevdiği küçük bir kuzusu var.";
    $str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
    echo $str, PHP_EOL;
    $str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
    echo $str, PHP_EOL;
    ?>

Örnek 2 - Latin harfleri kullanılmayan mb_convert_case() örneği

    <?php
    $str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
    $str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
    echo $str, PHP_EOL;
    $str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
    echo $str, PHP_EOL;
    ?>

### Evrenkod

strtolower() ve strtoupper() gibi standart büyük-küçük harf dönüşüm işlevlerinden farklı olarak, dönüşümü Unicode karakter özelliklerine göre yapar. Bu bakımdan bu işlevin davranışı yerel ayarlardan etkilenmez ve büyük-küçük harf ayrımı yapılabilen her karakteri dönüştürebilir.

Unicode özellikleri hakkında daha fazla bilgi için » http://www.unicode.org/reports/tr21/ adresine bakınız.

### Ayrıca Bakınız

- mb_strtolower() - Dizgeyi küçük harfli yapar
- mb_strtoupper() - Dizgeyi büyük harfli yapar
- strtolower() - Bir dizgenin harflerini küçük harfe çevirir
- strtoupper() - Bir dizgenin harflerini büyük harfe çevirir
- ucfirst() - Dizgenin ilk karakterini büyük harfe çevirir
- ucwords() - Dizgedeki her sözcüğün ilk harfini büyük harf yapar

# mb_convert_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_convert_encoding — Karakter kodlaması dönüşümü yapar

### Açıklama

function mb_convert_encoding(array|string `$dizge`, string `$kodlamaya`, array|string|null `$kodlamadan` = `null`): array|string|false

Belirtilen `dizge`nin karakter kodlamasını `kodlamadan` veya dahili kodlamadan `kodlamaya` dönüştürür. `dizge` olarak bir dizi verilmişse tüm dizge değerler sırayla dönüştürülür.

### Bağımsız Değişkenler

`dizge`

  Kodlaması dönüştürülecek dizge veya dizi.

`kodlamaya`

  Dizgenin dönüştürüleceği kodlama.

`kodlamadan`

  `kodlamadan` bağımsız değişkeninde, dizge kodlamasını algılamak için kullanılacak karakter kodlamaları bir dizi veya virgül ayraçlı liste olarak belirtilir. Doğru kodlama mb_detect_encoding() işlevinde kullanılan algoritma ile saptanmaya çalışılır.

  `kodlamadan` `null` ise veya atlanmışsa mbstring.internal_encoding yönergesinin değeri, aksi takdirde default_charset değeri kullanılır.

  `kodlamaya` ve `kodlamadan` bağımsız değişkenlerine aktarılabilecek geçerli değerler için Desteklenen Karakter Kodlamaları sayfasına bakılabilir.

### Dönen Değerler

Kodlaması dönüştürülen dizge.

### Hatalar/İstisnalar

PHP 8.0.0 ve sonrasında, `kodlamaya` veya `kodlamadan` geçersiz bir kodlama içeriyorsa bir ValueError yavrulanıyor. PHP 8.0.0 öncesinde sadece `E_WARNING` çıktılanırdı.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | mb_convert_encoding() tarafından artık döndürülmeyen tek baytlık kodlamalar: `"Base64"`, `"QPrint"`, `"UUencode"`, `"HTML entities"`, `"7 bit"` ve `"8 bit"`.
8.0.0 | `kodlamadan` geçersiz bir kodlama içeriyorsa mb_convert_encoding() artık bir ValueError yavruluyor. Evvelce sadece `E_WARNING` çıktılanırdı.
8.0.0 | `kodlamaya` geçersiz bir kodlama içeriyorsa mb_convert_encoding() artık bir ValueError yavruluyor. Evvelce sadece `E_WARNING` çıktılanırdı.
8.0.0 | `kodlamadan` artık `null` olabiliyor.
7.2.0 | İşlev `dizge` olarak artık dizi de kabul ediyor. Evvelce sadece dizge destekleniyordu.

### Örnekler

Örnek 1 - mb_convert_encoding() örneği

    <?php
    /* Dahili karakter kodlamasını SJIS'e çevirelim */
    $str = mb_convert_encoding($str, "SJIS");

    /* EUC-JP'den UTF-7'ye dönüştürelim */
    $str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

    /* Kodlamayı algılayarak JIS, eucjp-win, sjis-win, kodlamalarından
       UCS-2LE'ye dönüşüm yaptıralım */
    $str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

    /*  mbstring.language değeri "Japanese" ise, "auto" değeri
     * "ASCII,JIS,UTF-8,EUC-JP,SJIS" olarak genişletilir
     */
    $str = mb_convert_encoding($str, "EUC-JP", "auto");
    ?>

### Ayrıca Bakınız

- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür
- UConverter::transcode() - Convert a string from one character encoding to another
- iconv() - Dizgenin karakter kodlamasını dönüştürür

# mb_convert_kana

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_convert_kana — Bir "kana" dizgeyi diğerine ("zen-kaku", "han-kaku" vs.) dönüştürür

### Açıklama

function mb_convert_kana(string `$dizge`, string `$kip` = "KV", ?string `$kodlama` = `null`): string

Belirtilen dizgeye "han-kaku" - "zen-kaku" dönüşümü uygular. İşlev sadece Japonca için kullanılabilir.

### Bağımsız Değişkenler

`dizge`

  Dönüştürülecek dizge

`kip`

  Dönüşüm seçeneği.

  Aşağıdaki seeneklerin bir birleşimi olarak belirtilebilir.

  Olası Dönüşüm Seçenekleri
  Seçenek | Anlamı
  --- | ---
  `r` | "zen-kaku" (tam geniş) harfleri "han-kaku" (yarı geniş) harflere dönüştürür.
  `R` | "han-kaku" harfleri "zen-kaku" harflere dönüştürür.
  `n` | "zen-kaku" sayıları "han-kaku" sayılara dönüştürür.
  `N` | "han-kaku" sayıları "zen-kaku" sayılara dönüştürür.
  `a` | "zen-kaku" harfleri ve sayıları "han-kaku"'ya dönüştürür.
  `A` | "han-kaku" harfleri ve sayıları "zen-kaku"'ya dönüştürür. ("a" ve "A" seçeneklerine dahil karakterler: U+0022, U+0027, U+005C, U+007E hariç U+0021 - U+007E)
  `s` | "zen-kaku" boşluğu "han-kaku" boşluğa dönüştürür (U+3000 -> U+0020).
  `S` | "han-kaku" boşluğu "zen-kaku" boşluğa dönüştürür (U+0020 -> U+3000).
  `k` | "zen-kaku kata-kana" kodlamasından "han-kaku kata-kana" kodlamasına dönüştürür.
  `K` | "han-kaku kata-kana" kodlamasından "zen-kaku kata-kana" kodlamasına dönüştürür.
  `h` | "zen-kaku hira-gana" to "han-kaku kata-kana" kodlamasına dönüştürür.
  `H` | "han-kaku kata-kana" kodlamasından "zen-kaku hira-gana" kodlamasına dönüştürür.
  `c` | "zen-kaku kata-kana" kodlamasından "zen-kaku hira-gana" kodlamasına dönüştürür.
  `C` | "zen-kaku hira-gana" kodlamasından "zen-kaku kata-kana" kodlamasına dönüştürür.
  `V` | Sesli gösterimi kapatıp bir karaktere dönüştürür. "K","H" ile kullanılır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Dönüştürülen dizge.

### Hatalar/İstisnalar

Farklı `kip`'lerin birleşimi geçersizse ValueError istisnası oluşur. Örneğin, `"sS"`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Farklı `kip`'lerin birleşimi geçersizse artık ValueError istisnası oluşuyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_convert_kana() örneği

    <?php
    /* Tüm "han-kaku" "kata-kana" karakterlerini "zen-kaku" "hira-gana" karakterlerine dönüştürür */
    echo mb_convert_kana('ﾔﾏﾀﾞ ﾊﾅｺ', "HV") . "\n";

    /* "han-kaku" "kata-kana" karakterlerini "zen-kaku" "kata-kana" karakterlerine,
       "zen-kaku" harf ve sayıları "han-kaku" karakterlere dönüştürür */
    echo mb_convert_kana('ｺｳｻﾞﾊﾞﾝｺﾞｳ ０１２３４５６', "KVa") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    やまだ はなこ
    コウザバンゴウ 0123456

# mb_convert_variables

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_convert_variables — Değişken içeriğinin karakter kodlamasını dönüştürür

### Açıklama

function mb_convert_variables(
string `$kodlamaya`,
array|string `$kodlamadan`,
mixed `&$değişken`,
mixed `&...$değişkenler`
): string|false

Belirtilen değişkenlerin karakter kodlamasını `kodlamadan` `kodlamaya` dönüştürür.

mb_convert_variables() işlevi, kodlama algılamasının kısa dizgelerde başarısız olmaması için dizgeleri bir dizi veya nesne içinde birleştirir. Bu bakımdan kodlamayı karıştırmak tek bir dizi veya nesne içinde imkansızdır.

### Bağımsız Değişkenler

`kodlamaya`

  Dizgenin dönüştürüleceği karakter kodlaması.

`kodlamadan`

  `kodlamadan` bağımsız değişkeninde, dizge kodlamasını algılamak için kullanılacak karakter kodlamaları bir dizi veya virgül ayraçlı liste olarak belirtilir. Belirtilmezse dahili algılama sırası kullanılır.

`değişken`

  Kodlaması değiştirilecek değişken belirtilir. Dizi, dizge veya nesne belirtilebilir. İşlev tüm bağımsız değişkenlerin aynı karakter kodlamasına sahip olduğunu varsayar.

`değişkenler`

  Diğer `değişkenler`.

### Dönen Değerler

Başarı durumunda dönüşüm öncesi karakter kodlaması, aksi takdirde `false` döner.

### Örnekler

Örnek 1 - mb_convert_variables() örneği

    <?php
    /* $post1, $post2 değişkenlinin içeriğini dahili kodlamaya dönüştürelim */
    $dahilikod = mb_internal_encoding();
    $girdikodu = mb_convert_variables($dahilikod, "ASCII,UTF-8,SJIS-win", $post1, $post2);
    ?>

# mb_decode_mimeheader

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_decode_mimeheader — MIME başlık alanındaki dizgeyi dönüştürür

### Açıklama

function mb_decode_mimeheader(string `$dizge`): string

MIME başlığındaki dizgenin karakter kodlamasını dahili karakter kodlamasına dönüştürür.

### Bağımsız Değişkenler

`dizge`

  Dönüştürülecek dizge.

### Dönen Değerler

Kodlaması dahili karakter kodlamasına dönüştürülmüş dizge.

### Ayrıca Bakınız

- mb_encode_mimeheader() - Dizgeyi MIME başlığı için kodlar

# mb_decode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_decode_numericentity — HTML sayısal karakter gösterimini karaktere dönüştürür

### Açıklama

function mb_decode_numericentity(
string `$dizge`,
array `$bölge`,
?string `$kodlama` = `null`,
bool `$onaltılık` = `false`
): string

Belirtilen `dizge` dizgesindeki karakter kodlarından belirtilen `bölge` içinde kalan karakterlerin yerine HTML sayısal karakter gösterimlerini yerleştirir.

### Bağımsız Değişkenler

`dizge`

  HTML karakter kodlaması kaldırılacak dizge.

`bölge`

  Dönüşüm yapılacak kod bölgesini içeren dizi.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

`onaltılık`

  `true` ise sayısal gösterim onaltılık olur, değilse onluk olur.

### Dönen Değerler

Dönüştürülen dizge.

### Hatalar/İstisnalar

`bölge` bir tamsayı listesi değilse bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | mb_decode_numericentity(), `bölge` bir tamsayı listesi değilse artık bir ValueError yavruluyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - `bölge` örneği

    <?php
    $bölge = array (
     int kodlama_başı1, int kodlama_sonu1, int göreli_konum1, int maske1,
     int kodlama_başı2, int kodlama_sonu2, int göreli_konum2, int maske2,
     // ........
     int kodlama_başıN, int kodlama_sonuN, int göreli_konumN, int maskeN );
    // kodlama_başıN ve int kodlama_sonuN için Evrenkodlu değer belirt,
    // değere göreli_konumN ekleyip sonucu maskeN ile bitsel VE'le ve
    // değeri sayısal gösterim dizgesine dönüştür.
    ?>

Örnek 2 - JavaScript dizgeyi önceleyen `map` örneği

    <?php
    function escape_javascript_string($str) {
      $map = [
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,0,0, // 49
              0,0,0,0,0,0,0,0,1,1,
              1,1,1,1,1,0,0,0,0,0,
              0,0,0,0,0,0,0,0,0,0,
              0,0,0,0,0,0,0,0,0,0,
              0,1,1,1,1,1,1,0,0,0, // 99
              0,0,0,0,0,0,0,0,0,0,
              0,0,0,0,0,0,0,0,0,0,
              0,0,0,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1, // 149
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1, // 199
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1,
              1,1,1,1,1,1,1,1,1,1, // 249
              1,1,1,1,1,1,1, // 255
              ];
      // Kodlama: UTF-8
      $mblen = mb_strlen($str, 'UTF-8');
      $utf32 = bin2hex(mb_convert_encoding($str, 'UTF-32', 'UTF-8'));
      for ($i=0, $encoded=''; $i < $mblen; $i++) {
          $u = substr($utf32, $i*8, 8);
          $v = base_convert($u, 16, 10);
          if ($v < 256 && $map[$v]) {
            $encoded .= '\\x'.substr($u, 6,2);
          } else if ($v == 2028) {
            $encoded .= '\\u2028';
          } else if ($v == 2029) {
            $encoded .= '\\u2029';
          } else {
            $encoded .= mb_convert_encoding(hex2bin($u), 'UTF-8', 'UTF-32');
          }
       }
       return $encoded;
    }

    // Veriyi sına
    $convmap = [ 0x0, 0xffff, 0, 0xffff ];
    $msg = '';
    for ($i=0; $i < 1000; $i++) {
      // chr() 128'den büyük değerler için doğru UTF-8 veri üretmez,
      // yerine mb_decode_numericentity() kullanılır.
      $msg .= mb_decode_numericentity('&#'.$i.';', $convmap, 'UTF-8');
    }

    // var_dump($msg);
    var_dump(escape_javascript_string($msg));

### Ayrıca Bakınız

- mb_encode_numericentity() - Karakter kodlarını HTML sayısal karakter gösterimlerine dönüştürür

# mb_detect_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_detect_encoding — Karakter kodlamasını algılar

### Açıklama

function mb_detect_encoding(string `$dizge`, array|string|null `$kodlamalar` = `null`, bool `$katı` = `false`): string|false

Sıralı adaylar listesinden string türündeki `dizge` için en uygun karakter kodlamasını saptar.

Amaçlanan karakter kodlamasının otomatik tespiti hiçbir zaman tamamen güvenilir olamaz; bazı ek bilgiler olmadan, şifrelenmiş bir dizenin şifresini anahtarsız çözmeye benzer. Verilerle birlikte depolanan veya iletilen karakter kodlamasının bir "Content-Type" HTTP başlığı gibi bir göstergesinin kullanılması her zaman tercih edilir.

Bu işlev, tüm bayt dizilerinin geçerli bir dizge oluşturmadığı çok baytlı kodlamalarda çok yararlıdır. Belirtilen dizge böyle bir dizi içeriyorsa, bu kodlama reddedilecek ve sonraki kodlamaya bakılacaktır.

### Bağımsız Değişkenler

`dizge`

  Kodlaması algılanacak dizge.

`kodlamalar`

  `kodlamalar` ile denenecek karakter kodlamalarının listesi belirtilir. Algı sırası bir dizeler dizisi veya virgül ayraçlı bir liste olarak belirtilebilir.

  `kodlamalar` atlanırsa veya `null` ise, dahili algılama sırası veya mb_detect_order() işlevi kullanılır.

`katı`

  `dizge` `kodlamalar` listesi için geçersiz olduğunda izlenecek yolu belirler. `katı` `false` ise en yakın eşleşen kodlama döner, `true` belirtilmişse `false` döner.

  `katı` için öntanımlı değer, mbstring.strict_detection yapılandırma seçeneği ile atanabilir.

### Dönen Değerler

`dizge` `kodlamalar` listesi için geçersiz ise `false`, yoksa algılanan karakter kodlaması döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | mb_convert_encoding() tarafından artık döndürülmeyen tek baytlık kodlamalar: `"Base64"`, `"QPrint"`, `"UUencode"`, `"HTML entities"`, `"7 bit"` ve `"8 bit"`.

### Örnekler

Örnek 1 - mb_detect_encoding() örneği

    <?php
    // Karakter kodlamasını dahili algı sırasını kullanarak algılatalım
    echo mb_detect_encoding($str);

    // "auto" değeri mbstring.language ini değerine göre genişletilir
    echo mb_detect_encoding($str, "auto");

    // Kodlamaları virgül ayraçlı liste olarak belirtelim
    echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");

    // Kodlamaları dizi olarak belirtelim
    $encodings = [
      "ASCII",
      "JIS",
      "EUC-JP"
    ];
    echo mb_detect_encoding($str, $encodings);
    ?>

Örnek 2 - `katı` bağımsız değişkeninin etkisi

    <?php
    // 'áéóú' ISO-8859-1'de kodlandı
    $str = "\xE1\xE9\xF3\xFA";

    // Dizge ASCII veya UTF-8 için geçersiz, fakat UTF-8 daha iyi eşleşiyor
    var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8'], false));
    var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8'], true));

    // Geçersiz kodlama bulunursa, katı bağımsız değişkeni sonucu değiştirmez
    var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8', 'ISO-8859-1'], false));
    var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8', 'ISO-8859-1'], true));
    ?>

Yukarıdaki örneğin çıktısı:

    string(5) "UTF-8"
    bool(false)
    string(10) "ISO-8859-1"
    string(10) "ISO-8859-1"

Bazı durumlarda aynı bayt sırası çok sayıda karakter kodlamasında geçerli bir dizge verebilir ve hangi yorumun amaçlandığını anlamak mümkündür. Örneğin, "\xC4\xA2" bayt sırasını ele alalım:

- "Ä¢" (U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS ardından U+00A2 CENT SIGN) ISO-8859-1, ISO-8859-15 veya Windows-1252'den herhangi birinde geçerli.
- "ФЂ" (U+0424 CYRILLIC CAPITAL LETTER EF ardından U+0402 CYRILLIC CAPITAL LETTER DJE) ISO-8859-5 için geçerli.
- "Ģ" (U+0122 LATIN CAPITAL LETTER G WITH CEDILLA) UTF-8 için geçerli.

Örnek 3 - Çok sayıda kodlama eşleştiğinde sıralamanın etkisi

    <?php
    $str = "\xC4\xA2";

    // Dizge üç kodlamada da geçerli, dolayısıyla listenin başındaki döner
    var_dump(mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'ISO-8859-5']));
    var_dump(mb_detect_encoding($str, ['ISO-8859-1', 'ISO-8859-5', 'UTF-8']));
    var_dump(mb_detect_encoding($str, ['ISO-8859-5', 'UTF-8', 'ISO-8859-1']));
    ?>

Yukarıdaki örneğin çıktısı:

    string(5) "UTF-8"
    string(10) "ISO-8859-1"
    string(10) "ISO-8859-5"

### Ayrıca Bakınız

- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür

# mb_detect_order

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_detect_order — Karakter kodlaması algılama sırasını tanımlar/döndürür

### Açıklama

function mb_detect_order(array|string|null `$kodlama_listesi` = `null`): array|bool

`kodlama_listesi` ile belirtilen otomatik karakter kodlaması algılama sırasını tanımlar.

### Bağımsız Değişkenler

`kodlama_listesi`

  `kodlama_listesi` bir dizi veya karakter kodlamalarının virgül ayraçlı listesi olarak belirtilir. Bkz, desteklenen kodlamalar

  `kodlama_listesi` `null` ise veya belirtilmezse karakter kodlaması algılama sırasını içeren bir dizi döner.

  Bu ayar, mb_detect_encoding() ve mb_send_mail() işlevini etkiler.

  `mbstring` şimdilik aşağıdaki kodlama algılama süzgeçlerini gerçeklemiştir. Bu kodlamalarla ilgili geçersiz bir bayt dizilimine rastlanırsa kodlama algılaması başarısız olur.

  `UTF-8`, `UTF-7`, `ASCII`, `EUC-JP`,`SJIS`, `eucJP-win`, `SJIS-win`, `JIS`, `ISO-2022-JP`

  Bir `ISO-8859-*` karakter kodlamasını, `mbstring` daima `ISO-8859-*` olarak algılar.

  `UTF-16`, `UTF-32`, `UCS2` ve `UCS4` için algılama daima başarısız olacaktır.

### Dönen Değerler

Kodlama algılama sırasını ayarlarken başarı durumunda `true`, başarısızlık durumunda `false` döner

Kodlama algılama sırasını alırken, kodlamaların sıralı bir dizisi döndürülür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_detect_order() örnekleri

    <?php
    /* Algı sırasını virgül ayraçlı liste olarak verelim */
    mb_detect_order("eucjp-win,sjis-win,UTF-8");

    /* Algı sırasını dizi olarak verelim */
    $dizi[] = "ASCII";
    $dizi[] = "JIS";
    $dizi[] = "EUC-JP";
    mb_detect_order($dizi);

    /* Geçerli algı sırasını görelim */
    echo implode(", ", mb_detect_order());
    ?>

Örnek 2 - Yararsız algılama sırası

    ; Daima ISO-8859-1 algılanır
    detect_order = ISO-8859-1, UTF-8

    ; Daima UTF-8 algılanır, çünkü ASCII/UTF-7 değerleri
    ; UTF-8 için geçerlidir
    detect_order = UTF-8, ASCII, UTF-7

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_http_input() - HTTP girdi karakter kodlamasını algılar
- mb_http_output() - HTTP çıktı karakter kodlamasını tanımlar/döndürür
- mb_send_mail() - Kodlanmış olarak posta gönderir

# mb_encode_mimeheader

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_encode_mimeheader — Dizgeyi MIME başlığı için kodlar

### Açıklama

function mb_encode_mimeheader(
string `$dizge`,
?string `$karküm` = `null`,
?string `$aktarım_kodlaması` = `null`,
string `$satırsonu` = "\r\n",
int `$girinti` = 0
): string

Belirtilen `dizge` dizgesini MIME başlığı kodlama şemasına göre kodlar.

### Bağımsız Değişkenler

`dizge`

  Kodlanacak dizge. Kodlaması mb_internal_encoding() ile aynı olmalıdır.

`karküm`

  Dizgenin kodlanacağı karakter kümesinin ismi. Öntanımlı değer geçerli yerel dil ayarından (mbstring.language) alınır.

`aktarım_kodlaması`

  `aktarım_kodlaması` ile MIME kodlama şeması belirtilir. `"B"` (Base64) veya `"Q"` (Quoted-Printable) olmalıdır. Belirtilmezse son çare olarak `"B"` kullanılır.

`satırsonu`

  mb_encode_mimeheader() işlevinin satırları katlayabilmesi için satır sonu imleyici belirtir. (» RFC gereği belli bir uzunluktan daha uzun satırların katlanması gerekir. Bu uzunluk şimdilik 74 bayttır.) Belirtilmediği takdirde son çare olarak `"\r\n"` (CRLF) kullanılır.

`girinti`

  İlk satırın girinti miktarı (Başlıkta `dizge` dizgesinden önceki karakter sayısı).

### Dönen Değerler

Belirtilen dizgenin ASCII'ye dönüştürülmüş gösterimi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `karküm` ve `aktarım_kodlaması` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_encode_mimeheader() örneği

    <?php
    $name = "太郎"; // kanji
    $mbox = "kru";
    $domain = "gtinn.mon";
    $addr = '"' . addcslashes(mb_encode_mimeheader($name, "UTF-7", "Q"), '"') . '" <' . $mbox . "@" . $domain . ">";
    echo $addr;
    ?>

Yukarıdaki örneğin çıktısı:

    "=?UTF-7?Q?+WSqQzg-?=" <kru@gtinn.mon>

### Notlar

> Bilginize:

> Bu işlev daha yüksek seviyeden satır katlamaları için tasarlanmamıştır (sözcükleri bölmeden katlamak gibi). Bu davranış özgün dizgenin beklenmedik boşluklarla düzensizleşmesine sebep olabilir.

### Ayrıca Bakınız

- mb_decode_mimeheader() - MIME başlık alanındaki dizgeyi dönüştürür

# mb_encode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_encode_numericentity — Karakter kodlarını HTML sayısal karakter gösterimlerine dönüştürür

### Açıklama

function mb_encode_numericentity(
string `$dizge`,
array `$bölge`,
?string `$kodlama` = `null`,
bool `$onaltılık` = `false`
): string

Belirtilen `dizge` dizgesindeki karakter kodlarını HTML sayısal karakter gösterimlerine dönüştürür.

### Bağımsız Değişkenler

`dizge`

  HTML için kodlanacak dizge.

`bölge`

  Dönüşüm yapılacak kod bölgesini içeren dizi.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

`onaltılık`

  `true` ise sayısal gösterim onaltılık olur, değilse onluk olur.

### Dönen Değerler

Dönüştürülen dizge.

### Hatalar/İstisnalar

`bölge` bir tamsayı listesi değilse bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | mb_encode_numericentity(), `bölge` bir tamsayı listesi değilse artık bir ValueError yavruluyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - `bölge` örneği

    <?php
    $bölge = array (
     int kodlama_başı1, int kodlama_sonu1, int göreli_konum1, int maske1,
     int kodlama_başı2, int kodlama_sonu2, int göreli_konum2, int maske2,
     ........
     int kodlama_başıN, int kodlama_sonuN, int göreli_konumN, int maskeN );
    // kodlama_başıN ve int kodlama_sonuN için Evrenkodlu değer belirt,
    // değere göreli_konumN ekleyip sonucu maskeN ile bitsel VE'le ve
    // değeri sayısal gösterim dizgesine dönüştür.
    ?>

### Örnekler

Örnek 2 - mb_encode_numericentity() örneği

    <?php

    $dizge = "aAæÆあア𩸽";

    /* 4 bayta kadar tüm UTF8 karakterlerini HTML sayısal karakter gösterimine dönüştürür */
    $bölge = [0, 0x1FFFFF, 0, 0x10FFFF];
    var_dump(mb_encode_numericentity($dizge, $bölge, "utf8"));

    /* Yalnızca 2 baytlık ve 4 baytlık UTF8 karakterlerini HTML sayısal karakter gösterimine dönüştürür */
    $bölge = [
        0x80, 0x7FF, 0, 0x10FFFF,
        0x10000, 0x1FFFFF, 0, 0x10FFFF,
    ];
    var_dump(mb_encode_numericentity($dizge, $bölge, "utf8"));
    ?>

Yukarıdaki örneğin çıktısı:

    string(46) "&#97;&#65;&#230;&#198;&#12354;&#12450;&#40509;"
    string(28) "aA&#230;&#198;あア&#40509;"

### Ayrıca Bakınız

- mb_decode_numericentity() - HTML sayısal karakter gösterimini karaktere dönüştürür

# mb_encoding_aliases

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mb_encoding_aliases — Bilinen bir kodlama türünün takma adını döndürür

### Açıklama

function mb_encoding_aliases(string `$kodlama`): array

`kodlama` türünün bilinen takma adlarını içeren bir dizi döndürür.

### Bağımsız Değişkenler

`kodlama`

  Takma adlarına bakılacak kodlama.

### Dönen Değerler

Başarı durumunda kodlama takma adlarını içeren sayısal indisli bir dizi döner.

### Hatalar/İstisnalar

`kodlama` bilinmiyorsa ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` bilinmiyorsa artık ValueError istisnası oluşuyor, evvelce bir `E_WARNING` çıktılanır ve işlev `false` döndürürdü.

### Örnekler

Örnek 1 - mb_encoding_aliases() örneği

    <?php
    $encoding        = 'ASCII';
    $known_encodings = mb_list_encodings();

    if (in_array($encoding, $known_encodings)) {

        $aliases = mb_encoding_aliases($encoding);
        print_r($aliases);

    } else {

        echo "$encoding diye bir kodlama bilinmiyor.\n";

    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => ANSI_X3.4-1968
        [1] => iso-ir-6
        [2] => ANSI_X3.4-1986
        [3] => ISO_646.irv:1991
        [4] => US-ASCII
        [5] => ISO646-US
        [6] => us
        [7] => IBM367
        [8] => cp367
        [9] => csASCII
    )

### Ayrıca Bakınız

- mb_list_encodings() - Desteklenen kodlamaların tamamını bir dizi olarak döndürür

# mb_ereg

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg — Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

### Açıklama

function mb_ereg(string `$kalıp`, string `$dizge`, array `&$sonuç` = `null`): bool

Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir.

### Bağımsız Değişkenler

`kalıp`

  Aranacak kalıp.

`dizge`

  Kalıbın aranacağı dizge.

`sonuç`

  Kalıbın parantezli alt dizeleri için eşleşmeler bulunursa ve işlev üçüncü bağımsız değişken belirtilerek çağrılırsa, eşleşmeler `sonuç` dizisinin elemanlarında saklanır. Eşleşme bulunmazsa, `sonuç` boş bir dizi içerir.

  $sonuç[1], ilk sol parantezden başlayan alt dizeyi içerecektir; $sonuç[2], alt dizeyi ikinciden başlayarak içerecektir ve bu böyle devam eder. $sonuç[0], eşleşen dizenin tamamının bir kopyasını içerecektir.

### Dönen Değerler

`kalıp` ile `dizge` eşleşiyorsa `true` yoksa `false` döner..

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu işlev başarılı olursa artık `true` döndürüyor. Evvelce `sonuç` atlanmışsa, `kalıp` ve `dizge` eşleşirse veya `dizge` uzunluğu `0` ise işlev `1` döndürürdü. `sonuç` bağımsız değişkeni belirtilmişse, eşleşen alt dizge `sonuç` bağımsız değişkenine yerleştirilip uzunluğu dönüş değeri olarak döndürülürdü.
7.1.0 | mb_ereg() hiçbir eşleşme olmazsa `sonuç` bağımsız değişkenine atık boş bir dizi yerleştiriyor. Evvelce, böyle bir durumda `sonuç` bağımsız değişkeninde değişiklik yapılmazdı.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_eregi() - Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular

# mb_ereg_match

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_match — Çok baytlı dizge için düzenli ifadeyi eşleştirir

### Açıklama

function mb_ereg_match(string `$kalıp`, string `$dizge`, ?string `$seçenekler` = `null`): bool

Bir düzenli ifadeyi çok baytlı bir dizge ile eşleştirir.

> Bilginize: `kalıp` sadece `dizge` başlangıcında eşleşir.

### Bağımsız Değişkenler

`kalıp`

  Düzenli ifade kalıbı.

`dizge`

  Kalıbın aranacağı dizge.

`seçenekler`

  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

`dizge`, `şablon` ile eşleşirse `true` eşleşmezse `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` artık `null` olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg() - Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

# mb_ereg_replace

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_replace — Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar

### Açıklama

function mb_ereg_replace(
string `$kalıp`,
string `$yeni`,
string `$dizge`,
?string `$seçenekler` = `null`
): string|false|null

`dizge` içinde `kalıp` eşleştirilmeye çalışılır, eşleşen parça `yeni`si ile değiştirilir.

### Bağımsız Değişkenler

`kalıp`

  Düzenli ifade olarak kalıp.

  `kalıp` içinde çok baytı karakterler kullanılabilir.

`yeni`

  Yerleştirilecek metin.

`dizge`

  İçinde kalıbın aranacağı dizge.

`seçenekler`
  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

Başarı durumunda elde edilen dizgeyle aksi takdirde `false` ile döner. Geçerli karakter kodlamasına göre `dizge` geçersizse `null` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` artık `null` olabiliyor.
7.1.0 | İşlev artık `dizge` geçerli karakter kodlamasına göre geçerli mi diye bakıyor.
7.1.0 | `e` seçeneğinin kullanımı artık önerilmiyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

Uyarı

Güvenilmez girdilerle çalışırken `e` değiştiricisini asla kullanmayın. Otomatik önceleme yapılmayacaktır (preg_replace() işlevinde olduğu gibi). Bunu dikkate almazsanız, büyük olasılıkla uygulamanızda uzaktan kod çalıştırma açıkları oluşacaktır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_eregi_replace() - Harf büyüklüğüne duyarsız çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar

# mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

mb_ereg_replace_callback — Bir düzenli ifade araması yapıp bir geriçağırım kullanarak çok baytlı yer değiştirme uygular

### Açıklama

function mb_ereg_replace_callback(
string `$kalıp`,
callable `$geriçağırım`,
string `$dizge`,
?string `$seçenekler` = `null`
): string|false|null

`dizge` dizisinde `kalıp` ile eşleşmeler arar, eşleşen metni `geriçağırım` işlevinin çıktısı ile değiştirir.

mb_ereg_replace() işlevindeki `yeni` bağımsız değişkeninin yerine burada bir geriçağırım işlevinin kullanılması dışında davranışları aynıdır.

### Bağımsız Değişkenler

`kalıp`

  Düzenli ifade kalıbı.

  `kalıp`ta çok baytlı karakterler kullanılabilir.

`geriçağırım`

  `konu` dizgesinde eşleşen elemanları içeren bir dizi aktarılabilen ve yerleştirilecek dizgeyi döndürecek geriçağırım işlevi.

  Genellikle mb_ereg_replace_callback() için `geriçağırım` işlevine tek bir yerde ihtiyaç duyulur. Bu durumda,mb_ereg_replace_callback() çağrısı içinde geriçağırımı bildirmek için anonim bir işlev kullanılabilir. Bunu bu şekilde yaparak, çağrı için ihtiyaç duyulan tüm bilgiler tek bir yerde elde edilebilir ve işlev isim alanı başka hiçbir yerde kullanılmayan bir geriçağırım işlevinin adıyla karıştırılmamış olur.

`dizge`

  Arama yapılacak dizge

`seçenekler`

  Arama seçenekleri. Ayrıntılar için mb_regex_set_options() işlevine bakılabilir.

### Dönen Değerler

Başarı durumunda elde edilen dizge, hata durumunda `false` döner. `dizge` geçerli kodlama için geçersizse `null` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` artık `null` olabiliyor.
7.1.0 | Geçerli kodlama için `dizge`'nin geçerliliğine artık bakılıyor.

### Örnekler

Örnek 1 - mb_ereg_replace_callback() örneği

    <?php
    // bu metin 2002'de kullanıldı
    // 2003'te güncellemek istiyouz
    $text = "April fools day is 04/01/2002\n";
    $text.= "Last christmas was 12/24/2001\n";
    // geriçağırım işlevi
    function next_year($matches)
    {
      // normal olarak: $matches[0] eşleşmenin tamamını
      // $matches[1] '(...)' ile sarmalanmış ilk eşleşmeyi
      // içerir ve böyle devam eder.
      return $matches[1].($matches[2]+1);
    }
    echo mb_ereg_replace_callback(
                "(\d{2}/\d{2}/)(\d{4})",
                "next_year",
                $text);

    ?>

Yukarıdaki örneğin çıktısı:

    April fools day is 04/01/2003
    Last christmas was 12/24/2002

Örnek 2 - Anonim işlev kullanan mb_ereg_replace_callback() örneği

    <?php,
    // bu metin 2002'de kullanıldı
    // 2003'te güncellemek istiyouz
    $text = "April fools day is 04/01/2002\n";
    $text.= "Last christmas was 12/24/2001\n";

    echo mb_ereg_replace_callback(
                "(\d{2}/\d{2}/)(\d{4})",
                function ($matches) {
                   return $matches[1].($matches[2]+1);
                },
                $text);
    ?>

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_replace() - Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
- Anonim işlevler

# mb_ereg_search

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifade eşleştirmesi yapar

### Açıklama

function mb_ereg_search(?string `$kalıp` = `null`, ?string `$seçenekler` = `null`): bool

Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifade eşleştirmesi yapar.

### Bağımsız Değişkenler

`kalıp`

  Aranacak kalıp.

`seçenekler`

  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

Çok baytlı dizge içinde düzenli ifadeyle bir eşleşme bulunursa `true` yoksa `false` döner. Eşleşmenin aranacağı dizge mb_ereg_search_init() işlevi ile tanımlanır. Eğer bir `şablon` belirtilmezse evvelce belirtilmiş olan şablon kullanılır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kalıp` ve `seçenekler` artık `null` olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_init() - Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

# mb_ereg_search_getpos

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_getpos — Sonraki düzenli ifade eşleşmesi için başlangıç konumunu döndürür

### Açıklama

function mb_ereg_search_getpos(): int

Sonraki çok baytlı düzenli ifade eşleşmesi için başlangıç konumunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

mb_ereg_search_getpos() işlevi, mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs() işlevleri için düzenli ifade eşleşmesinin başlangıç konumunu döndürür. Konum dizgenin başlangıcından itibaren bayt sayısını ifade eder.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_setpos() - Sonraki düzenli ifade eşleşmesinin başlangıç noktasını tanımlar

# mb_ereg_search_getregs

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_getregs — Sonuncu çok baytlı düzenli ifade eşleşmesinin sonucunu döndürür

### Açıklama

function mb_ereg_search_getregs(): array|false

Sonuncu çok baytlı düzenli ifade eşleşmesinin sonucunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Son mb_ereg_search(), mb_ereg_search_pos() veya mb_ereg_search_regs() işlevi tarafından eşleştirilen alt dizgeyi içeren bir dizi. Başka eşleşmeler de varsa, ilk eleman eşleşen alt dizgeyi, ikinci eleman köşeli ayraçlı ikinci parçayı, üçüncü eleman köşeli ayraçlı üçüncü parçayı, ... içerir. Bir hata durumunda `false` döner.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_init() - Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

# mb_ereg_search_init

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_init — Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

### Açıklama

function mb_ereg_search_init(string `$dizge`, ?string `$kalıp` = `null`, ?string `$seçenekler` = `null`): bool

mb_ereg_search_init() işlevi, çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar. Bu değerler, mb_ereg_search(), mb_ereg_search_pos() ve mb_ereg_search_regs() işlevleri tarafından kullanılır.

### Bağımsız Değişkenler

`dizge`

  Kalıbın aranacağı dizge.

`kalıp`

  Aranacak kalıp.

`seçenekler`

  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kalıp` ve `seçenekler` artık `null` olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_regs() - Çok baytlı düzenli ifadenin eşleşen parçası ile döner

# mb_ereg_search_pos

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_pos — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifadenin eşleşen parçasının uzunluğunu ve konumunu döndürür

### Açıklama

function mb_ereg_search_pos(?string `$kalıp` = `null`, ?string `$seçenekler` = `null`): array|false

Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifadenin eşleşen parçasının uzunluğunu ve konumunu döndürür.

Eşleştirilecek dizge mb_ereg_search_init() işlevi ile belirtilir. Belirtilmezse, evvelce belirtilmiş olan kullanılır.

### Bağımsız Değişkenler

`şablon`

  Eşleştirilecek şablon.

`seçenekler`

  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

Çok baytlı düzenli ifade için eşleşen parçanın konumunu ve uzunluğunu içeren iki boyutlu bir dizi ile döner. Dizinin ilk elemanı eşleşen parçanın dizgenin başlangıcına göre konumu, ikinci elemanı ise eşleşen parçanın bayt cinsinden uzunluğudur.

Bir hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kalıp` ve `seçenekler` artık `null` olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_init() - Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

# mb_ereg_search_regs

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_regs — Çok baytlı düzenli ifadenin eşleşen parçası ile döner

### Açıklama

function mb_ereg_search_regs(?string `$kalıp` = `null`, ?string `$seçenekler` = `null`): array|false

Çok baytlı düzenli ifadenin eşleşen parçası ile döner.

### Bağımsız Değişkenler

`kalıp`

  Aranacak kalıp.

`seçenekler`

  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

mb_ereg_search_regs() işlevi çok baytlı düzenli ifadeyi eşleştirmeye çalışır, eğer eşleşen bir parça varsa, eşleşen parçanın alt dizgesini ilk eleman olarak, köşeli ayraçlı ilk grubu ikinci eleman olarak, ikinci grubu üçüncü eleman olarak, ... bir dizi içinde döndürür. Bir hata oluşursa işlev `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kalıp` ve `seçenekler` artık `null` olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_init() - Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

# mb_ereg_search_setpos

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_ereg_search_setpos — Sonraki düzenli ifade eşleşmesinin başlangıç noktasını tanımlar

### Açıklama

function mb_ereg_search_setpos(int `$başlangıç`): bool

mb_ereg_search_setpos() işlevi, mb_ereg_search() işlevi için başlangıç noktası tanımlar.

### Bağımsız Değişkenler

`başlangıç`

  Başlangıç noktası olarak tanımlanacak konum. Negatifse dizinin sonundan itibaren sayılan konumu belirtir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_search_init() - Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar

# mb_eregi

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_eregi — Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular

### Açıklama

function mb_eregi(string `$kalıp`, string `$dizge`, array `&$sonuç` = `null`): bool

Bir düzenli ifadeyi harf büyüklüğüne duyarsız olarak çok baytlı bir dizge ile eşleştirir.

### Bağımsız Değişkenler

`kalıp`

  Düzenli ifade kalıbı.

`dizge`

  Kalıbın aranacağı dizge.

`sonuç`

  Kalıbın parantezli alt dizeleri için eşleşmeler bulunursa ve işlev üçüncü bağımsız değişken belirtilerek çağrılırsa, eşleşmeler `sonuç` dizisinin elemanlarında saklanır. Eşleşme bulunmazsa, `sonuç` boş bir dizi içerir.

  $sonuç[1], ilk sol parantezden başlayan alt dizeyi içerecektir; $sonuç[2], alt dizeyi ikinciden başlayarak içerecektir ve bu böyle devam eder. $sonuç[0], eşleşen dizenin tamamının bir kopyasını içerecektir.

### Dönen Değerler

`kalıp` ile `dizge` eşleşiyorsa `true` yoksa `false` döner..

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu işlev başarılı olursa artık `true` döndürüyor. Evvelce `sonuç` atlanmışsa, `kalıp` ve `dizge` eşleşirse veya `dizge` uzunluğu `0` ise işlev `1` döndürürdü. `sonuç` bağımsız değişkeni belirtilmişse, eşleşen alt dizge `sonuç` bağımsız değişkenine yerleştirilip uzunluğu dönüş değeri olarak döndürülürdü.
7.1.0 | mb_ereg() hiçbir eşleşme olmazsa `sonuç` bağımsız değişkenine atık boş bir dizi yerleştiriyor. Evvelce, böyle bir durumda `sonuç` bağımsız değişkeninde değişiklik yapılmazdı.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg() - Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

# mb_eregi_replace

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_eregi_replace — Harf büyüklüğüne duyarsız çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar

### Açıklama

function mb_eregi_replace(
string `$kalıp`,
string `$yeni`,
string `$dizge`,
?string `$seçenekler` = `null`
): string|false|null

`dizge` içinde `kalıp` eşleştirilmeye çalışılır, eşleşen parça `yeni`si ile değiştirilir.

### Bağımsız Değişkenler

`kalıp`

  Düzenli ifade olarak kalıp. Çok baytlı karakterler kullanılabilir. Harf büyüklüğü dikkate alınmaz.

`yeni`

  Yerleştirilecek metin.

`dizge`

  İçinde kalıbın aranacağı dizge.

`seçenekler`
  Arama seçenekleri. Ayrıntılar mb_regex_set_options() işlevinde bulunabilir.

### Dönen Değerler

Başarı durumunda elde edilen dizgeyle aksi takdirde `false` ile döner. Geçerli karakter kodlamasına göre `dizge` geçersiz ise `null` döner. is returned.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` artık `null` olabiliyor.
7.1.0 | Geçerli karakter kodlamasına göre `dizge` geçersiz ise artık `null` dönüyor.
7.1.0 | `e` seçeneğinin kullanımı artık önerilmiyor.

### Notlar

> Bilginize:

> Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

Uyarı

Güvenilmez girdilerle çalışırken `e` değiştiricisini asla kullanmayın. Otomatik önceleme yapılmayacaktır (preg_replace() işlevinde olduğu gibi). Bunu dikkate almazsanız, büyük olasılıkla uygulamanızda uzaktan kod çalıştırma açıkları oluşacaktır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg_replace() - Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar

# mb_get_info

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_get_info — Mbstring bağımsız değişkenlerinin dahili ayarlarını döndürür

### Açıklama

function mb_get_info(string `$tür` = "all"): array|string|int|false|null

mb_get_info() işlevi, mbstring bağımsız değişkenlerinin dahili ayarlarını döndürür.

### Bağımsız Değişkenler

`tür`

  `tür` belirtilmemişse ya da "all" olarak belirtilmişse, `"internal_encoding"`, `"http_input"`, `"http_output"`, `"http_output_conv_mimetypes"`, `"mail_charset"`, `"mail_header_encoding"`, `"mail_body_encoding"`, `"illegal_chars"`, `"encoding_translation"`, `"language"`, `"detect_order"`, `"substitute_character"` ve `"strict_detection"` elemanlarını içeren bir dizi döner.

  Eğer `tür` olarak `"internal_encoding"`, `"http_input"`, `"http_output"`, `"http_output_conv_mimetypes"`, `"mail_charset"`, `"mail_header_encoding"`, `"mail_body_encoding"`, `"illegal_chars"`, `"encoding_translation"`, `"language"`, `"detect_order"`, `"substitute_character"` veya `"strict_detection"` belirtilmişse belirtilen ayar seçeneği döndürülür.

### Dönen Değerler

`tür` belirtilmemişse, tür bilgisini içeren bir dizi, başarısızlık durumunda `false` döner

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `"func_overload"` ve `"func_overload_list"` artık desteklenmiyor.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_http_output() - HTTP çıktı karakter kodlamasını tanımlar/döndürür

# mb_http_input

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_http_input — HTTP girdi karakter kodlamasını algılar

### Açıklama

function mb_http_input(?string `$tür` = `null`): array|string|false

HTTP girdi karakter kodlamasını algılar.

### Bağımsız Değişkenler

`tür`

  Girdi türü: GET için `"G"`, POST için `"P"`, COOKIE için `"C"`, dizge için `"S"`, liste için `"L"` ve tam liste için `"I"` (bir dizi döner). `tür` belirtilmezse son işlenen girdinin türü ile döner.

### Dönen Değerler

Belirtilentüre ilişkin karakter kodlaması adı veya `tür` olarak `"I"` belirtilmişse karakter kodlaması adarını içeren bir dizi ya da mb_http_input() belirtilen HTTP girdisini işlemezse `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `tür` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_http_output() - HTTP çıktı karakter kodlamasını tanımlar/döndürür
- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür

# mb_http_output

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_http_output — HTTP çıktı karakter kodlamasını tanımlar/döndürür

### Açıklama

function mb_http_output(?string `$kodlama` = `null`): string|bool

HTTP çıktı karakter kodlamasını tanımlar/döndürür. Bu işlevden sonra çıktı kodlaması dahili kodlamadan `kodlama` ile belirtilen kodlamaya dönüştürülür.

### Bağımsız Değişkenler

`kodlama`

  Belirtilmişse, işlev HTTP çıktı karakter kodlamasını tanımlar.

  Belirtilmemişse, işlev HTTP çıktı karakter kodlamasını döndürür.

### Dönen Değerler

`kodlama` belirtilmemişse, işlev HTTP çıktı karakter kodlamasını döndürür. Aksi takdirde, başarı durumunda `true` başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_http_input() - HTTP girdi karakter kodlamasını algılar
- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür

# mb_internal_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_internal_encoding — Dahili karakter kodlamasını tanımlar/döndürür

### Açıklama

function mb_internal_encoding(?string `$kodlama` = `null`): string|bool

Dahili karakter kodlamasını tanımlar/döndürür.

### Bağımsız Değişkenler

`kodlama`

  HTTP girdi karakter kodlaması dönüşümü için kullanılan karakter kodlaması ve dizge işlevleri için mbstring modülü tarafından tanımlanmış öntanımlı karakter kodlaması adı. Farkedileceği gibi, dahili kodlama çok baytlı düzenli ifadelerin kodlamasından tamamen farklıdır.

### Dönen Değerler

`kodlama` belirtilmişse başarı durumunda `true` döner ve bu durumda çok baytlı düzenli ifade kodlaması değişmez. `kodlama` belirtilmemişse veya `null` ise geçerli kodlamanın ismi döner.

### Hatalar/İstisnalar

PHP 8.0.0 ve sonrasında, `kodlama` geçersizse ValueError yavrulanmaktadır. Evvelce `E_WARNING` çıktılanırdı.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` geçersizse artık ValueError yavrulanıyor. Evvelce `E_WARNING` çıktılanırdı.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_internal_encoding() örneği

    <?php
    /* Dahili karakter kodlamasını UTF-8 yapalım */
    mb_internal_encoding("UTF-8");

    /* Dahili karakter kodlamasını öğrenelim */
    echo mb_internal_encoding();
    ?>

### Ayrıca Bakınız

- mb_http_input() - HTTP girdi karakter kodlamasını algılar
- mb_http_output() - HTTP çıktı karakter kodlamasını tanımlar/döndürür
- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür
- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür

# mb_language

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_language — Geçerli dili tanımlar/döndürür

### Açıklama

function mb_language(?string `$dil` = `null`): string|bool

Geçerli dili tanımlar/döndürür.

### Bağımsız Değişkenler

`dil`

  Eposta iletilerini kodlamak için kullanılır. Geçerli değerler aşağıdaki tabloda listelenmiştir. mb_send_mail() bu değeri epostayı kodlamak için kullanır.

  Dil | Karakter Kümesi | Kodlama | Takma Ad
  --- | --- | --- | ---
  German/de | ISO-8859-15 | Quoted-Printable | Deutsch
  English/en | ISO-8859-1 | Quoted-Printable |
  Armenian/hy | ArmSCII-8 | Quoted-Printable |
  Japanese/ja | ISO-2022-JP | BASE64 |
  Korean/ko | ISO-2022-KR | BASE64 |
  neutral | UTF-8 | BASE64 |
  Russian/ru | KOI8-R | Quoted-Printable |
  Turkish/tr | ISO-8859-9 | Quoted-Printable |
  Ukrainian/ua | KOI8-U | Quoted-Printable |
  uni | UTF-8 | BASE64 | evrensel
  Simplified Chinese/zh-cn | HZ | BASE64 |
  Traditional Chinese/zh-tw | BIG-5 | BASE64 |

### Dönen Değerler

`dil` atlanmışsa veya `null` ise dil ismini bir dizge olarak döndürür. `dil` belirtilmişse ve geçerliyse `true`, aksi takdirde `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `dil` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_send_mail() - Kodlanmış olarak posta gönderir

# mb_lcfirst

(PHP 8 >= 8.4.0)

mb_lcfirst — Dizgenin ilk karakterini küçük harfe çevirir

### Açıklama

function mb_lcfirst(string `$dizge`, ?string `$kodlama` = `null`): string

Çok baytlı kodlamalar için güvenli bir lcfirst() işlemi gerçekleştirir ve `dizge`nin ilk karakteri küçük harfe çevrilmiş bir dizge döndürür.

### Bağımsız Değişkenler

`dizge`
  Girdi dizgesi.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Sonuç dizgesi ile döner.

### Ayrıca Bakınız

- mb_ucfirst() - Dizgenin ilk karakterini büyük harfe çevirir
- lcfirst() - Bir dizgenin ilk karakterini küçük harf yapar

# mb_list_encodings

(PHP 5, PHP 7, PHP 8)

mb_list_encodings — Desteklenen kodlamaların tamamını bir dizi olarak döndürür

### Açıklama

function mb_list_encodings(): array

Desteklenen kodlamaların tamamını içeren bir dizi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Sayısal indisli bir dizi döndürür.

### Hatalar/İstisnalar

Bu işlev herhangi bir hata vermez.

### Örnekler

Örnek 1 - mb_list_encodings() örneği

    <?php

    print_r(mb_list_encodings());

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => pass
        [1] => auto
        [2] => wchar
        [3] => byte2be
        [4] => byte2le
        [5] => byte4be
        [6] => byte4le
        [7] => BASE64
        [8] => UUENCODE
        [9] => HTML-ENTITIES
        [10] => Quoted-Printable
        [11] => 7bit
        [12] => 8bit
        [13] => UCS-4
        [14] => UCS-4BE
        [15] => UCS-4LE
        [16] => UCS-2
        [17] => UCS-2BE
        [18] => UCS-2LE
        [19] => UTF-32
        [20] => UTF-32BE
        [21] => UTF-32LE
        [22] => UTF-16
        [23] => UTF-16BE
        [24] => UTF-16LE
        [25] => UTF-8
        [26] => UTF-7
        [27] => UTF7-IMAP
        [28] => ASCII
        [29] => EUC-JP
        [30] => SJIS
        [31] => eucJP-win
        [32] => SJIS-win
        [33] => JIS
        [34] => ISO-2022-JP
        [35] => Windows-1252
        [36] => ISO-8859-1
        [37] => ISO-8859-2
        [38] => ISO-8859-3
        [39] => ISO-8859-4
        [40] => ISO-8859-5
        [41] => ISO-8859-6
        [42] => ISO-8859-7
        [43] => ISO-8859-8
        [44] => ISO-8859-9
        [45] => ISO-8859-10
        [46] => ISO-8859-13
        [47] => ISO-8859-14
        [48] => ISO-8859-15
        [49] => EUC-CN
        [50] => CP936
        [51] => HZ
        [52] => EUC-TW
        [53] => BIG-5
        [54] => EUC-KR
        [55] => UHC
        [56] => ISO-2022-KR
        [57] => Windows-1251
        [58] => CP866
        [59] => KOI8-R
    )

### Ayrıca Bakınız

- mb_encoding_aliases() - Bilinen bir kodlama türünün takma adını döndürür

# mb_ltrim

(PHP 8 >= 8.4.0)

mb_ltrim — Dizgenin başındaki boşlukları (veya diğer karakterleri) budar

### Açıklama

function mb_ltrim(string `$dizge`, ?string `$karakterler` = `null`, ?string `$kodlama` = `null`): string

Çok baytlı kodlamalar için güvenli bir ltrim() işlemi gerçekleştirir. Dizgenin başındaki boşlukları (veya diğer karakterleri) budar.

İkinci bağımsız değişken belirtilmediğinde mb_ltrim() şu karakterleri budar:

- `" "` (Unicode U+0020), sıradan boşluk.
- `"\t"` (Unicode U+0009), sekme.
- `"\n"` (Unicode U+000A), satırsonu.
- `"\r"` (Unicode U+000D), satırbaşı.
- `"\0"` (Unicode U+0000), `NUL`-bayt.
- `"\v"` (Unicode U+000B), dikey sekme.

### Bağımsız Değişkenler

`dizge`
  Girdi dizgesi.
`karakterler`
  Seçimlik olarak, `karakterler` bağımsız değişkeni kullanılarak budanacak karakterler belirlenebilir. Basitçe budamak istenen tüm karakterler belirtilir. Bir karakter aralığını `..` kullanarak belirtmek de mümkündür.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Bu işlev `dizge`nin başındaki boşluklar budanmış bir dizge döndürür.

### Ayrıca Bakınız

- mb_trim() - Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar
- mb_rtrim() - Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar
- ltrim() - Dizgenin başındaki boşlukları (veya diğer karakterleri) budar

# mb_ord

(PHP 7 >= 7.2.0, PHP 8)

mb_ord — Karakterin Unicode karakter kodunu döndürür

### Açıklama

function mb_ord(string `$dizge`, ?string `$kodlama` = `null`): int|false

Belirtilen karakter kodlamasına göre belirtilen karakterin Unicode karakter kodunu döndürür.

mb_chr() işlevinin tersiniridir.

### Bağımsız Değişkenler

`dizge`

  Bir dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Başarı durumunda belirtilen dizgenin ilk karakterinin Unicode karakter kodu, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 Temel bir mb_ord() örneği

    <?php
    var_dump(mb_ord("A", "UTF-8"));
    var_dump(mb_ord("🐘", "UTF-8"));
    var_dump(mb_ord("\x80", "ISO-8859-1"));
    var_dump(mb_ord("\x80", "Windows-1252"));
    ?>

Yukarıdaki örneğin çıktısı:

int(65)
int(128024)
int(128)
int(8364)

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_chr() - Unicode karakter koduna göre karakteri döndürür
- IntlChar::ord() - Return Unicode code point value of character
- ord() - Dizgenin ilk baytını 0-255 arasında bir değere dönüştürür

# mb_output_handler

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_output_handler — Çıktı tamporundaki karakter kodlamasını dönüştüren geriçağırım işlevi

### Açıklama

function mb_output_handler(string `$dizge`, int `$durum`): string

mb_output_handler() bir ob_start() geriçağırım işlevidir. mb_output_handler() işlevi çıktı tamponundaki karakterlerin dahili karakter kodlamasını HTTP çıktısı karakter kodlamasına dönüştürür.

### Bağımsız Değişkenler

`dizge`

  Çıktı tamponunun içeriği.

`durum`

  Çıktı tamponunun durumu.

### Dönen Değerler

Dönüştürülen dizge.

### Örnekler

Örnek 1 - mb_output_handler() örneği

    <?php
    mb_http_output("UTF-8");
    ob_start("mb_output_handler");
    ?>

### Notlar

> Bilginize:

> Bir resim verisi gibi bir ikil veriyi PHP betiğinizden göndermek isterseniz bu veriyi istemciye göndermeden önce header() işlevini kullanarak Content-Type: başlığını (örneğin, header("Content-Type: image/png") olarak) göndermelisiniz. Content-Type: başlığı gönderilmişse karakter kodlaması dönüşümü uygulanmaz.

> header() işlevini kullanılarak 'Content-Type: text/*' gönderilmişse gövdenin metin içerip içermediğine bakılmaksızın karakter kodlaması dönüşümü yapılacağı unutulmamalıdır.

### Ayrıca Bakınız

- ob_start() - Çıktı tamponlamasını başlatır

# mb_parse_str

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_parse_str — GET/POST/COOKIE verisini çözümler ve küresel değişkenleri tanımlar

### Açıklama

function mb_parse_str(string `$dizge`, array `&$sonuç`): bool

GET/POST/COOKIE verisini çözümler ve küresel değişkenleri tanımlar. PHP ham POST/COOKIE verisi sağlamadığından şimdilik sadece GET verisi için kullanılabilmektedir. İşlev, URL kodlu veriyi çözümler, kodlamayı algılar ve dahili kodlamaya dönüştürüp değerleri `sonuç` dizisine veya küresel değişkenlere atar.

### Bağımsız Değişkenler

`dizge`

  URL kodlu veri.

`sonuç`

  Çözümlenip karakter kodlaması dönüştürülmüş değerleri içeren bir dizi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | İkinci bağımsız değişken artık seçimlik değil.
7.2.0 | İkinci bağımsız değişken olmadan mb_parse_str() çağrısı yapmak artık önerilmiyor

### Ayrıca Bakınız

- mb_detect_order() - Karakter kodlaması algılama sırasını tanımlar/döndürür
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür

# mb_preferred_mime_name

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_preferred_mime_name — MIME karakter kümesi dizgesini döndürür

### Açıklama

function mb_preferred_mime_name(string `$kodlama`): string|false

Belirtilen kodlama için MIME karakter kümesini bir dizge olarak döndürür.

### Bağımsız Değişkenler

`kodlama`

  Karakter kodlaması.

### Dönen Değerler

`kodlama` ile belirtilen karakter kodlaması için MIME `charset` dizgesini döndürür. Belirtilen `kodlama` için tercihli bir karakter kümesi yoksa `false` döner.

### Örnekler

Örnek 1 - mb_preferred_mime_name() örneği

    <?php
    $outputenc = "sjis-win";
    mb_http_output($outputenc);
    ob_start("mb_output_handler");
    header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));
    ?>

# mb_regex_encoding

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_regex_encoding — Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür

### Açıklama

function mb_regex_encoding(?string `$kodlama` = `null`): string|bool

Çok baytlı düzenli ifade işlevleri için geçerli karakter kodlamasını bir dizge olarak atar/döndürür.

### Bağımsız Değişkenler

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`kodlama` atanabilmişse Başarı durumunda `true`, başarısızlık durumunda `false` döner. Bu durumda dahili karakter kodlaması değişmez. `kodlama` belirtilmemiş veya `null` ise çok baytlı düzenli ifade işlevlerinde kullanılan geçerli karakter kodlamasını döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- mb_ereg() - Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

# mb_regex_set_options

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mb_regex_set_options — mbregex işlevleri için öntanımlı seçenekleri tanımlar/döndürür

### Açıklama

function mb_regex_set_options(?string `$seçenekler` = `null`): string

Çok baytlı düzenli ifade işlevleri için `seçenekler` dizgesiyle belirtilen örtanımlı seçenekleri tanımlar.

### Bağımsız Değişkenler

`seçenekler`

  Tanımlanacak seçenekler. Her karakterin bir seçeneğe karşılık geldiği bir dizge olmalıdır. Kip belirtmek için, kip karakteri sonuncu karakter olmalıdır. Çok sayıda seçenek olabilir ama tek bir kip belirtilebilir.

  Düzenli ifade seçenekleri
  Seçenek | Anlamı | Sürüm Bilgisi
  --- | --- | ---
  i | Belirsiz eşleşme etkin olur |
  x | Genişletilmiş kalıp biçimi etkin olur |
  m | `'.'` satırsonları ile eşleşir |
  s | `'^'` -> `'\A'`, `'$'` -> `'\Z'` |
  p | `m` ve `s` seçenekleri ile aynı |
  l | En uzun eşleşmeyi bulur |
  n | Boş eşleşmeler yok sayılır |
  e | eval() sonucu kod | PHP 7.1.0 ve sonrasında kullanımı önerilmiyor. PHP 8.0.0'da kaldırılmıştır.

  > Bilginize:

  > mb_regex_set_options() etkinse `"e"` seçeneği etkisizdir. mb_ereg_replace() veya mb_eregi_replace() ile kullanılır.

  Düzenli ifade sözdizimi kipleri (yalnıca biri)
  Kip | Anlamı
  --- | ---
  j | Java (Sun java.util.regex)
  u | GNU regex
  g | grep
  c | Emacs
  r | Ruby
  z | Perl
  b | POSIX Temel regex
  d | POSIX Genişletilmiş regex

### Dönen Değerler

Önceki seçenekler. `seçenekler` belirtilmemişse veya `null` ise, geçerli seçenekleri içeren bir dizge ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` belirtilmemişse veya `null` ise, artık önceki seçenekleri içeren bir dizge dönüyor. Evvelce, geçerli seçenekler dönerdi.
8.0.0 | `seçenekler` artık `null` olabiliyor.
8.0.0 | `"e"` seçeneği kaldırıldığından artık ValueError istisnası oluşturuyor.
7.1.0 | `"e"` seçeneğinin kullanımı önerilmediğinden artık `E_DEPRECATED` hatası veriyor.

### Ayrıca Bakınız

- mb_split() - Çok baytlı bir dizgeyi düzenli ifade ile parçalara ayırır
- mb_ereg() - Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir
- mb_eregi() - Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular

# mb_rtrim

(PHP 8 >= 8.4.0)

mb_rtrim — Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar

### Açıklama

function mb_rtrim(string `$dizge`, ?string `$karakterler` = `null`, ?string `$kodlama` = `null`): string

Çok baytlı kodlamalar için güvenli bir rtrim() işlemi gerçekleştirir ve `dizge`nin sonundaki boşluklar (veya diğer karakterler) budanmış bir dizge döndürür.

İkinci bağımsız değişken belirtilmediğinde mb_rtrim() şu karakterleri budar:

- `" "` (Unicode U+0020), sıradan boşluk.
- `"\t"` (Unicode U+0009), sekme.
- `"\n"` (Unicode U+000A), satırsonu.
- `"\r"` (Unicode U+000D), satırbaşı.
- `"\0"` (Unicode U+0000), `NUL`-bayt.
- `"\v"` (Unicode U+000B), dikey sekme.

### Bağımsız Değişkenler

`dizge`
  Girdi dizgesi.
`karakterler`
  Seçimlik olarak, `karakterler` bağımsız değişkeni kullanılarak budanacak karakterler belirlenebilir. Basitçe budamak istenen tüm karakterler belirtilir. Bir karakter aralığını `..` kullanarak belirtmek de mümkündür.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Değiştirilmiş dizge ile döner.

### Ayrıca Bakınız

- mb_trim() - Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar
- mb_ltrim() - Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
- rtrim() - Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar

# mb_scrub

(PHP 7 >= 7.2.0, PHP 8)

mb_scrub — Bozuk bayt dizilerini yedek karakterle değiştirir

### Açıklama

function mb_scrub(string `$dizge`, ?string `$kodlama` = `null`): string

Belirtilen kodlamadan veya herhangi bir kodlama belirtilmemişse öntanımlı kodlamadan aynı kodlamaya bir karakter kümesi dönüşümü gerçekleştirir. Herhangi bir geçersiz bayt dizisinin yedek karakterle değiştirilmesi gibi bir etki sağlar.

### Bağımsız Değişkenler

`dizge`

  Girdi dizgesi.

`kodlama`

  `dizge`yi yorumlamak için kullanılan kodlama. Atlanırsa veya `null` belirtilirse mbstring.internal_encoding yönergesine değer atanmışsa bu değer kullanılır, yoksa yerine default_charset setting yönergesindeki değer kullanılır.

### Dönen Değerler

Geçersiz baytları değiştirilmiş dizge.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

# mb_send_mail

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_send_mail — Kodlanmış olarak posta gönderir

### Açıklama

function mb_send_mail(
string `$kime`,
string `$konu`,
string `$ileti`,
array|string `$ek_başlıklar` = [],
?string `$ek_bağımsız değişkenler` = `null`
): bool

Eposta gönderir. Başlıklar ve ileti mb_language() ayarına göre dönüştürülüp kodlanır. mail() işlevi için bir sarmalayıcı olup ayrıntılar için mail() işlevine bakınız.

### Bağımsız Değişkenler

`kime`

  Epostanın gönderileceği adres. Adresler arasına virgül koyarak çok sayıda adres belirtilebilir. Bu bağımsız değişken otomatik olarak kodlanmaz.

`konu`

  Epostanın konusu.

`ileti`

  Postalanacak ileti.

`ek_başlıklar` (seçimlik)

  Eposta başlığının sonuna bir dize veya dizi yerleştirilir.

  Bu, genellikle ek başlıklar (From, Cc ve Bcc) eklemek için kullanılır. Birden fazla ek başlık CRLF (\r\n) ile ayrılmalıdır. Saldırganlar tarafından istenmeyen başlıkların eklenmemesi için bağımsız değişkeni doğrulayın.

  Bir dizi aktarılırsa, anahtarları başlık adları ve değerleri de ilgili başlık değerleri olmalıdır.

  > Bilginize:

  > Posta gönderirken, postanın bir `From` başlığı içermesi gerekir. Bu, `ek_bağımsız değişkenler` bağımsız değişkeni ile ayarlanabilir veya php.ini içinde bir öntanımlı ayarlanabilir.

  > Bunun yapılmaması, `Uyarı: mail (): php.ini içinde "sendmail_from" tanımlanmamış veya özel "From:" başlığı eksik` benzeri bir hata iletisine sebep olacaktır. `From` başlığı ayrıca Windows altında `Return-Path` başlığını da ayarlar.

  > Bilginize:

  > İletiler alınmazsa, yalnızca LF(\n) kullanmayı deneyin. Bazı Unix posta aktarım aracıları (özellikle » qmail), LF'yi otomatik olarak CRLF ile değiştirir (bu, CRLF için kullanılırsa CR'nin iki katına çıkmasına neden olur). » RFC 2822 ile uyumlu olmadığı için bu son çare olmalıdır.

`ek_bağımsız değişkenler`

  `ek_bağımsız değişkenler` bir posta sunucusu komut satırı bağımsız değişkenidir. Sendmail kullanırken doğru Return-Path başlığı belirtmek için kullanışlıdır.

  Bu bağımsız değişken, komutun yürütülmesini önlemek için dahili olarak escapeshellcmd() tarafından öncelenir. escapeshellcmd(), komutun yürütülmesini engeller ancak ek parametrelerin eklenmesine izin verir. Güvenlik nedeniyle bu bağımsız değişkenin doğrulanması gerekir.

  escapeshellcmd() otomatik olarak uygulandığından, internet RFC'leri tarafından eposta adresi olarak izin verilen bazı karakterler kullanılamaz. Bu mail() karakterlerini kullanmak için gerekli programlar kullanılamaz.

  Zarf göndericisi (-f) bu yöntem kullanılarak ayarlandığında iletiye bir 'X-Warning' başlığının eklenmesini önlemek için, http sunucusunun çalıştığı kullanıcı, sendmail yapılandırmasına güvenilir kullanıcı olarak eklenmelidir. Sendmail kullanıcıları için bu dosya /etc/mail/trusted-users dosyasıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `ek_bağımsız değişkenler` artık boş olabiliyor.
7.2.0 | `ek_bağımsız değişkenler` artık dizi kabul ediyor.

### Ayrıca Bakınız

- mail() - Eposta gönderir
- mb_encode_mimeheader() - Dizgeyi MIME başlığı için kodlar
- mb_language() - Geçerli dili tanımlar/döndürür

# mb_split

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_split — Çok baytlı bir dizgeyi düzenli ifade ile parçalara ayırır

### Açıklama

function mb_split(string `$şablon`, string `$dizge`, int `$sınır` = -1): array|false

`dizge` ile belirtilen bir dizgeyi `şablon` ile belirtilen düzenli ifadeye göre parçalara ayırır ve sonucu bir dizi olarak döndürür.

### Bağımsız Değişkenler

`şablon`

  Düzenli ifade şablonu.

`dizge`

  Parçalara ayrılacak dizge.

`sınır`
  İsteğe bağlı olup, belirtildiği takdirde en fazla `sınır` sayıda parça döndürülür.

### Dönen Değerler

Dir dizi olarak sonuç, başarısızlık durumunda `false` döner.

### Notlar

> Bilginize:

> mb_regex_encoding() ile belirtilen karakter kodlaması bu işlev için öntanımlı karakter kodlaması olarak kullanılır.

### Ayrıca Bakınız

- mb_regex_encoding() - Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_ereg() - Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

# mb_str_pad

(PHP 8 >= PHP 8.3.0)

mb_str_pad — Çok baytlı bir dizgeyi belli bir uzunlukta diğer bir çok baytlı dizgeyle doldurur

### Açıklama

function mb_str_pad(
string `$dizge`,
int `$uzunluk`,
string `$dolgu_dizgesi` = " ",
int `$dolgu_türü` = `STR_PAD_RIGHT`,
?string `$kodlama` = `null`
): string

Bu işlev `dizge` değiştirgesini, uzunluğu Unicode kod konumları cinsinden ölçülen belirtilen dolgu uzunluğuna kadar solundan, sağından veya her iki tarafından doldurarak döndürür. Seçimlik `dolgu_dizgesi` değiştirgesi belirtilmezse, `dizge` boşluk karakterleriyle doldurulur, aksi takdirde sınıra kadar `dolgu_dizgesi` içindeki karakterlerle doldurulur.

### Bağımsız Değişkenler

`dizge`

  Girdi dizgesi.

`uzunluk`

  `uzunluk` değeri negatifse, girdi dizgesinin uzunluğundan küçük veya ona eşitse herhangi bir dolgu işlemi yapılmaz ve `dizge` döndürülür.

`dolgu_dizgesi`

  > Bilginize:

  > Gerekli dolgu karakterlerinin sayısı `dolgu_dizgesi` uzunluğuna tam olarak bölünemiyorsa `dolgu_dizgesi` kırpılabilir.

`dolgu_türü`

  Seçimlik `dolgu_türü` değiştirgesi olarak `STR_PAD_RIGHT` (sağ), `STR_PAD_LEFT` (sol) veya `STR_PAD_BOTH` (her iki taraf) belirtilebilir. `STR_PAD_RIGHT` değeri öntanımlıdır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Dolgulu dizge döner.

### Örnekler

Örnek 1 mb_str_pad() örneği

    <?php
    var_dump(mb_str_pad('▶▶', 6, '❤❓❇', STR_PAD_RIGHT)); // string(18) "▶▶❤❓❇❤"
    var_dump(mb_str_pad('▶▶', 6, '❤❓❇', STR_PAD_LEFT));  // string(18) "❤❓❇❤▶▶"
    var_dump(mb_str_pad('▶▶', 6, '❤❓❇', STR_PAD_BOTH));  // string(18) "❤❓▶▶❤❓"

    var_dump(mb_str_pad("🎉", 3, "祝", STR_PAD_LEFT));   // string(10) "祝祝🎉"
    ?>

# mb_str_split

(PHP 7 >= 7.4.0, PHP 8)

mb_str_split — Belirtilen çok baytlı dizgenin karakterlerini içeren bir dizi döndürür

### Açıklama

function mb_str_split(string `$dizge`, int `$uzunluk` = 1, ?string `$kodlama` = `null`): array

Bir dizgeler dizisi döndürür. 1, 2, veya 4 baytlık sabit boyutlular yanında değişken karakter boyutlu kodlamaları da destekleyen bir str_split() sürümüdür. `uzunluk` belirtilmişse dizge belirtilen bayt uzunlukta parçalara bölünür. `kodlama` belirtilmese de olur.

### Bağımsız Değişkenler

`dizge`

  Karakterleri ayrıştırılacak dizge.

`uzunluk`

  Belirtilirse, dönen dizinin her elemanı tek baytlık karakterler değil, çok baytlı karakterler içerir.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

  Desteklenen kodlamalardan birini içeren bir dizge.

### Dönen Değerler

mb_str_split() dizge dizisi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.
8.0.0 | Başarısızlık durumunda artık `false` dönmüyor.

### Ayrıca Bakınız

- str_split() - Bir dizgeyi bir diziye dönüştürür

# mb_strcut

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strcut — Dizgenin başlangıcı ve uzunluğu belirtilen parçası ile döner

### Açıklama

function mb_strcut(
string `$dizge`,
int `$başlangıç`,
?int `$uzunluk` = `null`,
?string `$kodlama` = `null`
): string

mb_strcut() işlevi bir dizgeden bir alt digeyi çıkarma işlemini mb_substr() gibi yapar ama karakterlerle değil baytlarla çalışır. Eğer `başlangıç` konumu çok baytlı bir karakterin ikinci veya sonraki baytındaysa başlangıcı o karaterin ilk baytına taşır. Bu da ayrıca, dizgeyi basitçe baytların arasından kesen ve bozuk çok baytlı dizgeyle dönen substr() ile aradaki farktır.

### Bağımsız Değişkenler

`dizge`

  Parça çıkarılacak dizge.

`başlangıç`

  `başlangıç` negatif değilse, dönen dizge `dizge` içinde sıfırdan itibaren sayılarak `başlangıç`ıncı bayttan başlar. Örneğin, '`abcdef`' dizgesinde `0`ıncı bayt '`a`' iken `2`incisi '`c`'dir ve bu böyle gider.

  `başlangıç` negatifse, dönen dizge `dizge`nin sonundan sayılan `başlangıç`ıncı bayttan başlar. Ancak negatif `başlangıç`ıncı bayt dizgenin başlangıcını aşıyorsa dönen parça `dizge`nin başlangıcından başlar.

`uzunluk`

  Bayt cinsinden uzunluk. Atlanıra veya `null` ise dizgenin sonuna kadar tüm baytlar çıkarılır.

  `uzunluk` negatifse,dönen dizge `dizge`nin sonundan itibaren sayılan `uzunluk`uncu baytta sonlanır. Ancak `uzunluk`uncu bayt `dizge`nin başlanıcından öncesini işaret ediyorsa boş dizge döner.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

mb_strcut() işlevi, `dizge` dizgesinden `başlangıç` ve `uzunluk` ile belirtilen parçayı döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_substr() - Dizgenin bir alt dizgesini alır
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür

# mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strimwidth — Dizgeyi belirtilen genişlikte kırpar

### Açıklama

function mb_strimwidth(
string `$dizge`,
int `$başlangıç`,
int `$genişlik`,
string `$kırpıcı` = "",
?string `$kodlama` = `null`
): string

Belirtilen `dizge` dizgesini `genişlik` ile belirtilen genişlikten kırpar. Burada yarım genişlikte karakterler `1`, tam genişlikte karakterler `2` sayılır. Doğu Asya karakter genişlikleri ile ilgili ayrıntılar için bkz.» http://www.unicode.org/reports/tr11/

### Bağımsız Değişkenler

`dizge`

  Kırpılacak dizge.

`başlangıç`

  Kırpma genişliğinin başlatılacağı konum. Dizgenin başından itibaren sayılır. İlk karakterin indisi 0'dır. Negatifse dizgenin sonundan itibaren karater sayısıdır.

`genişlik`

  Kırpma genişliği. Negatifse dizgenin sonundan itibaren karater sayısıdır.

  > Bilginize:

  > PHP 8.3.0 itibariyle negatif genişlik değeri aktarımı önerilmiyor.

`kırpıcı`

  Dizge kırpılırken dizgenin sonuna eklenen bir dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Kırpılmış dizge ile döner. `kırpıcı` belirtilmişse, `genişlik`inci karakterin yerini alır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | mb_strimwidth() işlevine negatif `genişlik` değeri aktarımı artık önerilmiyor.
8.0.0 | `kodlama` artık `null` olabiliyor.
7.1.0 | `başlangıç`s ve `genişlik` artık negatif olabiliyor.

### Örnekler

Örnek 1 - mb_strimwidth() örneği

    <?php
    $str = mb_strimwidth($str, 0, 40, "..>");
    echo mb_strimwidth("Hello World", 0, 10, "...");
    // output: "Hello W..."

    ?>

### Ayrıca Bakınız

- mb_strwidth() - Dizge genişliğini döndürür
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür

# mb_stripos

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_stripos — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür

### Açıklama

function mb_stripos(
string `$samanlık`,
string `$iğne`,
int `$başlangıç` = 0,
?string `$kodlama` = `null`
): int|false

Karakter sayısına dayalı olarak güvenilir bir çok baytlı strpos() işlemi yürütür. `iğne`'nin ilk karakterinin yeri `samanlık` dizgesinin ilk karakterine göre hesaplanır. İlk karakterin indisi 0'dır. mb_strpos() işlevinden farklı olarak, mb_stripos() harf büyüklüğüne duyarsızdır.

### Bağımsız Değişkenler

`samanlık`

  İlk `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde ilki aranacak dizge.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı konum. Negetifse dizgenin sonundan itibaren sayılır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`iğne`'nin `samanlık` içinde bulunduğu ilk yerin indisi ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Hatalar/İstisnalar

- Eğer `başlangıç` değeri `samanlık` uzunluğundan büyükse, bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Ayrıca Bakınız

- stripos() - Harf büyüklüğüne duyarsız olarak bir alt dizgenin ilkinin konumunu bulur
- strpos() - Bir alt dizgenin ilkinin konumunu bulur
- mb_strpos() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür

# mb_stristr

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_stristr — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner

### Açıklama

function mb_stristr(
string `$samanlık`,
string `$iğne`,
bool `$ilk_parça` = `false`,
?string `$kodlama` = `null`
): string|false

mb_strstr() işlevi, `samanlık` içinde `iğne`'yi bulur ve `iğne`'nin ilk karakterinin yerine göre `samanlık` dizgesinin ilk veya son parçası ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür. mb_strstr() işlevinden farklı olarak, mb_stristr() harf büyüklüğüne duyarsızdır.

### Bağımsız Değişkenler

`samanlık`

  İlk `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde aranacak dizge.

`ilk_parça`

  `samanlık` dizgesinin hangi parçasının döndürüleceğini belirler. `true` atanırsa `samanlık` dizgesinin ilk karakterinden (dahil) `iğne` dizgesinin ilk karakterine (hariç) kadar olan parçayla döner. `false` atanırsa, `iğne` dizgesinin ilk karakterinden (dahil) `samanlık` dizgesinin son karakterine (dahil) kadar olan parça döndürülür. `false` öntanımlıdır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Eğer `samanlık` içinde `iğne` yoksa `false`, aksi takdirde ilk veya son `samanlık` parçası ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- stristr() - Harf büyüklüğüne duyarsız olarak ilk alt dizgeyi bulur
- strstr() - İlk alt dizgeyi bulur
- mb_strstr() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner

# mb_strlen

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strlen — Dizge uzunluğu ile döner

### Açıklama

function mb_strlen(string `$dizge`, ?string `$kodlama` = `null`): int

Belirtilen dizgenin karakter sayısını döndürür.

### Bağımsız Değişkenler

`dizge`

  Karakter sayısı öğrenilmek istenen dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`dizge` bağımsız değişkeni ile belirtilen dizgenin karakter sayısını döndürür. Her çok baytlı karakter 1 sayılır.

### Hatalar/İstisnalar

Belirtilen kodlama bilinmiyorsa, `E_WARNING` seviyesinde bir hata üretilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- grapheme_strlen() - Dizgenin sesletim birimi cinsinden uzunluğunu döndürür
- iconv_strlen() - Dizgenin karakter sayısı ile döner
- strlen() - Dizge uzunluğunu döndürür

# mb_strpos

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strpos — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür

### Açıklama

function mb_strpos(
string `$samanlık`,
string `$iğne`,
int `$başlangıç` = 0,
?string `$kodlama` = `null`
): int|false

Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür.

Karakter sayısına dayalı olarak güvenilir bir çok baytlı strpos() işlemi yürütür. `iğne`'nin ilk karakterinin yeri `samanlık` dizgesinin ilk karakterine göre hesaplanır. İlk karakterin indisi 0'dır.

### Bağımsız Değişkenler

`samanlık`

  `iğne`'ye ilk rastlanılan noktanın konumunun elde edileceği dizge.

`iğne`

  `samanlık` içinde ilki aranacak dizge. strpos() işlevinden farklı olarak sayısal değerler karakterin sıra değeri değildir.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı konum. Belirtilmezse 0 kullanılır. Negatif değer dizgenin sonundan itibaren sayılır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

İlk `iğne`'nin `samanlık` içinde bulunduğu yerin indisi ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Hatalar/İstisnalar

- Eğer `başlangıç` değeri `samanlık` uzunluğundan büyükse, bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.
7.1.0 | `başlangıç` artık negatif olabiliyor.

### Ayrıca Bakınız

- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- strpos() - Bir alt dizgenin ilkinin konumunu bulur

# mb_strrchr

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_strrchr — Bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner

### Açıklama

function mb_strrchr(
string `$samanlık`,
string `$iğne`,
bool `$ilk_parça` = `false`,
?string `$kodlama` = `null`
): string|false

mb_strrchr() işlevi, `samanlık` içinde ilk `iğne`'yi bulur ve `ilk_parça` değerine göre `samanlık` dizgesinin ilk veya son parçası ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Bağımsız Değişkenler

`samanlık`

  Sonuncu `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde aranacak karakter.

`ilk_parça`

  `samanlık` dizgesinin hangi parçasının döndürüleceğini belirler. `true` atanırsa `samanlık` dizgesinin ilk karakterinden (dahil) `iğne` karakterine (hariç) kadar olan parçayla döner. `false` atanırsa, `iğne` karakterinden (dahil) `samanlık` dizgesinin son karakterine (dahil) kadar olan parça döndürülür. `false` öntanımlıdır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Eğer `samanlık` içinde `iğne` yoksa `false`, aksi takdirde ilk veya son `samanlık` parçası ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- strrchr() - Bir dizgede belli bir karakterin sonuncusuna göre dizgenin bir parçasıyla döner
- mb_strstr() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
- mb_strrichr() - Harf büyüklüğüne duyarsız olarak bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner

# mb_strrichr

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_strrichr — Harf büyüklüğüne duyarsız olarak bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner

### Açıklama

function mb_strrichr(
string `$samanlık`,
string `$iğne`,
bool `$ilk_parça` = `false`,
?string `$kodlama` = `null`
): string|false

mb_strrichr() işlevi, `samanlık` içinde `iğne`'yi bulur ve `iğne`'nin yerine göre `samanlık` dizgesinin ilk veya son parçası ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür. mb_strrchr() işlevinden farklı olarak mb_strrichr() harf büyüklüğüne duyarsızdır.

### Bağımsız Değişkenler

`samanlık`

  Sonuncu `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde aranacak karakter.

`ilk_parça`

  `samanlık` dizgesinin hangi parçasının döndürüleceğini belirler. `true` atanırsa `samanlık` dizgesinin ilk karakterinden (dahil) `iğne` karakterine (hariç) kadar olan parçayla döner. `false` atanırsa, `iğne` karakterinden (dahil) `samanlık` dizgesinin son karakterine (dahil) kadar olan parça döndürülür.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Eğer `samanlık` içinde `iğne` yoksa `false`, aksi takdirde ilk veya son `samanlık` parçası ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_stristr() - Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
- mb_strrchr() - Bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner

# mb_strripos

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_strripos — Bir dizgenin içinde harf büyüklüğüne duyarsız olarak başka bir dizgeye son rastlanılan noktanın indisini döndürür

### Açıklama

function mb_strripos(
string `$samanlık`,
string `$iğne`,
int `$başlangıç` = 0,
?string `$kodlama` = `null`
): int|false

Karakter sayısına dayalı olarak güvenilir bir çok baytlı strripos() işlemi yürütür. `iğne`'nin ilk karakterinin yeri `samanlık` dizgesinin ilk karakterine göre hesaplanır. İlk karakterin indisi 0'dır. mb_strrpos() işlevinden farklı olarak mb_strripos() harf büyüklüğüne duyarsızdır.

### Bağımsız Değişkenler

`samanlık`

  Sonuncu `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde sonuncusu aranacak dizge.

`başlangıç`

  `samanlık` içinde aramanın başlatılacağı konum. Negatif bir değer `samanlık` dizgesinin son karakterine göre aramanın durdurulacağı konumu belirtir.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Sonuncu `iğne`'nin `samanlık` içinde bulunduğu yerin indisi ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Hatalar/İstisnalar

- Eğer `başlangıç` değeri `samanlık` uzunluğundan büyükse, bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- strripos() - Bir dizgede harf büyüklüğüne duyarsız olarak bir alt dizgenin sonuncusunu bulur
- strrpos() - Bir dizgede bir karakterin sonuncusunu bulur
- mb_strrpos() - Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür

# mb_strrpos

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strrpos — Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür

### Açıklama

function mb_strrpos(
string `$samanlık`,
string `$iğne`,
int `$başlangıç` = 0,
?string `$kodlama` = `null`
): int|false

Karakter sayısına dayalı olarak güvenilir bir çok baytlı strrpos() işlemi yürütür. `iğne`'nin ilk karakterinin yeri `samanlık` dizgesinin ilk karakterine göre hesaplanır. İlk karakterin indisi 0'dır.

### Bağımsız Değişkenler

`samanlık`

  Sonuncu `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde sonuncusu aranacak dizge.

`başlangıç`
  `samanlık` içinde aramanın başlatılacağı konum. Negatif bir değer `samanlık` dizgesinin son karakterine göre aramanın durdurulacağı konumu belirtir.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Sonuncu `iğne`'nin `samanlık` içinde bulunduğu yerin indisi ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Hatalar/İstisnalar

- Eğer `başlangıç` değeri `samanlık` uzunluğundan büyükse, bir ValueError yavrulanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başlangıç bağımsız değişkenini kaldırmadan üçüncü bağımsız değişken olarak `kodlama` bağımsız değişkeni aktarılıyor.
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_strpos() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
- strrpos() - Bir dizgede bir karakterin sonuncusunu bulur

# mb_strstr

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

mb_strstr — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner

### Açıklama

function mb_strstr(
string `$samanlık`,
string `$iğne`,
bool `$ilk_parça` = `false`,
?string `$kodlama` = `null`
): string|false

mb_strstr() işlevi, `samanlık` içinde `iğne`'yi bulur ve `iğne`'nin ilk karakterinin yerine göre `samanlık` dizgesinin ilk veya son parçası ile döner. Eğer `samanlık` içinde `iğne` yoksa `false` döndürür.

### Bağımsız Değişkenler

`samanlık`

  İlk `iğne`'nin aranacağı dizge.

`iğne`

  `samanlık` içinde aranacak dizge.

`ilk_parça`

  `samanlık` dizgesinin hangi parçasının döndürüleceğini belirler. `true` atanırsa `samanlık` dizgesinin ilk karakterinden (dahil) `iğne` dizgesinin ilk karakterine (hariç) kadar olan parçayla döner. `false` atanırsa, `iğne` dizgesinin ilk karakterinden (dahil) `samanlık` dizgesinin son karakterine (dahil) kadar olan parça döndürülür.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Eğer `samanlık` içinde `iğne` yoksa `false`, aksi takdirde ilk veya son `samanlık` parçası ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `iğne` artık boş dizge kabul ediyor.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- stristr() - Harf büyüklüğüne duyarsız olarak ilk alt dizgeyi bulur
- strstr() - İlk alt dizgeyi bulur
- mb_stristr() - Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner

# mb_strtolower

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mb_strtolower — Dizgeyi küçük harfli yapar

### Açıklama

function mb_strtolower(string `$dizge`, ?string `$kodlama` = `null`): string

`dizge` içindeki 'abecesel' karakterlerin tamamını küçük harfe çevirir.

### Bağımsız Değişkenler

`dizge`

  Küçük harfli yapılacak dizge.

`encoding`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

İçindeki 'abecesel' karakterlerin tamamı küçük harfe çevrilmiş olarak `dizge` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Yunanca sigma harfi için koşullu büyük-küçük harf kuralları gerçeklendi.

### Örnekler

Örnek 1 - mb_strtolower() yerele duyarsızlık örneği

    <?php
    $str = "PINAR'IN ÇOK SEVDİĞİ küçük BİR KUZUSU VAR.";
    $str = mb_strtolower($str);
    echo $str; // pinar'in çok sevdiği küçük bir kuzusu var.
    ?>

Örnek 2 - Latin olmayan karakterlerle mb_strtolower() örneği

    <?php
    $str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
    $str = mb_strtolower($str, 'UTF-8');
    echo $str; //τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός
    ?>

### Evrenkod

strtolower() ve strtoupper() gibi standart büyük-küçük harf dönüşüm işlevlerinden farklı olarak, dönüşümü Unicode karakter özelliklerine göre yapar. Bu bakımdan bu işlevin davranışı yerel ayarlardan etkilenmez ve büyük-küçük harf ayrımı yapılabilen her karakteri dönüştürebilir.

Unicode özellikleri hakkında daha fazla bilgi için » http://www.unicode.org/reports/tr21/ adresine bakınız.

### Ayrıca Bakınız

- mb_strtoupper() - Dizgeyi büyük harfli yapar
- mb_convert_case() - Bir dizgeye büyük-küçük harf dönüşümü uygular
- strtolower() - Bir dizgenin harflerini küçük harfe çevirir

# mb_strtoupper

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mb_strtoupper — Dizgeyi büyük harfli yapar

### Açıklama

function mb_strtoupper(string `$dizge`, ?string `$kodlama` = `null`): string

`dizge` içindeki 'abecesel' karakterlerin tamamını büyük harfe çevirir.

### Bağımsız Değişkenler

`dizge`

  Büyük harfli yapılacak dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

İçindeki 'abecesel' karakterlerin tamamı büyük harfe çevrilmiş olarak `dizge`.

### Örnekler

Örnek 1 - mb_strtoupper() yerele duyarsızlık örneği

    <?php
    $str = "Şahizar'ın çok sevdiği küçük bir KUZUSU var.";
    $str = mb_strtoupper($str);
    echo $str; // ŞAHIZAR'IN ÇOK SEVDIĞI KÜÇÜK BIR KUZUSU VAR.
    ?>

Örnek 2 - Latin olmayan karakterlerle mb_strtoupper() örneği

    <?php
    $str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
    $str = mb_strtoupper($str, 'UTF-8');
    echo $str; // ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
    ?>

### Evrenkod

strtolower() ve strtoupper() gibi standart büyük-küçük harf dönüşüm işlevlerinden farklı olarak, dönüşümü Unicode karakter özelliklerine göre yapar. Bu bakımdan bu işlevin davranışı yerel ayarlardan etkilenmez ve büyük-küçük harf ayrımı yapılabilen her karakteri dönüştürebilir.

Unicode özellikleri hakkında daha fazla bilgi için » http://www.unicode.org/reports/tr21/ adresine bakınız.

### Ayrıca Bakınız

- mb_strtolower() - Dizgeyi küçük harfli yapar
- mb_convert_case() - Bir dizgeye büyük-küçük harf dönüşümü uygular
- strtoupper() - Bir dizgenin harflerini büyük harfe çevirir

# mb_strwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strwidth — Dizge genişliğini döndürür

### Açıklama

function mb_strwidth(string `$dizge`, ?string `$kodlama` = `null`): int

`dizge` dizgesinin genişliği ile döner. Burada yarım genişlikte karakterler `1`, tam genişlikte karakterler `2` sayılır. Doğu Asya karakter genişlikleri ile ilgili ayrıntılar için bkz.» http://www.unicode.org/reports/tr11/

Çok baytlı karakterler normalde tek baytlı karakterlerden iki misli daha geniştir.

Tam genişlikte karakterler: `U+1100`-`U+115F`, `U+11A3`-`U+11A7`, `U+11FA`-`U+11FF`, `U+2329`-`U+232A`, `U+2E80`-`U+2E99`, `U+2E9B`-`U+2EF3`, `U+2F00`-`U+2FD5`, `U+2FF0`-`U+2FFB`, `U+3000`-`U+303E`, `U+3041`-`U+3096`, `U+3099`-`U+30FF`, `U+3105`-`U+312D`, `U+3131`-`U+318E`, `U+3190`-`U+31BA`, `U+31C0`-`U+31E3`, `U+31F0`-`U+321E`, `U+3220`-`U+3247`, `U+3250`-`U+32FE`, `U+3300`-`U+4DBF`, `U+4E00`-`U+A48C`, `U+A490`-`U+A4C6`, `U+A960`-`U+A97C`, `U+AC00`-`U+D7A3`, `U+D7B0`-`U+D7C6`, `U+D7CB`-`U+D7FB`, `U+F900`-`U+FAFF`, `U+FE10`-`U+FE19`, `U+FE30`-`U+FE52`, `U+FE54`-`U+FE66`, `U+FE68`-`U+FE6B`, `U+FF01`-`U+FF60`, `U+FFE0`-`U+FFE6`, `U+1B000`-`U+1B001`, `U+1F200`-`U+1F202`, `U+1F210`-`U+1F23A`, `U+1F240`-`U+1F248`, `U+1F250`-`U+1F251`, `U+20000`-`U+2FFFD`, `U+30000`-`U+3FFFD`. Diğer karakterlerin tümü yarım genişliktedir.

### Bağımsız Değişkenler

`dizgi`

  Genişliği hesaplanacak dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`dizge` dizgesinin genişliği.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_strwidth() örneği

    <?php
    var_dump(
        mb_strwidth('a'),       // LATIN SMALL LETTER A
        mb_strwidth("\u{ff41}") // FULLWIDTH LATIN SMALL LETTER A
    );
    ?>

Yukarıdaki örneğin çıktısı:

    int(1)
    int(2)

### Ayrıca Bakınız

- mb_strimwidth() - Dizgeyi belirtilen genişlikte kırpar
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür

# mb_substitute_character

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_substitute_character — İkame karakteri atar/döndürür

### Açıklama

function mb_substitute_character(string|int|null `$ikamekrk` = `null`): string|int|bool

Girdi karakter kodlaması geçersiz olduğunda veya bir karakter kodunun çıktı karakter kodlamasında mevcut olmadığı durumda geçersiz karakterin yerine kullanılacak karakteri belirtmek için kullanılır. Geçersiz karakterlerin yerine Bir `"none"` (çıktı yok), string veya int türünde bir değer (Unidode karakter kodu) belirtilebilir.

Bu ayarlamadan etkilenen işlevler: mb_convert_encoding(), mb_convert_variables(), mb_output_handler(), mb_scrub() ve mb_send_mail().

### Bağımsız Değişkenler

`ikamekrk`

  Bir integer olarak bir Evrenkod değeri veya bir string olarak aşağıdaki dizgelerden biri belirtilir:

  - `"none"`: hiçbir şey çıktılanmaz
  - `"long"`: Karakterin kod değeri çıktılanır (Örnek: U+3000, JIS+7E7E)
  - `"entity"`: Karakter öğesi (Örnek: `&#x200;`)

### Dönen Değerler

Eğer `ikamekrk` atanabilmişse başarı durumunda `true`, aksi takdirde `false` döner. Eğer `ikamekrk` belirtilmemişse veya `null` ise, geçerli ayarlarla döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `ikamekrk` artık boş dizgeyi desteklemiyor, yerine `"none"` belirtilmeli.
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_substitute_character() örneği

    <?php
    /* Unicode U+3013 (GETA MARK) basılsın */
    mb_substitute_character(0x3013);

    /* Onaltılık biçeme ayarlayalım */
    mb_substitute_character("long");

    /* Geçerli ayarı göster */
    echo mb_substitute_character();
    ?>

# mb_substr

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_substr — Dizgenin bir alt dizgesini alır

### Açıklama

function mb_substr(
string `$dizge`,
int `$başlangıç`,
?int `$uzunluk` = `null`,
?string `$kodlama` = `null`
): string

Karakterler üzerinde güvenilir bir çok baytlı substr() işlemi gerçekleştirir. `başlangıç` konumuna `dizge` başlangıcından sayılarak erişilir. Belirtilen dizgenin ilk karakterinin indisinin 0 olduğu varsayılır.

### Bağımsız Değişkenler

`dizge`

  Alt dizge başlangıcının aranacağı dizge.

`başlangıç`

  `başlangıç` negatif değilse, `dizge` içinde sıfırıncı konumdan itibaren `başlangıç`'ıncı konumda başlayan dizge döner. Örneğin, '`abcdef`' dizgesinde `0` konumundaki karakter '`a`', `2` konumundaki karakter '`c`' olur ve böyle devam eder.

  `başlangıç` negatifse, `dizge`nin sonuncu karakterinden itibaren `başlangıç`ıncı karakterden başlayan dize döner.

`uzunluk`

  İstenen alt dizgenin azami uzunluğu. Atlanırsa veya `null` ise, `dizge`nin tüm karakterleri çıkarılır.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

mb_substr() işlevi, yeri `başlangıç` ve `uzunluk` bağımsız değişkenleri ile belirtilen `dizge` parçası ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Ayrıca Bakınız

- mb_strcut() - Dizgenin başlangıcı ve uzunluğu belirtilen parçası ile döner
- mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür

# mb_substr_count

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

mb_substr_count — Mevcut alt dizgelerin sayısı ile döner

### Açıklama

function mb_substr_count(string `$samanlık`, string `$iğne`, ?string `$kodlama` = `null`): int

`samanlık` ile belirtilen dizge içinde `iğne` ile belirtilen dizgelerden kaç tane bulunduğu bilgisini verir.

### Bağımsız Değişkenler

`samanlık`

  İçinde arama yapılacak dizge.

`needle`

  Aranacak dizge.

`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

`samanlık` ile belirtilen dizge içinde `iğne` ile belirtilen dizgelerden kaç tane bulunduğu.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kodlama` artık `null` olabiliyor.

### Örnekler

Örnek 1 - mb_substr_count() örneği

    <?php
    echo mb_substr_count("Bu da Buda bu da Buda.", "Bu"); // 3 basar
    ?>

### Ayrıca Bakınız

- mb_strpos() - Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
- mb_substr() - Dizgenin bir alt dizgesini alır
- substr_count() - Bir dizge içinde belli bir alt dizgeden kaç tane bulunduğunu bulur

# mb_trim

(PHP 8 >= 8.4.0)

mb_trim — Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar

### Açıklama

function mb_trim(string `$dizge`, ?string `$karakterler` = `null`, ?string `$kodlama` = `null`): string

Çok baytlı kodlamalar için güvenli bir trim() işlemi gerçekleştirir ve `dizge`nin başındaki ve sonundaki boşluklar budanmış bir dizge döndürür. İkinci bağımsız değişken belirtilmediğinde mb_trim() şu karakterleri budar:

- `" "` (Unicode U+0020), sıradan boşluk.
- `"\t"` (Unicode U+0009), sekme.
- `"\n"` (Unicode U+000A), satırsonu.
- `"\r"` (Unicode U+000D), satırbaşı.
- `"\0"` (Unicode U+0000), `NUL`-bayt.
- `"\v"` (Unicode U+000B), dikey sekme.

### Bağımsız Değişkenler

`dizge`
  Budanacak string.
`karakterler`
  Seçimlik olarak, `karakterler` bağımsız değişkeni kullanılarak budanacak karakterler belirlenebilir. Basitçe budamak istenen tüm karakterler belirtilir. Bir karakter aralığını `..` kullanarak belirtmek de mümkündür.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Budanmış dizge.

### Ayrıca Bakınız

- mb_ltrim() - Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
- mb_rtrim() - Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar
- trim() - Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar

# mb_ucfirst

(PHP 8 >= 8.4.0)

mb_ucfirst — Dizgenin ilk karakterini büyük harfe çevirir

### Açıklama

function mb_ucfirst(string `$dizge`, ?string `$kodlama` = `null`): string

Çok baytlı kodlamalar için güvenli bir ucfirst() işlemi gerçekleştirir ve `dizge`nin ilk karakteri büyük harfe çevrilmiş bir dizge döndürür.

### Bağımsız Değişkenler

`dizge`
  Girdi dizgesi.
`kodlama`

  `kodlama` bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya `null` ise dahili karakter kodlaması kullanılır.

### Dönen Değerler

Sonuç dizgesi ile döner.

### Notlar

> Bilginize:

> strtolower() ve strtoupper() gibi standart harf büyüklüğü değiştirme işlevlerinin aksine, bu işlemde harf büyüklüğü değişimi Unicode karakter özelliklerine göre yapılır. Bu nedenle bu işlevin davranışı yerel ayarlarından etkilenmez ve 'alfabetik' özelliğe sahip her karakteri (örneğin a-umlaut, ä) dönüştürebilir.

Unicode karakter özellikleri hakkında daha ayrıntılı bilgi için bakınız: » http://www.unicode.org/reports/tr21/.

### Ayrıca Bakınız

- mb_lcfirst() - Dizgenin ilk karakterini küçük harfe çevirir
- mb_convert_case() - Bir dizgeye büyük-küçük harf dönüşümü uygular
- ucfirst() - Dizgenin ilk karakterini büyük harfe çevirir

## İçindekiler

- mb_check_encoding — Dizgelerin belirtilen kodlama için geçerli olup olmadığını sınar
- mb_chr — Unicode karakter koduna göre karakteri döndürür
- mb_convert_case — Bir dizgeye büyük-küçük harf dönüşümü uygular
- mb_convert_encoding — Karakter kodlaması dönüşümü yapar
- mb_convert_kana — Bir "kana" dizgeyi diğerine ("zen-kaku", "han-kaku" vs.) dönüştürür
- mb_convert_variables — Değişken içeriğinin karakter kodlamasını dönüştürür
- mb_decode_mimeheader — MIME başlık alanındaki dizgeyi dönüştürür
- mb_decode_numericentity — HTML sayısal karakter gösterimini karaktere dönüştürür
- mb_detect_encoding — Karakter kodlamasını algılar
- mb_detect_order — Karakter kodlaması algılama sırasını tanımlar/döndürür
- mb_encode_mimeheader — Dizgeyi MIME başlığı için kodlar
- mb_encode_numericentity — Karakter kodlarını HTML sayısal karakter gösterimlerine dönüştürür
- mb_encoding_aliases — Bilinen bir kodlama türünün takma adını döndürür
- mb_ereg — Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir
- mb_ereg_match — Çok baytlı dizge için düzenli ifadeyi eşleştirir
- mb_ereg_replace — Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
- mb_ereg_replace_callback — Bir düzenli ifade araması yapıp bir geriçağırım kullanarak çok baytlı yer değiştirme uygular
- mb_ereg_search — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifade eşleştirmesi yapar
- mb_ereg_search_getpos — Sonraki düzenli ifade eşleşmesi için başlangıç konumunu döndürür
- mb_ereg_search_getregs — Sonuncu çok baytlı düzenli ifade eşleşmesinin sonucunu döndürür
- mb_ereg_search_init — Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar
- mb_ereg_search_pos — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifadenin eşleşen parçasının uzunluğunu ve konumunu döndürür
- mb_ereg_search_regs — Çok baytlı düzenli ifadenin eşleşen parçası ile döner
- mb_ereg_search_setpos — Sonraki düzenli ifade eşleşmesinin başlangıç noktasını tanımlar
- mb_eregi — Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular
- mb_eregi_replace — Harf büyüklüğüne duyarsız çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
- mb_get_info — Mbstring bağımsız değişkenlerinin dahili ayarlarını döndürür
- mb_http_input — HTTP girdi karakter kodlamasını algılar
- mb_http_output — HTTP çıktı karakter kodlamasını tanımlar/döndürür
- mb_internal_encoding — Dahili karakter kodlamasını tanımlar/döndürür
- mb_language — Geçerli dili tanımlar/döndürür
- mb_lcfirst — Dizgenin ilk karakterini küçük harfe çevirir
- mb_list_encodings — Desteklenen kodlamaların tamamını bir dizi olarak döndürür
- mb_ltrim — Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
- mb_ord — Karakterin Unicode karakter kodunu döndürür
- mb_output_handler — Çıktı tamporundaki karakter kodlamasını dönüştüren geriçağırım işlevi
- mb_parse_str — GET/POST/COOKIE verisini çözümler ve küresel değişkenleri tanımlar
- mb_preferred_mime_name — MIME karakter kümesi dizgesini döndürür
- mb_regex_encoding — Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
- mb_regex_set_options — mbregex işlevleri için öntanımlı seçenekleri tanımlar/döndürür
- mb_rtrim — Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar
- mb_scrub — Bozuk bayt dizilerini yedek karakterle değiştirir
- mb_send_mail — Kodlanmış olarak posta gönderir
- mb_split — Çok baytlı bir dizgeyi düzenli ifade ile parçalara ayırır
- mb_str_pad — Çok baytlı bir dizgeyi belli bir uzunlukta diğer bir çok baytlı dizgeyle doldurur
- mb_str_split — Belirtilen çok baytlı dizgenin karakterlerini içeren bir dizi döndürür
- mb_strcut — Dizgenin başlangıcı ve uzunluğu belirtilen parçası ile döner
- mb_strimwidth — Dizgeyi belirtilen genişlikte kırpar
- mb_stripos — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
- mb_stristr — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
- mb_strlen — Dizge uzunluğu ile döner
- mb_strpos — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
- mb_strrchr — Bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner
- mb_strrichr — Harf büyüklüğüne duyarsız olarak bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner
- mb_strripos — Bir dizgenin içinde harf büyüklüğüne duyarsız olarak başka bir dizgeye son rastlanılan noktanın indisini döndürür
- mb_strrpos — Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür
- mb_strstr — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
- mb_strtolower — Dizgeyi küçük harfli yapar
- mb_strtoupper — Dizgeyi büyük harfli yapar
- mb_strwidth — Dizge genişliğini döndürür
- mb_substitute_character — İkame karakteri atar/döndürür
- mb_substr — Dizgenin bir alt dizgesini alır
- mb_substr_count — Mevcut alt dizgelerin sayısı ile döner
- mb_trim — Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar
- mb_ucfirst — Dizgenin ilk karakterini büyük harfe çevirir

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Desteklenen kodlamaların özetleri
- Japonca çok baytlı kodlamanın temelleri
- HTTP Girdisi ve Çıktısı
- Desteklenen Karakter Kodlamaları
- İşlevlerin Aşırı Yüklenme Özelliği
- PHP Karakter Kodlaması Gereksinimleri
- Çok baytlı Dizge İşlevleri
  - mb_check_encoding — Dizgelerin belirtilen kodlama için geçerli olup olmadığını sınar
  - mb_chr — Unicode karakter koduna göre karakteri döndürür
  - mb_convert_case — Bir dizgeye büyük-küçük harf dönüşümü uygular
  - mb_convert_encoding — Karakter kodlaması dönüşümü yapar
  - mb_convert_kana — Bir "kana" dizgeyi diğerine ("zen-kaku", "han-kaku" vs.) dönüştürür
  - mb_convert_variables — Değişken içeriğinin karakter kodlamasını dönüştürür
  - mb_decode_mimeheader — MIME başlık alanındaki dizgeyi dönüştürür
  - mb_decode_numericentity — HTML sayısal karakter gösterimini karaktere dönüştürür
  - mb_detect_encoding — Karakter kodlamasını algılar
  - mb_detect_order — Karakter kodlaması algılama sırasını tanımlar/döndürür
  - mb_encode_mimeheader — Dizgeyi MIME başlığı için kodlar
  - mb_encode_numericentity — Karakter kodlarını HTML sayısal karakter gösterimlerine dönüştürür
  - mb_encoding_aliases — Bilinen bir kodlama türünün takma adını döndürür
  - mb_ereg — Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir
  - mb_ereg_match — Çok baytlı dizge için düzenli ifadeyi eşleştirir
  - mb_ereg_replace — Çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
  - mb_ereg_replace_callback — Bir düzenli ifade araması yapıp bir geriçağırım kullanarak çok baytlı yer değiştirme uygular
  - mb_ereg_search — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifade eşleştirmesi yapar
  - mb_ereg_search_getpos — Sonraki düzenli ifade eşleşmesi için başlangıç konumunu döndürür
  - mb_ereg_search_getregs — Sonuncu çok baytlı düzenli ifade eşleşmesinin sonucunu döndürür
  - mb_ereg_search_init — Çok baytlı düzenli ifade eşleşmesi için kullanılacak dizge ve düzenli ifadeyi tanımlar
  - mb_ereg_search_pos — Evvelce tanımlanmış çok baytlı dizge için çok baytlı düzenli ifadenin eşleşen parçasının uzunluğunu ve konumunu döndürür
  - mb_ereg_search_regs — Çok baytlı düzenli ifadenin eşleşen parçası ile döner
  - mb_ereg_search_setpos — Sonraki düzenli ifade eşleşmesinin başlangıç noktasını tanımlar
  - mb_eregi — Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular
  - mb_eregi_replace — Harf büyüklüğüne duyarsız çok baytlı karakter destekli düzenli ifade yer değiştirmesi yapar
  - mb_get_info — Mbstring bağımsız değişkenlerinin dahili ayarlarını döndürür
  - mb_http_input — HTTP girdi karakter kodlamasını algılar
  - mb_http_output — HTTP çıktı karakter kodlamasını tanımlar/döndürür
  - mb_internal_encoding — Dahili karakter kodlamasını tanımlar/döndürür
  - mb_language — Geçerli dili tanımlar/döndürür
  - mb_lcfirst — Dizgenin ilk karakterini küçük harfe çevirir
  - mb_list_encodings — Desteklenen kodlamaların tamamını bir dizi olarak döndürür
  - mb_ltrim — Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
  - mb_ord — Karakterin Unicode karakter kodunu döndürür
  - mb_output_handler — Çıktı tamporundaki karakter kodlamasını dönüştüren geriçağırım işlevi
  - mb_parse_str — GET/POST/COOKIE verisini çözümler ve küresel değişkenleri tanımlar
  - mb_preferred_mime_name — MIME karakter kümesi dizgesini döndürür
  - mb_regex_encoding — Çok baytlı düzenli ifade işlevleri için geçerli kodlamayı dizge olarak atar/döndürür
  - mb_regex_set_options — mbregex işlevleri için öntanımlı seçenekleri tanımlar/döndürür
  - mb_rtrim — Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar
  - mb_scrub — Bozuk bayt dizilerini yedek karakterle değiştirir
  - mb_send_mail — Kodlanmış olarak posta gönderir
  - mb_split — Çok baytlı bir dizgeyi düzenli ifade ile parçalara ayırır
  - mb_str_pad — Çok baytlı bir dizgeyi belli bir uzunlukta diğer bir çok baytlı dizgeyle doldurur
  - mb_str_split — Belirtilen çok baytlı dizgenin karakterlerini içeren bir dizi döndürür
  - mb_strcut — Dizgenin başlangıcı ve uzunluğu belirtilen parçası ile döner
  - mb_strimwidth — Dizgeyi belirtilen genişlikte kırpar
  - mb_stripos — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
  - mb_stristr — Harf büyüklüğüne duyarsız olarak, bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
  - mb_strlen — Dizge uzunluğu ile döner
  - mb_strpos — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür
  - mb_strrchr — Bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner
  - mb_strrichr — Harf büyüklüğüne duyarsız olarak bir dizgenin içinde bulunan bir karaktere göre dizgenin ilk veya son bölümü ile döner
  - mb_strripos — Bir dizgenin içinde harf büyüklüğüne duyarsız olarak başka bir dizgeye son rastlanılan noktanın indisini döndürür
  - mb_strrpos — Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür
  - mb_strstr — Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktaya göre dizgenin ilk veya son bölümü ile döner
  - mb_strtolower — Dizgeyi küçük harfli yapar
  - mb_strtoupper — Dizgeyi büyük harfli yapar
  - mb_strwidth — Dizge genişliğini döndürür
  - mb_substitute_character — İkame karakteri atar/döndürür
  - mb_substr — Dizgenin bir alt dizgesini alır
  - mb_substr_count — Mevcut alt dizgelerin sayısı ile döner
  - mb_trim — Dizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar
  - mb_ucfirst — Dizgenin ilk karakterini büyük harfe çevirir

# Pspell

# Giriş

Uyarı

This extension is DEPRECATED and UNBUNDLED as of PHP 8.4.0.

These functions allow you to check the spelling of a word and offer suggestions.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

To compile PHP with pspell support, you need the aspell library, available from » http://aspell.net/.

## Kurulum

## PHP 8.4

itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.8.4.0

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/pspell.

## PHP < 8.4

To enable this extension compile PHP with the --with-pspell[=dir] option.

> Bilginize: Note to Win32 Users

> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: aspell-15.dll from the bin folder of the aspell installation.

> Win32 support requires at least aspell version 0.50.

## Özkaynak Türleri

Prior to PHP 8.1.0, there were two resource types used in this extension. The first one is the dictionary link identifier, the second is a resource which holds pspell config.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`PSPELL_FAST` (int)
`PSPELL_NORMAL` (int)
`PSPELL_BAD_SPELLERS` (int)
`PSPELL_RUN_TOGETHER` (int)

# Pspell İşlevleri

# pspell_add_to_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_add_to_personal — Add the word to a personal wordlist

### Açıklama

function pspell_add_to_personal(PSpell\Dictionary `$dictionary`, string `$word`): bool

pspell_add_to_personal() adds a word to the personal wordlist. If you used pspell_new_config() with pspell_config_personal() to open the dictionary, you can save the wordlist later with pspell_save_wordlist().

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

`word`

  The added word.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_add_to_personal()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    $pspell = pspell_new_config($pspell_config);

    pspell_add_to_personal($pspell, "Vlad");
    pspell_save_wordlist($pspell);
    ?>

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_add_to_session

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_add_to_session — Add the word to the wordlist in the current session

### Açıklama

function pspell_add_to_session(PSpell\Dictionary `$dictionary`, string `$word`): bool

pspell_add_to_session() adds a word to the wordlist associated with the current session. It is very similar to pspell_add_to_personal()

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

`word`

  The added word.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

# pspell_check

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_check — Check a word

### Açıklama

function pspell_check(PSpell\Dictionary `$dictionary`, string `$word`): bool

pspell_check() checks the spelling of a word.

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

`word`

  The tested word.

### Dönen Değerler

Returns `true` if the spelling is correct, `false` if not.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_check() Example

    <?php
    $pspell = pspell_new("en");

    if (pspell_check($pspell, "testt")) {
        echo "This is a valid spelling";
    } else {
        echo "Sorry, wrong spelling";
    }
    ?>

# pspell_clear_session

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_clear_session — Clear the current session

### Açıklama

function pspell_clear_session(PSpell\Dictionary `$dictionary`): bool

pspell_clear_session() clears the current session. The current wordlist becomes blank, and, for example, if you try to save it with pspell_save_wordlist(), nothing happens.

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_add_to_personal() Example

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    $pspell = pspell_new_config($pspell_config);

    pspell_add_to_personal($pspell, "Vlad");
    pspell_clear_session($pspell);
    pspell_save_wordlist($pspell);    //"Vlad" will not be saved
    ?>

# pspell_config_create

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_create — Create a config used to open a dictionary

### Açıklama

function pspell_config_create(
string `$language`,
string `$spelling` = "",
string `$jargon` = "",
string `$encoding` = ""
): PSpell\Config

Create a config used to open a dictionary.

pspell_config_create() has a very similar syntax to pspell_new(). In fact, using pspell_config_create() immediately followed by pspell_new_config() will produce the exact same result. However, after creating a new config, you can also use pspell_config_*() functions before calling pspell_new_config() to take advantage of some advanced functionality.

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

### Bağımsız Değişkenler

`language`

  The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

`spelling`

  The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

`jargon`

  The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.

`encoding`

  The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.

### Dönen Değerler

Returns an PSpell\Config instance.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns an PSpell\Config instance now; previously, a resource was returned.

### Örnekler

Örnek 1 pspell_config_create()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
    $pspell = pspell_new_personal($pspell_config, "en");
    ?>

# pspell_config_data_dir

(PHP 5, PHP 7, PHP 8)

pspell_config_data_dir — Location of language data files

### Açıklama

function pspell_config_data_dir(PSpell\Config `$config`, string `$directory`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

# pspell_config_dict_dir

(PHP 5, PHP 7, PHP 8)

pspell_config_dict_dir — Location of the main word list

### Açıklama

function pspell_config_dict_dir(PSpell\Config `$config`, string `$directory`): bool

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

# pspell_config_ignore

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_ignore — Ignore words less than N characters long

### Açıklama

function pspell_config_ignore(PSpell\Config `$config`, int `$min_length`): bool

pspell_config_ignore() should be used on a config before calling pspell_new_config(). This function allows short words to be skipped by the spell checker.

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`min_length`

  Words less than `min_length` characters will be skipped.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_config_ignore()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_ignore($pspell_config, 5);
    $pspell = pspell_new_config($pspell_config);
    pspell_check($pspell, "abcd");    //will not result in an error
    ?>

# pspell_config_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_mode — Change the mode number of suggestions returned

### Açıklama

function pspell_config_mode(PSpell\Config `$config`, int `$mode`): bool

pspell_config_mode() should be used on a config before calling pspell_new_config(). This function determines how many suggestions will be returned by pspell_suggest().

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`mode`

  The mode parameter is the mode in which spellchecker will work. There are several modes available:

  - `PSPELL_FAST` - Fast mode (least number of suggestions)
  - `PSPELL_NORMAL` - Normal mode (more suggestions)
  - `PSPELL_BAD_SPELLERS` - Slow mode (a lot of suggestions)

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_config_mode() Example

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_mode($pspell_config, PSPELL_FAST);
    $pspell = pspell_new_config($pspell_config);
    pspell_check($pspell, "thecat");
    ?>

# pspell_config_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_personal — Set a file that contains personal wordlist

### Açıklama

function pspell_config_personal(PSpell\Config `$config`, string `$filename`): bool

Set a file that contains personal wordlist. The personal wordlist will be loaded and used in addition to the standard one after you call pspell_new_config(). The file is also the file where pspell_save_wordlist() will save personal wordlist to.

pspell_config_personal() should be used on a config before calling pspell_new_config().

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`filename`

  The personal wordlist. If the file does not exist, it will be created. The file should be writable by whoever PHP runs as (e.g. nobody).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_config_personal()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    $pspell = pspell_new_config($pspell_config);
    pspell_check($pspell, "thecat");
    ?>

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_config_repl

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_repl — Set a file that contains replacement pairs

### Açıklama

function pspell_config_repl(PSpell\Config `$config`, string `$filename`): bool

Set a file that contains replacement pairs.

The replacement pairs improve the quality of the spellchecker. When a word is misspelled, and a proper suggestion was not found in the list, pspell_store_replacement() can be used to store a replacement pair and then pspell_save_wordlist() to save the wordlist along with the replacement pairs.

pspell_config_repl() should be used on a config before calling pspell_new_config().

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`filename`

  The file should be writable by whoever PHP runs as (e.g. nobody).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_config_repl()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
    $pspell = pspell_new_config($pspell_config);
    pspell_check($pspell, "thecat");
    ?>

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_config_runtogether

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_runtogether — Consider run-together words as valid compounds

### Açıklama

function pspell_config_runtogether(PSpell\Config `$config`, bool `$allow`): bool

This function determines whether run-together words will be treated as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.

pspell_config_runtogether() should be used on a config before calling pspell_new_config().

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`allow`

  `true` if run-together words should be treated as legal compounds, `false` otherwise.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_config_runtogether()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_runtogether($pspell_config, true);
    $pspell = pspell_new_config($pspell_config);
    pspell_check($pspell, "thecat");
    ?>

# pspell_config_save_repl

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist

### Açıklama

function pspell_config_save_repl(PSpell\Config `$config`, bool `$save`): bool

pspell_config_save_repl() determines whether pspell_save_wordlist() will save the replacement pairs along with the wordlist. Usually there is no need to use this function because if pspell_config_repl() is used, the replacement pairs will be saved by pspell_save_wordlist() anyway, and if it is not, the replacement pairs will not be saved.

pspell_config_save_repl() should be used on a config before calling pspell_new_config().

### Bağımsız Değişkenler

`config`

  PSpell\Config örneği.

`save`

  `true` if replacement pairs should be saved, `false` otherwise.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_new

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_new — Load a new dictionary

### Açıklama

function pspell_new(
string `$language`,
string `$spelling` = "",
string `$jargon` = "",
string `$encoding` = "",
int `$mode` = 0
): PSpell\Dictionary|false

pspell_new() opens up a new dictionary and returns an PSpell\Dictionary instance for use in other pspell functions.

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

### Bağımsız Değişkenler

`language`

  The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

`spelling`

  The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

`jargon`

  The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.

`encoding`

  The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.

`mode`

  The mode parameter is the mode in which spellchecker will work. There are several modes available:

  - `PSPELL_FAST` - Fast mode (least number of suggestions)
  - `PSPELL_NORMAL` - Normal mode (more suggestions)
  - `PSPELL_BAD_SPELLERS` - Slow mode (a lot of suggestions)
  - `PSPELL_RUN_TOGETHER` - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
  Mode is a bitmask constructed from different constants listed above. However, `PSPELL_FAST`, `PSPELL_NORMAL` and `PSPELL_BAD_SPELLERS` are mutually exclusive, so you should select only one of them.

### Dönen Değerler

Returns an PSpell\Dictionary instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns an PSpell\Dictionary instance now; previously, a resource was returned.

### Örnekler

Örnek 1 pspell_new()

    <?php
    $pspell = pspell_new("en", "", "", "",
                         (PSPELL_FAST|PSPELL_RUN_TOGETHER));
    ?>

# pspell_new_config

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_new_config — Load a new dictionary with settings based on a given config

### Açıklama

function pspell_new_config(PSpell\Config `$config`): PSpell\Dictionary|false

pspell_new_config() opens up a new dictionary with settings specified in a `config`, created with pspell_config_create() and modified with pspell_config_*() functions. This method provides you with the most flexibility and has all the functionality provided by pspell_new() and pspell_new_personal().

### Bağımsız Değişkenler

`config`

  The `config` parameter is the one returned by pspell_config_create() when the config was created.

### Dönen Değerler

Returns an PSpell\Dictionary instance on success, başarısızlık durumunda `false` döner

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `config` parameter expects an PSpell\Config instance now; previously, a resource was expected.
8.1.0 | Returns an PSpell\Dictionary instance now; previously, a resource was returned.

### Örnekler

Örnek 1 pspell_new_config()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
    $pspell = pspell_new_config($pspell_config);
    ?>

# pspell_new_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_new_personal — Load a new dictionary with personal wordlist

### Açıklama

function pspell_new_personal(
string `$filename`,
string `$language`,
string `$spelling` = "",
string `$jargon` = "",
string `$encoding` = "",
int `$mode` = 0
): PSpell\Dictionary|false

pspell_new_personal() opens up a new dictionary with a personal wordlist. The wordlist can be modified and saved with pspell_save_wordlist(), if desired. However, the replacement pairs are not saved. In order to save replacement pairs, you should create a config using pspell_config_create(), set the personal wordlist file with pspell_config_personal(), set the file for replacement pairs with pspell_config_repl(), and open a new dictionary with pspell_new_config().

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

### Bağımsız Değişkenler

`filename`

  The file where words added to the personal list will be stored. It should be an absolute filename beginning with '/' because otherwise it will be relative to $HOME, which is "/root" for most systems, and is probably not what you want.

`language`

  The language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

`spelling`

  The requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

`jargon`

  Extra information to distinguish two different words lists that have the same language and spelling parameters.

`encoding`

  The encoding that words are expected to be in. Valid values are `utf-8`, `iso8859-*`, `koi8-r`, `viscii`, `cp1252`, `machine unsigned 16`, `machine unsigned 32`.

`mode`

  The mode in which spellchecker will work. There are several modes available:

  - `PSPELL_FAST` - Fast mode (least number of suggestions)
  - `PSPELL_NORMAL` - Normal mode (more suggestions)
  - `PSPELL_BAD_SPELLERS` - Slow mode (a lot of suggestions)
  - `PSPELL_RUN_TOGETHER` - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
  Mode is a bitmask constructed from different constants listed above. However, `PSPELL_FAST`, `PSPELL_NORMAL` and `PSPELL_BAD_SPELLERS` are mutually exclusive, so you should select only one of them.

### Dönen Değerler

Returns an PSpell\Dictionary instance on success, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Returns an PSpell\Dictionary instance now; previously, a resource was returned.

### Örnekler

Örnek 1 pspell_new_personal()

    <?php
    $pspell = pspell_new_personal ("/var/dictionaries/custom.pws",
            "en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER);
    ?>

# pspell_save_wordlist

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_save_wordlist — Save the personal wordlist to a file

### Açıklama

function pspell_save_wordlist(PSpell\Dictionary `$dictionary`): bool

pspell_save_wordlist() saves the personal wordlist from the current session. The location of files to be saved specified with pspell_config_personal() and (optionally) pspell_config_repl().

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_add_to_personal()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/tmp/dicts/newdict");
    $pspell = pspell_new_config($pspell_config);

    pspell_add_to_personal($pspell, "Vlad");
    pspell_save_wordlist($pspell);
    ?>

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_store_replacement

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_store_replacement — Store a replacement pair for a word

### Açıklama

function pspell_store_replacement(PSpell\Dictionary `$dictionary`, string `$misspelled`, string `$correct`): bool

pspell_store_replacement() stores a replacement pair for a word, so that replacement can be returned by pspell_suggest() later. In order to be able to take advantage of this function, you have to use pspell_new_personal() to open the dictionary. In order to permanently save the replacement pair, you have to use pspell_config_personal() and pspell_config_repl() to set the path where to save your custom wordlists, and then use pspell_save_wordlist() for the changes to be written to disk.

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

`misspelled`

  The misspelled word.

`correct`

  The fixed spelling for the `misspelled` word.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_store_replacement()

    <?php
    $pspell_config = pspell_config_create("en");
    pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
    pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
    $pspell = pspell_new_config($pspell_config);

    pspell_store_replacement($pspell, $misspelled, $correct);
    pspell_save_wordlist($pspell);
    ?>

### Notlar

> Bilginize:

> This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

# pspell_suggest

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

pspell_suggest — Suggest spellings of a word

### Açıklama

function pspell_suggest(PSpell\Dictionary `$dictionary`, string `$word`): array|false

pspell_suggest() returns an array of possible spellings for the given word.

### Bağımsız Değişkenler

`dictionary`

  PSpell\Dictionary örneği.

`word`

  The tested word.

### Dönen Değerler

Returns an array of possible spellings.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | The `dictionary` parameter expects an PSpell\Dictionary instance now; previously, a resource was expected.

### Örnekler

Örnek 1 pspell_suggest() example

    <?php
    $pspell = pspell_new("en");

    if (!pspell_check($pspell, "testt")) {
        $suggestions = pspell_suggest($pspell, "testt");

        foreach ($suggestions as $suggestion) {
            echo "Possible spelling: $suggestion<br />";
        }
    }
    ?>

## İçindekiler

- pspell_add_to_personal — Add the word to a personal wordlist
- pspell_add_to_session — Add the word to the wordlist in the current session
- pspell_check — Check a word
- pspell_clear_session — Clear the current session
- pspell_config_create — Create a config used to open a dictionary
- pspell_config_data_dir — Location of language data files
- pspell_config_dict_dir — Location of the main word list
- pspell_config_ignore — Ignore words less than N characters long
- pspell_config_mode — Change the mode number of suggestions returned
- pspell_config_personal — Set a file that contains personal wordlist
- pspell_config_repl — Set a file that contains replacement pairs
- pspell_config_runtogether — Consider run-together words as valid compounds
- pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist
- pspell_new — Load a new dictionary
- pspell_new_config — Load a new dictionary with settings based on a given config
- pspell_new_personal — Load a new dictionary with personal wordlist
- pspell_save_wordlist — Save the personal wordlist to a file
- pspell_store_replacement — Store a replacement pair for a word
- pspell_suggest — Suggest spellings of a word

# The PSpell\Dictionary class

(PHP 8 >= 8.1.0)

## Giriş

A fully opaque class which replaces a `pspell` resource as of PHP 8.1.0.

## Sınıf Sözdizimi

final class PSpell\Dictionary {
}

# The PSpell\Config class

(PHP 8 >= 8.1.0)

## Giriş

A fully opaque class which replaces a `pspell config` resource as of PHP 8.1.0.

## Sınıf Sözdizimi

final class PSpell\Config {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Pspell İşlevleri
  - pspell_add_to_personal — Add the word to a personal wordlist
  - pspell_add_to_session — Add the word to the wordlist in the current session
  - pspell_check — Check a word
  - pspell_clear_session — Clear the current session
  - pspell_config_create — Create a config used to open a dictionary
  - pspell_config_data_dir — Location of language data files
  - pspell_config_dict_dir — Location of the main word list
  - pspell_config_ignore — Ignore words less than N characters long
  - pspell_config_mode — Change the mode number of suggestions returned
  - pspell_config_personal — Set a file that contains personal wordlist
  - pspell_config_repl — Set a file that contains replacement pairs
  - pspell_config_runtogether — Consider run-together words as valid compounds
  - pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist
  - pspell_new — Load a new dictionary
  - pspell_new_config — Load a new dictionary with settings based on a given config
  - pspell_new_personal — Load a new dictionary with personal wordlist
  - pspell_save_wordlist — Save the personal wordlist to a file
  - pspell_store_replacement — Store a replacement pair for a word
  - pspell_suggest — Suggest spellings of a word
- PSpell\Dictionary — The PSpell\Dictionary class
- PSpell\Config — The PSpell\Config class

# GNU Recode

# Giriş

Uyarı

This extension is unmaintained.

Bu modül, GNU Recode kütüphanesine bir arayüz içerir. GNU Recode kütüphanesi çeşitli karakter kümeleriyle kodlanmış dosyalar arasında kodlama dönüşümü yapar. Bunu tam olarak sağlayamazsa hatalı karakterlerden kurtulabilir veya bazı yaklaşımlar yapabilir. Kütüphane yaklaşık 150 farklı karakter kümesini tanır ve bunların çiftleri arasında dosya dönüşümü yapabilir. » RFC 1345'te tanımlı karakter kümelerinin çoğu desteklenmektedir.

> Bilginize: PHP 7.4.0 itibariyle, bu eklenti, » PECL deposuna taşınmış olup PHP paketinin içinde gelmemektedir. Bu eklenti yerine Çok Baytlı Dizgeler veya iconv eklentileri kullanılabilir.

> Bilginize: Bu eklenti Windows sistemlerinde çalışmaz.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

Sisteminizde GNU Recode 3.5 veya üstü bir sürümün kurulu olması gerekir. Paketi » http://directory.fsf.org/All_GNU_Packages/recode.html adresinden temin edebilirsiniz..

Uyarı

Recode kütüphanesinin 3.6 sürümü bazı durumlarda dönüştürülen karakterlerin ardına tuhaf karakterler eklemektedir. Bu bakımdan Recode kütüphanesinin 3.5 sürümünü veya taydaşları olduğu iconv veya mbstring eklentisini kullanmak tercih edilmelidir.

## Kurulum

## PHP 7.4

PHP 7.4.0 itibariyle, bu eklenti » PECL deposuna taşınmış olup artık PHP kaynak paketinde dağıtılmamaktatır.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/recode.

## PHP < 7.4

Bu modülde tanımlanmış işlevleri kullanıbilmek için PHP'yi --with-recode[=DiZiN] yapılandırma seçeneğiyle derlemelisiniz.

Uyarı

mysql veya imap eklentilerinden birini yükledikten sonra recode'u bir eklenti olarak yüklerseniz PHP'de çökme ve başlatma sorunları baş gösterebilir. Recode eklentisini bu eklentilerden önce yükleyerek bu sorunları engelleyebilirsiniz. Bu sorunun sebebi tamamen tekniktir; imap ve recode tarafından kullanılan her iki C istemci kütüphanesinin de kendi `hash_lookup()` işlevleri vardır, mysql ve recode'un ise kendi `hash_insert` işlevleri vardır.

Uyarı

IMAP, recode ve YAZ eklentileri, aynı dahili simgeleri paylaştıklarından birlikte kullanılamazlar. Bilgi: Yaz 2.0 ve sonrası bu sorundan etkilenmemektedir.

# Recode İşlevleri

# recode

(PHP 4, PHP 5, PHP 7 < 7.4.0)

recode — recode_string() işlevinin takma adıdır

### Açıklama

Bu işlev, recode_string() işlevinin takma adıdır.

# recode_file

(PHP 4, PHP 5, PHP 7 < 7.4.0)

recode_file — Dosyadan dosyaya karakter kodlaması dönüşümü yapar

### Açıklama

function recode_file(string `$istek`, resource `$girdi`, resource `$çıktı`): bool

Belirtilen isteğe bağlı olarak dosya tanıtıcısı `girdi` ile belirtilen dosyayı dosya tanıtıcısı `çıktı` ile belirtilen dosyaya yeniden kodlar.

### Bağımsız Değişkenler

`istek`
  Yeniden kodlama isteği türü.
`girdi`
  Girdi olarak bir yerel dosya tanıtıcısı.
`çıktı`
  Çıktı olarak bir yerel dosya tanıtıcısı.

### Dönen Değerler

İşlemi başaramazsa `false`, aksi takdirde `true` döner.

### Örnekler

Örnek 1 - Basit bir recode_file() örneği

    <?php
    $input = fopen('girdi.txt', 'r');
    $output = fopen('çıktı.txt', 'w');
    recode_file("ISO-8859-9..UTF-8", $input, $output);
    ?>

### Notlar

Bu işlev henüz uzak dosyaların (URL) dosya tanıtıcıları ile çalışmamaktadır. Her iki dosya tanıtıcı da yerel olmak zorundadır.

### Ayrıca Bakınız

- fopen() - Bir dosya veya URL'yi açar

# recode_string

(PHP 4, PHP 5, PHP 7 < 7.4.0)

recode_string — Yapılan isteğe bağlı olarak bir dizgeyi yeniden kodlar

### Açıklama

function recode_string(string `$istek`, string `$dizge`): string

Yapılan `istek` isteğine bağlı olarak bir `dizge`'yi yeniden kodlar.

### Bağımsız Değişkenler

`istek`
  Yeniden kodlama isteği türü.
`dizge`
  Yeniden kodlanacak dizge.

### Dönen Değerler

İşlemi başaramazsa `false`, aksi takdirde yeniden kodlanan dizge ile döner.

### Örnekler

Örnek 1 - Basit bir recode_string() örneği

    <?php
    echo recode_string("us..flat", "The following character has a diacritical mark: á");
    ?>

### Notlar

Basit bir recode isteği de "ISO-8859-9..utf-8" olabilir.

### Ayrıca Bakınız

- Recode istekleri ile ilgili ayrıntılı bilgi için GNU Recode belgelerine bakınız.
- mb_convert_encoding() - Karakter kodlaması dönüşümü yapar
- UConverter::transcode() - Convert a string from one character encoding to another
- iconv() - Dizgenin karakter kodlamasını dönüştürür

## İçindekiler

- recode — recode_string işlevinin takma adıdır
- recode_file — Dosyadan dosyaya karakter kodlaması dönüşümü yapar
- recode_string — Yapılan isteğe bağlı olarak bir dizgeyi yeniden kodlar

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Recode İşlevleri
  - recode — recode_string işlevinin takma adıdır
  - recode_file — Dosyadan dosyaya karakter kodlaması dönüşümü yapar
  - recode_string — Yapılan isteğe bağlı olarak bir dizgeyi yeniden kodlar

- Enchant — Enchant spelling library
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Enchant İşlevleri
  - EnchantBroker — The EnchantBroker class
  - EnchantDictionary — The EnchantDictionary class
- Gender — Determine gender of firstnames
  - Yapılandırma/Kurulum
  - Örnekler
  - Gender\Gender — The Gender\Gender class
- Gettext
  - Yapılandırma/Kurulum
  - Gettext İşlevleri
- iconv — Karakter Kümesi Dönüştürme
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - iconv İşlevleri
- Intl — Uluslararasılaştırma İşlevleri
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Karşılaştırıcı — Collator sınıfı
  - Sayı Biçemleyici — NumberFormatter sınıfı
  - Yerel — Locale sınıfı
  - Normalleştirici — Normalizer sınıfı
  - İleti Biçemleyici — MessageFormatter sınıfı
  - IntlCalendar — The IntlCalendar class
  - IntlGregorianCalendar — The IntlGregorianCalendar class
  - IntlTimeZone — The IntlTimeZone class
  - Tarih Biçemleyici — IntlDateFormatter sınıfı
  - ResourceBundle — The ResourceBundle class
  - Spoofchecker — The Spoofchecker class
  - Transliterator — The Transliterator class
  - IntlBreakIterator — The IntlBreakIterator class
  - IntlRuleBasedBreakIterator — The IntlRuleBasedBreakIterator class
  - IntlCodePointBreakIterator — The IntlCodePointBreakIterator class
  - IntlDatePatternGenerator — The IntlDatePatternGenerator class
  - IntlPartsIterator — The IntlPartsIterator class
  - UConverter — The UConverter class
  - Grapheme (Sesletim Kümeleri) İşlevleri
  - IDN İşlevleri
  - IntlChar
  - IntlException — Exception class for intl errors
  - IntlIterator — The IntlIterator class
  - intl İşlevleri
- Mbstring — Çok Baytlı Dizgeler
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Desteklenen kodlamaların özetleri
  - Japonca çok baytlı kodlamanın temelleri
  - HTTP Girdisi ve Çıktısı
  - Desteklenen Karakter Kodlamaları
  - İşlevlerin Aşırı Yüklenme Özelliği
  - PHP Karakter Kodlaması Gereksinimleri
  - Çok baytlı Dizge İşlevleri
- Pspell
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Pspell İşlevleri
  - PSpell\Dictionary — The PSpell\Dictionary class
  - PSpell\Config — The PSpell\Config class
- Recode — GNU Recode
  - Yapılandırma/Kurulum
  - Recode İşlevleri

# Resim İşleme ve Resim Üretimi

# Değiş Tokuş Edilebilir Görüntü Bilgileri

# Giriş

Exif eklentisi ile görüntülerin temel verileri üzerinde çalışabilirsiniz. Örneğin, görüntülerin başlıklarında sayısal kameralar tarafından saklanmış ham verileri okumak için exif işlevlerini kullanabilirsiniz Bu tür başlıklar genelde JPEG ve TIFF görüntülerde bulunur.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

PHP `--enable-exif` seçeneği ile derlenmelidir. EXIF başlıklarında çokbaytlılık desteğini etkinleştirmek için, PHP derlenirken `--enable-mbstring` seçeneği ile mbstring eklentisi ettkin kılınmalıdır. PHP exif modülü için ek kütüphanelere ihtiyaç duymaz.

## Kurulum

Exif desteğini etkin kılmak için PHP'yi --enable-exif seçeneği ile derleyin.

Windows kullanıcılarının, php.ini içinde hem php_mbstring.dll hem de php_exif.dll DLL'lerini etkin kılmaları gerekir. php.ini dosyanızı yapılandırırken php_mbstring.dll dosyasının php_exif.dll dosyasından önce yüklenmesini sağlamalısınız.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

mbstring modülü kullanılabildiği takdirde, exif, Evrenkod ve JIS karakter kodlamalı kullanıcı açıklamalarının dönüşümünü otomatik olarak yapar. Önce belirtilen karakter kümesi kullanılarak kodlama dönüştürüldükten sonra bu yapılır. Sonuç `HTTP` çıktısına uygun olarak diğer karakter kodlamasına dönüştürülür.

Exif yapılandırma yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
exif.encode_unicode | "ISO-8859-15" | `INI_ALL` |
exif.decode_unicode_motorola | "UCS-2BE" | `INI_ALL` |
exif.decode_unicode_intel | "UCS-2LE" | `INI_ALL` |
exif.encode_jis | "" | `INI_ALL` |
exif.decode_jis_motorola | "JIS" | `INI_ALL` |
exif.decode_jis_intel | "JIS" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`exif.encode_unicode` string
  `exif.encode_unicode`, UNICODE kodlu kullanıcı açıklamalarının elde edilmesinde kullanılacak karakter kümesini tanımlar. Çoğu Asya ülkesinde kullanılabilecek olan ISO-8859-15 öntanımlıdır. Bu değer boş olabilir. Belirtildiği takdirde mbstring tarafından tanınan karakter kümelerinden biri olmalıdır. Boş olduğu takdirde mbstring eklentisinin öntanımlı dahili kodlaması kullanılır.
`exif.decode_unicode_motorola` string
  `exif.decode_unicode_motorola`, görüntü motorola bayt sıralamasına sahipse UNICODE kodlu kullanıcı açıklamaları için görüntü içi karakter kümesini tanımlar. Bu değer boş olamaz fakat mbstring tarafından tanınan kodlamalar liste halinde belirtilebilir. UCS-2BE öntanımlıdır.
`exif.decode_unicode_intel` string
  `exif.decode_unicode_intel`, görüntü intel bayt sıralamasına sahipse UNICODE kodlu kullanıcı açıklamaları için görüntü içi karakter kümesini tanımlar. Bu değer boş olamaz fakat mbstring tarafından tanınan kodlamalar liste halinde belirtilebilir. UCS-2LE öntanımlıdır.
`exif.encode_jis` string
  `exif.encode_jis` JIS kodlu kullanıcı açıklamalarının elde edilmesinde kullanılacak karakter kümesini tanımlar. İşlevin mbstring eklentisinin öntanımlı dahili kodlamasının kullanılmasını sağlayan boş değer öntanımlı değerdir.
`exif.decode_jis_motorola` string
  `exif.decode_jis_motorola`, görüntü motorola bayt sıralamasına sahipse JIS kodlu kullanıcı açıklamaları için görüntü içi karakter kümesini tanımlar. Bu değer boş olamaz fakat mbstring tarafından tanınan kodlamalar liste halinde belirtilebilir. JIS öntanımlıdır.
`exif.decode_jis_intel` string
  `exif.decode_jis_intel`, görüntü intel bayt sıralamasına sahipse JIS kodlu kullanıcı açıklamaları için görüntü içi karakter kümesini tanımlar. Bu değer boş olamaz fakat mbstring tarafından tanınan kodlamalar liste halinde belirtilebilir. JIS öntanımlıdır.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`EXIF_USE_MBSTRING` (int)
  mbstring etkinse bu sabitin değeri `1`, değilse `0`'dır.

Yerleşik sabitlerin bazıları exif_imagetype() işlevi tarafından listelenir.

# Exif İşlevleri

# exif_imagetype

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

exif_imagetype — Bir görüntünün türünü saptar

### Açıklama

function exif_imagetype(string `$dosya`): int|false

exif_imagetype() işlevi bir görüntünün ilk baytlarındaki dosya imzasını okur.

exif_imagetype() işlevi, desteklenmeyen dosya türlerini diğer exif işlevlerinde kullanmaktan kaçınabilmek için veya tarayıcının belli bir görüntü türünü gösterip göstermeyeceğini saptamak için $_SERVER['HTTP_ACCEPT'] ile birlikte kullanmak üzere tasarlanmıştır.

### Bağımsız Değişkenler

`dosya`
  İçerdiği görüntü türü saptanacak dosya.

### Dönen Değerler

Doğru imza bulunduğu takdirde uygun sabitin değeri döndürülür, aksi takdirde `false` döner. Dönüş değeri getimagesize() ile aynıdır fakat exif_imagetype() daha hızlıdır.

### Öntanımlı Sabitler

exif_imagetype() dönüş değeri olarak şu sabitler tanımlıdır:

Görüntü türü Sabitleri
Değer | Sabit
--- | ---
1 | `IMAGETYPE_GIF`
2 | `IMAGETYPE_JPEG`
3 | `IMAGETYPE_PNG`
4 | `IMAGETYPE_SWF`
5 | `IMAGETYPE_PSD`
6 | `IMAGETYPE_BMP`
7 | `IMAGETYPE_TIFF_II` (intel bayt sıralaması)
8 | `IMAGETYPE_TIFF_MM` (motorola bayt sıralaması)
9 | `IMAGETYPE_JPC`
10 | `IMAGETYPE_JP2`
11 | `IMAGETYPE_JPX`
12 | `IMAGETYPE_JB2`
13 | `IMAGETYPE_SWC`
14 | `IMAGETYPE_IFF`
15 | `IMAGETYPE_WBMP`
16 | `IMAGETYPE_XBM`
17 | `IMAGETYPE_ICO`
18 | `IMAGETYPE_WEBP`
19 | `IMAGETYPE_AVIF`

### Hatalar/İstisnalar

Görüntü türünü belirlemek için dosyadan yeterince bayt okuyamazsa exif_imagetype() bir `E_NOTICE` çıktılar ve `false` değeriyle döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Added desteği eklendi.
7.1.0 | WebP desteği eklendi.

### Örnekler

Örnek 1 - exif_imagetype() örneği

    <?php
    if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
        echo 'Bu bir GIF değil.';
    }
    ?>

### Ayrıca Bakınız

- image_type_to_mime_type() - getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür
- getimagesize() - Bir görüntünün boyutlarını döndürür

# exif_read_data

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

exif_read_data — Bir görüntü dosyasından EXIF başlıklarını okur

### Açıklama

function exif_read_data(
kaynak|string `$file`,
?string `$bölümler` = `null`,
bool `$diziler` = `false`,
bool `$küçük_örnek` = `false`
): array|false

Bir görüntü dosyasından EXIF başlıklarını okur Böylece sayısal kameralar tarafından üretilen temel veriler okunabilir.

Exif başlıkları sayısal kameralar tarafından üretilen JPEG/TIFF görüntülerde bulunması için tasarlanmışlarsa da ne yazık ki, her sayısal kamera imalatçısı görüntü başlıklarının elde edilmesi konusunda farklı yaklaşımlara sahiptirler. Bu bakımdan bazı Exif başlıkları görüntü üzerinde mevcut olmayabilir.

`Height` ve `Width` başlıkları getimagesize() işlevinin yaptığı gibi hesaplandığından döndürülen başlığın birer parçası olmamalıdırlar. `html` başlığı normal HTML içinde kullanılacak metnin yükseklik/genişlik dizgesidir.

Bir Exif başlığı bir telif hakkı bilgisi içerdiği takdirde, bu iki değerden oluşur. Çözüm Exif 2.10 standadıyla uyumsuz olup `COMPUTED` bölümü hem `Copyright.Photographer` hem de `Copyright.Editor` başlıklarını içerirken IFD0 bölümleri iki girdiyi ayıran `null` karakterli bayt dizisini içerir. Eğer veri türü yanlışsa sadece ilk girdi döner (Exif'in normal davranışı). `COMPUTED` bölümü ayrıca, `Copyright` dizgesini de içerir ve bu dizge ya özgün telif hakkı dizgesini ya da fotoğraf ve eser düzenleyici telif haklarını içeren dizgeyi içerir.

`UserComment` yaftası `Copyright` yaftası ile aynı sorunlara sahiptir. O da iki değer saklayabilir. İlki kullanılan kodlama, ikincisi değerin kendisidir. Bu durumda, `IFD` bölümü sadece kodlamayı ve bayt dizisini içerir. `COMPUTED` bölümü `UserCommentEncoding` ve `UserComment` girdilerinin ikisini de saklar. `UserComment` girdisi her iki durumda da mevcuttur, dolayısıyla `IFD0` bölümündeki değere tercihan kullanılmış olmalıdır.

exif_read_data() işlevi ayrıca, EXIF belirtimine uygun olarak EXIF veri başlıklarını da doğrular.

### Bağımsız Değişkenler

`kaynak`
  Görüntü dosyasının yeri. Bir dosya yolu (akım sarmalayıcılar belirtilebilir) veya resource türünde bir akım.
`bölümler`

  Sonuç dizisinin üretiminde kullanılmak üzere dosyadaki başlıkların virgül ayraçlı listesi. Belirtilen başlıkların hiçbiri bulunamazsa işlev `false` döndürür.

  FILE | `FileName`, `FileSize`, `FileDateTime`, `SectionsFound` (Dosyaİsmi, DosyaBoyu, DosyaTarihiSaati, BölümlarVar)
  COMPUTED | `html`, `Width`, `Height`, `IsColor` (html, genişlik, yükseklik, Renklidir) ve varsa başkaları. `Height` ve `Width`, getimagesize() işlevinin yaptığı gibi hesaplanır, dolayısıyla bunlar döndürülen başlığın parçaları olmamalıdır. Ayrıca, `html`, normal HTML içinde kullanılacak height/width dizgesidir.
  ANY_TAG | `IFD0`, `EXIF`, ... gibi bir yaftaya sahip her türlü bilgi
  IFD0 | `IFD0`'ın tüm yaftalanmış bilgisi. Normal görüntü dosyalarında burada görüntü boyutu ve saire bulunur.
  THUMBNAIL | Dosya ikinci bir `IFD`'ye sahipse görüntünün küçük bir örneğini içerdiği varsayılır. Küçük görüntü örneği ile ilgili tüm veriler bu bölümde saklanır.
  COMMENT | JPEG görüntülerin açıklama başlıkları.
  EXIF | `EXIF` bölümü `IFD0` bölümünün bir alt bölümüdür. Burada görüntü hakkında çok daha fazla bilgi bulunur. Bu girdilerin çoğu sayısal kamera ile ilgilidir.

`diziler`
  Her bölümün bir dizi haline getirilip getirilmeyeceğini belirler. `COMPUTED`, `THUMBNAIL` ve `COMMENT` bölümleri, diğer bölümlerle karışmaması için daima bir dizi haline getirilirler.
`küçük_örnek`
  `true` belirtilmişse küçük görüntü örneğinin kendisi okunur. Aksi takdirde, sadece yaftalı veriler okunur.

### Dönen Değerler

Dönen değer bir dizi olup, dizi indisleri başlık isimlerini, değerler bu başlıklarla ilgili verileri içerir. Eğer hiçbir veri döndürülemezse exif_read_data() işlevi `false` döndürür.

### Hatalar/İstisnalar

Desteklenmeyen başlıklar veya olası hata durumlarında `E_WARNING` ve/veya `E_NOTICE` seviyesinde hata üretilebilir, fakat işlev hala anlaşılabilir bilgileri okumaya çalışır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `bölümler` artık boş olabiliyor.
7.2.0 | `kaynak` bağımsız değişkeni normal dosyalardan başka artık akımları da destekliyor.
7.2.0 | Aşağıdaki EXIF biçemlerine destek eklendi: Samsung DJI Panasonic Sony Pentax Minolta Sigma/Foveon AGFA Kyocera Ricoh Epson

### Örnekler

Örnek 1 - exif_read_data() örneği

    <?php
    echo "test1.jpg:<br />\n";
    $exif = exif_read_data('tests/test1.jpg', 'IFD0');
    echo $exif===false ? "<Başlık verisi bulunamadı.<br />\n" : "Görüntü başlıkları içeriyor<br />\n";

    $exif = exif_read_data('tests/test2.jpg', 0, true);
    echo "test2.jpg:<br />\n";
    foreach ($exif as $key => $section) {
        foreach ($section as $name => $val) {
            echo "$key.$name: $val<br />\n";
        }
    }
    ?>

Görüntü başlık bilgisi içermediğinden ilk çağrı başarısız olur.

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    test1.jpg:
    Başlık verisi bulunamadı.
    test2.jpg:
    FILE.FileName: test2.jpg
    FILE.FileDateTime: 1017666176
    FILE.FileSize: 1240
    FILE.FileType: 2
    FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
    COMPUTED.html: width="1" height="1"
    COMPUTED.Height: 1
    COMPUTED.Width: 1
    COMPUTED.IsColor: 1
    COMPUTED.ByteOrderMotorola: 1
    COMPUTED.UserComment: Exif test image.
    COMPUTED.UserCommentEncoding: ASCII
    COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
    COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
    COMPUTED.Copyright.Editor: Edited by M.Boerger.
    IFD0.Copyright: Photo (c) M.Boerger
    IFD0.UserComment: ASCII
    THUMBNAIL.JPEGInterchangeFormat: 134
    THUMBNAIL.JPEGInterchangeFormatLength: 523
    COMMENT.0: Comment #1.
    COMMENT.1: Comment #2.
    COMMENT.2: Comment #3end
    THUMBNAIL.JPEGInterchangeFormat: 134
    THUMBNAIL.Thumbnail.Height: 1
    THUMBNAIL.Thumbnail.Height: 1

Örnek 2 - PHP 7.2.0 itibariyle exif_read_data() akımları destekliyor

    <?php
    // Bir dosya açar, bu ikil kipte olmalı
    $fp = fopen('/path/to/image.jpg', 'rb');

    if (!$fp) {
        echo 'Hata: Görüntü okumak için açılamadı';
        exit;
    }

    // Exif başlıklarını okumaya çalış
    $headers = exif_read_data($fp);

    if (!$headers) {
        echo 'Hata: Exif başlıkları okunamadı';
        exit;
    }

    // 'COMPUTED' başlıklarını bas
    echo 'EXIF Headers:' . PHP_EOL;

    foreach ($headers['COMPUTED'] as $header => $value) {
        printf(' %s => %s%s', $header, $value, PHP_EOL);
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    EXIF Headers:
     Height => 576
     Width => 1024
     IsColor => 1
     ByteOrderMotorola => 0
     ApertureFNumber => f/5.6
     UserComment =>
     UserCommentEncoding => UNDEFINED
     Copyright => Denis
     Thumbnail.FileType => 2
     Thumbnail.MimeType => image/jpeg

### Notlar

> Bilginize: mbstring etkinse, unicode karakterleri işlemeye çalışır ve exif.decode_unicode_motorola ve exif.decode_unicode_intel ile belirtilen karakter kümesini seçer. Exif eklentisi karakter kodlamasını bulmaya çalışmaz. Kullanıcı exif_read_data() işlevini çağırmadan önce bu iki ini yönergesinden birine uygun karakter kodlamasını belirtmelidir.

> Bilginize: `kaynak` bağımsız değişkeni işleve bir akım aktarmak için kullanılmışsa, akım araştırılabilri olmalıdır. Bu işlev döndükten sonra dosya göstericisinin yeri değişmeyecektir.

### Ayrıca Bakınız

- exif_thumbnail() - Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür
- getimagesize() - Bir görüntünün boyutlarını döndürür
- Desteklenen Protokoller ve Sarmalayıcılar

# exif_tagname

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

exif_tagname — Bir indis için başlık ismini döndürür

### Açıklama

function exif_tagname(int `$indis`): string|false

### Bağımsız Değişkenler

`indis`
  Bir Etiket Adının aranacağı Etiket Kimliği.

### Dönen Değerler

`indis` tanımlı bir Etiket Kimliği değilse `false`, aksi takdirde başlık ismi döner.

### Örnekler

Örnek 1 - exif_tagname() örneği

    <?php
    echo "256: ".exif_tagname(256).PHP_EOL;
    echo "257: ".exif_tagname(257).PHP_EOL;
    ?>

Yukarıdaki örneğin çıktısı:

    256: ImageWidth
    257: ImageLength

### Ayrıca Bakınız

- exif_imagetype() - Bir görüntünün türünü saptar
- » EXIF Belirtimi
- » EXIF Etiketleri

# exif_thumbnail

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

exif_thumbnail — Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür

### Açıklama

function exif_thumbnail(
resource|string `$dosya`,
int `&$genişlik` = `null`,
int `&$yükseklik` = `null`,
int `&$görüntü_türü` = `null`
): string|false

exif_thumbnail() işlevi bir görüntünün içinde gömülü küçük örneği döndürür.

Görüntülerin küçük örneklerini bu işlev ile göndermek isterseniz MIME türü bilgisini header() işlevini kullanarak göndermeniz gerekir.

exif_thumbnail() bir görüntü oluşturamaz ama boyutlarını belirleyebilir. Bu durumda dönen değer `false` olur fakat `genişlik` ve `yükseklik` tanımlanmış olur.

### Bağımsız Değişkenler

`dosya`
  Okunacak görüntü dosyasının yeri. Bu bir dosya yolu veya resource türünde bir akım olmalıdır.
`genişlik`
  Döndürülecek küçük örneğin genişliği.
`height`
  Döndürülecek küçük örneğin yüksekliği.
`görüntü_türü`
  Döndürülecek küçük örneğin görüntü türü. TIFF veya JPEG olabilir.

### Dönen Değerler

Gömülü bir görüntü örneği yoksa `false`, aksi takdirde gömülü küçük örneği döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | `dosya` bağımsız değişkeni artık yerel dosyalardan başka akım özkaynaklarını da destekliyor.

### Örnekler

Örnek 1 - exif_thumbnail() örneği

    <?php
    $resim = exif_thumbnail('/bir/yol/resim.jpg', $gen, $yks, $tür);

    if ($resim!==false) {
        header('Content-type: ' .image_type_to_mime_type($tür));
        echo $resim;
        exit;
    } else {
        // Görüntü örneği yoksa, hataları burada ele alacağız
        echo 'Görüntünün içinde küçük bir örneği yok';
    }
    ?>

### Notlar

> Bilginize: `dosya` bu işeve bir akım aktarmak için kullanılırsa akım aranabilir olmalıdır. İşlev döndükten sonra dosya tanıtıcısının konumu değişmeyecektir.

### Ayrıca Bakınız

- exif_read_data() - Bir görüntü dosyasından EXIF başlıklarını okur
- image_type_to_mime_type() - getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür

# read_exif_data

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

read_exif_data — exif_read_data() işlevinin takma adıdır

Uyarı

Bu takma adın kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR.

### Açıklama

Bu işlev exif_read_data() işlevinin takma adıdır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | Bu takma adın kullanımı artık önerilmiyor.

## İçindekiler

- exif_imagetype — Bir görüntünün türünü saptar
- exif_read_data — Bir görüntü dosyasından EXIF başlıklarını okur
- exif_tagname — Bir indis için başlık ismini döndürür
- exif_thumbnail — Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür
- read_exif_data — exif_read_data işlevinin takma adıdır

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Exif İşlevleri
  - exif_imagetype — Bir görüntünün türünü saptar
  - exif_read_data — Bir görüntü dosyasından EXIF başlıklarını okur
  - exif_tagname — Bir indis için başlık ismini döndürür
  - exif_thumbnail — Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür
  - read_exif_data — exif_read_data işlevinin takma adıdır

# Görüntü İşleme ve GD

# Giriş

PHP sadece HTML çıktı oluşturmaz. Ayrıca, GIF, PNG, JPEG, WBMP ve XPM dahil çeşitli görüntü biçemlerinde dosyalar oluşturabilir veya bunlar üzerinde değişiklik yapabilir. Dahası, PHP görüntü akımlarını doğrudan tarayıcıya gönderebilir. Bunun için PHP'nin GD kütüphanesi ile derlenmesi gerekir. Kullanılacak görüntü biçemlerine bağlı olarak başka PHP ve GD kütüphaneleri de gerektirebilir.

PHP'deki görüntü işlevleri, JPEG, GIF, PNG, SWF, TIFF ve JPEG2000 görüntülerinin boyutlarını öğrenmek için kullanılabilir.

Exif eklentesi ile JPEG ve TIFF görüntü başlıklarındaki bilgiler üzerinde çalışmak ve böylece sayısal kameralar tarafından üretilmiş temel verileri okumak mümkündür. Exif işlevleri GD kütüphanesine ihtiyaç duymaz.

> Bilginize: Görüntüleri okumak, değiştirmek ve yazmak için kütüphanenin yeteneklerinin nasıl geliştirileceğini öğrenmek için gereksinimler sayfasına bakılabilir. Sayısal kameralardan aldığınız görüntülerin temel verilerini okumak için exif eklentisi gerekir.

> Bilginize: getimagesize() işlevi GD eklentisini gerektirmez.

Dikkat

GD kütüphanesinin PHP paketinde gelen sürümü, sistem sürümlerinin aksine bellek ayırmak için Zend bellek yöneticisini kullanır. Bu bakımdan memory_limit uygulanmaz.

GD çeşitli biçemleri destekler. Aşağıda GD'nin desteklediği biçemler sıralanmıştır. Oku/yaz desteğinin yanında Bilgi sütununda kullanılabilirlik bilgilerine de yer verilmiştir.

GD'nin desteklediği biçemler
Biçem | Okuma desteği | Yazma desteği | Bilgi
--- | --- | --- | ---
JPEG | var | var |
PNG | var | var |
GIF | var | var |
XBM | var | var |
XPM | var | yok |
WBMP | var | var |
WebP | var | var |
BMP | var | var | PHP 7.2.0 itibariyle kullanılabilir.

Yukarıdaki tabloda hem okuma hem de yazma için birçok biçem bulunması PHP'nin bunlar için destekle derlendiği anlamına gelmez. Derleme sırasında GD için hangi biçemlerin mevcut olduğunu bulmak için gd_info() işlevi kullanılabilir. Biçemlerin derleme desteği hakkında daha fazla bilgi için kurulum bölümüne bakılabilir.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

GD kütüphanesi (» http://www.libgd.org/ adresinden edinilebilir) kuruluysa görüntülerde değişiklik yapmak veya yenilerini oluşturmak mümkündür.

Üzerinde işlem yapaılabilecek görüntü biçemleri kurulu GD kütüphanesine ve GD'nin bu biçemlere erişmesini sağlayan diğer kütüphanelere bağlıdır.

> Bilginize: libgd-2.1.0 ve üstü gerekse de, PHP paketiyle gelmekte olan GD kütüphanesi de kullanılabilir.

> Bilginize: GD kütüphanesi zlib >= 1.2.0.4 gerektirir.

GD yetenekleri daha fazla görüntü biçemini destekleyecek şekilde genişletilebilir.

Desteklenen görüntü biçemleri
Görüntü biçemi | İndirilecek kütüphane | Ek bilgiler
--- | --- | ---
`gif` |  |
`avif` |  |
`jpeg` | » http://www.ijg.org/ | PHP'yi jpeg kütüphanesini derlemek için yapılandırırken --enable-shared seçeneği kullanılmalıdır. Bu yapılmazsa, PHP'yi derlemek için yapılandırırken `libjpeg.(a|so) bulunamadı` anlamında bir hata iletisi çıktılanır.
`png` | » http://www.libpng.org/pub/png/libpng.html | Sadece gd-1.6'dan yeni GD sürümlerince desteklenmektedir.
`xpm` | » http://www.ibiblio.org/pub/Linux/libs/X/!INDEX.html | Sisteminizde X pencere sistemi kuruluysa bu kütüphane de kurulu demektir.
`webp` |  |

Daha fazla yazı tipini destekleyecek şekilde GD yeteneklerini genişletebilirsiniz. » FreeType 2 kütüphanesi desteklenmektedir.

## Kurulum

GD desteğini etkin kılmak için PHP --with-gd[=DiZiN] seçeneği ile derlenmelidir; buradaki DiZiN GD'nin kurulu olduğu dizindir. GD kütüphanesinin PHP ile dağıtılan sürümünü kullanmak için PHP --with-gd seçeneğiyle derlenmelidir. GD kütüphanesi libpng ve libjpeg desteğini gerektirir. PHP 7.4.0'dan itibaren --with-gd seçeneği, --enable-gd (eklenti etkinleştirilecekse) ve --with-external-gd (paketlenmiş olan yerine harici bir libgd kullanmayı tercih etmek için) haline gelir.

Windows'ta, GD DLL php_gd.dll dosyası php.ini dosyasında bir eklenti olarak belirtilmelidir. PHP 8.0.0 öncesinde DLL ismi php_gd2.dll idi.

GD'nin yetenekleri daha fazla görüntü biçemi kullanmak üzere genişletilmek istenirse PHP'yi derlemek için yapılandırırken `--with-XXXX` seçenekleri kullanılmalıdır.

Desteklenen görüntü biçemleri
Görüntü Biçemi | Yapılandırma Anahtarı
--- | ---
`avif` | Avif desteğini etkinleştirmek için --with-avif seçeneği kullanılır. PHP 8.1.0'dan itibaren kullanılabilir.
`jpeg` | Jpeg desteğini etkinleştirmek için --with-jpeg-dir=DiZiN seçeneği kullanılır. Jpeg 6b, 7 veya 8 desteklenir. PHP 7.4.0 ve sonrasında bu seçenek yerine --with-jpeg seçeneği kullanılır.
`png` | PNG desteğini etkinleştirmek için --with-png-dir=DiZiN seçeneği kullanılır. libpng zlib kütüphanesini gerektirdiğinden --with-zlib-dir[=DiZiN] seçeneği de gerekecektir. PHP 7.4.0 ve sonrasında --with-png-dir ve --with-zlib-dir seçenekleri kaldırılmış olup libpng ve zlib gerekmektedir.
`xpm` | XPM desteğini etkinleştirmek için --with-xpm-dir=DiZiN seçeneği kullanılır. Eğer yapılandırma betiği kütüphanelerinizin yerini bulamazsa X11 kütüphanelerinin kurulu olduğu yol belirtilmelidir. PHP 7.4.0 ve sonrasında bunun yerine --with-xpm kullanılmaktadır.
`webp` | Webp desteğini etkinleştirmek için --with-webp-dir=DiZiN seçeneği kullanılır. PHP 7.4.0 ve sonrasında bunun yerine --with-webp kullanılmaktadır.

> Bilginize: PHP'yi libpng desteği ile derlerken, libpng ile ilintili GD sürümü kullanılmalıdır.

GD'nin yeteneklerini farklı yazıtiplerini kullanacak şekilde genişletmek için kurulum sırasında bunu `--with-XXXX` yapılandırma seçeneği ile belirtmek gerekir.

Desteklenen yazıtipi kütüphaneleri
Yazıtipi Kütüphanesi | Yapılandırma Seçeneği
--- | ---
`FreeType 2` | FreeType 2 desteğini etkinleştirmek için --with-freetype-dir=DiZiN seçeneği kullanılır. PHP 7.4.0 ve sonrasında bunun yerine kütüphaneyi pkg-config ile bulan --with-freetype seçeneği kullanılmaktadır.
`Doğal TrueType dizge işlevi` | Doğal TrueType dizge işlevi desteğini etkinleştirmek için --enable-gd-native-ttf seçeneği kullanılır. (Bu seçenek etkisiz olup PHP 7.2.0 ve sonrasında kaldırılmıştır.)

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Görüntü Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
gd.jpeg_ignore_warning | "1" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`gd.jpeg_ignore_warning` bool

  libjpeg(-turbo) tarafından üretilen uyarıları (hataları değil) yok saymak için kullanılır.

`gd.jpeg_ignore_warning` ile ilgili değişiklikler
Sürüm: | Açıklama
--- | ---
7.1.0 | gd.jpeg_ignore_warning öntanımlısı 0 iken 1 oldu.

Ayrıca, exif yapılandırma yönergelerine de bakınız.

Uyarı

Görüntü işlevleri bellek miktarına çok bağımlıdır. GD kütüphanesinin PHP ile gelen sürümünü kullanıyorsanız, memory_limit yönergesinde yeterince büyük bir bellek miktarı belirtmeyi unutmayın.

## Özkaynak Türleri

Bu eklenti aşağıdaki özkaynakları tanımlar:

GD özkaynaklarının listesi
İsim | Açıklama | Bilgi
--- | --- | ---
`gd` | Görüntü özkaynağı, imagecreatefrompng() gibi işlevler kullanır. | PHP 8.0.0 öncesi
`gd font` | Yazıtipi özkaynağı, imageloadfont() ile dahili olarak oluşturulur. | PHP 8.1.0 öncesi

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`GD_VERSION` (string)
  PHP'nin desteklediği GD sürümü.
`GD_MAJOR_VERSION` (int)
  PHP'nin desteklediği GD ana sürümü.
`GD_MINOR_VERSION` (int)
  PHP'nin desteklediği GD alt sürümü.
`GD_RELEASE_VERSION` (int)
  PHP'nin desteklediği GD yama sürümü.
`GD_EXTRA_VERSION` (string)
  PHP'nin desteklediği GD ön (beta/rc) sürümü.
`GD_BUNDLED` (int)
  PHP ile birlikte gelen GD kullanılmışsa 1, aksi takdirde 0.
`IMG_AVIF` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır (PHP 8.1.0 ve sonrasında kullanılabilir.)
`IMG_BMP` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_GIF` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_JPG` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_JPEG` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır

  > Bilginize:

  > Bu sabit `IMG_JPG` ile aynı değere sehiptir.

`IMG_PNG` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_TGA` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır (PHP 7.4.0 ve sonrasında kullanılabilir)
`IMG_WBMP` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_XPM` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır
`IMG_WEBP` (int)
  imagetypes() tarafından dönüş değeri olarak kullanılır (PHP 7.0.10 ve sonrasında kullanılabilir.)
`IMG_WEBP_LOSSLESS` (int)
  (PHP 8.1.0 ve sonrasında kullanılabilir.)
`IMG_COLOR_TILED` (int)
  imagecolorallocate() veya imagecolorallocatealpha() ile ayrılan bir renk yerine kullanılabilen özel renk seçeneği.
`IMG_COLOR_STYLED` (int)
  imagecolorallocate() veya imagecolorallocatealpha() ile ayrılan bir renk yerine kullanılabilen özel renk seçeneği.
`IMG_COLOR_BRUSHED` (int)
  imagecolorallocate() veya imagecolorallocatealpha() ile ayrılan bir renk yerine kullanılabilen özel renk seçeneği.
`IMG_COLOR_STYLEDBRUSHED` (int)
  imagecolorallocate() veya imagecolorallocatealpha() ile ayrılan bir renk yerine kullanılabilen özel renk seçeneği.
`IMG_COLOR_TRANSPARENT` (int)
  imagecolorallocate() veya imagecolorallocatealpha() ile ayrılan bir renk yerine kullanılabilen özel renk seçeneği.
`IMG_AFFINE_TRANSLATE` (int)
  imageaffinematrixget() işlevince kullanılan bir paralel dönüşüm türü sabiti.
`IMG_AFFINE_SCALE` (int)
  imageaffinematrixget() işlevince kullanılan bir paralel dönüşüm türü sabiti.
`IMG_AFFINE_ROTATE` (int)
  imageaffinematrixget() işlevince kullanılan bir paralel dönüşüm türü sabiti.
`IMG_AFFINE_SHEAR_HORIZONTAL` (int)
  imageaffinematrixget() işlevince kullanılan bir paralel dönüşüm türü sabiti.
`IMG_AFFINE_SHEAR_VERTICAL` (int)
  imageaffinematrixget() işlevince kullanılan bir paralel dönüşüm türü sabiti.
`IMG_ARC_ROUNDED` (int)
  imagefilledarc() işlevince kullanılan bir tarz sabiti.

  > Bilginize:

  > Bu sabit `IMG_ARC_PIE` ile aynı değere sahiptir.

`IMG_ARC_PIE` (int)
  imagefilledarc() işlevince kullanılan bir tarz sabiti.
`IMG_ARC_CHORD` (int)
  imagefilledarc() işlevince kullanılan bir tarz sabiti.
`IMG_ARC_NOFILL` (int)
  imagefilledarc() işlevince kullanılan bir tarz sabiti.
`IMG_ARC_EDGED` (int)
  imagefilledarc() işlevince kullanılan bir tarz sabiti.
`IMG_GD2_RAW` (int)
  imagegd2() işlevince kullanılan bir tür sabiti.
`IMG_GD2_COMPRESSED` (int)
  imagegd2() işlevince kullanılan bir tür sabiti.
`IMG_EFFECT_REPLACE` (int)
  imagelayereffect() işlevince kullanılan bir alfa karıştırma etkisi
`IMG_EFFECT_ALPHABLEND` (int)
  imagelayereffect() işlevince kullanılan bir alfa karıştırma etkisi
`IMG_EFFECT_NORMAL` (int)
  imagelayereffect() işlevince kullanılan bir alfa karıştırma etkisi
`IMG_EFFECT_OVERLAY` (int)
  imagelayereffect() işlevince kullanılan bir alfa karıştırma etkisi
`IMG_EFFECT_MULTIPLY` (int)
  imagelayereffect() işlevince kullanılan bir alfa karıştırma etkisi
`IMG_FILTER_NEGATE` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_GRAYSCALE` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_BRIGHTNESS` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_CONTRAST` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_COLORIZE` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_EDGEDETECT` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_GAUSSIAN_BLUR` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_SELECTIVE_BLUR` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_EMBOSS` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_MEAN_REMOVAL` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_SMOOTH` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci.
`IMG_FILTER_PIXELATE` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci. (PHP 5.3.0'dan beri kullanılabilmektedir.)
`IMG_FILTER_SCATTER` (int)
  imagefilter() işlevince kullanılan özel GD süzgeci. (PHP 7.4.0'dan beri kullanılabilmektedir.)
`IMAGETYPE_GIF` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JPEG` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JPEG2000` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_PNG` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_SWF` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_PSD` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_BMP` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_WBMP` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_XBM` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_TIFF_II` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_TIFF_MM` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_IFF` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JB2` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JPC` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JP2` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_JPX` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_SWC` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_ICO` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_WEBP` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti. PHP 7.1.0'dan beri mevcuttur.
`IMAGETYPE_AVIF` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti. (PHP 8.1.0 ve sonrasında kullanılabilir.)
`IMAGETYPE_UNKNOWN` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevince kullanılan görüntü türü sabiti.
`IMAGETYPE_COUNT` (int)
  image_type_to_mime_type() ve image_type_to_extension() işlevleri tarafından desteklenen görüntü türü sabitlerinin sayısı ("unknown" türü dahil)
`PNG_NO_FILTER` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_FILTER_NONE` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_FILTER_SUB` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_FILTER_UP` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_FILTER_AVG` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_FILTER_PAETH` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`PNG_ALL_FILTERS` (int)
  imagepng() işlevince kullanılan özel bir PNG süzgeci.
`IMG_FLIP_VERTICAL` (int)
  PHP 5.5.0 ve sorasında imageflip() ile birlikte kullanılabilir.
`IMG_FLIP_HORIZONTAL` (int)
  PHP 5.5.0 ve sorasında imageflip() ile birlikte kullanılabilir.
`IMG_FLIP_BOTH` (int)
  PHP 5.5.0 ve sorasında imageflip() ile birlikte kullanılabilir.
`IMG_BELL` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BESSEL` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BILINEAR_FIXED` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BICUBIC` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BICUBIC_FIXED` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BLACKMAN` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BOX` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_BSPLINE` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_CATMULLROM` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_GAUSSIAN` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_GENERALIZED_CUBIC` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_HERMITE` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_HAMMING` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_HANNING` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_MITCHELL` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_POWER` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_QUADRATIC` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_SINC` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_NEAREST_NEIGHBOUR` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_WEIGHTED4` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_TRIANGLE` (int)
  PHP 5.5.0 ve sorasında imagesetinterpolation() ile birlikte kullanılabilir.
`IMG_CROP_BLACK` (int)
  Siyah arka planı kırpar.
`IMG_CROP_DEFAULT` (int)
  `IMG_CROP_TRANSPARENT` ile aynı. PHP 7.4.0 öncesinde, Görüntünün şeffaf rengi yoksa, paketlenmiş libgd `IMG_CROP_SIDES`'a geri düşer.
`IMG_CROP_SIDES` (int)
  Kırpılacak arka planı algılamak için görüntünün 4 köşesini kullanır.
`IMG_CROP_THRESHOLD` (int)
  `eşik` ve `renk` ile belirtilen görüntüyü kullanarak kırpar.
`IMG_CROP_TRANSPARENT` (int)
  Şeffaf arka planı kırpar.
`IMG_CROP_WHITE` (int)
  Beyaz arka planı kırpar.

# Örnekler

## İçindekiler

- PHP ile PNG oluşturmak
- Alfa kanallarını kullanarak resme damga basmak
- Yarı geçirgen filigran oluşturmak için imagecopymerge kullanımı

## PHP ile PNG oluşturmak

Örnek 1 - PHP ile PNG oluşturma örneği

    <?php

    header("Content-type: image/png");
    $string = $_GET['text'];
    $foto     = imagecreatefrompng("images/button1.png");
    $turuncu = imagecolorallocate($foto, 220, 210, 60);
    $px     = (imagesx($foto) - 7.5 * strlen($string)) / 2;
    imagestring($foto, 3, $px, 9, $string, $turuncu);
    imagepng($foto);
    imagedestroy($foto);

    ?>

Bu örnek bir sayfadan şöyle bir etiketle çağırlabilir: `<img src="button.php?text=gönder">`. Yukarıdaki button.php betiği bu "`gönder`" dizgesini alır ve "images/button1.png" resminin üzerine yerleştirip elde edilen resmi çıktılar. Bu yöntem, her düğme için ayrı bir düğme resmi kullanmaktan daha verimlidir. Bu yöntemle düğmeler devingen olarak üretilir.

## Alfa kanallarını kullanarak resme damga basmak

Örnek 1 - Alfa kanallarını kullanarak resme damga basma örneği

    <?php
    // Filigran uygulanacak fotoğrafı ve damgayı yükleyelim.
    $damga = imagecreatefrompng('damga.png');
    $foto = imagecreatefromjpeg('foto.jpeg');

    // Damganın kenar boşluklarını ayarlayıp resmin
    // yükseklik ve genişliğini alalım
    $sağ_boşluk = 10;
    $alt_boşluk = 10;
    $sx = imagesx($damga);
    $sy = imagesy($damga);

    // Damga resmini koordinatları belirterek kenar boşlukları ile
    // birlikte fotoğrafın üzerine kopyalayalım.
    imagecopy($foto, $damga, imagesx($foto) - $sx - $sağ_boşluk,
                             imagesy($foto) - $sy - $alt_boşluk,
                             0, 0, imagesx($damga), imagesy($damga));

    // Sonucu çıktılayıp belleği serbest bırakalım.
    header('Content-type: image/png');
    imagepng($foto);
    imagedestroy($foto);
    ?>

Telif haklı fotoğraflara ve görüntülere bir işaret veya damga basmanın en uygun yolu budur. Damga resminde metin olarak bir alfa kanalının varlığı halinde metne kenar yumuşatma uygulanacağına dikkat edin. Bu, kopyalama sırasında korunur.

## Yarı geçirgen filigran oluşturmak için imagecopymerge() kullanımı

Örnek 1 imagecopymerge() kullanarak yarı geçirgen filigran oluşturma örneği

    <?php
    // Filigran uygulanacak fotoğrafı ve damgayı yükleyelim.
    $foto = imagecreatefromjpeg('foto.jpeg');

    // Önce damga resmini GD'yi kullanarak oluşturalım.
    $damga = imagecreatetruecolor(100, 70);
    imagefilledrectangle($damga, 0, 0, 99, 99, 0x0000FF);
    imagefilledrectangle($damga, 9, 9, 90, 60, 0xFFFFFF);
    imagestring($damga, 5, 20, 20, 'libGD', 0x0000FF);
    imagestring($damga, 3, 20, 40, '(c) 2007-9', 0x0000FF);

    // Damganın kenar boşluklarını ayarlayıp resmin
    // yükseklik ve genişliğini alalım
    $yan_boşluk = 10;
    $alt_boşluk = 10;
    $sx = imagesx($damga);
    $sy = imagesy($damga);

    // %50 matlıktaki damgayı fotoğrafa basalım.
    imagecopymerge($foto, $damga, imagesx($foto) - $sx - $yan_boşluk,
                                  imagesy($foto) - $sy - $alt_boşluk, 0, 0,
                                  imagesx($damga), imagesy($damga), 50);

    // Sonucu kaydedip belleği serbest bırakalım.
    imagepng($foto, 'damgalı_foto.png');
    imagedestroy($foto);

    ?>

Bu örnekte özgün görüntü ile damgayı birleştirmek için imagecopymerge() işlevi kullanılmıştır. Bu işlevi kullanarak damgamızın ışık geçirgenliğini ayarlayabiliriz. Bu örnekte ışık geçirgenliği %50 olarak ayarlanmıştır. Uygulamada, kaldırılması zor olduğundan yarı geçirgen filigran olarak telif haklarının korunmasında kullanılır.

# GD ve Görüntü İşlevleri

# gd_info

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

gd_info — Kurulu GD kütüphanesi hakkında bilgi verir

### Açıklama

function gd_info(): array

Kurulu GD kütüphanesinin sürümü ve yapabildikleri hakkında bilgi verir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Bir ilişkisel dizi döner.

gd_info() tarafından döndürülen dizinin elemanları
Öznitelik | Anlamı
--- | ---
GD Version | Kurulu `libgd` sürümünü içeren string türünde bir değer.
FreeType Support | bool türünde bir değer. FreeType desteği varsa `true`.
FreeType Linkage | FreeType desteğinin nasıl sağlandığını açıklayan string türünde bir değer. Olası değerler: 'with freetype' (FreeType ile), 'with TTF library' (TTF kütüphanesi ile) ve 'with unknown library' (bilinmeyen bir kütüphane ile). Bu eleman sadece `FreeType Support` elemanının değeri `true` ise anlamlıdır.
GIF Read Support | bool türünde bir değer. `GIF` görüntüleri okuma desteği varsa `true`.
GIF Create Support | bool türünde bir değer. `GIF` görüntüleri oluşturma desteği varsa `true`.
JPEG Support | bool türünde bir değer. `JPEG` desteği varsa `true`.
PNG Support | bool türünde bir değer. `PNG` desteği varsa `true`.
WBMP Support | bool türünde bir değer. `WBMP` desteği varsa `true`.
XPM Support | bool türünde bir değer. `XPM` desteği varsa `true`.
XBM Support | bool türünde bir değer. `XBM` desteği varsa `true`.
WebP Support | bool value. `WebP` desteği varsa `true`.
AVIF Support | bool türünde bir değer. `AVIF` desteği varsa `true`. PHP 8.1.0 ve sonrasında kullanılabilir.

### Örnekler

Örnek 1 gd_info() kullanımı

    <?php
    var_dump(gd_info());
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(14) {
      ["GD Version"]=>
      string(26) "bundled (2.1.0 compatible)"
      ["FreeType Support"]=>
      bool(true)
      ["FreeType Linkage"]=>
      string(13) "with freetype"
      ["GIF Read Support"]=>
      bool(true)
      ["GIF Create Support"]=>
      bool(true)
      ["JPEG Support"]=>
      bool(true)
      ["PNG Support"]=>
      bool(true)
      ["WBMP Support"]=>
      bool(true)
      ["XPM Support"]=>
      bool(true)
      ["XBM Support"]=>
      bool(true)
      ["WebP Support"]=>
      bool(true)
      ["BMP Support"]=>
      bool(true)
      ["AVIF Support"]=>
      bool(false)
      ["TGA Read Support"]=>
      bool(true)
    }

### Ayrıca Bakınız

- imagepng() - Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagejpeg() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagegif() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagewebp() - WebP görüntüyü tarayıcıya veya dosyaya çıktılar
- imageavif() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür

# getimagesize

(PHP 4, PHP 5, PHP 7, PHP 8)

getimagesize — Bir görüntünün boyutlarını döndürür

### Açıklama

function getimagesize(string `$dosyaismi`, array `&$ekbilgi` = `null`): array|false

getimagesize() işlevi dosya ismiyle belirtilen desteklenen görüntünün boyutlarını saptar ve görüntünün boyutlarından başka görüntü dosyası biçemini, HTML `IMG` etiketinin öznitelikleri olarak yükseklik ve genişliği ve görüntüye ilişkin HTTP içerik türünü bir dizi içinde döndürür.

getimagesize() işlevi ayrıca, `ekbilgi` bağımsız değişkeninde bazı ek bilgiler döndürebilir.

Dikkat

Bu işlev belirtilen `dosyaismi`nin geçerli bir görüntü dosyası olacağını varsayar. Bir görüntü dosyası belirtilmemişse bile, hatalı olarak bunu bir görüntü dosyası olarak algılar ve işlev başarıyla döner, fakat dizi anlamsız değerler içerebilir.

getimagesize() işlevi belirtilen dosyanın geçerli bir dosya olup olmadığını sınamak için kullanılmamalı, Fileinfo eklentisi gibi amaca yönelik bir çözüm kullanılmalıdır.

> Bilginize: JPC ve JP2 farklı bit derinliğinde bileşenler içerebilirler. Bu durumda, "bits" değeri saptanan en büyük bit derinliğidir. Ayrıca JP2 dosyaları çok sayıda JPEG 2000 kod akımı içerebilir. Bu durumda, getimagesize() işlevi, dosyanın başlığında saptadığı ilk kod akımının değerleriyle döner.

> Bilginize: Simge (icon) görüntüleri hakkında bilgi en yüksek bit derinliğine sahip simgeden elde edilir.

> Bilginize: GIF görüntüleri her çerçevenin görüntünün yalnızca bir bölümünü içerdiği çok sayıda çerçeveden oluşabilir. getimagesize() tarafından bildirilen görüntünün boyutu toplam boyuttur (mantıksal ekran tanıtıcısından okunur).

### Bağımsız Değişkenler

`dosyaismi`

  Hakkında bilgi döndürülecek görüntüyü içeren dosyanın yolu. Burada bir yerel dosya belirtilebileceği gibi (yapılandırma izin veriyorsa) desteklenen akımlardan biri kullanılarak uzak bir dosya da belirtilebilir.

`ekbilgi`

  İsteğe bağlı bu bağımsız değişken ile görüntü dosyası hakkında bazı ek bilgiler edinilebilir. Şimdilik, bir ilişkisel dizi olarak farklı JPG APP imleyicileri döndürülmektedir. Bazı programlar bu APP imleyicilerini görüntüye metin bilgisini gömmek için kullanırlar. En çok uygulananı APP13 imleyicisindeki » IPTC bilgisini gömmektir. İkil APP13 imleyicisini okunabilir hale dönüştürebilmek için iptcparse() işlevini kullanabilirsiniz.

  > Bilginize:

  > `ekbilgi` sadece JFIF dosyalarını destekler.

### Dönen Değerler

En fazla 7 elemanlı bir dizi ile döner. Bazı görüntü türleri `channels` ve `bits` elemanlarını içermeyebilir.

0 ve 1 indisleri sırayla görüntünün genişliğini ve yüksekliğini içerir.

> Bilginize:

> Bazı biçemler hiç görüntü içermeyeceği gibi bazıları da birden fazla görüntü içerebilir. Bu gibi durumlarda, getimagesize() görüntü boyutlarını doğru olarak saptayamayabilir ve bu durumda boyutları 0 olarak döndürür.

2 indisinde görüntünün türünü belirtmek üzere IMAGETYPE_XXX sabitlerinden biri bulunur.

3 indisinde doğrudan IMG etiketinin öznitelikleri olarak kullanılabilecek şekilde, `height="yyy" width="xxx"` dizgesi bulunur.

`mime` indisinde görüntünün MIME türü bulunur. Bu dizge HTTP `Content-type` başlığında kullanılır:

Örnek 1 - getimagesize() ve MIME türleri

    <?php
    $boyutlar = getimagesize($filename);
    $dt = fopen($filename, "rb");
    if ($boyutlar && $dt) {
        header("Content-type: {$boyutlar['mime']}");
        fpassthru($dt);
        exit;
    } else {
        // hata
    }
    ?>

`channels` indisinde RGB görüntüler için 3, CMYK görüntüler için 4 değeri bulunur.

`bits` indisinde renk bit sayısı bulunur.

Bazı görüntü türleri için `channels` ve `bits` değerlerinin varlığı biraz kafa karıştırıcıdır. Örneğin, GIF daima piksel başına 3 kanal kullanır fakat genel bir renk tablosuna sahip canlandırmalı bir GIF için piksel başına bit sayısı hesaplanamaz.

Başarısızlık halinde `false` döner.

### Hatalar/İstisnalar

`dosyaismi` görüntüsüne erişmek imkansızsa getimagesize() `E_WARNING` seviyesinde bir hata üretir. Okuma hatasında ise `E_NOTICE` seviyesinde bir hata üretir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.2.0 | Artık görüntünün boyutları, bitleri ve AVIF görüntü kanalları dönüyor; evvelce boyutlar için `0x0` döndürülür, bitler ve kanallarla ilgili bir dönüş olmazdı.
7.1.0 | WebP desteği eklendi

### Örnekler

Örnek 2 - getimagesize() dosya örneği

    <?php
    list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
    echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() örneği\" />";
    ?>

Örnek 3 - getimagesize (URL)

    <?php
    $size = getimagesize("http://www.example.com/gifs/logo.gif");

    // Dosya ismi boşluk karakteri içeriyorsa düzgün şekilde kodlamak gerekir
    $size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

    ?>

Örnek 4 - IPTC döndüren getimagesize() örneği

    <?php
    $size = getimagesize("testimg.jpg", $info);
    if (isset($info["APP13"])) {
        $iptc = iptcparse($info["APP13"]);
        var_dump($iptc);
    }
    ?>

### Notlar

> Bilginize:

> Bu işlev için GD görüntü kütüphanesi gerekli değildir.

### Ayrıca Bakınız

- image_type_to_mime_type() - getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür
- exif_imagetype() - Bir görüntünün türünü saptar
- exif_read_data() - Bir görüntü dosyasından EXIF başlıklarını okur
- exif_thumbnail() - Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür
- imagesx() - Görüntünün genişliğini döndürür
- imagesy() - Görüntünün yüksekliğini döndürür

# getimagesizefromstring

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

getimagesizefromstring — Dizgedeki görüntünün boyutunu döndürür

### Açıklama

function getimagesizefromstring(string `$dizge`, array `&$görüntü_bilgisi` = `null`): array|false

İlk bağımsız değişken olarak dosya ismi yerine bir dizge kabul etmesi dışında getimagesize() işlevi gibidir.

İşlevin nasıl çalıştığı hakkında bilgi için getimagesize() belgesine bakılabilir.

### Bağımsız Değişkenler

`dizge`

  Dizge olarak görüntü bilgisi.

`görüntü_bilgisi`

  Bkz: getimagesize()

### Dönen Değerler

Bkz: getimagesize()

### Örnekler

Örnek 1 - getimagesizefromstring() örneği

    <?php
    $img = '/path/to/test.png';

    // bir dosya olarak aç
    $size_info1 = getimagesize($img);

    // Bir dizge olarak aç
    $data       = file_get_contents($img);
    $size_info2 = getimagesizefromstring($data);
    ?>

### Ayrıca Bakınız

- getimagesize() - Bir görüntünün boyutlarını döndürür

# image_type_to_extension

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

image_type_to_extension — Resim türü ile ilgili dosya uzantısını döndürür

### Açıklama

function image_type_to_extension(int `$resim_türü`, bool `$noktalı` = `true`): string|false

`IMAGETYPE_XXX` sabiti ile ilgili dosya uzantısını döndürür.

### Bağımsız Değişkenler

`resim_türü`

  `IMAGETYPE_XXX` sabitlerinden biri.

`notkalı`

  Uzantıya bir nokta eklenip eklenmeyeceği belirtilir. `true` öntanımlıdır.

### Dönen Değerler

Belirtilen resim türü ile ilgili dosya uzantısını bir dizge olarak döndürür, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - image_type_to_extension() örneği

    <?php
    // Boş bir resim oluşturalım
    $resim = imagecreatetruecolor(100, 100);

    // Resmi kaydedelim
    imagepng($resim, './dnm' . image_type_to_extension(IMAGETYPE_PNG));
    imagedestroy($resim);
    ?>

### Notlar

> Bilginize:

> Bu işlev için GD görüntü kütüphanesi gerekli değildir.

# image_type_to_mime_type

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

image_type_to_mime_type — getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür

### Açıklama

function image_type_to_mime_type(int `$resim_türü`): string

image_type_to_mime_type() işlevi belirtilen `IMAGETYPE_XXX` sabiti ile ilişkili MIME türünü döndürür.

### Bağımsız Değişkenler

`resim_türü`

  `IMAGETYPE_XXX` sabitlerinden biri.

### Dönen Değerler

Dönen değer şunlardan biri olabilir:

Sabitlere göre dönen değerler
`resimtürü` | Dönen değer
--- | ---
`IMAGETYPE_GIF` | `image/gif`
`IMAGETYPE_JPEG` | `image/jpeg`
`IMAGETYPE_PNG` | `image/png`
`IMAGETYPE_SWF` | `application/x-shockwave-flash`
`IMAGETYPE_PSD` | `image/psd`
`IMAGETYPE_BMP` | `image/bmp`
`IMAGETYPE_TIFF_II` (intel bayt sırası) | `image/tiff`
`IMAGETYPE_TIFF_MM` (motorola bayt sırası) | `image/tiff`
`IMAGETYPE_JPC` | `application/octet-stream`
`IMAGETYPE_JP2` | `image/jp2`
`IMAGETYPE_JPX` | `application/octet-stream`
`IMAGETYPE_JB2` | `application/octet-stream`
`IMAGETYPE_SWC` | `application/x-shockwave-flash`
`IMAGETYPE_IFF` | `image/iff`
`IMAGETYPE_WBMP` | `image/vnd.wap.wbmp`
`IMAGETYPE_XBM` | `image/xbm`
`IMAGETYPE_ICO` | `image/vnd.microsoft.icon`
`IMAGETYPE_WEBP` | `image/webp`
`IMAGETYPE_AVIF` | `image/avif`

### Örnekler

Örnek 1 - image_type_to_mime_type() örneği

    <?php
    header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));
    ?>

### Notlar

> Bilginize:

> Bu işlev için GD görüntü kütüphanesi gerekli değildir.

### Ayrıca Bakınız

- getimagesize() - Bir görüntünün boyutlarını döndürür
- exif_imagetype() - Bir görüntünün türünü saptar
- exif_read_data() - Bir görüntü dosyasından EXIF başlıklarını okur
- exif_thumbnail() - Bir TIFF veya JPEG görüntüsünü içinde gömülü küçük örneği döndürür

# image2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

image2wbmp — Görüntüyü tarayıcıya veya dosyaya yazar.

Uyarı

Bu işlevin kullanımı PHP 7.3.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function image2wbmp(resource `$görüntü`, string `$dosyaismi` = ?, int `$önalan` = ?): bool

image2wbmp() işlevi belirtilen görüntünün WBMP sürümünü tarayıcıya veya belirtilmişse `dosyaismi` dosyasına çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi görüntü oluşturma işlevlerinden dönen görüntü özkaynağı.

`dosyaismi`

  Görüntünün kaydedileceği dosyanın yolu. Verilmezse ham görüntü akımı doğrudan tarayıcıya gönderilir.

`önalan`

  imagecolorallocate() işlevinden elde edilen bir tanıtıcıyı atayarak bu bağımsız değişken ile önalan rengini atayabilirsiniz. Öntanımlı önalan rengi siyahtır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Örnekler

Örnek 1 - image2wbmp() örneği

    <?php
    $file = 'php.png';
    $image = imagecreatefrompng($file);

    header('Content-Type: ' . image_type_to_mime_type(IMAGETYPE_WBMP));
    image2wbmp($image); // doğrudan akımı çıktılıyoruz
    imagedestroy($image);
    ?>

### Ayrıca Bakınız

- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.

# imageaffine

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imageaffine — İsteğe bağlı bir kırpma alanı kullanarak, belirtilen görüntüye ilgin dönüşümü uygulayıp sonucu döndürür

### Açıklama

function imageaffine(GdImage `$görüntü`, array `$ilgin`, ?array `$kırpma_bölgesi` = `null`): GdImage|false

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`ilgin`

  0'dan 5'e kadar anahtarlı dizi.

`kırpma_bölgesi`

  "x", "y", "width" ve "height" anahtarlı dizi veya `null`.

### Dönen Değerler

Başarı durumunda ilgin dönüşümlü görüntü, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `kırpma_bölgesi` artık `null` olabiliyor.
8.0.0 | Başarı durumunda artık GDImage örneği dönüyor; evvelce resource türünde bir değer dönerdi.

# imageaffinematrixconcat

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imageaffinematrixconcat — İki ilgin dönüşüm matrisini birleştirir

### Açıklama

function imageaffinematrixconcat(array `$matris1`, array `$matris2`): array|false

Aynı görüntüye bir defada çok sayıda dönüşüm uygulayabilecek iki ilgin dönüşüm matrisinin birleşimini döndürür.

### Bağımsız Değişkenler

`matris1`

  1. ilgin dönüşüm matrisi (`0`'dan `5`'e kadar anahtarlı, kayan noktalı değerler içeren bir dizi).

`matris2`

  2. ilgin dönüşüm matrisi (`0`'dan `5`'e kadar anahtarlı, kayan noktalı değerler içeren bir dizi).

### Dönen Değerler

Başarı durumunda ilgin dönüşüm matrisi (`0`'dan `5`'e kadar anahtarlı, kayan noktalı değerler içeren bir dizi), başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - imageaffinematrixconcat() örneği

    <?php
    $m1 = imageaffinematrixget(IMG_AFFINE_TRANSLATE, array('x' => 2, 'y' => 3));
    $m2 = imageaffinematrixget(IMG_AFFINE_SCALE, array('x' => 4, 'y' => 5));
    $matrix = imageaffinematrixconcat($m1, $m2);
    print_r($matrix);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => 4
        [1] => 0
        [2] => 0
        [3] => 5
        [4] => 8
        [5] => 15
    )

### Ayrıca Bakınız

- imageaffine() - İsteğe bağlı bir kırpma alanı kullanarak, belirtilen görüntüye ilgin dönüşümü uygulayıp sonucu döndürür
- imageaffinematrixget() - İlgin dönüşüm matrisini döndürür

# imageaffinematrixget

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imageaffinematrixget — İlgin dönüşüm matrisini döndürür

### Açıklama

function imageaffinematrixget(int `$tür`, array|float `$seçenekler`): array|false

Returns an affine transformation matrix.

### Bağımsız Değişkenler

`tür`

  `IMG_AFFINE_*` sabitlerinden biri.

`seçenekler`

  `tür` olarak `IMG_AFFINE_TRANSLATE` veya `IMG_AFFINE_SCALE` belirtilmişse, `seçenekler` `x` ve `y` anahtarlı, float türünde değerler içeren bir dizi olmalıdır.

  `tür` olarak `IMG_AFFINE_ROTATE`, `IMG_AFFINE_SHEAR_HORIZONTAL` veya `IMG_AFFINE_SHEAR_VERTICAL` belirtilmişse, `seçenekler` açı belirten float türünde bir değer olmalıdır.

### Dönen Değerler

Başarı durumunda ilgin dönüşüm matrisi (`0`'dan `5`'e kadar anahtarlı, kayan noktalı değerler içeren bir dizi), başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - imageaffinematrixget() örneği

    <?php
    $matrix = imageaffinematrixget(IMG_AFFINE_TRANSLATE, array('x' => 2, 'y' => 3));
    print_r($matrix);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => 1
        [1] => 0
        [2] => 0
        [3] => 1
        [4] => 2
        [5] => 3
    )

### Ayrıca Bakınız

- imageaffine() - İsteğe bağlı bir kırpma alanı kullanarak, belirtilen görüntüye ilgin dönüşümü uygulayıp sonucu döndürür
- imageaffinematrixconcat() - İki ilgin dönüşüm matrisini birleştirir

# imagealphablending

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagealphablending — Bir görüntü için harmanlama kipini etkinleştirir

### Açıklama

function imagealphablending(GdImage `$görüntü`, bool `$etkin`): bool

imagealphablending() gerçek renkli görüntülerde iki farklı çizim kipi kullanımına izin verir. Harmanlama kipinde, tüm çizim işlevlerine rengin alfa kanalı bileşeni sağlanır, örneğin imagesetpixel() işlevi o rengin ne kadar parlak gösterileceğini belirleyebilir. Sonuç olarak GD otomatik olarak, rengin çizilmesi sırasında mevcut rengin harmanlanmasını sağlar ve sonucu görüntüde saklar. Elde edilen piksel mattır. Harmanlamama kipinde alfa kanalı bilgisi piksel çizim rengine aynen kopyalanır. Harmanlama kipi paletli görüntüler için kullanılamaz.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`etkin`

  Harmanlama kipinin etkin olup olmayacağı; gerçek renkli görüntüler için `true`, aksi takdirde `false` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagealphablending() örneği

    <?php
    // Bir görüntü oluştur
    $im = imagecreatetruecolor(100, 100);

    // Alfa harmanlamasını etkin kıl
    imagealphablending($im, true);

    // Bir kare çiz
    imagefilledrectangle($im, 30, 30, 70, 70, imagecolorallocate($im, 255, 0, 0));

    // Sonucu çıktıla
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

# imageantialias

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

imageantialias — Kenar yumuşatma işlevlerini uygulatır

### Açıklama

function imageantialias(GdImage `$görüntü`, bool `$etkin`): bool

Hızlı çizilen kenar yumuşatma yöntemlerini çizgiler ve içi boş çokgenler için etkin kılar. Alfa bileşenlerini desteklemez. Doğrudan harmanlama yapar. Sadece gerçek renkli görüntülerle çalışır.

Çizgi kalınlığı ve tarzı desteklenmez.

Kenar yumuşatmalı çizim ilkellerinin şeffaf artalanda kullanılmasının sonuçları belirsizdir. Harmanlama yöntemi çizgi rengiyle artalan rengini harmanlar. Alfa bileşen desteğinin yokluğu nedeniyle alfa kenar yumuşatması yapılamaz.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`etkin`

  Kenar yumuşatma uygulanıp uygulanmayacağı; gerçek renkli görüntüler için `true`, aksi takdirde `false` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
7.2.0 | imageantialias() artık özel bir ilgi gerekmeden kullanılabiliyor. Evvelce, kullanılabilmesi için PHP'nin paketinde gelen GD kütüphanesi ile derlenmesi gerekirdi.

### Örnekler

Örnek 1 - Kenar yumuşatmalı çizginin normal çizgiyle karşılaştırılması

    <?php
    // İki görüntü oluşturalım
    $aa = imagecreatetruecolor(400, 100);
    $normal = imagecreatetruecolor(200, 100);

    // Görüntünün birinde kenar yumuşatma etkin olsun
    imageantialias($aa, true);

    // Renkleri ayıralım
    $red = imagecolorallocate($normal, 255, 0, 0);
    $red_aa = imagecolorallocate($aa, 255, 0, 0);

    // Görüntülere birer çizgi çizelim
    imageline($normal, 0, 0, 200, 100, $red);
    imageline($aa, 0, 0, 200, 100, $red_aa);

    // İki görüntüyü yanyana bir görüntüye yerleştirelim
    // Soldaki kenar yumuşatmalı olsun
    imagecopymerge($aa, $normal, 200, 0, 0, 0, 200, 100, 100);

    // Görüntüyü çıktılayalım
    header('Content-Type: image/png');

    imagepng($aa);
    imagedestroy($aa);
    imagedestroy($normal);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur

# imagearc

(PHP 4, PHP 5, PHP 7, PHP 8)

imagearc — Bir yay çizer

### Açıklama

function imagearc(
GdImage `$görüntü`,
int `$merkez_x`,
int `$merkez_y`,
int `$genişlik`,
int `$yükseklik`,
int `$ilk_açı`,
int `$son_açı`,
int `$renk`
): bool

imagearc() işlevi koordinatları belirtilen çemberin bir yayını çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`merkez_x`

  Merkezin X konumu.

`merkez_y`

  Merkezin Y konumu.

`genişlik`

  Yay genişliği.

`yükseklik`

  Yay yüksekliği.

`ilk_açı`

  Derece cinsinden yayın başlangıç açısı.

`son_açı`

  Derece cinsinden yayın bitiş açısı. 0° saat 3 konumu olup yay saat yönünde çizilir.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagearc() ile çember çizmek

    <?php

    // 200*200 bir görüntü oluşturalım
    $img = imagecreatetruecolor(200, 200);

    // Bir kaç renk ayıralım
    $white = imagecolorallocate($img, 255, 255, 255);
    $red   = imagecolorallocate($img, 255,   0,   0);
    $green = imagecolorallocate($img,   0, 255,   0);
    $blue  = imagecolorallocate($img,   0,   0, 255);

    // kafayı çizelim
    imagearc($img, 100, 100, 200, 200,  0, 360, $white);
    // ağız
    imagearc($img, 100, 100, 150, 150, 25, 155, $red);
    // gözler
    imagearc($img,  60,  75,  50,  50,  0, 360, $green);
    imagearc($img, 140,  75,  50,  50,  0, 360, $blue);

    // Görüntüyü tarayıcıya gönderelim
    header("Content-type: image/png");
    imagepng($img);

    // Belleği serbest bırakalım
    imagedestroy($img);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagefilledarc() - Bir yay çizer ve içini doldurur
- imageellipse() - Bir elips çizer
- imagefilledellipse() - İçi dolu bir elips çizer

# imageavif

(PHP 8 >= 8.1.0)

imageavif — Görüntüyü tarayıcıya veya dosyaya yazar.

### Açıklama

function imageavif(
GdImage `$image`,
resource|string|null `$file` = `null`,
int `$quality` = -1,
int `$speed` = -1
): bool

Outputs or saves a AVIF Raster image from the given `image`.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`file`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

`quality`

  `quality` is optional, and ranges from 0 (worst quality, smaller file) to 100 (best quality, larger file). If `-1` is provided, the default value `52` is used.

`speed`

  `speed` is optional, and ranges from 0 (slow, smaller file) to 10 (fast, larger file). If `-1` is provided, the default value `6` is used.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Hatalar/İstisnalar

Throws a ValueError if `quality` or `speed` is invalid.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Now throws a ValueError if `quality` or `speed` is invalid.

### Ayrıca Bakınız

- imagepng() - Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagejpeg() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür

# imagebmp

(PHP 7 >= 7.2.0, PHP 8)

imagebmp — BMP görüntüyü tarayıcıya veya dosyaya çıktılar

### Açıklama

function imagebmp(GdImage `$görüntü`, resource|string|null `$dosya` = `null`, bool `$sıkıştır` = `true`): bool

Belirtilen `görüntü`nün BMP sürümünü kaydeder veya çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

  > Bilginize:

  > `sıkıştırılmış` bağımsız değişkeni belirtilmemişse `null` değeri geçersizdir.

`sıkıştır`

  BMP'nin çalışma uzunluğu kodlaması (RLE) ile sıkıştırılıp sıkıştırılmayacağı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | `sıkıştır` artık mantıksal bir değer; evvelce bir tamsayı idi.

### Örnekler

Örnek 1 - BMP dosyası kaydı

    <?php
    // Boş bir görüntü oluştur ve bir metin ekle
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);

    imagestring($im, 1, 5, 5,  'BMP with PHP', $text_color);

    // Görüntüyü kaydet
    imagebmp($im, 'php.bmp');

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

# imagechar

(PHP 4, PHP 5, PHP 7, PHP 8)

imagechar — Yatay olarak bir karakter çizer

### Açıklama

function imagechar(
GdImage `$görüntü`,
GdFont|int `$yazıtipi`,
int `$x`,
int `$y`,
string `$karakter`,
int `$renk`
): bool

imagechar() işlevi `karakter` dizgesinin ilk karakterini `görüntü` ile belirtilen görüntünün üst sol `x`,`y` konumuna (görüntünün üst sol köşesi 0,0'dır) `renk` renginde çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

`x`

  Başlangıç X koordinatı.

`y`

  Başlangıç Y koordinatı.

`karakter`

  Çizilecek karakter.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagechar() örneği

    <?php

    $im = imagecreate(100, 100);

    $dizge = 'PHP';

    $artalan = imagecolorallocate($im, 255, 255, 255);
    $siyah = imagecolorallocate($im, 0, 0, 0);

    // Üst sol köşeye siyah bir "P" basalım
    imagechar($im, 1, 0, 0, $dizge, $siyah);

    header('Content-type: image/png');
    imagepng($im);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecharup() - Düşey olarak bir karakter çizer
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler

# imagecharup

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecharup — Düşey olarak bir karakter çizer

### Açıklama

function imagecharup(
GdImage `$görüntü`,
GdFont|int `$yazıtipi`,
int `$x`,
int `$y`,
string `$c`,
int `$color`
): bool

imagecharup() işlevi `karakter` dizgesinin ilk karakterini `resim` ile belirtilen görüntünün üst sol `x`,`y` konumuna (görüntünün üst sol köşesi 0,0'dır) `renk` renginde aşağıdan yukarıya doğru dikine çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

`x`

  Başlangıç X koordinatı.

`y`

  Başlangıç Y koordinatı.

`karakter`

  Çizilecek karakter.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecharup() örneği

    <?php

    $im = imagecreate(100, 100);

    $string = 'Neden ilk harf Z olmasın';

    $bg = imagecolorallocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);

    // Beyaz artalana siyah bir "Z" basalım
    imagecharup($im, 3, 10, 10, $string, $black);

    header('Content-type: image/png');
    imagepng($im);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagechar() - Yatay olarak bir karakter çizer
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler

# imagecolorallocate

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorallocate — Bir görüntü için bir renk ayırır

### Açıklama

function imagecolorallocate(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`
): int|false

Belirtilen renk bileşenleriyle oluşturulan renk için bir renk tanıtıcısı döndürür.

imagecolorallocate() işlevi `görüntü`'de bulunan her renk için ayrı ayrı çağırmalıdır.

> Bilginize:

> İlk imagecolorallocate() çağrısı, imagecreate() ile oluşturulmuş paletli görüntünün artalanını boyar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Renk ayrılamamışsa `false`, aksi takdirde renk inidisi ile döner.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorallocate() örneği

    <?php

    $im = imagecreate(100, 100);

    // Artalan rengi kırmızı olsun
    $artalan = imagecolorallocate($im, 255, 0, 0);

    // Bir kaç renk ayıralım
    $beyaz = imagecolorallocate($im, 255, 255, 255);
    $siyah = imagecolorallocate($im, 0, 0, 0);

    // Onaltılık değerlerle
    $beyaz = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
    $siyah = imagecolorallocate($im, 0x00, 0x00, 0x00);

    ?>

### Ayrıca Bakınız

- imagecolorallocatealpha() - Bir görüntü için alfa kanallı bir renk ayırır
- imagecolordeallocate() - Bir rengi tanımsız yapar

# imagecolorallocatealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

imagecolorallocatealpha — Bir görüntü için alfa kanallı bir renk ayırır

### Açıklama

function imagecolorallocatealpha(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`,
int `$alfa`
): int|false

imagecolorallocatealpha() işlevi `alfa` bağımsız değişkeni ile ek olarak şeffaflık belirtilebilmesi dışında imagecolorallocate() işlevine eşdeğerdir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

`alfa`

  0-127 arasında belirtilebilir. `0` tamamen mat, `127` ise tamamen şeffaf demektir.

`kırmızı`, `yeşil` ve `mavi` değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Renk ayrılamazsa `false`, aksi takdirde rengin indisini döndürür.

Uyarı

Bu işlev mantıksal `false` değeriyle dönebileceği gibi `false` olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi Mantıksal Değerler bölümünde bulunabilir. Bu işlevden dönen değeri sınamak için `===` işleci kullanılabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorallocatealpha() örneği

    <?php
    $size = 300;
    $image=imagecreatetruecolor($size, $size);

    // Siyah kenar çizgili beyaz artalan
    $back = imagecolorallocate($image, 255, 255, 255);
    $border = imagecolorallocate($image, 0, 0, 0);
    imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
    imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);

    $yellow_x = 100;
    $yellow_y = 75;
    $red_x    = 120;
    $red_y    = 165;
    $blue_x   = 187;
    $blue_y   = 125;
    $radius   = 150;

    // Renkleri alfa değerleriyle ayıralım
    $yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
    $red    = imagecolorallocatealpha($image, 255, 0, 0, 75);
    $blue   = imagecolorallocatealpha($image, 0, 0, 255, 75);

    // Üst üste üç elips çizelim
    imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
    imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
    imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);

    // Başlığı çıktılamayı unutmuyoruz!
    header('Content-Type: image/png');

    // ve sonucu çıktılıyoruz
    imagepng($image);
    imagedestroy($image);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 - imagecolorallocatealpha() ile kullanmak için alfa değerlerini dönüştürmek

Genelde `0`'lık alfa değerleri tamamen şeffaf pikselleri belirtir ve alfa kanalının 8 biti vardır. Bu tür alfa değerlerini imagecolorallocatealpha() ile uyumlu olacak şekilde dönüştürmek için basit aritmetik yeterlidir:

    <?php
    $alpha8 = 0; // tamamen şeffaf
    var_dump(127 - ($alpha8 >> 1));
    $alpha8 = 255; // tamamen mat
    var_dump(127 - ($alpha8 >> 1));
    ?>

Yukarıdaki örneğin çıktısı:

    int(127)
    int(0)

### Ayrıca Bakınız

- imagecolorallocate() - Bir görüntü için bir renk ayırır
- imagecolordeallocate() - Bir rengi tanımsız yapar

# imagecolorat

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorat — Bir pikselin renk indisini döndürür

### Açıklama

function imagecolorat(GdImage `$görüntü`, int `$x`, int `$y`): int|false

`görüntü` ile belirtilen resmin belirtilen koordinatlardaki pikselinin renk indisini döndürür.

PHP, görüntü gerçek renkliyse bu işlev pikselin RGB değerini bir tamsayı olarak döndürür. Kırmızı, yeşil ve mavi bileşenlerin değerlerini elde etmek için bu değere bit maskesi ve bit kaydırma uygulamak gerekir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x`

  Pikselin X konumu.

`y`

  Pikselin Y konumu.

### Dönen Değerler

Renk indisini döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Hesapla RGB değeri bileşenlerine ayırmak

    <?php
    $im = imagecreatefrompng("php.png");
    $rgb = imagecolorat($im, 10, 15);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;

    var_dump($r, $g, $b);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(119)
    int(123)
    int(180)

Örnek 2 - imagecolorsforindex() ile RGB değeri bileşenlerine ayırmak

    <?php
    $im = imagecreatefrompng("php.png");
    $rgb = imagecolorat($im, 10, 15);

    $colors = imagecolorsforindex($im, $rgb);

    var_dump($colors);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(4) {
      ["red"]=>
      int(119)
      ["green"]=>
      int(123)
      ["blue"]=>
      int(180)
      ["alpha"]=>
      int(127)
    }

### Ayrıca Bakınız

- imagecolorset() - Bir palet indisi için renk tanımlar
- imagecolorsforindex() - Bir renk indisinin renk bilgisini döndürür
- imagesetpixel() - Bir pikselin rengini değiştirir

# imagecolorclosest

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorclosest — Belirtilen rengin en yakın benzerinin indisini döndürür

### Açıklama

function imagecolorclosest(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`
): int

Bu işlev, bileşenleri belirtilen rengin en yakın benzerinin indisini döndürür.

İstenen renk ile paletteki renk arasındaki "mesafe" rengin bileşenlerinden oluşan üç boyutlu uzayda hesaplanır.

Görüntüyü bir dosyadan oluşturursanız sadece Görüntüde kullanılan renkler çözümlenir. Renklerin sadece bir palette bulunması durumunda bu çözümleme yapılmaz.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Paletteki en yakın rengin indisi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir görüntüde renk aramak

    <?php
    // Bir görüntü açıp paletli görüntüye dönüştürelim
    $im = imagecreatefrompng('figures/imagecolorclosest.png');
    imagetruecolortopalette($im, false, 255);

    // Aranacak renkler (RGB)
    $colors = array(
        array(254, 145, 154),
        array(153, 145, 188),
        array(153, 90, 145),
        array(255, 137, 92)
    );

    // Renkleri bulmak için bir döngü kuralım.
    // En yakın rengin indisini alıp o indisin rengini öğrenelim
    foreach($colors as $id => $rgb)
    {
        $res = imagecolorclosest($im, $rgb[0], $rgb[1], $rgb[2]);
        $res = imagecolorsforindex($im, $res);
        $res = "({$res['red']}, {$res['green']}, {$res['blue']}, {$res['alpha']})";

        echo "#$id: Aranan ($rgb[0], $rgb[1], $rgb[2], $rgb[3]); En yakın $res.\n";
    }

    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    #0: Aranan (254, 145, 154); En yakın (252, 150, 148).
    #1: Aranan (153, 145, 188); En yakın (148, 150, 196).
    #2: Aranan (153, 90, 145); En yakın (148, 90, 156).
    #3: Aranan (255, 137, 92); En yakın (252, 150, 92).

### Ayrıca Bakınız

- imagecolorexact() - Belirtilen rengin indisini döndürür
- imagecolorclosestalpha() - Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir
- imagecolorclosesthwb() - En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini verir

# imagecolorclosestalpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecolorclosestalpha — Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir

### Açıklama

function imagecolorclosestalpha(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`,
int `$alfa`
): int

Bu işlev, alfası ile birlikte belirtilen rengin paletli görüntüdeki en yakın benzerinin indisini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

`alfa`

  0-127 arasında belirtilebilir. `0` tamamen mat, `127` ise tamamen şeffaf demektir.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Paletteki en yakın rengin indisi döner.

### Örnekler

Örnek 1 - Bir görüntüde renk aramak

    <?php
    // Bir görüntü açıp paletli resme dönüştürelim
    $im = imagecreatefrompng('figures/imagecolorclosest.png');
    imagetruecolortopalette($im, false, 255);

    // Aranacak renkler (RGB)
    $colors = array(
        array(254, 145, 154, 50),
        array(153, 145, 188, 127),
        array(153, 90, 145, 0),
        array(255, 137, 92, 84)
    );

    // Renkleri bulmak için bir döngü kuralım.
    // En yakın rengin indisini alıp o indisin rengini öğrenelim
    foreach($colors as $id => $rgb)
    {
        $res = imagecolorclosestalpha($im, $rgb[0], $rgb[1], $rgb[2], $rgb[3]);
        $res = imagecolorsforindex($im, $res);
        $res = "({$res['red']}, {$res['green']}, {$res['blue']}, {$res['alpha']})";

        echo "#$id: Aranan ($rgb[0], $rgb[1], $rgb[2], $rgb[3]); En yakın $res.\n";
    }

    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    #0: Aranan (254, 145, 154, 50); En yakın (252, 150, 148, 0).
    #1: Aranan (153, 145, 188, 127); En yakın (148, 150, 196, 0).
    #2: Aranan (153, 90, 145, 0); En yakın (148, 90, 156, 0).
    #3: Aranan (255, 137, 92, 84); En yakın (252, 150, 92, 0).

### Ayrıca Bakınız

- imagecolorexactalpha() - Alfası ile birlikte belirtilen rengin indisini verir
- imagecolorclosest() - Belirtilen rengin en yakın benzerinin indisini döndürür
- imagecolorclosesthwb() - En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini verir

# imagecolorclosesthwb

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecolorclosesthwb — En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini verir

### Açıklama

function imagecolorclosesthwb(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`
): int

Belirtilen resimdeki belirtilen renge en yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

### Dönen Değerler

En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorclosesthwb() örneği

    <?php
    $im = imagecreatefromgif('php.gif');

    echo 'HWB: ' . imagecolorclosesthwb($im, 116, 115, 152);

    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    HWB: 33

### Ayrıca Bakınız

- imagecolorclosest() - Belirtilen rengin en yakın benzerinin indisini döndürür

# imagecolordeallocate

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolordeallocate — Bir rengi tanımsız yapar

### Açıklama

function imagecolordeallocate(GdImage `$görüntü`, int `$renk`): bool

imagecolorallocate() veya imagecolorallocatealpha() ile tanımlanmış bir rengin tanıtıcısını siler.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`renk`

  Renk tanıtıcısı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolordeallocate() örneği

    <?php
    $beyaz = imagecolorallocate($im, 255, 255, 255);
    imagecolordeallocate($im, $beyaz);
    ?>

### Ayrıca Bakınız

- imagecolorallocate() - Bir görüntü için bir renk ayırır
- imagecolorallocatealpha() - Bir görüntü için alfa kanallı bir renk ayırır

# imagecolorexact

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorexact — Belirtilen rengin indisini döndürür

### Açıklama

function imagecolorexact(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`
): int

Paletli bir görüntüden belirtilen rengin indisini döndürür.

Görüntüyü bir dosyadan oluşturursanız sadece Görüntüde kullanılan renkler çözümlenir. Renklerin sadece bir palette bulunması durumunda bu çözümleme yapılmaz.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

### Dönen Değerler

Renk palette mevcut değilse -1, aksi takdirde rengin indisini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - GD logosunun renklerini öğrenelim

    <?php
    // Görüntüyü belirtelim
    $im = imagecreatefrompng('./gdlogo.png');

    $colors   = Array();
    $colors[] = imagecolorexact($im, 255, 0, 0);
    $colors[] = imagecolorexact($im, 0, 0, 0);
    $colors[] = imagecolorexact($im, 255, 255, 255);
    $colors[] = imagecolorexact($im, 100, 255, 52);

    print_r($colors);

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 16711680
        [1] => 0
        [2] => 16777215
        [3] => 6618932
    )

### Ayrıca Bakınız

- imagecolorclosest() - Belirtilen rengin en yakın benzerinin indisini döndürür

# imagecolorexactalpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecolorexactalpha — Alfası ile birlikte belirtilen rengin indisini verir

### Açıklama

function imagecolorexactalpha(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`,
int `$alfa`
): int

Bu işlev, alfası ile birlikte belirtilen rengin paletli görüntüdeki en yakın benzerinin indisini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

`alfa`

  0-127 arasında belirtilebilir. `0` tamamen mat, `127` ise tamamen şeffaf demektir.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Renk palette mevcut değilse -1, aksi takdirde rengin indisini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - GD logosunun renklerini öğrenelim

    <?php

    // Görüntüyü belirtelim
    $im = imagecreatefrompng('./gdlogo.png');

    $colors   = Array();
    $colors[] = imagecolorexactalpha($im, 255, 0, 0, 0);
    $colors[] = imagecolorexactalpha($im, 0, 0, 0, 127);
    $colors[] = imagecolorexactalpha($im, 255, 255, 255, 55);
    $colors[] = imagecolorexactalpha($im, 100, 255, 52, 20);

    print_r($colors);

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 16711680
        [1] => 2130706432
        [2] => 939524095
        [3] => 342163252
    )

### Ayrıca Bakınız

- imagecolorclosestalpha() - Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir

# imagecolormatch

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

imagecolormatch — Bir görüntünün paletli sürümünün renklerini gerçek renkli sürümünün renkleriyle aynı yapar

### Açıklama

function imagecolormatch(GdImage `$görüntü1`, GdImage `$görüntü2`): bool

Bir görüntünün paletli sürümünün renklerini gerçek renkli sürümünün renkleriyle aynı yapar.

### Bağımsız Değişkenler

`görüntü1`

  Gerçek renkli görüntü nesnesi.

`görüntü2`

  Renkleri `görüntü1` ile aynı yapılacak görüntü nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü1` ve `görüntü2` artık GdImage örneği; evvelce, resource türünde bir değer kabul edilirdi.

### Örnekler

Örnek 1 - imagecolormatch() örneği

    <?php
    // Gerçek renkli ve paletli görüntüleri belirtelim
    $im1 = imagecreatefrompng('./gdlogo.png');
    $im2 = imagecreate(imagesx($im1), imagesy($im1));

    // $im2'ye bir kaç renk ekleyelim
    $colors   = Array();
    $colors[] = imagecolorallocate($im2, 255, 36, 74);
    $colors[] = imagecolorallocate($im2, 40, 0, 240);
    $colors[] = imagecolorallocate($im2, 82, 100, 255);
    $colors[] = imagecolorallocate($im2, 84, 63, 44);

    // Bu renkleri gerçek renkli görüntüden güncelleyelim
    imagecolormatch($im1, $im2);

    // Belleği serbest bırakalım
    imagedestroy($im1);
    imagedestroy($im2);
    ?>

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur

# imagecolorresolve

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorresolve — Belirtilen rengin veya en yakın benzerinin indisini döndürür

### Açıklama

function imagecolorresolve(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`
): int

Bu işlev, belirtilen rengin kendisinin veya en yakın benzerinin indisini döndürür.

Görüntüyü bir dosyadan oluşturursanız sadece Görüntüde kullanılan renkler çözümlenir. Renklerin sadece bir palette bulunması durumunda bu çözümleme yapılmaz.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

### Dönen Değerler

Bir renk indisi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir görüntüdeki renkleri öğrenmek için imagecoloresolve() kullanımı

    <?php
    // Bir görüntü yükleyelim
    $im = imagecreatefromgif('http://docs.php.net/images/php.gif');

    // Görüntüden en yakın renkleri alalım
    $colors = array();
    $colors[] = imagecolorresolve($im, 255, 255, 255, 0);
    $colors[] = imagecolorresolve($im, 0, 0, 200, 127);

    // Sonucu çıktılayalım
    print_r($colors);

    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 89
        [1] => 85
    )

### Ayrıca Bakınız

- imagecolorclosest() - Belirtilen rengin en yakın benzerinin indisini döndürür

# imagecolorresolvealpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecolorresolvealpha — Alfası ile birlikte belirtilen rengin veya en yakın benzerinin renk indisini verir

### Açıklama

function imagecolorresolvealpha(
GdImage `$görüntü`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`,
int `$alfa`
): int

Bu işlev, alfası ile birlikte belirtilen rengin kendisinin veya en yakın benzerinin indisini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

`alfa`

  0-127 arasında belirtilebilir. `0` tamamen mat, `127` ise tamamen şeffaf demektir.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

### Dönen Değerler

Bir renk indisi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir görüntüdeki renkleri öğrenmek için imagecolorresolvealpha() kullanımı

    <?php
    // Bir görüntü yükleyelim
    $im = imagecreatefromgif('http://docs.php.net/images/php.gif');

    // Görüntüden en yakın rengi alalım
    $colors = array();
    $colors[] = imagecolorresolvealpha($im, 255, 255, 255, 0);
    $colors[] = imagecolorresolvealpha($im, 0, 0, 200, 127);

    // Output
    print_r($colors);

    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 89
        [1] => 85
    )

### Ayrıca Bakınız

- imagecolorclosestalpha() - Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir

# imagecolorset

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorset — Bir palet indisi için renk tanımlar

### Açıklama

function imagecolorset(
GdImage `$görüntü`,
int `$indis`,
int `$kırmızı`,
int `$yeşil`,
int `$mavi`,
int `$alfa` = 0
): ?false

Belirtilen palet indisine belirtilen rengi tanımlar. Bir paletli görüntünün renklerini boyama işlevlerini kullanmadan değiştirmek için yararlıdır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`indis`

  Palet içinde bir indis.

`kırmızı`

  Kırmızı bileşenin değeri.

`yeşil`

  Yeşil bileşenin değeri.

`mavi`

  Mavi bileşenin değeri.

`alpha`

  Alfa bileşeninin değeri.

### Dönen Değerler

Başarı durumunda `null`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorset() örneği

    <?php
    // 300x100 bir görüntü oluşturalım
    $im = imagecreate(300, 100);

    // Artalan rengi kırmızı olsun
    imagecolorallocate($im, 255, 0, 0);

    // Artalan renginin indisini alalım
    $bg = imagecolorat($im, 0, 0);

    // Artalan rengini mavi yapalım
    imagecolorset($im, $bg, 0, 0, 255);

    // Görüntüyü tarayıcıya gönderelim
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagecolorat() - Bir pikselin renk indisini döndürür

# imagecolorsforindex

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorsforindex — Bir renk indisinin renk bilgisini döndürür

### Açıklama

function imagecolorsforindex(GdImage `$görüntü`, int `$renk`): array

İndisi belirtilen rengi döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`renk`

  Renk indisi.

### Dönen Değerler

Belirtilen renk indisi ile ilişkili "red", "green", "blue" ve "alpha" (kırmızı, yeşil, mavi ve alfa) anahtarlarını içeren bir ilişkisel dizi döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | imagecolorsforindex() işlevi `renk` kapsam dışında ise artık ValueError istisnası oluşturuyor; evvelce bu durumda `false` dönerdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorsforindex() örneği

    <?php

    // Bir görüntü açalım
    $im = imagecreatefrompng('nexen.png');

    // Bir noktanın renk indisini alalım
    $start_x = 40;
    $start_y = 50;
    $color_index = imagecolorat($im, $start_x, $start_y);

    // Renk bilgisini insan okuyabilir biçeme dönüştürelim
    $color_tran = imagecolorsforindex($im, $color_index);

    // Sonucu görelim
    print_r($color_tran);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
       [red] => 226
       [green] => 222
       [blue] => 252
       [alpha] => 0
    )

### Ayrıca Bakınız

- imagecolorat() - Bir pikselin renk indisini döndürür
- imagecolorexact() - Belirtilen rengin indisini döndürür

# imagecolorstotal

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorstotal — Bir görüntü paletindeki renk sayısını döndürür

### Açıklama

function imagecolorstotal(GdImage `$görüntü`): int

Bir görüntü paletindeki renk sayısını döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

Paletli görüntüler için paletteki renk sayısını, gerçek renkli görüntüler için ise 0 döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagecolorstotal() örneği

    <?php
    // Görüntü dosyasını açalım
    $im = imagecreatefromgif('php.gif');

    echo 'Görüntüdeki toplam renk sayısı: ' . imagecolorstotal($im);

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Görüntüdeki toplam renk sayısı: 128

### Ayrıca Bakınız

- imagecolorat() - Bir pikselin renk indisini döndürür
- imagecolorsforindex() - Bir renk indisinin renk bilgisini döndürür
- imageistruecolor() - Bir görüntünün gerçek renkli olup olmadığını bulur

# imagecolortransparent

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolortransparent — Bir rengi şeffaflaştırır

### Açıklama

function imagecolortransparent(GdImage `$görüntü`, ?int `$renk` = `null`): int

Belirtilen resimde şeffaf rengi tanımlar veya döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Yeni (none belirtilmişse geçerli olan) şeffaf renk ile döner. `renk` `null` ise ve görüntüde şeffaf renk yoksa -1 döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | `renk` artık `null` olabiliyor.

### Örnekler

Örnek 1 - imagecolortransparent() örneği

    <?php
    // 55x30 bir görüntü oluşturalım
    $im = imagecreatetruecolor(55, 30);
    $red = imagecolorallocate($im, 255, 0, 0);
    $black = imagecolorallocate($im, 0, 0, 0);

    // Artalanı şeffaf yapalım
    imagecolortransparent($im, $black);

    // Kırmızı bir dökdörtgen çizelim
    imagefilledrectangle($im, 4, 4, 50, 25, $red);

    // Görüntüyü kaydedelim
    imagepng($im, './imagecolortransparent.png');
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> Şeffaflık sadece gerçek renkli görüntüler ve imagecopymerge() ile kopyalanır, paletli görüntüler ve imagecopy() ile kopyalanmaz.

> Bilginize:

> Şeffaflık bir görüntü özelliğidir, bir renk özelliği değildir. Bir rengin şeffaf olmasını isterseniz, görüntünün o bölgesi silinip şeffaf olarak yeniden çizilir.

# imageconvolution

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

imageconvolution — Bir konum ve katsayı ile 3x3'lük bir evrişim matrisini uygular

### Açıklama

function imageconvolution(
GdImage `$görüntü`,
array `$matris`,
float `$bölen`,
float `$konum`
): bool

Bir konum ve katsayı ile 3x3'lük bir evrişim matrisini uygular.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`matris`

  Bir 3x3 matris: üç gerçel sayı içeren üç diziden oluşmuş bir dizi.

`bölen`

  Normalleştirme için kullanılan evrişim sonucu böleni.

`konum`

  Renk konumu.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - PHP.net logosuna kabartma etkisi vermek

    <?php
    $image = imagecreatefromgif('http://www.php.net/images/php.gif');

    $emboss = array(array(2, 0, 0), array(0, -1, 0), array(0, 0, -1));
    imageconvolution($image, $emboss, 1, 127);

    header('Content-Type: image/png');
    imagepng($image, null, 9);
    ?>

Yukarıdaki örneğin çıktısı:

Örnek 2 - Gauss bulanıklığı

    <?php
    $image = imagecreatetruecolor(180,40);

    // Görüntüye bir yazı yazıp görüntüyü bulanıklaştıralım
    imagestring($image, 5, 10, 8, 'Gaussian Blur Text', 0x00ff00);
    $gaussian = array(array(1.0, 2.0, 1.0), array(2.0, 4.0, 2.0), array(1.0, 2.0, 1.0));
    imageconvolution($image, $gaussian, 16, 0);

    // Karşılaştırma için aynı metni tekrar yazalım
    imagestring($image, 5, 10, 18, 'Gaussian Blur Text', 0x00ff00);

    header('Content-Type: image/png');
    imagepng($image, null, 9);
    ?>

Yukarıdaki örneğin çıktısı:

### Ayrıca Bakınız

- imagefilter() - Bir görüntüye bir süzgeç uygular

# imagecopy

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecopy — Bir resim parçasını kopyalar

### Açıklama

function imagecopy(
GdImage `$hedef`,
GdImage `$kaynak`,
int `$hdf_x`,
int `$hdf_y`,
int `$kyn_x`,
int `$kyn_y`,
int `$kyn_gnş`,
int `$kyn_yks`
): bool

`hedef` resmin `hdf_x`, `hdf_y` noktasına `kaynak` resmin `kyn_x`, `kyn_y`, `kyn_gnş` ve `kyn_yks` ile belirlenen parçasını kopyalar.

### Bağımsız Değişkenler

`hedef`

  Görüntünün gönderileceği özkaynak.

`kaynak`

  Görüntünün alındığı özkaynak.

`hdf_x`

  Hedef resimdeki X koordinatı.

`hdf_y`

  Hedef resimdeki Y koordinatı.

`kyn_x`

  Kaynak resimdeki X koordinatı.

`kyn_x`

  Kaynak resimdeki Y koordinatı.

`kyn_gnş`

  Kaynak genişliği.

`kyn_yks`

  Kaynak yüksekliği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - PHP.net logosunun kırpılması

    <?php
    // Resim örneklerini oluşturalım
    $kaynak = imagecreatefromgif('php.gif');
    $hedef = imagecreatetruecolor(80, 40);

    // Kopyalayalım
    imagecopy($dest, $src, 0, 0, 20, 13, 80, 40);

    // Resmi çıktılayıp belleği serbest bırakalım
    header('Content-Type: image/gif');
    imagegif($hedef);

    imagedestroy($hedef);
    imagedestroy($kaynak);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecrop() - Görüntüyü belirtilen dikdörtgen ile kırpar

# imagecopymerge

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecopymerge — Bir görüntüyü kopyalar ve karıştırır

### Açıklama

function imagecopymerge(
GdImage `$hedef`,
GdImage `$kaynak`,
int `$hdf_x`,
int `$hdf_y`,
int `$kyn_x`,
int `$kyn_y`,
int `$kyn_gnş`,
int `$kyn_yks`,
int `$oran`
): bool

`hedef` görüntünün `hdf_x`, `hdf_y` noktasına `kaynak` görüntünün `kyn_x`, `kyn_y`, `kyn_gnş` ve `kyn_yks` ile belirlenen parçasını kopyalar.

### Bağımsız Değişkenler

`hedef`

  Görüntünün gönderileceği özkaynak.

`kaynak`

  Görüntünün alındığı özkaynak.

`hdf_x`

  Hedef görüntüdeki X koordinatı.

`hdf_y`

  Hedef görüntüdeki Y koordinatı.

`kyn_x`

  Kaynak görüntüdeki X koordinatı.

`kyn_x`

  Kaynak görüntüdeki Y koordinatı.

`kyn_gnş`

  Kaynak genişliği.

`kyn_yks`

  Kaynak yüksekliği.

`oran`

  0-100 arasında bir değer olup, iki görüntü bu şeffaflık oranına göre karıştırılır. 0 değeri için hiçbir ek işlem yapılmaz. 100 için ise, gerçek renkli görüntülere alfa şeffaflatması uygulanırken paletli görüntülere, alfa bileşenlerinin yok sayılması hariç, imagecopy() işlevindeki yaklaşım uygulanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - PHP.net logo'sunun iki kopyasının %75 şeffaflıkla karıştırılması

    <?php
    // Görüntü örneklerini oluşturalım
    $dest = imagecreatefromgif('php.gif');
    $src = imagecreatefromgif('php.gif');

    // Kopyalayıp karıştıralım
    imagecopymerge($dest, $src, 10, 10, 0, 0, 100, 47, 75);

    // Görüntüyü çıktılayıp belleği serbest bırakalım
    header('Content-Type: image/gif');
    imagegif($dest);

    imagedestroy($dest);
    imagedestroy($src);
    ?>

# imagecopymergegray

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecopymergegray — Bir görüntüyü kopyalar ve gri tonlama ile karıştırır

### Açıklama

function imagecopymergegray(
GdImage `$hedef`,
GdImage `$kaynak`,
int `$hdf_x`,
int `$hdf_y`,
int `$kyn_x`,
int `$kyn_y`,
int `$kyn_gnş`,
int `$kyn_yks`,
int `$oran`
): bool

`hedef` görüntünün `hdf_x`, `hdf_y` noktasına `kaynak` görüntünün `kyn_x`, `kyn_y`, `kyn_gnş` ve `kyn_yks` ile belirlenen parçasını kopyalar.

Kaynak pikselleri hedefe kopyalamadan önce gri tonlamaya dönüştürerek kaynak görüntünün renk sıcaklığını koruması dışında imagecopymerge() işlevi ile aynıdır.

### Bağımsız Değişkenler

`hedef`

  Görüntünün gönderileceği özkaynak.

`kaynak`

  Görüntünün alındığı özkaynak.

`hdf_x`

  Hedef görüntüdeki X koordinatı.

`hdf_y`

  Hedef görüntüdeki Y koordinatı.

`kyn_x`

  Kaynak görüntüdeki X koordinatı.

`kyn_x`

  Kaynak görüntüdeki Y koordinatı.

`kyn_gnş`

  Kaynak genişliği.

`kyn_yks`

  Kaynak yüksekliği.

`oran`

  0-100 arasında bir değer olup, iki görüntü bu şeffaflık oranına göre karıştırılır. 0 değeri için hiçbir ek işlem yapılmaz. 100 için ise, gerçek renkli görüntülere alfa şeffaflatması uygulanırken paletli görüntülere, alfa bileşenlerinin yok sayılması hariç, imagecopy() işlevindeki yaklaşım uygulanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - imagecopymergegray() örneği

    <?php
    // Görüntü örneklerini oluşturalım
    $dest = imagecreatefromgif('php.gif');
    $src = imagecreatefromgif('php.gif');

    // Kopyalayıp karıştıralım - Grilik = 20%
    imagecopymergegray($dest, $src, 10, 10, 0, 0, 100, 47, 20);

    // Görüntüyü çıktılayıp belleği serbest bırakalım
    header('Content-Type: image/gif');
    imagegif($dest);

    imagedestroy($dest);
    imagedestroy($src);
    ?>

# imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecopyresampled — Görüntünün bir parçasını örnekleyerek kopyalar ve boyutlandırır

### Açıklama

function imagecopyresampled(
GdImage `$hedef`,
GdImage `$kaynak`,
int `$hdf_x`,
int `$hdf_y`,
int `$kyn_x`,
int `$kyn_y`,
int `$hdf_gnş`,
int `$hdf_yks`,
int `$kyn_gnş`,
int `$kyn_yks`
): bool

imagecopyresampled() işlevi bir görüntü karesini boyutlandırarak başka bir görüntüye kopyalarken piksel renklerini ara değerlerle yumuşatarak görüntünün kalitesini korur.

Başka bir deyişle, imagecopyresampled() işlevi `kaynak` görüntünün `kyn_x`, `kyn_y` noktasından, `kyn_gnş` ve `kyn_yks` ile belirlenen parçasını alıp, `hedef` görüntünün `hdf_x`, `hdf_y` noktasında `hdf_gnş`, `hdf_yks` ile belirlenen parçasına yerleştirir.

Eğer kaynak ve hedef koordinatları ile genişlik ve yükseklikler farklıysa parça yerleştirilirken küçültülür veya büyütülür. Koordinatlar parçanın sol üst köşesini belirtir. Bu işlev aynı görüntünün içinde kopyalama yapmak amacıyla da kullanılabilir (`hedef` ve `kaynak` aynı ise), fakat parçaların üstüste gelmesi halinde sonuç belirsizdir.

### Bağımsız Değişkenler

`hedef`

  Görüntünün gönderileceği özkaynak.

`kaynak`

  Görüntünün alındığı özkaynak.

`hdf_x`

  Hedef görüntüdeki X koordinatı.

`hdf_y`

  Hedef görüntüdeki Y koordinatı.

`kyn_x`

  Kaynak görüntüdeki X koordinatı.

`kyn_y`

  Kaynak görüntüdeki Y koordinatı.

`hdf_gnş`

  Hedef görüntüdeki parça genişliği.

`hdf_yks`

  Hedef görüntüdeki parça yüksekliği.

`kyn_gnş`

  Kaynak genişliği.

`kyn_yks`

  Kaynak yüksekliği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - Basit örnek

Bu örnekte görüntü yarı boyutunda yeniden örneklenmektedir.

    <?php
    // Dosya ve yeni boyut
    $dosya = 'test.jpg';
    $oran = 0.5;

    // İçerik türü
    header('Content-type: image/jpeg');

    // Yeni resmin boyutları
    list($gen, $yük) = getimagesize($filename);
    $yenigen = $gen * $oran;
    $yeniyük = $yük * $oran;

    // Görüntüleri yükleyelim
    $hedef = imagecreatetruecolor($yeniger, $yeniyük);
    $kaynak = imagecreatefromjpeg($dosya);

    // Görüntüyü örnekleyelim
    imagecopyresampled($hedef, $kaynak, 0, 0, 0, 0, $yenigen, $yeniyük, $gen, $yük);

    // Görüntüyü çıktılayalım
    imagejpeg($image_p, null, 100);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 - Bir görüntünün orantılı olarak örneklenmesi

Bu örnekte görüntü 200 piksellik azami yükseklik ve genişlikle örneklenmektedir.

    <?php
    // Dosya
    $dosya = 'dnm.jpg';

    // Azami yükseklik ve genişlik
    $gen = 200;
    $yük = 200;

    // İçerik türü
    header('Content-type: image/jpeg');

    // Yeni boyutları hesaplayalım
    list($özgen, $özyük) = getimagesize($dosya);

    $özoran = $özgen/$özyük;

    if ($gen/$yük > $özoran) {
       $gen = $yük*$özoran;
    } else {
       $yük = $gen/$özoran;
    }

    // Görüntüyü örnekleyelim
    $hedef = imagecreatetruecolor($gen, $yük);
    $kaynak = imagecreatefromjpeg($dosya);
    imagecopyresampled($hedef, $kaynak, 0, 0, 0, 0, $gen, $yük, $özgen, $özyük);

    // Görüntüyü çıktılayalım
    imagejpeg($image_p, null, 100);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> Paletli görüntülerdeki sınırlama (255+1 renk) nedeniyle bir sorun vardır. Görüntüyü yeniden örneklerken veya süzerken 255'ten daha çok renk gerekir ve bu nedenle yeniden örneklenen piksel renkleri için bir yaklaşım uygulanır. Paletli görüntüde yeni renk için paletten bir yer ayrılmaya çalışılır, eğer bu işlem başarısız olursa (teorik olarak) o renge en yakın renk seçilir. Bu her zaman görsel olarak en yakın renk olmayabilir. Bunun sonucu olarak kısmen boş görüntüler gibi tuhaf sonuçlar alınabilir. Bu gibi sorunlarla karşılaşmamak için hedef görüntü olarak gerçek renkli (örneğin, imagecreatetruecolor() ile oluşturulmuş) bir görüntü kullanın.

### Ayrıca Bakınız

- imagecopyresized() - Görüntünün bir parçasını kopyalar ve boyutlandırır
- imagescale() - Görüntüyü belirtilen genişlik ve yüksekliği kullanarak oranlar
- imagecrop() - Görüntüyü belirtilen dikdörtgen ile kırpar

# imagecopyresized

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecopyresized — Görüntünün bir parçasını kopyalar ve boyutlandırır

### Açıklama

function imagecopyresized(
GdImage `$hedef`,
GdImage `$kaynak`,
int `$hdf_x`,
int `$hdf_y`,
int `$kyn_x`,
int `$kyn_y`,
int `$hdf_gnş`,
int `$hdf_yks`,
int `$kyn_gnş`,
int `$kyn_yks`
): bool

imagecopyresized() işlevi `kaynak` görüntünün bir bölümünü `hedef` görüntünün bir bölümüne sığacak şekilde boyutlandırarak kopyalar.

Başka bir deyişle, imagecopyresized() işlevi `kaynak` görüntünün `kyn_x`, `kyn_y` noktasından, `kyn_gnş` ve `kyn_yks` ile belirlenen parçasını alıp `hedef` görüntünün `hdf_x`, `hdf_y` noktasına `hdf_gnş`, `hdf_yks` ile belirlenen parçasına yerleştirir.

Eğer kaynak ve hedef koordinatları ile genişlik ve yükseklikler farklıysa parça yerleştirilirken küçültülür veya büyütülür. Koordinatlar parçanın sol üst köşesini belirtir. Bu işlev aynı görüntünün içinde kopyalama yapmak amacıyla da kullanılabilir (`hedef` ve `kaynak` aynı ise), fakat parçaların üstüste gelmesi halinde sonuç belirsizdir.

### Bağımsız Değişkenler

`hedef`

  Görüntünün gönderileceği özkaynak.

`kaynak`

  Görüntünün alındığı özkaynak.

`hdf_x`

  Hedef görüntüdeki X koordinatı.

`hdf_y`

  Hedef görüntüdeki Y koordinatı.

`kyn_x`

  Kaynak görüntüdeki X koordinatı.

`kyn_y`

  Kaynak görüntüdeki Y koordinatı.

`hdf_gnş`

  Hedef görüntüdeki parça genişliği.

`hdf_yks`

  Hedef görüntüdeki parça yüksekliği.

`kyn_gnş`

  Kaynak genişliği.

`kyn_yks`

  Kaynak yüksekliği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - Bir görüntünün boyutlandırılması

Bu örnekte görüntü yarı boyutunda gösterilmektedir.

    <?php
    // Dosya ve yeni boyut
    $dosya = 'test.jpg';
    $oran = 0.5;

    // İçerik türü
    header('Content-Type: image/jpeg');

    // Yeni görüntünün boyutları
    list($gen, $yük) = getimagesize($filename);
    $yenigen = $gen * $oran;
    $yeniyük = $yük * $oran;

    // Görüntüleri yükleyelim
    $hedef = imagecreatetruecolor($yeniger, $yeniyük);
    $kaynak = imagecreatefromjpeg($dosya);

    // Görüntüyü boyutlandıralım
    imagecopyresized($hedef, $kaynak, 0, 0, 0, 0, $yenigen, $yeniyük, $gen, $yük);

    // Görüntüyü çıktılayalım
    imagejpeg($hedef);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Görüntü yarı boyutunda çıktılanır ama imagecopyresampled() kullanılsaydı kalite daha iyi olurdu.

### Notlar

> Bilginize:

> Paletli görüntülerdeki sınırlama (255+1 renk) nedeniyle bir sorun vardır. Görüntüyü yeniden örneklerken veya süzerken 255'ten daha çok renk gerekir ve bu nedenle yeniden örneklenen piksel renkleri için bir yaklaşım uygulanır. Paletli görüntüde yeni renk için paletten bir yer ayrılmaya çalışılır, eğer bu işlem başarısız olursa (teorik olarak) o renge en yakın renk seçilir. Bu her zaman görsel olarak en yakın renk olmayabilir. Bunun sonucu olarak kısmen boş resimler gibi tuhaf sonuçlar alınabilir. Bu gibi sorunlarla karşılaşmamak için hedef görüntü olarak gerçek renkli (örneğin, imagecreatetruecolor() ile oluşturulmuş) bir görüntü kullanın.

### Ayrıca Bakınız

- imagecopyresampled() - Görüntünün bir parçasını örnekleyerek kopyalar ve boyutlandırır
- imagescale() - Görüntüyü belirtilen genişlik ve yüksekliği kullanarak oranlar
- imagecrop() - Görüntüyü belirtilen dikdörtgen ile kırpar

# imagecreate

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecreate — Yeni bir paletli görüntü oluşturur

### Açıklama

function imagecreate(int `$genişlik`, int `$yükseklik`): GdImage|false

imagecreate() işlevi, boyutları belirtilen boş görüntüyü oluşturur ve onun için bir görüntü tanıtıcısı döndürür.

Genel olarak, görüntü işlemenin mümkün olan en yüksek kalitede gerçekleşmesi için imagecreate() yerine imagecreatetruecolor() kullanılmasını öneririz. Bir palet görüntüsünün çıktısını almak istiyorsanız, görüntüyü imagepng() veya imagegif() ile kaydetmeden hemen önce imagetruecolortopalette() çağrılmalıdır.

### Bağımsız Değişkenler

`genişlik`

  Görüntünün genişliği.

`yükseklik`

  Görüntünün yüksekliği.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - Yeni bir GD görüntü akımı oluşturup bir görüntü çıktılamak

    <?php
    header("Content-type: image/png");
    $im = @imagecreate(110, 20)
        or die("GD görüntü akımı ilklendirilemedi");
    $artalan = imagecolorallocate($im, 0, 0, 0);
    $önalan = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  "A Simple Text String", $önalan);
    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagedestroy() - Bir görüntüyü bellekten siler
- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur

# imagecreatefromavif

(PHP 8 >= 8.1.0)

imagecreatefromavif — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromavif(string `$filename`): GdImage|false

imagecreatefromavif() returns an image object representing the image obtained from the given filename.

### Bağımsız Değişkenler

`filename`

  Path to the AVIF raster image.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

# imagecreatefrombmp

(PHP 7 >= 7.2.0, PHP 8)

imagecreatefrombmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefrombmp(string `$dosya`): GdImage|false

Belirtilen dosyadan sağlanan görüntü için GDImage nesnesi döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosya`

  BMP görüntüyü içeren dosyanın yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage örneği dönüyor; evvelce resource türünde bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefrombmp() ile BMP -> PNG dönüşümü

    <?php
    // BMP dosyayı yükle
    $im = imagecreatefrombmp('./example.bmp');

    // Öntanımlı değerlerle PNG dosyasına dönüştür
    imagepng($im, './example.png');
    imagedestroy($im);
    ?>

# imagecreatefromgd

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagecreatefromgd — Bir GD dosyasından veya URL'sinden yeni bir görüntü oluşturur

### Açıklama

function imagecreatefromgd(string `$dosyaismi`): GdImage|false

Dosya ismi verilen GD görüntüsünü betimleyen bir görüntü tanıtıcısı döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  GD görüntüsünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromgd() örneği

    <?php
    // Görüntüyü açmaya çalışalım
    $im = @imagecreatefromgd('./dnm.gd');

    // Başarılı oldu mu bakalım
    if(!$im)
    {
         die('Belirtilen GD görüntüsü yüklenemedi!');
    }

    // Görüntü üzerindeki işlemler burada

    // Görüntüyü kaydedelim
    imagegd($im, './guncel_dnm.gd');
    imagedestroy($im);
    ?>

### Notlar

Uyarı

GD ve GD2 görüntü biçemleri libgd'nin tescilli görüntü biçemleridir. Bunlar kullanımdan kalkmış kabul edilmeli, geliştirme ve deneme amacı dışında kullanılmamalıdır.

# imagecreatefromgd2

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagecreatefromgd2 — Bir GD2 dosyasından veya URL'sinden yeni bir görüntü oluşturur

### Açıklama

function imagecreatefromgd2(string `$dosyaismi`): GdImage|false

Dosya ismi verilen GD2 görüntüsünü betimleyen bir görüntü tanıtıcısı döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  GD2 görüntüsünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromgd2() örneği

    <?php
    // Görüntüyü açmaya çalışalım
    $im = imagecreatefromgd2('./dnm.gd2');

    // Görüntünün negatifini elde edelim
    if(function_exists('imagefilter'))
    {
        imagefilter($im, IMG_FILTER_NEGATE);
    }

    // Görüntüyü kaydedelim
    imagegd2($im, './guncel_dnm.gd2');
    imagedestroy($im);
    ?>

### Notlar

Uyarı

GD ve GD2 görüntü biçemleri libgd'nin tescilli görüntü biçemleridir. Bunlar kullanımdan kalkmış kabul edilmeli, geliştirme ve deneme amacı dışında kullanılmamalıdır.

# imagecreatefromgd2part

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagecreatefromgd2part — Bir GD2 parça dosyasından veya URL'sinden yeni bir görüntü oluşturur

### Açıklama

function imagecreatefromgd2part(
string `$dosyaismi`,
int `$X`,
int `$Y`,
int `$genişlik`,
int `$yükseklik`
): GdImage|false

Bir GD2 parça dosyasından veya URL'sinden yeni bir görüntü oluşturur.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  GD2 görüntüsünün dosya yolu.

`X`

  Parçanın X konumu.

`Y`

  Parçanın Y konumu.

`genişlik`

  Kaynak genişliği.

`yükseklik`

  Kaynak yüksekliği.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromgd2part() örneği

    <?php
    // Bu örnek için öncelikle görüntü boyutuna ihtiyacımız var
    $image = getimagesize('./dnm.gd2');

    // Parçanın örneğini oluşturalım
    $im = imagecreatefromgd2part('./dnm.gd2', 4, 4, ($image[0] / 2) - 6, ($image[1] / 2) - 6);

    // Görüntüye kabartma etkisi verelim
    if(function_exists('imagefilter'))
    {
        imagefilter($im, IMG_FILTER_EMBOSS);
    }

    // Görüntüyü kaydedelim
    imagegd2($im, './kabartma_dnm.gd2');
    imagedestroy($im);
    ?>

### Notlar

Uyarı

GD ve GD2 görüntü biçemleri libgd'nin tescilli görüntü biçemleridir. Bunlar kullanımdan kalkmış kabul edilmeli, geliştirme ve deneme amacı dışında kullanılmamalıdır.

# imagecreatefromgif

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecreatefromgif — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromgif(string `$dosyaismi`): GdImage|false

imagecreatefromgif() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü nesnesi döndürür.

Dikkat

GIF dosyaları belleğe okunurken görüntü nesnesinde yalnız ilk kare döner. Görüntü boyutunun getimagesize() tarafından bildirilen boyut olması gerekli değildir.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  GIF görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - Bir GIF yüklerken oluşan bir hatanın ele alınması

    <?php
    function GIFyükle($ad)
    {
        /* Görüntüyü açmaya çalışalım */
        $im = @imagecreatefromgif($ad);

        /* Başarılı oldu mu bakalım */
        if(!$im)
        {
            /* Boş bir resim oluşturalım */
            $im = imagecreatetruecolor (150, 30);
            $bgc = imagecolorallocate ($im, 255, 255, 255);
            $tc = imagecolorallocate ($im, 0, 0, 0);

            imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);

            /* Hata iletisini çıktılayalım */
            imagestring ($im, 1, 5, 5, $ad . ' yüklenirken hata oluştu', $tc);
        }

        return $im;
    }

    header('Content-Type: image/gif');

    $img = GIFyükle('bogus.image');

    imagegif($img);
    imagedestroy($img);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagecreatefromjpeg

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecreatefromjpeg — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromjpeg(string `$dosyaismi`): GdImage|false

imagecreatefromjpeg() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü nesnesi döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  JPEG görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - Bir JPEG yüklerken oluşan bir hatanın ele alınması

    <?php
    function JPEGyükle($ad)
    {
        /* Görüntüyü açmaya çalışalım */
        $im = @imagecreatefromjpeg($ad);

        /* Başarılı oldu mu bakalım */
        if(!$im)
        {
            /* Boş bir görüntü oluşturalım */
            $im  = imagecreatetruecolor (20, 20);
            $bgc = imagecolorallocate($im, 255, 255, 255);
            $tc  = imagecolorallocate($im, 0, 0, 0);

            imagefilledrectangle($im, 0, 0, 10, 10, $bgc);

            /* Hata iletisini çıktılayalım */
            imagestring($im, 1, 5, 5, $ad . ' yüklenirken hata oluştu', $tc);
        }

        return $im;
    }

    header('Content-Type: image/jpeg');

    $img = JPEGyükle('bogus.image');

    imagejpeg($img);
    imagedestroy($img);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagecreatefrompng

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecreatefrompng — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefrompng(string `$dosyaismi`): GdImage|false

imagecreatefrompng() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü tanıtıcısı döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  PNG görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - Bir PNG yüklerken oluşan bir hatanın ele alınması

    <?php
    function PNGyükle($ad)
    {
        /* Görüntüyü açmaya çalışalım */
        $im = @imagecreatefrompng($ad);

        /* Başarılı oldu mu bakalım */
        if(!$im)
        {
            /* Boş bir görüntü oluşturalım */
            $im  = imagecreatetruecolor (20, 20);
            $bgc = imagecolorallocate($im, 255, 255, 255);
            $tc  = imagecolorallocate($im, 0, 0, 0);

            imagefilledrectangle($im, 0, 0, 10, 10, $bgc);

            /* Hata iletisini çıktılayalım */
            imagestring($im, 1, 5, 5, $ad . ' yüklenirken hata oluştu', $tc);
        }

        return $im;
    }

    header('Content-Type: image/png');

    $img = PNGyükle('bozuk.görüntü');

    imagepng($img);
    imagedestroy($img);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagecreatefromstring

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

imagecreatefromstring — Belirtilen dizgeden yeni bir görüntü oluşturur

### Açıklama

function imagecreatefromstring(string `$veri`): GdImage|false

imagecreatefromstring() işleve `veri` ile belirtilen görüntü dizgesinden elde edilen görüntü için görüntü nesnesi döndürür. PHP desteklediği takdirde otomatik olaran algılanan dosya biçemleri: JPEG, PNG, GIF, BMP, WBMP, GD2, WEBP, ve AVIF.

### Bağımsız Değişkenler

`veri`

  Görüntü verisini içeren dizge.

### Dönen Değerler

Görüntü dosya biçemi desteklenmiyorsa, veri biçemi tanınmıyorsa veya görüntü bozuksa ya da yüklenemiyorsa `false` aksi takdirde görüntü nesnesini döndürür.

### Hatalar/İstisnalar

`veri` bilinmeyen bir biçemdeyse imagecreatefromstring() işlevi E_WARNING seviyesinde bir hata verir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.
7.3.0 | WEBP artık destekleniyor (kullanılan libgd destekliyorsa).

### Örnekler

Örnek 1 - imagecreatefromstring() örneği

    <?php
    $data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
           . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
           . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
           . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
    $data = base64_decode($data);

    $im = imagecreatefromstring($data);
    if ($im !== false) {
        header('Content-Type: image/png');
        imagepng($im);
        imagedestroy($im);
    }
    else {
        echo 'Bir hata oluştu.';
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecreatefromjpeg() - Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefrompng() - Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromgif() - Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur

# imagecreatefromtga

(PHP 7 >= 7.4.0, PHP 8)

imagecreatefromtga — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromtga(string `$dosya`): GdImage|false

imagecreatefromtga() belirtilen dosyadaki görüntünün GDImage nesnesini döndürür.

### Bağımsız Değişkenler

`dosya`

  Truevision TGA görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce bir özkaynak dönerdi.

# imagecreatefromwbmp

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecreatefromwbmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromwbmp(string `$dosyaismi`): GdImage|false

imagecreatefromwbmp() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü nesnesi döndürür.

> Bilginize: WBMP görüntüler Wireless bit eşlemlerdir, Windows bit eşlemler değildir. Windows bit eşlemler imagecreatefrombmp() ile yüklenir.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  WBMP görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - Bir WBMP yüklerken oluşan bir hatanın ele alınması

    <?php
    function WBMPyükle($ad)
    {
        /* Görüntüyü açmaya çalışalım */
        $im = @imagecreatefromwbmp($ad);

        /* Başarılı oldu mu bakalım */
        if(!$im)
        {
            /* Boş bir görüntü oluşturalım */
            $im  = imagecreatetruecolor(150, 30);
            $bgc = imagecolorallocate($im, 255, 255, 255);
            $tc  = imagecolorallocate($im, 0, 0, 0);

            imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

            /* Hata iletisini çıktılayalım */
            imagestring($im, 1, 5, 5, $ad . ' yüklenirken hata oluştu', $tc);
        }

        return $im;
    }

    header('Content-Type: image/vnd.wap.wbmp');

    $img = WBMPyükle('bozuk.görüntü');

    imagewbmp($img);
    imagedestroy($img);
    ?>

# imagecreatefromwebp

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

imagecreatefromwebp — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromwebp(string `$dosya`): GdImage|false

Belirtilen dosyadan sağlanan görüntü için GDImage nesnesi döndürür. Canlandırmalı WebP dosyalarının okunamayacağı dikkate alınmalıdır.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosya`

  WebP görüntüyü içeren dosyanın yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage örneği dönüyor; evvelce resource türünde bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromwebp() ile WebP -> JPEG dönüşümü

    <?php
    // WebP dosyasını yükle
    $im = imagecreatefromwebp('./example.webp');

    // %100 kalite ile jpeg dosyasına dönüştür
    imagejpeg($im, './example.jpeg', 100);
    imagedestroy($im);
    ?>

# imagecreatefromxbm

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecreatefromxbm — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromxbm(string `$dosyaismi`): GdImage|false

imagecreatefromxbm() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü tanıtıcısı döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  XBM görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromxbm() örneği

    <?php
    // XBM dosyasını yükleyelim
    $xbm = imagecreatefromxbm('./ornek.xbm');

    // Bir PNG dosyasına dönüştürelim
    imagepng($xbm, './ornek.png');
    imagedestroy($xbm);
    ?>

# imagecreatefromxpm

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagecreatefromxpm — Bir dosya veya URL'den yeni bir görüntü oluşturur.

### Açıklama

function imagecreatefromxpm(string `$dosyaismi`): GdImage|false

imagecreatefromxpm() işlevi dosya ismi verilen görüntüyü betimleyen bir görüntü nesnesi döndürür.

İpucu

fopen sarmalayıcıları etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir. Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için fopen() işlevine bakılabilir. Sarmalayıcıların neler yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.

### Bağımsız Değişkenler

`dosyaismi`

  XPM görüntünün dosya yolu.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 - imagecreatefromxpm() örneği

    <?php
    // XPM desteği var mı, bakalım
    if(!(imagetypes() & IMG_XPM))
    {
        die('XPM desteği yok!');
    }

    // Görüntünün bir örneğini oluşturalım
    $xpm = imagecreatefromxpm('./ornek.xpm');

    // Burada görüntü üzerinde bazı işlemler yapalım

    // PHP'de XPM görüntüleri yazmak için destek bulunmadığından
    // resmi %100 kalite ile bir JPEG olarak kaydedeceğiz.
    imagejpeg($im, './ornek.jpg', 100);
    imagedestroy($im);
    ?>

# imagecreatetruecolor

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecreatetruecolor — Yeni bir gerçek renkli görüntü oluşturur

### Açıklama

function imagecreatetruecolor(int `$genişlik`, int `$yükseklik`): GdImage|false

imagecreatetruecolor() işlevi boyutları belirtilen siyah bir görüntü oluşturur ve onun için bir görüntü nesnesi döndürür.

### Bağımsız Değişkenler

`genişlik`

  Görüntü genişliği.

`yükseklik`

  Görüntü yüksekliği.

### Dönen Değerler

Başarı durumunda görüntü nesnesi, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.

### Örnekler

Örnek 1 Yeni bir GD2 görüntü akımı oluşturup bir görüntü çıktılamak

    <?php
    header ('Content-Type: image/png');
    $im = @imagecreatetruecolor(120, 20)
          or die('GD2 görüntü akımı ilklendirilemedi');
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagedestroy() - Bir görüntüyü bellekten siler
- imagecreate() - Yeni bir paletli görüntü oluşturur

# imagecrop

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagecrop — Görüntüyü belirtilen dikdörtgen ile kırpar

### Açıklama

function imagecrop(GdImage `$görüntü`, array `$dikdörtgen`): GdImage|false

`görüntü`yü belirtilen `dikdörtgen` ile kırpar ve bir GDImage nesnesi olarak döndürür. Belirtilen `görüntü` olduğu gibi bırakılır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dikdörtgen`

  `x`, `y`, `width` ve `height` anahtarlı bir dizi.

### Dönen Değerler

Başarı durumunda kırpılmış GDImage nesnesi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | Başarı durumunda artık GDImage örneği dönüyor; evvelce resource türünde bir değer dönerdi.

### Örnekler

Örnek 1 - imagecrop() örneği

Bu örnekte bir görüntü belirtilen dikdörtgen ile kırpılmaktadır.

    <?php
    $im = imagecreatefrompng('example.png');
    $size = min(imagesx($im), imagesy($im));
    $im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $size, 'height' => $size]);
    if ($im2 !== FALSE) {
        imagepng($im2, 'example-cropped.png');
        imagedestroy($im2);
    }
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagecropauto() - Mevcut kiplerden birini kullanarak görüntüyü otomatik olarak kırpar

# imagecropauto

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagecropauto — Mevcut kiplerden birini kullanarak görüntüyü otomatik olarak kırpar

### Açıklama

function imagecropauto(
GdImage `$görüntü`,
int `$kip` = `IMG_CROP_DEFAULT`,
float `$eşik` = 0.5,
int `$rnek` = -1
): GdImage|false

Belirtilen `kip` kullanılarak görüntü otomatik olarak kırpılır ve GDImage nesnesi olarak döndürülür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kip`

  Aşağıdaki sabitlerden biri olmalıdır:

  `IMG_CROP_DEFAULT`
    `IMG_CROP_TRANSPARENT` ile aynıdır. PHP 7.4.0 öncesinde, görüntü şeffaf renge sahip değilse, libgd `IMG_CROP_SIDES` sabitini kullanırdı.
  `IMG_CROP_TRANSPARENT`
    Şeffaf artalan ile kırpar.
  `IMG_CROP_BLACK`
    Siyah artalan ile kırpar.
  `IMG_CROP_WHITE`
    Beyaz artalan ile kırpar.
  `IMG_CROP_SIDES`
    Kırpma artalanını belirlemek için görüntünün 4 köşesi kullanılır.
  `IMG_CROP_THRESHOLD`
    Görüntü, belirtilen `eşik` ve `renk` değerleri kullanılarak kırpılır.
`eşik`

  Görüntü rengini ve kırpılacak rengi karşılaştırırken kullanılacak tolerans yüzde olarak belirtilir. Renk farkını hesaplamak için kullanılan yöntem, RGB(a) küpündeki renk mesafesine dayanmaktadır.

  Sadece `IMG_CROP_THRESHOLD` kipinde kullanılır.

  > Bilginize: PHP 7.4.0 öncesinde, PHP paketinde gelen libgd biraz farklı bir algoritma kullanıyordu, bu nedenle aynı `eşik`, sistem ve paketli libgd için farklı sonuçlar veriyordu.

`renk`

  Bir RGB renk değeri veya bir palet indisi.

  Sadece `IMG_CROP_THRESHOLD` kipinde kullanılır.

### Dönen Değerler

Başarı durumunda kırpılmış GDImage nesnesi, başarısızlık durumunda `false` döner. Görüntünün tamamı kırpılmışsa işlev `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | Başarı durumunda artık GDImage örneği dönüyor; evvelce resource türünde bir değer dönerdi.
7.4.0 | PHP paketinde gelen libgd'nin sistem libgd'si ile aynı eşik kırpma algoritmasını kullanması sağlandı. Böylece artık libgd `IMG_CROP_DEFAULT` sabitinden `IMG_CROP_SIDES` sabitine geri düşmüyor.
7.4.0 | `kip` için öntanımlı değer `IMG_CROP_AUTO` oldu. Evvelce, `IMG_CROP_DEFAULT` sabitine denk gelen `-1` idi. Ancak, artık `-1` belirtilmesi önerilmiyor.

### Örnekler

Örnek 1 - Otomatik kırpmanın doğru kullanımı

Dönen Değerler bölümünde belirtildiği gibi, görüntünün tamamı kırpılmışsa imagecropauto() `false` değerini döndürmektedir. Bu örnekte, yalnızca kırpılacak bir şey varsa $im otomatik olarak kırpılmaktadır; aksi takdirde özgün görüntü ile devam edilmektedir.

    <?php
    $cropped = imagecropauto($im, IMG_CROP_DEFAULT);
    if ($cropped !== false) { // yeni bir nesne dönmüşse
        imagedestroy($im);    // özgün görüntüyü yok et
        $im = $cropped;       // kırpılmış görüntüyü $im'e ata
    }
    ?>

### Ayrıca Bakınız

- imagecrop() - Görüntüyü belirtilen dikdörtgen ile kırpar

# imagedashedline

(PHP 4, PHP 5, PHP 7, PHP 8)

imagedashedline — Kesikli çizgi çizer

### Açıklama

function imagedashedline(
GdImage `$görüntü`,
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`,
int `$renk`
): bool

Bu işlevin kullanımı önerilmemektedir. Yerine imagesetstyle() ve imageline() çiftini kullanın.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x1`

  Sol üst köşenin X konumu.

`y1`

  Sol üst köşenin Y konumu. Görüntünün sol üst köşesinin koordinatları 0, 0'dır.

`x2`

  Sağ alt köşenin X konumu.

`y2`

  Sağ alt köşenin Y konumu.

`renk`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagedashedline() örneği

    <?php
    // 100x100 bir tuval oluşturalım
    $im = imagecreatetruecolor(100, 100);
    $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

    // Dikine bir kesikli çizgi çizelim
    imagedashedline($im, 50, 25, 50, 75, $white);

    // Görüntüyü kaydedelim
    imagepng($im, './dashedline.png');
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 - Başka bir imagedashedline() örneği

    <?php
    // 100x100 bir tuval oluşturalım
    $im = imagecreatetruecolor(100, 100);
    $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

    // Çizgi tarzını taımlayalım: İlk dört piksel beyaz,
    // sonraki dört piksel renksiz. Bu, kesikli çizgi etkisi verir.
    $style = Array(
                    $white,
                    $white,
                    $white,
                    $white,
                    IMG_COLOR_TRANSPARENT,
                    IMG_COLOR_TRANSPARENT,
                    IMG_COLOR_TRANSPARENT,
                    IMG_COLOR_TRANSPARENT
                    );

    imagesetstyle($im, $style);

    // Kesikli çizgimizi çizelim
    imageline($im, 50, 25, 50, 75, IMG_COLOR_STYLED);

    // Görüntüyü kaydedelim
    imagepng($im, './imageline.png');
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagesetstyle() - Çizgi tarzını ayarlar
- imageline() - Bir çizgi çizer

# imagedestroy

(PHP 4, PHP 5, PHP 7, PHP 8)

imagedestroy — Bir görüntüyü bellekten siler

### Açıklama

function imagedestroy(GdImage `$görüntü`): bool

> Bilginize:

> Bu işlevin bir etkisi yoktur. PHP 8.0.0 öncesinde, bu işev özkaynağı kapatmak için kullanılırdı.

PHP 8.0.0 öncesinde, imagedestroy() işlevi `görüntü` için ayrılan belleği serbest bırakırdı.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Bu işlev artık hiçbir şey yapmıyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - PHP 8.0.0 öncesinde imagedestroy() örneği

    <?php
    // 100 x 100 bir tuval oluşturalım
    $im = imagecreatetruecolor(100, 100);

    // Üzerinde işlem yapalım ve kaydedelim

    // İşimiz bitince görüntüye ayrılan belleği serbest bırakalım
    imagedestroy($im);
    ?>

# imageellipse

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imageellipse — Bir elips çizer

### Açıklama

function imageellipse(
GdImage `$görüntü`,
int `$merkez_x`,
int `$merkez_y`,
int `$genişlik`,
int `$yükseklik`,
int `$renk`
): bool

Belirtilen koordinatlar merkez olmak üzere bir elips çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`mx`

  Merkezin X konumu.

`my`

  Merkezin Y konumu.

`genişlik`

  Elipsin genişliği.

`yükseklik`

  Elipsin yüksekliği.

`renk`

  Elipsin rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imageellipse() örneği

    <?php

    // Boş bir görüntü oluşturalım.
    $image = imagecreatetruecolor(400, 300);

    // Artalan rengini seçelim.
    $bg = imagecolorallocate($image, 0, 0, 0);

    // Artalanı seçtiğimiz renge boyayalım.
    imagefill($image, 0, 0, $bg);

    // Elips için bir renk seçelim.
    $col_ellipse = imagecolorallocate($image, 255, 255, 255);

    // Elipsi çizelim.
    imageellipse($image, 200, 150, 300, 200, $col_ellipse);

    // Görüntüyü çıktılayalım.
    header("Content-Type: image/png");
    imagepng($image);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> imageellipse() işlevi imagesetthickness() işlevini yoksayar.

### Ayrıca Bakınız

- imagefilledellipse() - İçi dolu bir elips çizer
- imagearc() - Bir yay çizer

# imagefill

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefill — Görüntüyü boyar

### Açıklama

function imagefill(
GdImage `$görüntü`,
int `$x`,
int `$y`,
int `$renk`
): bool

Belirtilen koordinattan başlayarak (görüntünün üst sol köşesi 0.0'dır) belirtilen görüntüyü `renk` ile boyar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x`

  Başlangıç noktasının X konumu.

`y`

  Başlangıç noktasının Y konumu.

`renk`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagefill() örneği

    <?php

    $im = imagecreatetruecolor(100, 100);

    // artalan rengi kırmızı olsun
    $renk = imagecolorallocate($im, 255, 0, 0);
    imagefill($im, 0, 0, $renk);

    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecolorallocate() - Bir görüntü için bir renk ayırır

# imagefilledarc

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagefilledarc — Bir yay çizer ve içini doldurur

### Açıklama

function imagefilledarc(
GdImage `$görüntü`,
int `$merkez_x`,
int `$merkez_y`,
int `$genişlik`,
int `$yükseklik`,
int `$ilk_açı`,
int `$son_açı`,
int `$renk`,
int `$tarz`
): bool

Belirtiren `görüntü` üzerinde merkez koordinatları verilen yay parçasını çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`merkez_x`

  Merkezin X konumu.

`merkez_y`

  Merkezin Y konumu.

`genişlik`

  Yay genişliği.

`yükseklik`

  Yay yüksekliği.

`ilk_açı`

  Derece cinsinden yayın başlangıç açısı.

`son_açı`

  Derece cinsinden yayın bitiş açısı. 0° saat 3 konumu olup yay saat yönünde çizilir.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

`tarz`

  Aşağıdaki olasılıklar bitsel VEYAlanarak belirtilir:

  1. `IMG_ARC_PIE`
  2. `IMG_ARC_CHORD`
  3. `IMG_ARC_NOFILL`
  4. `IMG_ARC_EDGED`
  `IMG_ARC_PIE` ve `IMG_ARC_CHORD` sabitleri birlikte kullanılamaz. `IMG_ARC_CHORD` yayın başlangıç ve bitişini düz bir çizgiyle birleştirir (yay kirişi). `IMG_ARC_PIE` bir pasta dilimi üretir. `IMG_ARC_NOFILL` yayın ve kirişin sadece çizileceğini, içinin doldurulmayacağını belirtir. `IMG_ARC_EDGED` ile `IMG_ARC_NOFILL` birlikte yayın başlangıç ve bitişinin merkeze bir doğru ile birleştirileceğini belirtir; bu içi boş bir yay dilimini göstermenin en iyi yoludur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - 3 boyutlu bir pasta oluşturmak

    <?php

    // Tuvalimizi oluşturalım
    $image = imagecreatetruecolor(100, 100);

    // renkleri ayıralım
    $beyaz    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
    $gri      = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
    $koyugri  = imagecolorallocate($image, 0x90, 0x90, 0x90);
    $mavi     = imagecolorallocate($image, 0x00, 0x00, 0x80);
    $lacivert = imagecolorallocate($image, 0x00, 0x00, 0x50);
    $kırmızı  = imagecolorallocate($image, 0xFF, 0x00, 0x00);
    $kahve    = imagecolorallocate($image, 0x90, 0x00, 0x00);

    // 3D etkisi oluşturalım
    for ($i = 60; $i > 50; $i--) {
       imagefilledarc($image, 50, $i, 100, 50, 0, 45, $lacivert, IMG_ARC_PIE);
       imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $lacivert, IMG_ARC_PIE);
       imagefilledarc($image, 50, $i, 100, 50, 75, 360 , $kahve, IMG_ARC_PIE);
    }

    imagefilledarc($image, 50, 50, 100, 50, 0, 45, $mavi, IMG_ARC_PIE);
    imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $gri, IMG_ARC_PIE);
    imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $kırmızı, IMG_ARC_PIE);

    // Görüntüyü çıktılayalım
    header('Content-type: image/png');
    imagepng($image);
    imagedestroy($image);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagefilledellipse

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagefilledellipse — İçi dolu bir elips çizer

### Açıklama

function imagefilledellipse(
GdImage `$görüntü`,
int `$merkez_x`,
int `$merkez_y`,
int `$genişlik`,
int `$yükseklik`,
int `$renk`
): bool

Belirtiren `görüntü` üzerinde merkez koordinatları verilen içi dolu elipsi çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`merkez_x`

  Merkezin X konumu.

`merkez_y`

  Merkezin Y konumu.

`genişlik`

  Elipsin genişliği.

`yükseklik`

  Elipsin yüksekliği.

`renk`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagefilledellipse() örneği

    <?php

    // Tuvalimizi oluşturalım
    $image = imagecreatetruecolor(400, 300);

    // Artalan rengini seçelim
    $bg = imagecolorallocate($image, 0, 0, 0);

    // Elipsin rengini seçelim
    $beyaz = imagecolorallocate($image, 255, 255, 255);

    // Beyaz elipsi çizelim
    imagefilledellipse($image, 200, 150, 300, 200, $beyaz);

    // Görüntüyü çıktılayalım
    header("Content-Type: image/png");
    imagepng($image);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> imagefilledellipse() işlevi imagesetthickness() işlevini yoksayar.

### Ayrıca Bakınız

- imageellipse() - Bir elips çizer
- imagefilledarc() - Bir yay çizer ve içini doldurur

# imagefilledpolygon

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefilledpolygon — İçi dolu bir çokgen çizer

### Açıklama

PHP 8.0.0 ve üstü için sözdizimi (isimli bağımsız değişkenler desteklenmez)

function imagefilledpolygon(GdImage `$görüntü`, array `$noktalar`, int `$renk`): bool

Diğer sözdizimi (PHP 8.1.0 ve sonrası için önerilmiyor)

function imagefilledpolygon(
GdImage `$görüntü`,
array `$noktalar`,
int `$nokta_sayısı`,
int `$renk`
): bool

imagefilledpolygon() belirtilen `görüntü` üzerinde içi dolu bir çokgen çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`noktalar`

  Çokgeni oluşturan kırık çizginin kırılma noktalarının `x` ve `y` koordinatlarını çizilme sırasıyla içeren dizi.

`nokta_sayısı`

  Kırılma noktalarının sayısı; en az 3 olmalıdır.

  İkinci sözdizimindeki gibi bu bağımsız değişken atlanırsa, `noktalar` çift sayıda öğeye sahip olmalı ve `nokta_sayısı`nın `count($noktalar)/2` olduğu varsayılmalıdır.
`renk`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `nokta_sayısı` bağımsız değişkeninin kullanımı artık önerilmiyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagefilledpolygon() örneği

    <?php
    // Kırık çizginin kırılma noktalarını içeren dizi
    $values = array(
                40,  50,  // Nokta 1 (x, y)
                20,  240, // Nokta 2 (x, y)
                60,  60,  // Nokta 3 (x, y)
                240, 20,  // Nokta 4 (x, y)
                50,  40,  // Nokta 5 (x, y)
                10,  10   // Nokta 6 (x, y)
                );

    // Tuvalimizi oluşturalım
    $image = imagecreatetruecolor(250, 250);

    // renkleri seçelim
    $bg   = imagecolorallocate($image, 0, 0, 0);
    $mavi = imagecolorallocate($image, 0, 0, 255);

    // artalanı boyayalım
    imagefilledrectangle($image, 0, 0, 249, 249, $bg);

    // çokgeni çizelim
    imagefilledpolygon($image, $values, 6, $mavi);

    // görüntüyü çıktılayalım.
    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagepolygon() - Çokgen çizer

# imagefilledrectangle

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefilledrectangle — İçi dolu bir dikdörtgen çizer

### Açıklama

function imagefilledrectangle(
GdImage `$görüntü`,
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`,
int `$renk`
): bool

Belirtiren `görüntü` üzerinde başlangıç ve bitiş koordinatları verilen dikdörtgeni `renk` ile boyayarak çizer. Resmin sol üst köşesinin koordinatları 0,0'dır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x1`

  1. noktanın X konumu

`y1`

  1. noktanın Y konumu.

`x2`

  2. noktanın X konumu

`y2`

  2. noktanın Y konumu

`renk`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagefilledrectangle() örneği

    <?php
    // Bir tuval oluşturalım
    $im = imagecreatetruecolor(55, 30);
    $beyaz = imagecolorallocate($im, 255, 255, 255);

    // Beyaz bir dikdörtgen çizelim
    imagefilledrectangle($im, 4, 4, 50, 25, $beyaz);

    // görüntüyü kaydedelim
    imagepng($im, './beyazdikdortgenresmi.png');
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagefilltoborder

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefilltoborder — Belli bir bölgeyi belli bir renge boyar

### Açıklama

function imagefilltoborder(
GdImage `$görüntü`,
int `$x`,
int `$y`,
int `$kenar_rengi`,
int `$dolgu`
): bool

imagefilltoborder() işlevi sınırları `kenar_rengi` ile tanımlanmış bir bölgeyi `dolgu` renginde boyar. Doldurma işleminin başlangıç noktası `x` ve `y` ile belirtilir. Resmin sol üst köşesinin koordinatları 0,0'dır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x`

  Başlangıç noktasının X konumu.

`y`

  Başlangıç noktasının Y konumu.

`kenar_rengi`

  Kenar rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

`dolgu`

  Dolgu rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir elipsi belli bir renge boyamak

    <?php
    // Tuvalimizi oluşturup artalan rengini beyaz yapalım
    $im = imagecreatetruecolor(100, 100);
    imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));

    // Siyah kalemle bir elips çizelim
    imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));

    // Kenar ve dolgu renklerini belirleyelim
    $kenar = imagecolorallocate($im, 0, 0, 0);
    $dolgu = imagecolorallocate($im, 255, 0, 0);

    // Kenar rengine göre belirlenen kapalı alanı boyayalım
    imagefilltoborder($im, 50, 50, $kenar, $dolgu);

    // Görüntüyü çıktılayıp belleği serbest bırakalım
    header('Content-type: image/png');
    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

Algoritma, hangi piksellerin önceden ayarlandığını açıkça hatırlamaz, bunun yerine pikselin renginden bunu çıkarır, bu nedenle yeni ayarlanmış pikseller ile zaten orada olan pikseller arasında ayrım yapamaz. Bu, görüntüde halihazırda kullanılan herhangi bir dolgu renginin seçilmesinin istenmeyen sonuçlara yol açabileceği anlamına gelir.

# imagefilter

(PHP 5, PHP 7, PHP 8)

imagefilter — Bir görüntüye bir süzgeç uygular

### Açıklama

function imagefilter(GdImage `$image`, int `$süzgeç`, array|int|float|bool `...$seçenekler`): bool

imagefilter() işlevi, türü `süzgeç` ile belirtilen süzgeci `görüntü`ye uygular.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`süzgeç`

  `süzgeç` şunlardan biri olabilir:

  - `IMG_FILTER_NEGATE`: Görüntüdeki tüm renkleri zıt renge dönüştürür.
  - `IMG_FILTER_GRAYSCALE`: Görüntüyü gri tonlamalı hale getirir. REC.601 luma (Y') hesaplamasındaki katsayılar kullanılarak kırmızı, yeşil ve mavi bileşenlerin ağırlıklı ortalamalarından gri tonlama elde edilir.
  - `IMG_FILTER_BRIGHTNESS`: Görüntünün parlaklığını değiştirir. Parlaklık seviyesini belirtmek için `seçenekler[0]` bağımsız değişkenini kullanın. Parlaklık -255 ile 255 arasındadır.
  - `IMG_FILTER_CONTRAST`: Görüntünün karşıtlık seviyesini değiştirir. Karşıtlık seviyesini belirtmek için `seçenekler[0]` bağımsız değişkenini kullanın.
  - `IMG_FILTER_COLORIZE`: Rengi sizin belirtmeniz dışında `IMG_FILTER_GRAYSCALE` gibidir. Kırmızı, yeşil ve mavi renk seviyeleri belirtmek için sırayla `seçenekler[0]`, `seçenekler[1]` ve `seçenekler[2]` bağımsız değişkenlerini, alfa kanalı için de `seçenekler[3]` bağımsız değişkenini kullanın. Ana renklerin seviyesi 0 ile 255 arasında belirtilebilir.
  - `IMG_FILTER_EDGEDETECT`: Görüntünün kenarlarını vurgulamak için kenar algılaması kullanılır.
  - `IMG_FILTER_EMBOSS`: Görüntüye kabartma uygular.
  - `IMG_FILTER_GAUSSIAN_BLUR`: Görüntüyü Gauss yöntemiyle bulanıklaştırır.
  - `IMG_FILTER_SELECTIVE_BLUR`: Görüntüyü bulanıklaştırır.
  - `IMG_FILTER_MEAN_REMOVAL`: Karalama taslak etkisi oluşturmak için silme işlemi uygular.
  - `IMG_FILTER_SMOOTH`: Görüntünün sert hatlarını yumuşatır. Yumuşatma seviyesini belirtmek için `seçenekler[0]` bağımsız değişkenini kullanın.
  - `IMG_FILTER_PIXELATE`: Görüntüye mozaik etkisi verir. Mozaik boyutu için `seçenekler[0]` mozaik etki kipini belirtmek için `seçenekler[1]` bağımsız değişkenini kullanın.
  - `IMG_FILTER_SCATTER`: Görüntüye saçılma etkisi verir, etki gücünü tanımlamak için `seçenekler[0]` ve `seçenekler[1]`'i ve yalnızca seçili piksel renklerini uygulamak için `seçenekler[2]`'yi kullanın.
`seçenekler[0]`

  - `IMG_FILTER_BRIGHTNESS`: Parlaklık seviyesi.
  - `IMG_FILTER_CONTRAST`: Karşıtlık seviyesi.
  - `IMG_FILTER_COLORIZE`: Kırmızı bileşenin değeri.
  - `IMG_FILTER_SMOOTH`: Yumuşatma seviyesi.
  - `IMG_FILTER_PIXELATE`: Piksel cinsinden mozaik boyu.
  - `IMG_FILTER_SCATTER`: Etki eksiltme seviyesi. Bu, `seçenekler[1]` ile ayarlanan toplama seviyesinden daha yüksek veya ona eşit olmamalıdır.
`seçenekler[1]`

  - `IMG_FILTER_COLORIZE`: Yeşil bileşenin değeri.
  - `IMG_FILTER_PIXELATE`: Gelişkin mozaik etkisinin kullanılıp kullanılmayacağı (`false` öntanımlıdır).
  - `IMG_FILTER_SCATTER`: Etki toplama seviyesi.
`seçenekler[2]`

  - `IMG_FILTER_COLORIZE`: Mavi bileşenin değeri.
  - `IMG_FILTER_SCATTER`: Etkiyi uygulamak için isteğe bağlı dizi indisli renk değerleri.
`seçenekler[3]`

  - `IMG_FILTER_COLORIZE`: Alfa kanalı. 0-127 arasında belirtilebilir. 0 tamamen mat, 127 ise tamamen şeffaf demektir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
7.4.0 | Saçılma desteği (`IMG_FILTER_SCATTER`) eklendi.

### Örnekler

Örnek 1 - imagefilter() gri tonlama örneği

    <?php
    $im = imagecreatefrompng('dave.png');

    if($im && imagefilter($im, IMG_FILTER_GRAYSCALE))
    {
        echo 'Görüntüye gri tonlama uygulandı.';

        imagepng($im, 'dave.png');
    }
    else
    {
        echo 'Görüntüye gri tonlama uygulanamadı.';
    }

    imagedestroy($im);
    ?>

Örnek 2 - imagefilter() parlaklık örneği

    <?php
    $im = imagecreatefrompng('sean.png');

    if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20))
    {
        echo 'Görüntünün parlaklığı değişti.';

        imagepng($im, 'sean.png');
        imagedestroy($im);
    }
    else
    {
        echo 'Görüntünün parlaklığı değiştirilemedi.';
    }
    ?>

Örnek 3 - imagefilter() renklendirme örneği

    <?php
    $im = imagecreatefrompng('philip.png');

    /* K, Y, M olarak 0, 255, 0 yeşildir */
    if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
    {
        echo 'Görüntü yeşertildi.';

        imagepng($im, 'philip.png');
        imagedestroy($im);
    }
    else
    {
        echo 'Görüntü yeşertilemedi.';
    }
    ?>

Örnek 4 imagefilter() negatiflik örneği

    <?php
    // İşlevin taşınabilir olması için, yani imagefilter() kullanamadığımız
    // durumlar için kendi negatiflik işlevimizi yazalım
    function negate($im)
    {
        if(function_exists('imagefilter'))
        {
            return imagefilter($im, IMG_FILTER_NEGATE);
        }

        for($x = 0; $x < imagesx($im); ++$x)
        {
            for($y = 0; $y < imagesy($im); ++$y)
            {
                $index = imagecolorat($im, $x, $y);
                $rgb = imagecolorsforindex($index);
                $color = imagecolorallocate($im, 255 - $rgb['red'],
                           255 - $rgb['green'], 255 - $rgb['blue']);

                imagesetpixel($im, $x, $y, $color);
            }
        }

        return(true);
    }

    $im = imagecreatefromjpeg('kalle.jpg');

    if($im && negate($im))
    {
        echo 'Görüntünün negatifi başarıyla elde edildi.';

        imagejpeg($im, 'kalle.jpg', 100);
        imagedestroy($im);
    }
    else
    {
        echo 'Görüntünün negatifi elde edilemedi.';
    }
    ?>

Örnek 5 imagefilter() mozaikleştirme örneği

    <?php
    // PHP logosunu yükleyelim, farkları göstermek için bize iki görüntü lazım
    $logo1 = imagecreatefrompng('./php.png');
    $logo2 = imagecreatefrompng('./php.png');

    // Üzerinde farkları göstermek için bir tuval oluşturalım
    $output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));

    // Her örneğe 3 piksellik mozaikleştirme uygulayalım
    imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
    imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);

    // Farkları çıktı görüntüsünde karıştıralım
    imagecopy($output, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1,
                                           imagesy($logo1) - 1);
    imagecopy($output, $logo2, imagesx($logo2), 0, 0, 0,
               imagesx($logo2) - 1, imagesy($logo2) - 1);
    imagedestroy($logo1);
    imagedestroy($logo2);

    // Farkları çıktılayalım
    header('Content-Type: image/png');
    imagepng($output);
    imagedestroy($output);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 6 - imagefilter() saçılma örneği

    <?php
    // PHP logosunu yükleyelim
    $logo = imagecreatefrompng('./php.png');

    // Görüntüye çok yumuşak saçılma etkisi uygulayalım
    imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);

    // Saçılma etkili görüntüyü çıktılayalım
    header('Content-Type: image/png');
    imagepng($logo);
    imagedestroy($logo);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize: `IMG_FILTER_SCATTER` sonucu daima rastgeledir.

### Ayrıca Bakınız

- imageconvolution() - Bir konum ve katsayı ile 3x3'lük bir evrişim matrisini uygular

# imageflip

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imageflip — Belirtilen kipi kullanarak görüntüyü ters çevirir

### Açıklama

function imageflip(GdImage `$görüntü`, int `$kip`): bool

Belirtilen `kip`e göre `görüntü`yü ters çevirir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kip`

  Görüntünün nasıl ters çevrileceği aşağıdaki `IMG_FLIP_*` sabitleri ile belirtilir:

  Sabit | Anlamı
  --- | ---
  `IMG_FLIP_HORIZONTAL` | Resim yatay olarak ters çevrilir.
  `IMG_FLIP_VERTICAL` | Resim dikey olarak ters çevrilir.
  `IMG_FLIP_BOTH` | Resim hem dikey hem de yatay olarak ters çevrilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Görüntüyü dikey olarak ters çevirmek

Bu örnekte `IMG_FLIP_VERTICAL` sabiti kullanılmıştır.

    <?php
    // Dosya
    $filename = 'phplogo.png';

    // İçerik türü
    header('Content-Type: image/png');

    // Yükle
    $im = imagecreatefrompng($filename);

    // Düşey olarak tersine çevir
    imageflip($im, IMG_FLIP_VERTICAL);

    // Çıktıla
    imagejpeg($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 - Görüntüyü yatay olarak ters çevirmek

Bu örnekte `IMG_FLIP_HORIZONTAL` sabiti kullanılmıştır.

    <?php
    // Dosya
    $filename = 'phplogo.png';

    // İçerik türü
    header('Content-Type: image/png');

    // Yükle
    $im = imagecreatefrompng($filename);

    // Yatayda tersine çevir
    imageflip($im, IMG_FLIP_HORIZONTAL);

    // Çıktıla
    imagejpeg($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagefontheight

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefontheight — Yazı tipi piksel yüksekliğini döndürür

### Açıklama

function imagefontheight(GdFont|int `$yazıtipi`): int

Belirtilen yazı tipinin bir karakterinin piksel cinsinden yüksekliğini döndürür.

### Bağımsız Değişkenler

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

### Dönen Değerler

Piksel cinsinden yükseklik döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.

### Örnekler

Örnek 1 - Yerleşik yazı tipleri üzerinde imagefontheight()

    <?php
    echo 'Yazı tipi yüksekliği: ' . imagefontheight(4) . ' piksel';
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yazı tipi yüksekliği: 16 piksel

Örnek 2 - imagefontheight() ile imageloadfont() işlevinin birlikte kullanımı

    <?php
    // Bir .gdf yazı tipi yükleyelim
    $font = imageloadfont('anonymous.gdf');

    echo 'Yazı tipi yüksekliği: ' . imagefontheight($font) . ' piksel';
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yazı tipi yüksekliği: 43 piksel

### Ayrıca Bakınız

- imagefontwidth() - Yazı tipi piksel genişliğini döndürür
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler

# imagefontwidth

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefontwidth — Yazı tipi piksel genişliğini döndürür

### Açıklama

function imagefontwidth(GdFont|int `$yazıtipi`): int

Belirtilen yazı tipindeki bir karakterin piksel cinsinden genişliğini döndürür.

### Bağımsız Değişkenler

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

### Dönen Değerler

Piksel cinsinden genişlik döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.

### Örnekler

Örnek 1 - Yerleşik yazı tipleri üzerinde imagefontwidth()

    <?php
    echo 'Yazı tipi genişliği: ' . imagefontwidth(4) . ' piksel';
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yazı tipi genişliği: 8 piksel

Örnek 2 - imagefontwidth() ile imageloadfont() işlevinin birlikte kullanımı

    <?php
    // Bir .gdf yazı tipi yükleyelim
    $font = imageloadfont('anonymous.gdf');

    echo 'Yazı tipi genişliği: ' . imagefontwidth($font) . ' piksel';
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Yazı tipi genişliği: 23 piksel

### Ayrıca Bakınız

- imagefontheight() - Yazı tipi piksel yüksekliğini döndürür
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler

# imageftbbox

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imageftbbox — Bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar

### Açıklama

function imageftbbox(
float `$boyut`,
float `$açı`,
string `$yazıtipi`,
string `$metin`,
array `$seçenekler` = []
): array|false

Bu işlev, bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar.

> Bilginize:

> PHP 8.0.0 öncesinde imageftbbox() işlevi imagettfbbox() işlevinin geliştirilmişi olup ek olarak `seçenekler` bağımsız değişkenine sahipti. PHP 8.0.0 ve sonrasında imagettfbbox() işlevi imageftbbox() işlevinin takma adıdır.

### Bağımsız Değişkenler

`boyut`

  Punto cinsinden yazıtipi boyutu.

`açı`

  Metnin yazım açısı.

`yazıtipi`

  FreeType2 yazı tipi dosyasının ismi. Bir URL olarak belirtilebilir. PHP'nin kullandığı GD kütüphanesinin sürümüne bağlı olarak, / ile başlamayan bir FreeType2 dosya ismine .ttf uzantısı eklenir ve kütüphane bu dosya ismini kütüphanede tanımlı dizinlerde arar.

`metin`

  Çerçevesi hesaplanacak metin.

`seçenekler`

  `seçenekler` için olası dizi indisleri
  Anahtar | Türü | Anlamı
  --- | --- | ---
  `linespacing` | float | Satırlar arasındaki boşluğu tanımlar.

### Dönen Değerler

Metin çerçevesinin dört köşesinin koordinatlarını içeren 8 elemanlı bir dizi ile döner:

0 | Sol alt köşenin X konumu
1 | Sol alt köşenin Y konumu
2 | Sağ alt köşenin X konumu
3 | Sağ alt köşenin Y konumu
4 | Sağ üst köşenin X konumu
5 | Sağ üst köşenin Y konumu
6 | Sol üst köşenin X konumu
7 | Sol üst köşenin Y konumu

Noktalar açıdan bağımsız olarak metne görelidir. Yani, "sol üst" denince metne yatay olarak bakarken sol üst köşe kastedilmektedir.

Başarısızlık durumunda, `false` döner.

### Örnekler

Örnek 1 - imageftbbox() örneği

    <?php
    // Tuvalimizi oluşturalım
    $im = imagecreatetruecolor(300, 150);
    $black = imagecolorallocate($im, 0, 0, 0);
    $white = imagecolorallocate($im, 255, 255, 255);

    // Artalan rengi beyaz olsun
    imagefilledrectangle($im, 0, 0, 299, 299, $white);

    // Yazı tipi dosyamızın yolu
    $font = './arial.ttf';

    // Metin çerçevesini hesaplatalım
    $bbox = imageftbbox(10, 0, $font, 'The PHP Documentation Group');

    // Metnin yazılmaya başlanacağı koordinatlar
    $x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 5;
    $y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

    imagefttext($im, 10, 0, $x, $y, $black, $font, 'The PHP Documentation Group');

    // Görüntüyü çıktılayalım
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Notlar

> Bilginize: Bu işlev sadece, PHP, freetype desteği (--with-freetype-dir=DİZİN seçeneği) ile derlenmişse kullanılabilir.

### Ayrıca Bakınız

- imagefttext() - Bir metni bir görüntüye bir FreeType 2 yazı tipini kullanarak yazar
- imagettfbbox() - TrueType yazıtipi kullanılan bir metnin çerçevesini döndürür

# imagefttext

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagefttext — Bir metni bir görüntüye bir FreeType 2 yazı tipini kullanarak yazar

### Açıklama

function imagefttext(
GdImage `$görüntü`,
float `$boyut`,
float `$açı`,
int `$x`,
int `$y`,
int `$renk`,
string `$yazıtipi`,
string `$metin`,
array `$seçenekler` = []
): array|false

> Bilginize:

> PHP 8.0.0 öncesinde imagefttext() işlevi imagettftext() işlevinin geliştirilmişi olup ek olarak `seçenekler` bağımsız değişkenine sahipti. PHP 8.0.0 ve sonrasında imagettftext() işlevi imagefttext() işlevinin takma adıdır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`boyut`

  Kullanılacak yazı tipinin punto olarak boyutu.

`açı`

  Derece cinsinden açı. Soldan sağa yazılan bir metnin açısı 0 derecedir. Daha büyük değerler ters saat yönünde belirtilmiş varsayılır. Örneğin 90 derecelik bir metin aşağıdan yukarı doğru yazılır.

`x`

  `x` ve `y` ile belirtilen koordinatlar ilk harfin taban noktasını (kabaca harfin sol alt köşesi) tanımlar. Bu tanımlama, koordinatların harfin sol üst köşesini tanımladığı imagestring() işlevinden farklıdır. Resmin sol üst köşesinin koordinatları 0, 0'dır.

`y`

  `x` bağımsız değişkenine bakınız.

`renk`

  Renk indisi. Negatif bir renk indisi kenar yumuşatmayı kapatır. imagecolorallocate() işlevine bakınız.

`yazıtipi`

  Kullanılacak FreeType2 yazı tipi dosyasının yolu.

  PHP'nin kullandığı GD kütüphanesinin sürümüne bağlı olarak, `/` ile başlamayan bir FreeType2 dosya ismine `.ttf` uzantısı eklenir ve kütüphane bu dosya ismini kütüphanede tanımlı dizinlerde arar.

  Yazı tiplerinin betikle aynı dizinde bulunduğu durumlarda herhangi bir sorun çıkmaması için aşağıdaki çözüm kullanılabilir.

      <?php
      // GD ortam değişkenini tanımlayalım
      putenv('GDFONTPATH=' . realpath('.'));

      // Kullanılacak yazı tipinin ismi (dikkat: .ttf uzantısı yok)
      $font = 'freesans';
      ?>

`metin`

  Resme yerleştirilecek metin.

`seçenekler`

  `seçenekler` için olası dizi indisleri
  Anahtar | Türü | Anlamı
  --- | --- | ---
  `linespacing` | float | Satırlar arasındaki boşluğu tanımlar.

### Dönen Değerler

Metin çerçevesinin dört köşesinin koordinatlarını içeren 8 elemanlı bir dizi ile döner:

0 | Sol alt köşenin X konumu
1 | Sol alt köşenin Y konumu
2 | Sağ alt köşenin X konumu
3 | Sağ alt köşenin Y konumu
4 | Sağ üst köşenin X konumu
5 | Sağ üst köşenin Y konumu
6 | Sol üst köşenin X konumu
7 | Sol üst köşenin Y konumu

Başarısızlık durumunda, `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagefttext() örneği

    <?php
    // 300x100 bir tuval oluşturalım
    $im = imagecreatetruecolor(300, 100);
    $red = imagecolorallocate($im, 0xFF, 0x00, 0x00);
    $black = imagecolorallocate($im, 0x00, 0x00, 0x00);

    // Artalan rengi kırmızı olsun
    imagefilledrectangle($im, 0, 0, 299, 99, $red);

    // ttf dosyamızın yolu
    $font_file = './arial.ttf';

    // 'PHP Manual' metnini 13 puntoluk yazdıralım
    imagefttext($im, 13, 0, 105, 55, $black, $font_file, 'PHP Manual');

    // Görüntüyü tarayıcıya gönderelim
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Notlar

> Bilginize: Bu işlev sadece, PHP, freetype desteği (--with-freetype-dir=DİZİN seçeneği) ile derlenmişse kullanılabilir.

### Ayrıca Bakınız

- imageftbbox() - Bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar
- imagettftext() - Metni görüntüye TrueType yazı tipi ile yazar

# imagegammacorrect

(PHP 4, PHP 5, PHP 7, PHP 8)

imagegammacorrect — Bir GD görüntüye gamma düzeltmesi uygular

### Açıklama

function imagegammacorrect(GdImage `$görüntü`, float `$girdi_gamması`, float `$çıktı_gamması`): bool

`görüntü` ile belirtilen GD görüntüye belirtilen girdi ve çıktı gamma düzeltmelerini uygular.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`girdi_gamması`

  Girdi gamması.

`çıktı_gamması`

  Çıktı gamması.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagegammacorrect() örneği

    <?php
    // Bir görüntü yükleyelim
    $im = imagecreatefromgif('php.gif');

    // Gammayı düzeltelim, çıktı = 1.537
    imagegammacorrect($im, 1.0, 1.537);

    // Görüntüyü kaydedip belleği serbest bırakalım
    imagegif($im, './php_gamma_corrected.gif');
    imagedestroy($im);
    ?>

# imagegd

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagegd — Tarayıcıya veya bir dosyaya bir GD görüntü çıktılar

### Açıklama

function imagegd(GdImage `$görüntü`, ?string `$dosya` = `null`): bool

Bir GD görüntüyü `dosya` ile belirtilen dosyaya çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.3 | `dosya` artık `null` olabiliyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
7.2.0 | imagegd() artık gerçek renkli görüntüleri çıktılamayı sağlıyor. Evvelce bu örtük olarak palete dönüşürdü.

### Örnekler

Örnek 1 - Bir GD görüntünün çıktılanması

    <?php
    // Bir tuval oluşturup üzerine bir metin çizelim
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

    // Görüntüyü çıktılayalım
    imagegd($im);

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

Örnek 2 - Bir GD görüntünün kaydedilmesi

    <?php
    // Bir tuval oluşturup üzerine bir metin çizelim
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

    // gd görüntüyü kaydedelim
    // GD görüntülerin dosya biçemi .gd'dir.
    // http://www.libgd.org/GdFileFormats adresine bakınız
    imagegd($im, 'simple.gd');

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

### Notlar

> Bilginize:

> GD biçemi görüntü parçalarının hızlı yüklenebilmesi için kullanılan bir görüntü biçemidir. GD biçeminin sadece GD uyumlu uygulamalarda kullanılabileceğine dikkat ediniz.

Uyarı

GD ve GD2 görüntü biçemleri libgd'nin tescilli görüntü biçemleridir. Bunlar kullanımdan kalkmış kabul edilmeli, geliştirme ve deneme amacı dışında kullanılmamalıdır.

### Ayrıca Bakınız

- imagegd2() - Tarayıcıya veya bir dosyaya bir GD2 görüntü çıktılar

# imagegd2

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagegd2 — Tarayıcıya veya bir dosyaya bir GD2 görüntü çıktılar

### Açıklama

function imagegd2(
GdImage `$görüntü`,
?string `$dosya` = `null`,
int `$parça_boyutu` = 128,
int `$tür` = `IMG_GD2_RAW`
): bool

Bir GD2 görüntüyü belirtilen `dosya`ya çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  GD2 görüntünün kaydedileceği yol. Belirtilmezse veya `null` verilirse ham görüntü akımı doğrudan çıktılanır.

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

`parça_boyutu`

  Parça boyutu.

`tür`

  `IMG_GD2_RAW` veya `IMG_GD2_COMPRESSED` olabilir. `IMG_GD2_RAW` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.3 | `dosya` artık `null` olabiliyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir GD2 görüntünün çıktılanması

    <?php
    // Bir tuval oluşturup üzerine bir metin çizelim
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

    // Görüntüyü çıktılayalım
    imagegd2($im);

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

Örnek 2 - Bir GD2 görüntünün kaydedilmesi

    <?php
    // Bir tuval oluşturup üzerine bir metin çizelim
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

    // gd2 görüntüyü kaydedelim
    // GD2 görüntülerin dosya biçemi .gd2'dir.
    // http://www.libgd.org/GdFileFormats adresine bakınız
    imagegd2($im, 'simple.gd2');

    // Belleği serbest bırakalım
    imagedestroy($im);
    ?>

### Notlar

> Bilginize:

> GD2 biçemi görüntü parçalarının hızlı yüklenebilmesi için kullanılan bir görüntü biçemidir. GD2 biçeminin sadece GD2 uyumlu uygulamalarda kullanılabileceğine dikkat ediniz.

Uyarı

GD ve GD2 görüntü biçemleri libgd'nin tescilli görüntü biçemleridir. Bunlar kullanımdan kalkmış kabul edilmeli, geliştirme ve deneme amacı dışında kullanılmamalıdır.

### Ayrıca Bakınız

- imagegd() - Tarayıcıya veya bir dosyaya bir GD görüntü çıktılar

# imagegetclip

(PHP 7 >= 7.2.0, PHP 8)

imagegetclip — Kırpma dikdörtgenini döndürür

### Açıklama

function imagegetclip(GdImage `$görüntü`): array

imagegetclip() geçerli kırpma dikdörtgeninin koordinatlarını döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

İşlev, aşağıdaki girdilere sahip kırpma dikdörtgenini içeren diziyi döndürür:

- x-üst sol köşenin koordinatı
- y-üst sağ köşenin koordinatı
- x-alt sol köşenin koordinatı
- y-alt sağ köşenin koordinatı

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagegetclip() örneği

Kırpma dikdörtgeninin tanımlanması ve döndürülmesi.

    <?php
    $im = imagecreate(100, 100);
    imagesetclip($im, 10,10, 89,89);
    print_r(imagegetclip($im));

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => 10
        [1] => 10
        [2] => 89
        [3] => 89
    )

### Ayrıca Bakınız

- imagesetclip() - Kırpma dikdörtgenini tanımlar

# imagegetinterpolation

(PHP 8)

imagegetinterpolation — Ara değerleme yöntemini döndürür

### Açıklama

function imagegetinterpolation(GdImage `$görüntü`): int

`görüntü` nesnesine atanmış ara değerleme yöntemini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

Ara değerleme yöntemini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Ayrıca Bakınız

- imagesetinterpolation() - Ara değerleme yöntemini tanımlar

# imagegif

(PHP 4, PHP 5, PHP 7, PHP 8)

imagegif — Görüntüyü tarayıcıya veya dosyaya yazar.

### Açıklama

function imagegif(GdImage `$görüntü`, resource|string|null `$dosya` = `null`): bool

imagegif() işlevi `görüntü` ile belirtilen görüntünün GIF biçemlisini oluşturup `dosya`ya çıktılar. `görüntü` bağımsız değişkeni imagecreate() veya `imagecreatefrom*` işlevleri tarafından oluşturulmuş bir görüntüyü belirtmelidir.

Görüntünün artalanı imagecolortransparent() ile şeffaf yapılmışsa dosya biçemi GIF89a, aksi takdirde GIF87a'dır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagegif() ile bir görüntüyü çıktılamak

    <?php
    // Boş bir görüntü oluşturalım
    $im = imagecreatetruecolor(100, 100);

    // Artalan rengi beyaz olsun
    imagefilledrectangle($im, 0, 0, 99, 99, 0xFFFFFF);

    // Görüntüye bir metin çizelim
    imagestring($im, 3, 40, 20, 'GD Library', 0xFFBA00);

    // Görüntüyü tarayıcıya gönderelim
    header('Content-Type: image/gif');

    imagegif($im);
    imagedestroy($im);
    ?>

Örnek 2 - Bir PNG görüntüyü imagegif() ile bir GIF görüntüye dönüştürmek

    <?php

    // Görüntüyü PNG olarak yükleyelim
    $png = imagecreatefrompng('./php.png');

    // Bir GIF olarak kaydedelim
    imagegif($png, './php.gif');

    // Belleği serbest bırakalım
    imagedestroy($png);

    // İşimiz bitti
    echo 'PNG başarıyla GIF yapıldı!';
    ?>

### Notlar

> Bilginize:

> Aşağıdaki kod parçası GD desteğinin durumuna bakarak taşınabilir PHP uygulamaları yazmanızı sağlar:

>     <?php
>     // Boş bir görüntü oluşturalım
>     $im = imagecreatetruecolor(100, 100);

>     // Görüntü üzerinde bazı işlemler yapalım

>     // Görüntüyü çıktılayalım
>     if(function_exists('imagegif'))
>     {
>         // GIF için
>         header('Content-Type: image/gif');

>         imagegif($im);
>     }
>     elseif(function_exists('imagejpeg'))
>     {
>         // JPEG için
>         header('Content-Type: image/jpeg');

>         imagejpeg($im, NULL, 100);
>     }
>     elseif(function_exists('imagepng'))
>     {
>         // PNG için
>         header('Content-Type: image/png');

>         imagepng($im);
>     }
>     elseif(function_exists('imagewbmp'))
>     {
>         // WBMP için
>         header('Content-Type: image/vnd.wap.wbmp');

>         imagewbmp($im);
>     }
>     else
>     {
>         imagedestroy($im);

>         die('Bu PHP sunucusunda görüntü desteği yok');
>     }

>     // Görüntü desteği varsa belleği serbest bırakalım
>     if($im)
>     {
>         imagedestroy($im);
>     }
>     ?>

> Bilginize:

> Desteklenen resim biçemlerini bulmak için function_exists() yerine imagetypes() işlevini kullanabilirsiniz:

>     <?php
>     if(imagetypes() & IMG_GIF)
>     {
>         header('Content-Type: image/gif');
>         imagegif($im);
>     }
>     elseif(imagetypes() & IMG_JPG)
>     {
>         /* ... vb. */
>     }
>     ?>

### Ayrıca Bakınız

- imagepng() - Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagejpeg() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür

# imagegrabscreen

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

imagegrabscreen — Ekran görüntüsünü yakalar

### Açıklama

function imagegrabscreen(): GdImage|false

Ekranın tamamının bir görüntüsünü yakalar.

> Bilginize:

> Bu işlev sadece Windows'ta kullanılabilmektedir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hata oluşursa `false` aksi takdirde bir görüntü nesnesi ile döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık GDImage nesnesi döndürüyor; evvelce resource türünde bir değer dönerdi.

### Örnekler

Örnek 1 - imagegrabscreen() örneği

Bu örnekte ekran görüntüsünün nasıl alınıp bir PNG görüntü olarak kaydedileceği gösterilmiştir.

    <?php
    $im = imagegrabscreen();
    imagepng($im, "ekranım.png");
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagegrabwindow() - Bir pencereyi yakalar

# imagegrabwindow

(PHP 5 >= 5.2.2, PHP 7, PHP 8)

imagegrabwindow — Bir pencereyi yakalar

### Açıklama

function imagegrabwindow(int `$pencere`, bool `$istemci_alanı` = `false`): GdImage|false

Bir pencere tanıtıcısı (pencerenin COM örneğinin HWND özelliği) kullanarak bir pencerenin tamamının veya sadece içinin görüntüsünü yakalar.

> Bilginize:

> Bu işlev sadece Windows üzerinde kullanılabilir.

### Bağımsız Değişkenler

`pencere`

  Görüntüsü yakalanacak pencerenin COM örneğinin HWND özelliği.

`istemci_alanı`

  Pencerenin istemci alanı.

### Dönen Değerler

Hata oluşursa `false` aksi takdirde bir görüntü nesnesi ile döner.

### Hatalar/İstisnalar

`pencere` geçersiz bir tanıtıcı içeriyorsa bir E_NOTICE, Windows API çok eskiyse bir E_WARNING çıktılanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | Başarı durumunda işlev artık GDImage nesnesi döndürüyor; evvelce resource türünde bir değer dönerdi.
8.0.0 | `istemci_alanı` artık bool tür kabul ediyor; evvelce bu, int idi.

### Örnekler

Örnek 1 - imagegrabwindow() örneği

Bir pencere yakalamak için (örneğin IE):

    <?php
    $browser = new COM("InternetExplorer.Application");
    $handle = $browser->HWND;
    $browser->Visible = true;
    $im = imagegrabwindow($handle);
    $browser->Quit();
    imagepng($im, "iesnap.png");
    imagedestroy($im);
    ?>

Bir pencerenin sadece içeriğini yakalamak için (örneğin IE):

    <?php
    $browser = new COM("InternetExplorer.Application");
    $handle = $browser->HWND;
    $browser->Visible = true;
    $browser->Navigate("http://www.libgd.org");

    /* Hala çalışıyor mu? */
    while ($browser->Busy) {
        com_message_pump(4000);
    }
    $im = imagegrabwindow($handle, 0);
    $browser->Quit();
    imagepng($im, "iesnap.png");
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagegrabscreen() - Ekran görüntüsünü yakalar

# imageinterlace

(PHP 4, PHP 5, PHP 7, PHP 8)

imageinterlace — Geçişimliliği açıp kapar

### Açıklama

function imageinterlace(GdImage `$görüntü`, ?bool `$etkin` = `null`): bool

imageinterlace() işlevi geçişim bitini açıp kapar.

Eğer geçişim biti etkin ve görüntü bir JPEG görüntü olarak kullanılmışsa görüntü aşamalı JPEG olarak oluşturulur.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`etkin`

  `true` ise görüntü geçişimli olur, `false` ise geçişim biti kapatılır. `null` aktarılması geçişim bitinde değişiklik olmadığı anlamına gelir.

### Dönen Değerler

Geçişim biti etkinse 1 aksi takdirde 0 döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.5 | imageinterlace() artık bool değer döndürüyor; evvelce int değer dönerdi (geçişimliyse sıfırdan farklı, değilse sıfır).
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | `etkin` artık bool kabul ediyor; evvelce bu, int idi.

### Örnekler

Örnek 1 - imageinterlace() ile geçişimi etkin kılmak

    <?php
    // Bir görüntü taslağı oluşturalım
    $im = imagecreatefromgif('php.gif');

    // Geçişimi etkin kılalım
    imageinterlace($im, true);

    // Geçişimli görüntüyü kaydedelim
    imagegif($im, './php_interlaced.gif');
    imagedestroy($im);
    ?>

# imageistruecolor

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

imageistruecolor — Bir görüntünün gerçek renkli olup olmadığını bulur

### Açıklama

function imageistruecolor(GdImage `$görüntü`): bool

imageistruecolor() işlevi belirtilen görüntünün bir gerçek renkli görüntü olup olmadığına bakar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

`görüntü` gerçek renkli ise `true` aksi takdirde `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imageistruecolor() ile görüntünün gerçek renkli olup olmadığının saptanması

    <?php
    // $im bir görüntü tanıtıcısı olsun

    // Bakalım görüntü gerçek renkli miymiş?
    if(!imageistruecolor($im))
    {
        // Değilse gerçek renkli yeni bir taslak oluşturalım
        $tc = imagecreatetruecolor(imagesx($im), imagesy($im));

        //Piksellerin üstüne kopyala
        imagecopy($tc, $im, 0, 0, 0, 0, imagesx($im), imagesy($im));
        imagedestroy($im);

        $im = $tc;
        $tc = NULL;

        // VEYA imagepalettetotruecolor() kullan
    }

    // Görüntü taslağıyla çalışmaya devam
    ?>

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- imagepalettetotruecolor() - Palet tabanlı bir görüntüyü gerçek renge dönüştürür

# imagejpeg

(PHP 4, PHP 5, PHP 7, PHP 8)

imagejpeg — Görüntüyü tarayıcıya veya dosyaya yazar.

### Açıklama

function imagejpeg(GdImage `$görüntü`, resource|string|null `$çıktıyeri` = `null`, int `$kalite` = -1): bool

imagejpeg() işlevi `görüntü` ile belirtilen JPEG biçemli görüntüyü tarayıcıya veya bir dosyaya çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`çıktıyeri`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

`kalite`

  `kalite` isteğe bağlı olup 0'dan (en kötü kalite, en küçük dosya) 100'e (en yüksek kalite, en büyük dosya) kadar bir değer belirtilebilir. Öntanımlı değer (`-1`), öntanımlı IJG kalite değerini (yaklaşık 75) kullanır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Bir JPEG görüntüyü tarayıcıya çıktılamak

    <?php
    // Bir görüntü taslağı oluşturup bir metin ekle
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

    // İçerik türünü belirt
    header('Content-Type: image/jpeg');

    // Görüntüyü çıktıla
    imagejpeg($im);

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 - Bir JPEG görüntüyü bir dosyaya kaydetmek

    <?php
    // Bir görüntü taslağı oluşturup bir metin ekle
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

    // Görüntüyü 'basitmetin.jpg' ismiyle kaydet
    imagejpeg($im, 'basitmetin.jpg');

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

Örnek 3 - Görüntüyü %75 kaliteyle tarayıcıya çıktılamak

    <?php
    // Bir görüntü taslağı oluşturup bir metin ekle
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);
    imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

    // İçerik türünü belirt
    header('Content-Type: image/jpeg');

    // çıktıyeri'ni NULL ile atlayıp kaliteyi 75% yap
    imagejpeg($im, NULL, 75);

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

### Notlar

> Bilginize:

> Aşamalı JPEG'ler çıktılamak isterseniz geçişimliliği imageinterlace() ile ayarlamalısınız.

### Ayrıca Bakınız

- imagepng() - Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagegif() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imageinterlace() - Geçişimliliği açıp kapar
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür

# imagelayereffect

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

imagelayereffect — Katmanlama etkisini kullanmak için alfa harmanlama seçeneğini ayarlar

### Açıklama

function imagelayereffect(GdImage `$görüntü`, int `$etki`): bool

Katmanlama etkisini kullanmak için alfa harmanlama seçeneğini ayarlar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`etki`

  Şu sabitlerden biri olabilir:

  `IMG_EFFECT_REPLACE`
    Piksel değiştirme etkisi kullanılır (imagealphablending() işlevine `true` aktarmaya eşdeğerdir).
  `IMG_EFFECT_ALPHABLEND`
    Normal piksel harmanlaması kullanılır(imagealphablending() işlevine `false` aktarmaya eşdeğerdir).
  `IMG_EFFECT_NORMAL`
    `IMG_EFFECT_ALPHABLEND` ile aynı.
  `IMG_EFFECT_OVERLAY`
    Siyah pikseller siyah, beyaz pikseller beyaz olarak kalırken gri artalan pikselleri önalan pikselinin rengini alırlar.
  `IMG_EFFECT_MULTIPLY`
    Çarpma etkisi ile üzerini kaplar.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
7.2.0 | `IMG_EFFECT_MULTIPLY` eklendi (systemde libgd >= 2.1.1 veya PHP ile gelen libgd gerekir).

### Örnekler

Örnek 1 - imagelayereffect() örneği

    <?php
    // Görüntü taslağını oluşturalım
    $im = imagecreatetruecolor(100, 100);

    // Artalanı griye boyayalım
    imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 220, 220, 220));

    // Artalan renk değiştirme etkisini etkin kılalım
    imagelayereffect($im, IMG_EFFECT_OVERLAY);

    // Gri zemine iki elips çizelim
    imagefilledellipse($im, 50, 50, 40, 40, imagecolorallocate($im, 100, 255, 100));
    imagefilledellipse($im, 50, 50, 50, 80, imagecolorallocate($im, 100, 100, 255));
    imagefilledellipse($im, 50, 50, 80, 50, imagecolorallocate($im, 255, 100, 100));

    // Görüntüyü çıktılayalım
    header('Content-type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imageline

(PHP 4, PHP 5, PHP 7, PHP 8)

imageline — Bir çizgi çizer

### Açıklama

function imageline(
GdImage `$görüntü`,
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`,
int `$renk`
): bool

Belirtilen noktaların arasına bir çizgi çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x1`

  İlk noktanın X konumu.

`y1`

  İlk noktanın Y konumu.

`x2`

  İkinci noktanın X konumu.

`y2`

  İkinci noktanın Y konumu.

`renk`

  Çizginin rengi. imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Kalın bir çizgi çizelim

    <?php

    function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1)
    {
        /* Sadece yatay ve dikey çizgiler için iyi çalışır
        imagesetthickness($image, $thick);
        return imageline($image, $x1, $y1, $x2, $y2, $color);
        */
        if ($thick == 1) {
            return imageline($image, $x1, $y1, $x2, $y2, $color);
        }
        $t = $thick / 2 - 0.5;
        if ($x1 == $x2 || $y1 == $y2) {
            return imagefilledrectangle($image, round(min($x1, $x2) - $t),
                       round(min($y1, $y2) - $t), round(max($x1, $x2) + $t),
                       round(max($y1, $y2) + $t), $color);
        }
        $k = ($y2 - $y1) / ($x2 - $x1); //y = kx + q
        $a = $t / sqrt(1 + pow($k, 2));
        $points = array(
            round($x1 - (1+$k)*$a), round($y1 + (1-$k)*$a),
            round($x1 - (1-$k)*$a), round($y1 - (1+$k)*$a),
            round($x2 + (1+$k)*$a), round($y2 - (1-$k)*$a),
            round($x2 + (1-$k)*$a), round($y2 + (1+$k)*$a),
        );
        imagefilledpolygon($image, $points, 4, $color);
        return imagepolygon($image, $points, 4, $color);
    }

    ?>

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- imagecolorallocate() - Bir görüntü için bir renk ayırır

# imageloadfont

(PHP 4, PHP 5, PHP 7, PHP 8)

imageloadfont — Yeni bir bit eşlemli yazı tipi yükler

### Açıklama

function imageloadfont(string `$dosya`): GdFont|false

imageloadfont() işlevi bir kullanıcı tanımlı biteşlemli yazı tipini yükler ve onun için bir GdFont nesnesi döndürür.

### Bağımsız Değişkenler

`dosya`

  İkil ve mimariye bağımlı biçemde yazı tipi dosyası. Yani, yazı tipi dosyalarını PHP'nin çalıştığı makine ile aynı işlemciye (CPU) sahip bir makinede üretmiş olmalısınız.

  Yazı tipi dosyası biçemleri
  bayt konumu | C veri türü | açıklama
  --- | --- | ---
  0-3 | int | Yazı tipindeki karakterlerin sayısı.
  4-7 | int | Yazı tipindeki ilk karakterin değeri (çoğunlukla boşluk karakterinin kodu olan 32'dir).
  8-11 | int | Her karakterin piksel olarak genişliği
  12-15 | int | Her karakterin piksel olarak yüksekliği
  16- | char | Karakter verisini içeren dizi; bir karakterin her pikseli için bir bayt olmak üzere toplam (karakter_sayısı * genişlik * yükseklik) bayt içerir.

### Dönen Değerler

GdFont nesnesi ile döner. Bir hata oluşursa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık GdFont örneği dönüyor, evvelce tamsayı bir değer dönerdi.

### Örnekler

Örnek 1 - imageloadfont() örneği

    <?php
    // Yeni bir görüntü taslağı oluşturalım
    $im = imagecreatetruecolor(50, 20);
    $black = imagecolorallocate($im, 0, 0, 0);
    $white = imagecolorallocate($im, 255, 255, 255);

    // Artalan rengi beyaz olsun
    imagefilledrectangle($im, 0, 0, 49, 19, $white);

    // gd yazı tipini yükleyip 'Hello' yazalım
    $font = imageloadfont('./04b.gdf');
    imagestring($im, $font, 0, 0, 'Hello', $black);

    // Görüntüyü tarayıcıya gönderelim
    header('Content-type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagefontwidth() - Yazı tipi piksel genişliğini döndürür
- imagefontheight() - Yazı tipi piksel yüksekliğini döndürür

# imageopenpolygon

(PHP 7 >= 7.2.0, PHP 8)

imageopenpolygon — Açık çokgen çizer

### Açıklama

PHP 8.0.0 ve üstü için sözdizimi (isimli bağımsız değişkenler desteklenmez)

function imageopenpolygon(GdImage `$görüntü`, array `$noktalar`, int `$renk`): bool

Diğer sözdizimi (PHP 8.1.0 ve sonrası için önerilmiyor)

function imageopenpolygon(
GdImage `$görüntü`,
array `$noktalar`,
int `$nokta_sayısı`,
int `$renk`
): bool

imageopenpolygon() belirtilen `görüntü`nün üzerine açık bir çokgen çizer. Contrary to imagepolygon() işlevinin aksine, ilk ve son nokta arasına çizgi çizilmez.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`noktalar`

  Çokgenin köşelerini içeren bir dizi, örn:

  points[0] | = x0
  points[1] | = y0
  points[2] | = x1
  points[3] | = y1

`nokta_sayısı`

  Toplam nokta (köşe) sayısı, en az 3 olmalıdır.

  İkinci sözdizimindeki gibi bu bağımsız değişkenin yokluğunda `noktalar` dizisi çift sayıda eleman içermelidir. Bu durumda, `nokta_sayısı`nın `count($noktalar)/2` olduğu varsayılır.
`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `nokta_sayısı` bağımsız değişkeninin kullanımı artık önerilmiyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imageopenpolygon() örneği

    <?php
    // Boş bir görüntü oluştur
    $image = imagecreatetruecolor(400, 300);

    // Çokgen için bir renk ayır
    $renk = imagecolorallocate($image, 255, 255, 255);

    // Çokgeni çiz
    imageopenpolygon($image, array(
            0,   0,
            100, 200,
            300, 200
        ),
        3,
        $renk);

    // Görüntüyü tarayıcıya aktar
    header('Content-type: image/png');

    imagepng($image);
    imagedestroy($image);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagepolygon() - Çokgen çizer

# imagepalettecopy

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagepalettecopy — Paleti bir görüntüden diğerine kopyalar

### Açıklama

function imagepalettecopy(GdImage `$hedef`, GdImage `$kaynak`): void

imagepalettecopy() işlevi `kaynak` görüntüdeki paleti `hedef` görüntüye kopyalar.

### Bağımsız Değişkenler

`hedef`

  Paletin kopyalanacağı görüntü nesnesi.

`kaynak`

  Kopyalanacak paleti içeren görüntü nesnesi.

### Dönen Değerler

Hiçbir değer dönmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `hedef` ve `kaynak` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - imagepalettecopy() örneği

    <?php
    // Paletli iki görüntü oluşturalım
    $palette1 = imagecreate(100, 100);
    $palette2 = imagecreate(100, 100);

    // İlk palette artalanı yeşil yapalım
    $green = imagecolorallocate($palette1, 0, 255, 0);

    // Paleti diğer görüntüye kopyalayalım
    imagepalettecopy($palette2, $palette1);

    // Böylece imagecolorallocate() işlevini iki kere kullanmadan
    // yeşil rengi her iki görüntüde de kullanabiliyoruz
    imagefilledrectangle($palette2, 0, 0, 99, 99, $green);

    // Görüntüyü tarayıcıya çıktılayalım
    header('Content-type: image/png');

    imagepng($palette2);
    imagedestroy($palette1);
    imagedestroy($palette2);
    ?>

# imagepalettetotruecolor

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagepalettetotruecolor — Palet tabanlı bir görüntüyü gerçek renge dönüştürür

### Açıklama

function imagepalettetotruecolor(GdImage `$görüntü`): bool

imagecreate() gibi bir işlevle oluşturulmuş palet tabanlı görüntüyü imagecreatetruecolor() işleviyle oluşturulmuş gibi gerçek renkli görüntüye dönüştürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

Dönüşüm tamamlanabilmişse veya kaynak görüntü zaten gerçek renkliyse `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 Görüntü nesnesini gerçek renkliye dönüştürmek

    <?php
    // Geriye uyumluluk
    if(!function_exists('imagepalettetotruecolor'))
    {
        function imagepalettetotruecolor(&$src)
        {
            if(imageistruecolor($src))
            {
                return(true);
            }

            $dst = imagecreatetruecolor(imagesx($src), imagesy($src));

            imagecopy($dst, $src, 0, 0, 0, 0, imagesx($src), imagesy($src));
            imagedestroy($src);

            $src = $dst;

            return(true);
        }
    }

    // Çıktılama işlevi
    $typeof = function() use($im)
    {
        echo 'Görüntü türü = ' . (imageistruecolor($im) ? 'gerçek renkli' : 'paletli'), PHP_EOL;
    };

    // Palet tabanlı görüntü oluştur
    $im = imagecreate(100, 100);
    $typeof();

    // Gerçek renkliye dönüştür
    imagepalettetotruecolor($im);
    $typeof();

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

Yukarıdaki örneğin çıktısı:

    Görüntü türü = paletli
    Görüntü türü = gerçek renkli

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- imageistruecolor() - Bir görüntünün gerçek renkli olup olmadığını bulur

# imagepng

(PHP 4, PHP 5, PHP 7, PHP 8)

imagepng — Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar

### Açıklama

function imagepng(
GdImage `$görüntü`,
resource|string|null `$dosya` = `null`,
int `$kalite` = -1,
int `$süzgeçler` = -1
): bool

`görüntü` ile belirtilen bir PNG görüntüyü tarayıcıya veya bir dosyaya çıktılar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

  > Bilginize:

  > Eğer `kalite` ve `süzgeçler` bağımsız değişkenleri belirtilmezse `null` geçersizdir.

`kalite`

  Öntanımlı değer (`-1`) öntanımlı zlib sıkıştırma değerini kullanır. Daha fazla bilgi için: » zlib kılavuzu.

`süzgeçler`

  PNG dosyasının boyutunu küçültme imkanı sağlar. `PNG_FILTER_XXX` sabitlerinin bir birleşiminden oluşan bir bit maskesi olarak belirtilir. Ayrıca, tüm süzgeçleri etkisiz veya etkili kılmak için (sırayla) `PNG_NO_FILTER` veya `PNG_ALL_FILTERS` sabiti kullanılabilir. Öntanımlı değer (`-1`) süzme işlemini iptal eder.

  Dikkat

  `süzgeçler` bağımsız değişkenini sistem libgd yoksayar.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

    <?php
    $im = imagecreatefrompng("test.png");

    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Ayrıca Bakınız

- imagegif() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagewbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagejpeg() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür
- imagesavealpha() - Görüntüleri kaydederken alfa kanalı bilgisinin saklanıp saklanmayacağını belirtir

# imagepolygon

(PHP 4, PHP 5, PHP 7, PHP 8)

imagepolygon — Çokgen çizer

### Açıklama

PHP 8.0.0 ve üstü için sözdizimi (isimli bağımsız değişkenler desteklenmez)

function imagepolygon(GdImage `$görüntü`, array `$noktalar`, int `$renk`): bool

Diğer sözdizimi (PHP 8.1.0 ve sonrası için önerilmiyor)

function imagepolygon(
GdImage `$görüntü`,
array `$noktalar`,
int `$nokta_sayısı`,
int `$renk`
): bool

imagepolygon() belirtilen `görüntü` üzerine çokgen çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`noktalar`

  Çokgenin köşeleri. Dizinin yerleşimi şöyledir:

  noktalar[0] | = x0
  noktalar[1] | = y0
  noktalar[2] | = x1
  noktalar[3] | = y1

`nokta_sayısı`

  Köşe sayısı, en az 3 olmalı.

  Bu bağımsız değişken, ikinci sözdizimindeki gibi atlanırsa, `noktalar` çift sayıda olmalı ve `nokta_sayısı`nın `count($noktalar)/2` olduğu varsayılmalıdır.
`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `nokta_sayısı` bağımsız değişkeninin kullanımı artık önerilmiyor.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagepolygon() örneği

    <?php
    // Bir görüntü taslağı oluşturalım
    $grnt = imagecreatetruecolor(400, 300);

    // Çokgenin rengini ayarlayalım
    $renk = imagecolorallocate($grnt, 255, 255, 255);

    // Çokgeni çizelim
    imagepolygon($grnt, array(
            0,   0,
            100, 200,
            300, 200
        ),
        3,
        $renk);

    // Görüntüyü tarayıcıya gönderelim
    header('Content-Type: image/png');

    imagepng($grnt);
    imagedestroy($grnt);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecreate() - Yeni bir paletli görüntü oluşturur
- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur

# imagerectangle

(PHP 4, PHP 5, PHP 7, PHP 8)

imagerectangle — Bir dikdörtgen çizer

### Açıklama

function imagerectangle(
GdImage `$görüntü`,
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`,
int `$renk`
): bool

imagerectangle() işlevi köşe koordinatları belirtilen dikdörtgeni çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x1`

  Sol üst köşenin X konumu.

`y1`

  Sol üst köşenin Y konumu. Sol üst köşenin koordinatları 0, 0'dır.

`x2`

  Sağ alt köşenin X konumu.

`y2`

  Sağ alt köşenin Y konumu.

`color`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagerectangle() örneği

    <?php
    // 200 x 200 bir görüntü oluşturalım
    $canvas = imagecreatetruecolor(200, 200);

    // Renkleri belirleyelim
    $pink = imagecolorallocate($canvas, 255, 105, 180);
    $white = imagecolorallocate($canvas, 255, 255, 255);
    $green = imagecolorallocate($canvas, 132, 135, 28);

    // Farklı renklerde üç dikdörtgen çizelim
    imagerectangle($canvas, 50, 50, 150, 150, $pink);
    imagerectangle($canvas, 45, 60, 120, 100, $white);
    imagerectangle($canvas, 100, 120, 75, 160, $green);

    // Görüntüyü çıktılayıp belleği serbest bırakalım
    header('Content-Type: image/jpeg');

    imagejpeg($canvas);
    imagedestroy($canvas);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imageresolution

(PHP 7 >= 7.2.0, PHP 8)

imageresolution — Görüntünün çözünürlüğünü tanımlar veya döndürür

### Açıklama

function imageresolution(GdImage `$görüntü`, ?int `$çözünürlük_x` = `null`, ?int `$çözünürlük_y` = `null`): array|bool

imageresolution() belirtilen görüntünün çözünürlüğünü inç başına nokta sayısı (DPI) olarak tanımlar veya döndürür. Seçimlik bağımsız değişkenlere `null` aktarılırsa, geçerli çözünürlük indisli bir dizide döndürülür. Sadece `çözünürlük_x` `null` değilse, yatay ve düşey çözünürlük bu değere ayarlanır. Seçimlik bağımsız değişkenlerin hiçbiri `null` değilse, yatay ve düşey çözünürlükler sırayla bu değerlere ayarlanır.

Çözünürlük yalnızca görüntüler bu tür bilgileri (şu anda PNG ve JPEG) destekleyen biçimlerden okunduğunda ve bu biçimlere yazıldığında temel bilgi olarak kullanılır. Herhangi bir çizim işlemini etkilemez. Yeni görüntüler için varsayılan çözünürlük 96 DPI'dır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`çözünürlük_x`

  DPI olarak yatay çözünürlük.

`çözünürlük_y`

  DPI olarak düşey çözünürlük.

### Dönen Değerler

Çözünürlüğü döndürmek için kullanıldığında başarılı olursa yatay ve düşey çözünürlükleri içeren bir dizi, başarısızlık durumunda `false` döner. Çözünürlüğü tanımlamak için kullanıldığında başarılı olursa `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `çözünürlük_x` ve `çözünürlük_y` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Bir görüntünün çözünürlüğünü tanımlamak ve döndürmek

    <?php
    $im = imagecreatetruecolor(100, 100);
    imageresolution($im, 200);
    print_r(imageresolution($im));
    imageresolution($im, 300, 72);
    print_r(imageresolution($im));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => 200
        [1] => 200
    )
    Array
    (
        [0] => 300
        [1] => 72
    )

# imagerotate

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

imagerotate — Bir görüntüyü belirtilen açıya göre döndürür

### Açıklama

function imagerotate(GdImage `$görüntü`, float `$açı`, int `$artalan`): GdImage|false

Belirtilen `görüntü`yü `açı` derece döndürür.

Dönüş merkezi görüntünün merkezi olup, döndürülen görüntü özgün görüntüden farklı boyutlara sahip olabilir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`açı`

  Derece olarak saat yönünün tersine dönüş açısı.

`artalan`

  Döndürme işleminden sonra boşta kalan yerin rengi.

### Dönen Değerler

Döndürülen görüntü nesnesini döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.3.0 | Kullanılmayan dördüncü bağımsız değişken kaldırıldı.
8.0.0 | Başarı durumunda artık GDImage nesnesi dönüyor; evvelce, resourcetüründe bir değer dönerdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | Kullanılmayan `şeffaflığı_yoksay` artık bool türünde değer kabul ediyor, evvelce int idi.

### Örnekler

Örnek 1 - Bir remin 180° döndürülmesi

Bu örnekte bir resim 180° (başağı) döndürülmektedir.

    <?php
    // Döndür ve doldur
    $filename = 'test.jpg';
    $degrees = 180;

    // İçerik türü
    header('Content-Type: image/jpeg');

    // görüntüyü yükle
    $source = imagecreatefromjpeg($filename);

    // Döndür
    $rotate = imagerotate($source, $degrees, 0);

    // Çıktıla
    imagejpeg($rotate);

    // Belleği serbest bırak
    imagedestroy($source);
    imagedestroy($rotate);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize:

> Bu işlev imagesetinterpolation() tarafından belirlenmiş ara değerleme yönteminden etkilenmez.

### Ayrıca Bakınız

- imagesetinterpolation() - Ara değerleme yöntemini tanımlar

# imagesavealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

imagesavealpha — Görüntüleri kaydederken alfa kanalı bilgisinin saklanıp saklanmayacağını belirtir

### Açıklama

function imagesavealpha(GdImage `$görüntü`, bool `$alfa_kaydet`): bool

imagesavealpha() işlevi görüntüleri kaydederken (tek renkli şeffaflığın tersine) alfa kanalı bilgisinin tamamının saklanması için seçenek belirtir. Bu, yalnızca tam alfa kanalı bilgilerini destekleyen `PNG`, `WebP` ve `AVIF` gibi görüntüler için desteklenir.

> Bilginize: `WebP` ve `AVIF` için alfa kanalının tamamı daima kaydedildiğinden imagesavealpha() yalnızca `PNG` görüntüler için anlamlıdır. Gelecekte değişebileceği için bu davranışa güvenilmesi önerilmez. Bu bakımdan imagesavealpha() işlevini `WebP` ve `AVIF` görüntüleri için de bunu bilerek çağırmak gerekir.

Alfa kanal bilgisinin durduğu yerde kalması için alfa harmanlamayı devreden çıkarmalısınız (`imagealphablending($im, false)`).

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`alfa_kaydet`

  Alfa kanalının saklanıp saklanmayacağını belirtilir; `false` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Temel imagesavealpha() kullanımı

    <?php
    // Alfa kanalları olan bir png gürüntüyü yükle
    $png = imagecreatefrompng('./alphachannel_example.png');

    // Gerekli işlemleri yap

    // Alfa harmanlamasını kapat
    imagealphablending($png, false);

    // Gerekli işlemleri yap

    // Alfa saklama seçeneğini etkin kıl
    imagesavealpha($png, true);

    // Görüntüyü tarayıcıya gönder
    header('Content-Type: image/png');

    imagepng($png);
    imagedestroy($png);
    ?>

### Ayrıca Bakınız

- imagealphablending() - Bir görüntü için harmanlama kipini etkinleştirir

# imagescale

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagescale — Görüntüyü belirtilen genişlik ve yüksekliği kullanarak oranlar

### Açıklama

function imagescale(
GdImage `$görüntü`,
int `$genişlik`,
int `$yükseklik` = -1,
int `$kip` = `IMG_BILINEAR_FIXED`
): GdImage|false

imagescale() belirtilen algoritmayı kullanarak görüntüyü oranlar.

> Bilginize:

> Çoğu GD işlevinin tersine, imagescale() işlevi aktarılan `görüntü` nesnesinde değişiklik yapmaz; yeni bir görüntü nesnesi döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`genişlik`

  Oranlanacak görüntüye uygulanacak genişlik.

`yükseklik`

  Oranlanacak görüntüye uygulanacak yükseklik. Belirtilmezse veya negatif ise mevcut oran korunur.

`kip`

  `IMG_NEAREST_NEIGHBOUR`, `IMG_BILINEAR_FIXED`, `IMG_BICUBIC`, `IMG_BICUBIC_FIXED` sabitlerinden biri veya başka herhangi bir şey (iki geçiş yapılır).

  > Bilginize: `IMG_WEIGHTED4` henüz desteklenmemektedir.

### Dönen Değerler

Başarı durumunda oranlanmış görüntü, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | İşlev başarı durumunda artık bir GDImage örneği döndürüyor; evvelce resource türünde bir değer dönerdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Ayrıca Bakınız

- imagecopyresized() - Görüntünün bir parçasını kopyalar ve boyutlandırır
- imagecopyresampled() - Görüntünün bir parçasını örnekleyerek kopyalar ve boyutlandırır

# imagesetbrush

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagesetbrush — Çizgi çizmek için fırça görüntüsü oluşturur

### Açıklama

function imagesetbrush(GdImage `$görüntü`, GdImage `$fırça`): bool

imagesetbrush() işlevi imageline() ve imagepolygon() gibi çizgi çizme işlevleri tarafından özel `IMG_COLOR_STYLED` veya `IMG_COLOR_STYLEDBRUSHED` renkli çizgilerini çizmek için kullanılan fırça resmini oluşturur.

Dikkat

Bir fırça ile işiniz bittiğinde özel bir işlem yapmanız gerekmez, fakat eğer fırça görüntüsünü silerseniz, yeni bir fırça görüntüsü oluşturana kadar `IMG_COLOR_BRUSHED` veya `IMG_COLOR_STYLEDBRUSHED` rengini kullanmamalısınız!

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`fırça`

  Bir görüntü nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` ve `fırça` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - imagesetbrush() örneği

    <?php
    // Minik bir PHP logosu yükle
    $php = imagecreatefrompng('./php.png');

    // 100x100'lük asıl görüntüyü oluştur
    $im = imagecreatetruecolor(100, 100);

    // Artalanı beyaz renkle doldur
    $white = imagecolorallocate($im, 255, 255, 255);
    imagefilledrectangle($im, 0, 0, 299, 99, $white);

    // Fırçayı oluştur
    imagesetbrush($im, $php);

    // Fırçayla bir çizgi çiz
    imageline($im, 50, 50, 50, 60, IMG_COLOR_BRUSHED);

    // Görüntüyü tarayıcıya gönder
    header('Content-type: image/png');

    imagepng($im);
    imagedestroy($im);
    imagedestroy($php);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagesetclip

(PHP 7 >= 7.2.0, PHP 8)

imagesetclip — Kırpma dikdörtgenini tanımlar

### Açıklama

function imagesetclip(
GdImage `$görüntü`,
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`
): bool

imagesetclip() geçerli kırpma dikdörtgenini tanımlar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x1`

  Üst sol köşenin x koordinatı.

`y1`

  Üst sol köşenin y koordinatı.

`x2`

  Alt sağ köşenin x koordinatı.

`y2`

  Alt sağ köşenin y koordinatı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Ayrıca Bakınız

- imagegetclip() - Kırpma dikdörtgenini döndürür

# imagesetinterpolation

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagesetinterpolation — Ara değerleme yöntemini tanımlar

### Açıklama

function imagesetinterpolation(GdImage `$görüntü`, int `$yöntem` = `IMG_BILINEAR_FIXED`): bool

Ara değerleme yöntemini tanımlar. Atanan ara değerleme yöntemi imagerotate() gibi çeşitli GD işlevlerini etkiler.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`yöntem`

  Ara değerleme yöntemi şunlaredan biri olabilir:

  - `IMG_BELL`: Çan süzgeci.
  - `IMG_BESSEL`: Bessel süzgeci.
  - `IMG_BICUBIC`: Çift kübik ara değerlemesi.
  - `IMG_BICUBIC_FIXED`: Çift kübik ara değerlemesinin sabit nokta uygulaması.
  - `IMG_BILINEAR_FIXED`: Çift doğrusal ara değerlemesinin sabit nokta uygulaması. (`öntanımlıdır (ayrıca görüntü oluşturmada)`).
  - `IMG_BLACKMAN`: Blackman pencere işlevi.
  - `IMG_BOX`: Kutu bulanıklığı süzgeci.
  - `IMG_BSPLINE`: Yivli ara değerleme.
  - `IMG_CATMULLROM`: Kübik Hermit yivli ara değerleme.
  - `IMG_GAUSSIAN`: Gauss işlevi.
  - `IMG_GENERALIZED_CUBIC`: Genelleştirilmiş kübik yivli fraktal ara değerlemesi.
  - `IMG_HERMITE`: Hermit ara değerlemesi.
  - `IMG_HAMMING`: Abartma süzgeci.
  - `IMG_HANNING`: Hanning süzgeci.
  - `IMG_MITCHELL`: Mitchell süzgeci.
  - `IMG_POWER`: Güç ara değerlemesi.
  - `IMG_QUADRATIC`: İkinci dereceden ters ara değerleme.
  - `IMG_SINC`: Sinc işlevi.
  - `IMG_NEAREST_NEIGHBOUR`: En yakın komşu ara değerlemesi.
  - `IMG_WEIGHTED4`: Ağırlıklandırma süzgeci.
  - `IMG_TRIANGLE`: Üçgen ara değerlemesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagesetinterpolation() örneği

    <?php
    // Görüntüyü yükle
    $görüntü = imagecreate(500, 500);

    // Öntanımlı ara değerleme: IMG_BILINEAR_FIXED
    // 'Mitchell' süzgecine geç:
    imagesetinterpolation($görüntü, IMG_MITCHELL);

    // $görüntü ile çalışmaya devam...
    ?>

### Notlar

Ara değerleme yöntemini değiştirmek, işlem sırasında aşağıdaki işlevleri etkiler:

- imageaffine()
- imagerotate()

### Ayrıca Bakınız

- imagegetinterpolation() - Ara değerleme yöntemini döndürür

# imagesetpixel

(PHP 4, PHP 5, PHP 7, PHP 8)

imagesetpixel — Bir pikselin rengini değiştirir

### Açıklama

function imagesetpixel(
GdImage `$görüntü`,
int `$x`,
int `$y`,
int `$renk`
): bool

imagesetpixel() işlevi koordinatları belirtilen pikselin rengini değiştirir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`x`

  Pikselin X konumu.

`y`

  Pikselin Y konumu.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagesetpixel() örneği

Normal bir resimle sonuçlanan rasgele bir çizim.

    <?php

    $x = 200;
    $y = 200;

    $gd = imagecreatetruecolor($x, $y);

    $corners[0] = array('x' => 100, 'y' =>  10);
    $corners[1] = array('x' =>   0, 'y' => 190);
    $corners[2] = array('x' => 200, 'y' => 190);

    $red = imagecolorallocate($gd, 255, 0, 0);

    for ($i = 0; $i < 100000; $i++) {
      imagesetpixel($gd, round($x), round($y), $red);
      $a = rand(0, 2);
      $x = ($x + $corners[$a]['x']) / 2;
      $y = ($y + $corners[$a]['y']) / 2;
    }

    header('Content-Type: image/png');
    imagepng($gd);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- imagecolorallocate() - Bir görüntü için bir renk ayırır
- imagecolorat() - Bir pikselin renk indisini döndürür

# imagesetstyle

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagesetstyle — Çizgi tarzını ayarlar

### Açıklama

function imagesetstyle(GdImage `$görüntü`, array `$tarz`): bool

imagesetstyle() işlevi imageline() ve imagepolygon() gibi çizgi çizme işlevleri tarafından özel `IMG_COLOR_STYLED` veya `IMG_COLOR_STYLEDBRUSHED` renkli çizgilerini çizmek için kullanılan çizgi tarzlarını ayarlamakta kullanılır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`tarz`

  Piksel renklerinden oluşan bir dizi. Şeffaf bir piksel eklemek için `IMG_COLOR_TRANSPARENT` sabitini kullanabilirsiniz. `tarz` boş bir dizi olmamalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Aşağıdaki betik örneğinde bir tuvalin sol üst köşesinden sağ alt köşesine kesikli çizgi çizilmektedir:

Örnek 1 - imagesetstyle() örneği

    <?php
    header("Content-Type: image/jpeg");
    $im  = imagecreatetruecolor(100, 100);
    $b   = imagecolorallocate($im, 255, 255, 255);
    $k = imagecolorallocate($im, 255, 0, 0);

    // 5 kırmızı 5 beyaz piksellik kesikli bir çizgi çiz/
    $style = array($k, $k, $k, $k, $k, $b, $b, $b, $b, $b);
    imagesetstyle($im, $style);
    imageline($im, 0, 0, 100, 100, IMG_COLOR_STYLED);

    // imagesetbrush ile imagesetstyle kullanarak
    //   mutlu yüzlerden bir çizgi çiz
    $style = array($b, $b, $b, $b, $b, $b, $b, $b, $b, $b, $b, $b, $k);
    imagesetstyle($im, $style);

    $brush = imagecreatefrompng("http://www.libpng.org/pub/png/images/smile.happy.png");
    $b2 = imagecolorallocate($brush, 255, 255, 255);
    imagecolortransparent($brush, $b2);
    imagesetbrush($im, $brush);
    imageline($im, 100, 0, 0, 100, IMG_COLOR_STYLEDBRUSHED);

    imagejpeg($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagesetbrush() - Çizgi çizmek için fırça görüntüsü oluşturur
- imageline() - Bir çizgi çizer

# imagesetthickness

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagesetthickness — Çizgi kalınlığını ayarlar

### Açıklama

function imagesetthickness(GdImage `$resim`, int `$kalınlık`): bool

imagesetthickness() işlevi, dörtgen, çokgen, elips ve saire çizerken kullanılan çizgilerin kalınlığını `kalınlık` piksele ayarlar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`kalınlık`

  Piksel cinsinden çizgi kalınlığı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagesetthickness() örneği

    <?php
    // 200x100 bir resim oluşturalım
    $im = imagecreatetruecolor(200, 100);
    $beyaz = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
    $siyah = imagecolorallocate($im, 0x00, 0x00, 0x00);

    // Artalan rengi beyaz olsun
    imagefilledrectangle($im, 0, 0, 299, 99, $beyaz);

    // Çizgi kalınlığını 5 piksel yapalım
    imagesetthickness($im, 5);

    // Dörtgeni siyah renkte çizelim
    imagerectangle($im, 14, 14, 185, 85, $siyah);

    // Resmi tarayıcıya gönderelim
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagesettile

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagesettile — Görüntüyü doldurmak için döşemeyi etkin kılar

### Açıklama

function imagesettile(GdImage `$görüntü`, GdImage `$karo`): bool

imagesettile() işlevi, imagefill() ve imagefilledpolygon() gibi görüntü doldurma işlevleri tarafından özel `IMG_COLOR_TILED` rengiyle doldurulmak üzere görüntü döşemeyi etkin kılar.

Bir karo, görüntü alanını doldurmak üzere yinelenen bir görüntü karesidir. Karo olarak herhangi bir GD görüntüsü kullanılabilir ve karo görüntüsüne imagecolortransparent() ile şeffaf renk indisi atanabilir. Bir karo, döşeneceği alanın belli parçaları parlak olacak şekilde oluşturulabilir.

Dikkat

Bir karo ile işiniz bittiğinde özel bir işlem yapmanız gerekmez, fakat eğer karo görüntüsünü silerseniz (ya da PHP'nin yok etmesine izin verirseniz), yeni bir karo görüntüsü oluşturana kadar `IMG_COLOR_TILED` rengini kullanmamalısınız!

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`karo`

  Bir karo olarak kullanılacak görüntü nesnesi.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` ve `karo` artık GdImage nesnesi; evvelce resource türünde bir değer olmalıydı.

### Örnekler

Örnek 1 - imagesettile() örneği

    <?php
    // Bir görüntü yükleyelim
    $zend = imagecreatefromgif('./zend.gif');

    // 200x200 bir görüntü oluşturalım
    $im = imagecreatetruecolor(200, 200);

    // Döşemeyi etkin kılalım
    imagesettile($im, $zend);

    // Yüklediğimiz görüntünün döşenmesini sağlayalım
    imagefilledrectangle($im, 0, 0, 199, 199, IMG_COLOR_TILED);

    // Görüntüyü tarayıcıya gönderelim
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    imagedestroy($zend);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# imagestring

(PHP 4, PHP 5, PHP 7, PHP 8)

imagestring — Bir dizgeyi yatay olarak yazar

### Açıklama

function imagestring(
GdImage `$görüntü`,
GdFont|int `$yazıtipi`,
int `$x`,
int `$y`,
string `$dizge`,
int `$renk`
): bool

Belirtilen `dizge`'yi belirtilen yere çizer.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

`x`

  Üst sol köşenin X konumu.

`y`

  Üst sol köşenin Y konumu.

`dizge`

  Çizilecek dizge.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagestring() örneği

    <?php
    // 100*30'luk bir görüntü oluşturalım
    $im = imagecreate(100, 30);

    // Beyaz artalan üstüne mavi metin
    $bg = imagecolorallocate($im, 255, 255, 255);
    $textcolor = imagecolorallocate($im, 0, 0, 255);

    // Dizgeyi görüntünün sol üst tarafına yazalım
    imagestring($im, 5, 0, 0, 'Hello world!', $textcolor);

    // Görüntüyü çıktılayalım
    header('Content-type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagestringup() - Bir dizgeyi 90 derece döndürülmüş olarak yazar
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler
- imagettftext() - Metni görüntüye TrueType yazı tipi ile yazar

# imagestringup

(PHP 4, PHP 5, PHP 7, PHP 8)

imagestringup — Bir dizgeyi 90 derece döndürülmüş olarak yazar

### Açıklama

function imagestringup(
GdImage `$görüntü`,
GdFont|int `$yazıtipi`,
int `$x`,
int `$y`,
string `$dizge`,
int `$renk`
): bool

Belirtilen dizgeyi belirtilen yere düşey olarak yazar.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`yazıtipi`

  Değer olarak, Latin2 kodlamalı yerleşik yazı tipleri için 1, 2, 3, 4, 5 (daha büyük numara daha yüksek yazı tipine karşılıktır) veya imageloadfont() işlevinden dönen GdFont örneği belirtilebilir.

`x`

  Alt sol köşenin X konumu.

`y`

  Alt sol köşenin Y konumu.

`dizge`

  Çizilecek dizge.

`renk`

  imagecolorallocate() işlevi le oluşturulmuş bir renk tanıtıcı..

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `yazıtipi` bağımsız değişkeni artık ya GdFont nesnesi ya da tamsayı değer kabul ediyor, evvelce sadece tamsayı değer kabul edilirdi.
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagestringup() örneği

    <?php
    // 100*100 bir görüntü oluşturalım
    $im = imagecreatetruecolor(100, 100);

    // Metni çizelim
    $textcolor = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
    imagestringup($im, 3, 40, 80, 'gd library', $textcolor);

    // Görüntüyü kaydedelim
    imagepng($im, './stringup.png');
    imagedestroy($im);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- imagestring() - Bir dizgeyi yatay olarak yazar
- imageloadfont() - Yeni bir bit eşlemli yazı tipi yükler

# imagesx

(PHP 4, PHP 5, PHP 7, PHP 8)

imagesx — Görüntünün genişliğini döndürür

### Açıklama

function imagesx(GdImage `$görüntü`): int

Belirtilen görüntünün genişliğini döndürür

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

`görüntü`nün genişliğini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagesx() örneği

    <?php

    // 300*200'lük bir görüntü oluşturalım
    $img = imagecreatetruecolor(300, 200);

    echo imagesx($img); // çıktısı: 300

    ?>

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- getimagesize() - Bir görüntünün boyutlarını döndürür
- imagesy() - Görüntünün yüksekliğini döndürür

# imagesy

(PHP 4, PHP 5, PHP 7, PHP 8)

imagesy — Görüntünün yüksekliğini döndürür

### Açıklama

function imagesy(GdImage `$görüntü`): int

Belirtilen görüntünün yüksekliğini döndürür.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

### Dönen Değerler

`görüntü`nün yüksekliğini döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - imagesy() örneği

    <?php

    // 300*200'lük bir resim oluşturalım
    $img = imagecreatetruecolor(300, 200);

    echo imagesy($img); // çıktısı: 200

    ?>

### Ayrıca Bakınız

- imagecreatetruecolor() - Yeni bir gerçek renkli görüntü oluşturur
- getimagesize() - Bir görüntünün boyutlarını döndürür
- imagesx() - Görüntünün genişliğini döndürür

# imagetruecolortopalette

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagetruecolortopalette — Gerçek renkli görüntüyü paletli görüntüye dönüştürür

### Açıklama

function imagetruecolortopalette(GdImage `$görüntü`, bool `$titrek`, int `$renk_sayısı`): bool

imagetruecolortopalette() işlevi bir gerçek renkli görüntüyü bir paletli görüntüye dönüştürür. Bu işlevde Bağımsız JPEG Grubunun kütüphanesindeki çok iyi sonuçlar veren özgün koddan yararlanılmıştır. Paleti elde etmek için alfa kanalı bilgisi ve mevcut renkler mümkün olduğunca korunmaya çalışılarak kodda değişiklik yapılmıştır. Bu umulduğu kadar iyi çalışmamaktadır. En yüksek çıktı kalitesine ulaşmak için en iyisi gerçek renkli görüntü çıktısı üretimini basitleştirmektir.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`titrek`

  Görüntünün titrek olup olmayacağı belirtilir. Görüntünün titrek olması için `true` belirtildiği takdirde görüntü daha benekli olur fakat renk geçişleri daha iyi olur.

`renk_sayısı`

  Palette bulunacak azami renk sayısı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - Gerçek renkli görüntüyü paletli görüntüye dönüştürmek

    <?php
    // Bir gerçek renkli görüntü oluştur
    $im = imagecreatetruecolor(100, 100);

    // 255 renkli bir palete sahip bir görüntüye dönüştür
    imagetruecolortopalette($im, false, 255);

    // Görüntüyü kaydet
    imagepng($im, './paletteimage.png');
    imagedestroy($im);
    ?>

# imagettfbbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettfbbox — TrueType yazıtipi kullanılan bir metnin çerçevesini döndürür

### Açıklama

function imagettfbbox(
float `$boyut`,
float `$açı`,
string `$yazıtipi`,
string `$metin`,
array `$seçenekler` = []
): array|false

Bir TrueType metin için yazıyı çevreleyen kutunun sınırlarını piksel cinsinden hesaplar ve sonucu bir dizi içinde döndürür.

> Bilginize:

> PHP 8.0.0 öncesinde imageftbbox() işlevi imagettfbbox() işlevinin geliştirilmişi olup ek olarak `seçenekler` bağımsız değişkenine sahipti. PHP 8.0.0 ve sonrasında imagettfbbox() işlevi imageftbbox() işlevinin takma adıdır.

### Bağımsız Değişkenler

`boyut`

  Punto cinsinden yazıtipi boyutu.

`açı`

  Belirtilen metnin yazım açısı.

`ytdosyası`

  TrueType yazı tipinin dosya yolu.

  PHP'nin kullandığı GD kütüphanesi sürümüne bağlı olarak, `ytdosyası` bir `/` ile başlamıyorsa dosya adına `.ttf` uzantısı eklenir ve kütüphane bu dosyayı kütüphanede tanımlı bir dosya yolunda bulmaya çalışır.

  2.0.18'den küçük sürümlü GD kütüphanesi kulllanılıyorsa farklı yazı tipi dosyalarının yolları arasında noktalı virgül yerine `boşluk` karakteri kullanılır. Bu özelliğin boşluk karakterleri içeren dosya yollarında kullanımı bir uyarı iletisiyle sonuçlanır: `Warning: Could not find/open font`. Bundan etkilenen sürümler için tek çözüm yazı tipi dosyasını boşluklar içermeyen bir dosya yoluna taşımaktır.

  Bir yazı tipinin, kullanıldığı komut dosyasıyla aynı dizinde bulunduğu durumlarda, aşağıdaki çözüm bu sorunu ortadan kaldıracaktır.

      <?php
      // GD için ortam değişkeni
      putenv('GDFONTPATH=' . realpath('.'));

      // Yazı tipinin ismi (.ttf uzantısının olmayışına dikkat)
      $ytdosyası = 'biryt';
      ?>

  > Bilginize:

  > open_basedir `ytdosyası`na uygulanmaz.

`metin`

  Çerçevesi hesaplanacak metin.

### Dönen Değerler

Bir hata durumunda `false` yoksa metin çerçevesinin dört köşesinin koordinatlarını içeren 8 elemanlı bir dizi döner:

anahtar | içeriği
--- | ---
0 | Sol alt köşenin X konumu
1 | Sol alt köşenin Y konumu
2 | Sağ alt köşenin X konumu
3 | Sağ alt köşenin Y konumu
4 | Sağ üst köşenin X konumu
5 | Sağ üst köşenin Y konumu
6 | Sol üst köşenin X konumu
7 | Sol üst köşenin Y konumu

Noktalar açıdan bağımsız olarak metne görelidir. Yani, "sol üst" denince metne yatay olarak bakarkenki sol üst köşe kastedilmektedir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - imagettfbbox() örneği

    <?php
    // 300x150'lik bir görüntü oluştur
    $im = imagecreatetruecolor(300, 150);
    $black = imagecolorallocate($im, 0, 0, 0);
    $white = imagecolorallocate($im, 255, 255, 255);

    // Artalan rengi beyaz olsun
    imagefilledrectangle($im, 0, 0, 299, 299, $white);

    // Bu yazı tipi dosyası olsun
    $font = './arial.ttf';

    // İlk metnin çerçevesini oluştur
    $bbox = imagettfbbox(10, 45, $font, 'Powered by PHP ' . phpversion());

    // Bunlar X ve Y koordinatları olsun
    $x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
    $y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

    // Metni yaz
    imagettftext($im, 10, 45, $x, $y, $black, $font, 'Powered by PHP ' . phpversion());

    // Şimdi ikinci metnin çerçevesini oluştur
    $bbox = imagettfbbox(10, 45, $font, 'and Zend Engine ' . zend_version());

    // Bu metin ilkinin altında olsun
    $x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
    $y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

    // Metni yaz
    imagettftext($im, 10, 45, $x, $y, $black, $font, 'and Zend Engine ' . zend_version());

    // Tarayıcıya çıktıla
    header('Content-Type: image/png');

    imagepng($im);
    imagedestroy($im);
    ?>

### Notlar

> Bilginize: Bu işlev sadece, PHP, freetype desteği (--with-freetype-dir=DİZİN seçeneği) ile derlenmişse kullanılabilir.

### Ayrıca Bakınız

- imagettftext() - Metni görüntüye TrueType yazı tipi ile yazar
- imageftbbox() - Bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar

# imagettftext

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettftext — Metni görüntüye TrueType yazı tipi ile yazar

### Açıklama

function imagettftext(
GdImage `$görüntü`,
float `$boyut`,
float `$açı`,
int `$x`,
int `$y`,
int `$renk`,
string `$yazıtipi`,
string `$metin`,
array `$seçenekler` = []
): array|false

Belirtilen metni belirtilen TrueType yazı tipi ile belirtilen görüntüye yazar.

> Bilginize:

> PHP 8.0.0 öncesinde imagefttext() işlevi imagettftext() işlevinin geliştirilmişi olup ek olarak `seçenekler` bağımsız değişkenine sahipti. PHP 8.0.0 ve sonrasında imagettftext() işlevi imagefttext() işlevinin takma adıdır.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`boyut`

  Punto cinsinden yazıtipi boyutu.

`açı`

  Derece cinsinden açı. Soldan sağa yazılan bir metnin açısı 0 derecedir. Daha büyük değerler yelkovanın ters yönünde belirtilmiş varsayılır. Örneğin 90 derecelik bir metin aşağıdan yukarı doğru yazılır.

`x`

  `x` ve `y` ile belirtilen koordinatlar ilk harfin taban noktasını (kabaca harfin sol alt köşesi) tanımlar. Bu tanımlama, koordinatların harfin sol üst köşesini tanımladığı imagestring() işlevinden farklıdır. Resmin sol üst köşesinin koordinatları 0, 0'dır.

`y`

  `x` bağımsız değişkenine bakınız.

`renk`

  Renk indisi. Negatif bir renk indisi kenar yumuşatmayı kapatır. imagecolorallocate() işlevine bakınız.

`ytdosyası`

  TrueType yazı tipinin dosya yolu.

  PHP'nin kullandığı GD kütüphanesi sürümüne bağlı olarak, `ytdosyası` bir `/` ile başlamıyorsa dosya adına `.ttf` uzantısı eklenir ve kütüphane bu dosyayı kütüphanede tanımlı bir dosya yolunda bulmaya çalışır.

  2.0.18'den küçük sürümlü GD kütüphanesi kulllanılıyorsa farklı yazı tipi dosyalarının yolları arasında noktalı virgül yerine `boşluk` karakteri kullanılır. Bu özelliğin boşluk karakterleri içeren dosya yollarında kullanımı bir uyarı iletisiyle sonuçlanır: `Warning: Could not find/open font`. Bundan etkilenen sürümler için tek çözüm yazı tipi dosyasını boşluklar içermeyen bir dosya yoluna taşımaktır.

  Bir yazı tipinin, kullanıldığı komut dosyasıyla aynı dizinde bulunduğu durumlarda, aşağıdaki çözüm bu sorunu ortadan kaldıracaktır.

      <?php
      // GD için ortam değişkeni
      putenv('GDFONTPATH=' . realpath('.'));

      // Yazı tipinin ismi (.ttf uzantısının olmayışına dikkat)
      $ytdosyası = 'biryt';
      ?>

  > Bilginize:

  > open_basedir `ytdosyası`na uygulanmaz.

`metin`

  UTF-8 kodlanmış metin dizgesi.

  Karakter numarası 127'den büyük karakterler için onluk karakter numarası (&#8364; şeklinde) belirtilebilir. Onaltılık gösterim de (&#xA9; şeklinde) desteklenmektedir. UTF-8 kodlu metinler doğrudan aktarılabilir.

  &copy; gibi isimli öğeler desteklenmemektedir. Bu tür isimli öğeleri UTF-8 dizgelerde kullanmak için html_entity_decode() işlevi ile dönüştürebilirsiniz.

  Eğer yazı tipi tarafından desteklenmeyen bir karakter belirtirseniz karakterin yerinde boş bir dikdörtgen görürsünüz.

### Dönen Değerler

Hata durumunda `false` yoksa metin çerçevesinin dört köşesinin koordinatlarını içeren 8 elemanlı bir dizi döner. Çerçevenin köşeleri dizide sırayla şunlardır: sol alt, sağ alt, sağ üst, sol üst. Noktalar açıdan bağımsız olarak metne görelidir. Yani, "sol üst" denince metne yatay olarak bakarkenki sol üst köşe kastedilmektedir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - imagettftext() örneği

Bu örnek betik, içinde Arial yazı tipi ile siyah renkte (gri gölgeli) "Testing..." yazılmış 400x30 piksellik beyaz bir PNG görüntü üretecektir.

    <?php
    // İçerik türünü belirt
    header('Content-Type: image/png');

    // Görüntüyü boş olarak oluştur
    $resim = imagecreatetruecolor(400, 30);

    // Renkleri tanımla
    $beyaz = imagecolorallocate($resim, 255, 255, 255);
    $gri = imagecolorallocate($resim, 128, 128, 128);
    $siyah = imagecolorallocate($resim, 0, 0, 0);
    imagefilledrectangle($resim, 0, 0, 399, 29, $beyaz);

    // Metni tanımla
    $metin = 'Testing...';
    // Buraya kendi dosya yolunuzu yaz
    $font = 'arial.ttf';

    // Metne gölge ver
    imagettftext($resim, 20, 0, 11, 21, $gri, $font, $metin);

    // Metni ekle
    imagettftext($resim, 20, 0, 10, 20, $siyah, $font, $metin);

    // imagejpeg()'ye göre daha temiz sonuç veren imagepng()'yi kullan
    imagepng($resim);
    imagedestroy($resim);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Notlar

> Bilginize: Bu işlev sadece, PHP, freetype desteği (--with-freetype-dir=DİZİN seçeneği) ile derlenmişse kullanılabilir.

### Ayrıca Bakınız

- imagettfbbox() - TrueType yazıtipi kullanılan bir metnin çerçevesini döndürür
- imagefttext() - Bir metni bir görüntüye bir FreeType 2 yazı tipini kullanarak yazar

# imagetypes

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

imagetypes — Kurulu PHP'nin desteklediği görüntü türlerini döndürür

### Açıklama

function imagetypes(): int

Kurulu PHP'nin desteklediği görüntü türlerini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

PHP ile ilitilenmiş GD kütüphanesinin desteklediği görüntü biçemleri ile ilgili bir bit alanı döndürür. Bu alanla sınanabilecek sabitlerin isimleri: `IMG_AVIF` | `IMG_BMP` | `IMG_GIF` | `IMG_JPG` | `IMG_PNG` | `IMG_WBMP` | `IMG_XPM` | `IMG_WEBP`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `IMG_AVIF` eklendi.
7.2.0 | `IMG_BMP` eklendi.
7.0.10 | `IMG_WEBP` eklendi.

### Örnekler

Örnek 1 - PNG desteğinin sınanması

    <?php
    if (imagetypes() & IMG_PNG) {
        echo "PNG destekleniyor";
    }
    ?>

### Ayrıca Bakınız

- gd_info() - Kurulu GD kütüphanesi hakkında bilgi verir

# imagewbmp

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagewbmp — Görüntüyü tarayıcıya veya dosyaya yazar.

### Açıklama

function imagewbmp(GdImage `$görüntü`, resource|string|null `$dosya` = `null`, ?int `$artalan` = `null`): bool

Belirtilen görüntüyü WBMP biçemli olarak çıktılar veya kaydeder.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

`artalan`

  imagecolorallocate() tarafından sağlanmış bir tanıtıcı ile bir artalan rengi tanımlayabilirsiniz. Öntanımlı artalan rengi siyahtır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.
8.0.0 | `artalan` artık `null` olabiliyor.

### Örnekler

Örnek 1 - Bir WBMP görüntüyü çıktılamak

    <?php
    // Boş bir görüntü oluşturup üzerine bir metin ekle
    $resim = imagecreatetruecolor(120, 20);
    $metin_rengi = imagecolorallocate($resim, 233, 14, 91);
    imagestring($resim, 1, 5, 5,  'Bir deneme dizgesi', $metin_rengi);

    // İçerik türü başlığını ayarla: image/vnd.wap.wbmp
    // İpucu: içerik türleri için image_type_to_mime_type() işlevine bakılabilir
    header('Content-Type: image/vnd.wap.wbmp');

    // Görüntüyü çıktıla
    imagewbmp($resim);

    // Belleği serbest bırak
    imagedestroy($resim);
    ?>

Örnek 2 - Bir WBMP görüntünün kaydedilmesi

    <?php
    // Boş bir görüntü oluşturup üzerine bir metin ekle
    $resim = imagecreatetruecolor(120, 20);
    $metin_rengi = imagecolorallocate($resim, 233, 14, 91);
    imagestring($resim, 1, 5, 5,  'Bir deneme dizgesi', $metin_rengi);

    // Görüntüyü kaydet
    imagewbmp($im, 'dnm.wbmp');

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

Örnek 3 - Görüntüyü farklı bir artalan rengi ile çıktılamak

    <?php
    // Boş bir görüntü oluşturup üzerine bir metin ekle
    $resim = imagecreatetruecolor(120, 20);
    $metin_rengi = imagecolorallocate($resim, 233, 14, 91);
    imagestring($resim, 1, 5, 5,  'Bir deneme dizgesi', $metin_rengi);

    // İçerik türü başlığını ayarla: image/vnd.wap.wbmp
    // İpucu: içerik türleri için image_type_to_mime_type() işlevine bakılabilir
    header('Content-Type: image/vnd.wap.wbmp');

    // Yeni artalan rengini ayarla
    $artalan_rengi = imagecolorallocate($resim, 255, 0, 0);

    imagewbmp($resim, NULL, $artalan_rengi);

    // Belleği serbest bırak
    imagedestroy($resim);
    ?>

### Ayrıca Bakınız

- image2wbmp() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagepng() - Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagegif() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagejpeg() - Görüntüyü tarayıcıya veya dosyaya yazar.
- imagetypes() - Kurulu PHP'nin desteklediği görüntü türlerini döndürür

# imagewebp

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

imagewebp — WebP görüntüyü tarayıcıya veya dosyaya çıktılar

### Açıklama

function imagewebp(GdImage `$görüntü`, resource|string|null `$dosya` = `null`, int `$kalite` = -1): bool

Belirtilen `görüntü` nesnesini çıktılar veya kaydeder.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosya`

  Dosyanın kaydedileceği yol veya işlev döndüğünde kendiliğinden kapanan açık bir akım kaynağı. `null` atanırsa veya hiçbir şey atanmazsa doğrudan ham görüntü akımı çıktılanır.

`kalite`

  `kalite` 0 (en kötü kalite, daha küçük dosya) ile 100 (en iyi kalite, daha büyük dosya) arasında olmalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `görüntü` bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir `gd` değeri gerekirdi.

### Örnekler

Örnek 1 - WebP görüntünün dosyaya kaydedilmesi

    <?php
    // Boş bir görüntü oluştur ve bir metin çiz
    $im = imagecreatetruecolor(120, 20);
    $text_color = imagecolorallocate($im, 233, 14, 91);

    imagestring($im, 1, 5, 5,  'WebP with PHP', $text_color);

    // Görüntüyü kaydet
    imagewebp($im, 'php.webp');

    // Belleği serbest bırak
    imagedestroy($im);
    ?>

# imagexbm

(PHP 5, PHP 7, PHP 8)

imagexbm — Bir XBM görüntüyü tarayıcıya veya dosyaya çıktılar

### Açıklama

function imagexbm(GdImage `$görüntü`, ?string `$dosya`, ?int `$önalan` = `null`): bool

Belirtilen görüntünün XBM sürümünü çıktılar veya kaydeder.

> Bilginize: imagexbm() herhangi bir dolgulama yapmaz, dolayısıyla resim genişliği 8 ile çarpılmalıdır. Bu sınırlama artık PHP 7.0.9 itibariyle uygulanmıyor.

### Bağımsız Değişkenler

`görüntü`

  imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

`dosyaismi`

  Dizge olarak görüntünün kaydedileceği dosyanın yolu. `null` verilirse doğrudan ham görüntü akımı çıktılanır.

  `dosyaismi` (.xbm uzantısız) ayrıca XBM'nin C tanımlayıcıları için de kullanılır, dolayısıyla geçerli yerelin alfasayısal olmayan karakterleri altçizgilerle ikame edilir. `dosyaismi` olarak `null` verilirse `görüntü` C tanıtıcıları için kullanılır.

`önalan`

  imagecolorallocate() tarafından sağlanmış bir tanıtıcı ile bir önalan rengi tanımlayabilirsiniz. Öntanımlı önalan rengi siyahtır. Kalan tüm renkler artalan rengidir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `önalan` artık `null` olabiliyor.
8.0.0 | Kullanılmayan dördüncü bağımsız değişken kaldırıldı.

### Örnekler

Örnek 1 - Bir XBM dosyasının kaydedilmesi

    <?php
    // Boş bir görüntü oluşturup üzerine bir metin ekle
    $resim = imagecreatetruecolor(120, 20);
    $metin_rengi = imagecolorallocate($resim, 233, 14, 91);
    imagestring($resim, 1, 5, 5,  'Bir deneme dizgesi', $metin_rengi);

    // Görüntüyü kaydet
    imagexbm($resim, 'dnm.xbm');

    // Belleği serbest bırak
    imagedestroy($resim);
    ?>

Örnek 2 - XBM dosyasını farklı bir artalan rengi ile çıktılamak

    <?php
    // Boş bir görüntü oluşturup üzerine bir metin ekle
    $resim = imagecreatetruecolor(120, 20);
    $metin_rengi = imagecolorallocate($resim, 233, 14, 91);
    imagestring($resim, 1, 5, 5,  'Bir deneme dizgesi', $metin_rengi);

    // Yeni önalan rengini ayarla
    $önalan_rengi = imagecolorallocate($resim, 255, 0, 0);

    // Görüntüyü çıktıla
    imagexbm($resim, NULL, $artalan_rengi);

    // Belleği serbest bırak
    imagedestroy($resim);
    ?>

# iptcembed

(PHP 4, PHP 5, PHP 7, PHP 8)

iptcembed — İkil IPTC verisini bir JPEG görüntünün içine gömer

### Açıklama

function iptcembed(string `$iptc_verisi`, string `$dosyaismi`, int `$kuyruk` = 0): string|bool

İkil IPTC verisini bir JPEG görüntünün içine gömer.

### Bağımsız Değişkenler

`iptc_verisi`

  Yazılacak veri.

`dosyaismi`

  JPEG görüntünün dosya yolu.

`kuyruk`

  Kuyruk seçeneği; 2'den küçükse JPEG bir dizge olarak döner. Değilse, JPEG standart çıktıya basılır.

### Dönen Değerler

Bir hata oluşursa `false` döner. Başarı durumunda `kuyruk` seçeneği 2'den küçükse JPEG bir dizge olarak döner, başarısızlık durumunda `false` döner. Aksi takdirde başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - IPTC verisinin bir JPEG içine gömülmesi

    <?php

    // Thies C. Arntzen'in yazdığı iptc_make_tag() işlevi
    function iptc_make_tag($rec, $data, $value)
    {
        $length = strlen($value);
        $retval = chr(0x1C) . chr($rec) . chr($data);

        if($length < 0x8000)
        {
            $retval .= chr($length >> 8) .  chr($length & 0xFF);
        }
        else
        {
            $retval .= chr(0x80) .
                       chr(0x04) .
                       chr(($length >> 24) & 0xFF) .
                       chr(($length >> 16) & 0xFF) .
                       chr(($length >> 8) & 0xFF) .
                       chr($length & 0xFF);
        }

        return $retval . $value;
    }

    // jpeg dosyasının yolu
    $path = './phplogo.jpg';

    // IPTC etiketlerini düzenle
    $iptc = array(
        '2#120' => 'Test image',
        '2#116' => 'Copyright 2008-2009, The PHP Group'
    );

    // IPTC etiketlerini ikil veriye dönüştür
    $data = '';

    foreach($iptc as $tag => $string)
    {
        $tag = substr($tag, 2);
        $data .= iptc_make_tag(2, $tag, $string);
    }

    // IPTC verisini görüntüye göm
    $content = iptcembed($data, $path);

    // Yeni görüntü verisini dosyaya yaz
    $fp = fopen($path, "wb");
    fwrite($fp, $content);
    fclose($fp);
    ?>

### Notlar

> Bilginize:

> Bu işlev için GD görüntü kütüphanesi gerekli değildir.

# iptcparse

(PHP 4, PHP 5, PHP 7, PHP 8)

iptcparse — Bir ikil IPTC bloğunu tekil etiketlere böler

### Açıklama

function iptcparse(string `$iptc_bloğu`): array|false

Bir » IPTC bloğunu tekil etiketler halinde çözümler.

### Bağımsız Değişkenler

`iptc_bloğu`

  Bir ikil IPTC bloğu.

### Dönen Değerler

İndis olarak etiket imleyici ve değer olarak değeri kullanan bir dizi döndürür. Bir hata oluşmuşsa veya hiç IPTC verisi yoksa `false` döner.

### Örnekler

Örnek 1 - getimagesize() ile iptcparse() kullanımı

    <?php
    $size = getimagesize('./test.jpg', $info);
    if(isset($info['APP13']))
    {
        $iptc = iptcparse($info['APP13']);
        var_dump($iptc);
    }
    ?>

### Notlar

> Bilginize:

> Bu işlev için GD görüntü kütüphanesi gerekli değildir.

# jpeg2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

jpeg2wbmp — Bir JPEG dosyasını WBMP dosyasına dönüştürür

Uyarı

Bu işlevin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function jpeg2wbmp(
string `$jpegdosya`,
string `$wbmpdosya`,
int `$hdf_yüks`,
int `$hdf_genş`,
int `$eşik`
): bool

Bir JPEG görüntü dosyasını WBMP görüntü dosyasına dönüştürür.

### Bağımsız Değişkenler

`jpegdosya`

  JPEG dosyasının yolu.

`wbmpdosya`

  Hedef WBMP dosyasının yolu.

`hdf_yüks`

  Hedef görüntü yüksekliği.

`hdf_genş`

  Hedef görüntü genişliği.

`eşik`

  0'dan 8'e kadar eşik değer.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Örnekler

Örnek 1 - jpeg2wbmp() örneği

    <?php
    // JPEG görüntü
    $jpg = './dnm.jpg';

    // görüntü boyutlarını öğren
    $boyutlar = getimagesize($jpg);

    // görüntüyü dönüştür
    jpeg2wbmp($jpg, './dnm.wbmp', $boyutlar[1], $boyutlar[0], 5);
    ?>

### Ayrıca Bakınız

- png2wbmp() - Bir PNG dosyasını WBMP dosyasına dönüştürür

# png2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

png2wbmp — Bir PNG dosyasını WBMP dosyasına dönüştürür

Uyarı

Bu işlevin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function png2wbmp(
string `$png_dosya`,
string `$wbmp_dosya`,
int `$hdf_yüks`,
int `$hdf_genş`,
int `$eşik`
): bool

Bir PNG görüntü dosyasını WBMP görüntü dosyasına dönüştürür.

### Bağımsız Değişkenler

`png_dosya`

  PNG dosyasının yolu.

`wbmp_dosya`

  Hedef WBMP dosyasının yolu.

`hdf_yüks`

  Hedef görüntü yüksekliği.

`hdf_genş`

  Hedef görüntü genişliği.

`eşik`

  0'dan 8'e kadar eşik değer.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

Dikkat

Ancak, libgd görüntüyü çıktılamakta başarısız olursa bu işlev `true` döndürür.

### Örnekler

Örnek 1 - png2wbmp() örneği

    <?php
    // PNG dosyası
    $png = './dnm.png';

    // görüntü boyutlarını öğren
    $boyutlar = getimagesize($png);

    // görüntüyü dönüştür
    png2wbmp($png, './dnm.wbmp', $boyutlar[1], $boyutlar[0], 7);
    ?>

### Ayrıca Bakınız

- jpeg2wbmp() - Bir JPEG dosyasını WBMP dosyasına dönüştürür

## İçindekiler

- gd_info — Kurulu GD kütüphanesi hakkında bilgi verir
- getimagesize — Bir görüntünün boyutlarını döndürür
- getimagesizefromstring — Dizgedeki görüntünün boyutunu döndürür
- image_type_to_extension — Resim türü ile ilgili dosya uzantısını döndürür
- image_type_to_mime_type — getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür
- image2wbmp — Görüntüyü tarayıcıya veya dosyaya yazar.
- imageaffine — İsteğe bağlı bir kırpma alanı kullanarak, belirtilen görüntüye ilgin dönüşümü uygulayıp sonucu döndürür
- imageaffinematrixconcat — İki ilgin dönüşüm matrisini birleştirir
- imageaffinematrixget — İlgin dönüşüm matrisini döndürür
- imagealphablending — Bir görüntü için harmanlama kipini etkinleştirir
- imageantialias — Kenar yumuşatma işlevlerini uygulatır
- imagearc — Bir yay çizer
- imageavif — Görüntüyü tarayıcıya veya dosyaya yazar.
- imagebmp — BMP görüntüyü tarayıcıya veya dosyaya çıktılar
- imagechar — Yatay olarak bir karakter çizer
- imagecharup — Düşey olarak bir karakter çizer
- imagecolorallocate — Bir görüntü için bir renk ayırır
- imagecolorallocatealpha — Bir görüntü için alfa kanallı bir renk ayırır
- imagecolorat — Bir pikselin renk indisini döndürür
- imagecolorclosest — Belirtilen rengin en yakın benzerinin indisini döndürür
- imagecolorclosestalpha — Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir
- imagecolorclosesthwb — En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini verir
- imagecolordeallocate — Bir rengi tanımsız yapar
- imagecolorexact — Belirtilen rengin indisini döndürür
- imagecolorexactalpha — Alfası ile birlikte belirtilen rengin indisini verir
- imagecolormatch — Bir görüntünün paletli sürümünün renklerini gerçek renkli sürümünün renkleriyle aynı yapar
- imagecolorresolve — Belirtilen rengin veya en yakın benzerinin indisini döndürür
- imagecolorresolvealpha — Alfası ile birlikte belirtilen rengin veya en yakın benzerinin renk indisini verir
- imagecolorset — Bir palet indisi için renk tanımlar
- imagecolorsforindex — Bir renk indisinin renk bilgisini döndürür
- imagecolorstotal — Bir görüntü paletindeki renk sayısını döndürür
- imagecolortransparent — Bir rengi şeffaflaştırır
- imageconvolution — Bir konum ve katsayı ile 3x3'lük bir evrişim matrisini uygular
- imagecopy — Bir resim parçasını kopyalar
- imagecopymerge — Bir görüntüyü kopyalar ve karıştırır
- imagecopymergegray — Bir görüntüyü kopyalar ve gri tonlama ile karıştırır
- imagecopyresampled — Görüntünün bir parçasını örnekleyerek kopyalar ve boyutlandırır
- imagecopyresized — Görüntünün bir parçasını kopyalar ve boyutlandırır
- imagecreate — Yeni bir paletli görüntü oluşturur
- imagecreatefromavif — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefrombmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromgd — Bir GD dosyasından veya URL'sinden yeni bir görüntü oluşturur
- imagecreatefromgd2 — Bir GD2 dosyasından veya URL'sinden yeni bir görüntü oluşturur
- imagecreatefromgd2part — Bir GD2 parça dosyasından veya URL'sinden yeni bir görüntü oluşturur
- imagecreatefromgif — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromjpeg — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefrompng — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromstring — Belirtilen dizgeden yeni bir görüntü oluşturur
- imagecreatefromtga — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromwbmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromwebp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromxbm — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatefromxpm — Bir dosya veya URL'den yeni bir görüntü oluşturur.
- imagecreatetruecolor — Yeni bir gerçek renkli görüntü oluşturur
- imagecrop — Görüntüyü belirtilen dikdörtgen ile kırpar
- imagecropauto — Mevcut kiplerden birini kullanarak görüntüyü otomatik olarak kırpar
- imagedashedline — Kesikli çizgi çizer
- imagedestroy — Bir görüntüyü bellekten siler
- imageellipse — Bir elips çizer
- imagefill — Görüntüyü boyar
- imagefilledarc — Bir yay çizer ve içini doldurur
- imagefilledellipse — İçi dolu bir elips çizer
- imagefilledpolygon — İçi dolu bir çokgen çizer
- imagefilledrectangle — İçi dolu bir dikdörtgen çizer
- imagefilltoborder — Belli bir bölgeyi belli bir renge boyar
- imagefilter — Bir görüntüye bir süzgeç uygular
- imageflip — Belirtilen kipi kullanarak görüntüyü ters çevirir
- imagefontheight — Yazı tipi piksel yüksekliğini döndürür
- imagefontwidth — Yazı tipi piksel genişliğini döndürür
- imageftbbox — Bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar
- imagefttext — Bir metni bir görüntüye bir FreeType 2 yazı tipini kullanarak yazar
- imagegammacorrect — Bir GD görüntüye gamma düzeltmesi uygular
- imagegd — Tarayıcıya veya bir dosyaya bir GD görüntü çıktılar
- imagegd2 — Tarayıcıya veya bir dosyaya bir GD2 görüntü çıktılar
- imagegetclip — Kırpma dikdörtgenini döndürür
- imagegetinterpolation — Ara değerleme yöntemini döndürür
- imagegif — Görüntüyü tarayıcıya veya dosyaya yazar.
- imagegrabscreen — Ekran görüntüsünü yakalar
- imagegrabwindow — Bir pencereyi yakalar
- imageinterlace — Geçişimliliği açıp kapar
- imageistruecolor — Bir görüntünün gerçek renkli olup olmadığını bulur
- imagejpeg — Görüntüyü tarayıcıya veya dosyaya yazar.
- imagelayereffect — Katmanlama etkisini kullanmak için alfa harmanlama seçeneğini ayarlar
- imageline — Bir çizgi çizer
- imageloadfont — Yeni bir bit eşlemli yazı tipi yükler
- imageopenpolygon — Açık çokgen çizer
- imagepalettecopy — Paleti bir görüntüden diğerine kopyalar
- imagepalettetotruecolor — Palet tabanlı bir görüntüyü gerçek renge dönüştürür
- imagepng — Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
- imagepolygon — Çokgen çizer
- imagerectangle — Bir dikdörtgen çizer
- imageresolution — Görüntünün çözünürlüğünü tanımlar veya döndürür
- imagerotate — Bir görüntüyü belirtilen açıya göre döndürür
- imagesavealpha — Görüntüleri kaydederken alfa kanalı bilgisinin saklanıp saklanmayacağını belirtir
- imagescale — Görüntüyü belirtilen genişlik ve yüksekliği kullanarak oranlar
- imagesetbrush — Çizgi çizmek için fırça görüntüsü oluşturur
- imagesetclip — Kırpma dikdörtgenini tanımlar
- imagesetinterpolation — Ara değerleme yöntemini tanımlar
- imagesetpixel — Bir pikselin rengini değiştirir
- imagesetstyle — Çizgi tarzını ayarlar
- imagesetthickness — Çizgi kalınlığını ayarlar
- imagesettile — Görüntüyü doldurmak için döşemeyi etkin kılar
- imagestring — Bir dizgeyi yatay olarak yazar
- imagestringup — Bir dizgeyi 90 derece döndürülmüş olarak yazar
- imagesx — Görüntünün genişliğini döndürür
- imagesy — Görüntünün yüksekliğini döndürür
- imagetruecolortopalette — Gerçek renkli görüntüyü paletli görüntüye dönüştürür
- imagettfbbox — TrueType yazıtipi kullanılan bir metnin çerçevesini döndürür
- imagettftext — Metni görüntüye TrueType yazı tipi ile yazar
- imagetypes — Kurulu PHP'nin desteklediği görüntü türlerini döndürür
- imagewbmp — Görüntüyü tarayıcıya veya dosyaya yazar.
- imagewebp — WebP görüntüyü tarayıcıya veya dosyaya çıktılar
- imagexbm — Bir XBM görüntüyü tarayıcıya veya dosyaya çıktılar
- iptcembed — İkil IPTC verisini bir JPEG görüntünün içine gömer
- iptcparse — Bir ikil IPTC bloğunu tekil etiketlere böler
- jpeg2wbmp — Bir JPEG dosyasını WBMP dosyasına dönüştürür
- png2wbmp — Bir PNG dosyasını WBMP dosyasına dönüştürür

# GdImage sınıfı

(PHP 8)

## Giriş

PHP 8.0.0 ve sonrasında, `gd` özkaynaklarının yerini alan tamamen donuk sınıf.

## Sınıf Sözdizimi

final class GdImage {
}

# GdFont sınıfı

(PHP 8 >= 8.1.0)

## Giriş

PHP 8.1.0 ve sonrasında `gd font` özkaynaklarının yerini alan tamamen donuk sınıf.

## Sınıf Sözdizimi

final class GdFont {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
  - PHP ile PNG oluşturmak
  - Alfa kanallarını kullanarak resme damga basmak
  - Yarı geçirgen filigran oluşturmak için imagecopymerge kullanımı
- GD ve Görüntü İşlevleri
  - gd_info — Kurulu GD kütüphanesi hakkında bilgi verir
  - getimagesize — Bir görüntünün boyutlarını döndürür
  - getimagesizefromstring — Dizgedeki görüntünün boyutunu döndürür
  - image_type_to_extension — Resim türü ile ilgili dosya uzantısını döndürür
  - image_type_to_mime_type — getimagesize, exif_read_data, exif_thumbnail, exif_imagetype ile döndürülen resim türü ile ilgili MIME türünü döndürür
  - image2wbmp — Görüntüyü tarayıcıya veya dosyaya yazar.
  - imageaffine — İsteğe bağlı bir kırpma alanı kullanarak, belirtilen görüntüye ilgin dönüşümü uygulayıp sonucu döndürür
  - imageaffinematrixconcat — İki ilgin dönüşüm matrisini birleştirir
  - imageaffinematrixget — İlgin dönüşüm matrisini döndürür
  - imagealphablending — Bir görüntü için harmanlama kipini etkinleştirir
  - imageantialias — Kenar yumuşatma işlevlerini uygulatır
  - imagearc — Bir yay çizer
  - imageavif — Görüntüyü tarayıcıya veya dosyaya yazar.
  - imagebmp — BMP görüntüyü tarayıcıya veya dosyaya çıktılar
  - imagechar — Yatay olarak bir karakter çizer
  - imagecharup — Düşey olarak bir karakter çizer
  - imagecolorallocate — Bir görüntü için bir renk ayırır
  - imagecolorallocatealpha — Bir görüntü için alfa kanallı bir renk ayırır
  - imagecolorat — Bir pikselin renk indisini döndürür
  - imagecolorclosest — Belirtilen rengin en yakın benzerinin indisini döndürür
  - imagecolorclosestalpha — Alfası ile birlikte belirtilen rengin en yakın benzerinin renk indisini verir
  - imagecolorclosesthwb — En yakın renk sıcaklığına, beyaz ve siyahlığa sahip renk indisini verir
  - imagecolordeallocate — Bir rengi tanımsız yapar
  - imagecolorexact — Belirtilen rengin indisini döndürür
  - imagecolorexactalpha — Alfası ile birlikte belirtilen rengin indisini verir
  - imagecolormatch — Bir görüntünün paletli sürümünün renklerini gerçek renkli sürümünün renkleriyle aynı yapar
  - imagecolorresolve — Belirtilen rengin veya en yakın benzerinin indisini döndürür
  - imagecolorresolvealpha — Alfası ile birlikte belirtilen rengin veya en yakın benzerinin renk indisini verir
  - imagecolorset — Bir palet indisi için renk tanımlar
  - imagecolorsforindex — Bir renk indisinin renk bilgisini döndürür
  - imagecolorstotal — Bir görüntü paletindeki renk sayısını döndürür
  - imagecolortransparent — Bir rengi şeffaflaştırır
  - imageconvolution — Bir konum ve katsayı ile 3x3'lük bir evrişim matrisini uygular
  - imagecopy — Bir resim parçasını kopyalar
  - imagecopymerge — Bir görüntüyü kopyalar ve karıştırır
  - imagecopymergegray — Bir görüntüyü kopyalar ve gri tonlama ile karıştırır
  - imagecopyresampled — Görüntünün bir parçasını örnekleyerek kopyalar ve boyutlandırır
  - imagecopyresized — Görüntünün bir parçasını kopyalar ve boyutlandırır
  - imagecreate — Yeni bir paletli görüntü oluşturur
  - imagecreatefromavif — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefrombmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromgd — Bir GD dosyasından veya URL'sinden yeni bir görüntü oluşturur
  - imagecreatefromgd2 — Bir GD2 dosyasından veya URL'sinden yeni bir görüntü oluşturur
  - imagecreatefromgd2part — Bir GD2 parça dosyasından veya URL'sinden yeni bir görüntü oluşturur
  - imagecreatefromgif — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromjpeg — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefrompng — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromstring — Belirtilen dizgeden yeni bir görüntü oluşturur
  - imagecreatefromtga — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromwbmp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromwebp — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromxbm — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatefromxpm — Bir dosya veya URL'den yeni bir görüntü oluşturur.
  - imagecreatetruecolor — Yeni bir gerçek renkli görüntü oluşturur
  - imagecrop — Görüntüyü belirtilen dikdörtgen ile kırpar
  - imagecropauto — Mevcut kiplerden birini kullanarak görüntüyü otomatik olarak kırpar
  - imagedashedline — Kesikli çizgi çizer
  - imagedestroy — Bir görüntüyü bellekten siler
  - imageellipse — Bir elips çizer
  - imagefill — Görüntüyü boyar
  - imagefilledarc — Bir yay çizer ve içini doldurur
  - imagefilledellipse — İçi dolu bir elips çizer
  - imagefilledpolygon — İçi dolu bir çokgen çizer
  - imagefilledrectangle — İçi dolu bir dikdörtgen çizer
  - imagefilltoborder — Belli bir bölgeyi belli bir renge boyar
  - imagefilter — Bir görüntüye bir süzgeç uygular
  - imageflip — Belirtilen kipi kullanarak görüntüyü ters çevirir
  - imagefontheight — Yazı tipi piksel yüksekliğini döndürür
  - imagefontwidth — Yazı tipi piksel genişliğini döndürür
  - imageftbbox — Bir FreeType2 yazı tipi ile yazılacak bir metnin çerçevesini hesaplar
  - imagefttext — Bir metni bir görüntüye bir FreeType 2 yazı tipini kullanarak yazar
  - imagegammacorrect — Bir GD görüntüye gamma düzeltmesi uygular
  - imagegd — Tarayıcıya veya bir dosyaya bir GD görüntü çıktılar
  - imagegd2 — Tarayıcıya veya bir dosyaya bir GD2 görüntü çıktılar
  - imagegetclip — Kırpma dikdörtgenini döndürür
  - imagegetinterpolation — Ara değerleme yöntemini döndürür
  - imagegif — Görüntüyü tarayıcıya veya dosyaya yazar.
  - imagegrabscreen — Ekran görüntüsünü yakalar
  - imagegrabwindow — Bir pencereyi yakalar
  - imageinterlace — Geçişimliliği açıp kapar
  - imageistruecolor — Bir görüntünün gerçek renkli olup olmadığını bulur
  - imagejpeg — Görüntüyü tarayıcıya veya dosyaya yazar.
  - imagelayereffect — Katmanlama etkisini kullanmak için alfa harmanlama seçeneğini ayarlar
  - imageline — Bir çizgi çizer
  - imageloadfont — Yeni bir bit eşlemli yazı tipi yükler
  - imageopenpolygon — Açık çokgen çizer
  - imagepalettecopy — Paleti bir görüntüden diğerine kopyalar
  - imagepalettetotruecolor — Palet tabanlı bir görüntüyü gerçek renge dönüştürür
  - imagepng — Tarayıcıya veya bir dosyaya bir PNG görüntü çıktılar
  - imagepolygon — Çokgen çizer
  - imagerectangle — Bir dikdörtgen çizer
  - imageresolution — Görüntünün çözünürlüğünü tanımlar veya döndürür
  - imagerotate — Bir görüntüyü belirtilen açıya göre döndürür
  - imagesavealpha — Görüntüleri kaydederken alfa kanalı bilgisinin saklanıp saklanmayacağını belirtir
  - imagescale — Görüntüyü belirtilen genişlik ve yüksekliği kullanarak oranlar
  - imagesetbrush — Çizgi çizmek için fırça görüntüsü oluşturur
  - imagesetclip — Kırpma dikdörtgenini tanımlar
  - imagesetinterpolation — Ara değerleme yöntemini tanımlar
  - imagesetpixel — Bir pikselin rengini değiştirir
  - imagesetstyle — Çizgi tarzını ayarlar
  - imagesetthickness — Çizgi kalınlığını ayarlar
  - imagesettile — Görüntüyü doldurmak için döşemeyi etkin kılar
  - imagestring — Bir dizgeyi yatay olarak yazar
  - imagestringup — Bir dizgeyi 90 derece döndürülmüş olarak yazar
  - imagesx — Görüntünün genişliğini döndürür
  - imagesy — Görüntünün yüksekliğini döndürür
  - imagetruecolortopalette — Gerçek renkli görüntüyü paletli görüntüye dönüştürür
  - imagettfbbox — TrueType yazıtipi kullanılan bir metnin çerçevesini döndürür
  - imagettftext — Metni görüntüye TrueType yazı tipi ile yazar
  - imagetypes — Kurulu PHP'nin desteklediği görüntü türlerini döndürür
  - imagewbmp — Görüntüyü tarayıcıya veya dosyaya yazar.
  - imagewebp — WebP görüntüyü tarayıcıya veya dosyaya çıktılar
  - imagexbm — Bir XBM görüntüyü tarayıcıya veya dosyaya çıktılar
  - iptcembed — İkil IPTC verisini bir JPEG görüntünün içine gömer
  - iptcparse — Bir ikil IPTC bloğunu tekil etiketlere böler
  - jpeg2wbmp — Bir JPEG dosyasını WBMP dosyasına dönüştürür
  - png2wbmp — Bir PNG dosyasını WBMP dosyasına dönüştürür
- GdImage — GdImage sınıfı
- GdFont — GdFont sınıfı

# Gmagick

# Giriş

Uyarı

Bu eklenti DENEYSELDİR. Bu eklentinin davranışı, işlev isimleri ve tüm belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu risk göze alınamayacaksa bu eklenti kullanılmamalıdır.

Gmagick is a php extension to create, modify and obtain meta information of images using the GraphicsMagick API.

GraphicsMagick prides itself as the swiss army knife of image processing. It works with over 88 major formats including important formats like DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, and TIFF.

Gmagick consists of a main Gmagick class, a GmagickDraw class which is in effect a drawing wand and a GmagickPixel class of which instances represent a single pixel of an image (color, opacity).

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

This extension works best with GraphicsMagick version 1.4+. Gmagick should work with earlier versions up to GraphicsMagick 1.2.6 but some features and formats are not supported for these versions. Windows version of GraphicsMagick is available from the GraphicsMagick website. To read about the difference between ImageMagick and GraphicsMagick, check the » FAQ.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/gmagick.

> Bilginize: The official name of this extension is gmagick.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Colortype constants
`Gmagick::COLOR_BLACK` (int)
  Black
`Gmagick::COLOR_BLUE` (int)
  Blue
`Gmagick::COLOR_CYAN` (int)
  Cyan
`Gmagick::COLOR_GREEN` (int)
  Green
`Gmagick::COLOR_RED` (int)
  Red
`Gmagick::COLOR_YELLOW` (int)
  Yellow
`Gmagick::COLOR_MAGENTA` (int)
  Magenta
`Gmagick::COLOR_OPACITY` (int)
  Opacity
`Gmagick::COLOR_ALPHA` (int)
  Alpha
`Gmagick::COLOR_FUZZ` (int)
  Fuzz

Composite Operator Constants
`Gmagick::COMPOSITE_DEFAULT` (int)
  The default composite operator
`Gmagick::COMPOSITE_UNDEFINED` (int)
  Undefined composite operator
`Gmagick::COMPOSITE_NO` (int)
  No composite operator defined
`Gmagick::COMPOSITE_ADD` (int)
  The result of image + image
`Gmagick::COMPOSITE_ATOP` (int)
  The result is the same shape as image, with composite image obscuring image where the image shapes overlap
`Gmagick::COMPOSITE_BLEND` (int)
  Blends the image
`Gmagick::COMPOSITE_BUMPMAP` (int)
  The same as COMPOSITE_MULTIPLY, except the source is converted to grayscale first.
`Gmagick::COMPOSITE_CLEAR` (int)
  Makes the target image transparent
`Gmagick::COMPOSITE_COLORBURN` (int)
  Darkens the destination image to reflect the source image
`Gmagick::COMPOSITE_COLORDODGE` (int)
  Brightens the destination image to reflect the source image
`Gmagick::COMPOSITE_COLORIZE` (int)
  Colorizes the target image using the composite image
`Gmagick::COMPOSITE_COPYBLACK` (int)
  Copies black from the source to target
`Gmagick::COMPOSITE_COPYBLUE` (int)
  Copies blue from the source to target
`Gmagick::COMPOSITE_COPY` (int)
  Copies the source image on the target image
`Gmagick::COMPOSITE_COPYCYAN` (int)
  Copies cyan from the source to target
`Gmagick::COMPOSITE_COPYGREEN` (int)
  Copies green from the source to target
`Gmagick::COMPOSITE_COPYMAGENTA` (int)
  Copies magenta from the source to target
`Gmagick::COMPOSITE_COPYOPACITY` (int)
  Copies opacity from the source to target
`Gmagick::COMPOSITE_COPYRED` (int)
  Copies red from the source to target
`Gmagick::COMPOSITE_COPYYELLOW` (int)
  Copies yellow from the source to target
`Gmagick::COMPOSITE_DARKEN` (int)
  Darkens the target image
`Gmagick::COMPOSITE_DSTATOP` (int)
  The part of the destination lying inside of the source is composited over the source and replaces the destination
`Gmagick::COMPOSITE_DST` (int)
  The target is left untouched
`Gmagick::COMPOSITE_DSTIN` (int)
  The parts inside the source replace the target
`Gmagick::COMPOSITE_DSTOUT` (int)
  The parts outside the source replace the target
`Gmagick::COMPOSITE_DSTOVER` (int)
  Target replaces the source
`Gmagick::COMPOSITE_DIFFERENCE` (int)
  Subtracts the darker of the two constituent colors from the lighter
`Gmagick::COMPOSITE_DISPLACE` (int)
  Shifts target image pixels as defined by the source
`Gmagick::COMPOSITE_DISSOLVE` (int)
  Dissolves the source in to the target
`Gmagick::COMPOSITE_EXCLUSION` (int)
  Produces an effect similar to that of Gmagick::COMPOSITE_DIFFERENCE, but appears as lower contrast
`Gmagick::COMPOSITE_HARDLIGHT` (int)
  Multiplies or screens the colors, dependent on the source color value
`Gmagick::COMPOSITE_HUE` (int)
  Modifies the hue of the target as defined by source
`Gmagick::COMPOSITE_IN` (int)
  Composites source into the target
`Gmagick::COMPOSITE_LIGHTEN` (int)
  Lightens the target as defined by source
`Gmagick::COMPOSITE_LUMINIZE` (int)
  Luminizes the target as defined by source
`Gmagick::COMPOSITE_MINUS` (int)
  Subtracts the source from the target
`Gmagick::COMPOSITE_MODULATE` (int)
  Modulates the target brightness, saturation and hue as defined by source
`Gmagick::COMPOSITE_MULTIPLY` (int)
  Multiplies the target to the source
`Gmagick::COMPOSITE_OUT` (int)
  Composites outer parts of the source on the target
`Gmagick::COMPOSITE_OVER` (int)
  Composites source over the target
`Gmagick::COMPOSITE_OVERLAY` (int)
  Overlays the source on the target
`Gmagick::COMPOSITE_PLUS` (int)
  Adds the source to the target
`Gmagick::COMPOSITE_REPLACE` (int)
  Replaces the target with the source
`Gmagick::COMPOSITE_SATURATE` (int)
  Saturates the target as defined by the source
`Gmagick::COMPOSITE_SCREEN` (int)
  The source and destination are complemented and then multiplied and then replace the destination
`Gmagick::COMPOSITE_SOFTLIGHT` (int)
  Darkens or lightens the colors, dependent on the source
`Gmagick::COMPOSITE_SRCATOP` (int)
  The part of the source lying inside of the destination is composited onto the destination
`Gmagick::COMPOSITE_SRC` (int)
  The source is copied to the destination
`Gmagick::COMPOSITE_SRCIN` (int)
  The part of the source lying inside of the destination replaces the destination
`Gmagick::COMPOSITE_SRCOUT` (int)
  The part of the source lying outside of the destination replaces the destination
`Gmagick::COMPOSITE_SRCOVER` (int)
  The source replaces the destination
`Gmagick::COMPOSITE_SUBTRACT` (int)
  Subtract the colors in the source image from the destination image
`Gmagick::COMPOSITE_THRESHOLD` (int)
  The source is composited on the target as defined by source threshold
`Gmagick::COMPOSITE_XOR` (int)
  The part of the source that lies outside of the destination is combined with the part of the destination that lies outside of the source

Montage Mode constants
`Gmagick::MONTAGEMODE_FRAME` (int)
`Gmagick::MONTAGEMODE_UNFRAME` (int)
`Gmagick::MONTAGEMODE_CONCATENATE` (int)

Style constants
`Gmagick::STYLE_NORMAL` (int)
`Gmagick::STYLE_ITALIC` (int)
`Gmagick::STYLE_OBLIQUE` (int)
`Gmagick::STYLE_ANY` (int)

Filter constants
`Gmagick::FILTER_UNDEFINED` (int)
`Gmagick::FILTER_POINT` (int)
`Gmagick::FILTER_BOX` (int)
`Gmagick::FILTER_TRIANGLE` (int)
`Gmagick::FILTER_HERMITE` (int)
`Gmagick::FILTER_HANNING` (int)
`Gmagick::FILTER_HAMMING` (int)
`Gmagick::FILTER_BLACKMAN` (int)
`Gmagick::FILTER_GAUSSIAN` (int)
`Gmagick::FILTER_QUADRATIC` (int)
`Gmagick::FILTER_CUBIC` (int)
`Gmagick::FILTER_CATROM` (int)
`Gmagick::FILTER_MITCHELL` (int)
`Gmagick::FILTER_LANCZOS` (int)
`Gmagick::FILTER_BESSEL` (int)
`Gmagick::FILTER_SINC` (int)

Image type constants
`Gmagick::IMGTYPE_UNDEFINED` (int)
`Gmagick::IMGTYPE_BILEVEL` (int)
`Gmagick::IMGTYPE_GRAYSCALE` (int)
`Gmagick::IMGTYPE_GRAYSCALEMATTE` (int)
`Gmagick::IMGTYPE_PALETTE` (int)
`Gmagick::IMGTYPE_PALETTEMATTE` (int)
`Gmagick::IMGTYPE_TRUECOLOR` (int)
`Gmagick::IMGTYPE_TRUECOLORMATTE` (int)
`Gmagick::IMGTYPE_COLORSEPARATION` (int)
`Gmagick::IMGTYPE_COLORSEPARATIONMATTE` (int)
`Gmagick::IMGTYPE_OPTIMIZE` (int)

Resolution constants
`Gmagick::RESOLUTION_UNDEFINED` (int)
`Gmagick::RESOLUTION_PIXELSPERINCH` (int)
`Gmagick::RESOLUTION_PIXELSPERCENTIMETER` (int)

Compression constants
`Gmagick::COMPRESSION_UNDEFINED` (int)
`Gmagick::COMPRESSION_NO` (int)
`Gmagick::COMPRESSION_BZIP` (int)
`Gmagick::COMPRESSION_FAX` (int)
`Gmagick::COMPRESSION_GROUP4` (int)
`Gmagick::COMPRESSION_JPEG` (int)
`Gmagick::COMPRESSION_JPEG2000` (int)
`Gmagick::COMPRESSION_LOSSLESSJPEG` (int)
`Gmagick::COMPRESSION_LZW` (int)
`Gmagick::COMPRESSION_RLE` (int)
`Gmagick::COMPRESSION_ZIP` (int)

Paint constants
`Gmagick::PAINT_POINT` (int)
`Gmagick::PAINT_REPLACE` (int)
`Gmagick::PAINT_FLOODFILL` (int)
`Gmagick::PAINT_FILLTOBORDER` (int)
`Gmagick::PAINT_RESET` (int)

Gravity constants
`Gmagick::GRAVITY_NORTHWEST` (int)
`Gmagick::GRAVITY_NORTH` (int)
`Gmagick::GRAVITY_NORTHEAST` (int)
`Gmagick::GRAVITY_WEST` (int)
`Gmagick::GRAVITY_CENTER` (int)
`Gmagick::GRAVITY_EAST` (int)
`Gmagick::GRAVITY_SOUTHWEST` (int)
`Gmagick::GRAVITY_SOUTH` (int)
`Gmagick::GRAVITY_SOUTHEAST` (int)

Stretch constants
`Gmagick::STRETCH_NORMAL` (int)
`Gmagick::STRETCH_ULTRACONDENSED` (int)
`Gmagick::STRETCH_CONDENSED` (int)
`Gmagick::STRETCH_SEMICONDENSED` (int)
`Gmagick::STRETCH_SEMIEXPANDED` (int)
`Gmagick::STRETCH_EXPANDED` (int)
`Gmagick::STRETCH_EXTRAEXPANDED` (int)
`Gmagick::STRETCH_ULTRAEXPANDED` (int)
`Gmagick::STRETCH_ANY` (int)

Align constants
`Gmagick::ALIGN_UNDEFINED` (int)
`Gmagick::ALIGN_LEFT` (int)
`Gmagick::ALIGN_CENTER` (int)
`Gmagick::ALIGN_RIGHT` (int)

Decoration constants
`Gmagick::DECORATION_NO` (int)
`Gmagick::DECORATION_UNDERLINE` (int)
`Gmagick::DECORATION_OVERLINE` (int)
`Gmagick::DECORATION_LINETROUGH` (int)

Noise constants
`Gmagick::NOISE_UNIFORM` (int)
`Gmagick::NOISE_GAUSSIAN` (int)
`Gmagick::NOISE_MULTIPLICATIVEGAUSSIAN` (int)
`Gmagick::NOISE_IMPULSE` (int)
`Gmagick::NOISE_LAPLACIAN` (int)
`Gmagick::NOISE_POISSON` (int)

Channel constants
`Gmagick::CHANNEL_UNDEFINED` (int)
`Gmagick::CHANNEL_RED` (int)
`Gmagick::CHANNEL_GRAY` (int)
`Gmagick::CHANNEL_CYAN` (int)
`Gmagick::CHANNEL_GREEN` (int)
`Gmagick::CHANNEL_MAGENTA` (int)
`Gmagick::CHANNEL_BLUE` (int)
`Gmagick::CHANNEL_YELLOW` (int)
`Gmagick::CHANNEL_ALPHA` (int)
`Gmagick::CHANNEL_OPACITY` (int)
`Gmagick::CHANNEL_MATTE` (int)
`Gmagick::CHANNEL_BLACK` (int)
`Gmagick::CHANNEL_INDEX` (int)
`Gmagick::CHANNEL_ALL` (int)

Metric constants
`Gmagick::METRIC_UNDEFINED` (int)
`Gmagick::METRIC_MEANABSOLUTEERROR` (int)
`Gmagick::METRIC_MEANSQUAREERROR` (int)
`Gmagick::METRIC_PEAKABSOLUTEERROR` (int)
`Gmagick::METRIC_PEAKSIGNALTONOISERATIO` (int)
`Gmagick::METRIC_ROOTMEANSQUAREDERROR` (int)

Pixel constants
`Gmagick::PIXEL_CHAR` (int)
`Gmagick::PIXEL_DOUBLE` (int)
`Gmagick::PIXEL_FLOAT` (int)
`Gmagick::PIXEL_INTEGER` (int)
`Gmagick::PIXEL_LONG` (int)
`Gmagick::PIXEL_QUANTUM` (int)
`Gmagick::PIXEL_SHORT` (int)

Colorspace constants
`Gmagick::COLORSPACE_UNDEFINED` (int)
`Gmagick::COLORSPACE_RGB` (int)
`Gmagick::COLORSPACE_GRAY` (int)
`Gmagick::COLORSPACE_TRANSPARENT` (int)
`Gmagick::COLORSPACE_OHTA` (int)
`Gmagick::COLORSPACE_LAB` (int)
`Gmagick::COLORSPACE_XYZ` (int)
`Gmagick::COLORSPACE_YCBCR` (int)
`Gmagick::COLORSPACE_YCC` (int)
`Gmagick::COLORSPACE_YIQ` (int)
`Gmagick::COLORSPACE_YPBPR` (int)
`Gmagick::COLORSPACE_YUV` (int)
`Gmagick::COLORSPACE_CMYK` (int)
`Gmagick::COLORSPACE_SRGB` (int)
`Gmagick::COLORSPACE_HSB` (int)
`Gmagick::COLORSPACE_HSL` (int)
`Gmagick::COLORSPACE_HWB` (int)
`Gmagick::COLORSPACE_REC601LUMA` (int)
`Gmagick::COLORSPACE_REC709LUMA` (int)
`Gmagick::COLORSPACE_LOG` (int)

Virtual Pixel Method constants
`Gmagick::VIRTUALPIXELMETHOD_UNDEFINED` (int)
`Gmagick::VIRTUALPIXELMETHOD_BACKGROUND` (int)
`Gmagick::VIRTUALPIXELMETHOD_CONSTANT` (int)
`Gmagick::VIRTUALPIXELMETHOD_EDGE` (int)
`Gmagick::VIRTUALPIXELMETHOD_MIRROR` (int)
`Gmagick::VIRTUALPIXELMETHOD_TILE` (int)
`Gmagick::VIRTUALPIXELMETHOD_TRANSPARENT` (int)

Preview constants
`Gmagick::PREVIEW_UNDEFINED` (int)
`Gmagick::PREVIEW_ROTATE` (int)
`Gmagick::PREVIEW_SHEAR` (int)
`Gmagick::PREVIEW_ROLL` (int)
`Gmagick::PREVIEW_HUE` (int)
`Gmagick::PREVIEW_SATURATION` (int)
`Gmagick::PREVIEW_BRIGHTNESS` (int)
`Gmagick::PREVIEW_GAMMA` (int)
`Gmagick::PREVIEW_SPIFF` (int)
`Gmagick::PREVIEW_DULL` (int)
`Gmagick::PREVIEW_GRAYSCALE` (int)
`Gmagick::PREVIEW_QUANTIZE` (int)
`Gmagick::PREVIEW_DESPECKLE` (int)
`Gmagick::PREVIEW_REDUCENOISE` (int)
`Gmagick::PREVIEW_ADDNOISE` (int)
`Gmagick::PREVIEW_SHARPEN` (int)
`Gmagick::PREVIEW_BLUR` (int)
`Gmagick::PREVIEW_THRESHOLD` (int)
`Gmagick::PREVIEW_EDGEDETECT` (int)
`Gmagick::PREVIEW_SPREAD` (int)
`Gmagick::PREVIEW_SOLARIZE` (int)
`Gmagick::PREVIEW_SHADE` (int)
`Gmagick::PREVIEW_RAISE` (int)
`Gmagick::PREVIEW_SEGMENT` (int)
`Gmagick::PREVIEW_SWIRL` (int)
`Gmagick::PREVIEW_IMPLODE` (int)
`Gmagick::PREVIEW_WAVE` (int)
`Gmagick::PREVIEW_OILPAINT` (int)
`Gmagick::PREVIEW_CHARCOALDRAWING` (int)
`Gmagick::PREVIEW_JPEG` (int)

Rendering Intent constants
`Gmagick::RENDERINGINTENT_UNDEFINED` (int)
`Gmagick::RENDERINGINTENT_SATURATION` (int)
`Gmagick::RENDERINGINTENT_PERCEPTUAL` (int)
`Gmagick::RENDERINGINTENT_ABSOLUTE` (int)
`Gmagick::RENDERINGINTENT_RELATIVE` (int)

Fillrule constants
`Gmagick::FILLRULE_UNDEFINED` (int)
`Gmagick::FILLRULE_EVENODD` (int)
`Gmagick::FILLRULE_NONZERO` (int)

Pathunit constants
`Gmagick::PATHUNITS_UNDEFINED` (int)
`Gmagick::PATHUNITS_USERSPACE` (int)
`Gmagick::PATHUNITS_USERSPACEONUSE` (int)
`Gmagick::PATHUNITS_OBJECTBOUNDINGBOX` (int)

Linecap constants
`Gmagick::LINECAP_UNDEFINED` (int)
`Gmagick::LINECAP_BUTT` (int)
`Gmagick::LINECAP_ROUND` (int)
`Gmagick::LINECAP_SQUARE` (int)

Line Join constants
`Gmagick::LINEJOIN_UNDEFINED` (int)
`Gmagick::LINEJOIN_MITER` (int)
`Gmagick::LINEJOIN_ROUND` (int)
`Gmagick::LINEJOIN_BEVEL` (int)

Resourcetype constants
`Gmagick::RESOURCETYPE_UNDEFINED` (int)
`Gmagick::RESOURCETYPE_AREA` (int)
`Gmagick::RESOURCETYPE_DISK` (int)
`Gmagick::RESOURCETYPE_FILE` (int)
`Gmagick::RESOURCETYPE_MAP` (int)
`Gmagick::RESOURCETYPE_MEMORY` (int)

Orientation constants
`Gmagick::ORIENTATION_UNDEFINED` (int)
`Gmagick::ORIENTATION_TOPLEFT` (int)
`Gmagick::ORIENTATION_TOPRIGHT` (int)
`Gmagick::ORIENTATION_BOTTOMRIGHT` (int)
`Gmagick::ORIENTATION_BOTTOMLEFT` (int)
`Gmagick::ORIENTATION_LEFTTOP` (int)
`Gmagick::ORIENTATION_RIGHTTOP` (int)
`Gmagick::ORIENTATION_RIGHTBOTTOM` (int)
`Gmagick::ORIENTATION_LEFTBOTTOM` (int)

Interlace constants
`Gmagick::INTERLACE_UNDEFINED` (int)
`Gmagick::INTERLACE_NO` (int)
`Gmagick::INTERLACE_NONE` (int)
`Gmagick::INTERLACE_LINE` (int)
`Gmagick::INTERLACE_PLANE` (int)
`Gmagick::INTERLACE_PARTITION` (int)

# Örnekler

The following shows some common Gmagick image operations.

Örnek 1 Gmagick Example

    <?php
    //Instantiate a new Gmagick object
    $image = new Gmagick('example.jpg');

    //Make thumbnail from image loaded. 0 for either axes preserves aspect ratio
    $image->thumbnailimage(100, 0);

    //Create a border around the image, then simulate how the image will look like as an oil painting
    //Notice the chaining of mutator methods which is supported in gmagick
    $image->borderimage("yellow", 8, 8)->oilpaintimage(0.3);

    //Write the current image at the current state to a file
    $image->write('example_thumbnail.jpg');
    ?>

# The Gmagick class

(PECL gmagick >= Unknown)

## Giriş

## Sınıf Sözdizimi

class Gmagick {
/* Yöntemler */
public function __construct(string `$filename` = ?)
public function addimage(Gmagick `$source`): Gmagick
public function addnoiseimage(int `$noise_type`): Gmagick
public function annotateimage(
GmagickDraw `$GmagickDraw`,
float `$x`,
float `$y`,
float `$angle`,
string `$text`
): Gmagick
public function blurimage(float `$radius`, float `$sigma`, int `$channel` = ?): Gmagick
public function borderimage(GmagickPixel `$color`, int `$width`, int `$height`): Gmagick
public function charcoalimage(float `$radius`, float `$sigma`): Gmagick
public function chopimage(
int `$width`,
int `$height`,
int `$x`,
int `$y`
): Gmagick
public function clear(): Gmagick
public function commentimage(string `$comment`): Gmagick
public function compositeimage(
Gmagick `$source`,
int `$COMPOSE`,
int `$x`,
int `$y`
): Gmagick
public function cropimage(
int `$width` ,
int `$height` ,
int `$x`,
int `$y`
): Gmagick
public function cropthumbnailimage(int `$width`, int `$height`): Gmagick
public function current(): Gmagick
public function cyclecolormapimage(int `$displace`): Gmagick
public function deconstructimages(): Gmagick
public function despeckleimage(): Gmagick
public function destroy(): bool
public function drawimage(GmagickDraw `$GmagickDraw`): Gmagick
public function edgeimage(float `$radius`): Gmagick
public function embossimage(float `$radius`, float `$sigma`): Gmagick
public function enhanceimage(): Gmagick
public function equalizeimage(): Gmagick
public function flipimage(): Gmagick
public function flopimage(): Gmagick
public function frameimage(
GmagickPixel `$color`,
int `$width`,
int `$height`,
int `$inner_bevel`,
int `$outer_bevel`
): Gmagick
public function gammaimage(float `$gamma`): Gmagick
public function getcopyright(): string
public function getfilename(): string
public function getimagebackgroundcolor(): GmagickPixel
public function getimageblueprimary(): array
public function getimagebordercolor(): GmagickPixel
public function getimagechanneldepth(int `$channel_type`): int
public function getimagecolors(): int
public function getimagecolorspace(): int
public function getimagecompose(): int
public function getimagedelay(): int
public function getimagedepth(): int
public function getimagedispose(): int
public function getimageextrema(): array
public function getimagefilename(): string
public function getimageformat(): string
public function getimagegamma(): float
public function getimagegreenprimary(): array
public function getimageheight(): int
public function getimagehistogram(): array
public function getimageindex(): int
public function getimageinterlacescheme(): int
public function getimageiterations(): int
public function getimagematte(): int
public function getimagemattecolor(): GmagickPixel
public function getimageprofile(string `$name`): string
public function getimageredprimary(): array
public function getimagerenderingintent(): int
public function getimageresolution(): array
public function getimagescene(): int
public function getimagesignature(): string
public function getimagetype(): int
public function getimageunits(): int
public function getimagewhitepoint(): array
public function getimagewidth(): int
public function getpackagename(): string
public function getquantumdepth(): array
public function getreleasedate(): string
public function getsamplingfactors(): array
public function getsize(): array
public function getversion(): array
public function hasnextimage(): mixed
public function haspreviousimage(): mixed
public function implodeimage(float `$radius`): mixed
public function labelimage(string `$label`): mixed
public function levelimage(
float `$blackPoint`,
float `$gamma`,
float `$whitePoint`,
int `$channel` = Gmagick::CHANNEL_DEFAULT
): mixed
public function magnifyimage(): mixed
public function mapimage(gmagick `$gmagick`, bool `$dither`): Gmagick
public function medianfilterimage(float `$radius`): void
public function minifyimage(): Gmagick
public function modulateimage(float `$brightness`, float `$saturation`, float `$hue`): Gmagick
public function motionblurimage(float `$radius`, float `$sigma`, float `$angle`): Gmagick
public function newimage(
int `$width`,
int `$height`,
string `$background`,
string `$format` = ?
): Gmagick
public function nextimage(): bool
public function normalizeimage(int `$channel` = ?): Gmagick
public function oilpaintimage( float `$radius` ): Gmagick
public function previousimage(): bool
public function profileimage(string `$name`, string `$profile`): Gmagick
public function quantizeimage(
int `$numColors`,
int `$colorspace`,
int `$treeDepth`,
bool `$dither`,
bool `$measureError`
): Gmagick
public function quantizeimages(
int `$numColors`,
int `$colorspace`,
int `$treeDepth`,
bool `$dither`,
bool `$measureError`
): Gmagick
public function queryfontmetrics(GmagickDraw `$draw`, string `$text`): array
public function queryfonts(string `$pattern` = "*"): array
public function queryformats(string `$pattern` = "*"): array
public function radialblurimage(float `$angle`, int `$channel` = Gmagick::CHANNEL_DEFAULT): Gmagick
public function raiseimage(
int `$width`,
int `$height`,
int `$x`,
int `$y`,
bool `$raise`
): Gmagick
public function read(string `$filename`): Gmagick
public function readimage(string `$filename`): Gmagick
public function readimageblob(string `$imageContents`, string `$filename` = ?): Gmagick
public function readimagefile(resource `$fp`, string `$filename` = ?): Gmagick
public function reducenoiseimage(float `$radius`): Gmagick
public function removeimage(): Gmagick
public function removeimageprofile(string `$name`): string
public function resampleimage(
float `$xResolution`,
float `$yResolution`,
int `$filter`,
float `$blur`
): Gmagick
public function resizeimage(
int `$width`,
int `$height`,
int `$filter`,
float `$blur`,
bool `$fit` = `false`
): Gmagick
public function rollimage(int `$x`, int `$y`): Gmagick
public function rotateimage(mixed `$color`, float `$degrees`): Gmagick
public function scaleimage(int `$width`, int `$height`, bool `$fit` = `false`): Gmagick
public function separateimagechannel(int `$channel`): Gmagick
function setCompressionQuality( int `$quality` ): Gmagick
public function setfilename(string `$filename`): Gmagick
public function setimagebackgroundcolor(GmagickPixel `$color`): Gmagick
public function setimageblueprimary(float `$x`, float `$y`): Gmagick
public function setimagebordercolor(GmagickPixel `$color`): Gmagick
public function setimagechanneldepth(int `$channel`, int `$depth`): Gmagick
public function setimagecolorspace(int `$colorspace`): Gmagick
public function setimagecompose(int `$composite`): Gmagick
public function setimagedelay(int `$delay`): Gmagick
public function setimagedepth(int `$depth`): Gmagick
public function setimagedispose(int `$disposeType`): Gmagick
public function setimagefilename(string `$filename`): Gmagick
public function setimageformat(string `$imageFormat`): Gmagick
public function setimagegamma(float `$gamma`): Gmagick
public function setimagegreenprimary(float `$x`, float `$y`): Gmagick
public function setimageindex(int `$index`): Gmagick
public function setimageinterlacescheme(int `$interlace`): Gmagick
public function setimageiterations(int `$iterations`): Gmagick
public function setimageprofile(string `$name`, string `$profile`): Gmagick
public function setimageredprimary(float `$x`, float `$y`): Gmagick
public function setimagerenderingintent(int `$rendering_intent`): Gmagick
public function setimageresolution(float `$xResolution`, float `$yResolution`): Gmagick
public function setimagescene(int `$scene`): Gmagick
public function setimagetype(int `$imgType`): Gmagick
public function setimageunits(int `$resolution`): Gmagick
public function setimagewhitepoint(float `$x`, float `$y`): Gmagick
public function setsamplingfactors(array `$factors`): Gmagick
public function setsize(int `$columns`, int `$rows`): Gmagick
public function shearimage(mixed `$color`, float `$xShear`, float `$yShear`): Gmagick
public function solarizeimage(int `$threshold`): Gmagick
public function spreadimage(float `$radius`): Gmagick
public function stripimage(): Gmagick
public function swirlimage(float `$degrees`): Gmagick
public function thumbnailimage(int `$width`, int `$height`, bool `$fit` = `false`): Gmagick
public function trimimage(float `$fuzz`): Gmagick
public function writeimage(string `$filename`, bool `$all_frames` = `false`): Gmagick
}

# Gmagick::addimage

(PECL gmagick >= Unknown)

Gmagick::addimage — Adds new image to Gmagick object image list

### Açıklama

public function Gmagick::addimage(Gmagick `$source`): Gmagick

Adds new image to Gmagick object from the current position of the source object. After the operation iterator position is moved at the end of the list.

### Bağımsız Değişkenler

`source`
  The source Gmagick object

### Dönen Değerler

The Gmagick object with image added

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::addnoiseimage

(PECL gmagick >= Unknown)

Gmagick::addnoiseimage — Adds random noise to the image

### Açıklama

public function Gmagick::addnoiseimage(int `$noise_type`): Gmagick

Adds random noise to the image.

### Bağımsız Değişkenler

`noise_type`
  The type of the noise. Refer to this list of noise constants.

### Dönen Değerler

The Gmagick object with noise added.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::annotateimage

(PECL gmagick >= Unknown)

Gmagick::annotateimage — Annotates an image with text

### Açıklama

public function Gmagick::annotateimage(
GmagickDraw `$GmagickDraw`,
float `$x`,
float `$y`,
float `$angle`,
string `$text`
): Gmagick

Annotates an image with text.

### Bağımsız Değişkenler

`GmagickDraw`
  The GmagickDraw object that contains settings for drawing the text.
`x`
  Horizontal offset in pixels to the left of text.
`y`
  Vertical offset in pixels to the baseline of text.
`angle`
  The angle at which to write the text.
`text`
  The string to draw.

### Dönen Değerler

The Gmagick object with annotation made.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::blurimage

(PECL gmagick >= Unknown)

Gmagick::blurimage — Adds blur filter to image

### Açıklama

public function Gmagick::blurimage(float `$radius`, float `$sigma`, int `$channel` = ?): Gmagick

Adds blur filter to image.

### Bağımsız Değişkenler

`radius`
  Blur radius
`sigma`
  Standard deviation

### Dönen Değerler

The blurred Gmagick object

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::borderimage

(PECL gmagick >= Unknown)

Gmagick::borderimage — Surrounds the image with a border

### Açıklama

public function Gmagick::borderimage(GmagickPixel `$color`, int `$width`, int `$height`): Gmagick

Surrounds the image with a border of the color defined by the bordercolor GmagickPixel object or a color string.

### Bağımsız Değişkenler

`color`
  GmagickPixel object or a string containing the border color.
`width`
  Border width.
`height`
  Border height.

### Dönen Değerler

The Gmagick object with border defined.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::charcoalimage

(PECL gmagick >= Unknown)

Gmagick::charcoalimage — Simulates a charcoal drawing

### Açıklama

public function Gmagick::charcoalimage(float `$radius`, float `$sigma`): Gmagick

Simulates a charcoal drawing.

### Bağımsız Değişkenler

`radius`
  The radius of the Gaussian, in pixels, not counting the center pixel.
`sigma`
  The standard deviation of the Gaussian, in pixels.

### Dönen Değerler

The Gmagick object with charcoal simulation.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::chopimage

(PECL gmagick >= Unknown)

Gmagick::chopimage — Removes a region of an image and trims

### Açıklama

public function Gmagick::chopimage(
int `$width`,
int `$height`,
int `$x`,
int `$y`
): Gmagick

Removes a region of an image and collapses the image to occupy the removed portion.

### Bağımsız Değişkenler

`width`
  Width of the chopped area.
`height`
  Height of the chopped area.
`x`
  X origo of the chopped area.
`y`
  Y origo of the chopped area.

### Dönen Değerler

The chopped Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::clear

(PECL gmagick >= Unknown)

Gmagick::clear — Clears all resources associated to Gmagick object

### Açıklama

public function Gmagick::clear(): Gmagick

Clears all resources associated to Gmagick object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The cleared Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::commentimage

(PECL gmagick >= Unknown)

Gmagick::commentimage — Adds a comment to your image

### Açıklama

public function Gmagick::commentimage(string `$comment`): Gmagick

Adds a comment to your image.

### Bağımsız Değişkenler

`comment`
  The comment to add.

### Dönen Değerler

The Gmagick object with comment added.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::compositeimage

(PECL gmagick >= Unknown)

Gmagick::compositeimage — Composite one image onto another

### Açıklama

public function Gmagick::compositeimage(
Gmagick `$source`,
int `$COMPOSE`,
int `$x`,
int `$y`
): Gmagick

Composite one image onto another at the specified offset.

### Bağımsız Değişkenler

`source`
  Gmagick object which holds the composite image.
`COMPOSE`
  Composite operator.
`x`
  The column offset of the composited image.
`y`
  The row offset of the composited image.

### Dönen Değerler

The Gmagick object with compositions.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::__construct

(PECL gmagick >= Unknown)

Gmagick::__construct — The Gmagick constructor

### Açıklama

public function Gmagick::__construct(string `$filename` = ?)

The Gmagick constructor.

### Bağımsız Değişkenler

`filename`
  The path to an image to load or array of paths.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::cropimage

(PECL gmagick >= Unknown)

Gmagick::cropimage — Extracts a region of the image

### Açıklama

public function Gmagick::cropimage(
int `$width` ,
int `$height` ,
int `$x`,
int `$y`
): Gmagick

Extracts a region of the image.

### Bağımsız Değişkenler

`width`
  The width of the crop.
`height`
  The height of the crop.
`x`
  The X coordinate of the cropped region's top left corner.
`y`
  The Y coordinate of the cropped region's top left corner.

### Dönen Değerler

The cropped Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::cropthumbnailimage

(PECL gmagick >= Unknown)

Gmagick::cropthumbnailimage — Creates a crop thumbnail

### Açıklama

public function Gmagick::cropthumbnailimage(int `$width`, int `$height`): Gmagick

Creates a fixed size thumbnail by first scaling the image down and cropping a specified area from the center.

### Bağımsız Değişkenler

`width`
  The width of the thumbnail.
`height`
  The Height of the thumbnail.

### Dönen Değerler

The cropped Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::current

(PECL gmagick >= Unknown)

Gmagick::current — The current purpose

### Açıklama

public function Gmagick::current(): Gmagick

Returns reference to the current gmagick object with image pointer at the correct sequence.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns self on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::cyclecolormapimage

(PECL gmagick >= Unknown)

Gmagick::cyclecolormapimage — Displaces an image's colormap

### Açıklama

public function Gmagick::cyclecolormapimage(int `$displace`): Gmagick

Displaces an image's colormap by a given number of positions. If you cycle the colormap a number of times you can produce a psychedelic effect.

### Bağımsız Değişkenler

`displace`
  The amount to displace the colormap.

### Dönen Değerler

Returns self on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::deconstructimages

(PECL gmagick >= Unknown)

Gmagick::deconstructimages — Returns certain pixel differences between images

### Açıklama

public function Gmagick::deconstructimages(): Gmagick

Compares each image with the next in a sequence and returns the maximum bounding region of any pixel differences it discovers.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a new Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::despeckleimage

(PECL gmagick >= Unknown)

Gmagick::despeckleimage — The despeckleimage purpose

### Açıklama

public function Gmagick::despeckleimage(): Gmagick

Reduces the speckle noise in an image while preserving the edges of the original image.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The despeckled Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

### Örnekler

Örnek 1 Gmagick::despeckleimage() example

    <?php
    /* ... */
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    ...

# Gmagick::destroy

(PECL gmagick >= Unknown)

Gmagick::destroy — The destroy purpose

### Açıklama

public function Gmagick::destroy(): bool

Destroys the Gmagick object and frees all resources associated with it

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::drawimage

(PECL gmagick >= Unknown)

Gmagick::drawimage — Renders the GmagickDraw object on the current image

### Açıklama

public function Gmagick::drawimage(GmagickDraw `$GmagickDraw`): Gmagick

Renders the GmagickDraw object on the current image.

### Bağımsız Değişkenler

`GmagickDraw`
  The drawing operations to render on the image.

### Dönen Değerler

The drawn Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::edgeimage

(PECL gmagick >= Unknown)

Gmagick::edgeimage — Enhance edges within the image

### Açıklama

public function Gmagick::edgeimage(float `$radius`): Gmagick

Enhance edges within the image with a convolution filter of the given radius. Use radius 0 and it will be auto-selected.

### Bağımsız Değişkenler

`radius`
  The radius of the operation.

### Dönen Değerler

The Gmagick object with edges enhanced.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::embossimage

(PECL gmagick >= Unknown)

Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect

### Açıklama

public function Gmagick::embossimage(float `$radius`, float `$sigma`): Gmagick

Returns a grayscale image with a three-dimensional effect. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and it will choose a suitable radius for you.

### Bağımsız Değişkenler

`radius`
  The radius of the effect.
`sigma`
  The sigma of the effect.

### Dönen Değerler

The embossed Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::enhanceimage

(PECL gmagick >= Unknown)

Gmagick::enhanceimage — Improves the quality of a noisy image

### Açıklama

public function Gmagick::enhanceimage(): Gmagick

Applies a digital filter that improves the quality of a noisy image.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The enhanced Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::equalizeimage

(PECL gmagick >= Unknown)

Gmagick::equalizeimage — Equalizes the image histogram

### Açıklama

public function Gmagick::equalizeimage(): Gmagick

Equalizes the image histogram.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The equalized Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::flipimage

(PECL gmagick >= Unknown)

Gmagick::flipimage — Creates a vertical mirror image

### Açıklama

public function Gmagick::flipimage(): Gmagick

Creates a vertical mirror image by reflecting the pixels around the central x-axis.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The flipped Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

### Ayrıca Bakınız

- Gmagick::flopimage() - Creates a horizontal mirror image

# Gmagick::flopimage

(PECL gmagick >= Unknown)

Gmagick::flopimage — Creates a horizontal mirror image

### Açıklama

public function Gmagick::flopimage(): Gmagick

Creates a horizontal mirror image by reflecting the pixels around the central y-axis.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The flopped Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

### Ayrıca Bakınız

- Gmagick::flipimage() - Creates a vertical mirror image

# Gmagick::frameimage

(PECL gmagick >= Unknown)

Gmagick::frameimage — Adds a simulated three-dimensional border

### Açıklama

public function Gmagick::frameimage(
GmagickPixel `$color`,
int `$width`,
int `$height`,
int `$inner_bevel`,
int `$outer_bevel`
): Gmagick

Adds a simulated three-dimensional border around the image. The width and height specify the border width of the vertical and horizontal sides of the frame. The inner and outer bevels indicate the width of the inner and outer shadows of the frame.

### Bağımsız Değişkenler

`color`
  GmagickPixel object or a float representing the matte color.
`width`
  The width of the border.
`height`
  The height of the border.
`inner_bevel`
  The inner bevel width.
`outer_bevel`
  The outer bevel width.

### Dönen Değerler

The framed Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::gammaimage

(PECL gmagick >= Unknown)

Gmagick::gammaimage — Gamma-corrects an image

### Açıklama

public function Gmagick::gammaimage(float `$gamma`): Gmagick

Gamma-corrects an image. The same image viewed on different devices will have perceptual differences in the way the image's intensities are represented on the screen. Specify individual gamma levels for the red, green, and blue channels, or adjust all three with the gamma parameter. Values typically range from 0.8 to 2.3.

### Bağımsız Değişkenler

`gamma`
  The amount of gamma-correction.

### Dönen Değerler

The gamma corrected Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getcopyright

(PECL gmagick >= Unknown)

Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string

### Açıklama

public function Gmagick::getcopyright(): string

Returns the GraphicsMagick API copyright as a string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the copyright notice of GraphicsMagick and Magickwand C API.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getfilename

(PECL gmagick >= Unknown)

Gmagick::getfilename — The filename associated with an image sequence

### Açıklama

public function Gmagick::getfilename(): string

Returns the filename associated with an image sequence.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagebackgroundcolor

(PECL gmagick >= Unknown)

Gmagick::getimagebackgroundcolor — Returns the image background color

### Açıklama

public function Gmagick::getimagebackgroundcolor(): GmagickPixel

Returns the image background color.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an GmagickPixel set to the background color of the image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageblueprimary

(PECL gmagick >= Unknown)

Gmagick::getimageblueprimary — Returns the chromaticy blue primary point

### Açıklama

public function Gmagick::getimageblueprimary(): array

Returns the chromaticity blue primary point for the image.

### Bağımsız Değişkenler

`x`
  The chromaticity blue primary x-point.
`y`
  The chromaticity blue primary y-point.

### Dönen Değerler

Array consisting of "x" and "y" coordinates of point.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagebordercolor

(PECL gmagick >= Unknown)

Gmagick::getimagebordercolor — Returns the image border color

### Açıklama

public function Gmagick::getimagebordercolor(): GmagickPixel

Returns the image border color.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

GmagickPixel object representing the color of the border.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagechanneldepth

(PECL gmagick >= Unknown)

Gmagick::getimagechanneldepth — Gets the depth for a particular image channel

### Açıklama

public function Gmagick::getimagechanneldepth(int `$channel_type`): int

Gets the depth for a particular image channel.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Depth of image channel

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagecolors

(PECL gmagick >= Unknown)

Gmagick::getimagecolors — Returns the color of the specified colormap index

### Açıklama

public function Gmagick::getimagecolors(): int

Returns the color of the specified colormap index.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The number of colors in image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagecolorspace

(PECL gmagick >= Unknown)

Gmagick::getimagecolorspace — Gets the image colorspace

### Açıklama

public function Gmagick::getimagecolorspace(): int

Gets the image colorspace.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Colorspace

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagecompose

(PECL gmagick >= Unknown)

Gmagick::getimagecompose — Returns the composite operator associated with the image

### Açıklama

public function Gmagick::getimagecompose(): int

Returns the composite operator associated with the image.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the composite operator associated with the image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagedelay

(PECL gmagick >= Unknown)

Gmagick::getimagedelay — Gets the image delay

### Açıklama

public function Gmagick::getimagedelay(): int

Gets the image delay

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the composite operator associated with the image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagedepth

(PECL gmagick >= Unknown)

Gmagick::getimagedepth — Gets the depth of the image

### Açıklama

public function Gmagick::getimagedepth(): int

Gets the depth of the image.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Image depth

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagedispose

(PECL gmagick >= Unknown)

Gmagick::getimagedispose — Gets the image disposal method

### Açıklama

public function Gmagick::getimagedispose(): int

Gets the image disposal method

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the dispose method on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageextrema

(PECL gmagick >= Unknown)

Gmagick::getimageextrema — Gets the extrema for the image

### Açıklama

public function Gmagick::getimageextrema(): array

Returns an associative array with the keys "min" and "max". Hata durumunda bir GmagickException istisnası oluşur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an associative array with the keys "min" and "max".

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagefilename

(PECL gmagick >= Unknown)

Gmagick::getimagefilename — Returns the filename of a particular image in a sequence

### Açıklama

public function Gmagick::getimagefilename(): string

Returns the filename of a particular image in a sequence

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string with the filename of the image

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageformat

(PECL gmagick >= Unknown)

Gmagick::getimageformat — Returns the format of a particular image in a sequence

### Açıklama

public function Gmagick::getimageformat(): string

Returns the format of a particular image in a sequence.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the image format on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagegamma

(PECL gmagick >= Unknown)

Gmagick::getimagegamma — Gets the image gamma

### Açıklama

public function Gmagick::getimagegamma(): float

Gets the image gamma

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image gamma on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagegreenprimary

(PECL gmagick >= Unknown)

Gmagick::getimagegreenprimary — Returns the chromaticy green primary point

### Açıklama

public function Gmagick::getimagegreenprimary(): array

Returns the chromaticity green primary point. Returns an array with the keys "x" and "y".

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array with the keys "x" and "y" on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageheight

(PECL gmagick >= Unknown)

Gmagick::getimageheight — Returns the image height

### Açıklama

public function Gmagick::getimageheight(): int

Returns the image height

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image height in pixels.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagehistogram

(PECL gmagick >= Unknown)

Gmagick::getimagehistogram — Gets the image histogram

### Açıklama

public function Gmagick::getimagehistogram(): array

Returns the image histogram as an array of GmagickPixel objects. Throw an GmagickException on error.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image histogram as an array of GmagickPixel objects.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageindex

(PECL gmagick >= Unknown)

Gmagick::getimageindex — Gets the index of the current active image

### Açıklama

public function Gmagick::getimageindex(): int

Returns the index of the current active image within the Gmagick object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Index of current active image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageinterlacescheme

(PECL gmagick >= Unknown)

Gmagick::getimageinterlacescheme — Gets the image interlace scheme

### Açıklama

public function Gmagick::getimageinterlacescheme(): int

Gets the image interlace scheme.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the interlace scheme as an integer on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageiterations

(PECL gmagick >= Unknown)

Gmagick::getimageiterations — Gets the image iterations

### Açıklama

public function Gmagick::getimageiterations(): int

Gets the image iterations.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image iterations as an integer.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagematte

(PECL gmagick >= Unknown)

Gmagick::getimagematte — Check if the image has a matte channel

### Açıklama

public function Gmagick::getimagematte(): int

Returns `true` if the image has a matte channel, otherwise `false`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the image has a matte channel, otherwise `false`.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagemattecolor

(PECL gmagick >= Unknown)

Gmagick::getimagemattecolor — Returns the image matte color

### Açıklama

public function Gmagick::getimagemattecolor(): GmagickPixel

Returns GmagickPixel object on success. Throw an GmagickException on error.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns GmagickPixel object on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageprofile

(PECL gmagick >= Unknown)

Gmagick::getimageprofile — Returns the named image profile

### Açıklama

public function Gmagick::getimageprofile(string `$name`): string

Returns the named image profile.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the image profile.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageredprimary

(PECL gmagick >= Unknown)

Gmagick::getimageredprimary — Returns the chromaticity red primary point

### Açıklama

public function Gmagick::getimageredprimary(): array

Returns the chromaticity red primary point as an array with the keys "x" and "y".

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the chromaticity red primary point as an array with the keys "x" and "y".

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagerenderingintent

(PECL gmagick >= Unknown)

Gmagick::getimagerenderingintent — Gets the image rendering intent

### Açıklama

public function Gmagick::getimagerenderingintent(): int

Gets the image rendering intent

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Extracts a region of the image and returns it as a new wand

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageresolution

(PECL gmagick >= Unknown)

Gmagick::getimageresolution — Gets the image X and Y resolution

### Açıklama

public function Gmagick::getimageresolution(): array

Returns the resolution as an array.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the resolution as an array.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagescene

(PECL gmagick >= Unknown)

Gmagick::getimagescene — Gets the image scene

### Açıklama

public function Gmagick::getimagescene(): int

Gets the image scene.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image scene.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagesignature

(PECL gmagick >= Unknown)

Gmagick::getimagesignature — Generates an SHA-256 message digest

### Açıklama

public function Gmagick::getimagesignature(): string

Generates an SHA-256 message digest for the image pixel stream.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string containing the SHA-256 hash of the file.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagetype

(PECL gmagick >= Unknown)

Gmagick::getimagetype — Gets the potential image type

### Açıklama

public function Gmagick::getimagetype(): int

Gets the potential image type.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the potential image type.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimageunits

(PECL gmagick >= Unknown)

Gmagick::getimageunits — Gets the image units of resolution

### Açıklama

public function Gmagick::getimageunits(): int

Gets the image units of resolution.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image units of resolution.

# Gmagick::getimagewhitepoint

(PECL gmagick >= Unknown)

Gmagick::getimagewhitepoint — Returns the chromaticity white point

### Açıklama

public function Gmagick::getimagewhitepoint(): array

Returns the chromaticity white point as an associative array with the keys "x" and "y".

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the chromaticity white point as an associative array with the keys "x" and "y".

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getimagewidth

(PECL gmagick >= Unknown)

Gmagick::getimagewidth — Returns the width of the image

### Açıklama

public function Gmagick::getimagewidth(): int

Returns the width of the image.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the image width.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getpackagename

(PECL gmagick >= Unknown)

Gmagick::getpackagename — Returns the GraphicsMagick package name

### Açıklama

public function Gmagick::getpackagename(): string

Returns the GraphicsMagick package name.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the GraphicsMagick package name as a string.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getquantumdepth

(PECL gmagick >= Unknown)

Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string

### Açıklama

public function Gmagick::getquantumdepth(): array

Returns the Gmagick quantum depth as a string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the Gmagick quantum depth as a string.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getreleasedate

(PECL gmagick >= Unknown)

Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string

### Açıklama

public function Gmagick::getreleasedate(): string

Returns the GraphicsMagick release date as a string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the GraphicsMagick release date as a string.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getsamplingfactors

(PECL gmagick >= Unknown)

Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor

### Açıklama

public function Gmagick::getsamplingfactors(): array

Gets the horizontal and vertical sampling factor.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an associative array with the horizontal and vertical sampling factors of the image.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getsize

(PECL gmagick >= Unknown)

Gmagick::getsize — Returns the size associated with the Gmagick object

### Açıklama

public function Gmagick::getsize(): array

Returns the size associated with the Gmagick object as an array with the keys "columns" and "rows".

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the size associated with the Gmagick object as an array with the keys "columns" and "rows".

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::getversion

(PECL gmagick >= Unknown)

Gmagick::getversion — Returns the GraphicsMagick API version

### Açıklama

public function Gmagick::getversion(): array

Returns the GraphicsMagick API version as a string and as a number.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the GraphicsMagick API version as a string and as a number.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::hasnextimage

(PECL gmagick >= Unknown)

Gmagick::hasnextimage — Checks if the object has more images

### Açıklama

public function Gmagick::hasnextimage(): mixed

Returns `true` if the object has more images when traversing the list in the forward direction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the object has more images when traversing the list in the forward direction, returns `false` if there are none.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::haspreviousimage

(PECL gmagick >= Unknown)

Gmagick::haspreviousimage — Checks if the object has a previous image

### Açıklama

public function Gmagick::haspreviousimage(): mixed

Returns `true` if the object has more images when traversing the list in the reverse direction.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the object has more images when traversing the list in the reverse direction, returns `false` if there are none.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::implodeimage

(PECL gmagick >= Unknown)

Gmagick::implodeimage — Creates a new image as a copy

### Açıklama

public function Gmagick::implodeimage(float `$radius`): mixed

Creates a new image that is a copy of an existing one with the image pixels "imploded" by the specified percentage.

### Bağımsız Değişkenler

`radius`
  The radius of the implode.

### Dönen Değerler

Returns imploded Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::labelimage

(PECL gmagick >= Unknown)

Gmagick::labelimage — Adds a label to an image

### Açıklama

public function Gmagick::labelimage(string `$label`): mixed

Adds a label to an image.

### Bağımsız Değişkenler

`label`
  The label to add

### Dönen Değerler

Gmagick with label.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::levelimage

(PECL gmagick >= Unknown)

Gmagick::levelimage — Adjusts the levels of an image

### Açıklama

public function Gmagick::levelimage(
float `$blackPoint`,
float `$gamma`,
float `$whitePoint`,
int `$channel` = Gmagick::CHANNEL_DEFAULT
): mixed

Adjusts the levels of an image by scaling the colors falling between specified white and black points to the full available quantum range. The parameters provided represent the black, mid, and white points. The black point specifies the darkest color in the image. Colors darker than the black point are set to zero. Mid point specifies a gamma correction to apply to the image. White point specifies the lightest color in the image. Colors brighter than the white point are set to the maximum quantum value.

### Bağımsız Değişkenler

`blackPoint`
  The image black point.
`gamma`
  The gamma value.
`whitePoint`
  The image white point.
`channel`
  Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

### Dönen Değerler

Gmagick object with image leveled.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::magnifyimage

(PECL gmagick >= Unknown)

Gmagick::magnifyimage — Scales an image proportionally 2x

### Açıklama

public function Gmagick::magnifyimage(): mixed

Conveniently scales an image proportionally to twice its original size.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Magnified Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::mapimage

(PECL gmagick >= Unknown)

Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image

### Açıklama

public function Gmagick::mapimage(gmagick `$gmagick`, bool `$dither`): Gmagick

Replaces the colors of an image with the closest color from a reference image.

### Bağımsız Değişkenler

`gmagick`
  The reference image.
`dither`
  Set this integer value to something other than zero to dither the mapped image.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::medianfilterimage

(PECL gmagick >= Unknown)

Gmagick::medianfilterimage — Applies a digital filter

### Açıklama

public function Gmagick::medianfilterimage(float `$radius`): void

Applies a digital filter that improves the quality of a noisy image. Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.

### Bağımsız Değişkenler

`radius`
  The radius of the pixel neighborhood.

### Dönen Değerler

Gmagick object with median filter applied.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::minifyimage

(PECL gmagick >= Unknown)

Gmagick::minifyimage — Scales an image proportionally to half its size

### Açıklama

public function Gmagick::minifyimage(): Gmagick

A convenient method that scales an image proportionally to one-half its original size.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::modulateimage

(PECL gmagick >= Unknown)

Gmagick::modulateimage — Control the brightness, saturation, and hue

### Açıklama

public function Gmagick::modulateimage(float `$brightness`, float `$saturation`, float `$hue`): Gmagick

Lets you control the brightness, saturation, and hue of an image. Hue is the percentage of absolute rotation from the current position. For example 50 results in a counter-clockwise rotation of 90 degrees, 150 results in a clockwise rotation of 90 degrees, with 0 and 200 both resulting in a rotation of 180 degrees.

### Bağımsız Değişkenler

`brightness`
  The percent change in brighness (-100 thru +100).
`saturation`
  The percent change in saturation (-100 thru +100)
`hue`
  The percent change in hue (-100 thru +100)

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::motionblurimage

(PECL gmagick >= Unknown)

Gmagick::motionblurimage — Simulates motion blur

### Açıklama

public function Gmagick::motionblurimage(float `$radius`, float `$sigma`, float `$angle`): Gmagick

Simulates motion blur. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and Gmagick::motionblurimage() selects a suitable radius for you. Angle gives the angle of the blurring motion.

### Bağımsız Değişkenler

`radius`
  The radius of the Gaussian, in pixels, not counting the center pixel.
`sigma`
  The standard deviation of the Gaussian, in pixels.
`angle`
  Apply the effect along this angle.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::newimage

(PECL gmagick >= Unknown)

Gmagick::newimage — Creates a new image

### Açıklama

public function Gmagick::newimage(
int `$width`,
int `$height`,
string `$background`,
string `$format` = ?
): Gmagick

Creates a new image with the specified background color.

### Bağımsız Değişkenler

`width`
  Width of the new image.
`height`
  Height of the new image.
`background`
  The background color used for this image (as float).
`format`
  Image format.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::nextimage

(PECL gmagick >= Unknown)

Gmagick::nextimage — Moves to the next image

### Açıklama

public function Gmagick::nextimage(): bool

Associates the next image in the image list with an Gmagick object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::normalizeimage

(PECL gmagick >= Unknown)

Gmagick::normalizeimage — Enhances the contrast of a color image

### Açıklama

public function Gmagick::normalizeimage(int `$channel` = ?): Gmagick

Enhances the contrast of a color image by adjusting the pixels color to span the entire range of colors available.

### Bağımsız Değişkenler

`channel`
  Identify which channel to normalize.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::oilpaintimage

(PECL gmagick >= Unknown)

Gmagick::oilpaintimage — Simulates an oil painting

### Açıklama

public function Gmagick::oilpaintimage( float `$radius` ): Gmagick

Applies a special effect filter that simulates an oil painting. Each pixel is replaced by the most frequent color occurring in a circular region defined by radius.

### Bağımsız Değişkenler

`radius`
  The radius of the circular neighborhood.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::previousimage

(PECL gmagick >= Unknown)

Gmagick::previousimage — Move to the previous image in the object

### Açıklama

public function Gmagick::previousimage(): bool

Associates the previous image in an image list with the Gmagick object.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::profileimage

(PECL gmagick >= Unknown)

Gmagick::profileimage — Adds or removes a profile from an image

### Açıklama

public function Gmagick::profileimage(string `$name`, string `$profile`): Gmagick

Adds or removes a ICC, IPTC, or generic profile from an image. If the profile is `null`, it is removed from the image otherwise added. Use a name of `*` and a profile of `null` to remove all profiles from the image.

### Bağımsız Değişkenler

`name`
  Name of profile to add or remove: ICC, IPTC, or generic profile.
`profile`
  The profile.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::quantizeimage

(PECL gmagick >= Unknown)

Gmagick::quantizeimage — Analyzes the colors within a reference image

### Açıklama

public function Gmagick::quantizeimage(
int `$numColors`,
int `$colorspace`,
int `$treeDepth`,
bool `$dither`,
bool `$measureError`
): Gmagick

Analyzes the colors within a reference image and chooses a fixed number of colors to represent the image. The goal of the algorithm is to minimize the color difference between the input and output image while minimizing the processing time.

### Bağımsız Değişkenler

`numColors`
  The number of colors.
`colorspace`
  Perform color reduction in this colorspace, typically RGBColorspace.
`treeDepth`
  Normally, this integer value is zero or one. A zero or one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the reference image with the least amount of memory and the fastest computational speed. In some cases, such as an image with low color dispersion (a few number of colors), a value other than Log4(number_colors) is required. To expand the color tree completely, use a value of 8.
`dither`
  A value other than zero distributes the difference between an original image and the corresponding color reduced algorithm to neighboring pixels along a Hilbert curve.
`measureError`
  A value other than zero measures the difference between the original and quantized images. This difference is the total quantization error. The error is computed by summing over all pixels in an image the distance squared in RGB space between each reference pixel value and its quantized value.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::quantizeimages

(PECL gmagick >= Unknown)

Gmagick::quantizeimages — The quantizeimages purpose

### Açıklama

public function Gmagick::quantizeimages(
int `$numColors`,
int `$colorspace`,
int `$treeDepth`,
bool `$dither`,
bool `$measureError`
): Gmagick

Analyzes the colors within a sequence of images and chooses a fixed number of colors to represent the image. The goal of the algorithm is to minimize the color difference between the input and output image while minimizing the processing time.

### Bağımsız Değişkenler

`numColors`
  The number of colors.
`colorspace`
  Perform color reduction in this colorspace, typically RGBColorspace.
`treeDepth`
  Normally, this integer value is zero or one. A zero or one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the reference image with the least amount of memory and the fastest computational speed. In some cases, such as an image with low color dispersion (a few number of colors), a value other than Log4(number_colors) is required. To expand the color tree completely, use a value of 8.
`dither`
  A value other than zero distributes the difference between an original image and the corresponding color reduced algorithm to neighboring pixels along a Hilbert curve.
`measureError`
  A value other than zero measures the difference between the original and quantized images. This difference is the total quantization error. The error is computed by summing over all pixels in an image the distance squared in RGB space between each reference pixel value and its quantized value.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::queryfontmetrics

(PECL gmagick >= Unknown)

Gmagick::queryfontmetrics — Returns an array representing the font metrics

### Açıklama

public function Gmagick::queryfontmetrics(GmagickDraw `$draw`, string `$text`): array

MagickQueryFontMetrics() returns an array representing the font metrics.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::queryfonts

(PECL gmagick >= Unknown)

Gmagick::queryfonts — Returns the configured fonts

### Açıklama

public function Gmagick::queryfonts(string `$pattern` = "*"): array

Returns fonts supported by Gmagick.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::queryformats

(PECL gmagick >= Unknown)

Gmagick::queryformats — Returns formats supported by Gmagick

### Açıklama

public function Gmagick::queryformats(string `$pattern` = "*"): array

Returns formats supported by Gmagick.

### Bağımsız Değişkenler

`pattern`
  Specifies a string containing a pattern.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::radialblurimage

(PECL gmagick >= Unknown)

Gmagick::radialblurimage — Radial blurs an image

### Açıklama

public function Gmagick::radialblurimage(float `$angle`, int `$channel` = Gmagick::CHANNEL_DEFAULT): Gmagick

Radial blurs an image.

### Bağımsız Değişkenler

`angle`
  The angle of the blur in degrees.
`channel`
  Related channel.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::raiseimage

(PECL gmagick >= Unknown)

Gmagick::raiseimage — Creates a simulated 3d button-like effect

### Açıklama

public function Gmagick::raiseimage(
int `$width`,
int `$height`,
int `$x`,
int `$y`,
bool `$raise`
): Gmagick

Creates a simulated three-dimensional button-like effect by lightening and darkening the edges of the image. Members width and height of raise_info define the width of the vertical and horizontal edge of the effect.

### Bağımsız Değişkenler

`width`
  Width of the area to raise.
`height`
  Height of the area to raise.
`x`
  X coordinate.
`y`
  Y coordinate.
`raise`
  A value other than zero creates a 3-D raise effect, otherwise it has a lowered effect.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::read

(PECL gmagick >= Unknown)

Gmagick::read — Reads image from filename

### Açıklama

public function Gmagick::read(string `$filename`): Gmagick

Reads image from filename.

### Bağımsız Değişkenler

`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::readimage

(PECL gmagick >= Unknown)

Gmagick::readimage — Reads image from filename

### Açıklama

public function Gmagick::readimage(string `$filename`): Gmagick

Reads image from filename.

### Bağımsız Değişkenler

`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::readimageblob

(PECL gmagick >= Unknown)

Gmagick::readimageblob — Reads image from a binary string

### Açıklama

public function Gmagick::readimageblob(string `$imageContents`, string `$filename` = ?): Gmagick

Reads image from a binary string.

### Bağımsız Değişkenler

`imageContents`
  Content of image.
`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::readimagefile

(PECL gmagick >= Unknown)

Gmagick::readimagefile — The readimagefile purpose

### Açıklama

public function Gmagick::readimagefile(resource `$fp`, string `$filename` = ?): Gmagick

Reads an image or image sequence from an open file descriptor.

### Bağımsız Değişkenler

`fp`
  The file descriptor.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::reducenoiseimage

(PECL gmagick >= Unknown)

Gmagick::reducenoiseimage — Smooths the contours of an image

### Açıklama

public function Gmagick::reducenoiseimage(float `$radius`): Gmagick

Smooths the contours of an image while still preserving edge information. The algorithm works by replacing each pixel with its neighbor closest in value. A neighbor is defined by radius. Use a radius of 0 and Gmagick::reducenoiseimage() selects a suitable radius for you.

### Bağımsız Değişkenler

`radius`
  The radius of the pixel neighborhood.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::removeimage

(PECL gmagick >= Unknown)

Gmagick::removeimage — Removes an image from the image list

### Açıklama

public function Gmagick::removeimage(): Gmagick

Removes an image from the image list.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::removeimageprofile

(PECL gmagick >= Unknown)

Gmagick::removeimageprofile — Removes the named image profile and returns it

### Açıklama

public function Gmagick::removeimageprofile(string `$name`): string

Removes the named image profile and returns it.

### Bağımsız Değişkenler

`name`
  Name of profile to return: ICC, IPTC, or generic profile.

### Dönen Değerler

The named profile.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::resampleimage

(PECL gmagick >= Unknown)

Gmagick::resampleimage — Resample image to desired resolution

### Açıklama

public function Gmagick::resampleimage(
float `$xResolution`,
float `$yResolution`,
int `$filter`,
float `$blur`
): Gmagick

Resample image to desired resolution.

### Bağımsız Değişkenler

`xResolution`
  The new image x resolution.
`yResolution`
  The new image y resolution.
`filter`
  Image filter to use.
`blur`
  The blur factor where larger than 1 is blurry, smaller than 1 is sharp.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::resizeimage

(PECL gmagick >= Unknown)

Gmagick::resizeimage — Scales an image

### Açıklama

public function Gmagick::resizeimage(
int `$width`,
int `$height`,
int `$filter`,
float `$blur`,
bool `$fit` = `false`
): Gmagick

Scales an image to the desired dimensions with a filter.

### Bağımsız Değişkenler

`width`
  The number of columns in the scaled image.
`height`
  The number of rows in the scaled image.
`filter`
  Image filter to use.
`blur`
  The blur factor where larger than 1 is blurry, lesser than 1 is sharp.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::rollimage

(PECL gmagick >= Unknown)

Gmagick::rollimage — Offsets an image

### Açıklama

public function Gmagick::rollimage(int `$x`, int `$y`): Gmagick

Offsets an image as defined by x and y.

### Bağımsız Değişkenler

`x`
  The x offset.
`y`
  The y offset.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::rotateimage

(PECL gmagick >= Unknown)

Gmagick::rotateimage — Rotates an image

### Açıklama

public function Gmagick::rotateimage(mixed `$color`, float `$degrees`): Gmagick

Rotates an image the specified number of degrees. Empty triangles left over from rotating the image are filled with the background color.

### Bağımsız Değişkenler

`color`
  The background pixel.
`degrees`
  The number of degrees to rotate the image.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::scaleimage

(PECL gmagick >= Unknown)

Gmagick::scaleimage — Scales the size of an image

### Açıklama

public function Gmagick::scaleimage(int `$width`, int `$height`, bool `$fit` = `false`): Gmagick

Scales the size of an image to the given dimensions. The other parameter will be calculated if 0 is passed as either param.

### Bağımsız Değişkenler

`width`
  The number of columns in the scaled image.
`height`
  The number of rows in the scaled image.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::separateimagechannel

(PECL gmagick >= Unknown)

Gmagick::separateimagechannel — Separates a channel from the image

### Açıklama

public function Gmagick::separateimagechannel(int `$channel`): Gmagick

Separates a channel from the image and returns a grayscale image. A channel is a particular color component of each pixel in the image.

### Bağımsız Değişkenler

`channel`
  One of the Channel constant (`Gmagick::CHANNEL_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setCompressionQuality

(No version information available, might only be in Git)

Gmagick::setCompressionQuality — Sets the object's default compression quality

### Açıklama

function Gmagick::setCompressionQuality( int `$quality` ): Gmagick

Sets the object's default compression quality.

### Bağımsız Değişkenler

`quality`
  The GraphicsMagick default value is 75.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

### Örnekler

Örnek 1 Gmagick::setCompressionQuality()

    <?php
    $gm = new Gmagick();
    $gm->read("magick:rose");
    $gm->setCompressionQuality(2);
    ?>

# Gmagick::setfilename

(PECL gmagick >= Unknown)

Gmagick::setfilename — Sets the filename before you read or write the image

### Açıklama

public function Gmagick::setfilename(string `$filename`): Gmagick

Sets the filename before you read or write an image file.

### Bağımsız Değişkenler

`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagebackgroundcolor

(PECL gmagick >= Unknown)

Gmagick::setimagebackgroundcolor — Sets the image background color

### Açıklama

public function Gmagick::setimagebackgroundcolor(GmagickPixel `$color`): Gmagick

Sets the image background color.

### Bağımsız Değişkenler

`color`
  The background pixel wand.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageblueprimary

(PECL gmagick >= Unknown)

Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point

### Açıklama

public function Gmagick::setimageblueprimary(float `$x`, float `$y`): Gmagick

Sets the image chromaticity blue primary point.

### Bağımsız Değişkenler

`x`
  The blue primary x-point.
`y`
  The blue primary y-point.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagebordercolor

(PECL gmagick >= Unknown)

Gmagick::setimagebordercolor — Sets the image border color

### Açıklama

public function Gmagick::setimagebordercolor(GmagickPixel `$color`): Gmagick

Sets the image border color.

### Bağımsız Değişkenler

`color`
  The border pixel wand.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagechanneldepth

(PECL gmagick >= Unknown)

Gmagick::setimagechanneldepth — Sets the depth of a particular image channel

### Açıklama

public function Gmagick::setimagechanneldepth(int `$channel`, int `$depth`): Gmagick

Sets the depth of a particular image channel.

### Bağımsız Değişkenler

`channel`
  One of the Channel constant (`Gmagick::CHANNEL_*`).
`depth`
  The image depth in bits.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagecolorspace

(PECL gmagick >= Unknown)

Gmagick::setimagecolorspace — Sets the image colorspace

### Açıklama

public function Gmagick::setimagecolorspace(int `$colorspace`): Gmagick

Sets the image colorspace.

### Bağımsız Değişkenler

`colorspace`
  One of the Colorspace constant (`Gmagick::COLORSPACE_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagecompose

(PECL gmagick >= Unknown)

Gmagick::setimagecompose — Sets the image composite operator

### Açıklama

public function Gmagick::setimagecompose(int `$composite`): Gmagick

Sets the image composite operator.

### Bağımsız Değişkenler

`composite`
  The image composite operator.

### Dönen Değerler

The Gmagick object on success

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagedelay

(PECL gmagick >= Unknown)

Gmagick::setimagedelay — Sets the image delay

### Açıklama

public function Gmagick::setimagedelay(int `$delay`): Gmagick

Sets the image delay.

### Bağımsız Değişkenler

`delay`
  The image delay in 1/100th of a second.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagedepth

(PECL gmagick >= Unknown)

Gmagick::setimagedepth — Sets the image depth

### Açıklama

public function Gmagick::setimagedepth(int `$depth`): Gmagick

Sets the image depth.

### Bağımsız Değişkenler

`depth`
  The image depth in bits: 8, 16, or 32.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagedispose

(PECL gmagick >= Unknown)

Gmagick::setimagedispose — Sets the image disposal method

### Açıklama

public function Gmagick::setimagedispose(int `$disposeType`): Gmagick

Sets the image disposal method.

### Bağımsız Değişkenler

`disposeType`
  The image disposal type.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagefilename

(PECL gmagick >= Unknown)

Gmagick::setimagefilename — Sets the filename of a particular image in a sequence

### Açıklama

public function Gmagick::setimagefilename(string `$filename`): Gmagick

Sets the filename of a particular image in a sequence.

### Bağımsız Değişkenler

`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageformat

(PECL gmagick >= Unknown)

Gmagick::setimageformat — Sets the format of a particular image

### Açıklama

public function Gmagick::setimageformat(string `$imageFormat`): Gmagick

Sets the format of a particular image in a sequence.

### Bağımsız Değişkenler

`imageFormat`
  The image format.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagegamma

(PECL gmagick >= Unknown)

Gmagick::setimagegamma — Sets the image gamma

### Açıklama

public function Gmagick::setimagegamma(float `$gamma`): Gmagick

Sets the image gamma.

### Bağımsız Değişkenler

`gamma`
  The image gamma.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagegreenprimary

(PECL gmagick >= Unknown)

Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point

### Açıklama

public function Gmagick::setimagegreenprimary(float `$x`, float `$y`): Gmagick

Sets the image chromaticity green primary point.

### Bağımsız Değişkenler

`x`
  The chromaticity green primary x-point.
`y`
  The chromaticity green primary y-point.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageindex

(PECL gmagick >= Unknown)

Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter

### Açıklama

public function Gmagick::setimageindex(int `$index`): Gmagick

Set the iterator to the position in the image list specified with the index parameter.

### Bağımsız Değişkenler

`index`
  The scene number.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageinterlacescheme

(PECL gmagick >= Unknown)

Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image

### Açıklama

public function Gmagick::setimageinterlacescheme(int `$interlace`): Gmagick

Sets the interlace scheme of the image.

### Bağımsız Değişkenler

`interlace`
  One of the Interlace constant (`Gmagick::INTERLACE_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageiterations

(PECL gmagick >= Unknown)

Gmagick::setimageiterations — Sets the image iterations

### Açıklama

public function Gmagick::setimageiterations(int `$iterations`): Gmagick

Sets the image iterations.

### Bağımsız Değişkenler

`iterations`
  The image delay in 1/100th of a second.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageprofile

(PECL gmagick >= Unknown)

Gmagick::setimageprofile — Adds a named profile to the Gmagick object

### Açıklama

public function Gmagick::setimageprofile(string `$name`, string `$profile`): Gmagick

Adds a named profile to the Gmagick object. If a profile with the same name already exists, it is replaced. This method differs from the Gmagick::profileimage() method in that it does not apply any CMS color profiles.

### Bağımsız Değişkenler

`name`
  Name of profile to add or remove: ICC, IPTC, or generic profile.
`profile`
  The profile.

### Dönen Değerler

The Gmagick object on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageredprimary

(PECL gmagick >= Unknown)

Gmagick::setimageredprimary — Sets the image chromaticity red primary point

### Açıklama

public function Gmagick::setimageredprimary(float `$x`, float `$y`): Gmagick

Sets the image chromaticity red primary point.

### Bağımsız Değişkenler

`x`
  The red primary x-point.
`y`
  The red primary y-point.

### Dönen Değerler

The Gmagick object on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagerenderingintent

(PECL gmagick >= Unknown)

Gmagick::setimagerenderingintent — Sets the image rendering intent

### Açıklama

public function Gmagick::setimagerenderingintent(int `$rendering_intent`): Gmagick

Sets the image rendering intent.

### Bağımsız Değişkenler

`rendering_intent`
  One of the Rendering Intent constant (`Gmagick::RENDERINGINTENT_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageresolution

(PECL gmagick >= Unknown)

Gmagick::setimageresolution — Sets the image resolution

### Açıklama

public function Gmagick::setimageresolution(float `$xResolution`, float `$yResolution`): Gmagick

Sets the image resolution.

### Bağımsız Değişkenler

`xResolution`
  The image x resolution.
`yResolution`
  The image y resolution.

### Dönen Değerler

The Gmagick object on success.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagescene

(PECL gmagick >= Unknown)

Gmagick::setimagescene — Sets the image scene

### Açıklama

public function Gmagick::setimagescene(int `$scene`): Gmagick

Sets the image scene.

### Bağımsız Değişkenler

`scene`
  The image scene number.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagetype

(PECL gmagick >= Unknown)

Gmagick::setimagetype — Sets the image type

### Açıklama

public function Gmagick::setimagetype(int `$imgType`): Gmagick

Sets the image type.

### Bağımsız Değişkenler

`imgType`
  One of the Image type constant (`Gmagick::IMGTYPE_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimageunits

(PECL gmagick >= Unknown)

Gmagick::setimageunits — Sets the image units of resolution

### Açıklama

public function Gmagick::setimageunits(int `$resolution`): Gmagick

Sets the image units of resolution.

### Bağımsız Değişkenler

`resolution`
  One of the Resolution constant (`Gmagick::RESOLUTION_*`).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setimagewhitepoint

(PECL gmagick >= Unknown)

Gmagick::setimagewhitepoint — Sets the image chromaticity white point

### Açıklama

public function Gmagick::setimagewhitepoint(float `$x`, float `$y`): Gmagick

Sets the image chromaticity white point.

### Bağımsız Değişkenler

`x`
  The white x-point.
`y`
  The white y-point.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setsamplingfactors

(PECL gmagick >= Unknown)

Gmagick::setsamplingfactors — Sets the image sampling factors

### Açıklama

public function Gmagick::setsamplingfactors(array `$factors`): Gmagick

Sets the image sampling factors.

### Bağımsız Değişkenler

`factors`
  An array of floats representing the sampling factor for each color component (in RGB order).

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::setsize

(PECL gmagick >= Unknown)

Gmagick::setsize — Sets the size of the Gmagick object

### Açıklama

public function Gmagick::setsize(int `$columns`, int `$rows`): Gmagick

Sets the size of the Gmagick object. Set it before you read a raw image format such as `Gmagick::COLORSPACE_RGB`, `Gmagick::COLORSPACE_GRAY`, or `Gmagick::COLORSPACE_CMYK`.

### Bağımsız Değişkenler

`columns`
  The width in pixels.
`rows`
  The height in pixels.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::shearimage

(PECL gmagick >= Unknown)

Gmagick::shearimage — Creating a parallelogram

### Açıklama

public function Gmagick::shearimage(mixed `$color`, float `$xShear`, float `$yShear`): Gmagick

Slides one edge of an image along the X or Y axis, creating a parallelogram. An X direction shear slides an edge along the X axis, while a Y direction shear slides an edge along the Y axis. The amount of the shear is controlled by a shear angle. For X direction shears, x_shear is measured relative to the Y axis, and similarly, for Y direction shears y_shear is measured relative to the X axis. Empty triangles left over from shearing the image are filled with the background color.

### Bağımsız Değişkenler

`color`
  The background pixel wand.
`xShear`
  The number of degrees to shear the image.
`yShear`
  The number of degrees to shear the image.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::solarizeimage

(PECL gmagick >= Unknown)

Gmagick::solarizeimage — Applies a solarizing effect to the image

### Açıklama

public function Gmagick::solarizeimage(int `$threshold`): Gmagick

Applies a special effect to the image, similar to the effect achieved in a photo darkroom by selectively exposing areas of photo sensitive paper to light. Threshold ranges from 0 to QuantumRange and is a measure of the extent of the solarization.

### Bağımsız Değişkenler

`threshold`
  Define the extent of the solarization.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::spreadimage

(PECL gmagick >= Unknown)

Gmagick::spreadimage — Randomly displaces each pixel in a block

### Açıklama

public function Gmagick::spreadimage(float `$radius`): Gmagick

Special effects method that randomly displaces each pixel in a block defined by the radius parameter.

### Bağımsız Değişkenler

`radius`
  Choose a random pixel in a neighborhood of this extent.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::stripimage

(PECL gmagick >= Unknown)

Gmagick::stripimage — Strips an image of all profiles and comments

### Açıklama

public function Gmagick::stripimage(): Gmagick

Strips an image of all profiles and comments.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::swirlimage

(PECL gmagick >= Unknown)

Gmagick::swirlimage — Swirls the pixels about the center of the image

### Açıklama

public function Gmagick::swirlimage(float `$degrees`): Gmagick

Swirls the pixels about the center of the image, where degrees indicates the sweep of the arc through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to 360.

### Bağımsız Değişkenler

`degrees`
  Define the tightness of the swirling effect.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::thumbnailimage

(PECL gmagick >= Unknown)

Gmagick::thumbnailimage — Changes the size of an image

### Açıklama

public function Gmagick::thumbnailimage(int `$width`, int `$height`, bool `$fit` = `false`): Gmagick

Changes the size of an image to the given dimensions and removes any associated profiles. The goal is to produce small low cost thumbnail images suited for display on the Web. If `true` is given as a third parameter then columns and rows parameters are used as maximums for each side. Both sides will be scaled down until the match or are smaller than the parameter given for the side.

### Bağımsız Değişkenler

`width`
  Image width.
`height`
  Image height.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::trimimage

(PECL gmagick >= Unknown)

Gmagick::trimimage — Remove edges from the image

### Açıklama

public function Gmagick::trimimage(float `$fuzz`): Gmagick

Remove edges that are the background color from the image.

### Bağımsız Değişkenler

`fuzz`
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. This parameter represents the variation on the quantum range.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

# Gmagick::write

(PECL gmagick >= Unknown)

Gmagick::write — Takma Adı: Gmagick::writeimage()

### Açıklama

Bu yöntem şu yöntemin takma adıdır: Gmagick::writeimage().

# Gmagick::writeimage

(PECL gmagick >= Unknown)

Gmagick::writeimage — Writes an image to the specified filename

### Açıklama

public function Gmagick::writeimage(string `$filename`, bool `$all_frames` = `false`): Gmagick

Writes an image to the specified filename. If the filename parameter is `null`, the image is written to the filename set by Gmagick::readimage() or Gmagick::setimagefilename().

### Bağımsız Değişkenler

`filename`
  The image filename.

### Dönen Değerler

The Gmagick object.

### Hatalar/İstisnalar

Hata durumunda bir GmagickException istisnası oluşur.

## İçindekiler

- Gmagick::addimage — Adds new image to Gmagick object image list
- Gmagick::addnoiseimage — Adds random noise to the image
- Gmagick::annotateimage — Annotates an image with text
- Gmagick::blurimage — Adds blur filter to image
- Gmagick::borderimage — Surrounds the image with a border
- Gmagick::charcoalimage — Simulates a charcoal drawing
- Gmagick::chopimage — Removes a region of an image and trims
- Gmagick::clear — Clears all resources associated to Gmagick object
- Gmagick::commentimage — Adds a comment to your image
- Gmagick::compositeimage — Composite one image onto another
- Gmagick::__construct — The Gmagick constructor
- Gmagick::cropimage — Extracts a region of the image
- Gmagick::cropthumbnailimage — Creates a crop thumbnail
- Gmagick::current — The current purpose
- Gmagick::cyclecolormapimage — Displaces an image's colormap
- Gmagick::deconstructimages — Returns certain pixel differences between images
- Gmagick::despeckleimage — The despeckleimage purpose
- Gmagick::destroy — The destroy purpose
- Gmagick::drawimage — Renders the GmagickDraw object on the current image
- Gmagick::edgeimage — Enhance edges within the image
- Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect
- Gmagick::enhanceimage — Improves the quality of a noisy image
- Gmagick::equalizeimage — Equalizes the image histogram
- Gmagick::flipimage — Creates a vertical mirror image
- Gmagick::flopimage — Creates a horizontal mirror image
- Gmagick::frameimage — Adds a simulated three-dimensional border
- Gmagick::gammaimage — Gamma-corrects an image
- Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string
- Gmagick::getfilename — The filename associated with an image sequence
- Gmagick::getimagebackgroundcolor — Returns the image background color
- Gmagick::getimageblueprimary — Returns the chromaticy blue primary point
- Gmagick::getimagebordercolor — Returns the image border color
- Gmagick::getimagechanneldepth — Gets the depth for a particular image channel
- Gmagick::getimagecolors — Returns the color of the specified colormap index
- Gmagick::getimagecolorspace — Gets the image colorspace
- Gmagick::getimagecompose — Returns the composite operator associated with the image
- Gmagick::getimagedelay — Gets the image delay
- Gmagick::getimagedepth — Gets the depth of the image
- Gmagick::getimagedispose — Gets the image disposal method
- Gmagick::getimageextrema — Gets the extrema for the image
- Gmagick::getimagefilename — Returns the filename of a particular image in a sequence
- Gmagick::getimageformat — Returns the format of a particular image in a sequence
- Gmagick::getimagegamma — Gets the image gamma
- Gmagick::getimagegreenprimary — Returns the chromaticy green primary point
- Gmagick::getimageheight — Returns the image height
- Gmagick::getimagehistogram — Gets the image histogram
- Gmagick::getimageindex — Gets the index of the current active image
- Gmagick::getimageinterlacescheme — Gets the image interlace scheme
- Gmagick::getimageiterations — Gets the image iterations
- Gmagick::getimagematte — Check if the image has a matte channel
- Gmagick::getimagemattecolor — Returns the image matte color
- Gmagick::getimageprofile — Returns the named image profile
- Gmagick::getimageredprimary — Returns the chromaticity red primary point
- Gmagick::getimagerenderingintent — Gets the image rendering intent
- Gmagick::getimageresolution — Gets the image X and Y resolution
- Gmagick::getimagescene — Gets the image scene
- Gmagick::getimagesignature — Generates an SHA-256 message digest
- Gmagick::getimagetype — Gets the potential image type
- Gmagick::getimageunits — Gets the image units of resolution
- Gmagick::getimagewhitepoint — Returns the chromaticity white point
- Gmagick::getimagewidth — Returns the width of the image
- Gmagick::getpackagename — Returns the GraphicsMagick package name
- Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string
- Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string
- Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor
- Gmagick::getsize — Returns the size associated with the Gmagick object
- Gmagick::getversion — Returns the GraphicsMagick API version
- Gmagick::hasnextimage — Checks if the object has more images
- Gmagick::haspreviousimage — Checks if the object has a previous image
- Gmagick::implodeimage — Creates a new image as a copy
- Gmagick::labelimage — Adds a label to an image
- Gmagick::levelimage — Adjusts the levels of an image
- Gmagick::magnifyimage — Scales an image proportionally 2x
- Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image
- Gmagick::medianfilterimage — Applies a digital filter
- Gmagick::minifyimage — Scales an image proportionally to half its size
- Gmagick::modulateimage — Control the brightness, saturation, and hue
- Gmagick::motionblurimage — Simulates motion blur
- Gmagick::newimage — Creates a new image
- Gmagick::nextimage — Moves to the next image
- Gmagick::normalizeimage — Enhances the contrast of a color image
- Gmagick::oilpaintimage — Simulates an oil painting
- Gmagick::previousimage — Move to the previous image in the object
- Gmagick::profileimage — Adds or removes a profile from an image
- Gmagick::quantizeimage — Analyzes the colors within a reference image
- Gmagick::quantizeimages — The quantizeimages purpose
- Gmagick::queryfontmetrics — Returns an array representing the font metrics
- Gmagick::queryfonts — Returns the configured fonts
- Gmagick::queryformats — Returns formats supported by Gmagick
- Gmagick::radialblurimage — Radial blurs an image
- Gmagick::raiseimage — Creates a simulated 3d button-like effect
- Gmagick::read — Reads image from filename
- Gmagick::readimage — Reads image from filename
- Gmagick::readimageblob — Reads image from a binary string
- Gmagick::readimagefile — The readimagefile purpose
- Gmagick::reducenoiseimage — Smooths the contours of an image
- Gmagick::removeimage — Removes an image from the image list
- Gmagick::removeimageprofile — Removes the named image profile and returns it
- Gmagick::resampleimage — Resample image to desired resolution
- Gmagick::resizeimage — Scales an image
- Gmagick::rollimage — Offsets an image
- Gmagick::rotateimage — Rotates an image
- Gmagick::scaleimage — Scales the size of an image
- Gmagick::separateimagechannel — Separates a channel from the image
- Gmagick::setCompressionQuality — Sets the object's default compression quality
- Gmagick::setfilename — Sets the filename before you read or write the image
- Gmagick::setimagebackgroundcolor — Sets the image background color
- Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point
- Gmagick::setimagebordercolor — Sets the image border color
- Gmagick::setimagechanneldepth — Sets the depth of a particular image channel
- Gmagick::setimagecolorspace — Sets the image colorspace
- Gmagick::setimagecompose — Sets the image composite operator
- Gmagick::setimagedelay — Sets the image delay
- Gmagick::setimagedepth — Sets the image depth
- Gmagick::setimagedispose — Sets the image disposal method
- Gmagick::setimagefilename — Sets the filename of a particular image in a sequence
- Gmagick::setimageformat — Sets the format of a particular image
- Gmagick::setimagegamma — Sets the image gamma
- Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point
- Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter
- Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image
- Gmagick::setimageiterations — Sets the image iterations
- Gmagick::setimageprofile — Adds a named profile to the Gmagick object
- Gmagick::setimageredprimary — Sets the image chromaticity red primary point
- Gmagick::setimagerenderingintent — Sets the image rendering intent
- Gmagick::setimageresolution — Sets the image resolution
- Gmagick::setimagescene — Sets the image scene
- Gmagick::setimagetype — Sets the image type
- Gmagick::setimageunits — Sets the image units of resolution
- Gmagick::setimagewhitepoint — Sets the image chromaticity white point
- Gmagick::setsamplingfactors — Sets the image sampling factors
- Gmagick::setsize — Sets the size of the Gmagick object
- Gmagick::shearimage — Creating a parallelogram
- Gmagick::solarizeimage — Applies a solarizing effect to the image
- Gmagick::spreadimage — Randomly displaces each pixel in a block
- Gmagick::stripimage — Strips an image of all profiles and comments
- Gmagick::swirlimage — Swirls the pixels about the center of the image
- Gmagick::thumbnailimage — Changes the size of an image
- Gmagick::trimimage — Remove edges from the image
- Gmagick::write — Takma Adı: Gmagick::writeimage
- Gmagick::writeimage — Writes an image to the specified filename

# The GmagickDraw class

(PECL gmagick >= Unknown)

## Giriş

## Sınıf Sözdizimi

class GmagickDraw {
/* Yöntemler */
public function annotate(float `$x`, float `$y`, string `$text`): GmagickDraw
public function arc(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`,
float `$sd`,
float `$ed`
): GmagickDraw
public function bezier(array `$coordinate_array`): GmagickDraw
public function ellipse(
float `$ox`,
float `$oy`,
float `$rx`,
float `$ry`,
float `$start`,
float `$end`
): GmagickDraw
public function getfillcolor(): GmagickPixel
public function getfillopacity(): float
public function getfont(): mixed
public function getfontsize(): float
public function getfontstyle(): int
public function getfontweight(): int
public function getstrokecolor(): GmagickPixel
public function getstrokeopacity(): float
public function getstrokewidth(): float
public function gettextdecoration(): int
public function gettextencoding(): mixed
public function line(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`
): GmagickDraw
public function point(float `$x`, float `$y`): GmagickDraw
public function polygon(array `$coordinates`): GmagickDraw
public function polyline(array `$coordinate_array`): GmagickDraw
public function rectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`
): GmagickDraw
public function rotate(float `$degrees`): GmagickDraw
public function roundrectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$rx`,
float `$ry`
): GmagickDraw
public function scale(float `$x`, float `$y`): GmagickDraw
public function setfillcolor(mixed `$color`): GmagickDraw
public function setfillopacity(float `$fill_opacity`): GmagickDraw
public function setfont(string `$font`): GmagickDraw
public function setfontsize(float `$pointsize`): GmagickDraw
public function setfontstyle(int `$style`): GmagickDraw
public function setfontweight(int `$weight`): GmagickDraw
public function setstrokecolor(mixed `$color`): GmagickDraw
public function setstrokeopacity(float `$stroke_opacity`): GmagickDraw
public function setstrokewidth(float `$width`): GmagickDraw
public function settextdecoration(int `$decoration`): GmagickDraw
public function settextencoding(string `$encoding`): GmagickDraw
}

# GmagickDraw::annotate

(PECL gmagick >= Unknown)

GmagickDraw::annotate — Draws text on the image

### Açıklama

public function GmagickDraw::annotate(float `$x`, float `$y`, string `$text`): GmagickDraw

Draws text on the image.

### Bağımsız Değişkenler

`x`
  x ordinate to left of text
`y`
  y ordinate to text baseline
`text`
  text to draw

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::arc

(PECL gmagick >= Unknown)

GmagickDraw::arc — Draws an arc

### Açıklama

public function GmagickDraw::arc(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`,
float `$sd`,
float `$ed`
): GmagickDraw

Draws an arc falling within a specified bounding rectangle on the image.

### Bağımsız Değişkenler

`sx`
  starting x ordinate of bounding rectangle
`sy`
  starting y ordinate of bounding rectangle
`ex`
  ending x ordinate of bounding rectangle
`ey`
  ending y ordinate of bounding rectangle
`sd`
  starting degrees of rotation
`ed`
  ending degrees of rotation

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::bezier

(PECL gmagick >= Unknown)

GmagickDraw::bezier — Draws a bezier curve

### Açıklama

public function GmagickDraw::bezier(array `$coordinate_array`): GmagickDraw

Draws a bezier curve through a set of points on the image.

### Bağımsız Değişkenler

`coordinate_array`
  Coordinates array

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::ellipse

(PECL gmagick >= Unknown)

GmagickDraw::ellipse — Draws an ellipse on the image

### Açıklama

public function GmagickDraw::ellipse(
float `$ox`,
float `$oy`,
float `$rx`,
float `$ry`,
float `$start`,
float `$end`
): GmagickDraw

Draws an ellipse on the image.

### Bağımsız Değişkenler

`ox`
  origin x ordinate
`oy`
  origin y ordinate
`rx`
  radius in x
`ry`
  radius in y
`start`
  starting rotation in degrees
`end`
  ending rotation in degrees

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::getfillcolor

(PECL gmagick >= Unknown)

GmagickDraw::getfillcolor — Returns the fill color

### Açıklama

public function GmagickDraw::getfillcolor(): GmagickPixel

Returns the fill color used for drawing filled objects.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The GmagickPixel fill color used for drawing filled objects.

# GmagickDraw::getfillopacity

(PECL gmagick >= Unknown)

GmagickDraw::getfillopacity — Returns the opacity used when drawing

### Açıklama

public function GmagickDraw::getfillopacity(): float

Returns the opacity used when drawing

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the opacity used when drawing using the fill color or fill texture. Fully opaque is 1.0.

# GmagickDraw::getfont

(PECL gmagick >= Unknown)

GmagickDraw::getfont — Returns the font

### Açıklama

public function GmagickDraw::getfont(): mixed

Returns a string specifying the font used when annotating with text.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string on success and `false` if no font is set.

# GmagickDraw::getfontsize

(PECL gmagick >= Unknown)

GmagickDraw::getfontsize — Returns the font pointsize

### Açıklama

public function GmagickDraw::getfontsize(): float

Returns the font pointsize used when annotating with text.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the font size associated with the current GmagickDraw object.

# GmagickDraw::getfontstyle

(PECL gmagick >= Unknown)

GmagickDraw::getfontstyle — Returns the font style

### Açıklama

public function GmagickDraw::getfontstyle(): int

Returns the font style used when annotating with text.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the font style constant (STYLE_) associated with the GmagickDraw object or `0` if no style is set.

# GmagickDraw::getfontweight

(PECL gmagick >= Unknown)

GmagickDraw::getfontweight — Returns the font weight

### Açıklama

public function GmagickDraw::getfontweight(): int

Returns the font weight used when annotating with text.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an int on success and 0 if no weight is set.

# GmagickDraw::getstrokecolor

(PECL gmagick >= Unknown)

GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines

### Açıklama

public function GmagickDraw::getstrokecolor(): GmagickPixel

Returns the color used for stroking object outlines.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an GmagickPixel object which describes the color.

# GmagickDraw::getstrokeopacity

(PECL gmagick >= Unknown)

GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines

### Açıklama

public function GmagickDraw::getstrokeopacity(): float

Returns the opacity of stroked object outlines.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a float describing the opacity.

# GmagickDraw::getstrokewidth

(PECL gmagick >= Unknown)

GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines

### Açıklama

public function GmagickDraw::getstrokewidth(): float

Returns the width of the stroke used to draw object outlines.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a float describing the stroke width.

# GmagickDraw::gettextdecoration

(PECL gmagick >= Unknown)

GmagickDraw::gettextdecoration — Returns the text decoration

### Açıklama

public function GmagickDraw::gettextdecoration(): int

Returns the decoration applied when annotating with text.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns one of the DECORATION_ constants and 0 if no decoration is set.

# GmagickDraw::gettextencoding

(PECL gmagick >= Unknown)

GmagickDraw::gettextencoding — Returns the code set used for text annotations

### Açıklama

public function GmagickDraw::gettextencoding(): mixed

Returns a string which specifies the code set used for text annotations.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a string specifying the code set or `false` if text encoding is not set.

# GmagickDraw::line

(PECL gmagick >= Unknown)

GmagickDraw::line — Draws a line

### Açıklama

public function GmagickDraw::line(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`
): GmagickDraw

Draws a line on the image using the current stroke color, stroke opacity, and stroke width.

### Bağımsız Değişkenler

`sx`
  starting x ordinate
`sy`
  starting y ordinate
`ex`
  ending x ordinate
`ey`
  ending y ordinate

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::point

(PECL gmagick >= Unknown)

GmagickDraw::point — Draws a point

### Açıklama

public function GmagickDraw::point(float `$x`, float `$y`): GmagickDraw

Draws a point using the current stroke color and stroke thickness at the specified coordinates.

### Bağımsız Değişkenler

`x`
  target x coordinate
`y`
  target y coordinate

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::polygon

(PECL gmagick >= Unknown)

GmagickDraw::polygon — Draws a polygon

### Açıklama

public function GmagickDraw::polygon(array `$coordinates`): GmagickDraw

Draws a polygon using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

### Bağımsız Değişkenler

`coordinates`
  coordinate array

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::polyline

(PECL gmagick >= Unknown)

GmagickDraw::polyline — Draws a polyline

### Açıklama

public function GmagickDraw::polyline(array `$coordinate_array`): GmagickDraw

Draws a polyline using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

### Bağımsız Değişkenler

`coordinate_array`
  The array of coordinates

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::rectangle

(PECL gmagick >= Unknown)

GmagickDraw::rectangle — Draws a rectangle

### Açıklama

public function GmagickDraw::rectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`
): GmagickDraw

Draws a rectangle given two coordinates and using the current stroke, stroke width, and fill settings.

### Bağımsız Değişkenler

`x1`
  x ordinate of first coordinate
`y1`
  y ordinate of first coordinate
`x2`
  x ordinate of second coordinate
`y2`
  y ordinate of second coordinate

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::rotate

(PECL gmagick >= Unknown)

GmagickDraw::rotate — Applies the specified rotation to the current coordinate space

### Açıklama

public function GmagickDraw::rotate(float `$degrees`): GmagickDraw

Applies the specified rotation to the current coordinate space.

### Bağımsız Değişkenler

`degrees`
  degrees of rotation

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::roundrectangle

(PECL gmagick >= Unknown)

GmagickDraw::roundrectangle — Draws a rounded rectangle

### Açıklama

public function GmagickDraw::roundrectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$rx`,
float `$ry`
): GmagickDraw

Draws a rounded rectangle given two coordinates, x and y corner radiuses and using the current stroke, stroke width, and fill settings.

### Bağımsız Değişkenler

`x1`
  x ordinate of first coordinate
`y1`
  y ordinate of first coordinate
`x2`
  x ordinate of second coordinate
`y2`
  y ordinate of second coordinate
`rx`
  radius of corner in horizontal direction
`ry`
  radius of corner in vertical direction

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::scale

(PECL gmagick >= Unknown)

GmagickDraw::scale — Adjusts the scaling factor

### Açıklama

public function GmagickDraw::scale(float `$x`, float `$y`): GmagickDraw

Adjusts the scaling factor to apply in the horizontal and vertical directions to the current coordinate space.

### Bağımsız Değişkenler

`x`
  horizontal scale factor
`y`
  vertical scale factor

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setfillcolor

(PECL gmagick >= Unknown)

GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects

### Açıklama

public function GmagickDraw::setfillcolor(mixed `$color`): GmagickDraw

Sets the fill color to be used for drawing filled objects.

### Bağımsız Değişkenler

`color`
  GmagickPixel or string indicating color to use for filling.

### Dönen Değerler

The GmagickDraw object on success.

# GmagickDraw::setfillopacity

(PECL gmagick >= Unknown)

GmagickDraw::setfillopacity — The setfillopacity purpose

### Açıklama

public function GmagickDraw::setfillopacity(float `$fill_opacity`): GmagickDraw

Sets the opacity to use when drawing using the fill color or fill texture. Setting it to 1.0 will make fill full opaque.

### Bağımsız Değişkenler

`fill_opacity`
  Fill opacity

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setfont

(PECL gmagick >= Unknown)

GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text

### Açıklama

public function GmagickDraw::setfont(string `$font`): GmagickDraw

Sets the fully-specified font to use when annotating with text

### Bağımsız Değişkenler

`font`
  font name

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setfontsize

(PECL gmagick >= Unknown)

GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text

### Açıklama

public function GmagickDraw::setfontsize(float `$pointsize`): GmagickDraw

Sets the font pointsize to use when annotating with text.

### Bağımsız Değişkenler

`pointsize`
  Text pointsize

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setfontstyle

(PECL gmagick >= Unknown)

GmagickDraw::setfontstyle — Sets the font style to use when annotating with text

### Açıklama

public function GmagickDraw::setfontstyle(int `$style`): GmagickDraw

Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.

### Bağımsız Değişkenler

`style`
  Font style (NormalStyle, ItalicStyle, ObliqueStyle, AnyStyle)

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setfontweight

(PECL gmagick >= Unknown)

GmagickDraw::setfontweight — Sets the font weight

### Açıklama

public function GmagickDraw::setfontweight(int `$weight`): GmagickDraw

Sets the font weight to use when annotating with text.

### Bağımsız Değişkenler

`weight`
  Font weight (valid range 100-900)

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setstrokecolor

(PECL gmagick >= Unknown)

GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines

### Açıklama

public function GmagickDraw::setstrokecolor(mixed `$color`): GmagickDraw

Sets the color used for stroking object outlines.

### Bağımsız Değişkenler

`color`
  GmagickPixel or string representing the color for the stroke.

### Dönen Değerler

The GmagickDraw object on success.

# GmagickDraw::setstrokeopacity

(PECL gmagick >= Unknown)

GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines

### Açıklama

public function GmagickDraw::setstrokeopacity(float `$stroke_opacity`): GmagickDraw

Specifies the opacity of stroked object outlines.

### Bağımsız Değişkenler

`stroke_opacity`
  Stroke opacity. The value 1.0 is opaque.

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::setstrokewidth

(PECL gmagick >= Unknown)

GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines

### Açıklama

public function GmagickDraw::setstrokewidth(float `$width`): GmagickDraw

Sets the width of the stroke used to draw object outlines

### Bağımsız Değişkenler

`width`
  Stroke width

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::settextdecoration

(PECL gmagick >= Unknown)

GmagickDraw::settextdecoration — Specifies a decoration

### Açıklama

public function GmagickDraw::settextdecoration(int `$decoration`): GmagickDraw

Specifies a decoration to be applied when annotating with text.

### Bağımsız Değişkenler

`int`
  Text decoration. One of NoDecoration, UnderlineDecoration, OverlineDecoration, or LineThroughDecoration

### Dönen Değerler

The GmagickDraw object.

# GmagickDraw::settextencoding

(PECL gmagick >= Unknown)

GmagickDraw::settextencoding — Specifies the text code set

### Açıklama

public function GmagickDraw::settextencoding(string `$encoding`): GmagickDraw

Specifies the code set to use for text annotations. The only character encoding which may be specified at this time is "UTF-8" for representing Unicode as a sequence of bytes. Specify an empty string to set text encoding to the system's default. Successful text annotation using Unicode may require fonts designed to support Unicode.

### Bağımsız Değişkenler

`encoding`
  Character string specifying text encoding

### Dönen Değerler

The GmagickDraw object.

## İçindekiler

- GmagickDraw::annotate — Draws text on the image
- GmagickDraw::arc — Draws an arc
- GmagickDraw::bezier — Draws a bezier curve
- GmagickDraw::ellipse — Draws an ellipse on the image
- GmagickDraw::getfillcolor — Returns the fill color
- GmagickDraw::getfillopacity — Returns the opacity used when drawing
- GmagickDraw::getfont — Returns the font
- GmagickDraw::getfontsize — Returns the font pointsize
- GmagickDraw::getfontstyle — Returns the font style
- GmagickDraw::getfontweight — Returns the font weight
- GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines
- GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines
- GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines
- GmagickDraw::gettextdecoration — Returns the text decoration
- GmagickDraw::gettextencoding — Returns the code set used for text annotations
- GmagickDraw::line — Draws a line
- GmagickDraw::point — Draws a point
- GmagickDraw::polygon — Draws a polygon
- GmagickDraw::polyline — Draws a polyline
- GmagickDraw::rectangle — Draws a rectangle
- GmagickDraw::rotate — Applies the specified rotation to the current coordinate space
- GmagickDraw::roundrectangle — Draws a rounded rectangle
- GmagickDraw::scale — Adjusts the scaling factor
- GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects
- GmagickDraw::setfillopacity — The setfillopacity purpose
- GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text
- GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text
- GmagickDraw::setfontstyle — Sets the font style to use when annotating with text
- GmagickDraw::setfontweight — Sets the font weight
- GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines
- GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines
- GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines
- GmagickDraw::settextdecoration — Specifies a decoration
- GmagickDraw::settextencoding — Specifies the text code set

# The GmagickPixel class

(PECL gmagick >= Unknown)

## Giriş

## Sınıf Sözdizimi

class GmagickPixel {
/* Yöntemler */
public function __construct(string `$color` = ?)
public function getcolor(bool `$as_array` = `false`, bool `$normalize_array` = `false`): mixed
public function getcolorcount(): int
public function getcolorvalue(int `$color`): float
public function setcolor(string `$color`): GmagickPixel
public function setcolorvalue(int `$color`, float `$value`): GmagickPixel
}

# GmagickPixel::__construct

(PECL gmagick >= Unknown)

GmagickPixel::__construct — The GmagickPixel constructor

### Açıklama

public function GmagickPixel::__construct(string `$color` = ?)

Constructs an GmagickPixel object. If a color is specified, the object is constructed and then initialised with that color before being returned.

### Bağımsız Değişkenler

`color`
  The optional color string to use as the initial value of this object.

# GmagickPixel::getcolor

(PECL gmagick >= Unknown)

GmagickPixel::getcolor — Returns the color

### Açıklama

public function GmagickPixel::getcolor(bool `$as_array` = `false`, bool `$normalize_array` = `false`): mixed

Returns the color described by the GmagickPixel object, as a string or an array. If the color has an opacity channel set, this is provided as a fourth value in the list.

### Bağımsız Değişkenler

`as_array`
  `true` to indicate return of array instead of string.
`normalize_array`
  `true` to normalize the color values.

### Dönen Değerler

A string or an array of channel values, each normalized if `true` is given as `normalize_array`. Throws GmagickPixelException on error.

# GmagickPixel::getcolorcount

(PECL gmagick >= Unknown)

GmagickPixel::getcolorcount — Returns the color count associated with this color

### Açıklama

public function GmagickPixel::getcolorcount(): int

Returns the color count associated with this color.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the color count as an integer on success, throws GmagickPixelException on failure.

# GmagickPixel::getcolorvalue

(PECL gmagick >= Unknown)

GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel

### Açıklama

public function GmagickPixel::getcolorvalue(int `$color`): float

Retrieves the value of the color channel specified, as a floating-point number between 0 and 1.

### Bağımsız Değişkenler

`color`
  The channel to check, specified as one of the Gmagick channel constants.

### Dönen Değerler

The value of the channel, as a normalized floating-point number, throwing GmagickPixelException on error.

# GmagickPixel::setcolor

(PECL gmagick >= Unknown)

GmagickPixel::setcolor — Sets the color

### Açıklama

public function GmagickPixel::setcolor(string `$color`): GmagickPixel

Sets the color described by the GmagickPixel object, with a string (e.g. "blue", "#0000ff", "rgb(0,0,255)", "cmyk(100,100,100,10)", etc.).

### Bağımsız Değişkenler

`color`
  The color definition to use in order to initialise the GmagickPixel object.

### Dönen Değerler

The GmagickPixel object.

# GmagickPixel::setcolorvalue

(PECL gmagick >= Unknown)

GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels

### Açıklama

public function GmagickPixel::setcolorvalue(int `$color`, float `$value`): GmagickPixel

Sets the value of the specified channel of this object to the provided value, which should be between 0 and 1. This function can be used to provide an opacity channel to a GmagickPixel object.

### Bağımsız Değişkenler

`color`
  One of the Gmagick channel color constants.
`value`
  The value to set this channel to, ranging from 0 to 1.

### Dönen Değerler

The GmagickPixel object.

## İçindekiler

- GmagickPixel::__construct — The GmagickPixel constructor
- GmagickPixel::getcolor — Returns the color
- GmagickPixel::getcolorcount — Returns the color count associated with this color
- GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel
- GmagickPixel::setcolor — Sets the color
- GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Örnekler
- Gmagick — The Gmagick class
  - Gmagick::addimage — Adds new image to Gmagick object image list
  - Gmagick::addnoiseimage — Adds random noise to the image
  - Gmagick::annotateimage — Annotates an image with text
  - Gmagick::blurimage — Adds blur filter to image
  - Gmagick::borderimage — Surrounds the image with a border
  - Gmagick::charcoalimage — Simulates a charcoal drawing
  - Gmagick::chopimage — Removes a region of an image and trims
  - Gmagick::clear — Clears all resources associated to Gmagick object
  - Gmagick::commentimage — Adds a comment to your image
  - Gmagick::compositeimage — Composite one image onto another
  - Gmagick::__construct — The Gmagick constructor
  - Gmagick::cropimage — Extracts a region of the image
  - Gmagick::cropthumbnailimage — Creates a crop thumbnail
  - Gmagick::current — The current purpose
  - Gmagick::cyclecolormapimage — Displaces an image's colormap
  - Gmagick::deconstructimages — Returns certain pixel differences between images
  - Gmagick::despeckleimage — The despeckleimage purpose
  - Gmagick::destroy — The destroy purpose
  - Gmagick::drawimage — Renders the GmagickDraw object on the current image
  - Gmagick::edgeimage — Enhance edges within the image
  - Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect
  - Gmagick::enhanceimage — Improves the quality of a noisy image
  - Gmagick::equalizeimage — Equalizes the image histogram
  - Gmagick::flipimage — Creates a vertical mirror image
  - Gmagick::flopimage — Creates a horizontal mirror image
  - Gmagick::frameimage — Adds a simulated three-dimensional border
  - Gmagick::gammaimage — Gamma-corrects an image
  - Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string
  - Gmagick::getfilename — The filename associated with an image sequence
  - Gmagick::getimagebackgroundcolor — Returns the image background color
  - Gmagick::getimageblueprimary — Returns the chromaticy blue primary point
  - Gmagick::getimagebordercolor — Returns the image border color
  - Gmagick::getimagechanneldepth — Gets the depth for a particular image channel
  - Gmagick::getimagecolors — Returns the color of the specified colormap index
  - Gmagick::getimagecolorspace — Gets the image colorspace
  - Gmagick::getimagecompose — Returns the composite operator associated with the image
  - Gmagick::getimagedelay — Gets the image delay
  - Gmagick::getimagedepth — Gets the depth of the image
  - Gmagick::getimagedispose — Gets the image disposal method
  - Gmagick::getimageextrema — Gets the extrema for the image
  - Gmagick::getimagefilename — Returns the filename of a particular image in a sequence
  - Gmagick::getimageformat — Returns the format of a particular image in a sequence
  - Gmagick::getimagegamma — Gets the image gamma
  - Gmagick::getimagegreenprimary — Returns the chromaticy green primary point
  - Gmagick::getimageheight — Returns the image height
  - Gmagick::getimagehistogram — Gets the image histogram
  - Gmagick::getimageindex — Gets the index of the current active image
  - Gmagick::getimageinterlacescheme — Gets the image interlace scheme
  - Gmagick::getimageiterations — Gets the image iterations
  - Gmagick::getimagematte — Check if the image has a matte channel
  - Gmagick::getimagemattecolor — Returns the image matte color
  - Gmagick::getimageprofile — Returns the named image profile
  - Gmagick::getimageredprimary — Returns the chromaticity red primary point
  - Gmagick::getimagerenderingintent — Gets the image rendering intent
  - Gmagick::getimageresolution — Gets the image X and Y resolution
  - Gmagick::getimagescene — Gets the image scene
  - Gmagick::getimagesignature — Generates an SHA-256 message digest
  - Gmagick::getimagetype — Gets the potential image type
  - Gmagick::getimageunits — Gets the image units of resolution
  - Gmagick::getimagewhitepoint — Returns the chromaticity white point
  - Gmagick::getimagewidth — Returns the width of the image
  - Gmagick::getpackagename — Returns the GraphicsMagick package name
  - Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string
  - Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string
  - Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor
  - Gmagick::getsize — Returns the size associated with the Gmagick object
  - Gmagick::getversion — Returns the GraphicsMagick API version
  - Gmagick::hasnextimage — Checks if the object has more images
  - Gmagick::haspreviousimage — Checks if the object has a previous image
  - Gmagick::implodeimage — Creates a new image as a copy
  - Gmagick::labelimage — Adds a label to an image
  - Gmagick::levelimage — Adjusts the levels of an image
  - Gmagick::magnifyimage — Scales an image proportionally 2x
  - Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image
  - Gmagick::medianfilterimage — Applies a digital filter
  - Gmagick::minifyimage — Scales an image proportionally to half its size
  - Gmagick::modulateimage — Control the brightness, saturation, and hue
  - Gmagick::motionblurimage — Simulates motion blur
  - Gmagick::newimage — Creates a new image
  - Gmagick::nextimage — Moves to the next image
  - Gmagick::normalizeimage — Enhances the contrast of a color image
  - Gmagick::oilpaintimage — Simulates an oil painting
  - Gmagick::previousimage — Move to the previous image in the object
  - Gmagick::profileimage — Adds or removes a profile from an image
  - Gmagick::quantizeimage — Analyzes the colors within a reference image
  - Gmagick::quantizeimages — The quantizeimages purpose
  - Gmagick::queryfontmetrics — Returns an array representing the font metrics
  - Gmagick::queryfonts — Returns the configured fonts
  - Gmagick::queryformats — Returns formats supported by Gmagick
  - Gmagick::radialblurimage — Radial blurs an image
  - Gmagick::raiseimage — Creates a simulated 3d button-like effect
  - Gmagick::read — Reads image from filename
  - Gmagick::readimage — Reads image from filename
  - Gmagick::readimageblob — Reads image from a binary string
  - Gmagick::readimagefile — The readimagefile purpose
  - Gmagick::reducenoiseimage — Smooths the contours of an image
  - Gmagick::removeimage — Removes an image from the image list
  - Gmagick::removeimageprofile — Removes the named image profile and returns it
  - Gmagick::resampleimage — Resample image to desired resolution
  - Gmagick::resizeimage — Scales an image
  - Gmagick::rollimage — Offsets an image
  - Gmagick::rotateimage — Rotates an image
  - Gmagick::scaleimage — Scales the size of an image
  - Gmagick::separateimagechannel — Separates a channel from the image
  - Gmagick::setCompressionQuality — Sets the object's default compression quality
  - Gmagick::setfilename — Sets the filename before you read or write the image
  - Gmagick::setimagebackgroundcolor — Sets the image background color
  - Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point
  - Gmagick::setimagebordercolor — Sets the image border color
  - Gmagick::setimagechanneldepth — Sets the depth of a particular image channel
  - Gmagick::setimagecolorspace — Sets the image colorspace
  - Gmagick::setimagecompose — Sets the image composite operator
  - Gmagick::setimagedelay — Sets the image delay
  - Gmagick::setimagedepth — Sets the image depth
  - Gmagick::setimagedispose — Sets the image disposal method
  - Gmagick::setimagefilename — Sets the filename of a particular image in a sequence
  - Gmagick::setimageformat — Sets the format of a particular image
  - Gmagick::setimagegamma — Sets the image gamma
  - Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point
  - Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter
  - Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image
  - Gmagick::setimageiterations — Sets the image iterations
  - Gmagick::setimageprofile — Adds a named profile to the Gmagick object
  - Gmagick::setimageredprimary — Sets the image chromaticity red primary point
  - Gmagick::setimagerenderingintent — Sets the image rendering intent
  - Gmagick::setimageresolution — Sets the image resolution
  - Gmagick::setimagescene — Sets the image scene
  - Gmagick::setimagetype — Sets the image type
  - Gmagick::setimageunits — Sets the image units of resolution
  - Gmagick::setimagewhitepoint — Sets the image chromaticity white point
  - Gmagick::setsamplingfactors — Sets the image sampling factors
  - Gmagick::setsize — Sets the size of the Gmagick object
  - Gmagick::shearimage — Creating a parallelogram
  - Gmagick::solarizeimage — Applies a solarizing effect to the image
  - Gmagick::spreadimage — Randomly displaces each pixel in a block
  - Gmagick::stripimage — Strips an image of all profiles and comments
  - Gmagick::swirlimage — Swirls the pixels about the center of the image
  - Gmagick::thumbnailimage — Changes the size of an image
  - Gmagick::trimimage — Remove edges from the image
  - Gmagick::write — Takma Adı: Gmagick::writeimage
  - Gmagick::writeimage — Writes an image to the specified filename
- GmagickDraw — The GmagickDraw class
  - GmagickDraw::annotate — Draws text on the image
  - GmagickDraw::arc — Draws an arc
  - GmagickDraw::bezier — Draws a bezier curve
  - GmagickDraw::ellipse — Draws an ellipse on the image
  - GmagickDraw::getfillcolor — Returns the fill color
  - GmagickDraw::getfillopacity — Returns the opacity used when drawing
  - GmagickDraw::getfont — Returns the font
  - GmagickDraw::getfontsize — Returns the font pointsize
  - GmagickDraw::getfontstyle — Returns the font style
  - GmagickDraw::getfontweight — Returns the font weight
  - GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines
  - GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines
  - GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines
  - GmagickDraw::gettextdecoration — Returns the text decoration
  - GmagickDraw::gettextencoding — Returns the code set used for text annotations
  - GmagickDraw::line — Draws a line
  - GmagickDraw::point — Draws a point
  - GmagickDraw::polygon — Draws a polygon
  - GmagickDraw::polyline — Draws a polyline
  - GmagickDraw::rectangle — Draws a rectangle
  - GmagickDraw::rotate — Applies the specified rotation to the current coordinate space
  - GmagickDraw::roundrectangle — Draws a rounded rectangle
  - GmagickDraw::scale — Adjusts the scaling factor
  - GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects
  - GmagickDraw::setfillopacity — The setfillopacity purpose
  - GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text
  - GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text
  - GmagickDraw::setfontstyle — Sets the font style to use when annotating with text
  - GmagickDraw::setfontweight — Sets the font weight
  - GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines
  - GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines
  - GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines
  - GmagickDraw::settextdecoration — Specifies a decoration
  - GmagickDraw::settextencoding — Specifies the text code set
- GmagickPixel — The GmagickPixel class
  - GmagickPixel::__construct — The GmagickPixel constructor
  - GmagickPixel::getcolor — Returns the color
  - GmagickPixel::getcolorcount — Returns the color count associated with this color
  - GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel
  - GmagickPixel::setcolor — Sets the color
  - GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels

# Görüntü İşleme (ImageMagick)

# Giriş

Uyarı

Bu eklenti DENEYSELDİR. Bu eklentinin davranışı, işlev isimleri ve tüm belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu risk göze alınamayacaksa bu eklenti kullanılmamalıdır.

Imagick, doğal bir PHP eklentisi olup, görüntüleri oluşturmak ve değiştirmek için ImageMagick API'sini kullanır.

## ImageMagick Hakkında

ImageMagick görüntüleri oluşturmak, düzenlemek ve biteşlemli görüntüler oluşturmak için birtakım yazılımlardan meydana gelmiştir. DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG ve TIFF dahil 100'ün üzerinde görüntü biçemini okur, yazar ve dönüştürebilir.

ImageMagick Studio LLC, görüntülerle ilgili çözümlerin özgürce kullanılabilmesine adanmış kazançsız bir örgütlenmedir.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

## Windows olmayan platformlara kurulum gereksinimleri

ImageMagick >= 6.2.4 gerekir. Desteklenen biçemlerin miktarı tamamen ImageMagick kurulumunuzca desteklenen dosya biçemlerinin sayısına bağlıdır. Imagemagick, örneğin PDF işlemlerini yapabilmek için, ghostscript gerektirir.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/imagick.

> Bilginize: Bu eklentinin resmi ismi imagick'tir.

Windows kullanıcıları DLL dosyasını » PECL sitesinden indirebilir. Bu paketler, extension_dir ini yönergesine konulması gereken eklenti DLL'ini (php_imagick.dll) zaten içermektedir. Bunlar ayrıca, yerleri PATH ortam değişkenine konması gereken ImageMagick DLL'lerini de içerir. Imagick 3.6.0 ve sonrasında, config içinde XML yapılandırma dosyaları da bulunmaktadır; yerleşik öntanımlılar yerine bunları kullanmak için bunları ya `%USERPROFILE%/.config/ImageMagick` içine ya da MAGICK_CONFIGURE_PATH ortam değişkeninde belirtilen yollara eklemek gerekir. Daha ayrıntılı bilgi için » ImageMagick yapılandırma dosyaları belgelerine bakılabilir.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Imagick yapılandırma seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
imagick.locale_fix | `false` | `INI_ALL` | Imagick 2.1.0 itibariyle kullanılabilir.
imagick.progress_monitor | `false` | `INI_SYSTEM` | Imagick 2.2.2 itibariyle kullanılabilir.
imagick.skip_version_check | `false` | `INI_SYSTEM` | Imagick 3.3.0 itibariyle kullanılabilir.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`imagick.locale_fix` bool

  Ondalık ayracı olarak '`,`' kullanılan yerellerle ilgili çizim hatasını düzeltir.

`imagick.progress_monitor` bool

  Görüntü işleme izlemeyi etinleştirmekte kullanılır.

`imagick.skip_version_check` bool

  Imagick yüklendiğinde, şu anda kullanılmakta olan sürüm numarasıyla, derlendiği ImageMagick'in sürüm numarasını karşılaştırır ve eşleşmezse bir uyarı verir. Bu uyarı, bu ini yönergesi etkinleştirilerek engellenebilir.

  Kullanılandan farklı bir ImageMagick sürümüyle derlenmiş bir Imagick eklentisinin kullanılması önerilmez. Çalışıyor gibi görünse de, rastgele çökmelere veya tanımlanmamış başka davranışlara yol açabilir.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`COLOR_*` Sabitleri

Renk Türü Sabitleri. Bu sabitler esas olarak ImagickPixel ile kullanılır.

`imagick::COLOR_BLACK` (int)
  Siyah
`imagick::COLOR_BLUE` (int)
  Mavi
`imagick::COLOR_CYAN` (int)
  Turkuaz
`imagick::COLOR_GREEN` (int)
  Yeşil
`imagick::COLOR_RED` (int)
  Kırmızı
`imagick::COLOR_YELLOW` (int)
  Sarı
`imagick::COLOR_MAGENTA` (int)
  Eflatun
`imagick::COLOR_OPACITY` (int)
  Matlık
`imagick::COLOR_ALPHA` (int)
  Alfa
`imagick::COLOR_FUZZ` (int)
  Renk benzerliği.

`DISPOSE_*` Sabitleri

Elden Çıkarma Türü Sabitleri

`imagick::DISPOSE_UNRECOGNIZED` (int)
  Tanınmayan elden çıkarma türü
`imagick::DISPOSE_UNDEFINED` (int)
  Tanımsız elden çıkarma türü
`imagick::DISPOSE_NONE` (int)
  Tanımlı elden çıkarma türü yok.
`imagick::DISPOSE_BACKGROUND` (int)
  Artalan
`imagick::DISPOSE_PREVIOUS` (int)
  Önceki

`COMPOSITE_*` Sabitleri

Birleştirme İşleci Sabitler

`imagick::COMPOSITE_DEFAULT` (int)
  Öntanımlı birleştirme işleci
`imagick::COMPOSITE_UNDEFINED` (int)
  Tanımsız birleştirme işleci
`imagick::COMPOSITE_NO` (int)
  Hiç birleştirme işleci tanımlanmamış
`imagick::COMPOSITE_ADD` (int)
  Görüntü + görüntü sonucu
`imagick::COMPOSITE_ATOP` (int)
  Sonuç, görüntüle aynı görüntüyü içerir, ancak görüntülerin üst üste bindiği yerde birleşik görüntü bulanıklaşır.
`imagick::COMPOSITE_BLEND` (int)
  Görüntüleri kaynaştır
`imagick::COMPOSITE_BUMPMAP` (int)
  Kaynağın önce gri tonlamaya dönüştürülmesi dışında `COMPOSITE_MULTIPLY` ile aynıdır.
`imagick::COMPOSITE_CLEAR` (int)
  Hedef Görüntüyü şeffaf yapar
`imagick::COMPOSITE_COLORBURN` (int)
  Kaynak görüntünün yansıtmak için hedef Görüntüyü karartır
`imagick::COMPOSITE_COLORDODGE` (int)
  Kaynak görüntünün yansıtmak için hedef görüntüyü aydınlatır
`imagick::COMPOSITE_COLORIZE` (int)
  Birleşik görüntü kullanarak hedef görüntüyü renklendirir
`imagick::COMPOSITE_COPYBLACK` (int)
  Siyahı kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYBLUE` (int)
  Maviyi kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPY` (int)
  Kaynak görüntüyü hedef görüntüye kopyalar
`imagick::COMPOSITE_COPYCYAN` (int)
  Turkuazı kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYGREEN` (int)
  Yeşili kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYMAGENTA` (int)
  Eflatunu kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYOPACITY` (int)
  Matlığı kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYRED` (int)
  Kırmızıyı kaynaktan hedefe kopyalar
`imagick::COMPOSITE_COPYYELLOW` (int)
  Sarıyı kaynaktan hedefe kopyalar
`imagick::COMPOSITE_DARKEN` (int)
  Hedef görüntüyü karartır
`imagick::COMPOSITE_DSTATOP` (int)
  Kaynağın içinde bulunan hedef bölüm, kaynağın üzerine yerleştirilip hedef yer değiştirilir.
`imagick::COMPOSITE_DST` (int)
  Hedef görüntüye dokunulmaz
`imagick::COMPOSITE_DSTIN` (int)
  Kaynağın içindeki parçaların yerine hedefi yerleştirir
`imagick::COMPOSITE_DSTOUT` (int)
  Kaynağın dışındaki parçaların yerine hedefi yerleştirir
`imagick::COMPOSITE_DSTOVER` (int)
  Hedefe kaynağı yerleştirir
`imagick::COMPOSITE_DIFFERENCE` (int)
  Belirleyici iki renkten koyu olanının açık olandan çıkarır
`imagick::COMPOSITE_DISPLACE` (int)
  Hedef görüntünün piksellerini kaynakta tanımlandığı gibi kaydırır
`imagick::COMPOSITE_DISSOLVE` (int)
  Kaynağı hedefte eritir
`imagick::COMPOSITE_EXCLUSION` (int)
  Daha düşük zıtlıkta görünmesi dışında imagick::COMPOSITE_DIFFERENCE ile aynı etkiyi oluşturur
`imagick::COMPOSITE_HARDLIGHT` (int)
  Kaynak renk değerine bağlı olarak renkleri çoğullar ve ekranlar
`imagick::COMPOSITE_HUE` (int)
  Hedefin renk sıcaklığını kaynakta tanımlandığı gibi değiştirir
`imagick::COMPOSITE_IN` (int)
  Kaynağı hedefe birleştirir
`imagick::COMPOSITE_LIGHTEN` (int)
  Hedefi kaynakta tanımlandığı gibi aydınlatır
`imagick::COMPOSITE_LUMINIZE` (int)
  Hedefi kaynakta tanımlandığı gibi ışıklandırır
`imagick::COMPOSITE_MINUS` (int)
  Kaynağı hedeften çıkarır
`imagick::COMPOSITE_MODULATE` (int)
  Hedef parlaklığını, doygunluğunu ve renk sıcaklığını kaynakta tanımlandığı gibi modüle eder
`imagick::COMPOSITE_MULTIPLY` (int)
  Hedefi kaynağa çoğullar
`imagick::COMPOSITE_OUT` (int)
  Kaynağın dış kısımlarını hedefle birleştirir
`imagick::COMPOSITE_OVER` (int)
  Kaynağı hedefin üzerinde birleştirir
`imagick::COMPOSITE_OVERLAY` (int)
  Kaynağı hedefin üzerine yerleştirir
`imagick::COMPOSITE_PLUS` (int)
  Kaynağı hedefe ekler
`imagick::COMPOSITE_REPLACE` (int)
  Kaynakla hedefi yer değiştirir
`imagick::COMPOSITE_SATURATE` (int)
  Hedefi kaynakta tanımlandığı gibi ışıkla doyurur
`imagick::COMPOSITE_SCREEN` (int)
  Kaynak ve hedefin eşleniği alınıp çarpıldıktan sonra hedef yer değiştirilir
`imagick::COMPOSITE_SOFTLIGHT` (int)
  Kaynağa bağlı olarak renkleri açık veya koyu yapar
`imagick::COMPOSITE_SRCATOP` (int)
  Hedefin içinde bulunan kaynak bölüm, hedefin üzerinde birleştirilir
`imagick::COMPOSITE_SRC` (int)
  Kaynağı hedefe kopyalar
`imagick::COMPOSITE_SRCIN` (int)
  Hedefin içinde bulunan kaynak bölüm, hedefle yer değiştirilir
`imagick::COMPOSITE_SRCOUT` (int)
  Hedefin dışında bulunan kaynak bölüm, hedefle yer değiştirilir
`imagick::COMPOSITE_SRCOVER` (int)
  Kaynak hedefle yer değiştirir
`imagick::COMPOSITE_SUBTRACT` (int)
  Kaynak görüntüdeki renkler hedef görüntüden çıkarılır
`imagick::COMPOSITE_THRESHOLD` (int)
  Kaynak hedefle, kaynak eşiğinde tanımlandığı gibi birleştirilir
`imagick::COMPOSITE_XOR` (int)
  Hedefin dışında kalan kaynak parçası ile kaynağın dışında kalan hedef parçası birleştirilir

`MONTAGEMODE_*` Sabitleri

Montaj Kipi Sabitleri

`imagick::MONTAGEMODE_FRAME` (int)
`imagick::MONTAGEMODE_UNFRAME` (int)
`imagick::MONTAGEMODE_CONCATENATE` (int)

`STYLE_*` Sabitleri

Yazı Tipi Tarzı Sabitleri

`imagick::STYLE_NORMAL` (int)
  Normal
`imagick::STYLE_ITALIC` (int)
  Eğik
`imagick::STYLE_OBLIQUE` (int)
  Eğik
`imagick::STYLE_ANY` (int)
  Herhangi biri

`FILTER_*` Sabitleri

Süzgeç Sabitleri

`imagick::FILTER_UNDEFINED` (int)
`imagick::FILTER_POINT` (int)
`imagick::FILTER_BOX` (int)
`imagick::FILTER_TRIANGLE` (int)
`imagick::FILTER_HERMITE` (int)
`imagick::FILTER_HANNING` (int)
`imagick::FILTER_HAMMING` (int)
`imagick::FILTER_BLACKMAN` (int)
`imagick::FILTER_GAUSSIAN` (int)
`imagick::FILTER_QUADRATIC` (int)
`imagick::FILTER_CUBIC` (int)
`imagick::FILTER_CATROM` (int)
`imagick::FILTER_MITCHELL` (int)
`imagick::FILTER_LANCZOS` (int)
`imagick::FILTER_BESSEL` (int)
`imagick::FILTER_SINC` (int)

`IMGTYPE_*` Sabitleri

Görüntü Türü Sabitleri

`imagick::IMGTYPE_UNDEFINED` (int)
`imagick::IMGTYPE_BILEVEL` (int)
`imagick::IMGTYPE_GRAYSCALE` (int)
`imagick::IMGTYPE_GRAYSCALEMATTE` (int)
`imagick::IMGTYPE_PALETTE` (int)
`imagick::IMGTYPE_PALETTEMATTE` (int)
`imagick::IMGTYPE_TRUECOLOR` (int)
`imagick::IMGTYPE_TRUECOLORMATTE` (int)
`imagick::IMGTYPE_COLORSEPARATION` (int)
`imagick::IMGTYPE_COLORSEPARATIONMATTE` (int)
`imagick::IMGTYPE_OPTIMIZE` (int)

`RESOLUTION_*` Sabitleri

Çözünürlük Sabitleri

`imagick::RESOLUTION_UNDEFINED` (int)
`imagick::RESOLUTION_PIXELSPERINCH` (int)
`imagick::RESOLUTION_PIXELSPERCENTIMETER` (int)

`COMPRESSION_*` Sabitleri

Sıkıştırma Sabitleri

`imagick::COMPRESSION_UNDEFINED` (int)
`imagick::COMPRESSION_NO` (int)
`imagick::COMPRESSION_BZIP` (int)
`imagick::COMPRESSION_FAX` (int)
`imagick::COMPRESSION_GROUP4` (int)
`imagick::COMPRESSION_JPEG` (int)
`imagick::COMPRESSION_JPEG2000` (int)
`imagick::COMPRESSION_LOSSLESSJPEG` (int)
`imagick::COMPRESSION_LZW` (int)
`imagick::COMPRESSION_RLE` (int)
`imagick::COMPRESSION_ZIP` (int)
`imagick::COMPRESSION_DXT1` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.0 ve üstü
`imagick::COMPRESSION_DXT3` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.0 ve üstü
`imagick::COMPRESSION_DXT5` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.0 ve üstü

`PAINT_*` Sabitleri

Boyama Sabitleri

`imagick::PAINT_POINT` (int)
`imagick::PAINT_REPLACE` (int)
`imagick::PAINT_FLOODFILL` (int)
`imagick::PAINT_FILLTOBORDER` (int)
`imagick::PAINT_RESET` (int)

`GRAVITY_*` Sabitleri

Çekim Yönü Sabitleri

`imagick::GRAVITY_NORTHWEST` (int)
  Kuzeybatı
`imagick::GRAVITY_NORTH` (int)
  Kuzey
`imagick::GRAVITY_NORTHEAST` (int)
  Kuzeydoğu
`imagick::GRAVITY_WEST` (int)
  Batı
`imagick::GRAVITY_CENTER` (int)
  Merkez
`imagick::GRAVITY_EAST` (int)
  Doğu
`imagick::GRAVITY_SOUTHWEST` (int)
  Güneybatı
`imagick::GRAVITY_SOUTH` (int)
  Güney
`imagick::GRAVITY_SOUTHEAST` (int)
  Güneydoğu

`STRETCH_*` Sabitleri

Yazı Tipi Karakter Genişliği Sabitleri

`imagick::STRETCH_NORMAL` (int)
  Normal
`imagick::STRETCH_ULTRACONDENSED` (int)
  Çok dar
`imagick::STRETCH_CONDENSED` (int)
  Dar
`imagick::STRETCH_SEMICONDENSED` (int)
  Az dar
`imagick::STRETCH_SEMIEXPANDED` (int)
  Az geniş
`imagick::STRETCH_EXPANDED` (int)
  Geniş
`imagick::STRETCH_EXTRAEXPANDED` (int)
  Çok geniş
`imagick::STRETCH_ULTRAEXPANDED` (int)
  Epeyce geniş
`imagick::STRETCH_ANY` (int)
  Herhangi biri

`ALIGN_*` Sabitleri

Hizalama Sabitleri

`imagick::ALIGN_UNDEFINED` (int)
`imagick::ALIGN_LEFT` (int)
`imagick::ALIGN_CENTER` (int)
`imagick::ALIGN_RIGHT` (int)

`DECORATION_*` Sabitleri

Metin Süsleme Sabitleri

`imagick::DECORATION_NO` (int)
`imagick::DECORATION_UNDERLINE` (int)
`imagick::DECORATION_OVERLINE` (int)
`imagick::DECORATION_LINETROUGH` (int)

`NOISE_*` Sabitleri

Gürültü Sabitleri

`imagick::NOISE_UNIFORM` (int)
`imagick::NOISE_GAUSSIAN` (int)
`imagick::NOISE_MULTIPLICATIVEGAUSSIAN` (int)
`imagick::NOISE_IMPULSE` (int)
`imagick::NOISE_LAPLACIAN` (int)
`imagick::NOISE_POISSON` (int)
`imagick::NOISE_RANDOM` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.

`CHANNEL_*` Sabitleri

Kanal Sabitleri

`imagick::CHANNEL_UNDEFINED` (int)
`imagick::CHANNEL_RED` (int)
`imagick::CHANNEL_GRAY` (int)
`imagick::CHANNEL_CYAN` (int)
`imagick::CHANNEL_GREEN` (int)
`imagick::CHANNEL_MAGENTA` (int)
`imagick::CHANNEL_BLUE` (int)
`imagick::CHANNEL_YELLOW` (int)
`imagick::CHANNEL_ALPHA` (int)
`imagick::CHANNEL_OPACITY` (int)
`imagick::CHANNEL_MATTE` (int)
`imagick::CHANNEL_BLACK` (int)
`imagick::CHANNEL_INDEX` (int)
`imagick::CHANNEL_ALL` (int)
`imagick::CHANNEL_DEFAULT` (int)

`METRIC_*` Sabitleri

Metrik Sabitleri

`imagick::METRIC_UNDEFINED` (int)
`imagick::METRIC_MEANABSOLUTEERROR` (int)
`imagick::METRIC_MEANSQUAREERROR` (int)
`imagick::METRIC_PEAKABSOLUTEERROR` (int)
`imagick::METRIC_PEAKSIGNALTONOISERATIO` (int)
`imagick::METRIC_ROOTMEANSQUAREDERROR` (int)

`PIXEL_*` Sabitleri

Piksel Sabitleri

`imagick::PIXEL_CHAR` (int)
`imagick::PIXEL_DOUBLE` (int)
`imagick::PIXEL_FLOAT` (int)
`imagick::PIXEL_INTEGER` (int)
  Only available for ImageMagick < 7.
`imagick::PIXEL_LONG` (int)
`imagick::PIXEL_QUANTUM` (int)
`imagick::PIXEL_SHORT` (int)

`EVALUATE_*` Sabitleri

Değerlendirme İşleci Sabitleri

`imagick::EVALUATE_UNDEFINED` (int)
`imagick::EVALUATE_ADD` (int)
`imagick::EVALUATE_AND` (int)
`imagick::EVALUATE_DIVIDE` (int)
`imagick::EVALUATE_LEFTSHIFT` (int)
`imagick::EVALUATE_MAX` (int)
`imagick::EVALUATE_MIN` (int)
`imagick::EVALUATE_MULTIPLY` (int)
`imagick::EVALUATE_OR` (int)
`imagick::EVALUATE_RIGHTSHIFT` (int)
`imagick::EVALUATE_SET` (int)
`imagick::EVALUATE_SUBTRACT` (int)
`imagick::EVALUATE_XOR` (int)
`imagick::EVALUATE_POW` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_LOG` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_THRESHOLD` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_THRESHOLDBLACK` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_THRESHOLDWHITE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_GAUSSIANNOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_IMPULSENOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_LAPLACIANNOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_MULTIPLICATIVENOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_POISSONNOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_UNIFORMNOISE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_COSINE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_SINE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.
`imagick::EVALUATE_ADDMODULUS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.4 ve üstü.

`COLORSPACE_*` Sabitleri

Renk Uzayı Sabitleri

`imagick::COLORSPACE_UNDEFINED` (int)
`imagick::COLORSPACE_RGB` (int)
`imagick::COLORSPACE_GRAY` (int)
`imagick::COLORSPACE_TRANSPARENT` (int)
`imagick::COLORSPACE_OHTA` (int)
`imagick::COLORSPACE_LAB` (int)
`imagick::COLORSPACE_XYZ` (int)
`imagick::COLORSPACE_YCBCR` (int)
`imagick::COLORSPACE_YCC` (int)
`imagick::COLORSPACE_YIQ` (int)
`imagick::COLORSPACE_YPBPR` (int)
`imagick::COLORSPACE_YUV` (int)
`imagick::COLORSPACE_CMYK` (int)
`imagick::COLORSPACE_SRGB` (int)
`imagick::COLORSPACE_HSB` (int)
`imagick::COLORSPACE_HSL` (int)
`imagick::COLORSPACE_HWB` (int)
`imagick::COLORSPACE_REC601LUMA` (int)
`imagick::COLORSPACE_REC709LUMA` (int)
`imagick::COLORSPACE_LOG` (int)
`imagick::COLORSPACE_CMY` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.2 ve üstü.

`VIRTUALPIXELMETHOD_*` Sabitleri

Sanal Piksel Yöntemi Sabitleri

`imagick::VIRTUALPIXELMETHOD_UNDEFINED` (int)
`imagick::VIRTUALPIXELMETHOD_BACKGROUND` (int)
`imagick::VIRTUALPIXELMETHOD_CONSTANT` (int)
`imagick::VIRTUALPIXELMETHOD_EDGE` (int)
`imagick::VIRTUALPIXELMETHOD_MIRROR` (int)
`imagick::VIRTUALPIXELMETHOD_TILE` (int)
`imagick::VIRTUALPIXELMETHOD_TRANSPARENT` (int)
`imagick::VIRTUALPIXELMETHOD_MASK` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.2 ve üstü.
`imagick::VIRTUALPIXELMETHOD_BLACK` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.2 ve üstü.
`imagick::VIRTUALPIXELMETHOD_GRAY` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.2 ve üstü.
`imagick::VIRTUALPIXELMETHOD_WHITE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.2 ve üstü.
`imagick::VIRTUALPIXELMETHOD_HORIZONTALTILE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.3 ve üstü.
`imagick::VIRTUALPIXELMETHOD_VERTICALTILE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.3 ve üstü.

`PREVIEW_*` Sabitleri

Önizleme Sabitleri

`imagick::PREVIEW_UNDEFINED` (int)
`imagick::PREVIEW_ROTATE` (int)
`imagick::PREVIEW_SHEAR` (int)
`imagick::PREVIEW_ROLL` (int)
`imagick::PREVIEW_HUE` (int)
`imagick::PREVIEW_SATURATION` (int)
`imagick::PREVIEW_BRIGHTNESS` (int)
`imagick::PREVIEW_GAMMA` (int)
`imagick::PREVIEW_SPIFF` (int)
`imagick::PREVIEW_DULL` (int)
`imagick::PREVIEW_GRAYSCALE` (int)
`imagick::PREVIEW_QUANTIZE` (int)
`imagick::PREVIEW_DESPECKLE` (int)
`imagick::PREVIEW_REDUCENOISE` (int)
`imagick::PREVIEW_ADDNOISE` (int)
`imagick::PREVIEW_SHARPEN` (int)
`imagick::PREVIEW_BLUR` (int)
`imagick::PREVIEW_THRESHOLD` (int)
`imagick::PREVIEW_EDGEDETECT` (int)
`imagick::PREVIEW_SPREAD` (int)
`imagick::PREVIEW_SOLARIZE` (int)
`imagick::PREVIEW_SHADE` (int)
`imagick::PREVIEW_RAISE` (int)
`imagick::PREVIEW_SEGMENT` (int)
`imagick::PREVIEW_SWIRL` (int)
`imagick::PREVIEW_IMPLODE` (int)
`imagick::PREVIEW_WAVE` (int)
`imagick::PREVIEW_OILPAINT` (int)
`imagick::PREVIEW_CHARCOALDRAWING` (int)
`imagick::PREVIEW_JPEG` (int)

`RENDERINGINTENT_*` Sabitleri

Uygulama Amacı Sabitleri

`imagick::RENDERINGINTENT_UNDEFINED` (int)
`imagick::RENDERINGINTENT_SATURATION` (int)
`imagick::RENDERINGINTENT_PERCEPTUAL` (int)
`imagick::RENDERINGINTENT_ABSOLUTE` (int)
`imagick::RENDERINGINTENT_RELATIVE` (int)

`INTERLACE_*` Sabitleri

Geçişim Sabitleri

`imagick::INTERLACE_UNDEFINED` (int)
`imagick::INTERLACE_NO` (int)
`imagick::INTERLACE_LINE` (int)
`imagick::INTERLACE_PLANE` (int)
`imagick::INTERLACE_PARTITION` (int)
`imagick::INTERLACE_GIF` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.4 ve üstü.
`imagick::INTERLACE_JPEG` (int)
`imagick::INTERLACE_PNG` (int)

`FILLRULE_*` Sabitleri

Dolgu Kuralı Sabitleri

`imagick::FILLRULE_UNDEFINED` (int)
`imagick::FILLRULE_EVENODD` (int)
`imagick::FILLRULE_NONZERO` (int)

`PATHUNITS_*` Sabitleri

Yalıtım Birimi Sabitleri

`imagick::PATHUNITS_UNDEFINED` (int)
`imagick::PATHUNITS_USERSPACE` (int)
`imagick::PATHUNITS_USERSPACEONUSE` (int)
`imagick::PATHUNITS_OBJECTBOUNDINGBOX` (int)

`LINECAP_*` Sabitleri

Çizgi Uç Türü Sabitleri

`imagick::LINECAP_UNDEFINED` (int)
`imagick::LINECAP_BUTT` (int)
`imagick::LINECAP_ROUND` (int)
`imagick::LINECAP_SQUARE` (int)

`LINEJOIN_*` Sabitleri

Çizgi Eklem Türü Sabitleri

`imagick::LINEJOIN_UNDEFINED` (int)
  Eklem şekli tanımsız
`imagick::LINEJOIN_MITER` (int)
  Ekleme gönye köşesi şeklini verir
`imagick::LINEJOIN_ROUND` (int)
  Eklem köşesini yuvarlatır
`imagick::LINEJOIN_BEVEL` (int)
  Eklem köşesini kırar

`RESOURCETYPE_*` Sabitleri

Özkaynak Türü Sabitleri

`imagick::RESOURCETYPE_UNDEFINED` (int)
`imagick::RESOURCETYPE_AREA` (int)
  Piksel önbelleğinde bulunabilecek bir görüntünün azami genişlik * yüksekliğini ayarlar.
`imagick::RESOURCETYPE_DISK` (int)
  Piksel önbelleği tarafından kullanılmasına izin verilen azami disk alanı miktarını bayt cinsinden ayarlar.
`imagick::RESOURCETYPE_FILE` (int)
  Azami açık piksel önbellek dosyası sayısını ayarlar.
`imagick::RESOURCETYPE_MAP` (int)
  Piksel önbelleği için ayrılacak azami bellek haritası miktarını bayt cinsinden ayarlar.
`imagick::RESOURCETYPE_MEMORY` (int)
  Yığından piksel önbelleği için ayrılacak azami bellek miktarını bayt cinsinden ayarlar.
`imagick::RESOURCETYPE_THREAD` (int)
  Azami paralel evre sayısını ayarlar. Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.7.8 ve üstü.

`LAYERMETHOD_*` Sabitleri

Katman Yöntemi Sabitleri

`imagick::LAYERMETHOD_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_COALESCE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_COMPAREANY` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_COMPARECLEAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_COMPAREOVERLAY` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_DISPOSE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_OPTIMIZE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_OPTIMIZEPLUS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.2.9 ve üstü.
`imagick::LAYERMETHOD_OPTIMIZEIMAGE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::LAYERMETHOD_OPTIMIZETRANS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::LAYERMETHOD_REMOVEDUPS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::LAYERMETHOD_REMOVEZERO` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::LAYERMETHOD_COMPOSITE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::LAYERMETHOD_MERGE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.7 ve üstü.
`imagick::LAYERMETHOD_FLATTEN` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.7 ve üstü.
`imagick::LAYERMETHOD_MOSAIC` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.7 ve üstü.

`ORIENTATION_*` Sabitleri

Yön Sabitleri

`imagick::ORIENTATION_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_TOPLEFT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_TOPRIGHT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_BOTTOMRIGHT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_BOTTOMLEFT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_LEFTTOP` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_RIGHTTOP` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_RIGHTBOTTOM` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.
`imagick::ORIENTATION_LEFTBOTTOM` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.0 ve üstü.

`DISTORTION_*` Sabitleri

Bozunum Sabitleri

`imagick::DISTORTION_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_AFFINE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_AFFINEPROJECTION` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_ARC` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_BILINEAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_PERSPECTIVE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_PERSPECTIVEPROJECTION` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_SCALEROTATETRANSLATE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.6 ve üstü.
`imagick::DISTORTION_POLYNOMIAL` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_POLAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_DEPOLAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_BARREL` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_BARRELINVERSE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_SHEPARDS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DISTORTION_SENTINEL` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.

`ALPHACHANNEL_*` Sabitleri

Alfa Kanalı Sabitleri

`imagick::ALPHACHANNEL_ACTIVATE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.8 ve üstü.
`imagick::ALPHACHANNEL_DEACTIVATE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.8 ve üstü.
`imagick::ALPHACHANNEL_RESET` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.8 ve üstü.
`imagick::ALPHACHANNEL_SET` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.8 ve üstü.
`imagick::ALPHACHANNEL_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_COPY` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_EXTRACT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_OPAQUE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_SHAPE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_TRANSPARENT` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::ALPHACHANNEL_BACKGROUND` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.5.3 ve üstü.
`imagick::ALPHACHANNEL_REMOVE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.7.8 ve üstü.
`imagick::ALPHACHANNEL_ASSOCIATE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.9.0 ve üstü.
`imagick::ALPHACHANNEL_DISSOCIATE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.9.0 ve üstü.
`imagick::ALPHACHANNEL_ON` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 7.0.0 ve üstü.
`imagick::ALPHACHANNEL_OFF` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 7.0.0 ve üstü.
`imagick::ALPHACHANNEL_DISCRETE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 7.0.0 ve üstü.

`SPARSECOLORMETHOD_*` Sabitleri

Seyrek Renk Yöntemi Sabitleri

`imagick::SPARSECOLORMETHOD_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::SPARSECOLORMETHOD_BARYCENTRIC` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::SPARSECOLORMETHOD_BILINEAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::SPARSECOLORMETHOD_POLYNOMIAL` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::SPARSECOLORMETHOD_SPEPARDS` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::SPARSECOLORMETHOD_VORONOI` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.

`FUNCTION_*` Sabitleri

İşlev Sabitleri

`imagick::FUNCTION_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.9 ve üstü.
`imagick::FUNCTION_POLYNOMIAL` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.9 ve üstü.
`imagick::FUNCTION_SINUSOID` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.9 ve üstü.

`INTERPOLATE_*` Sabitleri

Aradeğerleme Sabitleri

`imagick::INTERPOLATE_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_AVERAGE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_BICUBIC` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_BILINEAR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_FILTER` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_INTEGER` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_MESH` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_NEARESTNEIGHBOR` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.2 ve üstü.
`imagick::INTERPOLATE_SPLINE` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.3.4 ve üstü.

`DITHERMETHOD_*` Sabitleri

Titreklik Yöntemi Sabitleri

`imagick::DITHERMETHOD_UNDEFINED` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DITHERMETHOD_NO` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DITHERMETHOD_RIEMERSMA` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.
`imagick::DITHERMETHOD_FLOYDSTEINBERG` (int)
  Bu sabitini kullanılabilmesi için gerekli ImageMagick kütüphanesinin sürüm numarası: 6.4.6 ve üstü.

# Örnekler

## İçindekiler

- Temel kullanım

## Temel kullanım

Imagick PHP'de görüntü işlemlerini nesne yönelimli arayüzü sayesinde oldukça kolaylaştırır. Burada bir görüntünün küçük bir örneğinin nasıl elde edildiği gösterilmiştir:

Örnek 1 - Imagick ile görüntü örneği (thumbnail) oluşturmak

    <?php

    header('Content-type: image/jpeg');

    $görüntü = new Imagick('görüntü.jpg');

    // Genişlik veya yükseklik olarak 0 verilmişse
    // enboy oranı korunur
    $görüntü->thumbnailImage(100, 0);

    echo $image;

    ?>

Imagick'teki SPL ve nesne yönelimli özellikler kullanarak bir dizin içindeki tüm görüntü dosyaları kolayca yeniden boyutlandırılabilir (Büyük sayısal kamera görüntülerini HTML sayfalarında izlenebilir boyuta indirmek gibi). Temel verileri kaybetmek istemediğimizden bu örnekte resize kullanıyoruz:

Örnek 2 - Bir dizindeki tüm JPG dosyalarının küçük örneklerinin elde edilmesi

    <?php

    $görüntüler = new Imagick(glob('images/*.JPG'));

    foreach($görüntüler as $görüntü) {

        // 0, görüntünün enboy oranına uyulmasını sağlar
        $görüntü->thumbnailImage(1024,0);

    }

    $görüntüler->writeImages();

    ?>

Burada bir görüntünün yansımasının oluşturulması örneklenmiştir. Yansıtma için görüntünün simetriği alınıp derece derece koyulaşan bir maske uygulanmıştır. Hem özgün görüntü hem de simetriği aynı tuvalin üzerine yerleştirilmiştir.

Örnek 3 - Bir görüntünün yansımasının oluşturulması

    <?php
    /* Görüntüyü oku */
    $im = new Imagick("test.png");

    /* Görüntünün küçük örneğini oluştur */
    $im->thumbnailImage(200, null);

    /* Görüntüye bir çerçeve çizgisi çiz */
    $im->borderImage(new ImagickPixel("white"), 5, 5);

    /* Görüntüyü kopyalayıp simetriğini al */
    $reflection = $im->clone();
    $reflection->flipImage();

    /* Yansımaya uygulanacak maskeyi oluştur */
    $gradient = new Imagick();

    /* Maske biraz büyük olmalı ve bir çerçevesi olmalı */
    $gradient->newPseudoImage($reflection->getImageWidth() + 10,
            $reflection->getImageHeight() + 10, "gradient:transparent-black");

    /* Maskeyi yansımaya uygula */
    $reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);

    /* Biraz matlık ekle (ImageMagick 6.2.9 ve sonrası gerekir.) */
    $reflection->setImageOpacity( 0.3 );

    /* Boş bir tuval oluştur */
    $canvas = new Imagick();

    /* Tuval her iki görüntüyü de tutacak kadar büyük olmalı */
    $width = $im->getImageWidth() + 40;
    $height = ($im->getImageHeight() * 2) + 30;
    $canvas->newImage($width, $height, new ImagickPixel("black"));
    $canvas->setImageFormat("png");

    /* Her iki görüntüyü tuval üzerinde birleştir */
    $canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
    $canvas->compositeImage($reflection, imagick::COMPOSITE_OVER,
            20, $im->getImageHeight() + 10);

    /* Görüntüyü çıktıla */
    header("Content-Type: image/png");
    echo $canvas;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Aşağıdaki örnekte çizim sırasında örüntülerle görüntünün nasıl kaplandığı gösterilmiştir.

Örnek 4 - Metni bir örüntü ile kaplamak

    <?php

    /* Yeni bir görüntü nesnesi oluştur */
    $im = new Imagick();

    /* Örüntü olarak kullanılacak yeni görüntüyü oluştur */
    $im->newPseudoImage(50, 50, "gradient:red-black");

    /* Bir çizim nesnesi oluştur */
    $draw = new ImagickDraw();

    /* Örüntüyü "gradient" ismiyle oluştur */
    $draw->pushPattern('gradient', 0, 0, 50, 50);

    /* Örüntüyle maskeyi birleştir */
    $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);

    /* Örüntüyü kapat */
    $draw->popPattern();

    /* "gradient" örüntüsü ile görüntüyü kapla */
    $draw->setFillPatternURL('#gradient');

    /* Yazı tipi boyu 52 olsun */
    $draw->setFontSize(52);

    /* Bir şeyler yaz */
    $draw->annotation(20, 50, "Hello World!");

    /* Beyaz zeminli bir tuval oluştur */
    $canvas = new Imagick();
    $canvas->newImage(350, 70, "white");

    /* Çizimi tuvalin üzerine yerleştir */
    $canvas->drawImage($draw);

    /* Görüntüye çerçeve olarak 1px kalınlığında siyah çizgi çiz */
    $canvas->borderImage('black', 1, 1);

    /* Görüntünün dosya biçemi PNG olsun*/
    $canvas->setImageFormat('png');

    /* Görüntüyü çıktıla */
    header("Content-Type: image/png");
    echo $canvas;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Canlandırmalı GIF görüntüleri ile çalışmak.

Örnek 5 - GIF görüntüyü okumak ve tüm kareleri boyutlandırmak

    <?php

    /* Yeni bir imagick nesnesi oluşturup GIF görüntüyü okut */
    $im = new Imagick("example.gif");

    /* Tüm görüntü karelerini boyutlandır */
    foreach ($im as $frame) {
        /* 50x50 kareler */
        $frame->thumbnailImage(50, 50);

        /* Sanal tuvali doğru boyuta ayarla */
        $frame->setImagePage(50, 50, 0, 0);
    }

    /* writeImage yerine writeImages kullanılıyor! */
    $im->writeImages("example_small.gif", true);
    ?>

Elips ilkeli ve özel yazı tipleriyle çalışma

Örnek 6 - PHP logosu yapımı

    <?php
    /* Genişliği ve yüksekliği orijinal PHP logosuyla orantılı olarak ayarla */
    $width = 400;
    $height = 210;

    /* Imagick nesnesini şeffaf tuval ile oluştur */
    $img = new Imagick();
    $img->newImage($width, $height, new ImagickPixel('transparent'));

    /* Elips çizmek için yeni ImagickDraw örneği */
    $draw = new ImagickDraw();
    /* Elips dolgu rengini eflatun yap */
    $draw->setFillColor('#777bb4');
    /* Elips boyutlarını ayarla */
    $draw->ellipse($width / 2, $height / 2, $width / 2, $height / 2, 0, 360);
    /* Elipsi tuvale aktar */
    $img->drawImage($draw);

    /* Metin için dolgu rengini siyah yap (Dikkat: ImagickDraw yeniden kullanılıyor) */
    $draw->setFillColor('black');
    /* Kenar konturunu beyaz yap */
    $draw->setStrokeColor('white');
    /* Kenar konturunun kalınlığını ayarla */
    $draw->setStrokeWidth(2);
    /* Yazı tipi karakter aralığını ayarla (negatif değer yakınlaştırır) */
    $draw->setTextKerning(-8);
    /* PHP logosunda kullanılan yazı tipini ve boyutunu ayarla */
    $draw->setFont('Handel Gothic.ttf');
    $draw->setFontSize(150);
    /* Metni düşey ve yatayda ortala */
    $draw->setGravity(Imagick::GRAVITY_CENTER);

    /* Merkez "php" yi -10'luk Y uzaklığıyla tuvale ekle (elipsin içinde)  */
    $img->annotateImage($draw, 0, -10, 0, 'php');
    $img->setImageFormat('png');

    /* PNG için uygun başlığı ekle ve görüntüyü çıktıla */
    header('Content-Type: image/png');
    echo $img;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# Imagick sınıfı

(PECL imagick 2, PECL imagick 3)

## Sınıf Sözdizimi

class Imagick implements Iterator {
public function __construct(mixed `$dosyalar` = ?)
public function adaptiveBlurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function adaptiveResizeImage(
int `$genişlik`,
int `$yükseklik`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool
public function adaptiveSharpenImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function adaptiveThresholdImage(int `$genişlik`, int `$yükseklik`, int `$başlangıç`): bool
public function addImage(Imagick `$kaynak`): bool
public function addNoiseImage(int `$gürültü_türü`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function affineTransformImage(ImagickDraw `$matris`): bool
public function animateImages(string `$x_sunucusu`): bool
public function annotateImage(
ImagickDraw `$çizim_ayarı`,
float `$x`,
float `$y`,
float `$açı`,
string `$metin`
): bool
public function appendImages(bool `$yön` = `false`): Imagick
public function autoLevelImage(int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function averageImages(): Imagick
public function blackThresholdImage(mixed `$threshold`): bool
public function blueShiftImage(float `$factor` = 1.5): bool
public function blurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = ?): bool
public function borderImage(mixed `$çerçeve_rengi`, int `$genişlik`, int `$yükseklik`): bool
public function brightnessContrastImage(float `$brightness`, float `$contrast`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function charcoalImage(float `$yarıçap`, float `$sapma`): bool
public function chopImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function clampImage(int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function clear(): bool
function clipImage(): bool
public function clipImagePath(string `$pathname`, string `$inside`): void
public function clipPathImage(string `$yol_adı`, bool `$içinde`): bool
public function clone(): Imagick
public function clutImage(Imagick `$renk_tablosu`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function coalesceImages(): Imagick
public function colorFloodfillImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`
): bool
public function colorizeImage(mixed `$renk`, bool `$matlık` = `false`): bool
public function colorMatrixImage(array `$color_matrix`): bool
public function combineImages(int `$kanal`): Imagick
public function commentImage(string `$açıklama`): bool
public function compareImageChannels(Imagick `$görüntü`, int `$kanal`, int `$metrik`): array
public function compareImageLayers(int `$yöntem`): Imagick
public function compareImages(Imagick `$görüntü`, int `$metrik`): array
public function compositeImage(
Imagick `$birleşik_nesne`,
int `$işleç`,
int `$x`,
int `$y`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function contrastImage(bool `$zıtlık`): bool
public function contrastStretchImage(float `$siyah_nokta`, float `$beyaz_nokta`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function convolveImage(array `$çekirdek`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function count(int `$mode` = 0): int
public function cropImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function cropThumbnailImage(int `$genişlik`, int `$yükseklik`, bool `$eski` = `false`): bool
public function current(): Imagick
public function cycleColormapImage(int `$miktar`): bool
public function decipherImage(string `$parola`): bool
public function deconstructImages(): Imagick
public function deleteImageArtifact(string `$artifact`): bool
public function deleteImageProperty(string `$name`): bool
public function deskewImage(float `$threshold`): bool
public function despeckleImage(): bool
public function destroy(): bool
public function displayImage(string `$sunucu`): bool
public function displayImages(string `$sunucu`): bool
public function distortImage(int `$yöntem`, array `$bağımsız_değişkenler`, bool `$sığdır`): bool
public function drawImage(ImagickDraw `$işlem`): bool
public function edgeImage(float `$yarıçap`): bool
public function embossImage(float `$yarıçap`, float `$sapma`): bool
public function encipherImage(string `$parola`): bool
public function enhanceImage(): bool
public function equalizeImage(): bool
public function evaluateImage(int `$işleç`, float `$terim`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function exportImagePixels(
int `$x`,
int `$y`,
int `$width`,
int `$height`,
string `$map`,
int `$STORAGE`
): array
public function extentImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function filter(ImagickKernel `$ImagickKernel`, int `$channel` = Imagick::CHANNEL_UNDEFINED): bool
public function flattenImages(): Imagick
public function flipImage(): bool
public function floodFillPaintImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$hedef`,
int `$x`,
int `$y`,
bool `$ters`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
function flopImage(): bool
public function forwardFourierTransformimage(bool `$magnitude`): bool
public function frameImage(
mixed `$mat_renk`,
int `$genişlik`,
int `$yükseklik`,
int `$iç_pah`,
int `$dış_pah`
): bool
public function functionImage(int `$function`, array `$arguments`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function fxImage(string `$ifade`, int `$kanal` = Imagick::CHANNEL_DEFAULT): Imagick
public function gammaImage(float `$gamma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function gaussianBlurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function getColorspace(): int
public function getCompression(): int
public function getCompressionQuality(): int
public function getCopyright(): string
public function getFilename(): string
public function getFont(): string
public function getFormat(): string
public function getGravity(): int
public static function getHomeURL(): string
public function getImage(): Imagick
public function getImageAlphaChannel(): bool
public function getImageArtifact(string `$artifact`): string
public function getImageAttribute(string `$key`): string
public function getImageBackgroundColor(): ImagickPixel
public function getImageBlob(): string
public function getImageBluePrimary(): array
public function getImageBorderColor(): ImagickPixel
public function getImageChannelDepth(int `$kanal`): int
public function getImageChannelDistortion(Imagick `$görüntü`, int `$kanal`, int `$metrik`): float
public function getImageChannelDistortions(Imagick `$reference`, int `$metric`, int `$channel` = Imagick::CHANNEL_DEFAULT): float
public function getImageChannelExtrema(int `$kanal`): array
public function getImageChannelKurtosis(int `$channel` = Imagick::CHANNEL_DEFAULT): array
public function getImageChannelMean(int `$kanal`): array
public function getImageChannelRange(int `$channel`): array
public function getImageChannelStatistics(): array
public function getImageClipMask(): Imagick
public function getImageColormapColor(int `$indis`): ImagickPixel
public function getImageColors(): int
public function getImageColorspace(): int
public function getImageCompose(): int
public function getImageCompression(): int
public function getCompressionQuality(): int
public function getImageDelay(): int
public function getImageDepth(): int
public function getImageDispose(): int
public function getImageDistortion(Imagick `$görüntü`, int `$metrik`): float
public function getImageExtrema(): array
public function getImageFilename(): string
public function getImageFormat(): string
public function getImageGamma(): float
public function getImageGeometry(): array
public function getImageGravity(): int
public function getImageGreenPrimary(): array
public function getImageHeight(): int
public function getImageHistogram(): array
public function getImageIndex(): int
public function getImageInterlaceScheme(): int
public function getImageInterpolateMethod(): int
public function getImageIterations(): int
public function getImageLength(): int
public function getImageMatte(): int
public function getImageMatteColor(): ImagickPixel
public function getImageMimeType(): string
public function getImageOrientation(): int
public function getImagePage(): array
public function getImagePixelColor(int `$x`, int `$y`): ImagickPixel
public function getImageProfile(string `$isim`): string
public function getImageProfiles(string `$şablon` = "*", bool `$değerler_ile` = `true`): array
public function getImageProperties(string `$şablon` = "*", bool `$değerler_ile` = `true`): array
public function getImageProperty(string `$isim`): string
public function getImageRedPrimary(): array
public function getImageRegion(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): Imagick
public function getImageRenderingIntent(): int
public function getImageResolution(): array
public function getImagesBlob(): string
public function getImageScene(): int
public function getImageSignature(): string
public function getImageSize(): int
public function getImageTicksPerSecond(): int
public function getImageTotalInkDensity(): float
public function getImageType(): int
public function getImageUnits(): int
public function getImageVirtualPixelMethod(): int
public function getImageWhitePoint(): array
public function getImageWidth(): int
public function getInterlaceScheme(): int
public function getIteratorIndex(): int
public function getNumberImages(): int
public function getOption(string `$anahtar`): string
public function getPackageName(): string
public function getPage(): array
public function getPixelIterator(): ImagickPixelIterator
public function getPixelRegionIterator(
int `$x`,
int `$y`,
int `$genişlik`,
int `$yükseklik`
): ImagickPixelIterator
public function getPointSize(): string
public static function getQuantum(): int
public function getQuantumDepth(): array
public function getQuantumRange(): array
public static function getRegistry(string `$key`): string
public function getReleaseDate(): string
public function getResource(int `$tür`): int
public function getResourceLimit(int `$tür`): int
public function getSamplingFactors(): array
public function getSize(): array
public function getSizeOffset(): int
public function getVersion(): array
public function haldClutImage(Imagick `$clut`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function hasNextImage(): bool
public function hasPreviousImage(): bool
public function identifyFormat(string `$embedText`): string|false
public function identifyImage(bool `$hamÇıktıEkle` = `false`): array
public function implodeImage(float `$yarıçap`): bool
public function importImagePixels(
int `$x`,
int `$y`,
int `$width`,
int `$height`,
string `$map`,
int `$storage`,
array `$pixels`
): bool
public function inverseFourierTransformImage(Imagick `$complement`, bool `$magnitude`): bool
public function labelImage(string `$yafta`): bool
public function levelImage(
float `$siyah_nokta`,
float `$gamma`,
float `$beyaz_nokta`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function linearStretchImage(float `$siyah_nokta`, float `$beyaz_nokta`): bool
public function liquidRescaleImage(
int `$genişlik`,
int `$yükseklik`,
float `$delta_x`,
float `$diklik`
): bool
public static function listRegistry(): array
public function magnifyImage(): bool
public function mapImage(Imagick `$görüntü`, bool `$kıpırtı`): bool
public function matteFloodfillImage(
float `$alfa`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`
): bool
public function medianFilterImage(float `$yarıçap`): bool
public function mergeImageLayers(int `$katman_yöntemi`): bool
public function minifyImage(): bool
public function modulateImage(float `$parlaklık`, float `$doygunluk`, float `$sıcaklık`): bool
public function montageImage(
ImagickDraw `$nesne`,
string `$döşeme_geometrisi`,
string `$örnek_geometrisi`,
int `$kip`,
string `$çerçeve`
): Imagick
public function morphImages(int `$kare_sayısı`): Imagick
public function morphology(
int `$morphologyMethod`,
int `$iterations`,
ImagickKernel `$ImagickKernel`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool
public function mosaicImages(): Imagick
public function motionBlurImage(
float `$yarıçap`,
float `$sapma`,
float `$açı`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function negateImage(bool `$gri_tonlama`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function newImage(
int `$genişlik`,
int `$yükseklik`,
mixed `$artalan`,
string `$biçem` = ?
): bool
public function newPseudoImage(int `$genişlik`, int `$yükseklik`, string `$sözde_dizge`): bool
public function nextImage(): bool
public function normalizeImage(int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function oilPaintImage(float `$yarıcap`): bool
public function opaquePaintImage(
mixed `$hedef`,
mixed `$renk`,
float `$benzerlik`,
bool `$ters`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function optimizeImageLayers(): bool
public function orderedPosterizeImage(string `$eşik_eşlemi`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function paintFloodfillImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function paintOpaqueImage(
mixed `$eskisi`,
mixed `$yenisi`,
float `$benzerlik`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function paintTransparentImage(mixed `$hedef`, float `$alfa`, float `$benzerlik`): bool
public function pingImage(string `$dosya`): bool
publicfunction pingImageBlob(string `$görüntü`): bool
public function pingImageFile(resource `$dt`, string `$dosya` = ?): bool
function polaroidImage(ImagickDraw `$nesne`, float `$açı`): bool
public function posterizeImage(int `$seviyeler`, bool `$kıpırtı`): bool
public function previewImages(int `$preview`): bool
public function previousImage(): bool
public function profileImage(string `$isim`, ?string `$profil`): bool
public function quantizeImage(
int `$renk_sayısı`,
int `$renk_uzayı`,
int `$ağaç_derinliği`,
bool `$kıpırtı`,
bool `$ölçme_hatası`
): bool
public function quantizeImages(
int `$renk_sayısı`,
int `$renk_uzayı`,
int `$ağaç_derinliği`,
bool `$kıpırtı`,
bool `$ölçme_hatası`
): bool
public function queryFontMetrics(ImagickDraw `$nesne`, string `$metin`, bool `$çoksatırlı` = ?): array
public static function queryFonts(string `$şablon` = "*"): array
public static function queryFormats(string `$şablon` = "*"): array
public function radialBlurImage(float `$açı`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function raiseImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`,
bool `$çıkıntı`
): bool
public function randomThresholdImage(float `$düşük`, float `$yüksek`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function readImage(string `$dosya`): bool
public function readImageBlob(string `$dizge`, string `$dosya` = ?): bool
public function readImageFile(resource `$dt`, string `$dosya` = `null`): bool
public function readImages(array `$filenames`): bool
public function animateImages(array `$matris`): bool
publicfunction reduceNoiseImage(float `$yarıçap`): bool
public function remapImage(Imagick `$replacement`, int `$DITHER`): bool
public function removeImage(): bool
public function removeImageProfile(string `$isim`): string
public function render(): bool
public function resampleImage(
float `$x_çözünürlüğü`,
float `$y_çözünürlüğü`,
int `$süzgeç`,
float `$bulanıklık`
): bool
public function resetImagePage(string `$sayfa`): bool
public function resizeImage(
int `$genişlik`,
int `$yükseklik`,
int `$süzgeç`,
float `$bulanıklık`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool
public function rollImage(int `$x`, int `$y`): bool
public function rotateImage(mixed `$artalan`, float `$açı`): bool
public function rotationalBlurImage(float `$angle`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function roundCorners(
float `$x_yarıçapı`,
float `$y_yarıçapı`,
float `$vurgu_genişliği` = 10,
float `$yer_değiştirme` = 5,
float `$boyut_düzeltme` = -6
): bool
public function sampleImage(int `$genişlik`, int `$yükseklik`): bool
public function scaleImage(
int `$genişlik`,
int `$yükseklik`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool
public function segmentImage(
int `$COLORSPACE`,
float `$cluster_threshold`,
float `$smooth_threshold`,
bool `$verbose` = `false`
): bool
public function selectiveBlurImage(
float `$radius`,
float `$sigma`,
float `$threshold`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool
public function separateImageChannel(int `$kanal`): bool
public function sepiaToneImage(float `$eşik`): bool
public function setBackgroundColor(mixed `$renk`): bool
public function setColorspace(int `$COLORSPACE`): bool
public function setCompression(int `$sıkıştırma`): bool
public function setCompressionQuality(int `$seviye`): bool
public function setFilename(string `$dosya`): bool
public function setFirstIterator(): bool
public function setFont(string `$yazıtipi`): bool
public function setFormat(string `$biçem`): bool
public function setGravity(int `$gravity`): bool
public function setImage(Imagick `$yenisi`): bool
public function setImageAlphaChannel(int `$kip`): bool
public function setImageArtifact(string `$artifact`, string `$value`): bool
public function setImageAttribute(string `$key`, string `$value`): bool
public function setImageBackgroundColor(mixed `$renk`): bool
public function setImageBias(float `$sapma`): bool
public function setImageBiasQuantum(float `$bias`): void
public function setImageBluePrimary(float `$x`, float `$y`): bool
public function setImageBorderColor(mixed `$renk`): bool
public function setImageChannelDepth(int `$kanal`, int `$derinlik`): bool
public function setImageClipMask(Imagick `$kırpıcı_resim`): bool
public function setImageColormapColor(int `$indis`, ImagickPixel `$renk`): bool
public function setImageColorspace(int `$renk_uzayı`): bool
public function setImageCompose(int `$işleç`): bool
public function setImageCompression(int `$sıkıştırma`): bool
public function setImageCompressionQuality(int `$seviye`): bool
public function setImageDelay(int `$gecikme`): bool
public function setImageDepth(int `$derinlik`): bool
public function setImageDispose(int `$yöntem`): bool
public function setImageExtent(int `$genişlik`, int `$yükseklik`): bool
public function setImageFilename(string `$dosya`): bool
public function setImageFormat(string `$biçem`): bool
public function setImageGamma(float `$gamma`): bool
public function setImageGravity(int `$gravity`): bool
public function setImageGreenPrimary(float `$x`, float `$y`): bool
public function setImageIndex(int `$indis`): bool
public function setImageInterlaceScheme(int `$geçişim_şeması`): bool
public function setImageInterpolateMethod(int `$yöntem`): bool
public function setImageIterations(int `$yineleme`): bool
public function setImageMatte(bool `$matlık`): bool
public function setImageMatteColor(mixed `$şeffaf_renk`): bool
public function setImageOpacity(float `$matlık`): bool
public function setImageOrientation(int `$baskı_yönü`): bool
public function setImagePage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function setImageProfile(string `$isim`, string `$profil`): bool
public function setImageProperty(string `$isim`, string `$değer`): bool
public function setImageRedPrimary(float `$x`, float `$y`): bool
public function setImageRenderingIntent(int `$uygulama_tarzı`): bool
public function setImageResolution(float `$x_çözünürlüğü`, float `$y_çözünürlüğü`): bool
public function setImageScene(int `$dekor`): bool
public function setImageTicksPerSecond(int `$göreli_hız`): bool
public function setImageType(int `$resim_türü`): bool
public function setImageUnits(int `$birimler`): bool
public function setImageVirtualPixelMethod(int `$yöntem`): bool
public function setImageWhitePoint(float `$x`, float `$y`): bool
public function setInterlaceScheme(int `$geçişim_şeması`): bool
public function setIteratorIndex(int `$indis`): bool
public function setLastIterator(): bool
public function setOption(string `$anahtar`, string `$değer`): bool
public function setPage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function setPointSize(float `$punto`): bool
public function setProgressMonitor(callable `$callback`): bool
public static function setRegistry(string `$key`, string `$value`): bool
public function setResolution(float `$x_çözünürlüğü`, float `$y_çözünürlüğü`): bool
public function setResourceLimit(int `$özkaynak`, int `$sınır`): bool
public function setSamplingFactors(array `$çarpanlar`): bool
public function setSize(int `$sütun`, int `$satır`): bool
public function setSizeOffset(int `$sütun`, int `$satır`, int `$başlangıç`): bool
public function setType(int `$görüntü_türü`): bool
public function shadeImage(bool `$gri`, float `$başucu`, float `$yükseliş`): bool
public function shadowImage(
float `$matlık`,
float `$sapma`,
int `$x`,
int `$y`
): bool
public function sharpenImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function shaveImage(int `$sütun`, int `$satır`): bool
public function shearImage(mixed `$artalan`, float `$x_kaykılması`, float `$y_kaykılması`): bool
public function sigmoidalContrastImage(
bool `$netleştir`,
float `$zıtlık`,
float `$aradeğer`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function sketchImage(float `$yarıçap`, float `$sapma`, float `$açı`): bool
public function smushImages(bool `$stack`, int `$offset`): Imagick
public function solarizeImage(int `$eşik`): bool
public function sparseColorImage(int `$SPARSE_METHOD`, array `$arguments`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool
public function spliceImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool
public function spreadImage(float `$yarıçap`): bool
public function statisticImage(
int `$type`,
int `$width`,
int `$height`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool
public function steganoImage(Imagick `$filigran`, int `$konum`): Imagick
public function stereoImage(Imagick `$görüntü`): bool
public function stripImage(): bool
public function subImageMatch(Imagick `$Imagick`, array `&$offset` = ?, float `&$similarity` = ?): Imagick
public function swirlImage(float `$açı`): bool
function textureImage(Imagick `$doku_kalemi`): Imagick
public function thresholdImage(float `$eşik`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
public function thumbnailImage(
int `$sütun`,
int `$satır`,
bool `$sığdır` = `false`,
bool `$doldur` = `false`,
bool `$eski` = `false`
): bool
public function tintImage(mixed `$ton`, mixed `$matlık`, bool `$eski` = `false`): bool
public function __toString(): string
public function transformImage(string `$budama`, string `$geometri`): Imagick
public function transformImageColorspace(int `$colorspace`): bool
public function transparentPaintImage(
mixed `$hedef`,
float `$şeffaflık`,
float `$benzerlik`,
bool `$ters`
): bool
public function transposeImage(): bool
public function transverseImage(): bool
public function trimImage(float `$benzerlik`): bool
public function uniqueImageColors(): bool
public function unsharpMaskImage(
float `$yarıçap`,
float `$sapma`,
float `$miktar`,
float `$eşik`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool
public function valid(): bool
public function vignetteImage(
float `$siyahNokta`,
float `$beyazNokta`,
int `$x`,
int `$y`
): bool
public function waveImage(float `$genlik`, float `$dalga_boyu`): bool
public function whiteThresholdImage(mixed `$eşik`): bool
public function writeImage(string `$dosya` = `null`): bool
public function writeImageFile(resource `$dt`, string `$biçem` = ?): bool
public function writeImages(string `$dosya`, bool `$bitişik`): bool
public function writeImagesFile(resource `$dt`, string `$biçem` = ?): bool
}

## Görüntü Yöntemleri ve küresel yöntemler

Imagick sınıfı çok sayıda görüntüyü aynı anda işleme yeteneğine sahiptir. Bu dahili bir yığıt kullanılarak sağlanır. Daima üzerinde çalışılan görüntüyü gösteren bir dahili gösterici vardır. İşlevlerin çoğu sadece yığıttaki geçerli görüntü üzerinde işlem yaparken, bazıları da Imagick sınıfının tüm görüntüleri üzerinde işlem yapar. Bir uzlaşım olarak, sadece yığıttaki geçerli görüntüyü etkileyen yöntemlerin isimlerinde Image sözcüğü bulunabilir.

## Sınıf yöntemleri

Çok sayıda yöntem olduğundan bunları kullanım amaçlarına göre sınıflayarak listelemek daha iyi olacak:

Kullanım Amacına göre Sınıf yöntemleri
Görüntü Etkileri | Veri Alma Yöntemleri | Veri Atama Yöntemleri | Görüntülerin Okunması ve Yazılması | Diğer İşlemler
--- | --- | --- | --- | ---
Imagick::adaptiveBlurImage() | Imagick::getCompression() | Imagick::setBackgroundColor() | Imagick::__construct() | Imagick::clear()
Imagick::adaptiveResizeImage() | Imagick::getFilename() | Imagick::setCompressionQuality() | Imagick::addImage() | Imagick::clone()
Imagick::adaptiveSharpenImage() | Imagick::getFormat() | Imagick::setCompression() | Imagick::appendImages() | Imagick::current()
Imagick::adaptiveThresholdImage() | Imagick::getImageBackgroundColor() | Imagick::setFilename() | Imagick::getFilename() | Imagick::destroy()
Imagick::addNoiseImage() | Imagick::getImageBlob() | Imagick::getImagesBlob() | Imagick::setFormat() | Imagick::getFormat()
Imagick::affinetransformimage() | Imagick::getImageBluePrimary() | Imagick::setImageBackgroundColor() | Imagick::getImageFilename() | Imagick::getFormat()
Imagick::annotateImage() | Imagick::getImageBorderColor() | Imagick::setFirstIterator() | Imagick::getImageFormat() | Imagick::getHomeURL()
Imagick::averageImages() | Imagick::getImageChannelDepth() | Imagick::setImageBias() | Imagick::getImage() | Imagick::commentImage()
Imagick::blackThresholdImage() | Imagick::getImageChannelDistortion() | Imagick::setImageBluePrimary() | Imagick::setImageFilename() | Imagick::getNumberImages()
Imagick::blurImage() | Imagick::getImageChannelExtrema() | Imagick::setImageBorderColor() | Imagick::setImageFormat() | Imagick::getReleaseDate()
Imagick::borderImage() | Imagick::getImageChannelMean() | Imagick::setImageChannelDepth() | Imagick::readImageFile() | Imagick::getVersion()
Imagick::charcoalImage() | Imagick::getImageChannelStatistics() | Imagick::setImageColormapColor() | Imagick::readImage() | Imagick::hasNextImage()
Imagick::chopImage() | Imagick::getImageColormapColor() | Imagick::setImageColorSpace() | Imagick::writeImages() | Imagick::hasPreviousImage()
Imagick::clipImage() | Imagick::getImageColorspace() | Imagick::setImageCompose() | Imagick::writeImage() | Imagick::labelImage()
Imagick::clipPathImage() | Imagick::getImageColors() | Imagick::setImageCompression() |  | Imagick::newImage()
Imagick::coalesceImages() | Imagick::getImageCompose() | Imagick::setImageDelay() |  | Imagick::newPseudoImage()
Imagick::colorFloodFillImage() | Imagick::getImageDelay() | Imagick::setImageDepth() |  | Imagick::nextImage()
Imagick::colorizeImage() | Imagick::getImageDepth() | Imagick::setImageDispose() |  | Imagick::pingImageBlob()
Imagick::combineImages() | Imagick::getImageDispose() | Imagick::setImageDispose() |  | Imagick::pingImageFile()
Imagick::compareImageChannels() | Imagick::getImageDistortion() | Imagick::setImageExtent() |  | Imagick::pingImage()
Imagick::compareImageLayers() | Imagick::getImageExtrema() | Imagick::setImageFilename() |  | Imagick::previousImage()
Imagick::compositeImage() | Imagick::getImageFilename() | Imagick::setImageFormat() |  | Imagick::profileImage()
Imagick::contrastImage() | Imagick::getImageFormat() | Imagick::setImageGamma() |  | Imagick::queryFormats()
Imagick::contrastStretchImage() | Imagick::getImageGamma() | Imagick::setImageGreenPrimary() |  | Imagick::removeImageProfile()
Imagick::convolveImage() | Imagick::getImageGeometry() | Imagick::setImageIndex() |  | Imagick::removeImage()
Imagick::cropImage() | Imagick::getImageGreenPrimary() | Imagick::setImageInterpolateMethod() |  | Imagick::setFirstIterator()
Imagick::cycleColormapImage() | Imagick::getImageHeight() | Imagick::setImageIterations() |  | Imagick::setImageIndex()
Imagick::deconstructImages() | Imagick::getImageHistogram() | Imagick::setImageMatteColor() |  | Imagick::getCopyright()
Imagick::drawImage() | Imagick::getImageIndex() | Imagick::setImageMatte() |  |
Imagick::edgeImage() | Imagick::getImageInterlaceScheme() | Imagick::setImagePage() |  |
Imagick::embossImage() | Imagick::getImageInterpolateMethod() | Imagick::setImageProfile() |  |
Imagick::enhanceImage() | Imagick::getImageIterations() | Imagick::setImageProperty() |  |
Imagick::equalizeImage() | Imagick::getImageMatteColor() | Imagick::setImageRedPrimary() |  |
Imagick::evaluateImage() | Imagick::getImageMatte() | Imagick::setImageRenderingIntent() |  |
Imagick::flattenImages() | Imagick::getImagePage() | Imagick::setImageResolution() |  |
Imagick::flipImage() | Imagick::getImagePixelColor() | Imagick::setImageScene() |  |
Imagick::flopImage() | Imagick::getImageProfile() | Imagick::setImageTicksPerSecond() |  |
| Imagick::getImageProperty() | Imagick::setImageType() |  |
Imagick::fxImage() | Imagick::getImageRedPrimary() | Imagick::setImageUnits() |  |
Imagick::gammaImage() | Imagick::getImageRegion() | Imagick::setImageVirtualPixelMethod() |  |
Imagick::gaussianBlurImage() | Imagick::getImageRenderingIntent() | Imagick::setImageWhitepoint() |  |
Imagick::implodeImage() | Imagick::getImageResolution() | Imagick::setInterlaceScheme() |  |
Imagick::levelImage() | Imagick::getImageScene() | Imagick::setOption() |  |
Imagick::linearStretchImage() | Imagick::getImageSignature() | Imagick::setPage() |  |
Imagick::magnifyImage() | Imagick::getImageTicksPerSecond() | Imagick::setResolution() |  |
Imagick::matteFloodFillImage() | Imagick::getImageTotalInkDensity() | Imagick::setResourceLimit() |  |
Imagick::medianFilterImage() | Imagick::getImageType() | Imagick::setSamplingFactors() |  |
Imagick::minifyImage() | Imagick::getImageUnits() | Imagick::setSizeOffset() |  |
Imagick::modulateImage() | Imagick::getImageVirtualPixelMethod() | Imagick::setSize() |  |
Imagick::montageImage() | Imagick::getImageWhitepoint() | Imagick::setType() |  |
Imagick::morphImages() | Imagick::getImageWidth() |  |  |
Imagick::mosaicImages() | Imagick::getImage() |  |  |
Imagick::motionBlurImage() | Imagick::getInterlaceScheme() |  |  |
Imagick::negateImage() | Imagick::getNumberImages() |  |  |
Imagick::normalizeImage() | Imagick::getOption() |  |  |
Imagick::oilPaintImage() | Imagick::getPackageName() |  |  |
Imagick::optimizeImageLayers() | Imagick::getPage() |  |  |
Imagick::paintOpaqueImage() | Imagick::getPixelIterator() |  |  |
Imagick::paintTransparentImage() | Imagick::getPixelRegionIterator() |  |  |
Imagick::posterizeImage() | Imagick::getQuantumDepth() |  |  |
Imagick::radialBlurImage() | Imagick::getQuantumRange() |  |  |
Imagick::raiseImage() | Imagick::getResourceLimit() |  |  |
Imagick::randomThresholdImage() | Imagick::getResource() |  |  |
Imagick::reduceNoiseImage() | Imagick::getSamplingFactors() |  |  |
Imagick::render() | Imagick::getSizeOffset() |  |  |
Imagick::resampleImage() | Imagick::getSize() |  |  |
Imagick::resizeImage() | Imagick::identifyImage() |  |  |
Imagick::rollImage() | Imagick::getImageSize() |  |  |
Imagick::rotateImage() |  |  |  |
Imagick::sampleImage() |  |  |  |
Imagick::scaleImage() |  |  |  |
Imagick::separateImageChannel() |  |  |  |
Imagick::sepiaToneImage() |  |  |  |
Imagick::shadeImage() |  |  |  |
Imagick::shadowImage() |  |  |  |
Imagick::sharpenImage() |  |  |  |
Imagick::shaveImage() |  |  |  |
Imagick::shearImage() |  |  |  |
Imagick::sigmoidalContrastImage() |  |  |  |
Imagick::sketchImage() |  |  |  |
Imagick::solarizeImage() |  |  |  |
Imagick::spliceImage() |  |  |  |
Imagick::spreadImage() |  |  |  |
Imagick::steganoImage() |  |  |  |
Imagick::stereoImage() |  |  |  |
Imagick::stripImage() |  |  |  |
Imagick::swirlImage() |  |  |  |
Imagick::textureImage() |  |  |  |
Imagick::thresholdImage() |  |  |  |
Imagick::thumbnailImage() |  |  |  |
Imagick::tintImage() |  |  |  |
Imagick::transverseImage() |  |  |  |
Imagick::trimImage() |  |  |  |
Imagick::uniqueImageColors() |  |  |  |
Imagick::unsharpMaskImage() |  |  |  |
Imagick::vignetteImage() |  |  |  |
Imagick::waveImage() |  |  |  |
Imagick::whiteThresholdImage() |  |  |  |

# Imagick::adaptiveBlurImage

(PECL imagick 2, PECL imagick 3)

Imagick::adaptiveBlurImage — Görüntüyü uyarlamalı olarak bulanıklaştırır

### Açıklama

public function Imagick::adaptiveBlurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntüyü uyarlamalı olarak bulanıklaştırır. Görüntünün geneline standart bir bulanıklık uygulanırken görüntünün kenarlarına uygulanan uyarlamalı bulanıklık yoğunluğu oldukça azaltılır.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır. Yarıcapın kendiliğinden seçilmesi için 0 belirtin.

`sapma`

  Piksel cinsinden standart sapma.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::adaptiveBlurImage() örneği

Görüntünün uyarlamalı olarak bulanıklaştırılıp tarayıcıya çıktılanması.

    <?php

    header('Content-Type: image/jpeg');

    $image = new Imagick('test.jpg');

    $image->adaptiveBlurImage(5,3);
    echo $image;

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- Imagick::blurImage() - Görüntüye bir bulanıklık süzgeci ekler
- Imagick::motionBlurImage() - Hareket bulanıklığını taklit eder
- Imagick::radialBlurImage() - Görüntüye dairesel bulanıklık uygular

# Imagick::adaptiveResizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::adaptiveResizeImage — Nirengi noktasına göre uyarlamalı olarak görüntüyü boyutlandırır

### Açıklama

public function Imagick::adaptiveResizeImage(
int `$genişlik`,
int `$yükseklik`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool

Görüntü verisinin nirengi noktasına göre uyarlamalı olarak görüntüyü boyutlandırır. Sert renk değişiklikleri ile görüntü bulanıklaştırılmamaya çalışılır. Görüntüyü özgün boyutlarına göre oldukça küçük boyutlara indirmek için çok kullanışlıdır. Elde edilen görüntü büyük bir görüntünün küçük bir örneği gibi görünmez. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

> Bilginize: `sığdır` bağımsız değişkeninin davranışı Imagick 3.0.0 sürümünde değişmiştir. Evvelce 200x150 ebadındaki bir görüntü 400x400 ebadındaki bir alana sığdırılmak istendiğinde bu yapılmazdı. Artık görüntü 400x300 ebadına getirilerek belirtilen alana sığdırılmaktadır. `sığdır` bağımsız değişkeni kullanıldığı takdirde yükseklik ve genişliğin ikisi de verilmelidir.

### Bağımsız Değişkenler

`genişlik`

  Küçültülen görüntünün genişliği.

`yükseklik`

  Küçültülen görüntünün yüksekliği.

`sığdır`

  Görüntünün belirtilen boyutlara sığdırılıp sığdırılmayacağı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | İsteğe bağlı `sığdır` bağımsız değişkeni eklendi.
PECL imagick 2.1.0 | Artık küçültme sırasında enboy oranı hesaba katılıyor. Bunu sağlamak için boyutlardan birini 0 vermek yeterlidir.

### Örnekler

Örnek 1 - Imagick::adaptiveResizeImage()örneği

Görüntünün standart bir boyuta indirilmesi. Görüntüyü özgün görüntüye göre oldukça küçük boyutlara indirmek için çok kullanışlıdır.

    <?php
    header('Content-Type: image/jpeg');

    $image = new Imagick('image.jpg');
    $image->adaptiveResizeImage(1024,768);

    echo $image;
    ?>

### Ayrıca Bakınız

- Imagick::chopImage() - Bir görüntünün bir bölgesini silerek kırpar
- Imagick::cropImage() - Görüntünün bir bölgesini çıkarır
- Imagick::magnifyImage() - En boy oranını koruyarak görüntüyü iki katına büyütür
- Imagick::minifyImage() - En boy oranını koruyarak görüntüyü yarı boyutuna indirir
- Imagick::resizeImage() - Görüntüyü boyutlandırır
- Imagick::scaleImage() - Görüntünün enboy oranını ayarlar
- Imagick::shaveImage() - Görüntünün kenarındaki pikselleri rendeler
- Imagick::thumbnailImage() - Görüntünün boyutlarını değiştirir
- Imagick::trimImage() - Görüntünün kenarlarını siler

# Imagick::adaptiveSharpenImage

(PECL imagick 2, PECL imagick 3)

Imagick::adaptiveSharpenImage — Uyarlamalı olarak görüntüyü keskinleştirir

### Açıklama

public function Imagick::adaptiveSharpenImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Yoğunlukça yakın kenarları yoğunlukça uzak olanlara göre keskinleştirerek uyarlamalı olarak görüntüyü netleştirir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır. Yarıcapın kendiliğinden seçilmesi için 0 belirtin.

`sapma`

  Piksel cinsinden standart sapma.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::adaptiveSharpenImage() örneği

Yarıçap 2 ve sapma 1 piksel olmak üzere görüntünün uyarlamalı olarak keskinleştirilmesi.

    <?php
    try {
        $image = new Imagick('image.png');
        $image->adaptiveSharpenImage(2,1);
    } catch(ImagickException $e) {
        echo 'Hata: ' , $e->getMessage();
        die();
    }
    header('Content-Type: image/png');
    echo $image;
    ?>

### Ayrıca Bakınız

- Imagick::sharpenImage() - Görüntüyü netleştirir

# Imagick::adaptiveThresholdImage

(PECL imagick 2, PECL imagick 3)

Imagick::adaptiveThresholdImage — Bir yoğunluk aralığına göre her piksel için bir eşik seçer

### Açıklama

public function Imagick::adaptiveThresholdImage(int `$genişlik`, int `$yükseklik`, int `$başlangıç`): bool

Komşularının yoğunluk değerlerinin aralığına göre her piksel için bağımsız bir eşik seçer. Görüntünün ayırdedici tepeleri içermeyen genel renk yoğunluğu dağılımına uygun bir eşik seçimini mümkün kılar.

### Bağımsız Değişkenler

`genişlik`

  Komşuluk genişliği.

`yükseklik`

  Komşuluk yüksekliği.

`başlangıç`

  Ortalama başlangıç.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::adaptiveThresholdImage()

    <?php
    function adaptiveThresholdImage($imagePath, $width, $height, $adaptiveOffset)
    {
        $imagick = new \Imagick(realpath($imagePath));
        $adaptiveOffsetQuantum = intval($adaptiveOffset * \Imagick::getQuantum());
        $imagick->adaptiveThresholdImage($width, $height, $adaptiveOffsetQuantum);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::addImage

(PECL imagick 2, PECL imagick 3)

Imagick::addImage — Imagick görüntü listesine yeni bir görüntü ekler

### Açıklama

public function Imagick::addImage(Imagick `$kaynak`): bool

Kaynak Imagick görüntü listesinde geçerli konuma yeni bir görüntü ekler. İşlem sonunda yineleyici bir sonraki görüntü konumuna ilerletirilir.

### Bağımsız Değişkenler

`kaynak`

  Kaynak Imagick nesnesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::addNoiseImage

(PECL imagick 2, PECL imagick 3)

Imagick::addNoiseImage — Görüntüye rasgele gürültü ekler

### Açıklama

public function Imagick::addNoiseImage(int `$gürültü_türü`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntüye rasgele gürültü ekler.

### Bağımsız Değişkenler

`gürültü_türü`

  Gürültü türü sabitlerinden biri.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::addNoiseImage()

    <?php
    function addNoiseImage($noiseType, $imagePath, $channel)
    {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->addNoiseImage($noiseType, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::affineTransformImage

(PECL imagick 2, PECL imagick 3)

Imagick::affineTransformImage — Görüntüyü dönüştürür

### Açıklama

public function Imagick::affineTransformImage(ImagickDraw `$matris`): bool

Homojen koordinatlar matrisine göre görüntüyü dönüştürür.

### Bağımsız Değişkenler

`matris`

  Homojen koordinatlar matrisi (affine matrix).

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::affineTransformImage()

    <?php
    function affineTransformImage($imagePath)
    {
        $imagick = new \Imagick(realpath($imagePath));
        $draw = new \ImagickDraw();

        $angle = deg2rad(40);

        $affineRotate = array(
            "sx" => cos($angle), "sy" => cos($angle),
            "rx" => sin($angle), "ry" => -sin($angle),
            "tx" => 0, "ty" => 0,
        );

        $draw->affine($affineRotate);

        $imagick->affineTransformImage($draw);

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::animateImages

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::animateImages — Bir görüntüyü veya görüntüleri canlandırır

### Açıklama

public function Imagick::animateImages(string `$x_sunucusu`): bool

Bu yöntem görüntüyü bir yerel veya uzak X sunucusu üzerinde canlandırır. Bu yöntem Windows üzerinde kullanılamaz. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`x_sunucusu`

  X sunucusunun adresi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::displayImage() - Bir görüntüyü gösterir

# Imagick::annotateImage

(PECL imagick 2, PECL imagick 3)

Imagick::annotateImage — Görüntüye bir metin çizer

### Açıklama

public function Imagick::annotateImage(
ImagickDraw `$çizim_ayarı`,
float `$x`,
float `$y`,
float `$açı`,
string `$metin`
): bool

Görüntüye bir metin çizer.

### Bağımsız Değişkenler

`çizim_ayarı`

  Metni çizmekte kullanılacak ayarları içeren ImagickDraw nesnesi.

`x`

  Metnin ilk harfinin taban çizgisi başlangıcının X konumu.

`y`

  Metnin ilk harfinin taban çizgisi başlangıcının Y konumu.

`açı`

  Metnin yazılacağı açı.

`metin`

  Çizilecek dizge.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::annotateImage() örneği

Boş bir tuvale bir metin çizelim.

    <?php
    // Nesneleri oluştur
    $image = new Imagick();
    $draw = new ImagickDraw();
    $pixel = new ImagickPixel( 'gray' );

    // Yeni görüntü
    $image->newImage(800, 75, $pixel);

    // Metin siyah olsun
    $draw->setFillColor('black');

    // Yazı tipi özelliklerini belirt
    $draw->setFont('Bookman-DemiItalic');
    $draw->setFontSize( 30 );

    // Metni çiz
    $image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');

    // Resim biçemi
    $image->setImageFormat('png');

    // Resmi çıktıla
    header('Content-Type: image/png');
    echo $image;

    ?>

### Ayrıca Bakınız

- ImagickDraw::annotation() - Görüntünün üzerine bir metin çizer
- ImagickDraw::setFont() - Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler

# Imagick::appendImages

(PECL imagick 2, PECL imagick 3)

Imagick::appendImages — Bir görüntü kümesini ekler

### Açıklama

public function Imagick::appendImages(bool `$yön` = `false`): Imagick

Daha büyük bir görüntünün içine bir görüntü kümesi ekler.

### Bağımsız Değişkenler

`yön`

  Kümenin yönü. Öntanımlı yön (veya `false` belirtilirse) soldan sağadır. `true` belirtilirse görüntüler yukarıdan aşağı yığılır.

### Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::appendImages() örneği

    <?php

    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* kırmızı, yeşil ve mavi tuvaller oluştur */
    $im->newImage(100, 50, "red");
    $im->newImage(100, 50, "green");
    $im->newImage(100, 50, "blue");

    /* Bunları birbirlerine ekle */
    $im->resetIterator();
    $combined = $im->appendImages(true);

    /* Elde edilen resmi çıktıla */
    $combined->setImageFormat("png");
    header("Content-Type: image/png");
    echo $combined;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# Imagick::autoLevelImage

(PECL imagick 3 >= 3.3.0)

Imagick::autoLevelImage — Adjusts the levels of a particular image channel

### Açıklama

public function Imagick::autoLevelImage(int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range.

### Bağımsız Değişkenler

`channel`

  Which channel should the auto-levelling should be done on.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::autoLevelImage()

    <?php
    function autoLevelImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->autoLevelImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::averageImages

(PECL imagick 2, PECL imagick 3)

Imagick::averageImages — Bir görüntü kümesinin ortalamasını alır

### Açıklama

public function Imagick::averageImages(): Imagick
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir görüntü kümesinin ortalamasını alır.

### Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::blackThresholdImage

(PECL imagick 2, PECL imagick 3)

Imagick::blackThresholdImage — Eşiğin altında kalan tüm renkleri siyaha çevirir

### Açıklama

public function Imagick::blackThresholdImage(mixed `$threshold`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Eşiğin altında kalan tüm renkleri siyaha çevirmesi üstündekilere dokunmaması dışında Imagick::thresholdImage() gibidir.

### Bağımsız Değişkenler

`eşik`

  Bu eşiğin altındaki herşey siyah olur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::blackThresholdImage()

    <?php
    function blackThresholdImage($imagePath, $thresholdColor) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->blackthresholdimage($thresholdColor);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::blueShiftImage

(PECL imagick 3 >= 3.3.0)

Imagick::blueShiftImage — Mutes the colors of the image

### Açıklama

public function Imagick::blueShiftImage(float `$factor` = 1.5): bool

Mutes the colors of the image to simulate a scene at nighttime in the moonlight.

### Bağımsız Değişkenler

`factor`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::blueShiftImage()

    <?php
    function blueShiftImage($imagePath, $blueShift) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->blueShiftImage($blueShift);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::blurImage

(PECL imagick 2, PECL imagick 3)

Imagick::blurImage — Görüntüye bir bulanıklık süzgeci ekler

### Açıklama

public function Imagick::blurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = ?): bool

Görüntüye bir bulanıklık süzgeci ekler. İsteğe bağlı üçüncü bağımsız değişkende süzgecin ekleneceği kanal belirtilir.

### Bağımsız Değişkenler

`yarıçap`

  Bulanıklık yarıçapı.

`sapma`

  Standart sapma.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_ALL` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::blurImage() örneği

Görüntüyü bulanıklaştırıp tarayıcıda gösterelim.

    <?php

    header('Content-Type: image/jpeg');

    $image = new Imagick('test.jpg');

    $image->blurImage(5,3);
    echo $image;

    ?>

### Ayrıca Bakınız

- Imagick::adaptiveBlurImage() - Görüntüyü uyarlamalı olarak bulanıklaştırır
- Imagick::motionBlurImage() - Hareket bulanıklığını taklit eder
- Imagick::radialBlurImage() - Görüntüye dairesel bulanıklık uygular

# Imagick::borderImage

(PECL imagick 2, PECL imagick 3)

Imagick::borderImage — Görüntüye bir çerçeve çizer

### Açıklama

public function Imagick::borderImage(mixed `$çerçeve_rengi`, int `$genişlik`, int `$yükseklik`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntüye `çerçeve_rengi` ile belirtilen renkte bir çerçeve çizer.

### Bağımsız Değişkenler

`çerçeve_rengi`

  Çerçeve rengini içeren dizge veya ImagickPixel nesnesi.

`genişlik`

  Çerçeve genişliği.

`yükseklik`

  Çerçeve yüksekliği.

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::borderImage()

    <?php
    function borderImage($imagePath, $color, $width, $height) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->borderImage($color, $width, $height);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::brightnessContrastImage

(PECL imagick 3 >= 3.3.0)

Imagick::brightnessContrastImage — Change the brightness and/or contrast of an image

### Açıklama

public function Imagick::brightnessContrastImage(float `$brightness`, float `$contrast`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomial function to apply to the image.

### Bağımsız Değişkenler

`brightness`

`contrast`

`channel`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::brightnessContrastImage()

    <?php
    function brightnessContrastImage($imagePath, $brightness, $contrast, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->brightnessContrastImage($brightness, $contrast, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::charcoalImage

(PECL imagick 2, PECL imagick 3)

Imagick::charcoalImage — Kara kalem çizimi taklit eder

### Açıklama

public function Imagick::charcoalImage(float `$yarıçap`, float `$sapma`): bool

Kara kalem çizimi taklit eder.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır.

`sapma`

  Piksel cinsinden standart sapma.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::charcoalImage()

    <?php
    function charcoalImage($imagePath, $radius, $sigma) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->charcoalImage($radius, $sigma);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::chopImage

(PECL imagick 2, PECL imagick 3)

Imagick::chopImage — Bir görüntünün bir bölgesini silerek kırpar

### Açıklama

public function Imagick::chopImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Bir görüntünün bir bölgesini silerek kırpar.

### Bağımsız Değişkenler

`genişlik`

  Görüntünün kırpıldıktan sonraki genişliği.

`yükseklik`

  Görüntünün kırpıldıktan sonraki yüksekliği.

`x`

  Görüntünün kırpıldıktan sonraki genişlik başlangıcı.

`y`

  Görüntünün kırpıldıktan sonraki yükseklik başlangıcı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::chopImage() örneği

    <?php
    /* İki nesne oluşturalım */
    $image = new Imagick();
    $pixel = new ImagickPixel( 'gray' );

    /* Yeni resim */
    $image->newImage(400, 200, $pixel);

    /* Kırpık resim */
    $image->chopImage(200, 200, 0, 0);

    /* Resim biçemi */
    $image->setImageFormat('png');

    /* Resmi çıktılayalım */
    header('Content-Type: image/png');
    echo $image;

    ?>

### Ayrıca Bakınız

- Imagick::cropImage() - Görüntünün bir bölgesini çıkarır

# Imagick::clampImage

(PECL imagick 3 >= 3.3.0)

Imagick::clampImage — Restricts the color range from 0 to the quantum depth.

### Açıklama

public function Imagick::clampImage(int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Restricts the color range from 0 to the quantum depth.

### Bağımsız Değişkenler

`channel`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# Imagick::clear

(PECL imagick 2, PECL imagick 3)

Imagick::clear — Imagick nesnesi ile ilgili tüm özkaynakları temizler

### Açıklama

public function Imagick::clear(): bool

Imagick nesnesi ile ilgili tüm özkaynakları temizler.

### Dönen Değerler

Başarı durumunda `true` döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

# Imagick::clipImage

(PECL imagick 2, PECL imagick 3)

Imagick::clipImage — 8BIM profilindeki ilk yol boyunca görüntüyü kırpar

### Açıklama

function Imagick::clipImage(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Varsa, 8BIM profilindeki ilk yol boyunca görüntüyü kırpar.

### Dönen Değerler

Başarı durumunda `true` döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::clipImagePath

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::clipImagePath — Clips along the named paths from the 8BIM profile, if present

### Açıklama

public function Imagick::clipImagePath(string `$pathname`, string `$inside`): void

Clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path. Id may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`pathname`

`inside`

### Dönen Değerler

# Imagick::clipPathImage

(PECL imagick 2, PECL imagick 3)

Imagick::clipPathImage — 8BIM profili boyunca isimli yolları kırpar

### Açıklama

public function Imagick::clipPathImage(string `$yol_adı`, bool `$içinde`): bool

Varsa, 8BIM profili boyunca isimli yolları kırpar. Sonraki işlemler yolun içinde etkili olur. Bir # ile öncelenmişse numaralı bir yol üzerinde işlem yapılır; ilk yol için #1 gibi.

### Bağımsız Değişkenler

`yol_adı`

  Yolun ismi.

`içinde`

  `true` ise sonraki işlemler yolun içinde etkili olur. `false` ise sonraki işlemler yolun dışında etkili olur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::clone

(PECL imagick 2, PECL imagick 3)

Imagick::clone — Imagick nesnesinin tam bir kopyasını yapar

### Açıklama

public function Imagick::clone(): Imagick

Imagick nesnesinin tam bir kopyasını yapar.

Uyarı

clone sözcüğünün kullanımını teşvik için imagick 3.1.0 itibariyle bu işlevin kullanımı ÖNERİLMİYOR. keyword.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner. Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 3.1.0 | clone sözcüğünün kullanımını teşvik için bu yönetmin kullanımı artık önerilmiyor.

### Örnekler

Örnek 1 - Farklı imagick sürümlerinde Imagick nesnesinin kopyalanması

    <?php
    // imagick 2.x ve 3.0 sürümlerinde Imagick nesnesinin kopyalanması:
    $newImage = $image->clone();

    // 3.1.0 ve sonrasında Imagick nesnesinin kopyalanması:
    $newImage = clone $image;
    ?>

# Imagick::clutImage

(PECL imagick 2, PECL imagick 3)

Imagick::clutImage — Görüntünün renklerini değiştirir

### Açıklama

public function Imagick::clutImage(Imagick `$renk_tablosu`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntünün renklerini belirtilen renk tablosuna göre değiştirir. İsteğe bağlı ikinci bağımsız değişkende renklerin değiştirileceği kanal belirtilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`renk_tablosu`

  Renk tablosunu içeren Imagick nesnesi.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. Belirtilmezse sadece öntanımlı kanallar değiştirilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::clutImage() örneği

Renk tablosuna göre görüntünün renklerini değiştirelim.

    <?php
    $image = new Imagick('test.jpg');
    $clut = new Imagick();
    $clut->newImage(1, 1, new ImagickPixel('black'));
    $image->clutImage($clut);
    $image->writeImage('test_out.jpg');
    ?>

### Ayrıca Bakınız

- Imagick::adaptiveBlurImage() - Görüntüyü uyarlamalı olarak bulanıklaştırır
- Imagick::motionBlurImage() - Hareket bulanıklığını taklit eder
- Imagick::radialBlurImage() - Görüntüye dairesel bulanıklık uygular

# Imagick::coalesceImages

(PECL imagick 2, PECL imagick 3)

Imagick::coalesceImages — Bir görüntü kümesini tek bir görüntü olarak birleştirir

### Açıklama

public function Imagick::coalesceImages(): Imagick

Bir görüntü kümesini sayfa başlangıçlarını ve sıralama yöntemlerini hesaba katarak birleştirir. GIF, MIFF ve MNG canlandırma dizileri genellikle bir görüntü artalanı ile başlar ve sonraki her görüntüde boyut ve başlangıç değişiklik gösterir. Görüntü dizisindeki her görüntünün kendi boyutuyla sonraki görüntüyle birleştirilerek yer aldığı yeni bir Imagick nesnesi döner.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::colorFloodfillImage

(PECL imagick 2, PECL imagick 3)

Imagick::colorFloodfillImage — Hedefle eşleşen her pikselin rengini değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::colorFloodfillImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`
): bool

Hedefle eşleşen her pikselin ve yanındakinin rengini değiştirir.

### Bağımsız Değişkenler

`dolgu`

  Renk ifade eden bir dizge veya bir ImagickPixel nesnesi.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`çerçeve_rengi`

  Çerçeve rengini ifade eden bir dizge veya bir ImagickPixel nesnesi.

`x`

  İşlemin başlatılacağı X konumu.

`y`

  İşlemin başlatılacağı Y konumu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
>PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::colorizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::colorizeImage — Görüntünün her pikseline dolgu rengini karıştırır

### Açıklama

public function Imagick::colorizeImage(mixed `$renk`, bool `$matlık` = `false`): bool

Görüntünün her pikseline dolgu rengini karıştırır.

### Bağımsız Değişkenler

`renk`

  Renklendirme amacı ile kullanılacak renk dizgesi veya ImagickPixel nesnesi.

`matlık`

  Matlık değerini içeren bir gerçek sayı veya ImagickPixel nesnesi. Tam matlık için 1.0; tam şeffaflık için 0.0 kullanın.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::colorizeImage()

    <?php
    function colorizeImage($imagePath, $color, $opacity) {
        $imagick = new \Imagick(realpath($imagePath));
        $opacity = $opacity / 255.0;
        $opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
        $imagick->colorizeImage($color, $opacityColor);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::colorMatrixImage

(PECL imagick 3 >= 3.3.0)

Imagick::colorMatrixImage — Apply color transformation to an image

### Açıklama

public function Imagick::colorMatrixImage(array `$color_matrix`): bool

Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets). The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255)

### Bağımsız Değişkenler

`color_matrix`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::colorMatrixImage()

    <?php
    function colorMatrixImage($imagePath, $colorMatrix) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageOpacity(1);

        //A color matrix should look like:
        //    $colorMatrix = [
        //        1.5, 0.0, 0.0, 0.0, 0.0, -0.157,
        //        0.0, 1.0, 0.5, 0.0, 0.0, -0.157,
        //        0.0, 0.0, 1.5, 0.0, 0.0, -0.157,
        //        0.0, 0.0, 0.0, 1.0, 0.0,  0.0,
        //        0.0, 0.0, 0.0, 0.0, 1.0,  0.0,
        //        0.0, 0.0, 0.0, 0.0, 0.0,  1.0
        //    ];

        $background = new \Imagick();
        $background->newPseudoImage($imagick->getImageWidth(), $imagick->getImageHeight(),  "pattern:checkerboard");

        $background->setImageFormat('png');

        $imagick->setImageFormat('png');
        $imagick->colorMatrixImage($colorMatrix);

        $background->compositeImage($imagick, \Imagick::COMPOSITE_ATOP, 0, 0);

        header("Content-Type: image/png");
        echo $background->getImageBlob();
    }

    ?>

# Imagick::combineImages

(PECL imagick 2, PECL imagick 3)

Imagick::combineImages — Bir veya daha fazla görüntüyü tek bir resim halinde birleştirir

### Açıklama

public function Imagick::combineImages(int `$kanal`): Imagick

Bir veya daha fazla görüntüyü tek bir resim halinde birleştirir. Her görüntünün gri tonlama değerleri birleşik görüntünün kanal sırasına göre atanır. Normalde sıralama şöyledir: 1 => Red, 2 => Green, 3 => Blue, vb.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::commentImage

(PECL imagick 2, PECL imagick 3)

Imagick::commentImage — Görüntüye bir açıklama ekler

### Açıklama

public function Imagick::commentImage(string `$açıklama`): bool

Görüntüye bir açıklama ekler.

### Bağımsız Değişkenler

`açıklama`

  Eklenecek açıklama dizgesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::commentImage() kullanımı

Görüntüye açıklama ekleyip açıklamayı okumak:

    <?php

    /* Yeni bir Imagick nesnesi oluşturalım */
    $im = new imagick();

    /* Boş bir görüntü oluşturalım */
    $im->newImage(100, 100, new ImagickPixel("red"));

    /* Görüntüye bir açıklama ekleyelim */
    $im->commentImage("Hello World!");

    /* Açıklamayı gösterelim */
    echo $im->getImageProperty("comment");

    ?>

# Imagick::compareImageChannels

(PECL imagick 2, PECL imagick 3)

Imagick::compareImageChannels — Bir veya daha fazla görüntünün farkını döndürür

### Açıklama

public function Imagick::compareImageChannels(Imagick `$görüntü`, int `$kanal`, int `$metrik`): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir veya daha fazla görüntüyü karşılaştırıp farkını döndürür.

### Bağımsız Değişkenler

`görüntü`

  Karşılaştırılacak görüntüyü içeren Imagick nesnesi.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

`metrik`

  Metrik türü sabitlerinden biri.

### Dönen Değerler

Yeniden oluşturulan görüntüyü ve görüntüler arasındaki farkı içeren bir dizi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::compareImageLayers

(PECL imagick 2, PECL imagick 3)

Imagick::compareImageLayers — Görüntü katmanlarını karşılaştırıp en iyilenmiş görüntüyü döndürür

### Açıklama

public function Imagick::compareImageLayers(int `$yöntem`): Imagick

Her görüntüyü bir sonraki ile karşılaştırıp keşfettiği farklı pikselleri sarmalayan en büyük boyuttaki görüntüyü döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`yöntem`

  Katman yöntemi sabitlerinden biri.

### Dönen Değerler

Yeni bir Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::compareImageLayers() örneği

Görüntü katmanlarını karşılaştırır

    <?php
    /* Yeni bir imagick nesnesi oluşturalım */
    $im = new Imagick("test.gif");

    /* Görüntü katmanlarını en iyileyelim */
    $result = $im->compareImageLayers(imagick::LAYERMETHOD_COALESCE);

    /* $result ile biraz çalışalım */
    ?>

### Ayrıca Bakınız

- Imagick::optimizeImageLayers() - En iyilemek amacıyla görüntülerin tekrarlanan bölümlerini siler
- Imagick::writeImages() - Bir görüntüyü veya görüntü kümesini dosyaya yazar
- Imagick::writeImage() - Görüntüyü belirtilen dosyaya yazar

# Imagick::compareImages

(PECL imagick 2, PECL imagick 3)

Imagick::compareImages — Görüntüyü yeniden oluşturulan görüntü ile karşılaştırır

### Açıklama

public function Imagick::compareImages(Imagick `$görüntü`, int `$metrik`): array

Yeniden oluşturulan görüntüyü ve görüntüler arasındaki farkı içeren bir dizi döner.

### Bağımsız Değişkenler

`görüntü`

  Karşılaştırılacak görüntü.

`metrik`

  Geçerli metrik sabitlerinden biri.

### Dönen Değerler

Yeniden oluşturulan görüntüyü ve görüntüler arasındaki farkı içeren bir dizi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::compareImages() örneği

Görüntüleri karşılaştırır ve yeniden oluşturulan görüntüyü gösterir.

    <?php

    $image1 = new imagick("image1.png");
    $image2 = new imagick("image2.png");

    $result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
    $result[0]->setImageFormat("png");

    header("Content-Type: image/png");
    echo $result[0];

    ?>

# Imagick::compositeImage

(PECL imagick 2, PECL imagick 3)

Imagick::compositeImage — Bir görüntüyü diğeriyle birleştirir

### Açıklama

public function Imagick::compositeImage(
Imagick `$birleşik_nesne`,
int `$işleç`,
int `$x`,
int `$y`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Belirtilen konumda görüntüyü bir başka resimle birleştirir. setImageArtifact'a, birleştirme algoritması için gereken ek bağımsız değişkenlerden 'compose: args' ilk bağımsız değişken olarak, veriler ikinci bağımsız değişken olarak aktarılmalıdır.

### Bağımsız Değişkenler

`birleşik_nesne`

  Birleşik görüntünün saklanacağı Imagick nesnesi.

`işleç`

  Birleştirme işleci sabitlerinden biri.

`x`

  Birleşik görüntünün genişlik başlangıcı.

`y`

  Birleşik görüntünün yükseklik başlangıcı.

`kanal`

  Normalde kanal türü sabitlerinden biri belirtilebilir, ancak bitsel işleçler kullanılarak birden fazla kanal da belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::compositeImage() kullanımı:

'mathematics' birleştirme yöntemi ile iki görüntüyü birleştirmek

    <?php

    // convert src1.png src2.png -compose mathematics -define
    // komutunu çalıştırmaya eşdeğerdir
    compose:args="1,0,-0.5,0.5" -composite output.png

    $src1 = new \Imagick("./src1.png");
    $src2 = new \Imagick("./src2.png");

    $src1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    $src1->setImageArtifact('compose:args', "1,0,-0.5,0.5");
    $src1->compositeImage($src2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);
    $src1->writeImage("./output.png");

    ?>

### Ayrıca Bakınız

- Imagick::setImageArtifact() - Set image artifact

# Imagick::__construct

(PECL imagick 2, PECL imagick 3)

Imagick::__construct — Imagick kurucusu

### Açıklama

public function Imagick::__construct(mixed `$dosyalar` = ?)

Belirtilen görüntü veya görüntü kümesi için bir Imagick örneği oluşturur.

### Bağımsız Değişkenler

`dosyalar`

  Görüntünün yükleneceği yol dizgesi veya yolları içeren dizi. Yollar dosya isimleri için joker karakterler içerebilecği gibi URL'ler de belirtilebilir.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastImage — Görüntünün zıtlığını değiştirir

### Açıklama

public function Imagick::contrastImage(bool `$zıtlık`): bool

Görüntünün en koyu ve en açık pikselleri arasındaki yoğunluk farklarını ayarlar. `netlik` bağımsız değişkeninde sıfırdan farklı bir değer belirtilmesi zıtlığı arttırırken, tersi azaltır.

### Bağımsız Değişkenler

`zıklık`

  Zıtlık değeri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::contrastImage() örneği

    <?php
    function contrastImage($imagePath, $contrastType) {
        $imagick = new \Imagick(realpath($imagePath));
        if ($contrastType != 2) {
            $imagick->contrastImage($contrastType);
        }

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::contrastStretchImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastStretchImage — Renkli bir görüntünün zıtlığını ayarlar

### Açıklama

public function Imagick::contrastStretchImage(float `$siyah_nokta`, float `$beyaz_nokta`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Kullanılabilir renk aralığının tamamına yaymak için pikselleri ayarlayarak renkli görüntünün zıtlığını arttırır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`siyah_nokta`

  Görüntünün en koyu noktası.

`beyaz_nokta`

  Görüntünün en açık noktası.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::convolveImage

(PECL imagick 2, PECL imagick 3)

Imagick::convolveImage — Görüntüye bir evrişim çekirdeği uygular

### Açıklama

public function Imagick::convolveImage(array `$çekirdek`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntüye, özel bir evrişim çekirdeği uygular.

### Bağımsız Değişkenler

`çekirdek`

  Evrişim çekirdeği.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::convolveImage() örneği

    <?php
    function convolveImage($imagePath, $bias, $kernelMatrix) {
        $imagick = new \Imagick(realpath($imagePath));
        //$edgeFindingKernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1,];
        $imagick->setImageBias($bias * \Imagick::getQuantum());
        $imagick->convolveImage($kernelMatrix);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::count

(PECL imagick 3 >= 3.3.0)

Imagick::count — Get the number of images

### Açıklama

public function Imagick::count(int `$mode` = 0): int

Returns the number of images.

### Bağımsız Değişkenler

`mode`

  An unused argument. Currently there is a non-particularly well defined feature in PHP where calling count() on a countable object might (or might not) require this method to accept a parameter. This parameter is here to be conformant with the interface of countable, even though the param is not used.

### Dönen Değerler

Returns the number of images.

# Imagick::cropImage

(PECL imagick 2, PECL imagick 3)

Imagick::cropImage — Görüntünün bir bölgesini çıkarır

### Açıklama

public function Imagick::cropImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Görüntünün bir bölgesini çıkarır.

### Bağımsız Değişkenler

`genişlik`

  Kırpma genişliği.

`yükseklik`

  Kırpma yüksekliği.

`x`

  Kırpılacak bölgenin sol üst köşesinin X koordinatı.

`y`

  Kırpılacak bölgenin sol üst köşesinin Y koordinatı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::cropThumbnailImage

(PECL imagick 2, PECL imagick 3)

Imagick::cropThumbnailImage — Görüntünün kırpık bir örneğini oluşturur

### Açıklama

public function Imagick::cropThumbnailImage(int `$genişlik`, int `$yükseklik`, bool `$eski` = `false`): bool

Görüntüyü enboy oranının koruyarak küçülttükten/büyüttükten sonra merkezi bölgenin çevresini kırparak istenen boyuta getirir.

### Bağımsız Değişkenler

`genişlik`

  Kırpık örneğin genişliği.

`yükseklik`

  Kırpık örneğin yüksekliği.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::current

(PECL imagick 2, PECL imagick 3)

Imagick::current — Geçerli Imagick nesnesini döndürür

### Açıklama

public function Imagick::current(): Imagick

Geçerli Imagick nesnesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda nesnenin kendisi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::cycleColormapImage

(PECL imagick 2, PECL imagick 3)

Imagick::cycleColormapImage — Bir görüntünün renk eşleminin bir kısmını değiştirir

### Açıklama

public function Imagick::cycleColormapImage(int `$miktar`): bool

Bir görüntünün renk eşleminden belirtilen sayıda rengi değiştirir. Bu işlemi defalarca tekrarlamak suretiyle rengarenk bir görüntü üretebilirsiniz.

### Bağımsız Değişkenler

`miktar`

  Renk eşleminde değiştirilecek renk sayısı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::decipherImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::decipherImage — Şifreli bir görüntünün şifresini çözer

### Açıklama

public function Imagick::decipherImage(string `$parola`): bool

Evvelce Imagick::encipherImage() ile şifrelenmiş bir görüntünün şifresini çözer. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`parola`

  Parola.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::encipherImage() - Bir görüntüyü şifreler

# Imagick::deconstructImages

(PECL imagick 2, PECL imagick 3)

Imagick::deconstructImages — Görüntüler arasındaki farklı piksellerin kapladığı en büyük alanı döndürür

### Açıklama

public function Imagick::deconstructImages(): Imagick

Her görüntüyü bir sonraki ile karşılaştırıp keşfettiği farklı pikselleri sarmalayan en büyük boyutu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda yeni bir Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::deleteImageArtifact

(PECL imagick 3)

Imagick::deleteImageArtifact — Delete image artifact

### Açıklama

public function Imagick::deleteImageArtifact(string `$artifact`): bool

Deletes an artifact associated with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.5.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`artifact`

  The name of the artifact to delete

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Ayrıca Bakınız

- Imagick::setImageArtifact() - Set image artifact
- Imagick::getImageArtifact() - Get image artifact

# Imagick::deleteImageProperty

(PECL imagick 3 >= 3.3.0)

Imagick::deleteImageProperty — Deletes an image property

### Açıklama

public function Imagick::deleteImageProperty(string `$name`): bool

Deletes an image property.

### Bağımsız Değişkenler

`name`

  The name of the property to delete.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::deskewImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3 >= 3.3.0)

Imagick::deskewImage — Removes skew from the image

### Açıklama

public function Imagick::deskewImage(float `$threshold`): bool

This method can be used to remove skew from for example scanned images where the paper was not properly placed on the scanning surface. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.5 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`threshold`

  Deskew threshold

### Dönen Değerler

### Örnekler

Örnek 1 Imagick::deskewImage()

    <?php
    function deskewImage($threshold) {
        $imagick = new \Imagick(realpath("images/NYTimes-Page1-11-11-1918.jpg"));
        $deskewImagick = clone $imagick;

        //This is the only thing required for deskewing.
        $deskewImagick->deskewImage($threshold);

        //The rest of this example is to make the result obvious - because
        //otherwise the result is not obvious.
        $trim = 9;

        $deskewImagick->cropImage($deskewImagick->getImageWidth() - $trim, $deskewImagick->getImageHeight(), $trim, 0);
        $imagick->cropImage($imagick->getImageWidth() - $trim, $imagick->getImageHeight(), $trim, 0);
        $deskewImagick->resizeimage($deskewImagick->getImageWidth() / 2, $deskewImagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
        $imagick->resizeimage($imagick->getImageWidth() / 2, $imagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
        $newCanvas = new \Imagick();
        $newCanvas->newimage($imagick->getImageWidth() + $deskewImagick->getImageWidth() + 20, $imagick->getImageHeight(), 'red', 'jpg');
        $newCanvas->compositeimage($imagick, \Imagick::COMPOSITE_COPY, 5, 0);
        $newCanvas->compositeimage($deskewImagick, \Imagick::COMPOSITE_COPY, $imagick->getImageWidth() + 10, 0);

        header("Content-Type: image/jpg");
        echo $newCanvas->getImageBlob();
    }

    ?>

# Imagick::despeckleImage

(PECL imagick 2, PECL imagick 3)

Imagick::despeckleImage — Görüntünün benekli görünümünü düzeltir

### Açıklama

public function Imagick::despeckleImage(): bool

Özgün görüntünün kenarlarını koruyarak benekli görünümünü düzeltir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::despeckleImage() örneği

    <?php
    function despeckleImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->despeckleImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::destroy

(PECL imagick 2, PECL imagick 3)

Imagick::destroy — Imagick nesnesini siler

### Açıklama

public function Imagick::destroy(): bool

Bu yöntem Imagick nesnesinin yıkıcısı olup nesneyle ilişkili tüm özkaynakları serbest bırakıp nesneyi siler. Eşdeğeri olan Imagick::clear yöntemi varken bu yöntemin kullanımı önerilmiyor.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::displayImage

(PECL imagick 2, PECL imagick 3)

Imagick::displayImage — Bir görüntüyü gösterir

### Açıklama

public function Imagick::displayImage(string `$sunucu`): bool

Görüntüyü belirtilen X pencere sunucusunda gösterir

### Bağımsız Değişkenler

`sunucu`

  X sunucusunun ismi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::displayImages

(PECL imagick 2, PECL imagick 3)

Imagick::displayImages — Bir görüntü dizisini gösterir

### Açıklama

public function Imagick::displayImages(string `$sunucu`): bool

Görüntüleri belirtilen X pencere sunucusunda gösterir.

### Bağımsız Değişkenler

`sunucu`

  X sunucusunun ismi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::distortImage

(PECL imagick 2 >= 2.0.1, PECL imagick 3)

Imagick::distortImage — Çeşitli yöntemlerle görüntüyü bozunuma uğratır

### Açıklama

public function Imagick::distortImage(int `$yöntem`, array `$bağımsız_değişkenler`, bool `$sığdır`): bool

`sığdır` bağımsız değişkeninde `true` belirtilmedikçe eski ve yeni görüntüler arasında boyut farkı olmaksızın çeşitli yöntemlerle görüntüyü bozunuma uğratır.

`sığdır` bağımsız değişkeninde `true` belirtildiği takdirde bozunuma uğratılan görüntü başlangıcı, genişlik ve yüksekliği ayarlanarak yeni görüntüye sığdırılmaya çalışılır. Ayrıca, çoğu durumda, kaynak görüntünün sanal başlangıcı eşleme sırasında hesaba katılır.

Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`yöntem`

  Bozunum yöntemi sabitlerinden biri.

`bağımsız_değişkenler`

  Bozunum yönteminin bağımsız değişkenleri.

`sığdır`

  `true` belirtildiği takdirde kaynağın bozunmuş hali yeni görüntüye sığdırmaya çalışılır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::distortImage() örneği

Görüntüyü bozunuma uğratıp tarayıcıda görüntüler.

    <?php
    /* Yeni nesneyi oluşturalım */
    $im = new Imagick();

    /* Yeni checkerboard örüntüsünü oluşturalım */
    $im->newPseudoImage(100, 100, "pattern:checkerboard");

    /* Görüntü biçemi PNG olsun */
    $im->setImageFormat('png');

    /* Yeni görünür alanları şeffaf yapalım */
    $im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

    /* Matlığı etkin kılalım */
    $im->setImageMatte(true);

    /* Bozunuma uğratılacak noktalar */
    $controlPoints = array( 10, 10,
                            10, 5,

                            10, $im->getImageHeight() - 20,
                            10, $im->getImageHeight() - 5,

                            $im->getImageWidth() - 10, 10,
                            $im->getImageWidth() - 10, 20,

                            $im->getImageWidth() - 10, $im->getImageHeight() - 10,
                            $im->getImageWidth() - 10, $im->getImageHeight() - 30);

    /* Görüntüyü bozunuma uğratalım */
    $im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);

    /* Görüntüyü çıktılayalım */
    header("Content-Type: image/png");
    echo $im;
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

### Ayrıca Bakınız

- Imagick::blurImage() - Görüntüye bir bulanıklık süzgeci ekler
- Imagick::motionBlurImage() - Hareket bulanıklığını taklit eder
- Imagick::radialBlurImage() - Görüntüye dairesel bulanıklık uygular

# Imagick::drawImage

(PECL imagick 2, PECL imagick 3)

Imagick::drawImage — Belirtilen ImagickDraw nesnesini görüntüye uygular

### Açıklama

public function Imagick::drawImage(ImagickDraw `$işlem`): bool

Belirtilen ImagickDraw nesnesini görüntüye uygular.

### Bağımsız Değişkenler

`işlem`

  Görüntüye uygulanacak çizim işlemi.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::edgeImage

(PECL imagick 2, PECL imagick 3)

Imagick::edgeImage — Görüntünün kenarlarını yuvarlatır

### Açıklama

public function Imagick::edgeImage(float `$yarıçap`): bool

Belirtilen yarıçapa bir evrişim süzgeci uygulamak suretiyle görüntünün kenarlarını yuvarlatır. `yarıçap` olarak 0 verirseniz Imagick::edgeImage() size uygun bir yarıçap seçecektir.

### Bağımsız Değişkenler

`yarıçap`

  Yuvarlatma yarıçapı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::edgeImage() kullanımı

    <?php
    function edgeImage($imagePath, $radius) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->edgeImage($radius);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::embossImage

(PECL imagick 2, PECL imagick 3)

Imagick::embossImage — Üç boyutluluk etkisi vermek için görüntüyü gri tonlamaya dönüştürür

### Açıklama

public function Imagick::embossImage(float `$yarıçap`, float `$sapma`): bool

Üç boyutluluk etkisi vermek için görüntüyü gri tonlamaya dönüştürür. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile resim evriştirilir. Makul sonuçlar elde etmek için `yarıçap` standart `sapma`dan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::embossImage() size uygun bir yarıçap seçecektir.

### Bağımsız Değişkenler

`yarıçap`

  Etkinin uygulanacağı yarıçap.

`sapma`

  Piksel cinsinden standart sapma.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::embossImage() kullanımı

    <?php
    function embossImage($imagePath, $radius, $sigma) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->embossImage($radius, $sigma);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::encipherImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::encipherImage — Bir görüntüyü şifreler

### Açıklama

public function Imagick::encipherImage(string `$parola`): bool

Düz pikselleri şifreli piksellere dönüştürür. Görüntünün şifresi Imagick::decipherImage() ile çözülene kadar okunabilir olmayacaktır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`parola`

  Parola.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::decipherImage() - Şifreli bir görüntünün şifresini çözer

# Imagick::enhanceImage

(PECL imagick 2, PECL imagick 3)

Imagick::enhanceImage — Görüntü kalitesini arttırır

### Açıklama

public function Imagick::enhanceImage(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntünün kalitesini arttırmak için bir sayısal süzeç uygular.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::enhanceImage() kullanımı

    <?php
    function enhanceImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->enhanceImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::equalizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::equalizeImage — Görüntünün renk dağılımını dengeler

### Açıklama

public function Imagick::equalizeImage(): bool

Görüntünün renk dağılımını dengeler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::equalizeImage()

    <?php
    function equalizeImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->equalizeImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::evaluateImage

(PECL imagick 2, PECL imagick 3)

Imagick::evaluateImage — Görüntüye bir ifade uygular

### Açıklama

public function Imagick::evaluateImage(int `$işleç`, float `$terim`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntüye aritmetik, mantıksal ya da ilişkisel bir ifade uygular. Görüntüyü aydınlık veya karanlık yapmak için, görüntünün zıtlığını azaltıp arttırmak için veya görüntünün negatifini elde etmek için bu yöntemi kullanabilirsiniz.

### Bağımsız Değişkenler

`işleç`

  Değerlendirme işleci.

`terim`

  İşlecin değeri.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::evaluateImage() kullanımı

Bir görüntünün matlığını azaltmak için evaluateImage kullanımı

    <?php
    // Görüntü için yeni bir nesne oluştur
    $im = new Imagick('example-alpha.png');

    // Alfayı %50 düşür
    $im->evaluateImage(Imagick::EVALUATE_DIVIDE, 2, Imagick::CHANNEL_ALPHA);

    // Görüntüyü çıktıla
    header("Content-Type: image/png");
    echo $im;
    ?>

# Imagick::exportImagePixels

(PECL imagick 2 >=2.3.0, PECL imagick 3)

Imagick::exportImagePixels — Exports raw image pixels

### Açıklama

public function Imagick::exportImagePixels(
int `$x`,
int `$y`,
int `$width`,
int `$height`,
string `$map`,
int `$STORAGE`
): array

Exports image pixels into an array. The map defines the ordering of the exported pixels. The size of the returned array is `width * height * strlen(map)`. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`x`

  X-coordinate of the exported area

`y`

  Y-coordinate of the exported area

`width`

  Width of the exported aread

`height`

  Height of the exported area

`map`

  Ordering of the exported pixels. For example `"RGB"`. Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P.

`STORAGE`

  Refer to this list of pixel type constants

### Dönen Değerler

Returns an array containing the pixels values.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Using Imagick::exportImagePixels()

Export image pixels into an array

    <?php

    /* Create new object */
    $im = new Imagick();

    /* Create new image */
    $im->newPseudoImage(0, 0, "magick:rose");

    /* Export the image pixels */
    $pixels = $im->exportImagePixels(10, 10, 2, 2, "RGB", Imagick::PIXEL_CHAR);

    /* Output */
    var_dump($pixels);
    ?>

Yukarıdaki örneğin çıktısı:

    array(12) {
      [0]=>
      int(72)
      [1]=>
      int(64)
      [2]=>
      int(57)
      [3]=>
      int(69)
      [4]=>
      int(59)
      [5]=>
      int(43)
      [6]=>
      int(124)
      [7]=>
      int(120)
      [8]=>
      int(-96)
      [9]=>
      int(91)
      [10]=>
      int(84)
      [11]=>
      int(111)
    }

# Imagick::extentImage

(PECL imagick 2, PECL imagick 3)

Imagick::extentImage — Görüntü boyutlarını belirler

### Açıklama

public function Imagick::extentImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Görüntü boyutlarını atamak için geriye uyumlu bir yöntemdir. Yöntem görüntünün boyutlarını belirlemekten başka görüntünün tuval üzerindeki başlangıç koordinatlarını da belirler. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.1 veya sonraki bir sürümü kuruluysa kullanılabilir.

Dikkat

ImageMagick 6.5.7-8'den (1623) önce, sola kayarken $x pozitif, sağa kaydırırken negatif, bir resmi yukarı kaydırırken $y pozitif ve aşağı kaydırırken negatifti.

ImageMagick 6.3.7 (1591) ve ImageMagick 6.5.7-8 (1623) arasında bir yerde, $x ve $y eksenleri ters çevrildi, böylece sola kayarken $x negatif, sağa kayarken pozitif, ve bir görüntüyü yukarı kaydırırken $y negatif ve bir görüntüyü aşağı kaydırırken pozitifti.

ImageMagick 6.5.7-8 (1623) ile ImageMagick 6.6.9-7 (1641) arasında bir yerde, $x ve $y eksenleri ImageMagick 6.5.7-8 (1623) öncesi işlevselliğine geri döndürüldü.

### Bağımsız Değişkenler

`genişlik`

  Görüntünün yeni genişliği.

`yükseklik`

  Görüntünün yeni yüksekliği.

`x`

  Görüntünün yeni X konumu.

`y`

  Görüntünün yeni Y konumu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::resizeImage() - Görüntüyü boyutlandırır
- Imagick::thumbnailImage() - Görüntünün boyutlarını değiştirir
- Imagick::cropImage() - Görüntünün bir bölgesini çıkarır

# Imagick::filter

(PECL imagick 3 >= 3.3.0)

Imagick::filter — Applies a custom convolution kernel to the image

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::filter(ImagickKernel `$ImagickKernel`, int `$channel` = Imagick::CHANNEL_UNDEFINED): bool

Applies a custom convolution kernel to the image.

### Bağımsız Değişkenler

`ImagickKernel`

  An instance of ImagickKernel that represents either a single kernel or a linked series of kernels.

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::filter()

    <?php
    function filter($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $matrix = [
            [-1, 0, -1],
            [0,  5,  0],
            [-1, 0, -1],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix);
        $strength = 0.5;
        $kernel->scale($strength, \Imagick::NORMALIZE_KERNEL_VALUE);
        $kernel->addUnityKernel(1 - $strength);

        $imagick->filter($kernel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::flattenImages

(PECL imagick 2, PECL imagick 3)

Imagick::flattenImages — Bir görüntü dizisini tek bir görüntü halinde üstüste bindirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::flattenImages(): Imagick

Bir görüntü dizisini tek bir görüntü halinde üstüste bindirir. Photoshop katmanlarını tek bir görüntü elde edecek şekilde birleştirmek için faydalıdır.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::flipImage

(PECL imagick 2, PECL imagick 3)

Imagick::flipImage — Görüntünün düşeydeki yansımasını oluşturur

### Açıklama

public function Imagick::flipImage(): bool

Pikselleri X eksenine göre yansıtarak görüntünün düşeydeki yansımasını oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::flipImage() kullanımı

    <?php
    function flipImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->flipImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::flopimage() - Görüntünün yataydaki yansımasını oluşturur

# Imagick::floodFillPaintImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::floodFillPaintImage — Hedefle eşleşen piksellerin renklerini değiştirir

### Açıklama

public function Imagick::floodFillPaintImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$hedef`,
int `$x`,
int `$y`,
bool `$ters`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Hedefin ve yakın komşularının renk değerini değiştirir. Bu yöntem artık kullanımı önerilmeyen Imagick::paintFloodFillImage() işlevinin yerini almıştır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.8 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`dolgu`

  Dolgu rengini içeren bir dizge veya bir ImagickPixel nesnesi.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`hedef`

  Boyanacak hedef rengi içeren bir dizge veya bir ImagickPixel nesnesi.

`x`

  Renk değişikliğinin başlatılacağı X konumu.

`y`

  Renk değişikliğinin başlatılacağı Y konumu.

`ters`

  `true` belirtilirse hedefle eşlemeyen renkler değiştirilir.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::floodfillPaintImage() örneği

    <?php

    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* kırmızı, yeşil ve mavi tuvaller oluştur */
    $im->newImage(100, 50, "red");
    $im->newImage(100, 50, "green");
    $im->newImage(100, 50, "blue");

    /* Bunları birbirlerine ekle */
    $im->resetIterator();
    $combined = $im->appendImages(true);

    /* Elde edilen görüntüyü karşılaştırmak için sakla */
    $combined->writeImage("floodfillpaint_intermediate.png");

    /* Boyanacak hedef piksel */
    $x = 1;
    $y = 1;

    /* Boyanacak pikselin rengini öğren */
    $target = $combined->getImagePixelColor($x, $y);

    /* Hedef pikseli ve aynı renkteki komşu pikselleri siyaha boya */
    $combined->floodfillPaintImage("black", 1, $target, $x, $y, false);

    /* Sonucu kaydet */
    $combined->writeImage("floodfillpaint_result.png");
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# Imagick::flopImage

(PECL imagick 2, PECL imagick 3)

Imagick::flopImage — Görüntünün yataydaki yansımasını oluşturur

### Açıklama

function Imagick::flopImage(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Pikselleri Y eksenine göre yansıtarak görüntünün yataydaki yansımasını oluşturur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::flopImage()

    <?php
    function flopImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->flopImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::flipimage() - Görüntünün düşeydeki yansımasını oluşturur

# Imagick::forwardFourierTransformImage

(PECL imagick 3 >= 3.3.0)

Imagick::forwardFourierTransformImage — Implements the discrete Fourier transform (DFT)

### Açıklama

public function Imagick::forwardFourierTransformimage(bool `$magnitude`): bool

Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.

### Bağımsız Değişkenler

`magnitude`

  If true, return as magnitude / phase pair otherwise a real / imaginary image pair.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::forwardFourierTransformImage()

    <?php
    //Utility function for forwardTransformImage
    function createMask() {
        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(0);
        $draw->setStrokeColor('rgb(255, 255, 255)');
        $draw->setFillColor('rgb(255, 255, 255)');

        //Draw a circle on the y-axis, with its centre
        //at x, y that touches the origin
        $draw->circle(250, 250, 220, 250);

        $imagick = new \Imagick();
        $imagick->newImage(512, 512, "black");
        $imagick->drawImage($draw);
        $imagick->gaussianBlurImage(20, 20);
        $imagick->autoLevelImage();

        return $imagick;
    }

    function forwardFourierTransformImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1);

        $mask = createMask();
        $imagick->forwardFourierTransformImage(true);

        @$imagick->setimageindex(0);
        $magnitude = $imagick->getimage();

        @$imagick->setimageindex(1);
        $imagickPhase = $imagick->getimage();

        if (true) {
            $imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY, 0, 0);
        }

        if (false) {
            $output = clone $imagickPhase;
            $output->setimageformat('png');
            header("Content-Type: image/png");
            echo $output->getImageBlob();
        }

        $magnitude->inverseFourierTransformImage($imagickPhase, true);

        $magnitude->setimageformat('png');
        header("Content-Type: image/png");
        echo $magnitude->getImageBlob();
    }

    ?>

# Imagick::frameImage

(PECL imagick 2, PECL imagick 3)

Imagick::frameImage — Üç boyutluluğu taklit ederek bir çerçeve ekler

### Açıklama

public function Imagick::frameImage(
mixed `$mat_renk`,
int `$genişlik`,
int `$yükseklik`,
int `$iç_pah`,
int `$dış_pah`
): bool

Görüntünün çevresine üç boyutlu taklidi bir çerçeve ekler. `genişlik` ve `yükseklik` çerçevenin yatay ve düşey kenarlarının uzunluklarıdır. `iç_pah` ve `dış_pah` ise çerçevenin iç ve dış gölge genişlikleridir.

### Bağımsız Değişkenler

`mat_renk`

  Mat rengi ifade eden bir renk dizgesi veya bir ImagickPixel nesnesi.

`genişlik`

  Çerçeve genişliği.

`yükseklik`

  Çerçeve yüksekliği.

`iç_pah`

  İç pah genişliği.

`dış_pah`

  Dış pah genişliği.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::frameImage() kullanımı

    <?php
    function frameImage($imagePath, $color, $width, $height, $innerBevel, $outerBevel) {
        $imagick = new \Imagick(realpath($imagePath));

        $width = $width + $innerBevel + $outerBevel;
        $height = $height + $innerBevel + $outerBevel;

        $imagick->frameimage(
            $color,
            $width,
            $height,
            $innerBevel,
            $outerBevel
        );
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::functionImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::functionImage — Applies a function on the image

### Açıklama

public function Imagick::functionImage(int `$function`, array `$arguments`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Applies an arithmetic, relational, or logical expression to a pseudo image.

See also » ImageMagick v6 Examples - Image Transformations — Function, Multi-Argument Evaluate

Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`function`

  Refer to this list of function constants

`arguments`

  Array of arguments to pass to this function.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Create a sinusoidal gradient

    <?php
    $imagick = new Imagick();
    $imagick->newPseudoImage(200, 200, 'gradient:black-white');
    $arguments = array(3, -90);
    $imagick->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);

    header("Content-Type: image/png");
    $imagick->setImageFormat("png");
    echo $imagick->getImageBlob();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 2 Create a gradient from the polynomial (4x^2 - 4x + 1)

    <?php
    $imagick = new Imagick();
    $imagick->newPseudoImage(200, 200, 'gradient:black-white');
    $arguments = array(4, -4, 1);
    $imagick->functionImage(Imagick::FUNCTION_POLYNOMIAL, $arguments);

    header("Content-Type: image/png");
    $imagick->setimageformat("png");
    echo $imagick->getImageBlob();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Örnek 3 Create a complex gradient from the polynomial (4x^2 - 4x^2 + 1) modulated by a sinusoidal gradient

    <?php
    $imagick1 = new Imagick();
    $imagick1->newPseudoImage(200, 200, 'gradient:black-white');
    $arguments = array(9, -90);
    $imagick1->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);

    $imagick2 = new Imagick();
    $imagick2->newPseudoImage(200, 200, 'gradient:black-white');
    $arguments = array(0.5, 0);
    $imagick2->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);
    $imagick1->compositeimage($imagick2, Imagick::COMPOSITE_MULTIPLY, 0, 0);

    header("Content-Type: image/png");
    $imagick1->setImageFormat("png");
    echo $imagick1->getImageBlob();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# Imagick::fxImage

(PECL imagick 2, PECL imagick 3)

Imagick::fxImage — Bir ifadeyi görüntüdeki her piksele uygular

### Açıklama

public function Imagick::fxImage(string `$ifade`, int `$kanal` = Imagick::CHANNEL_DEFAULT): Imagick

Belirtilen ifadeyi görüntüdeki her piksele uygular. Daha fazla bilgi için » Özel etkiler için Fx görüntü işleci sayfasına bakınız.

### Bağımsız Değişkenler

`ifadeyi`

  Her piksele uygulanacak ifade.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::fxImage() kullanımı

    <?php
    function fxImage() {
        $imagick = new \Imagick();
        $imagick->newPseudoImage(200, 200, "xc:white");

        $fx = 'xx=i-w/2; yy=j-h/2; rr=hypot(xx,yy); (.5-rr/140)*1.2+.5';
        $fxImage = $imagick->fxImage($fx);

        header("Content-Type: image/png");
        $fxImage->setimageformat('png');
        echo $fxImage->getImageBlob();
    }

    ?>

# Imagick::gammaImage

(PECL imagick 2, PECL imagick 3)

Imagick::gammaImage — Görüntünün gammasını düzeltir

### Açıklama

public function Imagick::gammaImage(float `$gamma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntünün gammasını düzeltir. Aynı görüntü farklı ekranlarda algısal olarak bazı farklar gösterir. Bu farkları düzeltmek için kırmızı, mavi ve yeşil kanalların gamma değerlerinde değişiklik yapılır. Bu değerler 0.8 ile 2.3 arasında belirtilir.

### Bağımsız Değişkenler

`gamma`

  Kanalın gamma düzeltmesi.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::gammaImage() kullanımı

    <?php
    function gammaImage($imagePath, $gamma, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->gammaImage($gamma, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::gaussianBlurImage

(PECL imagick 2, PECL imagick 3)

Imagick::gaussianBlurImage — Görüntüyü bulanıklaştırır

### Açıklama

public function Imagick::gaussianBlurImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntüyü bulanıklaştırır. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile resim evriştirilir. Makul sonuçlar elde etmek için yarıçap standart sapmadan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::motionBlurImage() size uygun bir yarıçap seçecektir.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır.

`sapma`

  Piksel cinsinden standart sapma.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::gaussianBlurImage() kullanımı

    <?php
    function gaussianBlurImage($imagePath, $radius, $sigma, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->gaussianBlurImage($radius, $sigma, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::getColorspace

(PECL imagick 3)

Imagick::getColorspace — Gets the colorspace

### Açıklama

public function Imagick::getColorspace(): int

Gets the global colorspace value. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.5.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an integer which can be compared against COLORSPACE constants.

# Imagick::getCompression

(PECL imagick 2, PECL imagick 3)

Imagick::getCompression — Nesnenin sıkıştırma türünü döndürür

### Açıklama

public function Imagick::getCompression(): int

Nesnenin sıkıştırma türünü döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Nesnenin sıkıştırma türünü sıkıştırma sabitlerinden biri olarak döndürür.

# Imagick::getCompressionQuality

(PECL imagick 2, PECL imagick 3)

Imagick::getCompressionQuality — Nesnenin sıkıştırma seviyesini döndürür

### Açıklama

public function Imagick::getCompressionQuality(): int

Nesnenin sıkıştırma seviyesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Nesnenin sıkıştırma seviyesini bir tamsayı olarak döndürür.

# Imagick::getCopyright

(PECL imagick 2, PECL imagick 3)

Imagick::getCopyright — ImageMagick telif hakkı bilgisini döndürür

### Açıklama

public function Imagick::getCopyright(): string

ImageMagick telif hakkı bilgisini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImageMagick telif hakkı bilgisini içeren bir dizge döndürür.

# Imagick::getFilename

(PECL imagick 2, PECL imagick 3)

Imagick::getFilename — Görüntü dizisi ile ilişkili dosya ismini döndürür

### Açıklama

public function Imagick::getFilename(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü dizisi ile ilişkili dosya ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda bir dizge döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getFont

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::getFont — Yazıtipini döndürür

### Açıklama

public function Imagick::getFont(): string

Nesnenin yazıtipini döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Bir yazıtipi tanımlı değilse `false`, tanımlıysa yazıtipi ismini içeren bir dizge döner.

### Ayrıca Bakınız

- Imagick::setFont() - Imagick nesnesinin yazı tipini tanımlar
- ImagickDraw::setFont() - Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler
- ImagickDraw::getFont() - Geçerli yazı tipini döndürür

# Imagick::getFormat

(PECL imagick 2, PECL imagick 3)

Imagick::getFormat — Imagick nesnesinin biçemini döndürür

### Açıklama

public function Imagick::getFormat(): string

Imagick nesnesinin biçemini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Imagick nesnesinin biçemini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getGravity

(PECL imagick 2, PECL imagick 3)

Imagick::getGravity — Gets the gravity

### Açıklama

public function Imagick::getGravity(): int

Gets the global gravity property for the Imagick object. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.0 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the gravity property. Refer to the list of gravity constants.

# Imagick::getHomeURL

(PECL imagick 2, PECL imagick 3)

Imagick::getHomeURL — ImageMagick sitesinin adresini döndürür

### Açıklama

public static function Imagick::getHomeURL(): string

ImageMagick sitesinin adresini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImageMagick sitesinin adresini içeren bir dizge döndürür.

# Imagick::getImage

(PECL imagick 2, PECL imagick 3)

Imagick::getImage — Yeni bir Imagick nesnesi döndürür

### Açıklama

public function Imagick::getImage(): Imagick

Geçerli resim dizisine dahil yeni bir Imagick nesnesi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yeni bir Imagick nesnesi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageAlphaChannel

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageAlphaChannel — Checks if the image has an alpha channel

### Açıklama

public function Imagick::getImageAlphaChannel(): bool

Returns whether the image has an alpha channel.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns `true` if the image has an alpha channel value and `false` if not, i.e. the image is RGB rather than RGBA or CMYK rather than CMYKA.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 3.6.0 | Returns a bool now; previously, an int was returned.

# Imagick::getImageArtifact

(PECL imagick 3)

Imagick::getImageArtifact — Get image artifact

### Açıklama

public function Imagick::getImageArtifact(string `$artifact`): string

Gets an artifact associated with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.5.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`artifact`

  The name of the artifact

### Dönen Değerler

Returns the artifact value on success.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Ayrıca Bakınız

- Imagick::setImageArtifact() - Set image artifact
- Imagick::deleteImageArtifact() - Delete image artifact

# Imagick::getImageAttribute

(PECL imagick 2, PECL imagick 3)

Imagick::getImageAttribute — Returns a named attribute

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageAttribute(string `$key`): string

Returns a named attribute.

### Bağımsız Değişkenler

`key`

  The key of the attribute to get.

### Dönen Değerler

# Imagick::getImageBackgroundColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImageBackgroundColor — Resmin artalan rengini döndürür

### Açıklama

public function Imagick::getImageBackgroundColor(): ImagickPixel

Resmin artalan rengini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Resmin artalan rengini bir ImagickPixel nesnesi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageBlob

(PECL imagick 2, PECL imagick 3)

Imagick::getImageBlob — Görüntü dizisini ikil dizge olarak döndürür

### Açıklama

public function Imagick::getImageBlob(): string

Görüntüyü bellekteki biçemiyle ikil dizge olarak döndürür. Görüntünün biçemi dönen dizgenin dosya biçemine bağlıdır (GIF, JPEG, PNG, vb.). Görüntü biçemini değiştirmek için Imagick::setImageFormat() yöntemini kullanın.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntüyü içeren bir ikil dizge döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageBluePrimary

(PECL imagick 2, PECL imagick 3)

Imagick::getImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktayı döndürür

### Açıklama

public function Imagick::getImageBluePrimary(): array

Görüntünün renk bileşenlerinden birincil mavi noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Dönen Değerler

Başarı durumunda resmin renk bileşenlerinden birincil mavi noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageBorderColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImageBorderColor — Görüntünün çerçeve rengini döndürür

### Açıklama

public function Imagick::getImageBorderColor(): ImagickPixel

Görüntünün çerçeve rengini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün çerçeve rengini bir ImagickPixel nesnesi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelDepth

(PECL imagick 2, PECL imagick 3)

Imagick::getImageChannelDepth — Belirtilen kanalın derinliğini döndürür

### Açıklama

public function Imagick::getImageChannelDepth(int `$kanal`): int

Belirtilen görüntü kanalının derinliğini döndürür.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Belirtilen görüntü kanalının derinliğini bir tamsayı olarak döndürür.

# Imagick::getImageChannelDistortion

(PECL imagick 2, PECL imagick 3)

Imagick::getImageChannelDistortion — Görüntünün kanallarını yeniden oluşturulan görüntüyle karşılaştırır

### Açıklama

public function Imagick::getImageChannelDistortion(Imagick `$görüntü`, int `$kanal`, int `$metrik`): float

Görüntünün kanallarını yeniden oluşturulan bir görüntü ile karşılaştırır ve belirtilen bozunum metriğini döndürür.

### Bağımsız Değişkenler

`görüntü`

  Karşılaştırılacak Imagick nesnesi.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

`metric`

  Metrik sabitlerinden biri.

### Dönen Değerler

Belirtilen bozunum metriğini bir gerçek sayı olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelDistortions

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageChannelDistortions — Gets channel distortions

### Açıklama

public function Imagick::getImageChannelDistortions(Imagick `$reference`, int `$metric`, int `$channel` = Imagick::CHANNEL_DEFAULT): float

Compares one or more image channels of an image to a reconstructed image and returns the specified distortion metrics Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.4 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`reference`

  Imagick object containing the reference image

`metric`

  Refer to this list of metric type constants.

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Returns a float describing the channel distortion.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelExtrema

(PECL imagick 2, PECL imagick 3)

Imagick::getImageChannelExtrema — Belirtilen kanalların uç değerlerini döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageChannelExtrema(int `$kanal`): array

Belirtilen kanal veya kanalların uç değerlerini "`minima`" ve "`maxima`" anahtarlı bir ilişkisel dizi olarak döndürür.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda kanal veya kanalların uç değerlerini "`minima`" ve "`maxima`" anahtarlı bir ilişkisel dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelKurtosis

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose

### Açıklama

public function Imagick::getImageChannelKurtosis(int `$channel` = Imagick::CHANNEL_DEFAULT): array

Get the kurtosis and skewness of a specific channel. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Returns an array with `kurtosis` and `skewness` members.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelMean

(PECL imagick 2, PECL imagick 3)

Imagick::getImageChannelMean — Kanal ortalama ve standart sapmasını döndürür

### Açıklama

public function Imagick::getImageChannelMean(int `$kanal`): array

Belirtilen kanal veya kanalların ortalama ve standart sapmasını döndürür.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda kanalların ortalama ve standart sapmasını "`mean`" ve "`standardDeviation`" anahtarlı bir dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelRange

(PECL imagick 2 >= 2.2.1, PECL imagick 3)

Imagick::getImageChannelRange — Gets channel range

### Açıklama

public function Imagick::getImageChannelRange(int `$channel`): array

Gets the range for one or more image channels. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.0 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Returns an array containing minima and maxima values of the channel(s).

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageChannelStatistics

(PECL imagick 2, PECL imagick 3)

Imagick::getImageChannelStatistics — Görüntüdeki her kanalın istatistiklerini döndürür

### Açıklama

public function Imagick::getImageChannelStatistics(): array

Görüntüdeki her kanalın istatistiklerini döndürür. İstatistik bilgisi kanal derinliğini, azami ve asgari uçları, ortalama ve standart sapmayı içerir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntüdeki her kanalın istatistiklerini bir ilişkisel dizi olarak döndürür.

# Imagick::getImageClipMask

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageClipMask — Resim kırpma maskesini döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageClipMask(): Imagick

Kırpıcı görüntüyü döndürür. Kırpıcı görüntü kırpma maskesini içeren bir Imagick nesnesidir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Kırpma maskesini içeren bir Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageColormapColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImageColormapColor — Renk eşlemi indisi belirtilen rengi döndürür

### Açıklama

public function Imagick::getImageColormapColor(int `$indis`): ImagickPixel

Renk eşlemi indisi belirtilen rengi döndürür.

### Bağımsız Değişkenler

`indis`

  Renk eşlemindeki bir indis.

### Dönen Değerler

Renk eşlemi indisi belirtilen rengi bir ImagickPixel nesnesi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageColors

(PECL imagick 2, PECL imagick 3)

Imagick::getImageColors — Görüntüdeki eşsiz renklerin sayısını döndürür

### Açıklama

public function Imagick::getImageColors(): int

Görüntüdeki eşsiz renklerin (piksellerin) sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntüdeki eşsiz renklerin (piksellerin) sayısını döndürür.

# Imagick::getImageColorspace

(PECL imagick 2, PECL imagick 3)

Imagick::getImageColorspace — Resmin renk uzayını döndürür

### Açıklama

public function Imagick::getImageColorspace(): int

Resmin renk uzayını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

COLORSPACE sabiti ile karşılaştırılabilecek bir tamsayı döndürür.

# Imagick::getImageCompose

(PECL imagick 2, PECL imagick 3)

Imagick::getImageCompose — Görüntü ile ilgili birleştirme işlecini döndürür

### Açıklama

public function Imagick::getImageCompose(): int

Görüntü ile ilgili birleştirme işlecini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü ile ilgili birleştirme işlecini döndürür.

# Imagick::getImageCompression

(PECL imagick 3 >= 3.3.0)

Imagick::getImageCompression — Görüntünün sıkıştırma türünü döndürür

### Açıklama

public function Imagick::getImageCompression(): int

Görüntünün sıkıştırma türünü döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün sıkıştırma türünü sıkıştırma sabitlerinden biri olarak döndürür.

# Imagick::getImageCompressionQuality

(PECL imagick 2 >= 2.2.2, PECL imagick 3)

Imagick::getImageCompressionQuality — Görüntünün sıkıştırma seviyesini döndürür

### Açıklama

public function Imagick::getCompressionQuality(): int

Görüntünün sıkıştırma seviyesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün sıkıştırma seviyesini bir tamsayı olarak döndürür.

# Imagick::getImageDelay

(PECL imagick 2, PECL imagick 3)

Imagick::getImageDelay — Görüntü gecikmesini döndürür

### Açıklama

public function Imagick::getImageDelay(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü gecikmesini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü gecikmesini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageDepth

(PECL imagick 2, PECL imagick 3)

Imagick::getImageDepth — Görüntü derinliğini döndürür

### Açıklama

public function Imagick::getImageDepth(): int

Görüntü derinliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü derinliğini bir tamsayı olarak döndürür.

# Imagick::getImageDispose

(PECL imagick 2, PECL imagick 3)

Imagick::getImageDispose — Görüntünün elden çıkarma yöntemini döndürür

### Açıklama

public function Imagick::getImageDispose(): int

Görüntünün elden çıkarma yöntemini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün elden çıkarma yöntemini bir elden çıkarma sabiti olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageDistortion

(PECL imagick 2, PECL imagick 3)

Imagick::getImageDistortion — Görüntüyü yeniden oluşturulmuş bir görüntü ile karşılaştırır

### Açıklama

public function Imagick::getImageDistortion(Imagick `$görüntü`, int `$metrik`): float

Görüntüyü yeniden oluşturulmuş bir görüntü ile karşılaştırır ve belirtilen bozunum metriğini döndürür.

### Bağımsız Değişkenler

`görüntü`

  Karşılaştırılacak Imagick nesnesi.

`metrik`

  Metrik sabitlerinden biri..

### Dönen Değerler

Görüntüyü yeniden oluşturulmuş bir görüntü ile karşılaştırır ve belirtilen bozunum metriğini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageExtrema

(PECL imagick 2, PECL imagick 3)

Imagick::getImageExtrema — Görüntü ile ilgili uç değerleri döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageExtrema(): array

Görüntü ile ilgili uç değerleri "min" ve "max" anahtarlı bir ilişkisel dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

"min" ve "max" anahtarlı bir ilişkisel dizi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageFilename

(PECL imagick 2, PECL imagick 3)

Imagick::getImageFilename — Bir görüntü dizisindeki belli bir görüntünün dosya ismini döndürür

### Açıklama

public function Imagick::getImageFilename(): string

Bir görüntü dizisindeki belli bir görüntünün dosya ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Bir görüntü dizisindeki belli bir görüntünün dosya ismini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageFormat

(PECL imagick 2, PECL imagick 3)

Imagick::getImageFormat — Bir görüntü dizisindeki belli bir görüntünün biçemini döndürür

### Açıklama

public function Imagick::getImageFormat(): string

Bir görüntü dizisindeki belli bir görüntünün biçemini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Bir görüntü dizisindeki belli bir görüntünün biçemini içeren bir dizge döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageGamma

(PECL imagick 2, PECL imagick 3)

Imagick::getImageGamma — Görüntünün gammasını döndürür

### Açıklama

public function Imagick::getImageGamma(): float

Görüntünün gammasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda görüntünün gammasını döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageGeometry

(PECL imagick 2, PECL imagick 3)

Imagick::getImageGeometry — Görüntünün genişliğini ve yüksekliğini bir ilişkisel dizi olarak döndürür

### Açıklama

public function Imagick::getImageGeometry(): array

Görüntünün genişliğini ve yüksekliğini bir ilişkisel dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün genişliğini ve yüksekliğini içeren bir dizi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::getImageGeometry() kullanımı

    <?php
    $imagick = new Imagick();
    $imagick->newImage(100, 200, "black");
    print_r($imagick->getImageGeometry());
    ?>

    Array
    (
        [width] => 100
        [height] => 200
    )

# Imagick::getImageGravity

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageGravity — Gets the image gravity

### Açıklama

public function Imagick::getImageGravity(): int

Gets the current gravity value of the image. Unlike Imagick::getGravity(), this method returns the gravity defined for the current image sequence. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.4 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the images gravity property. Refer to the list of gravity constants.

# Imagick::getImageGreenPrimary

(PECL imagick 2, PECL imagick 3)

Imagick::getImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı döndürür

### Açıklama

public function Imagick::getImageGreenPrimary(): array

Görüntünün renk bileşenlerinden birincil yeşil noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda görüntünün renk bileşenlerinden birincil yeşil noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür. Hata durumunda bir ImagickException istisnası oluşur.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageHeight

(PECL imagick 2, PECL imagick 3)

Imagick::getImageHeight — Görüntünün yüksekliğini döndürür

### Açıklama

public function Imagick::getImageHeight(): int

Görüntünün yüksekliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün yüksekliğini piksel cinsinden döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageHistogram

(PECL imagick 2, PECL imagick 3)

Imagick::getImageHistogram — Görüntünün renk dağılımını döndürür

### Açıklama

public function Imagick::getImageHistogram(): array

Görüntünün renk dağılımını bir ImagickPixel nesneleri dizisi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün renk dağılımını bir ImagickPixel nesneleri dizisi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::getImageHistogram() kullanımı

    <?php
    function getColorStatistics($histogramElements, $colorChannel) {
        $colorStatistics = [];

        foreach ($histogramElements as $histogramElement) {
            $color = $histogramElement->getColorValue($colorChannel);
            $color = intval($color * 255);
            $count = $histogramElement->getColorCount();

            if (array_key_exists($color, $colorStatistics)) {
                $colorStatistics[$color] += $count;
            }
            else {
                $colorStatistics[$color] = $count;
            }
        }

        ksort($colorStatistics);

        return $colorStatistics;
    }

    function getImageHistogram($imagePath) {

        $backgroundColor = 'black';

        $draw = new \ImagickDraw();
        $draw->setStrokeWidth(0); // çizgiler mümkün olduğunca ince olsun

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        $histogramWidth = 256;
        $histogramHeight = 100; // RGB segmanların yüksekliği

        $imagick = new \Imagick(realpath($imagePath));
        // görüntüyü küçült, yoksa PHP belleği tükenecek
        // Bu, ister istemez "pikselli" görüntülerde kötü sonuçlara sebep olur
        $imagick->adaptiveResizeImage(200, 200, true);
        $histogramElements = $imagick->getImageHistogram();

        $histogram = new \Imagick();
        $histogram->newpseudoimage($histogramWidth, $histogramHeight * 3, 'xc:black');
        $histogram->setImageFormat('png');

        $getMax = function ($carry, $item)  {
            if ($item > $carry) {
                return $item;
            }
            return $carry;
        };

        $colorValues = [
            'red' => getColorStatistics($histogramElements, \Imagick::COLOR_RED),
            'lime' => getColorStatistics($histogramElements, \Imagick::COLOR_GREEN),
            'blue' => getColorStatistics($histogramElements, \Imagick::COLOR_BLUE),
        ];

        $max = array_reduce($colorValues['red'] , $getMax, 0);
        $max = array_reduce($colorValues['lime'] , $getMax, $max);
        $max = array_reduce($colorValues['blue'] , $getMax, $max);

        $scale =  $histogramHeight / $max;

        $count = 0;
        foreach ($colorValues as $color => $values) {
            $draw->setstrokecolor($color);

            $offset = ($count + 1) * $histogramHeight;

            foreach ($values as $index => $value) {
                $draw->line($index, $offset, $index, $offset - ($value * $scale));
            }
            $count++;
        }

        $histogram->drawImage($draw);

        header( "Content-Type: image/png" );
        echo $histogram;
    }

    ?>

# Imagick::getImageIndex

(PECL imagick 2, PECL imagick 3)

Imagick::getImageIndex — Geçerli etkin görüntünün indisini döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageIndex(): int

Imagick nesnesi içindeki geçerli etkin görüntünün indisini döndürür. Bu yöntemin kullanımı önerilmemektedir. Yerine Imagick::getIteratorIndex() yöntemini kullanın.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıttaki görüntünün indisini bir tamsayı olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageInterlaceScheme

(PECL imagick 2, PECL imagick 3)

Imagick::getImageInterlaceScheme — Görüntünün geçişim şemasını döndürür

### Açıklama

public function Imagick::getImageInterlaceScheme(): int

Görüntünün geçişim şemasını bir geçişim sabiti olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün geçişim şemasını bir tamsayı olarak döndürür. Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageInterpolateMethod

(PECL imagick 2, PECL imagick 3)

Imagick::getImageInterpolateMethod — Aradeğerleme yöntemini döndürür

### Açıklama

public function Imagick::getImageInterpolateMethod(): int

Görüntünün aradeğerleme yöntemini `Imagick::INTERPOLATE_*` sabitlerinden biri olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün aradeğerleme yöntemini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageIterations

(PECL imagick 2, PECL imagick 3)

Imagick::getImageIterations — Görüntü yineleme sayısını döndürür

### Açıklama

public function Imagick::getImageIterations(): int

Görüntü yineleme sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü yineleme sayısını bir tamsayı olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageLength

(PECL imagick 2, PECL imagick 3)

Imagick::getImageLength — Görüntü uzunluğunu döndürür

### Açıklama

public function Imagick::getImageLength(): int

Resmin bayt cinsinden uzunluğunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü uzunluğunu bir tamsayı olarak döndürür.

### Örnekler

Örnek 1 - Imagick::getImageLength() örneği

Görüntü dosyası uzunluğunu bayt cinsinden döndürmek

    <?php
    $image = new Imagick('test.jpg');
    echo $image->getImageLength() . ' bayt';
    ?>

# Imagick::getImageMatte

(PECL imagick 2, PECL imagick 3)

Imagick::getImageMatte — Görüntünün bir matlık kanalı varsa `true` döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageMatte(): int

Görüntünün bir matlık kanalı varsa `true`, yoksa `false` döndürür Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::getImageMatteColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImageMatteColor — Görüntünün matlık rengini döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageMatteColor(): ImagickPixel

Görüntünün matlık rengini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün matlık rengini bir ImagickPixel nesnesi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageMimeType

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::getImageMimeType — Returns the image mime-type

### Açıklama

public function Imagick::getImageMimeType(): string

Returns the image mime-type.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# Imagick::getImageOrientation

(PECL imagick 2, PECL imagick 3)

Imagick::getImageOrientation — Görüntü baskı yönünü döndürür

### Açıklama

public function Imagick::getImageOrientation(): int

Görüntü baskı yönünü yön sabitlerinden biri olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda bir tamsayı döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImagePage

(PECL imagick 2, PECL imagick 3)

Imagick::getImagePage — Sayfa geometrisini döndürür

### Açıklama

public function Imagick::getImagePage(): array

Görüntü ile ilgili sayfa geometrisini "width", "height", "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü ile ilgili sayfa geometrisini "width", "height", "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImagePixelColor

(PECL imagick 2, PECL imagick 3)

Imagick::getImagePixelColor — Belirtilen pikselin rengini döndürür

### Açıklama

public function Imagick::getImagePixelColor(int `$x`, int `$y`): ImagickPixel

Belirtilen pikselin rengini bir ImagickPixel nesnesi olarak döndürür.

### Bağımsız Değişkenler

`x`

  Pikselin X koordinatı.

`y`

  Pikselin Y koordinatı.

### Dönen Değerler

Koordinatları verilen pikselin rengini bir ImagickPixel nesnesi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageProfile

(PECL imagick 2, PECL imagick 3)

Imagick::getImageProfile — İsimli görüntü profilini döndürür

### Açıklama

public function Imagick::getImageProfile(string `$isim`): string

İsmi belirtilen görüntü profilini döndürür.

### Bağımsız Değişkenler

`isim`

  Döndürülecek profilin ismi.

### Dönen Değerler

Görüntü profilini içeren bir dizge.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageProfiles

(PECL imagick 2, PECL imagick 3)

Imagick::getImageProfiles — Görüntü profillerini döndürür

### Açıklama

public function Imagick::getImageProfiles(string `$şablon` = "*", bool `$değerler_ile` = `true`): array

Belirtilen `şablon` ile eşleşen profillerin tümünü içeren bir dizi döndürür. `değerler_ile` bağımsız değişkeninde `false` aktarılırsa sadece profil isimleri döndürülür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`şablon`

  Özellik isimleri için şablon.

`değerler_ile`

  `false` belirtilirse sadece özellik isimleri, `true` belirtilirse değerler de döndürülür.

### Dönen Değerler

Görüntü profillerini ve isimlerini içeren bir dizi.

# Imagick::getImageProperties

(PECL imagick 2, PECL imagick 3)

Imagick::getImageProperties — Görüntü özelliklerini döndürür

### Açıklama

public function Imagick::getImageProperties(string `$şablon` = "*", bool `$değerler_ile` = `true`): array

Belirtilen `şablon` ile eşleşen özelliklerin tümünü içeren bir dizi döndürür. `değerler_ile` bağımsız değişkeninde `false` aktarılırsa sadece özellik isimleri döndürülür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`şablon`

  Özellik isimleri için şablon.

`değerler_ile`

  `false` belirtilirse sadece özellik isimleri, `true` belirtilirse değerler de döndürülür.

### Dönen Değerler

Görüntü özelliklerini ve isimlerini içeren bir dizi.

### Örnekler

Örnek 1 - Imagick::getImageProperties() örneği

EXIF bilgisini elde etme örneği.

    <?php

    /* Nesneyi oluşturalım */
    $im = new imagick("/path/to/example.jpg");

    /* EXIF bilgisini alalım */
    $exifDizisi = $im->getImageProperties("exif:*");

    /* EXIF özelliklerini tarayalım */
    foreach ($exifDizisi as $isim => $özellik)
    {
        echo "{$isim} => {$özellik}<br />\n";
    }

    ?>

# Imagick::getImageProperty

(PECL imagick 2, PECL imagick 3)

Imagick::getImageProperty — İsimli görüntü özelliğini döndürür

### Açıklama

public function Imagick::getImageProperty(string `$isim`): string

İsimli görüntü özelliğini döndürür.

### Bağımsız Değişkenler

`isim`

  Özelliğin ismi (`Exif:DateTime` gibi)

### Dönen Değerler

Belirtilen özelliği bir dizge olarak döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.2 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Örnekler

Örnek 1 - Imagick::getImageProperty() örneği

Görüntü özelliklerinin belirtilmesi ve döndürülmesi.

    <?php
    $image = new Imagick();
    $image->newImage(300, 200, "black");

    $image->setImageProperty('Exif:Make', 'Imagick');
    echo $image->getImageProperty('Exif:Make');
    ?>

### Ayrıca Bakınız

- Imagick::setImageProperty() - Bir görüntü özelliğini tanımlar

# Imagick::getImageRedPrimary

(PECL imagick 2, PECL imagick 3)

Imagick::getImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktasını döndürür

### Açıklama

public function Imagick::getImageRedPrimary(): array

Görüntünün renk bileşenlerinden birincil kırmızı noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün renk bileşenlerinden birincil kırmızı noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür. Hata durumunda bir ImagickException istisnası oluşur.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageRegion

(PECL imagick 2, PECL imagick 3)

Imagick::getImageRegion — Görüntünün bir bölgesini çıkarır

### Açıklama

public function Imagick::getImageRegion(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): Imagick

Görüntünün belirtilen bölgesini yeni bir nesne olarak döndürür.

### Bağımsız Değişkenler

`width`

  Bölgenin genişliği.

`height`

  Bölgenin yüksekliği.

`x`

  Bölgenin sol üst köşesinin X konumu.

`y`

  Bölgenin sol üst köşesinin Y konumu.

### Dönen Değerler

Görüntünün belirtilen bölgesini yeni bir nesne olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageRenderingIntent

(PECL imagick 2, PECL imagick 3)

Imagick::getImageRenderingIntent — Görüntüye komutların uygulanış tarzını döndürür

### Açıklama

public function Imagick::getImageRenderingIntent(): int

Görüntüye komutların uygulanış tarzını döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntüye komutların uygulanış tarzını döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageResolution

(PECL imagick 2, PECL imagick 3)

Imagick::getImageResolution — Görüntünün X ve Y çözünürlüklerini döndürür

### Açıklama

public function Imagick::getImageResolution(): array

Görüntünün X ve Y çözünürlüklerini içeren bir dizi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Çözünürlükleri içeren bir dizi.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImagesBlob

(PECL imagick 2, PECL imagick 3)

Imagick::getImagesBlob — Tüm görüntü dizilerini bir ikil dizge olarak döndürür

### Açıklama

public function Imagick::getImagesBlob(): string

Görüntüleri dosya biçemi ile içeren bir ikil dizi döndürür. Resmin biçemi döndürülen ikil dizgenin biçemiyle (GIF, JPEG, PNG, vb.) belirlenir. Dönen ikil dizgenin görüntü biçemini değiştirmek için Imagick::setImageFormat() yöntemini kullanın.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntüleri içeren bir ikil dizge döner. Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageScene

(PECL imagick 2, PECL imagick 3)

Imagick::getImageScene — Görüntünün artalan dekorunu döndürür

### Açıklama

public function Imagick::getImageScene(): int

Görüntünün artalan dekorunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün artalan dekorunu döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageSignature

(PECL imagick 2, PECL imagick 3)

Imagick::getImageSignature — Görüntünün SHA-256 aşını üretir

### Açıklama

public function Imagick::getImageSignature(): string

Görüntü piksel akımının SHA-256 aşını üretir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Dosyanın SHA-256 aşını içeren bir dizge döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageSize

(PECL imagick 2, PECL imagick 3)

Imagick::getImageSize — Görüntü uzunluğunu bayt cinsinden döndürür

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::getImageSize(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü uzunluğunu bayt cinsinden döndürür

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü bayt sayısını bir tamsayı olarak döndürür. Yöntemin kullanımı önerilmiyor, yerine Imagick::getImageLength() kullanın.

# Imagick::getImageTicksPerSecond

(PECL imagick 2, PECL imagick 3)

Imagick::getImageTicksPerSecond — Görüntünün saniyedeki tik sayısını döndürür

### Açıklama

public function Imagick::getImageTicksPerSecond(): int

Görüntünün saniyedeki tik sayısını döndürür.

### Dönen Değerler

Görüntünün saniyedeki tik sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageTotalInkDensity

(PECL imagick 2, PECL imagick 3)

Imagick::getImageTotalInkDensity — Görüntünün belli bir renginin toplam yoğunluğunu döndürür

### Açıklama

public function Imagick::getImageTotalInkDensity(): float

Görüntünün belli bir renginin toplam yoğunluğunu döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün belli bir renginin toplam yoğunluğunu döndürür. Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageType

(PECL imagick 2, PECL imagick 3)

Imagick::getImageType — Olası görüntü türünü döndürür

### Açıklama

public function Imagick::getImageType(): int

Olası görüntü türünü döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Olası görüntü türünü döndürür:

- `imagick::IMGTYPE_UNDEFINED`
- `imagick::IMGTYPE_BILEVEL`
- `imagick::IMGTYPE_GRAYSCALE`
- `imagick::IMGTYPE_GRAYSCALEMATTE`
- `imagick::IMGTYPE_PALETTE`
- `imagick::IMGTYPE_PALETTEMATTE`
- `imagick::IMGTYPE_TRUECOLOR`
- `imagick::IMGTYPE_TRUECOLORMATTE`
- `imagick::IMGTYPE_COLORSEPARATION`
- `imagick::IMGTYPE_COLORSEPARATIONMATTE`
- `imagick::IMGTYPE_OPTIMIZE`

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageUnits

(PECL imagick 2, PECL imagick 3)

Imagick::getImageUnits — Görüntü çözünürlük birimlerini döndürür

### Açıklama

public function Imagick::getImageUnits(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü çözünürlük birimlerini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü çözünürlük birimlerini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageVirtualPixelMethod

(PECL imagick 2, PECL imagick 3)

Imagick::getImageVirtualPixelMethod — Sanal piksel yöntemini döndürür

### Açıklama

public function Imagick::getImageVirtualPixelMethod(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli görüntünün sanal piksel yöntemini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda sanal piksel yöntemini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageWhitePoint

(PECL imagick 2, PECL imagick 3)

Imagick::getImageWhitePoint — Görüntünün renk bileşenlerinden beyaz noktayı döndürür

### Açıklama

public function Imagick::getImageWhitePoint(): array

Görüntünün renk bileşenlerinden beyaz noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün renk bileşenlerinden beyaz noktayı "x" ve "y" anahtarlı bir dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getImageWidth

(PECL imagick 2, PECL imagick 3)

Imagick::getImageWidth — Görüntü genişliğini döndürür

### Açıklama

public function Imagick::getImageWidth(): int

Görüntü genişliğini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntü genişliğini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getInterlaceScheme

(PECL imagick 2, PECL imagick 3)

Imagick::getInterlaceScheme — Nesne geçişim şemasını döndürür

### Açıklama

public function Imagick::getInterlaceScheme(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne geçişim şemasını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Nesne geçişim şemasını bir geçişim şeması sabiti olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getIteratorIndex

(PECL imagick 2, PECL imagick 3)

Imagick::getIteratorIndex — Geçerli etkin görüntünün indisini döndürür

### Açıklama

public function Imagick::getIteratorIndex(): int

Imagick nesnesi içindeki geçerli etkin görüntünün indisini döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yığıttaki görüntünün indisini bir tamsayı olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::getIteratorIndex() örneği

Görüntüleri oluşturup yineleyici indisini tanımlar ve döndürür.

    <?php
    $im = new Imagick();
    $im->newImage(100, 100, new ImagickPixel("red"));
    $im->newImage(100, 100, new ImagickPixel("green"));
    $im->newImage(100, 100, new ImagickPixel("blue"));

    $im->setIteratorIndex(1);
    echo $im->getIteratorIndex();
    ?>

### Ayrıca Bakınız

- Imagick::setIteratorIndex() - Yineleyici konumunu belirler
- Imagick::getImageIndex() - Geçerli etkin görüntünün indisini döndürür
- Imagick::setImageIndex() - Yineleyici konumunu tanımlar

# Imagick::getNumberImages

(PECL imagick 2, PECL imagick 3)

Imagick::getNumberImages — Nesnedeki görüntü sayısını döndürür

### Açıklama

public function Imagick::getNumberImages(): int

Imagick nesnesi ile ilgili görüntülerin sayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda Imagick nesnesi ile ilgili görüntülerin sayısını döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getOption

(PECL imagick 2, PECL imagick 3)

Imagick::getOption — Belirtilen anahtarla ilgili değeri döndürür

### Açıklama

public function Imagick::getOption(string `$anahtar`): string

Nesnenin belirtilen anahtarla ilgili değerini döndürür.

### Bağımsız Değişkenler

`anahtar`

  Değeri döndürülecek anahtar

### Dönen Değerler

Nesnenin belirtilen anahtarla ilgili değerini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getPackageName

(PECL imagick 2, PECL imagick 3)

Imagick::getPackageName — ImageMagick paket ismini döndürür

### Açıklama

public function Imagick::getPackageName(): string

ImageMagick paket ismini döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImageMagick paket ismini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getPage

(PECL imagick 2, PECL imagick 3)

Imagick::getPage — Sayfa geometrisini döndürür

### Açıklama

public function Imagick::getPage(): array

Imagick nesnesi ile ilgili sayfa geometrisini "width", "height", "x" ve "y" anahtarlı bir ilişkisel dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda Imagick nesnesi ile ilgili sayfa geometrisini "width", "height", "x" ve "y" anahtarlı bir ilişkisel dizi olarak döndürür. Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getPixelIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelIterator — Bir MagickPixelIterator nesnesi döndürür

### Açıklama

public function Imagick::getPixelIterator(): ImagickPixelIterator

Bir MagickPixelIterator nesnesi döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda br MagickPixelIterator nesnesi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::getPixelIterator() kullanımı

    <?php
    function getPixelIterator($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imageIterator = $imagick->getPixelIterator();

        foreach ($imageIterator as $row => $pixels) { /* piksel satırlarında döngü */
            foreach ($pixels as $column => $pixel) { /* Satırdaki piksellere döngü
                /** @var $pixel \ImagickPixel */
                if ($column % 2) {
                    $pixel->setColor("rgba(0, 0, 0, 0)"); /* 2. pikselleri syaha boya */
                }
            }
            $imageIterator->syncIterator(); /* Yineleyiciyi eşzamanla.
                                             * Her yinelemede bunu yapmak önemli. */
        }

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# Imagick::getPixelRegionIterator

(PECL imagick 2, PECL imagick 3)

Imagick::getPixelRegionIterator — Bir görüntü bölümü için bir ImagickPixelIterator nesnesi döndürür

### Açıklama

public function Imagick::getPixelRegionIterator(
int `$x`,
int `$y`,
int `$genişlik`,
int `$yükseklik`
): ImagickPixelIterator

Bir görüntü bölümü için bir ImagickPixelIterator nesnesi döndürür.

### Bağımsız Değişkenler

`x`

  Bölgenin X koordinatı.

`y`

  Bölgenin Y koordinatı.

`genişlik`

  Bölgenin genişliği.

`yükseklik`

  Bölgenin yüksekliği.

### Dönen Değerler

Bir görüntü bölümü için bir ImagickPixelIterator nesnesi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::getPixelRegionIterator() kullanımı

Görüntünün üst sol köşesindeki pikseller üzerinde siyaha boyayarak dolaş.

    <?php
    $im = new Imagick(realpath("./testImage.png"));
    $areaIterator = $im->getPixelRegionIterator(0, 0, 10, 10);

    foreach ($areaIterator as $rowIterator) {
        foreach ($rowIterator as $pixel) {
            // Her pikseli sayaha bpya
            $pixel->setColor("rgba(0, 0, 0, 0)");
        }
        $areaIterator->syncIterator();
    }
    $im->writeImage("./output.png");
    ?>

# Imagick::getPointSize

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::getPointSize — Punto değerini döndürür

### Açıklama

public function Imagick::getPointSize(): string

Nesnenin yazıtipi yüksekliğini punto olarak döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yazıtipi yüksekliği float türünde punto cinsinden değer olarak döner.

### Ayrıca Bakınız

- Imagick::setPointSize() - Yazı puntosunu belirler

# Imagick::getQuantum

(PECL imagick 3 >= 3.3.0)

Imagick::getQuantum — Returns the ImageMagick quantum range

### Açıklama

public static function Imagick::getQuantum(): int

Returns the ImageMagick quantum range. If HDRI was enabled then the type is a float, if not it is an int.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# Imagick::getQuantumDepth

(PECL imagick 2, PECL imagick 3)

Imagick::getQuantumDepth — Parçacık derinliğini döndürür

### Açıklama

public function Imagick::getQuantumDepth(): array

Imagick parçacık derinliğini bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

`"quantumDepthLong"` ve `"quantumDepthString"` üyelerini içeren bir dizi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getQuantumRange

(PECL imagick 2, PECL imagick 3)

Imagick::getQuantumRange — Imagick parçacık aralığını döndürür

### Açıklama

public function Imagick::getQuantumRange(): array

Imagick parçacık aralığını bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Imagick örneği için parçacık aralığını bir dizi olarak döndürür. `"quantumDepthLong"` ve `"quantumDepthString"` üyelerini içeren ilişkisel dizi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getRegistry

(PECL imagick 3 >= 3.3.0)

Imagick::getRegistry — Get a StringRegistry entry

### Açıklama

public static function Imagick::getRegistry(string `$key`): string

Get the StringRegistry entry for the named key or false if not set.

### Bağımsız Değişkenler

`key`

  The entry to get.

### Dönen Değerler

# Imagick::getReleaseDate

(PECL imagick 2, PECL imagick 3)

Imagick::getReleaseDate — ImageMagick dağıtım tarihini döndürür

### Açıklama

public function Imagick::getReleaseDate(): string

ImageMagick dağıtım tarihini bir dizge olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImageMagick dağıtım tarihini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getResource

(PECL imagick 2, PECL imagick 3)

Imagick::getResource — Belirtilen özkaynağın bellek kullanımını döndürür

### Açıklama

public function Imagick::getResource(int `$tür`): int

`tür` ile belirtilen özkaynağın bellek kullanımını megabayt olarak döndürür.

### Bağımsız Değişkenler

`tür`

  Özkaynak türü sabitlerinden biri.

### Dönen Değerler

Belirtilen özkaynağın bellek kullanımını megabayt olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getResourceLimit

(PECL imagick 2, PECL imagick 3)

Imagick::getResourceLimit — Belirtilen özkaynağın bellek kullanım sınırını döndürür

### Açıklama

public function Imagick::getResourceLimit(int `$tür`): int

Belirtilen özkaynağın bellek kullanım sınırını döndürür.

### Bağımsız Değişkenler

`tür`

  Özkaynak türü sabitlerinden biri. Bellek miktarı birimi özkaynağın türüne bağlıdır.

### Dönen Değerler

Belirtilen özkaynağın bellek kullanım sınırını döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Ayrıca Bakınız

- Imagick::setResourceLimit() - Belli bir özkaynağa sınır tanımlar

# Imagick::getSamplingFactors

(PECL imagick 2, PECL imagick 3)

Imagick::getSamplingFactors — Yatay ve düşey örnekleme katsayısını döndürür

### Açıklama

public function Imagick::getSamplingFactors(): array

Yatay ve düşey örnekleme katsayısını döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Yatay ve düşey örnekleme katsayısılarını bir dizi olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getSize

(PECL imagick 2, PECL imagick 3)

Imagick::getSize — Imagick nesnesi ile ilgili boyutları döndürür

### Açıklama

public function Imagick::getSize(): array

Imagick nesnesi ile ilgili boyutları "columns" ve "rows" anahtarlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Önceden Imagick::setSize() kullanarak atanmış Imagick nesnesi ile ilgili piksel boyutlarını döndürür.

> Bilginize:

> Bu yöntem sadece Imagick::setSize() kullanarak atanmış boyutları döndürür. Görüntünün asıl genişlik ve yüksekliğini elde etmek için Imagick::getImageWidth() ve Imagick::getImageHeight() işlevlerini kullanın.

### Örnekler

Örnek 1 - 200x400 boyutlarındaki ham RGB görüntüyü 400x800 boyutlarına büyüttükten sonra boyutlarını döndürmek

    <?php
    // Boyutları belirledikten sonra ham görüntüyü yükle
    $img = new Imagick();
    $img->setSize(200, 400);
    $img->readImage("image.rgb");

    // Büyüt
    $img->scaleImage(400, 800);

    // Şimdi boyutlarına bak
    $size = $img->getSize();
    print_r($size);

    echo $img->getImageWidth()."x".$img->getImageHeight();
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [columns] => 200
        [rows] => 400
    )
    400x800

# Imagick::getSizeOffset

(PECL imagick 2, PECL imagick 3)

Imagick::getSizeOffset — Boyut başlangıç noktasını döndürür

### Açıklama

public function Imagick::getSizeOffset(): int

Imagick nesnesi ile ilgili boyut başlangıç noktasını döndürür. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Imagick nesnesi ile ilgili boyut başlangıç noktasını döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::getVersion

(PECL imagick 2, PECL imagick 3)

Imagick::getVersion — ImageMagick API sürümünü döndürür

### Açıklama

public function Imagick::getVersion(): array

ImageMagick API sürümünü bir dizge ve bir sayı olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImageMagick API sürümünü bir dizge ve bir sayı olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::haldClutImage

(PECL imagick 3)

Imagick::haldClutImage — Replaces colors in the image

### Açıklama

public function Imagick::haldClutImage(Imagick `$clut`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Replaces colors in the image using a Hald lookup table. Hald images can be created using HALD color coder.

### Bağımsız Değişkenler

`clut`

  Imagick object containing the Hald lookup image.

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Imagick::haldClutImage()

    <?php
    function haldClutImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagickPalette = new \Imagick(realpath("images/hald/hald_8.png"));
        $imagickPalette->sepiatoneImage(55);
        $imagick->haldClutImage($imagickPalette);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::hasNextImage

(PECL imagick 2, PECL imagick 3)

Imagick::hasNextImage — Görüntünün sonrasında bir görüntü daha var mı diye bakar

### Açıklama

public function Imagick::hasNextImage(): bool

Görüntü listesinde, görüntünün sonrasında bir görüntü daha varsa `true` döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün sonrasında bir görüntü daha varsa `true` yoksa `false` döndürür.

# Imagick::hasPreviousImage

(PECL imagick 2, PECL imagick 3)

Imagick::hasPreviousImage — Görüntünün öncesinde bir görüntü daha var mı diye bakar

### Açıklama

public function Imagick::hasPreviousImage(): bool

Görüntü listesinde, görüntünün öncesinde bir görüntü daha varsa `true` döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Görüntünün öncesinde bir görüntü daha varsa `true` yoksa `false` döndürür.

# Imagick::identifyFormat

(PECL imagick 3 >= 3.3.0)

Imagick::identifyFormat — Formats a string with image details

### Açıklama

public function Imagick::identifyFormat(string `$embedText`): string|false

Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See http://www.imagemagick.org/script/escape.php for escape sequences.

### Bağımsız Değişkenler

`embedText`

  A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k".

### Dönen Değerler

Returns format başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Imagick::identifyFormat()

    <?php
            $output = "Output of 'Trim box: %@ number of unique colors: %k' is: <br/>";
            $imagick = new \Imagick(realpath("./images/artifact/mask.png"));
            $output .= $imagick->identifyFormat("Trim box: %@ number of unique colors: %k");

    ?>

# Imagick::identifyImage

(PECL imagick 2, PECL imagick 3)

Imagick::identifyImage — Görüntünün özniteliklerini döndürerek görüntüyü tanımlar

### Açıklama

public function Imagick::identifyImage(bool `$hamÇıktıEkle` = `false`): array

Görüntünün özniteliklerini döndürerek görüntüyü tanımlar. Öznitelikler, görüntünün genişliği, yüksekliği ve benzerlerinden oluşur.

### Bağımsız Değişkenler

`hamÇıktıEkle`

  `true` ise ham çıktı diziye eklenir.

### Dönen Değerler

Görüntünün özniteliklerini içeren bir dizi.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Dönen değer örneği

    Array
    (
        [imageName] => /some/path/image.jpg
        [format] => JPEG (Joint Photographic Experts Group JFIF format)
        [geometry] => Array
            (
                [width] => 90
                [height] => 90
            )

        [type] => TrueColor
        [colorSpace] => RGB
        [resolution] => Array
            (
                [x] => 300
                [y] => 300
            )

        [units] => PixelsPerInch
        [fileSize] => 1.88672kb
        [compression] => JPEG
        [signature] => 9a6dc8f604f97d0d691c0286176ddf992e188f0bebba98494b2146ee2d7118da
    )

# Imagick::implodeImage

(PECL imagick 2, PECL imagick 3)

Imagick::implodeImage — Görüntüyü kopyalamak suretiyle yeni bir görüntü oluşturur

### Açıklama

public function Imagick::implodeImage(float `$yarıçap`): bool

Görüntünün piksellerini belirtilen yarıçapta içe çökerterek kopyalamak suretiyle yeni bir görüntü oluşturur.

### Bağımsız Değişkenler

`yarıçap`

  Çökertme yarıçapı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::implodeImage() örneği

    <?php
    function implodeImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->implodeImage(0.0001);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();

    }

    ?>

# Imagick::importImagePixels

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::importImagePixels — Imports image pixels

### Açıklama

public function Imagick::importImagePixels(
int `$x`,
int `$y`,
int `$width`,
int `$height`,
string `$map`,
int `$storage`,
array `$pixels`
): bool

Imports pixels from an array into an image. The `map` is usually 'RGB'. This method imposes the following constraints for the parameters: amount of pixels in the array must match `width` x `height` x length of the map. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.5 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`x`

  The image x position

`y`

  The image y position

`width`

  The image width

`height`

  The image height

`map`

  Map of pixel ordering as a string. This can be for example `RGB`. The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.

`storage`

  The pixel storage method. Refer to this list of pixel constants.

`pixels`

  The array of pixels

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Imagick::importImagePixels() example

    <?php

    /* Generate array of pixels. 2000 pixels per color stripe */
    $count = 2000 * 3;

    $pixels =
       array_merge(array_pad(array(), $count, 0),
                   array_pad(array(), $count, 255),
                   array_pad(array(), $count, 0),
                   array_pad(array(), $count, 255),
                   array_pad(array(), $count, 0));

    /* Width and height. The area is amount of pixels divided
       by three. Three comes from 'RGB', three values per pixel */
    $width = $height = pow((count($pixels) / 3), 0.5);

    /* Create empty image */
    $im = new Imagick();
    $im->newImage($width, $height, 'gray');

    /* Import the pixels into image.
       width * height * strlen("RGB") must match count($pixels) */
    $im->importImagePixels(0, 0, $width, $height, "RGB", Imagick::PIXEL_CHAR, $pixels);

    /* output as jpeg image */
    $im->setImageFormat('jpg');
    header("Content-Type: image/jpg");
    echo $im;

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

# Imagick::inverseFourierTransformImage

(PECL imagick 3 >= 3.3.0)

Imagick::inverseFourierTransformImage — Implements the inverse discrete Fourier transform (DFT)

### Açıklama

public function Imagick::inverseFourierTransformImage(Imagick `$complement`, bool `$magnitude`): bool

Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`complement`

  The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair.

`magnitude`

  If true, combine as magnitude / phase pair otherwise a real / imaginary image pair.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::labelImage

(PECL imagick 2, PECL imagick 3)

Imagick::labelImage — Görüntüye bir yafta ekler

### Açıklama

public function Imagick::labelImage(string `$yafta`): bool

Görüntüye bir yafta ekler.

### Bağımsız Değişkenler

`yafta`

  Eklenecek yafta.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::levelImage

(PECL imagick 2, PECL imagick 3)

Imagick::levelImage — Bir görüntünün seviyelerini ayarlar

### Açıklama

public function Imagick::levelImage(
float `$siyah_nokta`,
float `$gamma`,
float `$beyaz_nokta`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Siyah ve beyaz noktalarla belirtilen kullanılabilir parçacık aralığının tamamına karşı düşen renkleri oranlayarak bir görüntünün seviyelerini ayarlar. Belirtilen bağımsız değişkenler siyah, gri ve beyaz noktaları belirtir. `siyah_nokta` görüntünün kabul edilebilir en koyu rengini belirtir. Bu noktadan daha koyu renklere sıfır atanır. `gamma` ile görüntüye uygulanacak gamma düzeltmesi belirtilir. `beyaz_nokta` görüntünün kabul edilebilir en açık rengini belirtir. Bu noktadan daha açık renklere azami parçacık değeri atanır.

### Bağımsız Değişkenler

`siyah_nokta`

  Görüntünün en koyu rengi.

`gamma`

  Gamma düzeltmesi.

`beyaz_nokta`

  Görüntünün en açık rengi.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::levelImage() örneği

    <?php
    function levelImage($blackPoint, $gamma, $whitePoint) {
        $imagick = new \Imagick();
        $imagick->newPseudoimage(500, 500, 'gradient:black-white');

        $imagick->setFormat('png');
        $quantum = $imagick->getQuantum();
        $imagick->levelImage($blackPoint / 100 , $gamma, $quantum * $whitePoint / 100);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::linearStretchImage

(PECL imagick 2, PECL imagick 3)

Imagick::linearStretchImage — Görüntünün koyuluğunu doygunluk ile abartır

### Açıklama

public function Imagick::linearStretchImage(float `$siyah_nokta`, float `$beyaz_nokta`): bool

Görüntünün koyuluğunu doygunluk ile abartır.

### Bağımsız Değişkenler

`siyah_nokta`

  Görüntünün siyah noktası.

`beyaz_nokta`

  Görüntünün beyaz noktası

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::linearStretchImage() örneği

    <?php
    function linearStretchImage($imagePath, $blackThreshold, $whiteThreshold) {
        $imagick = new \Imagick(realpath($imagePath));
        $pixels = $imagick->getImageWidth() * $imagick->getImageHeight();
        $imagick->linearStretchImage($blackThreshold * $pixels, $whiteThreshold * $pixels);

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::liquidRescaleImage

(PECL imagick 2 >= 2.2.0, PECL imagick 3)

Imagick::liquidRescaleImage — Bir görüntüyü veya görüntüleri canlandırır

### Açıklama

public function Imagick::liquidRescaleImage(
int `$genişlik`,
int `$yükseklik`,
float `$delta_x`,
float `$diklik`
): bool

Akışkan yeniden boyutlandırma yöntemi kullanılarak görüntülerin boyutlandırılmasını sağlar. Bu yöntem birleşim yerini ayırma tekniğinin bir gerçeklenimidir. Bu yöntemin çalışması için ImageMagick kütüphanesinin liblqr desteğiyle derlenmiş olması gerekir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`genişlik`

  Hedefin genişliği.

`yükseklik`

  Hedefin yüksekliği.

`delta_x`

  Birleşim yerinin x ekseninı ne kadar çaprazlayacağını belirler. 0 değeri birleşim yerinin düz olmasını sağlar.

`diklik`

  Düz olmayan birleşim yerleri için bir sapma tanımlar, Bu bağımsız değişkenin değeri genelde 0'dır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::resizeImage() - Görüntüyü boyutlandırır

# Imagick::listRegistry

(PECL imagick 3 >= 3.3.0)

Imagick::listRegistry — List all the registry settings

### Açıklama

public static function Imagick::listRegistry(): array

List all the registry settings. Returns an array of all the key/value pairs in the registry

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

An array containing the key/values from the registry.

# Imagick::magnifyImage

(PECL imagick 2, PECL imagick 3)

Imagick::magnifyImage — En boy oranını koruyarak görüntüyü iki katına büyütür

### Açıklama

public function Imagick::magnifyImage(): bool

En boy oranını koruyarak görüntüyü iki katına büyütür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::magnifyImage() örneği

    <?php
    function magnifyImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->magnifyImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::mapImage

(PECL imagick 2, PECL imagick 3)

Imagick::mapImage — Görüntünün renklerini belirtilen görüntüdeki en yakın renklerle değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::mapImage(Imagick `$görüntü`, bool `$kıpırtı`): bool

Görüntünün renklerini belirtilen görüntüdeki en yakın renklerle değiştirir.

### Bağımsız Değişkenler

`görüntü`

`kıpırtı`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::matteFloodfillImage

(PECL imagick 2, PECL imagick 3)

Imagick::matteFloodfillImage — Bir rengin şeffaflık değerini değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::matteFloodfillImage(
float `$alfa`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`
): bool

`çerçeve_rengi` ile eşleşen her pikselin ve komşu pikselinin şeffaflık değerini değiştirir. `imagick::PAINT_FILLTOBORDER` etkinse görüntünün çerçeve rengi ile eşleşmeyen komşu piksellerinin şeffaflık değerleri değiştirilir.

### Bağımsız Değişkenler

`alfa`

  Şeffaflık seviyesi; 1.0 tamamen mat, 0.0 tamamen şeffaf demektir.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`çerçeve_rengi`

  Bir renk dizgesi veya bir ImagickPixel nesnesi.

`x`

  İşlemin başlatılacağı noktanın X konumu.

`y`

  İşlemin başlatılacağı noktanın Y konumu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::medianFilterImage

(PECL imagick 2, PECL imagick 3)

Imagick::medianFilterImage — Görüntüye bir sayısal süzgeç uygular

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::medianFilterImage(float `$yarıçap`): bool

Bir sayısal süzgeç uygulayarak görüntünün görüntü kalitesini arttırır. `yarıçap` ile tanımlanan piksel kümesindeki her pikseli kümenin ortanca rengiyle değiştirir.

### Bağımsız Değişkenler

`yarıçap`

  Ortanca renginin tespit edilip diğer piksellerine uygulanacağı piksel kümesini tanımlayan yarıçap.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::medianFilterImage() örneği

    <?php
    function medianFilterImage($radius, $imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        @$imagick->medianFilterImage($radius);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::mergeImageLayers

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::mergeImageLayers — Görüntü katmanlarını katıştırır

### Açıklama

public function Imagick::mergeImageLayers(int `$katman_yöntemi`): bool

Görüntü katmanlarını tek bir katman haline gelecek şekilde katıştırır. PSD gibi çok katmanlı görüntülerle çalışırken yararlıdır. Katmanların nasıl katıştırılacağı `katman_yöntemi` ile belirtilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`katman_yöntemi`

  Katman yöntemi sabitlerinden biri.

### Dönen Değerler

Katıştırılan görüntüyü içeren Imagick nesnesini döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::mergeImageLayers() örneği

    <?php
    function mergeImageLayers($layerMethodType, $imagePath1, $imagePath2) {

        $imagick = new \Imagick(realpath($imagePath));

        $imagick2 = new \Imagick(realpath($imagePath2));
        $imagick->addImage($imagick2);
        $imagick->setImageFormat('png');

        $result = $imagick->mergeImageLayers($layerMethodType);
        header("Content-Type: image/png");
        echo $result->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::flattenImages() - Bir görüntü dizisini tek bir görüntü halinde üstüste bindirir

# Imagick::minifyImage

(PECL imagick 2, PECL imagick 3)

Imagick::minifyImage — En boy oranını koruyarak görüntüyü yarı boyutuna indirir

### Açıklama

public function Imagick::minifyImage(): bool

En boy oranını koruyarak görüntüyü yarı boyutuna indirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::modulateImage

(PECL imagick 2, PECL imagick 3)

Imagick::modulateImage — Görüntünün parlaklık, doygunluk ve renk sıcaklığını denetler

### Açıklama

public function Imagick::modulateImage(float `$parlaklık`, float `$doygunluk`, float `$sıcaklık`): bool

Görüntünün parlaklık, doygunluk ve renk sıcaklığını denetleyebilmenizi sağlar. Renk parlaklığını 20 arttırmak, renk doygunluğunu 10 azaltıp renk sıcaklığına dokunmamak için şu değerleri kullanın: 120,90,100.

### Bağımsız Değişkenler

`parlaklık`

  Parlaklık yüzdesi.

`doygunluk`

  Doygunluk yüzdesi.

`sıcaklık`

  Geçerli konumdan itibaren mutlak bir dönüş yüzdesi. Örneğin, 50 değeri saatin ters yönünde 90° dönüşle sonuçlanırken 150 değeri saat yönünde 90° ile sonuçlanır. 0 ve 200, her ikisi de 180 derecelik bir dönüşle sonuçlanır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::modulateImage()

    <?php
    function modulateImage($imagePath, $hue, $brightness, $saturation) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->modulateImage($brightness, $saturation, $hue);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::montageImage

(PECL imagick 2, PECL imagick 3)

Imagick::montageImage — Birleşik bir görüntü oluşturur

### Açıklama

public function Imagick::montageImage(
ImagickDraw `$nesne`,
string `$döşeme_geometrisi`,
string `$örnek_geometrisi`,
int `$kip`,
string `$çerçeve`
): Imagick

Ayrı ayrı görüntüleri birleştirerek birleşik bir görüntü haline getirir. Görüntüler birleşik görüntünün üzerine her karenin altında isteğe bağlı olarak bulunan görüntü ismine göre döşenir.

### Bağımsız Değişkenler

`nesne`

  Yazı tipi ismi, boyut ve renk bu nesne ile sağlanır.

`döşeme_geometrisi`

  Satır ve sayfa başına kare sayısı (6x4+0+0 gibi).

`örnek_geometrisi`

  Her küçük görüntü örneği için önerilen görüntü ve çerçeve boyutu (120x120+4+3 gibi)

`kip`

  Örnek görüntü birleştirme kipi. Montaj kipi sabitlerine bakınız.

`çerçeve`

  Görüntüyü süslü bir çerçeve ile sarmalar (15x15+3+3 gibi). Çerçeve rengi olarak görüntünün matlık rengi kullanılır.

### Dönen Değerler

Birleşik görüntüyü oluşturur ve Imagick nesnesi olarak döndürür.

# Imagick::morphImages

(PECL imagick 2, PECL imagick 3)

Imagick::morphImages — Bir görüntü dizisini başkalaşıma uğratır

### Açıklama

public function Imagick::morphImages(int `$kare_sayısı`): Imagick

Bir görüntü dizisini başkalaşıma uğratır. Hem görüntü piksellerinde hem de görüntü boyutlarında bir görüntüden diğerine bir başkalaşım etkisi vermek için düzgün doğrusal aradeğerleme yapar.

### Bağımsız Değişkenler

`kare_sayısı`

  Resimler arasında üretilecek görüntü sayısı.

### Dönen Değerler

Yöntem başarılı olursa yeni bir Imagick nesnesi döndürür. Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::morphology

(PECL imagick 3 >= 3.3.0)

Imagick::morphology — Applies a user supplied kernel to the image according to the given morphology method.

### Açıklama

public function Imagick::morphology(
int `$morphologyMethod`,
int `$iterations`,
ImagickKernel `$ImagickKernel`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool

Applies a user supplied kernel to the image according to the given morphology method.

### Bağımsız Değişkenler

`morphologyMethod`

  Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants.

`iterations`

  The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1.

`ImagickKernel`

`channel`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Convolve Imagick::morphology()

    <?php
            $imagick = $this->getCharacter();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_GAUSSIAN, "5,1");
            $imagick->morphology(\Imagick::MORPHOLOGY_CONVOLVE, 2, $kernel);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();

    ?>

Örnek 2 Correlate Imagick::morphology()

    <?php

            // Top-left pixel must be black
            // Bottom right pixel must be white
            // We don't care about the rest.

            $imagick = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromMatrix(self::$correlateMatrix, [2, 2]);
            $imagick->morphology(\Imagick::MORPHOLOGY_CORRELATE, 1, $kernel);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();

    ?>

Örnek 3 Erode Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_ERODE, 2, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 4 Erode Intensity Imagick::morphology()

    <?php
            $canvas = $this->getCharacter();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
            $canvas->morphology(\Imagick::MORPHOLOGY_ERODE_INTENSITY, 2, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 5 Dilate Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_DILATE, 4, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 6 Dilate intensity Imagick::morphology()

    <?php
            $canvas = $this->getCharacter();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
            $canvas->morphology(\Imagick::MORPHOLOGY_DILATE_INTENSITY, 4, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 7 Distance with Chebyshev kernel Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CHEBYSHEV, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
            $canvas->autoLevelImage();
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 8 Distance with Manhattan kernel Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_MANHATTAN, "5");
            $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
            $canvas->autoLevelImage();
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 9 Distance with ocatagonal kernel Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGONAL, "5");
            $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
            $canvas->autoLevelImage();
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 10 Distance with Euclidean kernel Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_EUCLIDEAN, "4");
            $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
            $canvas->autoLevelImage();
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 11 Edge Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_EDGE, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 12 Open Imagick::morphology()

    <?php
            // As a result you will see that 'Open' smoothed the outline, by rounding off any sharp points, and remove any parts that is smaller than the shape used. It will also disconnect or 'open' any thin bridges.
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
            $canvas->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 13 Open intensity Imagick::morphology()

    <?php
            // As a result you will see that 'Open' smoothed the outline, by rounding off any sharp points, and remove any parts that is smaller than the shape used. It will also disconnect or 'open' any thin bridges.

            $canvas = $this->getCharacter();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
            $canvas->morphology(\Imagick::MORPHOLOGY_OPEN_INTENSITY, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 14 Close Imagick::morphology()

    <?php
            //The basic use of the 'Close' method is to reduce or remove any 'holes' or 'gaps' about the size of the kernel 'Structure Element'. That is 'close' parts of the background that are about that size.
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
            $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 15 Close Intensity Imagick::morphology()

    <?php
            //The basic use of the 'Close' method is to reduce or remove any 'holes' or 'gaps' about the size of the kernel 'Structure Element'. That is 'close' parts of the background that are about that size.
            $canvas = $this->getCharacter();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
            $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE_INTENSITY, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 16 Smooth Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_SMOOTH, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 17 Edge in Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 18 Edge out Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
            $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_OUT, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 19 The 'TopHat' method, or more specifically 'White Top Hat', returns the pixels that were removed by a Opening of the shape, that is the pixels that were removed to round off the points, and the connecting bridged between shapes. Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
            $canvas->morphology(\Imagick::MORPHOLOGY_TOP_HAT, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 20 The 'BottomHat' method, also known as 'Black TopHat' is the pixels that a Closing of the shape adds to the image. That is the pixels that were used to fill in the 'holes', 'gaps', and 'bridges'. Imagick::morphology()

    <?php

            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
            $canvas->morphology(\Imagick::MORPHOLOGY_BOTTOM_HAT, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 21 Hit and Miss Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            //This finds all the pixels with 3 pixels of the right edge
            $matrix = [[1, false, false, 0]];
            $kernel = \ImagickKernel::fromMatrix(
                $matrix,
                [0, 0]
            );
            $canvas->morphology(\Imagick::MORPHOLOGY_HIT_AND_MISS, 1, $kernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 22 Thinning Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
            $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
            $leftEdgeKernel->addKernel($rightEdgeKernel);

            $canvas->morphology(\Imagick::MORPHOLOGY_THINNING, 3, $leftEdgeKernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 23 Thicken Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
            $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
            $leftEdgeKernel->addKernel($rightEdgeKernel);

            $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, 3, $leftEdgeKernel);
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 24 Thick to generate a convex hull Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $diamondKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "1");
            $convexKernel =  \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CONVEX_HULL, "");

            // The thicken morphology doesn't handle small gaps. We close them
            // with the close morphology.
            $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);
            $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, -1, $convexKernel);
            $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);

            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 25 Iterative morphology Imagick::morphology()

    <?php
            $canvas = $this->getCharacterOutline();
            $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "2");
            $canvas->morphology(\Imagick::MORPHOLOGY_ITERATIVE, 3, $kernel);
            $canvas->autoLevelImage();
            header("Content-Type: image/png");
            echo $canvas->getImageBlob();

    ?>

Örnek 26 Helper function to get an image silhouette Imagick::morphology()

    <?php
    function getCharacterOutline() {
        $imagick = new \Imagick(realpath("./images/character.png"));
        $character = new \Imagick();
        $character->newPseudoImage(
            $imagick->getImageWidth(),
            $imagick->getImageHeight(),
            "canvas:white"
        );
        $canvas = new \Imagick();
        $canvas->newPseudoImage(
            $imagick->getImageWidth(),
            $imagick->getImageHeight(),
            "canvas:black"
        );

        $character->compositeimage(
            $imagick,
            \Imagick::COMPOSITE_COPYOPACITY,
            0, 0
        );
        $canvas->compositeimage(
            $character,
            \Imagick::COMPOSITE_ATOP,
            0, 0
        );
        $canvas->setFormat('png');

        return $canvas;
    }
    ?>

# Imagick::mosaicImages

(PECL imagick 2, PECL imagick 3)

Imagick::mosaicImages — Görüntülerden bir mozaik oluşturur

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::mosaicImages(): Imagick

Yapışık tek bir görüntü oluşturmak üzere bir görüntü kümesini görüntüye yanyana yerleştirir. Görüntünün sayfa başlangıcına göre tanımlanmış bir konumda birleştirilmiş bir dizi görüntünün her birini bir kalemle ilişkilendirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::motionBlurImage

(PECL imagick 2, PECL imagick 3)

Imagick::motionBlurImage — Hareket bulanıklığını taklit eder

### Açıklama

public function Imagick::motionBlurImage(
float `$yarıçap`,
float `$sapma`,
float `$açı`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Hareket bulanıklığını taklit eder. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile resim evriştirilir. Makul sonuçlar elde etmek için yarıçap standart sapmadan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::motionBlurImage() size uygun bir yarıçap seçecektir. `açı` ile bulanıklaştırma açısı belirtilir.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır.

`sapma`

  Piksel cinsinden standart sapma.

`açı`

  Bulanıklığın uygulanacağı açı.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.Bu bağımsız değişken, sadece, derleme sırasında ImageMagick kütüphanesinin 6.4.4 veya sonraki bir sürümü kuruluysa etkilidir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::motionBlurImage() örneği

    <?php
    function motionBlurImage($imagePath, $radius, $sigma, $angle, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->motionBlurImage($radius, $sigma, $angle, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::negateImage

(PECL imagick 2, PECL imagick 3)

Imagick::negateImage — Görüntünün renklerini negatiflerine dönüştürür

### Açıklama

public function Imagick::negateImage(bool `$gri_tonlama`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntünün renklerini negatiflerine dönüştürür. `gri_tonlama` bağımsız değişkenine `true` atanırsa görüntünün sadece gri tonlama renkleri negatiflerine dönüştürülür.

### Bağımsız Değişkenler

`gri_tonlama`

  `true` atanırsa görüntünün sadece gri tonlu pikselleri negatiflerine dönüştürülür.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Imagick::negateImage()

    <?php
    function negateImage($imagePath, $grayOnly, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->negateImage($grayOnly, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::newImage

(PECL imagick 2, PECL imagick 3)

Imagick::newImage — Yeni bir görüntü oluşturur

### Açıklama

public function Imagick::newImage(
int `$genişlik`,
int `$yükseklik`,
mixed `$artalan`,
string `$biçem` = ?
): bool

Bir ImagickPixel değerini `artalan` rengi ile ilişkilendirerek yeni bir görüntü oluşturur.

### Bağımsız Değişkenler

`genişlik`

  Yeni görüntünün genişliği.

`yükseklik`

  Yeni görüntünün yüksekliği.

`artalan`

  Yeni görüntünün artalan rengi.

`biçem`

  Görüntü biçemi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.
PECL imagick 2.0.1 | Seçimlik `biçem` bağımsız değişkeni eklendi

### Örnekler

Örnek 1 - Imagick::newImage() örneği

Yeni bir görüntü oluşturup görüntüleyelim.

    <?php

    $image = new Imagick();
    $image->newImage(100, 100, new ImagickPixel('red'));
    $image->setImageFormat('png');

    header('Content-type: image/png');
    echo $image;

    ?>

# Imagick::newPseudoImage

(PECL imagick 2, PECL imagick 3)

Imagick::newPseudoImage — Yeni bir görüntü oluşturur

### Açıklama

public function Imagick::newPseudoImage(int `$genişlik`, int `$yükseklik`, string `$sözde_dizge`): bool

ImageMagick sözde biçemlerini kullanarak yeni bir görüntü oluşturur.

### Bağımsız Değişkenler

`genişlik`

  Yeni görüntünün genişliği.

`yükseklik`

  Yeni görüntünün yüksekliği

`sözde_dizge`

  Sözde görüntü tanımını içeren dizge.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::newPseudoImage() örneği

    <?php
    function newPseudoImage($canvasType) {
        $imagick = new \Imagick();
        $imagick->newPseudoImage(300, 300, $canvasType);
        $imagick->setImageFormat("png");
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    //newPseudoImage('gradient:red-rgba(64, 255, 255, 0.5)');
    //newPseudoImage("radial-gradient:red-blue");
    newPseudoImage("plasma:fractal");

    ?>

# Imagick::nextImage

(PECL imagick 2, PECL imagick 3)

Imagick::nextImage — Bir sonraki görüntüye gider

### Açıklama

public function Imagick::nextImage(): bool

Görüntü listesindeki bir sonraki görüntüyü Imagick nesnesi ile ilişkilendirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::normalizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::normalizeImage — Renkli bir görüntünün zıtlığını arttırır

### Açıklama

public function Imagick::normalizeImage(int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Piksel renklerini, kullanılabilen renk aralığının tamamına yaymak için ayarlayarak renkli bir görüntünün zıtlığını arttırır.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::normalizeImage() örneği

    <?php
    function normalizeImage($imagePath, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $original = clone $imagick;
        $original->cropimage($original->getImageWidth() / 2, $original->getImageHeight(), 0, 0);
        $imagick->normalizeImage($channel);
        $imagick->compositeimage($original, \Imagick::COMPOSITE_ATOP, 0, 0);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::oilPaintImage

(PECL imagick 2, PECL imagick 3)

Imagick::oilPaintImage — Yağlı boya resmi taklit eder

### Açıklama

public function Imagick::oilPaintImage(float `$yarıcap`): bool

Yağlı boya etkisi oluşturmak için görüntüye bir süzgeç uygular. Belirtilen yarıçapa göre tanımlanın dairesel bölge içindeki her piksel, o bölge içinde en sık rastlanan renkle değiştirilir.

### Bağımsız Değişkenler

`yarıcap`

  Dairesel bölgeyi belirleyen yarıçap.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::oilPaintImage() örneği

    <?php
    function oilPaintImage($imagePath, $radius) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->oilPaintImage($radius);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::opaquePaintImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::opaquePaintImage — Hedef ile eşleşen piksellerin rengini değiştirir

### Açıklama

public function Imagick::opaquePaintImage(
mixed `$hedef`,
mixed `$renk`,
float `$benzerlik`,
bool `$ters`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

`hedef` ile eşleşen renkleri `renk` ile değiştirir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.8 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`hedef`

  Değiştirilecek rengi içeren bir dizge veya bir ImagickPixel nesnesi.

`renk`

  Yeni renk.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`ters`

  `true` belirtilirse `hedef` renk ile eşleşmeyen renkteki piksellerin renkleri değiştirilir.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::optimizeImageLayers

(PECL imagick 2, PECL imagick 3)

Imagick::optimizeImageLayers — En iyilemek amacıyla görüntülerin tekrarlanan bölümlerini siler

### Açıklama

public function Imagick::optimizeImageLayers(): bool

Bir hareketli GIF görüntüde, canlandırma sonuçlarını koruyarak her görüntüyü önceki görüntü ile karşılaştırıp kırpılacak en küçük görüntü karesini seçmeye çalışır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::optimizeImageLayers() örneği

Bir GIF görüntüyü okur, en iyiler ve yazar.

    <?php
    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick("test.gif");

    /* Görüntü katmanlarını en iyile */
    $im->optimizeImageLayers();

    /* Elde edilen görüntüyü dosyaya yaz */
    $im->writeImages("test_optimized.gif", true);
    ?>

### Ayrıca Bakınız

- Imagick::compareImageLayers() - Görüntü katmanlarını karşılaştırıp en iyilenmiş görüntüyü döndürür
- Imagick::writeImages() - Bir görüntüyü veya görüntü kümesini dosyaya yazar
- Imagick::writeImage() - Görüntüyü belirtilen dosyaya yazar

# Imagick::orderedPosterizeImage

(PECL imagick 2 >= 2.2.2, PECL imagick 3)

Imagick::orderedPosterizeImage — Görüntüye kurallı titreklik uygular

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::orderedPosterizeImage(string `$eşik_eşlemi`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Önceden tanımlanmış kıpırtı eşik seviyelerine göre görüntüye titreklik uygular. Belirtilen kanal veya kanallara bağlı olarak çok sayıda eşik seviyesi bulunabilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.1 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`eşik_eşlemi`

  Kullanılacak eşik eşleminin ismini içeren bir dizge.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::orderedPosterizeImage() örneği

    <?php
    function orderedPosterizeImage($imagePath, $orderedPosterizeType) {
        $imagick = new \Imagick(realpath($imagePath));

        $imagick->orderedPosterizeImage($orderedPosterizeType);
        $imagick->setImageFormat('png');

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    //orderedPosterizeImage($imagePath, 'o4x4,3,3');
    //orderedPosterizeImage($imagePath, 'o8x8,6,6');
    orderedPosterizeImage($imagePath, 'h8x8a');
    ?>

# Imagick::paintFloodfillImage

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::paintFloodfillImage — Belirtilen renkle eşleşen piksellerin rengini değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::paintFloodfillImage(
mixed `$dolgu`,
float `$benzerlik`,
mixed `$çerçeve_rengi`,
int `$x`,
int `$y`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Belirtilen `dolgu` rengiyle eşleşen piksellerin ve komşularının rengini değiştirir. ImageMagick 6.3.8 itibariyle bu yöntemin kullanımı önerilmemektedir; yerine Imagick::floodfillPaintImage() kullanılmalıdır.

### Bağımsız Değişkenler

`dolgu`

  Renk ifade eden bir dizge veya bir ImagickPixel nesnesi.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`çerçeve_rengi`

  Çerçeve rengini ifade eden bir dizge veya bir ImagickPixel nesnesi.

`x`

  Dolgunun başlatılacağı X konumu.

`y`

  Dolgunun başlatılacağı Y konumu.

`kanal`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::paintOpaqueImage

(PECL imagick 2, PECL imagick 3)

Imagick::paintOpaqueImage — Bir rengi bir başka renkle değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::paintOpaqueImage(
mixed `$eskisi`,
mixed `$yenisi`,
float `$benzerlik`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

`eskisi` renkteki pikselleri `yenisi` renge çevirir.

### Bağımsız Değişkenler

`eskisi`

  Mevcut rengi ifade eden bir dizge veya bir ImagickPixel nesnesi.

`yenisi`

  Yeni rengi ifade eden bir dizge veya bir ImagickPixel nesnesi.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick2.1.0 | Artık birinci ve ikinci bağımsız değişkenlerde renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::paintTransparentImage

(PECL imagick 2, PECL imagick 3)

Imagick::paintTransparentImage — Görüntüdeki belli bir rengi dolgu rengiyle değiştirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::paintTransparentImage(mixed `$hedef`, float `$alfa`, float `$benzerlik`): bool

Görüntüdeki belli bir rengi dolgu rengiyle değiştirir.

### Bağımsız Değişkenler

`hedef`

  Değiştirilecek renk.

`alfa`

  Şeffaflık seviyesi: 1.0 tam mat ve 0.0 tam şeffaf.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::pingImage

(PECL imagick 2, PECL imagick 3)

Imagick::pingImage — Temel görüntü özniteliklerini bir dosyadan okur

### Açıklama

public function Imagick::pingImage(string `$dosya`): bool

Bu yöntem, görüntünün tamamını belleğe aktarmadan görüntünün boyutlarının ve biçeminin sorgulanmasını sağlar.

### Bağımsız Değişkenler

`dosya`

  Bilgilerin okunacağı dosya.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::pingImageBlob

(PECL imagick 2, PECL imagick 3)

Imagick::pingImageBlob — Temel görüntü özniteliklerini bir dizgeden okur

### Açıklama

publicfunction Imagick::pingImageBlob(string `$görüntü`): bool

Bu yöntem, görüntünün tamamını belleğe aktarmadan görüntünün boyutlarının ve biçeminin sorgulanmasını sağlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`görüntü`

  Görüntü verisini içeren ikil dizge.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::pingImageBlob() örneği

    <?php
    /* Görüntünün içeriğini bir dizgeye oku */
    $image = file_get_contents("test.jpg");

    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* Dizgeyi nesneye aktar */
    $im->pingImageBlob($image);

    /* Görüntünün genişlik ve yüksekliğini bas */
    echo $im->getImageWidth() . 'x' . $im->getImageHeight();
    ?>

### Ayrıca Bakınız

- Imagick::pingImage() - Temel görüntü özniteliklerini bir dosyadan okur
- Imagick::pingImageFile() - Temel görüntü özniteliklerini bir akımdan okur
- Imagick::readImage() - Görüntüyü dosyadar okur
- Imagick::readImageBlob() - Görüntüyü ikil bir dizgeden okur
- Imagick::readImageFile() - Görüntüyü akımdan okur

# Imagick::pingImageFile

(PECL imagick 2, PECL imagick 3)

Imagick::pingImageFile — Temel görüntü özniteliklerini bir akımdan okur

### Açıklama

public function Imagick::pingImageFile(resource `$dt`, string `$dosya` = ?): bool

Bu yöntem, görüntünün tamamını belleğe aktarmadan görüntünün boyutlarının ve biçeminin sorgulanmasını sağlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`filehandle`

  Görüntü için açık bir dosya tanıtıcısı.

`dosya`

  Seçimlik olarak görüntünün dosya ismi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::pingImageFile() örneği

Uzaktaki bir dosyayı açmak

    <?php
    /* Uzak dosyaya fopen */
    $dt = fopen("http://example.com/test.jpg");

    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* Dosya tanıtıcısını nesneye aktar */
    $im->pingImageFile($dt);
    ?>

### Ayrıca Bakınız

- Imagick::pingImage() - Temel görüntü özniteliklerini bir dosyadan okur
- Imagick::pingImageBlob() - Temel görüntü özniteliklerini bir dizgeden okur
- Imagick::readImage() - Görüntüyü dosyadar okur
- Imagick::readImageBlob() - Görüntüyü ikil bir dizgeden okur
- Imagick::readImageFile() - Görüntüyü akımdan okur

# Imagick::polaroidImage

(PECL imagick 2, PECL imagick 3)

Imagick::polaroidImage — Polaroid resmi taklit eder

### Açıklama

function Imagick::polaroidImage(ImagickDraw `$nesne`, float `$açı`): bool

Polaroid resmi taklit eder. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.2 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`nesne`

  Polaroid resmin özellikleri.

`açı`

  Polaroid açısı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::polaroidImage() örneği

    <?php
    /* Nesneyi oluştur */
    $image = new Imagick('source.png');

    /* Matlığı ayarla */
    $image->polaroidImage(new ImagickDraw(), 25);

    /* Görüntüyü çıktıla */
    header('Content-type: image/png');
    echo $image;

    ?>

# Imagick::posterizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::posterizeImage — Görüntüdeki renkleri belli bir sayıya düşürür

### Açıklama

public function Imagick::posterizeImage(int `$seviyeler`, bool `$kıpırtı`): bool

Görüntüdeki renkleri belli bir sayıya düşürür.

### Bağımsız Değişkenler

`seviyeler`

  Her kanalda izin verilen renk sayısı seviyeleri. Düşük değerler daha belirgin etkiler oluşturur.

`kıpırtı`

  Sıfırdan farklı bir tamsayı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::posterizeImage()

    <?php
    function posterizeImage($imagePath, $posterizeType, $numberLevels) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->posterizeImage($numberLevels, $posterizeType);
        $imagick->setImageFormat('png');
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    posterizeImage($imagePath, \Imagick::DITHERMETHOD_RIEMERSMA, 8);

    ?>

# Imagick::previewImages

(PECL imagick 2, PECL imagick 3)

Imagick::previewImages — Görüntü üzerinde yapılacak bir işlem için en uygun bağımsız değişkenin tespitini hızlandırır

### Açıklama

public function Imagick::previewImages(int `$preview`): bool

Bir görüntü işlemini farklı derecelerde uygulayarak, Görüntünün üretilmiş 9 küçük örneğini bir tuvale döşer. Görüntü üzerinde yapılacak bir işlem için en uygun bağımsız değişkenin tespitinde çok işe yarar.

### Bağımsız Değişkenler

`önizleme`

  Önizleme türü sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::previousImage

(PECL imagick 2, PECL imagick 3)

Imagick::previousImage — Bir önceki görüntüye gider

### Açıklama

public function Imagick::previousImage(): bool

Görüntü listesindeki bir önceki görüntüyü Imagick nesnesi ile ilişkilendirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::profileImage

(PECL imagick 2, PECL imagick 3)

Imagick::profileImage — Bir görüntüye profil ekler veya çıkarır

### Açıklama

public function Imagick::profileImage(string `$isim`, ?string `$profil`): bool

Görüntüye bir ICC, IPTC veya soysal bir profil ekler veya olanı siler. Görüntüdeki tüm profilleri silmek için `isim` olarak '*', `profil` olarak `null` belirtilebilir.

### Bağımsız Değişkenler

`isim`

`profil`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::quantizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::quantizeImage — Belli bir görüntü içindeki renk miktarını bulur

### Açıklama

public function Imagick::quantizeImage(
int `$renk_sayısı`,
int `$renk_uzayı`,
int `$ağaç_derinliği`,
bool `$kıpırtı`,
bool `$ölçme_hatası`
): bool

Belli bir görüntü içindeki renkleri inceleyip görüntüyü ifade edebilecek sayıda renk seçer. Algoritmanın amacı, girdi ve çıktı görüntüleri arasındaki renk farkını en aza indirerek işlem zamanını kısaltmaktır.

### Bağımsız Değişkenler

`renk_sayısı`

  Renk sayısı

`renk_uzayı`

  Renk azaltma bu renk uzayında yapılır.

`ağaç_derinliği`

  Normalde sıfır ya da bir olup, bu takdirde renk sayısına en uygun ağaç seçilir. Ağaç derinliği, en az bellek harcayarak en yüksek işlem hızında görüntünün en iyi nasıl ifade edilececeğini belirler. Renk ağacını tam boyutuna genişletmek için 8 kullanın.

`kıpırtı`

  Sıfırdan büyük bir değer komşu pikseller arasındaki farkı dağıtır.

`ölçme_hatası`

  Özgün görüntü ile işlem görmüş görüntü arasındaki farkın ölçüsü olarak sıfırdan farklı bir tamsayı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::quantizeImage()

    <?php
    function quantizeImage($imagePath, $numberColors, $colorSpace, $treeDepth, $dither) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->quantizeImage($numberColors, $colorSpace, $treeDepth, $dither, false);
        $imagick->setImageFormat('png');
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::quantizeImages

(PECL imagick 2, PECL imagick 3)

Imagick::quantizeImages — Bir görüntü kümesi içindeki renk miktarını bulur

### Açıklama

public function Imagick::quantizeImages(
int `$renk_sayısı`,
int `$renk_uzayı`,
int `$ağaç_derinliği`,
bool `$kıpırtı`,
bool `$ölçme_hatası`
): bool

Bir görüntü kümesi içindeki renkleri inceleyip görüntüyü ifade edebilecek sayıda renk seçer. Algoritmanın amacı, girdi ve çıktı görüntüleri arasındaki renk farkını en aza indirerek işlem zamanını kısaltmaktır.

### Bağımsız Değişkenler

`renk_sayısı`

  Renk sayısı.

`renk_uzayı`

  Renk azaltma bu renk uzayında yapılır.

`ağaç_derinliği`

  Normalde sıfır ya da bir olup, bu takdirde renk sayısına en uygun ağaç seçilir. Ağaç derinliği, en az bellek harcayarak en yüksek işlem hızında görüntünün en iyi nasıl ifade edilececeğini belirler. Renk ağacını tam boyutuna genişletmek için 8 kullanın.

`kıpırtı`

  Sıfırdan büyük bir değer komşu pikseller arasındaki farkı dağıtır.

`ölçme_hatası`

  Özgün görüntülerle işlem görmüş görüntüler arasındaki farkın ölçüsü olarak sıfırdan farklı bir tamsayı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::queryFontMetrics

(PECL imagick 2, PECL imagick 3)

Imagick::queryFontMetrics — Yazı tipinin özelliklerini içeren bir dizi döndürür

### Açıklama

public function Imagick::queryFontMetrics(ImagickDraw `$nesne`, string `$metin`, bool `$çoksatırlı` = ?): array

Yazı tipi özelliklerini içeren çok boyutlu bir dizi döndürür.

### Bağımsız Değişkenler

`nesne`

  Yazı tipi özelliklerine bakılacak ImagickDraw nesnesi.

`metin`

  Metin dizgesi.

`çoksatırlı`

  Boş bırakılırsa çok satırlılık otomatik olarak saptanır.

### Dönen Değerler

Yazı tipi özelliklerini içeren çok boyutlu bir dizi.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::queryFontMetrics() örneği

Metni çizmek için kullanılan yazı tipinin özelliklerini sorgular ve sonuçları ekrana döker.

    <?php
    /* Yeni bir Imagick nesnesi oluşturalım */
    $im = new Imagick();

    /* Bir ImagickDraw nesnesi oluşturalım */
    $draw = new ImagickDraw();

    /* Yazı tipini tanımlayalım */
    $draw->setFont('/path/to/font.ttf');

    /* Çok satırlılığı algılatarak yazı tipinin özelliklerini dökelim */
    var_dump($im->queryFontMetrics($draw, "Hello World!"));
    ?>

# Imagick::queryFonts

(PECL imagick 2, PECL imagick 3)

Imagick::queryFonts — Yapılandırımış yazı tiplerini döndürür

### Açıklama

public static function Imagick::queryFonts(string `$şablon` = "*"): array

Imagick yapılandırılmış yazı tiplerini döndürür.

### Bağımsız Değişkenler

`şablon`

  Sorgu şablonu.

### Dönen Değerler

Yapılandırılmış yazı tiplerini içeren bir dizi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::queryFonts() örneği

    <?php
            $output = '';
            $output .= "'Helvetica*' ile eşleşen yazı tipleri:<br/>";

            $fontList = \Imagick::queryFonts("Helvetica*");

            foreach ($fontList as $fontName) {
                $output .= '<li>'. $fontName."</li>";
            }

            return $output;

    ?>

# Imagick::queryFormats

(PECL imagick 2, PECL imagick 3)

Imagick::queryFormats — Imagick tarafından desteklenen biçemleri döndürür

### Açıklama

public static function Imagick::queryFormats(string `$şablon` = "*"): array

Imagick tarafından desteklenen biçemleri döndürür.

### Bağımsız Değişkenler

`şablon`

### Dönen Değerler

Imagick tarafından desteklenen biçemleri içeren bir dizi döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::queryFormats() örneği

    <?php
        function render() {
            $output = "";
            $input = \Imagick::queryformats();
            $columns = 6;

            $output .= "<table border='2'>";

            for ($i=0; $i < count($input); $i += $columns) {
                $output .= "<tr>";
                for ($c=0; $c<$columns; $c++) {
                    $output .= "<td>";
                    if (($i + $c) <  count($input)) {
                        $output .= $input[$i + $c];
                    }
                    $output .= "</td>";
                }
                $output .= "</tr>";
            }

            $output .= "</table>";

            return $output;
        }

    ?>

# Imagick::radialBlurImage

(PECL imagick 2, PECL imagick 3)

Imagick::radialBlurImage — Görüntüye dairesel bulanıklık uygular

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::radialBlurImage(float `$açı`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntüye dairesel bulanıklık uygular.

### Bağımsız Değişkenler

`açı`

  Bulanıklık açısı.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_ALL` öntanımlıdır. Bu bağımsız değişken, sadece, derleme sırasında ImageMagick

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::radialBlurImage()

    <?php
    function radialBlurImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        //Blur 3 times with different radii
        $imagick->radialBlurImage(3);
        $imagick->radialBlurImage(5);
        $imagick->radialBlurImage(7);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::raiseImage

(PECL imagick 2, PECL imagick 3)

Imagick::raiseImage — 3 boyutlu düğme benzeri bir etki oluşturur

### Açıklama

public function Imagick::raiseImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`,
bool `$çıkıntı`
): bool

Görüntünün kenarlarını karartarak ve aydınlatarak üç boyutlu düğme benzeri bir etki oluşturur.

### Bağımsız Değişkenler

`genişlik`

  Çıkıntı genişliği.

`yükseklik`

  Çıkıntı yüksekliği.

`x`

`y`

`çıkıntı`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::raiseImage() örneği

    <?php
    function raiseImage($imagePath, $width, $height, $x, $y, $raise) {
        $imagick = new \Imagick(realpath($imagePath));

        //x ve y gereksiz mi?
        $imagick->raiseImage($width, $height, $x, $y, $raise);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::randomThresholdImage

(PECL imagick 2, PECL imagick 3)

Imagick::randomThresholdImage — Yüksek zıtlığa sahip iki renkli görüntü oluşturur

### Açıklama

public function Imagick::randomThresholdImage(float `$düşük`, float `$yüksek`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Piksel değerlerini tek tek belirtilen eşiğe uygun olarak değiştirir. Elde edilen görüntü, iki renkli yüksek zıtlığa sahip bir görüntü olur. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`düşük`

  Düşük nokta.

`yüksek`

  Yüksek nokta.

`kanal`

  Kanal kipi için geçerli herhangi bir kanal sabiti. Birden fazla kanal belirtmek isterseniz kanal sabitlerini bitsel işleçleri kullanarak birleştirebilirsiniz.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::randomThresholdImage() örneği

    <?php
    function randomThresholdimage($imagePath, $lowThreshold, $highThreshold, $channel) {
        $imagick = new \Imagick(realpath($imagePath));

        $imagick->randomThresholdimage(
            $lowThreshold * \Imagick::getQuantum(),
            $highThreshold * \Imagick::getQuantum(),
            $channel
        );
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::readImage

(PECL imagick 2, PECL imagick 3)

Imagick::readImage — Görüntüyü dosyadar okur

### Açıklama

public function Imagick::readImage(string `$dosya`): bool

Görüntüyü belirtilen dosyadan okur.

### Bağımsız Değişkenler

`dosya`

  Dosya yolu.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::readImageBlob

(PECL imagick 2, PECL imagick 3)

Imagick::readImageBlob — Görüntüyü ikil bir dizgeden okur

### Açıklama

public function Imagick::readImageBlob(string `$dizge`, string `$dosya` = ?): bool

Görüntüyü belirtilen ikil dizgeden okur.

### Bağımsız Değişkenler

`dizge`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::readImageBlob() örneği

    <?php
    function readImageBlob() {
        $base64 = "iVBORw0KGgoAAAANSUhEUgAAAM0AAAD
     NCAMAAAAsYgRbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c
     cllPAAAABJQTFRF3NSmzMewPxIG//ncJEJsldTou1jHgAAAARBJREFUeNrs2EEK
     gCAQBVDLuv+V20dENbMY831wKz4Y/VHb/5RGQ0NDQ0NDQ0NDQ0NDQ0NDQ
     0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PzMWtyaGhoaGhoaGhoaGhoaGhoxtb0QGho
     aGhoaGhoaGhoaGhoaMbRLEvv50VTQ9OTQ5OpyZ01GpM2g0bfmDQaL7S+ofFC6x
     v3ZpxJiywakzbvd9r3RWPS9I2+MWk0+kbf0Hih9Y17U0nTHibrDDQ0NDQ0NDQ0
     NDQ0NDQ0NTXbRSL/AK72o6GhoaGhoRlL8951vwsNDQ0NDQ1NDc0WyHtDTEhD
     Q0NDQ0NTS5MdGhoaGhoaGhoaGhoaGhoaGhoaGhoaGposzSHAAErMwwQ2HwRQ
     AAAAAElFTkSuQmCC";

        $imageBlob = base64_decode($base64);

        $imagick = new Imagick();
        $imagick->readImageBlob($imageBlob);

        header("Content-Type: image/png");
        echo $imagick;
    }

    ?>

# Imagick::readImageFile

(PECL imagick 2, PECL imagick 3)

Imagick::readImageFile — Görüntüyü akımdan okur

### Açıklama

public function Imagick::readImageFile(resource `$dt`, string `$dosya` = `null`): bool

Görüntüyü belirtilen dosya tanıtıcısından okur.

### Bağımsız Değişkenler

`dt`

  Dosya tanıtıcısı.

`dosya`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::readimages

(PECL imagick 2, PECL imagick 3)

Imagick::readimages — Reads image from an array of filenames

### Açıklama

public function Imagick::readImages(array `$filenames`): bool

Reads image from an array of filenames. All the images are held in a single Imagick object.

### Bağımsız Değişkenler

`filenames`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::recolorImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::recolorImage — Görüntüyü yeniden renklendirir

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::animateImages(array `$matris`): bool

Görüntü renklerini döndürür, oranlar, keser, dönüştürür. Her boyda matris desteklense de normalde RGBA için 5x5, CMYK için 6x6 matris kullanılır. Son satırın normalleştirilmiş değerleri içermesi gerekir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`matris`

  Renk değerlerini içeren matris.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::recolorImage() örneği

    <?php
    function recolorImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $remapColor = [ 1, 0, 0,
            0, 0, 1,
            0, 1, 0,];

    //$remapColor = [
    //    1.438, -0.122, -0.016,  0, 0, -0.03,
    //    -0.062,  1.378, -0.016,  0, 0,  0.05,
    //    -0.062, -0.122, 1.483,   0, 0, -0.02,
    //];

        @$imagick->recolorImage($remapColor);

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::displayImage() - Bir görüntüyü gösterir

# Imagick::reduceNoiseImage

(PECL imagick 2, PECL imagick 3)

Imagick::reduceNoiseImage — Görüntünün dış hatlarını yumuşatır

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

publicfunction Imagick::reduceNoiseImage(float `$yarıçap`): bool

Görüntünün dış hatlarını kenar bilgisini koruyarak yumuşatır. Algoritma, her pikselin rengini komşu pikselin rengine en yakın renkle değiştirerek çalışır. Komşuluk `yarıçap` ile belirlenir.

### Bağımsız Değişkenler

`yarıçap`

  0 belirtilirse yöntem uygun bir yarıçap seçecektir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::reduceNoiseImage() örneği

    <?php
    function reduceNoiseImage($imagePath, $reduceNoise) {
        $imagick = new \Imagick(realpath($imagePath));
        @$imagick->reduceNoiseImage($reduceNoise);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::remapImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::remapImage — Remaps image colors

### Açıklama

public function Imagick::remapImage(Imagick `$replacement`, int `$DITHER`): bool

Replaces colors an image with those defined by `replacement`. The colors are replaced with the closest possible color. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.5 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`replacement`

  An Imagick object containing the replacement colors

`DITHER`

  Refer to this list of dither method constants

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::removeImage

(PECL imagick 2, PECL imagick 3)

Imagick::removeImage — Görüntü kümesinden görüntü siler

### Açıklama

public function Imagick::removeImage(): bool

Görüntü kümesinden görüntü siler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::removeImageProfile

(PECL imagick 2, PECL imagick 3)

Imagick::removeImageProfile — İsimli görüntü profilini silip döndürür

### Açıklama

public function Imagick::removeImageProfile(string `$isim`): string

İsimli görüntü profilini silip döndürür.

### Bağımsız Değişkenler

`isim`

### Dönen Değerler

Görüntünün profilini bir dizge olarak döndürür.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::render

(PECL imagick 2, PECL imagick 3)

Imagick::render — Evvelce verilmiş tüm çizim komutlarını uygular

### Açıklama

public function Imagick::render(): bool

Evvelce verilmiş tüm çizim komutlarını uygular.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::resampleImage

(PECL imagick 2, PECL imagick 3)

Imagick::resampleImage — Belirtilen çözünürlüğe göre görüntüyü yeniden örnekler

### Açıklama

public function Imagick::resampleImage(
float `$x_çözünürlüğü`,
float `$y_çözünürlüğü`,
int `$süzgeç`,
float `$bulanıklık`
): bool

Belirtilen çözünürlüğe göre görüntüyü yeniden örnekler.

### Bağımsız Değişkenler

`x_çözünürlüğü`

`y_çözünürlüğü`

`süzgeç`

`bulanıklık`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::resampleImage() örneği

    <?php
    function resampleImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));

        $imagick->resampleImage(200, 200, \Imagick::FILTER_LANCZOS, 1);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::resetImagePage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::resetImagePage — Görüntü sayfasını sıfırlar

### Açıklama

public function Imagick::resetImagePage(string `$sayfa`): bool

Sayfa tanımlama biçemi: GxY+x+y. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`sayfa`

  Bir dizge olarak sayfa tanımı. Örnek: `7168x5147+0+0`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::resizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::resizeImage — Görüntüyü boyutlandırır

### Açıklama

public function Imagick::resizeImage(
int `$genişlik`,
int `$yükseklik`,
int `$süzgeç`,
float `$bulanıklık`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool

Bir süzgeç kullanarak görüntüyü boyutlarını belirtildiği gibi değiştirir.

> Bilginize: `sığdır` bağımsız değişkeninin davranışı Imagick 3.0.0 sürümünde değişmiştir. Evvelce 200x150 ebadındaki bir görüntü 400x400 ebadındaki bir alana sığdırılmak istendiğinde bu yapılmazdı. Artık görüntü 400x300 ebadına getirilerek belirtilen alana sığdırılmaktadır. `sığdır` bağımsız değişkeni kullanıldığı takdirde yükseklik ve genişliğin ikisi de verilmelidir.

### Bağımsız Değişkenler

`genişlik`

  Resmin genişliği.

`yükseklik`

  Resmin yüksekliği.

`süzgeç`

  Süzgeç sabitlerinden biri.

`bulanıklık`

  Birden büyük değerler bulanıklığı, küçük değerler netliği arttırır.

`fit`

  Boyutlara sığdırmayı zorlayan seçimlik bağımsız değişken.

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Seçimlik `sığdır` bağımsız değişkeni eklendi. Yöntem artık sadece yükseklik veya genişlik vererek oranlamayı da destekliyor. Hesaplanacak boyut için bağımsız değişkene 0 belirtmek gerekiyor.

# Imagick::rollImage

(PECL imagick 2, PECL imagick 3)

Imagick::rollImage — Görüntünün başlangıç noktasını tanımlar

### Açıklama

public function Imagick::rollImage(int `$x`, int `$y`): bool

Görüntünün başlangıç noktasını tanımlar.

### Bağımsız Değişkenler

`x`

  Noktanın X konumu.

`y`

  Noktanın Y konumu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::rollImage() örneği

    <?php
    function rollImage($imagePath, $rollX, $rollY) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->rollimage($rollX, $rollY);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::rotateImage

(PECL imagick 2, PECL imagick 3)

Imagick::rotateImage — Görüntüyü döndürür

### Açıklama

public function Imagick::rotateImage(mixed `$artalan`, float `$açı`): bool

Görüntüyü `açı` derece döndürür. Görüntünün döndürülmesiyle boşalan üçgenler `artalan` rengiyle doldurulur.

### Bağımsız Değişkenler

`artalan`

  Artalan rengi.

`açı`

  Derece cinsinden dönme açısı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::rotateImage() örneği

    <?php
    function rotateImage($imagePath, $angle, $color) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->rotateimage($color, $angle);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::rotationalBlurImage

(PECL imagick 3 >= 3.3.0)

Imagick::rotationalBlurImage — Rotational blurs an image

### Açıklama

public function Imagick::rotationalBlurImage(float `$angle`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Rotational blurs an image.

### Bağımsız Değişkenler

`angle`

  The angle to apply the blur over.

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::rotationalBlurImage()

    <?php
    function rotationalBlurImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->rotationalBlurImage(3);
        $imagick->rotationalBlurImage(5);
        $imagick->rotationalBlurImage(7);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::roundCorners

(PECL imagick 2, PECL imagick 3)

Imagick::roundCorners — Görüntünün köşelerini yuvarlatır

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::roundCorners(
float `$x_yarıçapı`,
float `$y_yarıçapı`,
float `$vurgu_genişliği` = 10,
float `$yer_değiştirme` = 5,
float `$boyut_düzeltme` = -6
): bool

Görüntünün köşelerini yuvarlatır. İlk iki bağımsız değişken yuvarlatma miktarını belirlerken, son üç bağımsız değişken ise yuvarlatma işleminin hassas ayarı için kullanılır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir. Imagick, ImageMagick 7.0.0 veya daha yeni bir sürümle derlenmişse bu yöntem kullanılamaz.

### Bağımsız Değişkenler

`x_yarıçapı`

  X yarıçapı.

`y_yarıçapı`

  Y yarıçapı.

`vurgu_genişliği`

  Vurgu genişliği

`yer_değiştirme`

  Yer değiştirme miktarı.

`boyut_düzeltme`

  Boyut düzeltme miktarı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::roundCorners() örneği

    <?php

    $image = new Imagick();
    $image->newPseudoImage(100, 100, "magick:rose");
    $image->setImageFormat("png");

    $image->roundCorners(5,3);
    $image->writeImage("rounded.png");
    ?>

# Imagick::sampleImage

(PECL imagick 2, PECL imagick 3)

Imagick::sampleImage — Görüntüyü piksel örneklemeyle oranlar

### Açıklama

public function Imagick::sampleImage(int `$genişlik`, int `$yükseklik`): bool

Görüntüyü piksel örnekleme yöntemiyle istenen boyutlara ayarlar. Diğer oranlama yöntemlerinin tersine bu yöntem görüntüye fazladan renk eklemez.

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::scaleImage

(PECL imagick 2, PECL imagick 3)

Imagick::scaleImage — Görüntünün enboy oranını ayarlar

### Açıklama

public function Imagick::scaleImage(
int `$genişlik`,
int `$yükseklik`,
bool `$sığdır` = `false`,
bool `$eski` = `false`
): bool

Görüntünün boyutlarını belirtilen değerlere ayarlar. 0 olarak belirtilen bağımsız değişken görüntünün enboy oranı hesaba katılarak diğer bağımsız değişkene göre hesaplanır.

> Bilginize: `sığdır` bağımsız değişkeninin davranışı Imagick 3.0.0 sürümünde değişmiştir. Evvelce 200x150 ebadındaki bir görüntü 400x400 ebadındaki bir alana sığdırılmak istendiğinde bu yapılmazdı. Artık görüntü 400x300 ebadına getirilerek belirtilen alana sığdırılmaktadır. `sığdır` bağımsız değişkeni kullanıldığı takdirde yükseklik ve genişliğin ikisi de verilmelidir.

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

`sığdır`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Seçimlik `sığdır` bağımsız değişkeni eklendi. Yöntem artık sadece yükseklik veya genişlik vererek oranlamayı da destekliyor. Hesaplanacak boyut için bağımsız değişkene 0 belirtmek gerekiyor.

### Örnekler

Örnek 1 - Imagick::scaleImage() örneği

    <?php
    function scaleImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->scaleImage(150, 150, true);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::segmentImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::segmentImage — Segments an image

### Açıklama

public function Imagick::segmentImage(
int `$COLORSPACE`,
float `$cluster_threshold`,
float `$smooth_threshold`,
bool `$verbose` = `false`
): bool

Analyses the image and identifies units that are similar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.5 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`COLORSPACE`

  One of the COLORSPACE constants.

`cluster_threshold`

  A percentage describing minimum number of pixels contained in hexedra before it is considered valid.

`smooth_threshold`

  Eliminates noise from the histogram.

`verbose`

  Whether to output detailed information about recognised classes.

### Dönen Değerler

### Örnekler

Örnek 1 Imagick::segmentImage()

    <?php
    function segmentImage($imagePath, $colorSpace, $clusterThreshold, $smoothThreshold) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->segmentImage($colorSpace, $clusterThreshold, $smoothThreshold);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    segmentImage($imagePath, \Imagick::COLORSPACE_RGB, 5, 5);

    ?>

# Imagick::selectiveBlurImage

(PECL imagick 3 >= 3.3.0)

Imagick::selectiveBlurImage — Selectively blur an image within a contrast threshold

### Açıklama

public function Imagick::selectiveBlurImage(
float `$radius`,
float `$sigma`,
float `$threshold`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool

Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold.

### Bağımsız Değişkenler

`radius`

`sigma`

`threshold`

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::selectiveBlurImage()

    <?php
    function selectiveBlurImage($imagePath, $radius, $sigma, $threshold, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->selectiveBlurImage($radius, $sigma, $threshold, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::separateImageChannel

(PECL imagick 2, PECL imagick 3)

Imagick::separateImageChannel — Görüntüden bir kanalı ayırır

### Açıklama

public function Imagick::separateImageChannel(int `$kanal`): bool

Görüntüden bir kanalı ayırır.

### Bağımsız Değişkenler

`kanal`

  Ayrılacak kanal. 1, 2 ve 3. kanal için sırasıyla CHANNEL_RED, CHANNEL_GREEN, CHANNEL_BLUE sabitleri kullanılabilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::separateImageChannel() örneği

    <?php
    function separateImageChannel($imagePath, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->separateimagechannel($channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    separateImageChannel($imagePath, \Imagick::CHANNEL_GREEN);

    ?>

# Imagick::sepiaToneImage

(PECL imagick 2, PECL imagick 3)

Imagick::sepiaToneImage — Görüntüye kızıl kahverengi tonlama uygular

### Açıklama

public function Imagick::sepiaToneImage(float `$eşik`): bool

Görüntüye karanlık odada uygulanan kızıl kahverengi tonlamaya benzer özel bir etki uygular.

### Bağımsız Değişkenler

`threshold`

  0 ile parçacık aralığı (QuantumRange) arasında bir değer olarak belirtilir. Makul bir tonlama için 80 iyi bir başlangıç noktasıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::sepiaToneImage() örneği

    <?php
    function sepiaToneImage($imagePath, $sepia) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->sepiaToneImage($sepia);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setBackgroundColor

(PECL imagick 2, PECL imagick 3)

Imagick::setBackgroundColor — Nesnenin öntanımlı artalan rengini tanımlar

### Açıklama

public function Imagick::setBackgroundColor(mixed `$renk`): bool

Nesnenin öntanımlı artalan rengini tanımlar.

### Bağımsız Değişkenler

`renk`

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::setColorspace

(PECL imagick 3)

Imagick::setColorspace — Set colorspace

### Açıklama

public function Imagick::setColorspace(int `$COLORSPACE`): bool

Sets the global colorspace value for the object. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.5.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`COLORSPACE`

  One of the COLORSPACE constants

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setCompression

(PECL imagick 2, PECL imagick 3)

Imagick::setCompression — Nesnenin öntanımlı sıkıştırma türünü tanımlar

### Açıklama

public function Imagick::setCompression(int `$sıkıştırma`): bool

Nesnenin öntanımlı sıkıştırma türünü tanımlar.

### Bağımsız Değişkenler

`sıkıştırma`

  Sıkıştırma türü. Bkz: Imagick::COMPRESSION_* sabitleri.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setCompressionQuality

(PECL imagick 2, PECL imagick 3)

Imagick::setCompressionQuality — Nesnenin öntanımlı sıkıştırma seviyesini tanımlar

### Açıklama

public function Imagick::setCompressionQuality(int `$seviye`): bool

Nesnenin öntanımlı sıkıştırma seviyesini tanımlar

Dikkat

Bu yöntem sadece, Imagick::newPseudoImage gibi yöntemlerle yeni oluşturulmuş görüntüler üzerinde çalışır. Eski görüntüler için Imagick::setImageCompressionQuality() yöntemi kullanılmalıdır.

### Bağımsız Değişkenler

`seviye`

  1-100 arasında bir tamsayı, 1 = çok sıkıştırma, 100 = az sıkıştırma.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setCompressionQuality() örneği

    <?php
    function setCompressionQuality($imagePath, $quality) {

        $backgroundImagick = new \Imagick(realpath($imagePath));
        $imagick = new \Imagick();
        $imagick->setCompressionQuality($quality);
        $imagick->newPseudoImage(
            $backgroundImagick->getImageWidth(),
            $backgroundImagick->getImageHeight(),
            'canvas:white'
        );

        $imagick->compositeImage(
            $backgroundImagick,
            \Imagick::COMPOSITE_ATOP,
            0,
            0
        );

        $imagick->setFormat("jpg");
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setFilename

(PECL imagick 2, PECL imagick 3)

Imagick::setFilename — Görüntüye dosya ismi tanımlar

### Açıklama

public function Imagick::setFilename(string `$dosya`): bool

Okumak veya yazmak için görüntüye dosya ismi tanımlar.

### Bağımsız Değişkenler

`dosya`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setFirstIterator

(PECL imagick 2, PECL imagick 3)

Imagick::setFirstIterator — Imagick yineleyiciyi ilk görüntüye konumlar

### Açıklama

public function Imagick::setFirstIterator(): bool

Imagick yineleyiciyi ilk görüntüye konumlar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setFont

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::setFont — Imagick nesnesinin yazı tipini tanımlar

### Açıklama

public function Imagick::setFont(string `$yazıtipi`): bool

Imagick nesnesinin yazı tipini tanımlar. Bu yöntemle pseudo-format gibi bir başlık yazı tipi belirtilebilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6-4 veya sonraki bir sürümü kuruluysa kullanılabilir. Yazı tipinin ImageMagick yapılandırmasına dahil edilmiş olması ve `yazıtipi` dosyasının mevcut olması gerekir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`yazıtipi`

  Yazı tipi ismi veya yazı tipi dosyasının ismi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setFont() örneği

    <?php
    /* Bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* Nesneye bir yazı tipi ata */
    $im->setFont("example.ttf");

    /* Yeni bir başlık oluştur */
    $im->newPseudoImage(100, 100, "caption:Hello");

    /* Nesne üzerinde başka işlemler yap */
    ?>

### Ayrıca Bakınız

- Imagick::getFont() - Yazıtipini döndürür
- ImagickDraw::setFont() - Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler
- ImagickDraw::getFont() - Geçerli yazı tipini döndürür

# Imagick::setFormat

(PECL imagick 2, PECL imagick 3)

Imagick::setFormat — Imagick nesnesinin biçemini tanımlar

### Açıklama

public function Imagick::setFormat(string `$biçem`): bool

Imagick nesnesinin biçemini tanımlar.

### Bağımsız Değişkenler

`biçem`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setGravity

(PECL imagick 2 >= 2.2.0, PECL imagick 3)

Imagick::setGravity — Sets the gravity

### Açıklama

public function Imagick::setGravity(int `$gravity`): bool

Sets the global gravity property for the Imagick object. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.0 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`gravity`

  The gravity property. Refer to the list of gravity constants.

### Dönen Değerler

Hiçbir değer dönmez.

# Imagick::setImage

(PECL imagick 2, PECL imagick 3)

Imagick::setImage — Nesnedeki görüntüyü değiştirir

### Açıklama

public function Imagick::setImage(Imagick `$yenisi`): bool

Geçerli görüntüyü `yenisi` ile değiştirir.

### Bağımsız Değişkenler

`yenisi`

  Geçerli görüntünün yerine konacak resim.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImage() örneği

    <?php
    /* Nesneleri oluşturalım */
    $eskisi = new Imagick('eski.jpg');
    $yenisi = new Imagick('yeni.jpg');

    /* Eskisinin yerine yenisini koyalım */
    $eskisi->setImage($yenisi);

    /* görüntüyü çıktılayalım */
    header('Content-type: image/jpeg');
    echo $eskisi;

    ?>

# Imagick::setImageAlphaChannel

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::setImageAlphaChannel — Görüntünün şeffaflık kanalını tanımlar

### Açıklama

public function Imagick::setImageAlphaChannel(int `$kip`): bool

Görüntünün şeffaflık kanalını etkin veya etkisiz kılar. `kip` bağımsız değişkeni `Imagick::ALPHACHANNEL_*` sabitlerinden biri olmalıdır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.8 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`kip`

  `Imagick::ALPHACHANNEL_*` sabitlerinden biri olmalıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Ayrıca Bakınız

- Imagick::setImageMatte() - Görüntünün matlık kanalını ayarlar
- Imagick Şeffaflık Kanalı Sabitleri

# Imagick::setImageArtifact

(PECL imagick 3)

Imagick::setImageArtifact — Set image artifact

### Açıklama

public function Imagick::setImageArtifact(string `$artifact`, string `$value`): bool

Associates an artifact with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.5.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`artifact`

  The name of the artifact

`value`

  The value of the artifact

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Imagick::setImageArtifact()

    <?php
    function setImageArtifact() {

        $src1 = new \Imagick(realpath("./images/artifact/source1.png"));
        $src2 = new \Imagick(realpath("./images/artifact/source2.png"));

        $src2->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
        $src2->setImageArtifact('compose:args', "1,0,-0.5,0.5");
        $src1->compositeImage($src2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);

        $src1->setImageFormat('png');
        header("Content-Type: image/png");
        echo $src1->getImagesBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::getImageArtifact() - Get image artifact
- Imagick::deleteImageArtifact() - Delete image artifact

# Imagick::setImageAttribute

(PECL imagick 2, PECL imagick 3)

Imagick::setImageAttribute — Sets an image attribute

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageAttribute(string `$key`, string `$value`): bool

Sets an image attribute.

### Bağımsız Değişkenler

`key`

`value`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageBackgroundColor

(PECL imagick 2, PECL imagick 3)

Imagick::setImageBackgroundColor — Görüntünün artalan rengini tanımlar

### Açıklama

public function Imagick::setImageBackgroundColor(mixed `$renk`): bool

Görüntünün artalan rengini tanımlar

### Bağımsız Değişkenler

`renk`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::setImageBias

(PECL imagick 2, PECL imagick 3)

Imagick::setImageBias — Görüntüyü evriştirmekte kullanılan yöntem için görüntü sapmasını tanımlar

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageBias(float `$sapma`): bool

Görüntüyü evriştirmekte kullanılan yöntem (Imagick::convolveImage gibi()) için görüntü sapmasını tanımlar.

### Bağımsız Değişkenler

`sapma`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageBias() örneği

    <?php
    // Buradaki convolveImage kullanımı için ImageMagick 6.9.0-1 gerekir
    function setImageBias($bias) {
        $imagick = new \Imagick(realpath("images/stack.jpg"));

        $xKernel = array(
            -0.70, 0, 0.70,
            -0.70, 0, 0.70,
            -0.70, 0, 0.70
        );

        $imagick->setImageBias($bias * \Imagick::getQuantum());
        $imagick->convolveImage($xKernel, \Imagick::CHANNEL_ALL);

        $imagick->setImageFormat('png');

        header('Content-type: image/png');
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setImageBiasQuantum

(PECL imagick 3 >= 3.3.0)

Imagick::setImageBiasQuantum — Sets the image bias

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageBiasQuantum(float `$bias`): void

Sets the image bias. Bias should be scaled with `0` (no adjustment) to `1` (quantum value).

### Bağımsız Değişkenler

`bias`

### Dönen Değerler

# Imagick::setImageBluePrimary

(PECL imagick 2, PECL imagick 3)

Imagick::setImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktasını tanımlar

### Açıklama

public function Imagick::setImageBluePrimary(float `$x`, float `$y`): bool

Görüntünün renk bileşenlerinden birincil mavi noktasını tanımlar.

### Bağımsız Değişkenler

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageBorderColor

(PECL imagick 2, PECL imagick 3)

Imagick::setImageBorderColor — Görüntünün çerçeve rengini tanımlar

### Açıklama

public function Imagick::setImageBorderColor(mixed `$renk`): bool

Görüntünün çerçeve rengini tanımlar.

### Bağımsız Değişkenler

`renk`

  Çerçeve rengi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::setImageChannelDepth

(PECL imagick 2, PECL imagick 3)

Imagick::setImageChannelDepth — Belli bir görüntü kanalının derinliğini tanımlar

### Açıklama

public function Imagick::setImageChannelDepth(int `$kanal`, int `$derinlik`): bool

Belli bir görüntü kanalının derinliğini tanımlar.

### Bağımsız Değişkenler

`kanal`

`derinlik`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageClipMask

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::setImageClipMask — Görüntü kırpma maskesini tanımlar

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageClipMask(Imagick `$kırpıcı_resim`): bool

Görüntü kırpma maskesi olarak bir nesne tanımlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`kırpıcı_resim`

  Kırpma maskesini içeren Imagick nesnesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageClipMask() örneği

    <?php
    function setImageClipMask($imagePath) {
        $imagick = new \Imagick();
        $imagick->readImage(realpath($imagePath));

        $width = $imagick->getImageWidth();
        $height = $imagick->getImageHeight();

        $clipMask = new \Imagick();
        $clipMask->newPseudoImage(
            $width,
            $height,
            "canvas:transparent"
        );

        $draw = new \ImagickDraw();
        $draw->setFillColor('white');
        $draw->circle(
            $width / 2,
            $height / 2,
            ($width / 2) + ($width / 4),
            $height / 2
        );
        $clipMask->drawImage($draw);
        $imagick->setImageClipMask($clipMask);

        $imagick->negateImage(false);
        $imagick->setFormat("png");

        header("Content-Type: image/png");
        echo $imagick->getImagesBlob();

    }

    ?>

# Imagick::setImageColormapColor

(PECL imagick 2, PECL imagick 3)

Imagick::setImageColormapColor — Renk eşlemi indisi belirtilen rengi tanımlar

### Açıklama

public function Imagick::setImageColormapColor(int `$indis`, ImagickPixel `$renk`): bool

Renk eşlemi indisi belirtilen rengi tanımlar.

### Bağımsız Değişkenler

`indis`

`renk`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageColorspace

(PECL imagick 2, PECL imagick 3)

Imagick::setImageColorspace — Görüntünün renk uzayını tanımlar

### Açıklama

public function Imagick::setImageColorspace(int `$renk_uzayı`): bool

Görüntünün renk uzayını tanımlar. Bu yöntem yeni görüntü oluştururken kullanılmalıdır. Eski görüntüler için Imagick::transformImageColorspace() kullanılmalıdır.

### Bağımsız Değişkenler

`renk_uzayı`

  COLORSPACE sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageCompose

(PECL imagick 2, PECL imagick 3)

Imagick::setImageCompose — Görüntü birleştirme işlecini tanımlar

### Açıklama

public function Imagick::setImageCompose(int `$işleç`): bool

Görüntü birleştirme işlecini tanımlar. Imagick::montageImage() yöntemi kullanılırken görüntünün küçük örneğinin nasıl oluşturulacağını belirlemek için yararlıdır.

### Bağımsız Değişkenler

`işleç`

  Birleşterme işleci sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageCompression

(PECL imagick 2, PECL imagick 3)

Imagick::setImageCompression — Görüntü sıkıştırma seviyesini tanımlar

### Açıklama

public function Imagick::setImageCompression(int `$sıkıştırma`): bool

Görüntü sıkıştırma seviyesini tanımlar.

### Bağımsız Değişkenler

`sıkıştırma`

  Sıkıştırma sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageCompressionQuality

(PECL imagick 2, PECL imagick 3)

Imagick::setImageCompressionQuality — Görüntü sıkıştırma seviyesini belirler

### Açıklama

public function Imagick::setImageCompressionQuality(int `$seviye`): bool

Görüntünün sıkıştırma seviyesini belirler.

### Bağımsız Değişkenler

`seviye`

  Tamsayı olarak sıkıştırma seviyesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageCompressionQuality() örneği

    <?php
    function setImageCompressionQuality($imagePath, $quality) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageCompressionQuality($quality);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setImageDelay

(PECL imagick 2, PECL imagick 3)

Imagick::setImageDelay — Görüntü gecikmesini tanımlar

### Açıklama

public function Imagick::setImageDelay(int `$gecikme`): bool

Görüntü gecikmesini tanımlar. Canlandırmalı görüntüler için, sonraki kareye geçmeden önce beklenecek süredir.

Nesnedeki her kare için tek tek gecikme süresi belirlenebilir.

### Bağımsız Değişkenler

`gecikme`

  Karenin gösterilme süresi 'tikler' ile ifade edilir. Canlandırmalı GIF'lerde 100 tik 1 saniyeye eşittir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageDelay() ile canlandırmalı GIF'te değişiklik yapmak

    <?php

    // Burada canlanırmalı GIF kare hızı 50ms'den sıfıra kadar değiştiriliyor.
    // Bu durumda bazı tarayıcılar bazı kareleri atlayabilir.
    $imagick = new Imagick(realpath("Test.gif"));
    $imagick = $imagick->coalesceImages();

    $frameCount = 0;

    foreach ($imagick as $frame) {
        $imagick->setImageDelay((($frameCount % 11) * 5));
        $frameCount++;
    }

    $imagick = $imagick->deconstructImages();

    $imagick->writeImages("/path/to/save/output.gif", true);

    ?>

# Imagick::setImageDepth

(PECL imagick 2, PECL imagick 3)

Imagick::setImageDepth — Görüntü derinliğini tanımlar

### Açıklama

public function Imagick::setImageDepth(int `$derinlik`): bool

Görüntü derinliğini tanımlar.

### Bağımsız Değişkenler

`derinlik`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageDispose

(PECL imagick 2, PECL imagick 3)

Imagick::setImageDispose — Görüntünün elden çıkarma yöntemini tanımlar

### Açıklama

public function Imagick::setImageDispose(int `$yöntem`): bool

Görüntünün elden çıkarma yöntemini tanımlar.

### Bağımsız Değişkenler

`yöntem`

  Elden çıkarma türü sabitlerinden biri

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageExtent

(PECL imagick 2, PECL imagick 3)

Imagick::setImageExtent — Görüntünün boyutlarını tanımlar

### Açıklama

public function Imagick::setImageExtent(int `$genişlik`, int `$yükseklik`): bool

Görüntünün boyutlarını `genişlik` ve `yükseklik` olarak tanımlar.

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageFilename

(PECL imagick 2, PECL imagick 3)

Imagick::setImageFilename — Belli bir görüntünün dosya ismini tanımlar

### Açıklama

public function Imagick::setImageFilename(string `$dosya`): bool

Bir görüntü silsilesi içinde belli bir görüntünün dosya ismini tanımlar.

### Bağımsız Değişkenler

`dosya`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageFormat

(PECL imagick 2, PECL imagick 3)

Imagick::setImageFormat — Belli bir görüntünün biçemini tanımlar

### Açıklama

public function Imagick::setImageFormat(string `$biçem`): bool

Bir görüntü silsilesi içinde belli bir görüntünün biçemini tanımlar.

### Bağımsız Değişkenler

`biçem`

  Görüntü biçeminin dizgesel gösterimi. Desteklenen biçimler ImageMagick kurulumuna bağlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageGamma

(PECL imagick 2, PECL imagick 3)

Imagick::setImageGamma — Görüntünün gammasını tanımlar

### Açıklama

public function Imagick::setImageGamma(float `$gamma`): bool

Görüntünün gammasını tanımlar.

### Bağımsız Değişkenler

`gamma`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageGravity

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::setImageGravity — Sets the image gravity

### Açıklama

public function Imagick::setImageGravity(int `$gravity`): bool

Sets the gravity property for the current image. This method can be used to set the gravity property for a single image sequence. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.4 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`gravity`

  The gravity property. Refer to the list of gravity constants.

### Dönen Değerler

Hiçbir değer dönmez.

# Imagick::setImageGreenPrimary

(PECL imagick 2, PECL imagick 3)

Imagick::setImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı tanımlar

### Açıklama

public function Imagick::setImageGreenPrimary(float `$x`, float `$y`): bool

Görüntünün renk bileşenlerinden birincil yeşil noktayı tanımlar.

### Bağımsız Değişkenler

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageIndex

(PECL imagick 2, PECL imagick 3)

Imagick::setImageIndex — Yineleyici konumunu tanımlar

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageIndex(int `$indis`): bool

Yineleyicinin görüntüdeki konumunu belirtilen indise ayarlar.

Bu yöntemin kullanımı artık önerilmemektedir. Yerine Imagick::setIteratorIndex() yöntemini kullanın.

### Bağımsız Değişkenler

`indis`

  Yineleyiciye atanacak konum.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageInterlaceScheme

(PECL imagick 2, PECL imagick 3)

Imagick::setImageInterlaceScheme — Görüntü geçişim şemasını tanımlar

### Açıklama

public function Imagick::setImageInterlaceScheme(int `$geçişim_şeması`): bool

Görüntü geçişim şemasını tanımlar.

### Bağımsız Değişkenler

`geçişim_şeması`

  Geçişim sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageInterpolateMethod

(PECL imagick 2, PECL imagick 3)

Imagick::setImageInterpolateMethod — Görüntünün aradeğer pikseli yöntemini tanımlar

### Açıklama

public function Imagick::setImageInterpolateMethod(int `$yöntem`): bool

Görüntünün aradeğer pikseli yöntemini tanımlar.

### Bağımsız Değişkenler

`yöntem`

  `Imagick::INTERPOLATE_*` sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageIterations

(PECL imagick 2, PECL imagick 3)

Imagick::setImageIterations — Görüntü yineleme sayısını tanımlar

### Açıklama

public function Imagick::setImageIterations(int `$yineleme`): bool

Canlandırmalı bir görüntünün yinelenme sayısını ayarlar.

### Bağımsız Değişkenler

`yineleme`

  Yineleme sayısı. '0' sürekli yinelenecek anlamına gelir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageIterations() örneği

    <?php

    $imagick = new Imagick(realpath("Test.gif"));

    $imagick = $imagick->coalesceImages();
    $imagick->setImageIterations(1);
    $imagick = $imagick->deconstructImages();

    $imagick->writeImages('/path/to/save/OnceOnly.gif', true);

    ?>

# Imagick::setImageMatte

(PECL imagick 2, PECL imagick 3)

Imagick::setImageMatte — Görüntünün matlık kanalını ayarlar

### Açıklama

public function Imagick::setImageMatte(bool `$matlık`): bool

Görüntünün matlık kanalını ayarlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`matlık`

  `true` matlık kanalını etkin kılar, `false` iptal eder.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageMatteColor

(PECL imagick 2, PECL imagick 3)

Imagick::setImageMatteColor — Görüntünün şeffaf rengini tanımlar

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageMatteColor(mixed `$şeffaf_renk`): bool

Görüntünün şeffaf rengini tanımlar.

### Bağımsız Değişkenler

`şeffaf_renk`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık renk olarak rengi ifade eden bir dizge belirtilebiliyor. Evvelce sadece ImagickPixel nesnesi belirtilebiliyordu.

# Imagick::setImageOpacity

(PECL imagick 2, PECL imagick 3)

Imagick::setImageOpacity — Görüntünün matlık seviyesini tanımlar

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::setImageOpacity(float `$matlık`): bool

Görüntünün matlık seviyesini belirtilen seviyeye ayarlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.1 veya sonraki bir sürümü kuruluysa kullanılabilir. Bu yöntem tüm kanallarda çalışır. Örneğin 0,5 matlık değeri tüm şeffaf alanların kısmen mat olarak ayarlanacağı anlamına gelir. Şeffaf olmayan alanların tamamını şeffaf yapmak için Imagick::evaluateImage() yöntemini kullanın.

### Bağımsız Değişkenler

`matlık`

  Şeffaflık seviyesi. Tam mat: 1.0; tam şeffaf: 0.0

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setImageOpacity() örneği

    <?php
    /* Nesneyi oluştur */
    $image = new Imagick('source.png');

    /* Matlığı ayarla */
    $image->setImageOpacity(0.7);

    /* Görüntüyü çıktıla */
    header('Content-Type: image/png');
    echo $image;

    ?>

# Imagick::setImageOrientation

(PECL imagick 2, PECL imagick 3)

Imagick::setImageOrientation — Görüntünün baskı yönünü tanımlar

### Açıklama

public function Imagick::setImageOrientation(int `$baskı_yönü`): bool

Görüntünün baskı yönünü tanımlar.

### Bağımsız Değişkenler

`baskı_yönü`

  Yön sabitlerinden (`ORIENTATION_`) biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::setImageOrientation()

    <?php
    // Görünüşe göre hiçbir şey yapmıyor
    function setImageOrientation($imagePath, $orientationType) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageOrientation($orientationType);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setImagePage

(PECL imagick 2, PECL imagick 3)

Imagick::setImagePage — Görüntünün sayfa geometrisini tanımlar

### Açıklama

public function Imagick::setImagePage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Görüntünün sayfa geometrisini tanımlar.

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageProfile

(PECL imagick 2, PECL imagick 3)

Imagick::setImageProfile — Imagick nesnesine isimli bir profil ekler

### Açıklama

public function Imagick::setImageProfile(string `$isim`, string `$profil`): bool

Imagick nesnesine isimli bir profil ekler. Aynı isimde bir profil varsa onun yerine geçer. Bu yöntem, CMS renk profillerini uygulamayan Imagick::ProfileImage() yönteminden farklıdır.

### Bağımsız Değişkenler

`isim`

  Profilin ismi.

`profil`

  Profil dizgesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageProperty

(PECL imagick 2, PECL imagick 3)

Imagick::setImageProperty — Bir görüntü özelliğini tanımlar

### Açıklama

public function Imagick::setImageProperty(string `$isim`, string `$değer`): bool

Bir görüntü özelliğini tanımlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.2 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`isim`

  Özelliğin ismi.

`değer`

  Özelliğin değeri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setImageProperty() örneği

Görüntü özelliklerinini belirlenmesi ve döndürülmesi.

    <?php
    $image = new Imagick();
    $image->newImage(300, 200, "black");

    $image->setImageProperty('Exif:Make', 'Imagick');
    echo $image->getImageProperty('Exif:Make');
    ?>

### Ayrıca Bakınız

- Imagick::getImageProperty() - İsimli görüntü özelliğini döndürür

# Imagick::setImageRedPrimary

(PECL imagick 2, PECL imagick 3)

Imagick::setImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktayı tanımlar

### Açıklama

public function Imagick::setImageRedPrimary(float `$x`, float `$y`): bool

Görüntünün renk bileşenlerinden birincil kırmızı noktayı tanımlar.

### Bağımsız Değişkenler

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageRenderingIntent

(PECL imagick 2, PECL imagick 3)

Imagick::setImageRenderingIntent — Görüntüye komutların uygulanış tarzını belirler

### Açıklama

public function Imagick::setImageRenderingIntent(int `$uygulama_tarzı`): bool

Görüntüye komutların uygulanış tarzını belirler.

### Bağımsız Değişkenler

`uygulama_tarzı`

  Uygulama tarzı sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageResolution

(PECL imagick 2, PECL imagick 3)

Imagick::setImageResolution — Görüntünün çözünürlüğünü ayarlar

### Açıklama

public function Imagick::setImageResolution(float `$x_çözünürlüğü`, float `$y_çözünürlüğü`): bool

Görüntünün çözünürlüğünü ayarlar.

### Bağımsız Değişkenler

`x_çözünürlüğü`

`y_çözünürlüğü`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::setImageResolution() örneği

    <?php
    function setImageResolution($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageResolution(50, 50);

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::setImageScene

(PECL imagick 2, PECL imagick 3)

Imagick::setImageScene — Görüntünün dekorunu tanımlar

### Açıklama

public function Imagick::setImageScene(int `$dekor`): bool

Görüntünün dekorunu tanımlar.

### Bağımsız Değişkenler

`dekor`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setImageTicksPerSecond

(PECL imagick 2, PECL imagick 3)

Imagick::setImageTicksPerSecond — Canlandırma hızını değiştirir

### Açıklama

public function Imagick::setImageTicksPerSecond(int `$göreli_hız`): bool

Özgün hız 100 olmak üzere canlandırma hızını değiştirir.

> Bilginize:

> Canlandırmalı GIF'ler için bu yöntem, her zaman 100 olarak tanımlanan saniyedeki 'görüntü tiki' sayısını değiştirmez. Bunun yerine, istenen değişimi taklit etmek için karenin görüntülenme süresini ayarlar.

> Örneğin, her karenin 20 tik (1/5 saniye) görüntülendiği canlandırmalı bir GIF için, bu yöntem 50 `tik_hızı` ile çağrıldığında, kareler 40 tik görüntülenecek şekilde ayarlanacak (2/5 saniye) ve görüntü özgün hızın yarısında canlandırılacaktır.

### Bağımsız Değişkenler

`göreli_hız`

  Özgün hız 100 olmak üzere göreli canlandırma hızı.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Canlandırmalı GIF'in oynatma hızını Imagick::setImageTicksPerSecond ile ayarlamak

    <?php

    // Canlandırmalı GIF, oynatma süresinin ilk yarısında yarım hızda,
    // ikinci yarısında çift hızda oynatılacak.

    $imagick = new Imagick(realpath("Test.gif"));
    $imagick = $imagick->coalesceImages();

    $totalFrames = $imagick->getNumberImages();

    $frameCount = 0;

    foreach ($imagick as $frame) {
        $imagick->setImageTicksPerSecond(50);

        if ($frameCount < ($totalFrames / 2)) {
            // İlk yarıda hız, özgün hızın yarısı olsun
            $imagick->setImageTicksPerSecond(50);
        } else {
            // İkinci yarıda hız, özgün hızın iki katı olsun
            $imagick->setImageTicksPerSecond(200);
        }

        $frameCount++;
    }

    $imagick = $imagick->deconstructImages();

    $imagick->writeImages("/path/to/save/output.gif", true);

    ?>

# Imagick::setImageType

(PECL imagick 2, PECL imagick 3)

Imagick::setImageType — Görüntü türünü tanımlar

### Açıklama

public function Imagick::setImageType(int `$resim_türü`): bool

Görüntü türünü tanımlar.

### Bağımsız Değişkenler

`resim_türü`

  Görüntü türü sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageUnits

(PECL imagick 2, PECL imagick 3)

Imagick::setImageUnits — Görüntünün çözünürlük birimlerini tanımlar

### Açıklama

public function Imagick::setImageUnits(int `$birimler`): bool

Görüntünün çözünürlük birimlerini tanımlar.

### Bağımsız Değişkenler

`birimler`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageVirtualPixelMethod

(PECL imagick 2, PECL imagick 3)

Imagick::setImageVirtualPixelMethod — Görüntünün sanal piksel yöntemini tanımlar

### Açıklama

public function Imagick::setImageVirtualPixelMethod(int `$yöntem`): bool

Görüntünün sanal piksel yöntemini tanımlar.

### Bağımsız Değişkenler

`yöntem`

  Sanal piksel yöntemi sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setImageWhitePoint

(PECL imagick 2, PECL imagick 3)

Imagick::setImageWhitePoint — Renk berraklığının beyaz noktasını tanımlar

### Açıklama

public function Imagick::setImageWhitePoint(float `$x`, float `$y`): bool

Renk berraklığının beyaz noktasını tanımlar.

### Bağımsız Değişkenler

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::setInterlaceScheme

(PECL imagick 2, PECL imagick 3)

Imagick::setInterlaceScheme — Görüntü geçişim şemasını tanımlar

### Açıklama

public function Imagick::setInterlaceScheme(int `$geçişim_şeması`): bool

Görüntü geçişim şemasını tanımlar.

### Bağımsız Değişkenler

`geçişim_şeması`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setIteratorIndex

(PECL imagick 2, PECL imagick 3)

Imagick::setIteratorIndex — Yineleyici konumunu belirler

### Açıklama

public function Imagick::setIteratorIndex(int `$indis`): bool

Yineleyiciyi listesinde indisi belirtilen konuma ayarlar. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`indis`

  Yineleyicinin atanacağı konum.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setIteratorIndex() örneği

Görüntüleri oluşturup yineleyici indisini tanımlar ve döndürür.

    <?php
    $im = new Imagick();
    $im->newImage(100, 100, new ImagickPixel("red"));
    $im->newImage(100, 100, new ImagickPixel("green"));
    $im->newImage(100, 100, new ImagickPixel("blue"));

    $im->setIteratorIndex(1);
    echo $im->getIteratorIndex();
    ?>

### Ayrıca Bakınız

- Imagick::getIteratorIndex() - Geçerli etkin görüntünün indisini döndürür
- Imagick::getImageIndex() - Geçerli etkin görüntünün indisini döndürür
- Imagick::setImageIndex() - Yineleyici konumunu tanımlar

# Imagick::setLastIterator

(PECL imagick 2 >= 2.0.1, PECL imagick 3)

Imagick::setLastIterator — Son görüntüye bir Imagick yineleyicisi atar

### Açıklama

public function Imagick::setLastIterator(): bool

Son görüntüye bir Imagick yineleyicisi atar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setOption

(PECL imagick 2, PECL imagick 3)

Imagick::setOption — Bir seçenek tanımlar

### Açıklama

public function Imagick::setOption(string `$anahtar`, string `$değer`): bool

Belirtilen seçeneği kalemle ilişkilendirir.

### Bağımsız Değişkenler

`anahtar`

`değer`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setOption() ile '$extent' boyuta ulaşmak

    <?php
        function renderJPG($extent) {
            $imagePath = $this->control->getImagePath();
            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('jpg');
            $imagick->setOption('jpeg:extent', $extent);
            header("Content-Type: image/jpg");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 2 - Imagick::setOption() genel kullanımı

    <?php
        function renderPNG($imagePath, $format) {

            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('png');
            $imagick->setOption('png:format', $format);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

        //Save as 64bit PNG.
        renderPNG($imagePath, 'png64');

    ?>

Örnek 3 - Imagick::setOption() örneği

    <?php
        function renderCustomBitDepthPNG() {
            $imagePath = $this->control->getImagePath();
            $imagick = new \Imagick(realpath($imagePath));
            $imagick->setImageFormat('png');

            $imagick->setOption('png:bit-depth', '16');
            $imagick->setOption('png:color-type', 6);
            header("Content-Type: image/png");
            $crash = true;
            if ($crash) {
                echo $imagick->getImageBlob();
            }
            else {
                $tempFilename = tempnam('./', 'imagick');
                $imagick->writeimage(realpath($tempFilename));
                echo file_get_contents($tempFilename);
            }
        }

    ?>

# Imagick::setPage

(PECL imagick 2, PECL imagick 3)

Imagick::setPage — Imagick nesnesinin sayfa geometrisini tanımlar

### Açıklama

public function Imagick::setPage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Imagick nesnesinin sayfa geometrisini tanımlar.

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setPointSize

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

Imagick::setPointSize — Yazı puntosunu belirler

### Açıklama

public function Imagick::setPointSize(float `$punto`): bool

Nesnenin yazı puntosunu belirler. Bu yöntem örneğin başlık yazı tipi boyutunu belirlemek için kullanılabilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.7 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`punto`

  Punto cinsinden yazı tipi yüksekliği.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setPointSize() örneği

Imagick::setPointSize kullanım örneği

    <?php
    /* Yeni bir imagick nesnesi oluştur */
    $im = new Imagick();

    /* Nesne için yazıtipine belirle */
    $im->setFont("example.ttf");

    /* Yazı tipi yüksekliğini belirle */
    $im->setPointSize(12);

    /* Başlığı çiz */
    $im->newPseudoImage(100, 100, "caption:Hello");

    /* Yapılacak diğer işlemler */
    ?>

### Ayrıca Bakınız

- Imagick::getPointSize() - Punto değerini döndürür

# Imagick::setProgressMonitor

(PECL imagick 3 >= 3.3.0)

Imagick::setProgressMonitor — Set a callback to be called during processing

### Açıklama

public function Imagick::setProgressMonitor(callable `$callback`): bool

Set a callback that will be called during the processing of the Imagick image.

### Bağımsız Değişkenler

`callback`

  The progress function to call. It should return true if image processing should continue, or false if it should be cancelled. The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done.

  function callback ( mixed `$offset` , mixed `$span` ): bool
  Dikkat

  The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::setProgressMonitor()

    <?php
            $abortReason = null;

            try {
                $imagick = new \Imagick(realpath($this->control->getImagePath()));
                $startTime = time();

                $callback = function ($offset, $span)  use ($startTime, &$abortReason) {
                    if (((100 * $offset) / $span)  > 20) {
                        $abortReason = "Processing reached 20%";
                        return false;
                    }

                    $nowTime = time();

                    if ($nowTime - $startTime > 5) {
                        $abortReason = "Image processing took more than 5 seconds";
                        return false;
                    }
                    if (($offset % 5) == 0) {
                        echo "Progress: $offset / $span <br/>";
                    }
                    return true;
                };

                $imagick->setProgressMonitor($callback);

                $imagick->waveImage(2, 15);

                echo "Data len is: ".strlen($imagick->getImageBlob());
            }
            catch(\ImagickException $e) {
                if ($abortReason != null) {
                    echo "Image processing was aborted: ".$abortReason."<br/>";
                }
                else {
                    echo "ImagickException caught: ".$e->getMessage()." Exception type is ".get_class($e);
                }
            }

    ?>

# Imagick::setRegistry

(PECL imagick 3 >= 3.3.0)

Imagick::setRegistry — Sets the ImageMagick registry entry named key to value

### Açıklama

public static function Imagick::setRegistry(string `$key`, string `$value`): bool

Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs.

### Bağımsız Değişkenler

`key`

`value`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setResolution

(PECL imagick 2, PECL imagick 3)

Imagick::setResolution — Görüntü çözünürlüğünü tanımlar

### Açıklama

public function Imagick::setResolution(float `$x_çözünürlüğü`, float `$y_çözünürlüğü`): bool

Görüntü çözünürlüğünü tanımlar.

### Bağımsız Değişkenler

`x_çözünürlüğü`

  Yatay çözünürlük

`y_çözünürlüğü`

  Düşey çözünürlük

### Dönen Değerler

Başarı durumunda `true` döner.

### Notlar

Imagick::setResolution() görüntüyü oluşturmadan veya yüklemeden önce çağrılmalıdır.

### Ayrıca Bakınız

- Imagick::setImageResolution() - Görüntünün çözünürlüğünü ayarlar
- Imagick::getImageResolution() - Görüntünün X ve Y çözünürlüklerini döndürür

# Imagick::setResourceLimit

(PECL imagick 2, PECL imagick 3)

Imagick::setResourceLimit — Belli bir özkaynağa sınır tanımlar

### Açıklama

public function Imagick::setResourceLimit(int `$özkaynak`, int `$sınır`): bool

Bu yöntem, temelde ImageMagick kütüphanesinin özkaynak sınırlarını değiştirmek için kullanılır.

### Bağımsız Değişkenler

`özkaynak`

  Özkaynak türü sabitlerinden biri.

`sınır`

  Birim sınırlanan özkaynağın türüne bağlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::getResourceLimit() - Belirtilen özkaynağın bellek kullanım sınırını döndürür

# Imagick::setSamplingFactors

(PECL imagick 2, PECL imagick 3)

Imagick::setSamplingFactors — Görüntü örnekleme çarpanlarını ayarlar

### Açıklama

public function Imagick::setSamplingFactors(array `$çarpanlar`): bool

Görüntü örnekleme çarpanlarını ayarlar.

### Bağımsız Değişkenler

`çarpanlar`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setSamplingFactors() örneği

    <?php
    function setSamplingFactors($imagePath) {

        $imagePath = "../imagick/images/FineDetail.png";
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageFormat('jpg');
        $imagick->setSamplingFactors(array('2x2', '1x1', '1x1'));

        $compressed = $imagick->getImageBlob();

        $reopen = new \Imagick();
        $reopen->readImageBlob($compressed);

        $reopen->resizeImage(
            $reopen->getImageWidth() * 4,
            $reopen->getImageHeight() * 4,
            \Imagick::FILTER_POINT,
            1
        );

        header("Content-Type: image/jpg");
        echo $reopen->getImageBlob();
    }

    ?>

# Imagick::setSize

(PECL imagick 2, PECL imagick 3)

Imagick::setSize — Imagick nesnesinin boyutlarını ayarlar

### Açıklama

public function Imagick::setSize(int `$sütun`, int `$satır`): bool

Imagick nesnesinin boyutlarını ayarlar. RGB, GRAY veya CMYK gibi bir ham görüntü biçemini okumadan önce nesnenin boyutlarını ayarlamalısınız.

### Bağımsız Değişkenler

`sütun`

`satır`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setSizeOffset

(PECL imagick 2, PECL imagick 3)

Imagick::setSizeOffset — Imagick nesnesinin başlangıcını ve boyutlarını ayarlar

### Açıklama

public function Imagick::setSizeOffset(int `$sütun`, int `$satır`, int `$başlangıç`): bool

Imagick nesnesinin başlangıcını ve boyutlarını ayarlar. RGB, GRAY veya CMYK gibi bir ham görüntü biçemini okumadan önce nesnenin boyutlarını ayarlamalısınız. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`sütun`

  Piksel cinsinden genişlik.

`satır`

  Piksel cinsinden yükseklik.

`başlangıç`

  Resim başlangıcı.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::setType

(PECL imagick 2, PECL imagick 3)

Imagick::setType — Görüntünün tür özniteliğini tanımlar

### Açıklama

public function Imagick::setType(int `$görüntü_türü`): bool

Görüntünün tür özniteliğini tanımlar.

### Bağımsız Değişkenler

`görüntü_türü`

  Görüntü türü sabitlerinden biri.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::shadeImage

(PECL imagick 2, PECL imagick 3)

Imagick::shadeImage — Üç boyutluluk etkisi oluşturur

### Açıklama

public function Imagick::shadeImage(bool `$gri`, float `$başucu`, float `$yükseliş`): bool

Üç boyutluluk etkisi vermek için bir görüntüye belli bir mesafeden ışık düşürür. Işığın yerini `başucu` ve `yükseliş` bağımsız değişkenleri ile belirtebilirsiniz. `başucu` X ekseninden uzaklığı derece cinsinden, `yükseliş` ise Z eksenine göre yüksekliği piksel cinsinden belirtir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`gri`

  Sıfırdan farklı bir değer her pikselin gölgelenme koyuluğunu belirtir.

`başucu`

  Işık kaynağının yataydaki yönünü belirtir.

`yükseliş`

  Işık kaynağının düşeydeki yönünü belirtir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Başarısızlık durumunda ImagickException yavrulanır.

### Örnekler

Örnek 1 - Imagick::shadeImage() örneği

    <?php
    function shadeImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->shadeImage(true, 45, 20);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::shadowImage

(PECL imagick 2, PECL imagick 3)

Imagick::shadowImage — Görüntüde gölgeleri taklit eder

### Açıklama

public function Imagick::shadowImage(
float `$matlık`,
float `$sapma`,
int `$x`,
int `$y`
): bool

Görüntüde gölgeleri taklit eder.

### Bağımsız Değişkenler

`matlık`

`sapma`

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::shadowImage() örneği

    <?php
    function shadowImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->shadowImage(0.4, 10, 50, 5);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::sharpenImage

(PECL imagick 2, PECL imagick 3)

Imagick::sharpenImage — Görüntüyü netleştirir

### Açıklama

public function Imagick::sharpenImage(float `$yarıçap`, float `$sapma`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Görüntüyü netleştirir. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile resim evriştirilir. Makul sonuçlar elde etmek için yarıçap standart sapmadan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::sharpenImage() size uygun bir yarıçap seçecektir.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır.

`sapma`

  Piksel cinsinden standart sapma.

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::sharpenImage() örneği

    <?php
    function sharpenImage($imagePath, $radius, $sigma, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->sharpenimage($radius, $sigma, $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::shaveImage

(PECL imagick 2, PECL imagick 3)

Imagick::shaveImage — Görüntünün kenarındaki pikselleri rendeler

### Açıklama

public function Imagick::shaveImage(int `$sütun`, int `$satır`): bool

Görüntünün kenarındaki pikselleri rendeler.

### Bağımsız Değişkenler

`sütun`

`satır`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::shaveImage() örneği

    <?php
    function shaveImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->shaveImage(100, 50);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::shearImage

(PECL imagick 2, PECL imagick 3)

Imagick::shearImage — Bir paralalkenar oluşturur

### Açıklama

public function Imagick::shearImage(mixed `$artalan`, float `$x_kaykılması`, float `$y_kaykılması`): bool

Bir paralelkenar oluşturmak için görüntünün bir kenarını X ve Y eksenleri boyunca kaydırır. Kaykılma miktarı, kaykılma açısıyla belirtilir. X yönünde kaykılma için, `x_kaykılması` Y eksenine göre ölçülür. Y yönünde kaykılma için ise, `y_kaykılması` X eksenine göre ölçülür. Kaykılmadan dolayı ortaya çıkan boş üçgenler `artalan` rengi ile doldurulur.

### Bağımsız Değişkenler

`artalan`

  Kaykılmadan dolayı ortaya çıkan boş üçgenlerin doldurulacağı renk.

`x_kaykılması`

  X eksenindeki kaykılmanın derece cinsinden değeri.

`y_kaykılması`

  Y eksenindeki kaykılmanın derece cinsinden değeri.

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | İlk bağımsız değişkende rengi ifade etmek için bir dizge belirtilebilir oldu. Evvelce sadece bir ImagickPixel nesnesi belirtilebiliyordu.

### Örnekler

Örnek 1 - Imagick::shearImage() örneği

    <?php
    function shearImage($imagePath, $color, $shearX, $shearY) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->shearimage($color, $shearX, $shearY);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::sigmoidalContrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::sigmoidalContrastImage — Bir resmin zıtlığını ayarlar

### Açıklama

public function Imagick::sigmoidalContrastImage(
bool `$netleştir`,
float `$zıtlık`,
float `$aradeğer`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Bir resmin zıtlığını (contrast) doğrusal olmayan sigmamsı zıtlık algoritması ile ayarlar. Sigmamsı aktarım işlevi kullanılarak parlak ve gölgeli bölgeler ışığa doyurulmadan resmin zıtlığı arttırılır.

Ayrıca, bkz: » ImageMagick v6 Örnekleri - Görüntü dönüşümleri — Sigmamsı Doğrusal Olmayan Zıtlık

### Bağımsız Değişkenler

`netleştir`

  `true` belirtilirse resmin zıtlığı arttırılır, `false` belirtilirse düşürülür.

`zıtlık`

  Zıtlığın ne kadar arttırılacağı/azaltılacağı belirtilir. (0: Yok, 3: Normal, 20: Aşırı)

`aradeğer`

  Elde edilen resimde ara tonların nereye uygulanacağını belirler. (0: Beyaz, 0.5: Gri, 1: Siyah)

`kanal`

  Zıtlığın uygulanacağı renk kanalı. Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 Imagick::sigmoidalContrastImage() kullanarak, $contrast ve $midpoint değişkenleriyle tanımlanan karıştırma ile iki görüntüyü sorunsuz bir şekilde karıştırmak için geçişimli görüntü oluşturmak

    <?php

    function generateBlendImage($width, $height, $contrast = 10, $midpoint = 0.5) {
        $imagick = new Imagick();
        $imagick->newPseudoImage($width, $height, 'gradient:black-white');
        $quanta = $imagick->getQuantumRange();
        $imagick->sigmoidalContrastImage(true, $contrast, $midpoint * $quanta["quantumRangeLong"]);

        return $imagick;
    }

    ?>

# Imagick::sketchImage

(PECL imagick 2, PECL imagick 3)

Imagick::sketchImage — Kara kalem çalışmasını taklit eder

### Açıklama

public function Imagick::sketchImage(float `$yarıçap`, float `$sapma`, float `$açı`): bool

Kara kalem çalışmasını taklit eder. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile resim evriştirilir. Makul sonuçlar elde etmek için yarıçap standart sapmadan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::sketchImage() size uygun bir yarıçap seçecektir. `açı` ile bulanıklaştırma açısı belirtilir. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`yarıçap`

  Merkezdeki piksel sayısı değil, piksel cinsinden Gauss işleci yarıçapıdır.

`sapma`

  Piksel cinsinden standart sapma.

`açı`

  Etki bu açıya uygulanır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::sketchImage() örneği

    <?php
    function sketchImage($imagePath, $radius, $sigma, $angle) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->sketchimage($radius, $sigma, $angle);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::smushImages

(PECL imagick 3 >= 3.3.0)

Imagick::smushImages — Takes all images from the current image pointer to the end of the image list and smushs them

### Açıklama

public function Imagick::smushImages(bool `$stack`, int `$offset`): Imagick

Takes all images from the current image pointer to the end of the image list and smushs them to each other top-to-bottom if the stack parameter is true, otherwise left-to-right.

### Bağımsız Değişkenler

`stack`

`offset`

### Dönen Değerler

The new smushed image.

### Örnekler

Örnek 1 Imagick::smushImages()

    <?php
    function smushImages($imagePath, $imagePath2) {

        $imagick = new \Imagick(realpath($imagePath));
        $imagick2 = new \Imagick(realpath($imagePath2));

        $imagick->addimage($imagick2);
        $smushed = $imagick->smushImages(false, 50);
        $smushed->setImageFormat('jpg');
        header("Content-Type: image/jpg");
        echo $smushed->getImageBlob();
    }

    ?>

# Imagick::solarizeImage

(PECL imagick 2, PECL imagick 3)

Imagick::solarizeImage — Görüntüye uzun pozlama etkisi uygular

### Açıklama

public function Imagick::solarizeImage(int `$eşik`): bool

Karanlık odada ışığa duyarlı kağıdın belli alanlarına uzun süre ışık vererek elde edilen etkiye benzer bir etkiyi resme uygular. Eşik değeri, etkinin yayılma genişliğinin bir ölçüsü olup, 0 ile ParçacıkAralığı (QuantumRange) arasında bir değer olabilir.

### Bağımsız Değişkenler

`eşik`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::solarizeImage()

    <?php
    function solarizeImage($imagePath, $solarizeThreshold) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->solarizeImage($solarizeThreshold * \Imagick::getQuantum());
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::sparseColorImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::sparseColorImage — Interpolates colors

### Açıklama

public function Imagick::sparseColorImage(int `$SPARSE_METHOD`, array `$arguments`, int `$channel` = Imagick::CHANNEL_DEFAULT): bool

Given the arguments array containing numeric values this method interpolates the colors found at those coordinates across the whole image using `sparse_method`. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.4.5 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`SPARSE_METHOD`

  Refer to this list of sparse method constants

`arguments`

  An array containing the coordinates. The array is in format `array(1,1, 2,45)`

`channel`

  Normalde kanal türü sabitlerinden biridir, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir. `Imagick::CHANNEL_DEFAULT` öntanımlıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

    <?php
        function renderImageBarycentric2() {
            $points = [
                [0.30, 0.10, 'red'],
                [0.10, 0.80, 'blue'],
                [0.70, 0.60, 'lime'],
                [0.80, 0.20, 'yellow'],
            ];
            $imagick = createGradientImage(
                400, 400,
                $points,
                \Imagick::SPARSECOLORMETHOD_BARYCENTRIC
            );
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 2 SPARSECOLORMETHOD_BILINEAR Imagick::sparseColorImage()

    <?php
        function renderImageBilinear() {
            $points = [[0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'],];
            $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_BILINEAR);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 3 SPARSECOLORMETHOD_SPEPARDS Imagick::sparseColorImage()

    <?php
        function renderImageShepards() {
            $points = [
                [0.30, 0.10, 'red'],
                [0.10, 0.80, 'blue'],
                [0.70, 0.60, 'lime'],
                [0.80, 0.20, 'yellow'],
            ];
            $imagick = createGradientImage(600, 600, $points, \Imagick::SPARSECOLORMETHOD_SPEPARDS);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 4 SPARSECOLORMETHOD_VORONOI Imagick::sparseColorImage()

    <?php
        function renderImageVoronoi() {
            $points = [
                [0.30, 0.10, 'red'],
                [0.10, 0.80, 'blue'],
                [0.70, 0.60, 'lime'],
                [0.80, 0.20, 'yellow'],
            ];
            $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_VORONOI);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 5 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

    <?php
        function renderImageBarycentric() {
            $points = [
                [0, 0, 'skyblue'],
                [-1, 1, 'skyblue'],
                [1, 1, 'black'],
            ];
            $imagick = createGradientImage(600, 200, $points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC);
            header("Content-Type: image/png");
            echo $imagick->getImageBlob();
        }

    ?>

Örnek 6 createGradientImage is used by other examples. Imagick::sparseColorImage()

    <?php
    function createGradientImage($width, $height, $colorPoints, $sparseMethod, $absolute = false) {

        $imagick = new \Imagick();
        $imagick->newImage($width, $height, "white");
        $imagick->setImageFormat("png");

        $barycentricPoints = array();

        foreach ($colorPoints as $colorPoint) {

            if ($absolute == true) {
                $barycentricPoints[] = $colorPoint[0];
                $barycentricPoints[] = $colorPoint[1];
            }
            else {
                $barycentricPoints[] = $colorPoint[0] * $width;
                $barycentricPoints[] = $colorPoint[1] * $height;
            }

            if (is_string($colorPoint[2])) {
                $imagickPixel = new \ImagickPixel($colorPoint[2]);
            }
            else if ($colorPoint[2] instanceof \ImagickPixel) {
                $imagickPixel = $colorPoint[2];
            }
            else{
                $errorMessage = sprintf(
                    "Value %s is neither a string nor an ImagickPixel class. Cannot use as a color.",
                    $colorPoint[2]
                );

                throw new \InvalidArgumentException(
                    $errorMessage
                );
            }

            $red = $imagickPixel->getColorValue(\Imagick::COLOR_RED);
            $green = $imagickPixel->getColorValue(\Imagick::COLOR_GREEN);
            $blue = $imagickPixel->getColorValue(\Imagick::COLOR_BLUE);
            $alpha = $imagickPixel->getColorValue(\Imagick::COLOR_ALPHA);

            $barycentricPoints[] = $red;
            $barycentricPoints[] = $green;
            $barycentricPoints[] = $blue;
            $barycentricPoints[] = $alpha;
        }

        $imagick->sparseColorImage($sparseMethod, $barycentricPoints);

        return $imagick;
    }

    ?>

# Imagick::spliceImage

(PECL imagick 2, PECL imagick 3)

Imagick::spliceImage — Görüntüye düz bir renk ekler

### Açıklama

public function Imagick::spliceImage(
int `$genişlik`,
int `$yükseklik`,
int `$x`,
int `$y`
): bool

Görüntüye düz bir renk ekler

### Bağımsız Değişkenler

`genişlik`

`yükseklik`

`x`

`y`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::spliceImage() örneği

    <?php
    function spliceImage($imagePath, $startX, $startY, $width, $height) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->spliceImage($width, $height, $startX, $startY);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::spreadImage

(PECL imagick 2, PECL imagick 3)

Imagick::spreadImage — Bir kümedeki her pikseli rasgele gösterir

### Açıklama

public function Imagick::spreadImage(float `$yarıçap`): bool

`yarıçap` bağımsız değişkeni ile belirtilen bir küme içindeki her pikseli rasgele gösteren özel bir etki yaratır.

### Bağımsız Değişkenler

`yarıçap`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::spreadImage() örneği

    <?php
    function spreadImage($imagePath, $radius) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->spreadImage($radius);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::statisticImage

(PECL imagick 3 >= 3.3.0)

Imagick::statisticImage — Modifies image using a statistics function

### Açıklama

public function Imagick::statisticImage(
int `$type`,
int `$width`,
int `$height`,
int `$channel` = Imagick::CHANNEL_DEFAULT
): bool

Replace each pixel with corresponding statistic from the neighborhood of the specified width and height.

### Bağımsız Değişkenler

`type`

`width`

`height`

`channel`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::statisticImage()

    <?php
    function statisticImage($imagePath, $statisticType, $width, $height, $channel) {
        $imagick = new \Imagick(realpath($imagePath));

        $imagick->statisticImage(
            $statisticType,
            $width,
            $height,
            $channel
        );

        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    statisticImage($imagePath, \Imagick::STATISTIC_MEDIAN, 5, 5, \Imagick::CHANNEL_DEFAULT);

    ?>

# Imagick::steganoImage

(PECL imagick 2, PECL imagick 3)

Imagick::steganoImage — Görüntünün içine sayısal bir filigran gizler

### Açıklama

public function Imagick::steganoImage(Imagick `$filigran`, int `$konum`): Imagick

Görüntünün içine sayısal bir filigran gizler. Daha sonra bu filigranı resmin kimliğini doğrulamak için kullanabilirsiniz.

### Bağımsız Değişkenler

`filigran`

  Görüntünün içine gizlenecek filigran resmi.

`konum`

  Filigranın resmin içinde yerleştirileceği konum.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::stereoImage

(PECL imagick 2, PECL imagick 3)

Imagick::stereoImage — İki görüntüyü birleştirir

### Açıklama

public function Imagick::stereoImage(Imagick `$görüntü`): bool

İki görüntüyü bir sağda biri solda olmak üzere bir görüntü çifti haline getirir.

### Bağımsız Değişkenler

`görüntü`

  Diğer görüntü.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::stripImage

(PECL imagick 2, PECL imagick 3)

Imagick::stripImage — Görüntüden tüm profilleri ve açıklamaları ayıklar

### Açıklama

public function Imagick::stripImage(): bool

Görüntüden tüm profilleri ve açıklamaları ayıklar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

# Imagick::subImageMatch

(PECL imagick 3 >= 3.3.0)

Imagick::subImageMatch — Searches for a subimage in the current image and returns a similarity image

### Açıklama

public function Imagick::subImageMatch(Imagick `$Imagick`, array `&$offset` = ?, float `&$similarity` = ?): Imagick

Searches for a subimage in the current image and returns a similarity image such that an exact match location is completely white and if none of the pixels match, black, otherwise some gray level in-between. You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will be set to the 'score' of the similarity between the subimage and the matching position in the larger image, bestMatch will contain an associative array with elements x, y, width, height that describe the matching region.

### Bağımsız Değişkenler

`Imagick`

`offset`

`similarity`

  A new image that displays the amount of similarity at each pixel.

### Dönen Değerler

### Örnekler

Örnek 1 Imagick::subImageMatch()

    <?php
    function subImageMatch($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick2 = clone $imagick;
        $imagick2->cropimage(40, 40, 250, 110);
        $imagick2->vignetteimage(0, 1, 3, 3);

        $similarity = null;
        $bestMatch = null;
        $comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity);

        $comparison->setImageFormat('png');
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::swirlImage

(PECL imagick 2, PECL imagick 3)

Imagick::swirlImage — Görüntünün merkezine yakın pikselleri girdap gibi döndürür

### Açıklama

public function Imagick::swirlImage(float `$açı`): bool

Görüntünün merkezine yakın pikselleri girdap gibi döndürür. `açı` ile her pikselin çizeceği yayın açısı belirtilir.

### Bağımsız Değişkenler

`açı`

  En iyi etki 1..360 derece arasında alınır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::swirlImage() örneği

    <?php
    function swirlImage($imagePath, $swirl) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->swirlImage($swirl);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::textureImage

(PECL imagick 2, PECL imagick 3)

Imagick::textureImage — Doku görüntüsünü yatay ve düşeyde yineler

### Açıklama

function Imagick::textureImage(Imagick `$doku_kalemi`): Imagick

Doku görüntüsünü tuval görüntüsü üzerine yatay ve düşeyde yanyana yerleştirir.

### Bağımsız Değişkenler

`doku_kalemi`

  Doku görüntüsünü içeren Imagick nesnesi

### Dönen Değerler

Yinelemeli doku görüntüsünün uygulandığı yeni Imagick nesnesi döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::textureImage() örneği

    <?php
    function textureImage($imagePath) {
        $image = new \Imagick();
        $image->newImage(640, 480, new \ImagickPixel('pink'));
        $image->setImageFormat("jpg");
        $texture = new \Imagick(realpath($imagePath));
        $texture->scaleimage($image->getimagewidth() / 4, $image->getimageheight() / 4);
        $image = $image->textureImage($texture);
        header("Content-Type: image/jpg");
        echo $image;
    }

    ?>

# Imagick::thresholdImage

(PECL imagick 2, PECL imagick 3)

Imagick::thresholdImage — Bazı pikselleri belli bir eşiğe göre değiştir

### Açıklama

public function Imagick::thresholdImage(float `$eşik`, int `$kanal` = Imagick::CHANNEL_DEFAULT): bool

Her pikselin yoğunluğunu belli bir eşikle karşılaştırarak bazı pikselleri değiştirir. Sonuçta iki renkli yüksek zıtlığa sahip bir resim elde edilir.

### Bağımsız Değişkenler

`eşik`

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::thresholdImage() örneği

    <?php
    function thresholdimage($imagePath, $threshold, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->thresholdimage($threshold * \Imagick::getQuantum(), $channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }
    ?>

# Imagick::thumbnailImage

(PECL imagick 2, PECL imagick 3)

Imagick::thumbnailImage — Görüntünün boyutlarını değiştirir

### Açıklama

public function Imagick::thumbnailImage(
int `$sütun`,
int `$satır`,
bool `$sığdır` = `false`,
bool `$doldur` = `false`,
bool `$eski` = `false`
): bool

Bir görüntünün boyutlarını belirtilen boyutlara indirir ve görüntü ile ilişkili profilleri siler. Yöntemin amacı, bir HTML sayfada gösterilmek üzere görüntünün küçük bir örneğini oluşturmaktır.

> Bilginize: `sığdır` bağımsız değişkeninin davranışı Imagick 3.0.0 sürümünde değişmiştir. Evvelce 200x150 ebadındaki bir görüntü 400x400 ebadındaki bir alana sığdırılmak istendiğinde bu yapılmazdı. Artık görüntü 400x300 ebadına getirilerek belirtilen alana sığdırılmaktadır. `sığdır` bağımsız değişkeni kullanıldığı takdirde yükseklik ve genişliğin ikisi de verilmelidir.

### Bağımsız Değişkenler

`sütun`

  Görüntünün genişliği.

`satır`

  Görüntünün yüksekliği.

`sığdır`

  `true` belirtildiği takdirde, her iki yönde de azami uzunluk olarak `satır` ve `sütun` değerleri kullanılır. İki kenarın uzunluğu belirtilen boyuta veya biraz daha altına inene kadar küçültülür.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::thumbnailImage() örneği

    <?php
    function thumbnailImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setbackgroundcolor('rgb(64, 64, 64)');
        $imagick->thumbnailImage(100, 100, true, true);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::tintImage

(PECL imagick 2, PECL imagick 3)

Imagick::tintImage — Görüntüdeki her piksele bir renk yöneyi uygular

### Açıklama

public function Imagick::tintImage(mixed `$ton`, mixed `$matlık`, bool `$eski` = `false`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntüdeki her piksele bir renk yöneyi uygular. Yöneyin uzunluğu siyah ve beyaz için 0, ara tonlar için ise en azamisidir. Kullanılan yöney ağırlığı işlevi: `f(x)=(1-(4.0*((x-0.5)*(x-0.5))))`.

### Bağımsız Değişkenler

`ton`

`matlık`

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Artık, ilk bağımsız değişken için bir renk dizgesi ve ikinci bağımsız değişken olarak opaklık miktarını ifade eden bir gerçek sayı belirtilebilmektedir. Önceki sürümlerde sadece bir ImagickPixel nesnesinin belirtilmesine izin verilirdi.

### Örnekler

Örnek 1 - Imagick::tintImage() örneği

    <?php
    function tintImage($r, $g, $b, $a) {
        $a = $a / 100;

        $imagick = new \Imagick();
        $imagick->newPseudoImage(400, 400, 'gradient:black-white');

        $tint = new \ImagickPixel("rgb($r, $g, $b)");
        $opacity = new \ImagickPixel("rgb(128, 128, 128, $a)");
        $imagick->tintImage($tint, $opacity);
        $imagick->setImageFormat('png');
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::__toString

(PECL imagick 2, PECL imagick 3)

Imagick::__toString — Returns the image as a string

### Açıklama

public function Imagick::__toString(): string

Returns the current image as string. This will only return a single image; it should not be used for Imagick objects that contain multiple images e.g. an animated GIF or PDF with multiple pages.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the string content on success or an empty string on failure.

### Ayrıca Bakınız

- Imagick::getImageBlob() - Görüntü dizisini ikil dizge olarak döndürür
- Imagick::getImagesBlob() - Tüm görüntü dizilerini bir ikil dizge olarak döndürür

# Imagick::transformImage

(PECL imagick 2, PECL imagick 3)

Imagick::transformImage — Budama miktarını ve görüntü geometrisini ayarlamanın uygun yolu

Uyarı

Imagick 3.4.4 itibariyle bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir.

### Açıklama

public function Imagick::transformImage(string `$budama`, string `$geometri`): Imagick

Birer dizge olarak budama miktarını ve görüntü geometrisini ayarlamak için uygun bir yol. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`budama`

  Görüntünün budanan parçasının geometrisini tanımlayan bir dizge.

`geometri`

  Görüntünün budanmış halinin geometrisini tanımlayan bir dizge.

### Dönen Değerler

Dönüştürülmüş görüntüyü içeren Imagick nesnesi döner.

### Örnekler

Örnek 1 Imagick::transformImage() örneği

Bu örnekte 100x100 siyah bir görüntü elde edilmektedir.

    <?php
    $image = new Imagick();
    $image->newImage(300, 200, "black");
    $new_image = $image->transformImage("100x100", "100x100");
    $new_image->writeImage('test_out.jpg');
    ?>

### Ayrıca Bakınız

- Imagick::adaptiveBlurImage() - Görüntüyü uyarlamalı olarak bulanıklaştırır
- Imagick::motionBlurImage() - Hareket bulanıklığını taklit eder
- Imagick::radialBlurImage() - Görüntüye dairesel bulanıklık uygular
- Imagick::cropImage() - Görüntünün bir bölgesini çıkarır
- Imagick::resizeImage() - Görüntüyü boyutlandırır
- Imagick::thumbnailImage() - Görüntünün boyutlarını değiştirir

# Imagick::transformImageColorspace

(PECL imagick 3)

Imagick::transformImageColorspace — Transforms an image to a new colorspace

### Açıklama

public function Imagick::transformImageColorspace(int `$colorspace`): bool

Transforms an image to a new colorspace.

### Bağımsız Değişkenler

`colorspace`

  The colorspace the image should be transformed to, one of the COLORSPACE constants e.g. Imagick::COLORSPACE_CMYK.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 Imagick::transformImageColorspace() example

Transforms an image to a new colorspace, and then extracts a single channel so that the individual channel values can be viewed.

    <?php
    function transformImageColorspace($imagePath, $colorSpace, $channel) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->transformimagecolorspace($colorSpace);
        //channel should be one of the channel constants e.g. \Imagick::CHANNEL_BLUE
        $imagick->separateImageChannel($channel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }
    ?>

### Ayrıca Bakınız

- Imagick::setColorSpace() - Set colorspace

# Imagick::transparentPaintImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::transparentPaintImage — Pikselleri şeffaflaştırır

### Açıklama

public function Imagick::transparentPaintImage(
mixed `$hedef`,
float `$şeffaflık`,
float `$benzerlik`,
bool `$ters`
): bool

`hedef` renkteki pikselleri şeffaflaştırır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.8 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`hedef`

  Şeffaf yapılacak renk.

`şeffaflık`

  Şeffaflık derecesi: 1.0 tamamen mat, 0.0 tamamen şeffaf.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir.

`ters`

  `true` belirtilirse hedef renkle eşleşmeyen renkler şeffaflaştırılır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::transparentPaintImage() örneği

    <?php
    function transparentPaintImage($color, $alpha, $fuzz) {
        $imagick = new \Imagick(realpath("images/BlueScreen.jpg"));

        // Şeffaflığı desteklemesi lazım
        $imagick->setimageformat('png');

        $imagick->transparentPaintImage(
            $color, $alpha, $fuzz * \Imagick::getQuantum(), false
        );

        // Gerekli değil, ancak kalan pikselleri toplamaya yardımcı olur
        $imagick->despeckleimage();

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::transposeImage

(PECL imagick 2, PECL imagick 3)

Imagick::transposeImage — Görüntünün düşeydeki yansımasını oluşturur

### Açıklama

public function Imagick::transposeImage(): bool

Pikselleri 90 derece döndürerek ve x eksenine göre yansıtarak resmin düşeydeki yansımasını oluşturur. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::transposeImage() örneği

    <?php
    function transposeImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->transposeImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::transverseImage() - Görüntünün yataydaki yansımasını oluşturur

# Imagick::transverseImage

(PECL imagick 2, PECL imagick 3)

Imagick::transverseImage — Görüntünün yataydaki yansımasını oluşturur

### Açıklama

public function Imagick::transverseImage(): bool

Pikselleri 270 derece döndürerek ve y eksenine göre yansıtarak görüntünün yataydaki yansımasını oluşturur. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::transverseImage() örneği

    <?php
    function transverseImage($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->transverseImage();
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::transposeImage() - Görüntünün düşeydeki yansımasını oluşturur

# Imagick::trimImage

(PECL imagick 2, PECL imagick 3)

Imagick::trimImage — Görüntünün kenarlarını siler

### Açıklama

public function Imagick::trimImage(float `$benzerlik`): bool

Artalan rengi olarak görüntünün kenarlarını siler. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir. Öntanımlı olarak hedefin belli bir piksel rengi ile tam olarak eşleşmesi gerekir. Ancak, çoğu durumda iki renk arasında küçük bir fark vardır. `benzerlik` bağımsız değişkeni iki rengin aynı kabul edilebilmesi için ne kadarlık bir farkın kabul edilebilir olduğunu belirler. Bu bağımsız değişken tanecik aralığında bir değişimi ifade eder.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::trimImage() örneği

Görüntünün kenarlarını kırpıp tarayıcıda gösterelim.

    <?php
    /* Bir görüntüyü okuyarak nesneYi oluştur */
    $im = new Imagick("image.jpg");

    /* Görüntüyü kırp */
    $im->trimImage(0);

    /* ve çıktıla */
    header("Content-Type: image/" . $im->getImageFormat());
    echo $im;
    ?>

### Ayrıca Bakınız

- Imagick::getQuantumDepth() - Parçacık derinliğini döndürür
- Imagick::getQuantumRange() - Imagick parçacık aralığını döndürür
- imagecropauto() - Mevcut kiplerden birini kullanarak görüntüyü otomatik olarak kırpar

# Imagick::uniqueImageColors

(PECL imagick 2,PECL imagick 3)

Imagick::uniqueImageColors — Biri dışında tüm piksel renklerini iptal eder

### Açıklama

public function Imagick::uniqueImageColors(): bool

Biri dışında tüm piksel renklerini iptal eder. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::uniqueImageColors() örneği

    <?php
    function uniqueImageColors($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        //Reduce the image to 256 colours nicely.
        $imagick->quantizeImage(256, \Imagick::COLORSPACE_YIQ, 0, false, false);
        $imagick->uniqueImageColors();
        $imagick->scaleimage($imagick->getImageWidth(), $imagick->getImageHeight() * 20);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::unsharpMaskImage

(PECL imagick 2, PECL imagick 3)

Imagick::unsharpMaskImage — Görüntüyü netleştirir

### Açıklama

public function Imagick::unsharpMaskImage(
float `$yarıçap`,
float `$sapma`,
float `$miktar`,
float `$eşik`,
int `$kanal` = Imagick::CHANNEL_DEFAULT
): bool

Görüntüyü netleştirir. Yarıçap ve standart sapması belirtilen bir Gauss işleci ile görüntü evriştirilir. Makul sonuçlar elde etmek için yarıçap standart sapmadan büyük olmalıdır. `yarıçap` olarak 0 verirseniz Imagick::unsharpMaskImage() size uygun bir yarıçap seçecektir.

### Bağımsız Değişkenler

`yarıçap`

`sapma`

  Standart sapma.

`miktar`

`eşik`

`kanal`

  Normalde kanal türü sabitlerinden biri, ancak bitsel işleçler kullanılarak birden fazla kanal belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::unsharpMaskImage() örneği

    <?php
    function unsharpMaskImage($imagePath, $radius, $sigma, $amount, $unsharpThreshold) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->unsharpMaskImage($radius, $sigma, $amount, $unsharpThreshold);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::valid

(PECL imagick 2, PECL imagick 3)

Imagick::valid — Imagick nesnesinin geçerli olup olmadığını sınar

### Açıklama

public function Imagick::valid(): bool

Imagick nesnesinin geçerli olup olmadığını sınar.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::vignetteImage

(PECL imagick 2, PECL imagick 3)

Imagick::vignetteImage — Görüntüye bir nakış süzgeci uygular

### Açıklama

public function Imagick::vignetteImage(
float `$siyahNokta`,
float `$beyazNokta`,
int `$x`,
int `$y`
): bool

Görüntünün kenarlarını nakış tarzında yumuşatır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`siyahNokta`

  Siyah nokta.

`beyazNokta`

  Beyaz nokta.

`x`

  Elipsin X konumu.

`y`

  Elipsin Y konumu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::vignetteImage() örneği

    <?php
    function vignetteImage($imagePath, $blackPoint, $whitePoint, $x, $y) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->vignetteImage($blackPoint, $whitePoint, $x, $y);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::waveImage() - Görüntüye bir dalga süzgeci uygular
- Imagick::swirlImage() - Görüntünün merkezine yakın pikselleri girdap gibi döndürür

# Imagick::waveImage

(PECL imagick 2, PECL imagick 3)

Imagick::waveImage — Görüntüye bir dalga süzgeci uygular

### Açıklama

public function Imagick::waveImage(float `$genlik`, float `$dalga_boyu`): bool

Görüntüye bir dalga süzgeci uygular. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.2.9 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`genlik`

  Dalganın genliği.

`dalga_boyu`

  Dalga uzunluğu.

### Dönen Değerler

Başarı durumunda `true` döner.

### Hatalar/İstisnalar

Hata durumunda bir ImagickException istisnası oluşur.

### Örnekler

Örnek 1 - Imagick::waveImage() biraz yavaş olabilir

    <?php
    function waveImage($imagePath, $amplitude, $length) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->waveImage($amplitude, $length);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

### Ayrıca Bakınız

- Imagick::solarizeImage() - Görüntüye uzun pozlama etkisi uygular
- Imagick::oilpaintImage() - Yağlı boya resmi taklit eder
- Imagick::embossImage() - Üç boyutluluk etkisi vermek için görüntüyü gri tonlamaya dönüştürür
- Imagick::addNoiseImage() - Görüntüye rasgele gürültü ekler
- Imagick::swirlImage() - Görüntünün merkezine yakın pikselleri girdap gibi döndürür

# Imagick::whiteThresholdImage

(PECL imagick 2, PECL imagick 3)

Imagick::whiteThresholdImage — Eşiğin üstündeki tüm piksellerin rengini beyaza zorlar

### Açıklama

public function Imagick::whiteThresholdImage(mixed `$eşik`): bool

Eşiğin üzerindeki piksellerin tümünü beyaza boyamaya çalışması ve eşiğin altında kalan renklere hiç dokunmaması dışında Imagick::ThresholdImage() yöntemine benzer.

### Bağımsız Değişkenler

`eşik`

### Dönen Değerler

Başarı durumunda `true` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL imagick 2.1.0 | Bağımsız değişken olarak bir rengi ifade eden bir dizgenin belirtilebilmesi sağlandı. Önceki sürümlerde sadece bir ImagickPixel nesnesi belirtmeye izin verilirdi.

### Örnekler

Örnek 1 * Imagick::whiteThresholdImage() örneği

    <?php
    function whiteThresholdImage($imagePath, $color) {
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->whiteThresholdImage($color);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

    ?>

# Imagick::writeImage

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::writeImage — Görüntüyü belirtilen dosyaya yazar

### Açıklama

public function Imagick::writeImage(string `$dosya` = `null`): bool

Görüntüyü belirtilen dosyaya yazar. `dosya` olarak `null` verilmişse görüntü, Imagick::ReadImage() veya Imagick::SetImageFilename() ile belirlenen dosyaya yazılır.

### Bağımsız Değişkenler

`dosya`

  Görüntünün yazılacağı dosyanın yolu. Dosya uzantısı görüntünün türünü belirler. Dosya uzantısına bakılmaksızın görüntü türü "jpg:test.png" biçemine benzer şekilde belirtilebilir.

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::writeImageFile

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::writeImageFile — Bir görüntüyü belirtilen dosya tanıtıcısına yazar

### Açıklama

public function Imagick::writeImageFile(resource `$dt`, string `$biçem` = ?): bool

Görüntüyü belirtilen dosya tanıtıcısına yazar. Dosya tanıtıcısı fopen() gibi bir işlevle açılmış olmalıdır. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`dt`

  Görüntünün yazılacağı dosya tanıtıcısı.

`biçem`

  Görüntü biçemi. Geçerli biçem belirteçlerinin listesi ImageMagick'in derlenmiş özelliklerine bağlıdır ve Imagick::queryFormats() ile sorgulanabilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::queryFormats() - Imagick tarafından desteklenen biçemleri döndürür

# Imagick::writeImages

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::writeImages — Bir görüntüyü veya görüntü kümesini dosyaya yazar

### Açıklama

public function Imagick::writeImages(string `$dosya`, bool `$bitişik`): bool

Bir görüntüyü veya görüntü kümesini belirtilen dosyaya yazar.

### Bağımsız Değişkenler

`dosya`

  Görüntünün yazılacağı dosyanın yolu.

`bitişik`

### Dönen Değerler

Başarı durumunda `true` döner.

# Imagick::writeImagesFile

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

Imagick::writeImagesFile — Görüntü karelerini bir dosya tanıtıcısına yazar

### Açıklama

public function Imagick::writeImagesFile(resource `$dt`, string `$biçem` = ?): bool

Tüm görüntü karelerini belirtiler dosya tanıtıcısına yazar. Bu işlevi, canlandırmalı GIF'leri ve diğer çok kareli görüntüleri açık bir dosya tanıtıcısına yazmak için kullanabilirsiniz. Bu yöntem, derleme sırasında ImageMagick kütüphanesinin 6.3.6 veya sonraki bir sürümü kuruluysa kullanılabilir.

### Bağımsız Değişkenler

`dt`

  Görüntülerin yazılacağı dosya tanıtıcısı.

`biçem`

  Görüntü biçemi. Geçerli biçem belirteçlerinin listesi ImageMagick'in derlenmiş özelliklerine bağlıdır ve Imagick::queryFormats() ile sorgulanabilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Ayrıca Bakınız

- Imagick::queryFormats() - Imagick tarafından desteklenen biçemleri döndürür

## İçindekiler

- Imagick::adaptiveBlurImage — Görüntüyü uyarlamalı olarak bulanıklaştırır
- Imagick::adaptiveResizeImage — Nirengi noktasına göre uyarlamalı olarak görüntüyü boyutlandırır
- Imagick::adaptiveSharpenImage — Uyarlamalı olarak görüntüyü keskinleştirir
- Imagick::adaptiveThresholdImage — Bir yoğunluk aralığına göre her piksel için bir eşik seçer
- Imagick::addImage — Imagick görüntü listesine yeni bir görüntü ekler
- Imagick::addNoiseImage — Görüntüye rasgele gürültü ekler
- Imagick::affineTransformImage — Görüntüyü dönüştürür
- Imagick::animateImages — Bir görüntüyü veya görüntüleri canlandırır
- Imagick::annotateImage — Görüntüye bir metin çizer
- Imagick::appendImages — Bir görüntü kümesini ekler
- Imagick::autoLevelImage — Adjusts the levels of a particular image channel
- Imagick::averageImages — Bir görüntü kümesinin ortalamasını alır
- Imagick::blackThresholdImage — Eşiğin altında kalan tüm renkleri siyaha çevirir
- Imagick::blueShiftImage — Mutes the colors of the image
- Imagick::blurImage — Görüntüye bir bulanıklık süzgeci ekler
- Imagick::borderImage — Görüntüye bir çerçeve çizer
- Imagick::brightnessContrastImage — Change the brightness and/or contrast of an image
- Imagick::charcoalImage — Kara kalem çizimi taklit eder
- Imagick::chopImage — Bir görüntünün bir bölgesini silerek kırpar
- Imagick::clampImage — Restricts the color range from 0 to the quantum depth.
- Imagick::clear — Imagick nesnesi ile ilgili tüm özkaynakları temizler
- Imagick::clipImage — 8BIM profilindeki ilk yol boyunca görüntüyü kırpar
- Imagick::clipImagePath — Clips along the named paths from the 8BIM profile, if present
- Imagick::clipPathImage — 8BIM profili boyunca isimli yolları kırpar
- Imagick::clone — Imagick nesnesinin tam bir kopyasını yapar
- Imagick::clutImage — Görüntünün renklerini değiştirir
- Imagick::coalesceImages — Bir görüntü kümesini tek bir görüntü olarak birleştirir
- Imagick::colorFloodfillImage — Hedefle eşleşen her pikselin rengini değiştirir
- Imagick::colorizeImage — Görüntünün her pikseline dolgu rengini karıştırır
- Imagick::colorMatrixImage — Apply color transformation to an image
- Imagick::combineImages — Bir veya daha fazla görüntüyü tek bir resim halinde birleştirir
- Imagick::commentImage — Görüntüye bir açıklama ekler
- Imagick::compareImageChannels — Bir veya daha fazla görüntünün farkını döndürür
- Imagick::compareImageLayers — Görüntü katmanlarını karşılaştırıp en iyilenmiş görüntüyü döndürür
- Imagick::compareImages — Görüntüyü yeniden oluşturulan görüntü ile karşılaştırır
- Imagick::compositeImage — Bir görüntüyü diğeriyle birleştirir
- Imagick::__construct — Imagick kurucusu
- Imagick::contrastImage — Görüntünün zıtlığını değiştirir
- Imagick::contrastStretchImage — Renkli bir görüntünün zıtlığını ayarlar
- Imagick::convolveImage — Görüntüye bir evrişim çekirdeği uygular
- Imagick::count — Get the number of images
- Imagick::cropImage — Görüntünün bir bölgesini çıkarır
- Imagick::cropThumbnailImage — Görüntünün kırpık bir örneğini oluşturur
- Imagick::current — Geçerli Imagick nesnesini döndürür
- Imagick::cycleColormapImage — Bir görüntünün renk eşleminin bir kısmını değiştirir
- Imagick::decipherImage — Şifreli bir görüntünün şifresini çözer
- Imagick::deconstructImages — Görüntüler arasındaki farklı piksellerin kapladığı en büyük alanı döndürür
- Imagick::deleteImageArtifact — Delete image artifact
- Imagick::deleteImageProperty — Deletes an image property
- Imagick::deskewImage — Removes skew from the image
- Imagick::despeckleImage — Görüntünün benekli görünümünü düzeltir
- Imagick::destroy — Imagick nesnesini siler
- Imagick::displayImage — Bir görüntüyü gösterir
- Imagick::displayImages — Bir görüntü dizisini gösterir
- Imagick::distortImage — Çeşitli yöntemlerle görüntüyü bozunuma uğratır
- Imagick::drawImage — Belirtilen ImagickDraw nesnesini görüntüye uygular
- Imagick::edgeImage — Görüntünün kenarlarını yuvarlatır
- Imagick::embossImage — Üç boyutluluk etkisi vermek için görüntüyü gri tonlamaya dönüştürür
- Imagick::encipherImage — Bir görüntüyü şifreler
- Imagick::enhanceImage — Görüntü kalitesini arttırır
- Imagick::equalizeImage — Görüntünün renk dağılımını dengeler
- Imagick::evaluateImage — Görüntüye bir ifade uygular
- Imagick::exportImagePixels — Exports raw image pixels
- Imagick::extentImage — Görüntü boyutlarını belirler
- Imagick::filter — Applies a custom convolution kernel to the image
- Imagick::flattenImages — Bir görüntü dizisini tek bir görüntü halinde üstüste bindirir
- Imagick::flipImage — Görüntünün düşeydeki yansımasını oluşturur
- Imagick::floodFillPaintImage — Hedefle eşleşen piksellerin renklerini değiştirir
- Imagick::flopImage — Görüntünün yataydaki yansımasını oluşturur
- Imagick::forwardFourierTransformImage — Implements the discrete Fourier transform (DFT)
- Imagick::frameImage — Üç boyutluluğu taklit ederek bir çerçeve ekler
- Imagick::functionImage — Applies a function on the image
- Imagick::fxImage — Bir ifadeyi görüntüdeki her piksele uygular
- Imagick::gammaImage — Görüntünün gammasını düzeltir
- Imagick::gaussianBlurImage — Görüntüyü bulanıklaştırır
- Imagick::getColorspace — Gets the colorspace
- Imagick::getCompression — Nesnenin sıkıştırma türünü döndürür
- Imagick::getCompressionQuality — Nesnenin sıkıştırma seviyesini döndürür
- Imagick::getCopyright — ImageMagick telif hakkı bilgisini döndürür
- Imagick::getFilename — Görüntü dizisi ile ilişkili dosya ismini döndürür
- Imagick::getFont — Yazıtipini döndürür
- Imagick::getFormat — Imagick nesnesinin biçemini döndürür
- Imagick::getGravity — Gets the gravity
- Imagick::getHomeURL — ImageMagick sitesinin adresini döndürür
- Imagick::getImage — Yeni bir Imagick nesnesi döndürür
- Imagick::getImageAlphaChannel — Checks if the image has an alpha channel
- Imagick::getImageArtifact — Get image artifact
- Imagick::getImageAttribute — Returns a named attribute
- Imagick::getImageBackgroundColor — Resmin artalan rengini döndürür
- Imagick::getImageBlob — Görüntü dizisini ikil dizge olarak döndürür
- Imagick::getImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktayı döndürür
- Imagick::getImageBorderColor — Görüntünün çerçeve rengini döndürür
- Imagick::getImageChannelDepth — Belirtilen kanalın derinliğini döndürür
- Imagick::getImageChannelDistortion — Görüntünün kanallarını yeniden oluşturulan görüntüyle karşılaştırır
- Imagick::getImageChannelDistortions — Gets channel distortions
- Imagick::getImageChannelExtrema — Belirtilen kanalların uç değerlerini döndürür
- Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose
- Imagick::getImageChannelMean — Kanal ortalama ve standart sapmasını döndürür
- Imagick::getImageChannelRange — Gets channel range
- Imagick::getImageChannelStatistics — Görüntüdeki her kanalın istatistiklerini döndürür
- Imagick::getImageClipMask — Resim kırpma maskesini döndürür
- Imagick::getImageColormapColor — Renk eşlemi indisi belirtilen rengi döndürür
- Imagick::getImageColors — Görüntüdeki eşsiz renklerin sayısını döndürür
- Imagick::getImageColorspace — Resmin renk uzayını döndürür
- Imagick::getImageCompose — Görüntü ile ilgili birleştirme işlecini döndürür
- Imagick::getImageCompression — Görüntünün sıkıştırma türünü döndürür
- Imagick::getImageCompressionQuality — Görüntünün sıkıştırma seviyesini döndürür
- Imagick::getImageDelay — Görüntü gecikmesini döndürür
- Imagick::getImageDepth — Görüntü derinliğini döndürür
- Imagick::getImageDispose — Görüntünün elden çıkarma yöntemini döndürür
- Imagick::getImageDistortion — Görüntüyü yeniden oluşturulmuş bir görüntü ile karşılaştırır
- Imagick::getImageExtrema — Görüntü ile ilgili uç değerleri döndürür
- Imagick::getImageFilename — Bir görüntü dizisindeki belli bir görüntünün dosya ismini döndürür
- Imagick::getImageFormat — Bir görüntü dizisindeki belli bir görüntünün biçemini döndürür
- Imagick::getImageGamma — Görüntünün gammasını döndürür
- Imagick::getImageGeometry — Görüntünün genişliğini ve yüksekliğini bir ilişkisel dizi olarak döndürür
- Imagick::getImageGravity — Gets the image gravity
- Imagick::getImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı döndürür
- Imagick::getImageHeight — Görüntünün yüksekliğini döndürür
- Imagick::getImageHistogram — Görüntünün renk dağılımını döndürür
- Imagick::getImageIndex — Geçerli etkin görüntünün indisini döndürür
- Imagick::getImageInterlaceScheme — Görüntünün geçişim şemasını döndürür
- Imagick::getImageInterpolateMethod — Aradeğerleme yöntemini döndürür
- Imagick::getImageIterations — Görüntü yineleme sayısını döndürür
- Imagick::getImageLength — Görüntü uzunluğunu döndürür
- Imagick::getImageMatte — Görüntünün bir matlık kanalı varsa true döndürür
- Imagick::getImageMatteColor — Görüntünün matlık rengini döndürür
- Imagick::getImageMimeType — Returns the image mime-type
- Imagick::getImageOrientation — Görüntü baskı yönünü döndürür
- Imagick::getImagePage — Sayfa geometrisini döndürür
- Imagick::getImagePixelColor — Belirtilen pikselin rengini döndürür
- Imagick::getImageProfile — İsimli görüntü profilini döndürür
- Imagick::getImageProfiles — Görüntü profillerini döndürür
- Imagick::getImageProperties — Görüntü özelliklerini döndürür
- Imagick::getImageProperty — İsimli görüntü özelliğini döndürür
- Imagick::getImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktasını döndürür
- Imagick::getImageRegion — Görüntünün bir bölgesini çıkarır
- Imagick::getImageRenderingIntent — Görüntüye komutların uygulanış tarzını döndürür
- Imagick::getImageResolution — Görüntünün X ve Y çözünürlüklerini döndürür
- Imagick::getImagesBlob — Tüm görüntü dizilerini bir ikil dizge olarak döndürür
- Imagick::getImageScene — Görüntünün artalan dekorunu döndürür
- Imagick::getImageSignature — Görüntünün SHA-256 aşını üretir
- Imagick::getImageSize — Görüntü uzunluğunu bayt cinsinden döndürür
- Imagick::getImageTicksPerSecond — Görüntünün saniyedeki tik sayısını döndürür
- Imagick::getImageTotalInkDensity — Görüntünün belli bir renginin toplam yoğunluğunu döndürür
- Imagick::getImageType — Olası görüntü türünü döndürür
- Imagick::getImageUnits — Görüntü çözünürlük birimlerini döndürür
- Imagick::getImageVirtualPixelMethod — Sanal piksel yöntemini döndürür
- Imagick::getImageWhitePoint — Görüntünün renk bileşenlerinden beyaz noktayı döndürür
- Imagick::getImageWidth — Görüntü genişliğini döndürür
- Imagick::getInterlaceScheme — Nesne geçişim şemasını döndürür
- Imagick::getIteratorIndex — Geçerli etkin görüntünün indisini döndürür
- Imagick::getNumberImages — Nesnedeki görüntü sayısını döndürür
- Imagick::getOption — Belirtilen anahtarla ilgili değeri döndürür
- Imagick::getPackageName — ImageMagick paket ismini döndürür
- Imagick::getPage — Sayfa geometrisini döndürür
- Imagick::getPixelIterator — Bir MagickPixelIterator nesnesi döndürür
- Imagick::getPixelRegionIterator — Bir görüntü bölümü için bir ImagickPixelIterator nesnesi döndürür
- Imagick::getPointSize — Punto değerini döndürür
- Imagick::getQuantum — Returns the ImageMagick quantum range
- Imagick::getQuantumDepth — Parçacık derinliğini döndürür
- Imagick::getQuantumRange — Imagick parçacık aralığını döndürür
- Imagick::getRegistry — Get a StringRegistry entry
- Imagick::getReleaseDate — ImageMagick dağıtım tarihini döndürür
- Imagick::getResource — Belirtilen özkaynağın bellek kullanımını döndürür
- Imagick::getResourceLimit — Belirtilen özkaynağın bellek kullanım sınırını döndürür
- Imagick::getSamplingFactors — Yatay ve düşey örnekleme katsayısını döndürür
- Imagick::getSize — Imagick nesnesi ile ilgili boyutları döndürür
- Imagick::getSizeOffset — Boyut başlangıç noktasını döndürür
- Imagick::getVersion — ImageMagick API sürümünü döndürür
- Imagick::haldClutImage — Replaces colors in the image
- Imagick::hasNextImage — Görüntünün sonrasında bir görüntü daha var mı diye bakar
- Imagick::hasPreviousImage — Görüntünün öncesinde bir görüntü daha var mı diye bakar
- Imagick::identifyFormat — Formats a string with image details
- Imagick::identifyImage — Görüntünün özniteliklerini döndürerek görüntüyü tanımlar
- Imagick::implodeImage — Görüntüyü kopyalamak suretiyle yeni bir görüntü oluşturur
- Imagick::importImagePixels — Imports image pixels
- Imagick::inverseFourierTransformImage — Implements the inverse discrete Fourier transform (DFT)
- Imagick::labelImage — Görüntüye bir yafta ekler
- Imagick::levelImage — Bir görüntünün seviyelerini ayarlar
- Imagick::linearStretchImage — Görüntünün koyuluğunu doygunluk ile abartır
- Imagick::liquidRescaleImage — Bir görüntüyü veya görüntüleri canlandırır
- Imagick::listRegistry — List all the registry settings
- Imagick::magnifyImage — En boy oranını koruyarak görüntüyü iki katına büyütür
- Imagick::mapImage — Görüntünün renklerini belirtilen görüntüdeki en yakın renklerle değiştirir
- Imagick::matteFloodfillImage — Bir rengin şeffaflık değerini değiştirir
- Imagick::medianFilterImage — Görüntüye bir sayısal süzgeç uygular
- Imagick::mergeImageLayers — Görüntü katmanlarını katıştırır
- Imagick::minifyImage — En boy oranını koruyarak görüntüyü yarı boyutuna indirir
- Imagick::modulateImage — Görüntünün parlaklık, doygunluk ve renk sıcaklığını denetler
- Imagick::montageImage — Birleşik bir görüntü oluşturur
- Imagick::morphImages — Bir görüntü dizisini başkalaşıma uğratır
- Imagick::morphology — Applies a user supplied kernel to the image according to the given morphology method.
- Imagick::mosaicImages — Görüntülerden bir mozaik oluşturur
- Imagick::motionBlurImage — Hareket bulanıklığını taklit eder
- Imagick::negateImage — Görüntünün renklerini negatiflerine dönüştürür
- Imagick::newImage — Yeni bir görüntü oluşturur
- Imagick::newPseudoImage — Yeni bir görüntü oluşturur
- Imagick::nextImage — Bir sonraki görüntüye gider
- Imagick::normalizeImage — Renkli bir görüntünün zıtlığını arttırır
- Imagick::oilPaintImage — Yağlı boya resmi taklit eder
- Imagick::opaquePaintImage — Hedef ile eşleşen piksellerin rengini değiştirir
- Imagick::optimizeImageLayers — En iyilemek amacıyla görüntülerin tekrarlanan bölümlerini siler
- Imagick::orderedPosterizeImage — Görüntüye kurallı titreklik uygular
- Imagick::paintFloodfillImage — Belirtilen renkle eşleşen piksellerin rengini değiştirir
- Imagick::paintOpaqueImage — Bir rengi bir başka renkle değiştirir
- Imagick::paintTransparentImage — Görüntüdeki belli bir rengi dolgu rengiyle değiştirir
- Imagick::pingImage — Temel görüntü özniteliklerini bir dosyadan okur
- Imagick::pingImageBlob — Temel görüntü özniteliklerini bir dizgeden okur
- Imagick::pingImageFile — Temel görüntü özniteliklerini bir akımdan okur
- Imagick::polaroidImage — Polaroid resmi taklit eder
- Imagick::posterizeImage — Görüntüdeki renkleri belli bir sayıya düşürür
- Imagick::previewImages — Görüntü üzerinde yapılacak bir işlem için en uygun bağımsız değişkenin tespitini hızlandırır
- Imagick::previousImage — Bir önceki görüntüye gider
- Imagick::profileImage — Bir görüntüye profil ekler veya çıkarır
- Imagick::quantizeImage — Belli bir görüntü içindeki renk miktarını bulur
- Imagick::quantizeImages — Bir görüntü kümesi içindeki renk miktarını bulur
- Imagick::queryFontMetrics — Yazı tipinin özelliklerini içeren bir dizi döndürür
- Imagick::queryFonts — Yapılandırımış yazı tiplerini döndürür
- Imagick::queryFormats — Imagick tarafından desteklenen biçemleri döndürür
- Imagick::radialBlurImage — Görüntüye dairesel bulanıklık uygular
- Imagick::raiseImage — 3 boyutlu düğme benzeri bir etki oluşturur
- Imagick::randomThresholdImage — Yüksek zıtlığa sahip iki renkli görüntü oluşturur
- Imagick::readImage — Görüntüyü dosyadar okur
- Imagick::readImageBlob — Görüntüyü ikil bir dizgeden okur
- Imagick::readImageFile — Görüntüyü akımdan okur
- Imagick::readimages — Reads image from an array of filenames
- Imagick::recolorImage — Görüntüyü yeniden renklendirir
- Imagick::reduceNoiseImage — Görüntünün dış hatlarını yumuşatır
- Imagick::remapImage — Remaps image colors
- Imagick::removeImage — Görüntü kümesinden görüntü siler
- Imagick::removeImageProfile — İsimli görüntü profilini silip döndürür
- Imagick::render — Evvelce verilmiş tüm çizim komutlarını uygular
- Imagick::resampleImage — Belirtilen çözünürlüğe göre görüntüyü yeniden örnekler
- Imagick::resetImagePage — Görüntü sayfasını sıfırlar
- Imagick::resizeImage — Görüntüyü boyutlandırır
- Imagick::rollImage — Görüntünün başlangıç noktasını tanımlar
- Imagick::rotateImage — Görüntüyü döndürür
- Imagick::rotationalBlurImage — Rotational blurs an image
- Imagick::roundCorners — Görüntünün köşelerini yuvarlatır
- Imagick::sampleImage — Görüntüyü piksel örneklemeyle oranlar
- Imagick::scaleImage — Görüntünün enboy oranını ayarlar
- Imagick::segmentImage — Segments an image
- Imagick::selectiveBlurImage — Selectively blur an image within a contrast threshold
- Imagick::separateImageChannel — Görüntüden bir kanalı ayırır
- Imagick::sepiaToneImage — Görüntüye kızıl kahverengi tonlama uygular
- Imagick::setBackgroundColor — Nesnenin öntanımlı artalan rengini tanımlar
- Imagick::setColorspace — Set colorspace
- Imagick::setCompression — Nesnenin öntanımlı sıkıştırma türünü tanımlar
- Imagick::setCompressionQuality — Nesnenin öntanımlı sıkıştırma seviyesini tanımlar
- Imagick::setFilename — Görüntüye dosya ismi tanımlar
- Imagick::setFirstIterator — Imagick yineleyiciyi ilk görüntüye konumlar
- Imagick::setFont — Imagick nesnesinin yazı tipini tanımlar
- Imagick::setFormat — Imagick nesnesinin biçemini tanımlar
- Imagick::setGravity — Sets the gravity
- Imagick::setImage — Nesnedeki görüntüyü değiştirir
- Imagick::setImageAlphaChannel — Görüntünün şeffaflık kanalını tanımlar
- Imagick::setImageArtifact — Set image artifact
- Imagick::setImageAttribute — Sets an image attribute
- Imagick::setImageBackgroundColor — Görüntünün artalan rengini tanımlar
- Imagick::setImageBias — Görüntüyü evriştirmekte kullanılan yöntem için görüntü sapmasını tanımlar
- Imagick::setImageBiasQuantum — Sets the image bias
- Imagick::setImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktasını tanımlar
- Imagick::setImageBorderColor — Görüntünün çerçeve rengini tanımlar
- Imagick::setImageChannelDepth — Belli bir görüntü kanalının derinliğini tanımlar
- Imagick::setImageClipMask — Görüntü kırpma maskesini tanımlar
- Imagick::setImageColormapColor — Renk eşlemi indisi belirtilen rengi tanımlar
- Imagick::setImageColorspace — Görüntünün renk uzayını tanımlar
- Imagick::setImageCompose — Görüntü birleştirme işlecini tanımlar
- Imagick::setImageCompression — Görüntü sıkıştırma seviyesini tanımlar
- Imagick::setImageCompressionQuality — Görüntü sıkıştırma seviyesini belirler
- Imagick::setImageDelay — Görüntü gecikmesini tanımlar
- Imagick::setImageDepth — Görüntü derinliğini tanımlar
- Imagick::setImageDispose — Görüntünün elden çıkarma yöntemini tanımlar
- Imagick::setImageExtent — Görüntünün boyutlarını tanımlar
- Imagick::setImageFilename — Belli bir görüntünün dosya ismini tanımlar
- Imagick::setImageFormat — Belli bir görüntünün biçemini tanımlar
- Imagick::setImageGamma — Görüntünün gammasını tanımlar
- Imagick::setImageGravity — Sets the image gravity
- Imagick::setImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı tanımlar
- Imagick::setImageIndex — Yineleyici konumunu tanımlar
- Imagick::setImageInterlaceScheme — Görüntü geçişim şemasını tanımlar
- Imagick::setImageInterpolateMethod — Görüntünün aradeğer pikseli yöntemini tanımlar
- Imagick::setImageIterations — Görüntü yineleme sayısını tanımlar
- Imagick::setImageMatte — Görüntünün matlık kanalını ayarlar
- Imagick::setImageMatteColor — Görüntünün şeffaf rengini tanımlar
- Imagick::setImageOpacity — Görüntünün matlık seviyesini tanımlar
- Imagick::setImageOrientation — Görüntünün baskı yönünü tanımlar
- Imagick::setImagePage — Görüntünün sayfa geometrisini tanımlar
- Imagick::setImageProfile — Imagick nesnesine isimli bir profil ekler
- Imagick::setImageProperty — Bir görüntü özelliğini tanımlar
- Imagick::setImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktayı tanımlar
- Imagick::setImageRenderingIntent — Görüntüye komutların uygulanış tarzını belirler
- Imagick::setImageResolution — Görüntünün çözünürlüğünü ayarlar
- Imagick::setImageScene — Görüntünün dekorunu tanımlar
- Imagick::setImageTicksPerSecond — Canlandırma hızını değiştirir
- Imagick::setImageType — Görüntü türünü tanımlar
- Imagick::setImageUnits — Görüntünün çözünürlük birimlerini tanımlar
- Imagick::setImageVirtualPixelMethod — Görüntünün sanal piksel yöntemini tanımlar
- Imagick::setImageWhitePoint — Renk berraklığının beyaz noktasını tanımlar
- Imagick::setInterlaceScheme — Görüntü geçişim şemasını tanımlar
- Imagick::setIteratorIndex — Yineleyici konumunu belirler
- Imagick::setLastIterator — Son görüntüye bir Imagick yineleyicisi atar
- Imagick::setOption — Bir seçenek tanımlar
- Imagick::setPage — Imagick nesnesinin sayfa geometrisini tanımlar
- Imagick::setPointSize — Yazı puntosunu belirler
- Imagick::setProgressMonitor — Set a callback to be called during processing
- Imagick::setRegistry — Sets the ImageMagick registry entry named key to value
- Imagick::setResolution — Görüntü çözünürlüğünü tanımlar
- Imagick::setResourceLimit — Belli bir özkaynağa sınır tanımlar
- Imagick::setSamplingFactors — Görüntü örnekleme çarpanlarını ayarlar
- Imagick::setSize — Imagick nesnesinin boyutlarını ayarlar
- Imagick::setSizeOffset — Imagick nesnesinin başlangıcını ve boyutlarını ayarlar
- Imagick::setType — Görüntünün tür özniteliğini tanımlar
- Imagick::shadeImage — Üç boyutluluk etkisi oluşturur
- Imagick::shadowImage — Görüntüde gölgeleri taklit eder
- Imagick::sharpenImage — Görüntüyü netleştirir
- Imagick::shaveImage — Görüntünün kenarındaki pikselleri rendeler
- Imagick::shearImage — Bir paralalkenar oluşturur
- Imagick::sigmoidalContrastImage — Bir resmin zıtlığını ayarlar
- Imagick::sketchImage — Kara kalem çalışmasını taklit eder
- Imagick::smushImages — Takes all images from the current image pointer to the end of the image list and smushs them
- Imagick::solarizeImage — Görüntüye uzun pozlama etkisi uygular
- Imagick::sparseColorImage — Interpolates colors
- Imagick::spliceImage — Görüntüye düz bir renk ekler
- Imagick::spreadImage — Bir kümedeki her pikseli rasgele gösterir
- Imagick::statisticImage — Modifies image using a statistics function
- Imagick::steganoImage — Görüntünün içine sayısal bir filigran gizler
- Imagick::stereoImage — İki görüntüyü birleştirir
- Imagick::stripImage — Görüntüden tüm profilleri ve açıklamaları ayıklar
- Imagick::subImageMatch — Searches for a subimage in the current image and returns a similarity image
- Imagick::swirlImage — Görüntünün merkezine yakın pikselleri girdap gibi döndürür
- Imagick::textureImage — Doku görüntüsünü yatay ve düşeyde yineler
- Imagick::thresholdImage — Bazı pikselleri belli bir eşiğe göre değiştir
- Imagick::thumbnailImage — Görüntünün boyutlarını değiştirir
- Imagick::tintImage — Görüntüdeki her piksele bir renk yöneyi uygular
- Imagick::__toString — Returns the image as a string
- Imagick::transformImage — Budama miktarını ve görüntü geometrisini ayarlamanın uygun yolu
- Imagick::transformImageColorspace — Transforms an image to a new colorspace
- Imagick::transparentPaintImage — Pikselleri şeffaflaştırır
- Imagick::transposeImage — Görüntünün düşeydeki yansımasını oluşturur
- Imagick::transverseImage — Görüntünün yataydaki yansımasını oluşturur
- Imagick::trimImage — Görüntünün kenarlarını siler
- Imagick::uniqueImageColors — Biri dışında tüm piksel renklerini iptal eder
- Imagick::unsharpMaskImage — Görüntüyü netleştirir
- Imagick::valid — Imagick nesnesinin geçerli olup olmadığını sınar
- Imagick::vignetteImage — Görüntüye bir nakış süzgeci uygular
- Imagick::waveImage — Görüntüye bir dalga süzgeci uygular
- Imagick::whiteThresholdImage — Eşiğin üstündeki tüm piksellerin rengini beyaza zorlar
- Imagick::writeImage — Görüntüyü belirtilen dosyaya yazar
- Imagick::writeImageFile — Bir görüntüyü belirtilen dosya tanıtıcısına yazar
- Imagick::writeImages — Bir görüntüyü veya görüntü kümesini dosyaya yazar
- Imagick::writeImagesFile — Görüntü karelerini bir dosya tanıtıcısına yazar

# ImagickDraw sınıfı

(PECL imagick 2, PECL imagick 3)

## Sınıf Sözdizimi

class ImagickDraw {
public function affine(array `$matris`): bool
public function annotation(float `$x`, float `$y`, string `$metin`): bool
public function arc(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`,
float `$sd`,
float `$ed`
): bool
public function bezier(array `$noktalar`): bool
public function circle(
float `$ox`,
float `$oy`,
float `$px`,
float `$py`
): bool
public function clear(): bool
public function clone(): ImagickDraw
public function color(float `$x`, float `$y`, int `$boyamaYöntemi`): bool
public function comment(string `$açıklama`): bool
public function composite(
int `$işleç`,
float `$x`,
float `$y`,
float `$genişlik`,
float `$yükseklik`,
Imagick `$görüntü`
): bool
public function __construct()
public function destroy(): bool
public function ellipse(
float `$ox`,
float `$oy`,
float `$rx`,
float `$ry`,
float `$başlangıç`,
float `$bitiş`
): bool
public function getClipPath(): string
public function getClipRule(): int
public function getClipUnits(): int
public function getFillColor(): ImagickPixel
public function getFillOpacity(): float
public function getFillRule(): int
public function getFont(): string
public function getFontFamily(): string
public function getFontSize(): float
public function getFontStretch(): int
public function getFontStyle(): int
public function getFontWeight(): int
public function getGravity(): int
public function getStrokeAntialias(): bool
public function getStrokeColor(): ImagickPixel
public function getStrokeDashArray(): array
public function getStrokeDashOffset(): float
public function getStrokeLineCap(): int
public function getStrokeLineJoin(): int
public function getStrokeMiterLimit(): int
public function getStrokeOpacity(): float
public function getStrokeWidth(): float
public function getTextAlignment(): int
public function getTextAntialias(): bool
public function getTextDecoration(): int
public function getTextEncoding(): string
public function getTextInterlineSpacing(): float
public function getTextInterwordSpacing(): float
public function getTextKerning(): float
public function getTextUnderColor(): ImagickPixel
public function getVectorGraphics(): string
publicfunction line(
float `$bx`,
float `$by`,
float `$sx`,
float `$sy`
): bool
public function matte(float `$x`, float `$y`, int `$boyamaYöntemi`): bool
public function pathClose(): bool
public function pathCurveToAbsolute(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
public function pathCurveToQuadraticBezierAbsolute(
float `$x1`,
float `$y1`,
float `$x`,
float `$y`
): bool
public function pathCurveToQuadraticBezierRelative(
float `$x1`,
float `$y1`,
float `$x`,
float `$y`
): bool
public function pathCurveToQuadraticBezierSmoothAbsolute(float `$x`, float `$y`): bool
public function pathCurveToQuadraticBezierSmoothRelative(float `$x`, float `$y`): bool
public function pathCurveToRelative(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
public function pathCurveToSmoothAbsolute(
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
public function pathCurveToSmoothRelative(
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
public function pathEllipticArcAbsolute(
float `$rx`,
float `$ry`,
float `$x_ekseni_açısı`,
bool `$büyük_yay`,
bool `$saat_yönü`,
float `$x`,
float `$y`
): bool
public function pathEllipticArcRelative(
float `$rx`,
float `$ry`,
float `$x_ekseni_açısı`,
bool `$büyük_yay`,
bool `$saat_yönü`,
float `$x`,
float `$y`
): bool
public function pathFinish(): bool
public function pathLineToAbsolute(float `$x`, float `$y`): bool
public function pathLineToHorizontalAbsolute(float `$x`): bool
public function pathLineToHorizontalRelative(float `$x`): bool
public function pathLineToRelative(float `$x`, float `$y`): bool
public function pathLineToVerticalAbsolute(float `$y`): bool
public function pathLineToVerticalRelative(float `$y`): bool
public function pathMoveToAbsolute(float `$x`, float `$y`): bool
public function pathMoveToRelative(float `$x`, float `$y`): bool
public function pathStart(): bool
public function point(float `$x`, float `$y`): bool
public function polygon(array `$koordinatlar`): bool
public function polyline(array `$koordinatlar`): bool
public function pop(): bool
public function popClipPath(): bool
public function popDefs(): bool
public function popPattern(): bool
public function push(): bool
public function pushClipPath(string `$yalıtım_maskesi_kimliği`): bool
public function pushDefs(): bool
public function pushPattern(
string `$örüntü_kimliği`,
float `$x`,
float `$y`,
float `$genişlik`,
float `$yükseklik`
): bool
public function rectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`
): bool
public function render(): bool
public function resetVectorGraphics(): bool
public function rotate(float `$açı`): bool
public function roundRectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$rx`,
float `$ry`
): bool
public function scale(float `$x`, float `$y`): bool
public function setClipPath(string `$yalıtım_maskesi`): bool
public function setClipRule(int `$dolgu_kuralı`): bool
public function setClipUnits(int `$yalıtım_birimleri`): bool
public function setFillAlpha(float `$şeffaflık`): bool
public function setFillColor(ImagickPixel `$dolgu_rengi`): bool
public function setFillOpacity(float `$matlık`): bool
public function setFillPatternURL(string `$dolgu_adresi`): bool
public function setFillRule(int `$dolgu_kuralı`): bool
public function setFont(string `$yazıtipi_adı`): bool
public function setFontFamily(string `$yazıtipi_ailesi`): bool
public function setFontSize(float `$punto`): bool
public function setFontStretch(int `$gerginlik`): bool
public function setFontStyle(int `$tarz`): bool
public function setFontWeight(int `$kalınlık`): bool
public function setGravity(int `$çekimYönü`): bool
public function setResolution(float `$resolution_x`, float `$resolution_y`): bool
public function setStrokeAlpha(float `$şeffaflık`): bool
public function setStrokeAntialias(bool `$vurguyu_yumuşat`): bool
public function setStrokeColor(ImagickPixel `$vurgu_rengi`): bool
public function setStrokeDashArray(array `$tireDizisi`): bool
public function setStrokeDashOffset(float `$tire_başlangıcı`): bool
public function setStrokeLineCap(int `$uçTürü`): bool
public function setStrokeLineJoin(int `$eklemTürü`): bool
public function setStrokeMiterLimit(int `$gönyeSınırı`): bool
public function setStrokeOpacity(float `$vurgu_matlığı`): bool
public function setStrokePatternURL(string `$örüntü_adresi`): bool
public function setStrokeWidth(float `$vurgu_genişliği`): bool
public function setTextAlignment(int `$hizalama`): bool
public function setTextAntialias(bool `$yumuşat`): bool
public function setTextDecoration(int `$süs`): bool
public function setTextEncoding(string `$karküm`): bool
public function setTextInterlineSpacing(float `$spacing`): bool
public function setTextInterwordSpacing(float `$spacing`): bool
public function setTextKerning(float `$kerning`): bool
public function setTextUnderColor(ImagickPixel `$artalan`): bool
public function setVectorGraphics(string `$xml`): bool
public function setViewbox(
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`
): bool
public function skewX(float `$derece`): bool
public function skewY(float `$derece`): bool
public function translate(float `$x`, float `$y`): bool
}

# ImagickDraw::affine

(PECL imagick 2, PECL imagick 3)

ImagickDraw::affine — Geçerli homojen koordinatlar matrisini ayarlar

### Açıklama

public function ImagickDraw::affine(array `$matris`): bool

Belirtilen matrise göre homojen koordinatlar matrisini ayarlar.

### Bağımsız Değişkenler

`matris`

  Bir dizi olarak homojen koordinatlar matrisi (Affine matrix).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::affine() örneği

    <?php
    function affine($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeWidth(1);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);

        $PI = 3.141592653589794;
        $angle = 60 * $PI / 360;

        // Çizim koordinatlarını ölçekle.
        $affineScale = array("sx" => 1.75, "sy" => 1.75, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

        // Çizim koordinatlarını kırp
        $affineShear = array("sx" => 1, "sy" => 1, "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0);

        // Çizim koordinatlarını döndür. Kırpma koordinatları matrisi
        // yanlış ölçeklendirilmiş çizimler üretir.
        $affineRotate = array("sx" => cos($angle), "sy" => cos($angle), "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0,);

        // Çizimi dönüştür
        $affineTranslate = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 30, "ty" => 30);

        // Tanımlı homojen koordinatlar matrisi
        $affineIdentity = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

        $examples = [$affineScale, $affineShear, $affineRotate, $affineTranslate, $affineIdentity,];

        $count = 0;

        foreach ($examples as $example) {
            $draw->push();
            $draw->translate(($count % 2) * 250, intval($count / 2) * 250);
            $draw->translate(100, 100);
            $draw->affine($example);
            $draw->rectangle(-50, -50, 50, 50);
            $draw->pop();
            $count++;
        }

        // Çizim komutlarının işlenebileceği bir görüntü nesnesi oluştur
        $image = new \Imagick();
        $image->newImage(500, 750, $backgroundColor);
        $image->setImageFormat("png");

        // ImagickDraw nesnesindeki çizim komutlarını görüntüye işle
        $image->drawImage($draw);

        // Görüntüyü tarayıcıya gönder
        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::annotation

(PECL imagick 2, PECL imagick 3)

ImagickDraw::annotation — Görüntünün üzerine bir metin çizer

### Açıklama

public function ImagickDraw::annotation(float `$x`, float `$y`, string `$metin`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntünün üzerine bir metin çizer.

### Bağımsız Değişkenler

`x`

  Metnin çizileceği yerin X koordinatı.

`y`

  Metnin çizileceği yerin Y koordinatı.

`metin`

  Görüntünün üzerine çizilecek metin.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::arc

(PECL imagick 2, PECL imagick 3)

ImagickDraw::arc — Bir yay çizer

### Açıklama

public function ImagickDraw::arc(
float `$sx`,
float `$sy`,
float `$ex`,
float `$ey`,
float `$sd`,
float `$ed`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü üzerinde belirtilen çerçeveye başlangıç ve bitiş açıları verilen yayı çizer.

### Bağımsız Değişkenler

`sx`

  Çerçevenin sol üst köşesinin X konumu.

`sy`

  Çerçevenin sol üst köşesinin Y konumu.

`ex`

  Çerçevenin sağ alt köşesinin X konumu.

`ey`

  Çerçevenin sağ alt köşesinin Y konumu.

`sd`

  Yayın başlangıç açısı.

`ed`

  Yayın bitiş açısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::arc() örneği

    <?php
    function arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) {

        // İçine çizmek için bir ImagickDraw nesnesi oluştur
        $draw = new \ImagickDraw();
        $draw->setStrokeWidth(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);

        $draw->arc($startX, $startY, $endX, $endY, $startAngle, $endAngle);

        // Çizim komutlarının işlenebileceği bir görüntü nesnesi oluştur
        $image = new \Imagick();
        $image->newImage(IMAGE_WIDTH, IMAGE_HEIGHT, $backgroundColor);
        $image->setImageFormat("png");

        // ImagickDraw nesnesindeki çizim komutlarını görüntüye işle.
        $image->drawImage($draw);

        // Görüntüyü tarayıcıya gönder
        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::bezier

(PECL imagick 2, PECL imagick 3)

ImagickDraw::bezier — Bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::bezier(array `$noktalar`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntü üzerine noktaları verilen Bezier eğrisini çizer.

### Bağımsız Değişkenler

`noktalar`

  Çok boyutlu bir dizi; örnek: array( array( 'x' => 1, 'y' => 2 ), array( 'x' => 3, 'y' => 4 ) )

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::bezier() örneği

    <?php
    function bezier($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $strokeColor = new \ImagickPixel($strokeColor);
        $fillColor = new \ImagickPixel($fillColor);

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);

        $smoothPointsSet = [
            [
                ['x' => 10.0 * 5, 'y' => 10.0 * 5],
                ['x' => 30.0 * 5, 'y' => 90.0 * 5],
                ['x' => 25.0 * 5, 'y' => 10.0 * 5],
                ['x' => 50.0 * 5, 'y' => 50.0 * 5],
            ],
            [
                ['x' => 50.0 * 5, 'y' => 50.0 * 5],
                ['x' => 75.0 * 5, 'y' => 90.0 * 5],
                ['x' => 70.0 * 5, 'y' => 10.0 * 5],
                ['x' => 90.0 * 5, 'y' => 40.0 * 5],
            ],
        ];

        foreach ($smoothPointsSet as $points) {
            $draw->bezier($points);
        }

        $disjointPoints = [
            [
                ['x' => 10 * 5, 'y' => 10 * 5],
                ['x' => 30 * 5, 'y' => 90 * 5],
                ['x' => 25 * 5, 'y' => 10 * 5],
                ['x' => 50 * 5, 'y' => 50 * 5],
            ],
            [
                ['x' => 50 * 5, 'y' => 50 * 5],
                ['x' => 80 * 5, 'y' => 50 * 5],
                ['x' => 70 * 5, 'y' => 10 * 5],
                ['x' => 90 * 5, 'y' => 40 * 5],
             ]
        ];
        $draw->translate(0, 200);

        foreach ($disjointPoints as $points) {
            $draw->bezier($points);
        }

        // Çizim komutlarının işlenebileceği bir görüntü nesnesi oluştur
        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        // ImagickDraw nesnesindeki çizim komutlarını görüntüye işle
        $imagick->drawImage($draw);

        // Görüntüyü tarayıcıya gönder
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::circle

(PECL imagick 2, PECL imagick 3)

ImagickDraw::circle — Bir daire çizer

### Açıklama

public function ImagickDraw::circle(
float `$ox`,
float `$oy`,
float `$px`,
float `$py`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntünün üzerine bir daire çizer.

### Bağımsız Değişkenler

`ox`

  Merkezin X koordinatı.

`oy`

  Merkezin Y koordinatı.

`px`

  Çember X koordinatı

`py`

  Çember Y koordinatı

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::circle() örneği

    <?php
    function circle($strokeColor, $fillColor, $backgroundColor, $originX, $originY, $endX, $endY) {

        // İçine çizmek için bir ImagickDraw nesnesi oluştur
        $draw = new \ImagickDraw();

        $strokeColor = new \ImagickPixel($strokeColor);
        $fillColor = new \ImagickPixel($fillColor);

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->circle($originX, $originY, $endX, $endY);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::clear

(PECL imagick 2, PECL imagick 3)

ImagickDraw::clear — ImagickDraw nesnesini temizler

### Açıklama

public function ImagickDraw::clear(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickDraw nesnesini verilmiş komutlardan temizleyip ayarları öntanımlı değerlerle sıfırlar.

### Dönen Değerler

Temiz bir ImagickDraw nesnesi döner.

# ImagickDraw::clone

(PECL imagick 2, PECL imagick 3)

ImagickDraw::clone — Belirtilen ImagickDraw nesnesinin tam bir kopyasını yapar

### Açıklama

public function ImagickDraw::clone(): ImagickDraw
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen ImagickDraw nesnesinin tam bir kopyasını yapar.

### Dönen Değerler

Bir ImagickDraw nesnesi döner.

# ImagickDraw::color

(PECL imagick 2, PECL imagick 3)

ImagickDraw::color — Bir görüntüyü boyar

### Açıklama

public function ImagickDraw::color(float `$x`, float `$y`, int `$boyamaYöntemi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli dolgu rengini ve belirtilen boyama yöntemini kullanarak belirtilen konumdan başlayarak görüntüyü boyar.

### Bağımsız Değişkenler

`x`

  Boyamanın başlayacağı X konumu.

`y`

  Boyamanın başlayacağı Y konumu.

`boyamaYöntemi`

  PAINT sabitlerinden biri. (`imagick::PAINT_*`)

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::comment

(PECL imagick 2, PECL imagick 3)

ImagickDraw::comment — Bir yöney çıktı akımına bir açıklama ekler

### Açıklama

public function ImagickDraw::comment(string `$açıklama`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir yöney çıktı akımına belirtilen açıklamayı ekler.

### Bağımsız Değişkenler

`açıklama`

  Yöney çıktı akımına eklenecek açıklama dizgesi.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::composite

(PECL imagick 2, PECL imagick 3)

ImagickDraw::composite — Bir görüntüyü geçerli görüntüyle bileştirir

### Açıklama

public function ImagickDraw::composite(
int `$işleç`,
float `$x`,
float `$y`,
float `$genişlik`,
float `$yükseklik`,
Imagick `$görüntü`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen birleştirme işlecini kullanarak belirtilen noktaya belirtilen boyutta belirtilen görüntüyü geçerli görüntüyle birleştirir.

### Bağımsız Değişkenler

`işleç`

  Birleştirme işleci sabitlerinden biri (`imagick::COMPOSITE_*`).

`x`

  Sol üst köşenin yatay konumu.

`y`

  Sol üst köşenin düşey konumu.

`genişlik`

  Birleşik görüntünün genişliği,

`yükseklik`

  Birleşik görüntünün yüksekliği.

`görüntü`

  Birleştirilecek görüntünün alınacağı Imagick nesnesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 ImagickDraw::composite() örneği

    <?php
    function composite($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setFillOpacity(1);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeWidth(2);
        $draw->setFont("../fonts/CANDY.TTF");
        $draw->setFontSize(140);
        $draw->rectangle(0, 0, 1000, 300);
        $draw->setFillColor('white');
        $draw->setfillopacity(1);
        $draw->annotation(50, 180, "Lorem Ipsum!");
        // Çizim komutlarını uygulamak için bir görüntü nesnesi oluştur
        $imagick = new \Imagick();
        $imagick->newImage(1000, 302, $backgroundColor);
        $imagick->setImageFormat("png");
        // ImagickDraw nesnesindeki çizim komutlarını görüntüye uygula
        $imagick->drawImage($draw);
        // Görüntüyü tarayıcıya gönder
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }
    ?>

# ImagickDraw::__construct

(PECL imagick 2, PECL imagick 3)

ImagickDraw::__construct — ImagickDraw kurucusu

### Açıklama

public function ImagickDraw::__construct()
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickDraw kurucusu.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::destroy

(PECL imagick 2, PECL imagick 3)

ImagickDraw::destroy — ImagickDraw yıkıcısı

### Açıklama

public function ImagickDraw::destroy(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickDraw nesnesi ile ilişkili tüm özkaynakları serbest bırakır.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::ellipse

(PECL imagick 2, PECL imagick 3)

ImagickDraw::ellipse — Görüntünün üzerine bir elips çizer

### Açıklama

public function ImagickDraw::ellipse(
float `$ox`,
float `$oy`,
float `$rx`,
float `$ry`,
float `$başlangıç`,
float `$bitiş`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Görüntünün üzerine bir elips çizer.

### Bağımsız Değişkenler

`ox`

`oy`

`rx`

`ry`

`başlangıç`

`bitiş`

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::ellipse() örneği

    <?php
    function ellipse($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->ellipse(125, 70, 100, 50, 0, 360);
        $draw->ellipse(350, 70, 100, 50, 0, 315);

        $draw->push();
        $draw->translate(125, 250);
        $draw->rotate(30);
        $draw->ellipse(0, 0, 100, 50, 0, 360);
        $draw->pop();

        $draw->push();
        $draw->translate(350, 250);
        $draw->rotate(30);
        $draw->ellipse(0, 0, 100, 50, 0, 315);
        $draw->pop();

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::getClipPath

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getClipPath — Geçerli yalıtım maskesi kimliğini döndürür

### Açıklama

public function ImagickDraw::getClipPath(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli yalıtım maskesi kimliğini döndürür.

### Dönen Değerler

Bir yalıtım maskesi yoksa `false` aksi takdirde geçerli yalıtım maskesi kimliğini bir dizge olarak döndürür.

# ImagickDraw::getClipRule

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getClipRule — Yalıtım maskesi tarafından kullanılan çokgen dolgu kuralını döndürür

### Açıklama

public function ImagickDraw::getClipRule(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yalıtım maskesi tarafından kullanılan çokgen dolgu kuralını döndürür.

### Dönen Değerler

Dolgu kuralı sabitlerinden biri (`imagick::FILLRULE_*`).

# ImagickDraw::getClipUnits

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getClipUnits — Yalıtım maskesi birimlerinin yorumunu döndürür

### Açıklama

public function ImagickDraw::getClipUnits(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yalıtım maskesi birimlerinin yorumunu döndürür.

### Dönen Değerler

Başarı durumunda bir tamsayı döner.

# ImagickDraw::getFillColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFillColor — Dolgu rengini döndürür

### Açıklama

public function ImagickDraw::getFillColor(): ImagickPixel
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Dolgulu nesnelerin çiziminde kullanılan dolgu rengini döndürür.

### Dönen Değerler

Bir ImagickPixel nesnesi döner.

# ImagickDraw::getFillOpacity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFillOpacity — Çizimde kullanılan matlık değerini döndürür

### Açıklama

public function ImagickDraw::getFillOpacity(): float
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Dolgu dokusu veya dolgu rengi için kullanılan matlık değerini döndürür. Tam matlık değeri 1.0'dır.

### Dönen Değerler

Matlık değerini bir gerçek sayı olarak döndürür.

# ImagickDraw::getFillRule

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFillRule — Geçerli dolgu kuralını döndürür

### Açıklama

public function ImagickDraw::getFillRule(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Çokgen çizerken kullanılan dolgu kuralını döndürür.

### Dönen Değerler

Dolgu kuralı sabitlerinden biri (`imagick::FILLRULE_*`).

# ImagickDraw::getFont

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFont — Geçerli yazı tipini döndürür

### Açıklama

public function ImagickDraw::getFont(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizerken kullanılan yazı tipi adını bir dizge olarak döndürür.

### Dönen Değerler

Başarı durumanda bir dizge yoksa `false` döner.

# ImagickDraw::getFontFamily

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFontFamily — Yazı tipi ailesini döndürür

### Açıklama

public function ImagickDraw::getFontFamily(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizerken kullanılan yazı tipi ailesinin ismini döndürür.

### Dönen Değerler

Yazı tipi ailesi belirlenmemişse `false`, aksi takdirde yazı tipi ailesinin ismini içeren bir dizge döner.

# ImagickDraw::getFontSize

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFontSize — Yazı tipi yüksekliğini döndürür

### Açıklama

public function ImagickDraw::getFontSize(): float
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizmekte kullanılan yazı tipi yüksekliğini punto olarak döndürür.

### Dönen Değerler

ImagickDraw nesnesi ile ilişkilendirilmiş yazı tipinin yüksekliğini döndürür.

# ImagickDraw::getFontStretch

(PECL imagick 2 >=2.3.0, PECL imagick 3)

ImagickDraw::getFontStretch — Gets the font stretch to use when annotating with text

### Açıklama

public function ImagickDraw::getFontStretch(): int

Gets the font stretch to use when annotating with text. Returns a StretchType.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# ImagickDraw::getFontStyle

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFontStyle — Yazı tipi tarzını döndürür

### Açıklama

public function ImagickDraw::getFontStyle(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizerken kullanılan yazı tipi tarzını döndürür

### Dönen Değerler

Bir tarz belirlenmemişse 0, aksi takdirde ImagickDraw nesnesiyle ilişkilendirilen yazı tipi tarzı sabitlerinden biri (`imagick::STYLE_*`) döner.

# ImagickDraw::getFontWeight

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getFontWeight — Yazı tipi kalınlığını döndürür

### Açıklama

public function ImagickDraw::getFontWeight(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizerken kullanılan yazı tipi kalınlığını döndürür.

### Dönen Değerler

Kalınlık belirlenmemişse 0, aksi takdirde bir tamsayı döner.

# ImagickDraw::getGravity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getGravity — Metnin çekim yönünü döndürür

### Açıklama

public function ImagickDraw::getGravity(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin yerleştirilirken kullanılan çekim yönünü döndürür.

### Dönen Değerler

Çekim yönü belirlenmemişse 0, aksi takdirde çekim yönü sabitlerinden biri (`imagick::GRAVITY_*`) döner.

# ImagickDraw::getStrokeAntialias

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeAntialias — Nesne dış hatlarını çizmekte kullanılan vurgu yumuşatması ayarını döndürür

### Açıklama

public function ImagickDraw::getStrokeAntialias(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Vurgu kenar yumuşatması ayarını döndürür. Vurgulu dış hatlara öntanımlı olarak kenar yumuşatması uygulanır. Yumuşatma iptal edildiğinde vurgulu kenar piksellerinin rengi belirlenirken vurgu ve tuval rengi parlaklık bakımından karşılaştırılır (eşikleme).

### Dönen Değerler

Kenar yumuşatma etkinse `true` değilse `false` döner.

# ImagickDraw::getStrokeColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeColor — Nesne dış hatlarını çizmekte kullanılan vurgunun rengini döndürür

### Açıklama

public function ImagickDraw::getStrokeColor(): ImagickPixel
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarını çizmekte kullanılan vurgunun rengini döndürür.

### Dönen Değerler

Vurgunun rengini bir ImagickPixel nesnesi olarak döndürür.

# ImagickDraw::getStrokeDashArray

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeDashArray — Kesikli çizgi örüntüsünü oluşturmakta kullanılan tireleri ve boşlukları içeren bir dizi döndürür

### Açıklama

public function ImagickDraw::getStrokeDashArray(): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kesikli çizgi örüntüsünü oluşturmakta kullanılan tireleri ve boşlukları içeren bir dizi döndürür.

### Dönen Değerler

Dizi oluşturulmamışsa boş bir dizi, aksi takdirde tireleri ve boşlukları içeren bir dizi döndürür.

# ImagickDraw::getStrokeDashOffset

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını döndürür

### Açıklama

public function ImagickDraw::getStrokeDashOffset(): float
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kesikli çizgi örüntüsünde tire başlangıcını döndürür.

### Dönen Değerler

Tire başlangıcı belirlenmemişse 0, aksi takdirde başlangıcı belirten bir gerçek sayı döner.

# ImagickDraw::getStrokeLineCap

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeLineCap — Kalın çizgilerdeki çizgi uçlarının şeklini döndürür

### Açıklama

public function ImagickDraw::getStrokeLineCap(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kalın çizgilerdeki çizgi uçlarının şeklini döndürür.

### Dönen Değerler

Uç şekli belirlenmemişse 0, aksi takdirde çizgi ucu sabitlerinden biri (`imagick::LINECAP_*`) döner.

# ImagickDraw::getStrokeLineJoin

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeLineJoin — Kalın çizgi ekleminin şeklini döndürür

### Açıklama

public function ImagickDraw::getStrokeLineJoin(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kalın çizgi eklemlerinin şeklini döndürür.

### Dönen Değerler

Eklem şekli belirlenmemişse 0, aksi takdirde çizgi eklemi sabitlerinden biri (`imagick::LINEJOIN_*`) döner.

# ImagickDraw::getStrokeMiterLimit

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeMiterLimit — Gönyenin kesildiği sınırı döndürür

### Açıklama

public function ImagickDraw::getStrokeMiterLimit(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Gönyenin kesildiği sınırı döndürür. İki kalın çizgi keskin bir açı ile kesiştiğinde kesişim yeri gönye köşesi biçimini alacak şekilde çizgi fazlalıkları atılır. Bu gönye köşesini uzatmak mümkündür. Gönye sınırı ile gönye uzunluğunun çizgi genişliğine oranına bir sınırlama getirilir.

### Dönen Değerler

Gönye sınırı belirlenmemişse 0, aksi takdirde gönye sınırını belirten bir tamsayı döner.

# ImagickDraw::getStrokeOpacity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeOpacity — Nesne dış hatlarını çizmekte kullanılan vurgunun matlığını döndürür

### Açıklama

public function ImagickDraw::getStrokeOpacity(): float
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarını çizmekte kullanılan vurgunun matlığını döndürür.

### Dönen Değerler

Nesne dış hatlarını çizmekte kullanılan vurgunun matlığını float türünde gerçek sayı olarak döndürür.

# ImagickDraw::getStrokeWidth

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getStrokeWidth — Nesne dış hatlarını çizmekte kullanılan vurgu genişliğini döndürür

### Açıklama

public function ImagickDraw::getStrokeWidth(): float
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarını çizmekte kullanılan vurgu genişliğini float türünde döndürür.

### Dönen Değerler

Nesne dış hatlarını çizmekte kullanılan vurgu genişliğini bir gerçek sayı olarak döndürür.

# ImagickDraw::getTextAlignment

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getTextAlignment — Metin hizalamasını döndürür

### Açıklama

public function ImagickDraw::getTextAlignment(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metne uygulanan hizalama türünü döndürür.

### Dönen Değerler

Hiçbir hizalama yoksa 0, aksi takdirde hizalama sabitlerinden biri (`imagick::ALIGN_*`) döner.

# ImagickDraw::getTextAntialias

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getTextAntialias — Geçerli metin yumuşatma ayarını döndürür

### Açıklama

public function ImagickDraw::getTextAntialias(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metne yumuşatma uygulanıp uygulanmadığı bilgisi döner. Metinlere öntanımlı olarak yumuşatma uygulanır.

### Dönen Değerler

Metne yumuşatma uygulanıyorsa `true` yoksa `false` döner.

# ImagickDraw::getTextDecoration

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getTextDecoration — Metin süslemesi türünü döndürür

### Açıklama

public function ImagickDraw::getTextDecoration(): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metne uygulanan süslemenin türünü döndürür.

### Dönen Değerler

Bir süsleme yoksa 0, aksi takdirde süsleme türü sabitlerinden biri (`imagick::DECORATION_*`) döner.

# ImagickDraw::getTextEncoding

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getTextEncoding — Metin çizerken kullanılan karakter kümesi ismini döndürür

### Açıklama

public function ImagickDraw::getTextEncoding(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizerken kullanılan karakter kümesi ismini döndürür.

### Dönen Değerler

Karakter kodlaması tanımsızsa `false` aksi takdirde metin çizerken kullanılan karakter kümesi ismini bir dizge olarak döndürür.

# ImagickDraw::getTextInterlineSpacing

(PECL imagick 3 >= 3.1.0)

ImagickDraw::getTextInterlineSpacing — Gets the text interline spacing

### Açıklama

public function ImagickDraw::getTextInterlineSpacing(): float

Gets the text interline spacing.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# ImagickDraw::getTextInterwordSpacing

(PECL imagick 2 >= 2.3.0, PECL imagick 3 >= 3.1.0)

ImagickDraw::getTextInterwordSpacing — Gets the text interword spacing

### Açıklama

public function ImagickDraw::getTextInterwordSpacing(): float

Gets the text interword spacing.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# ImagickDraw::getTextKerning

(PECL imagick 2 >= 2.3.0, PECL imagick 3 >= 3.1.0)

ImagickDraw::getTextKerning — Gets the text kerning

### Açıklama

public function ImagickDraw::getTextKerning(): float

Gets the text kerning.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# ImagickDraw::getTextUnderColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getTextUnderColor — Metin artalanındaki rengi döndürür

### Açıklama

public function ImagickDraw::getTextUnderColor(): ImagickPixel
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çerçevesi artalanının rengini döndürür.

### Dönen Değerler

Rengi ifade eden bir ImagickPixel nesnesi döner.

# ImagickDraw::getVectorGraphics

(PECL imagick 2, PECL imagick 3)

ImagickDraw::getVectorGraphics — Yöney çizgesini içeren bir dizge döner

### Açıklama

public function ImagickDraw::getVectorGraphics(): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickDraw nesnesi örneklenene kadar yapılan çizge çağrıları ile üretilen yöney çizgesini içeren bir dizge döner.

### Dönen Değerler

Yöney çizgesini içeren bir dizge döner.

# ImagickDraw::line

(PECL imagick 2, PECL imagick 3)

ImagickDraw::line — Bir çizgi çizer

### Açıklama

publicfunction ImagickDraw::line(
float `$bx`,
float `$by`,
float `$sx`,
float `$sy`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli vurgu rengi, matlığı ve genişliğini kullanarak görüntüye bir çizgi çizer.

### Bağımsız Değişkenler

`bx`

  Başlangıç noktasının X koordinatı.

`by`

  Başlangıç noktasının Y koordinatı.

`sx`

  Bitiş noktasının X koordinatı.

`sy`

  Bitiş noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::line() örneği

    <?php
    function line($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->line(125, 70, 100, 50);
        $draw->line(350, 170, 100, 150);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::matte

(PECL imagick 2, PECL imagick 3)

ImagickDraw::matte — Görüntünün matlık kanalını boyar

### Açıklama

public function ImagickDraw::matte(float `$x`, float `$y`, int `$boyamaYöntemi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Pikselleri şeffaflaştırmak için görüntünün matlık kanalını boyar.

### Bağımsız Değişkenler

`x`

  Mat pikselin X koordinatı.

`y`

  Mat pikselin Y koordinatı.

`boyamaYöntemi`

  Boyama sabitlerinden biri (`imagick::PAINT_*`).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - ImagickDraw::matte() örneği

    <?php
    function matte($strokeColor, $fillColor, $backgroundColor, $paintType) {
        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->matte(120, 120, $paintType);
        $draw->rectangle(100, 100, 300, 200);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::pathClose

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathClose — Geçerli hatta son elemanı ekler

### Açıklama

public function ImagickDraw::pathClose(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli nokta ile son çizilen hat elemanının başlangıç noktası (genellikle son moveto noktasıdır) arasına bir hat elemanı ekleyerek hattı kapatır.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathCurveToAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToAbsolute(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak, eğrinin başlangıcındaki denetim noktası olarak (`x1`, `y1`), sonundaki denetim noktası olarak (`x2`, `y2`) kullanılarak geçerli noktadan belirtilen (`x`,`y`) noktasına üçüncü dereceden bir Bezier eğrisi çizer. Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x1`

  Başlangıçtaki denetim noktasının X koordinatı.

`y1`

  Başlangıçtaki denetim noktasının Y koordinatı.

`x2`

  Sondaki denetim noktasının X koordinatı.

`y2`

  Sondaki denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathCurveToQuadraticBezierAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToQuadraticBezierAbsolute — İkinci dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToQuadraticBezierAbsolute(
float `$x1`,
float `$y1`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak, denetim noktası (`x1`, `y1`) olmak üzere geçerli noktadan belirtilen (`x`,`y`) noktasına ikinci dereceden bir Bezier eğrisi çizer. Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x1`

  Denetim noktasının X koordinatı.

`y1`

  Denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::pathCurveToQuadraticBezierAbsolute() örneği

    <?php
    function pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->pathStart();
        $draw->pathMoveToAbsolute(50,250);

        // Bu, başlangıç noktası olarak geçerli konumu olan ikinci dereceden
        // bir bezier eğrisini belirtir, denetim noktası ilk iki bağımsız değişken
        // ve bitiş noktası son iki bağımsız değişkendir.
        $draw->pathCurveToQuadraticBezierAbsolute(
            150,50,
            250,250
        );

        // Bu, başlangıç noktası olarak geçerli konumla ikinci dereceden bir
        // bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
        // noktasından yansıtılır ve bitiş noktası x, y değerleri ile tanımlanır.
        $draw->pathCurveToQuadraticBezierSmoothAbsolute(
            450,250
        );

        // Bu, başlangıç noktası olarak geçerli konumun bulunduğu ikinci dereceden
        // bir bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
        // noktasından yansıtılır ve bitiş noktası, x, y değerleriyle geçerli
        // konumdan göreli olarak tanımlanır.
        $draw->pathCurveToQuadraticBezierSmoothRelative(
            200,-100
        );

        $draw->pathFinish();

        $imagick = new \Imagick();
        $imagick->newImage(700, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();

    }

    ?>

# ImagickDraw::pathCurveToQuadraticBezierRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToQuadraticBezierRelative — İkinci dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToQuadraticBezierRelative(
float `$x1`,
float `$y1`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak, denetim noktası (`x1`, `y1`) olmak üzere geçerli noktadan belirtilen (`x`,`y`) noktasına ikinci dereceden bir Bezier eğrisi çizer. Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x1`

  Denetim noktasının X koordinatı.

`y1`

  Denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — İkinci dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak, geçerli noktadan belirtilen (`x`,`y`) noktasına ikinci dereceden bir Bezier eğrisi çizer. Önceki komutun geçerli noktaya göre denetim noktasının yansıması denetim noktası olarak ele alınır. (Böyle bir komut yoksa veya önceki komut ImagickDraw::pathCurveToQuadraticBezierAbsolute(), ImagickDraw::pathCurveToQuadraticBezierRelative(), ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute() veya ImagickDraw::pathCurveToQuadraticBezierSmoothRelative() değilse ilk denetim noktası olarak geçerli nokta kullanılır.) İşlemin sonunda Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

Bu işlev, bir kübik Bezier eğrisini sorunsuz bir şekilde devam ettirmek için kullanılamaz. Yalnızca ikinci dereceden bir eğriden sorunsuz bir şekilde devam edebilir.

### Bağımsız Değişkenler

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute() örneği

    <?php
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor("black");
    $draw->setFillColor("blue");

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50,250);

    // Bu, başlangıç noktası olarak geçerli konumu olan ikinci dereceden
    // bir bezier eğrisini belirtir, denetim noktası ilk iki bağımsız değişken
    // ve bitiş noktası son iki bağımsız değişkendir.
    $draw->pathCurveToQuadraticBezierAbsolute(
        150,50,
        250,250
    );

    // Bu, başlangıç noktası olarak geçerli konumla ikinci dereceden bir
    // bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
    // noktasından yansıtılır ve bitiş noktası x, y değerleri ile tanımlanır.
    $draw->pathCurveToQuadraticBezierSmoothAbsolute(
        450,250
    );

    // Bu, başlangıç noktası olarak geçerli konumun bulunduğu ikinci dereceden
    // bir bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
    // noktasından yansıtılır ve bitiş noktası, x, y değerleriyle geçerli
    // konumdan göreli olarak tanımlanır.
    $draw->pathCurveToQuadraticBezierSmoothRelative(
        200,-100
    );

    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(700, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
    ?>

# ImagickDraw::pathCurveToQuadraticBezierSmoothRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — İkinci dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToQuadraticBezierSmoothRelative(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak, geçerli noktadan belirtilen (`x`,`y`) noktasına ikinci dereceden bir Bezier eğrisi çizer. Önceki komutun geçerli noktaya göre denetim noktasının yansıması denetim noktası olarak ele alınır. (Böyle bir komut yoksa veya önceki komut ImagickDraw::pathCurveToQuadraticBezierAbsolute(), ImagickDraw::pathCurveToQuadraticBezierRelative(), ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute() veya ImagickDraw::pathCurveToQuadraticBezierSmoothRelative() değilse ilk denetim noktası olarak geçerli nokta kullanılır.) İşlemin sonunda Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

Bu işlev, bir kübik Bezier eğrisini sorunsuz bir şekilde devam ettirmek için kullanılamaz. Yalnızca ikinci dereceden bir eğriden sorunsuz bir şekilde devam edilebilir.

### Bağımsız Değişkenler

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::pathCurveToQuadraticBezierSmoothRelative() örneği

    <?php
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor("black");
    $draw->setFillColor("blue");

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50,250);

    // Bu, başlangıç noktası olarak geçerli konumu olan ikinci dereceden
    // bir bezier eğrisini belirtir, denetim noktası ilk iki bağımsız değişken
    // ve bitiş noktası son iki bağımsız değişkendir.
    $draw->pathCurveToQuadraticBezierAbsolute(
        150,50,
        250,250
    );

    // Bu, başlangıç noktası olarak geçerli konumla ikinci dereceden bir
    // bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
    // noktasından yansıtılır ve bitiş noktası x, y değerleri ile tanımlanır.
    $draw->pathCurveToQuadraticBezierSmoothAbsolute(
        450,250
    );

    // Bu, başlangıç noktası olarak geçerli konumun bulunduğu ikinci dereceden
    // bir bezier eğrisini belirtir, denetim noktası önceki eğrilerin denetim
    // noktasından yansıtılır ve bitiş noktası, x, y değerleriyle geçerli
    // konumdan göreli olarak tanımlanır.
    $draw->pathCurveToQuadraticBezierSmoothRelative(
        200,-100
    );

    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(700, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
    ?>

# ImagickDraw::pathCurveToRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToRelative — Üçüncü dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToRelative(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak, eğrinin başlangıcındaki denetim noktası olarak (`x1`, `y1`), sonundaki denetim noktası olarak (`x2`, `y2`) kullanılarak geçerli noktadan belirtilen (`x`,`y`) noktasına üçüncü dereceden bir Bezier eğrisi çizer. Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x1`

  Başlangıçtaki denetim noktasının X koordinatı.

`y1`

  Başlangıçtaki denetim noktasının Y koordinatı.

`x2`

  Sondaki denetim noktasının X koordinatı.

`y2`

  Sondaki denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathCurveToSmoothAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToSmoothAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToSmoothAbsolute(
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak, geçerli noktadan belirtilen (`x`,`y`) noktasına üçüncü dereceden bir Bezier eğrisi çizer. Önceki komutun geçerli noktaya göre ikinci denetim noktasının yansıması ilk denetim noktası olarak ele alınır. (Böyle bir komut yoksa veya önceki komut ImagickDraw::pathCurveToAbsolute(), ImagickDraw::pathCurveToRelative(), ImagickDraw::pathCurveToSmoothAbsolute() veya ImagickDraw::pathCurveToSmoothRelative() değilse ilk denetim noktası olarak geçerli nokta kullanılır.) (`x2`, `y2`) ikinci (yani eğrinin sonundaki) denetim noktasıdır. İşlemin sonunda Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x2`

  Sondaki denetim noktasının X koordinatı.

`y2`

  Sondaki denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathCurveToSmoothRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathCurveToSmoothRelative — Üçüncü dereceden bir Bezier eğrisi çizer

### Açıklama

public function ImagickDraw::pathCurveToSmoothRelative(
float `$x2`,
float `$y2`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak, geçerli noktadan belirtilen (`x`,`y`) noktasına üçüncü dereceden bir Bezier eğrisi çizer. Önceki komutun geçerli noktaya göre ikinci denetim noktasının yansıması ilk denetim noktası olarak ele alınır. (Böyle bir komut yoksa veya önceki komut ImagickDraw::pathCurveToAbsolute(), ImagickDraw::pathCurveToRelative(), ImagickDraw::pathCurveToSmoothAbsolute() veya ImagickDraw::pathCurveToSmoothRelative() değilse ilk denetim noktası olarak geçerli nokta kullanılır.) (`x2`, `y2`) ikinci (yani eğrinin sonundaki) denetim noktasıdır. İşlemin sonunda Bezier eğrisinin son (x,y) noktası geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x2`

  Sondaki denetim noktasının X koordinatı.

`y2`

  Sondaki denetim noktasının Y koordinatı.

`x`

  Eğrinin son noktasının X koordinatı.

`y`

  Eğrinin son noktasının Y koordinatı

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathEllipticArcAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathEllipticArcAbsolute — Eliptik bir yay çizer

### Açıklama

public function ImagickDraw::pathEllipticArcAbsolute(
float `$rx`,
float `$ry`,
float `$x_ekseni_açısı`,
bool `$büyük_yay`,
bool `$saat_yönü`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak geçerli noktadan (`x`, `y`) koordinatlarına bir eliptik yay çizer. Elipsin büyüklüğü ve yönü (`rx`, `ry`) yarıçapları ve `x_ekseni_açısı` tarafından tanımlanır. `x_ekseni_açısı` elipsin geçerli koordinat sistemine göre ne kadar döndürüleceğini belirler. Elipsin merkezi diğer bağımsız değişkenlerden yararlanılarak otomatik olarak hesaplanır. Yayın nasıl çizileceği `büyük_yay` ve `saat_yönü` bağımsız değişkenlerine göre belirlenip buna göre hesaplanır. Eğer `büyük_yay` için `true` belirtilmişse kullanılabilecek en büyük yay çizilir. Eğer `saat_yönü` için `true` belirtilirse, yay, saat akrebi yönünde çizilir.

### Bağımsız Değişkenler

`rx`

  x yarıçapı.

`ry`

  y yarıçapı.

`x_ekseni_açısı`

  x ekseni dönüş açısı.

`büyük_yay`

  `true` belirtilmişse kullanılabilecek en büyük yay çizilir.

`saat_yönü`

  `true` belirtilirse yay saat akrebi yönünde çizilir.

`x`

  x koordinatı.

`y`

  y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathEllipticArcRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathEllipticArcRelative — Bir eliptik yay çizer

### Açıklama

public function ImagickDraw::pathEllipticArcRelative(
float `$rx`,
float `$ry`,
float `$x_ekseni_açısı`,
bool `$büyük_yay`,
bool `$saat_yönü`,
float `$x`,
float `$y`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak geçerli noktadan (`x`, `y`) koordinatlarına bir eliptik yay çizer. Elipsin büyüklüğü ve yönü (`rx`, `ry`) yarıçapları ve `x_ekseni_açısı` tarafından tanımlanır. `x_ekseni_açısı` elipsin geçerli koordinat sistemine göre ne kadar döndürüleceğini belirler. Elipsin merkezi diğer bağımsız değişkenlerden yararlanılarak otomatik olarak hesaplanır. Yayın nasıl çizileceği `büyük_yay` ve `saat_yönü` bağımsız değişkenlerine göre belirlenip buna göre hesaplanır. Eğer `büyük_yay` için `true` belirtilmişse kullanılabilecek en büyük yay çizilir. Eğer `saat_yönü` için `true` belirtilirse, yay, saat akrebi yönünde çizilir.

### Bağımsız Değişkenler

`rx`

  x yarıçapı.

`ry`

  y yarıçapı.

`x_ekseni_açısı`

  x ekseni dönüş açısı.

`büyük_yay`

  `true` belirtilmişse kullanılabilecek en büyük yay çizilir.

`saat_yönü`

  `true` belirtilirse yay saat akrebi yönünde çizilir.

`x`

  x koordinatı.

`y`

  y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathFinish

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathFinish — Geçerli hattı sonlandırır

### Açıklama

public function ImagickDraw::pathFinish(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli hattı sonlandırır.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToAbsolute

(PECL imagick 2)

ImagickDraw::pathLineToAbsolute — Bir hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToAbsolute(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak geçerli noktadan belirtilen noktaya bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x`

  Hedef noktanın X konumu.

`y`

  Hedef noktanın Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToHorizontalAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToHorizontalAbsolute — Yatay bir hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToHorizontalAbsolute(float `$x`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak geçerli noktadan belirtilen noktaya yatay bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x`

  Hedef noktanın X koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToHorizontalRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToHorizontalRelative — Yatay bir hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToHorizontalRelative(float `$x`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak geçerli noktadan belirtilen noktaya yatay bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x`

  Hedef noktanın X koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToRelative — Bir hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToRelative(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak geçerli noktadan belirtilen noktaya bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`x`

  Hedef noktanın X konumu.

`y`

  Hedef noktanın Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToVerticalAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToVerticalAbsolute — Düşey bir hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToVerticalAbsolute(float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Mutlak koordinatları kullanarak geçerli noktadan belirtilen noktaya düşey bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`y`

  Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathLineToVerticalRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathLineToVerticalRelative — Bir düşey hat elemanı çizer

### Açıklama

public function ImagickDraw::pathLineToVerticalRelative(float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Göreli koordinatları kullanarak geçerli noktadan belirtilen noktaya düşey bir hat elemanı çizer. Belirtilen nokta geçerli nokta haline gelir.

### Bağımsız Değişkenler

`y`

  Y koordinatı.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathMoveToAbsolute

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathMoveToAbsolute — Yeni bir hat elemanı başlatır

### Açıklama

public function ImagickDraw::pathMoveToAbsolute(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen koordinatları mutlak koordinatlar olarak kullanıp yeni bir hat elemanı başlatır. Belirtilen koordinat geçerli koordinat haline gelir.

### Bağımsız Değişkenler

`x`

  Başlangıç noktasının X konumu.

`y`

  Başlangıç noktasının Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathMoveToRelative

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathMoveToRelative — Yeni bir hat elemanı başlatır

### Açıklama

public function ImagickDraw::pathMoveToRelative(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen koordinatları göreli koordinatlar olarak kullanıp yeni bir hat elemanı başlatır. Belirtilen koordinat geçerli koordinat haline gelir.

### Bağımsız Değişkenler

`x`

  Hedef X konumu.

`y`

  Hedef Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pathStart

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pathStart — Bir hat çizim listesinin başlangıcını bildirir

### Açıklama

public function ImagickDraw::pathStart(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir ImagickDraw::pathFinish() yönergesi ile sonlandırılana kadar ImagickDraw::path yönergeleri ile çizilecek bir hattın başlangıcını bildirir. Çizim için kullanılan ImagickDraw::path yönergeleri tek başlarına işlevsel olmadıklarından daima ImagickDraw::pathStart() ile ImagickDraw::pathFinish() yönergeleri arasında kullanılmalıdırlar.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::pathStart() örneği

    <?php
    function pathStart($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        $draw->pathStart();
        $draw->pathMoveToAbsolute(50, 50);
        $draw->pathLineToAbsolute(100, 50);
        $draw->pathLineToRelative(0, 50);
        $draw->pathLineToHorizontalRelative(-50);
        $draw->pathFinish();

        $draw->pathStart();
        $draw->pathMoveToAbsolute(50, 50);
        $draw->pathMoveToRelative(300, 0);
        $draw->pathLineToRelative(50, 0);
        $draw->pathLineToVerticalRelative(50);
        $draw->pathLineToHorizontalAbsolute(350);
        $draw->pathclose();
        $draw->pathFinish();

        $draw->pathStart();
        $draw->pathMoveToAbsolute(50, 300);
        $draw->pathCurveToAbsolute(50, 300, 100, 200, 300, 300);
        $draw->pathLineToVerticalAbsolute(350);
        $draw->pathFinish();

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::point

(PECL imagick 2, PECL imagick 3)

ImagickDraw::point — Bir nokta çizer

### Açıklama

public function ImagickDraw::point(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli vurgu rengini ve vurgu kalınlığını kullanarak koordinatları belirtilen noktayı çizer.

### Bağımsız Değişkenler

`x`

  Noktanın X konumu.

`y`

  Noktanın Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::point() örneği

    <?php
    function point($fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setFillColor($fillColor);

        for ($x = 0; $x < 10000; $x++) {
            $draw->point(rand(0, 500), rand(0, 500));
        }

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::polygon

(PECL imagick 2, PECL imagick 3)

ImagickDraw::polygon — Bir çokgen çizer

### Açıklama

public function ImagickDraw::polygon(array `$koordinatlar`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen koordinat dizisini, geçerli vurgu rengini, vurgu genişliğini, dolgu rengini veya dokuyu kullanarak bir çokgen çizer.

### Bağımsız Değişkenler

`koordinatlar`

  X ve Y koordinatlarını içeren çok boyutlu dizi. Örnek: array( array( 'x' => 3, 'y' => 4 ), array( 'x' => 2, 'y' => 6 ) );

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickDraw::polygon() örneği

    <?php
    function polygon($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeWidth(4);

        $draw->setFillColor($fillColor);

        $points = [
            ['x' => 40 * 5, 'y' => 10 * 5],
            ['x' => 20 * 5, 'y' => 20 * 5],
            ['x' => 70 * 5, 'y' => 50 * 5],
            ['x' => 60 * 5, 'y' => 15 * 5],
        ];

        $draw->polygon($points);

        $image = new \Imagick();
        $image->newImage(500, 300, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::polyline

(PECL imagick 2, PECL imagick 3)

ImagickDraw::polyline — Bir çoklu çizgi çizer

### Açıklama

public function ImagickDraw::polyline(array `$koordinatlar`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen koordinat dizisini, geçerli vurgu rengini, vurgu genişliğini, dolgu rengini veya dokuyu kullanarak bir çoklu çizgi çizer.

### Bağımsız Değişkenler

`koordinatlar`

  X ve Y koordinatlarını içeren dizi. Örnek: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) )

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickDraw::polyline() örneği

    <?php
    function polyline($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(5);

        $points = [
            ['x' => 40 * 5, 'y' => 10 * 5],
            ['x' => 20 * 5, 'y' => 20 * 5],
            ['x' => 70 * 5, 'y' => 50 * 5],
            ['x' => 60 * 5, 'y' => 15 * 5]
        ];

        $draw->polyline($points);

        $image = new \Imagick();
        $image->newImage(500, 300, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::pop

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pop — Yığıttaki geçerli ImagickDraw nesnesini silip sonraki nesneyi döndürür

### Açıklama

public function ImagickDraw::pop(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickDraw yığıtından geçerli nesneyi siler ve yığıta ondan önce basılmış nesneyi döndürür. Yığıtta çok sayıda nesne bulunabilir. Yığıta basılandan daha fazla ImagickDraw nesnesini çekmeye çalışmak bir hata oluşmasına sebep olur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ImagickDraw::popClipPath

(PECL imagick 2, PECL imagick 3)

ImagickDraw::popClipPath — Bir yalıtım maskesi tanımını sonlandırır

### Açıklama

public function ImagickDraw::popClipPath(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir yalıtım maskesi tanımını sonlandırır.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::popDefs

(PECL imagick 2, PECL imagick 3)

ImagickDraw::popDefs — Bir tanım listesini sonlandırır

### Açıklama

public function ImagickDraw::popDefs(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir tanım listesini sonlandırır.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::popDefs() örneği

    <?php
    function popDefs($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setstrokeOpacity(1);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->pushDefs();
        $draw->setStrokeColor('white');
        $draw->rectangle(50, 50, 200, 200);
        $draw->popDefs();

        $draw->rectangle(300, 50, 450, 200);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::popPattern

(PECL imagick 2, PECL imagick 3)

ImagickDraw::popPattern — Bir örüntü tanımını sonlandırır

### Açıklama

public function ImagickDraw::popPattern(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir örüntü tanımını sonlandırır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ImagickDraw::push

(PECL imagick 2, PECL imagick 3)

ImagickDraw::push — Geçerli ImagickDraw nesnesini kopyalar ve yığıta basar

### Açıklama

public function ImagickDraw::push(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yeni bir ImagickDraw nesnesi oluşturmak için geçerli ImagickDraw nesnesinin bir kopyasını oluşturur ve ImagickDraw yığıtına yerleştirir. Özgün ImagickDraw nesnesi ImagickDraw::pop() ile yığıttan çekilebilir. Tüm ImagickDraw nesneleri bir ImagickDraw yığıtında saklanır. Her ImagickDraw::pop() çağrısına karşılık evvelce yapılmış bir ImagickDraw::push() çağrısı olmalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - ImagickDraw::push() örneği

    <?php
    function push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillModifiedColor);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->push();
        $draw->translate(50, 50);
        $draw->rectangle(200, 200, 300, 300);
        $draw->pop();
        $draw->setFillColor($fillColor);
        $draw->rectangle(200, 200, 300, 300);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::pushClipPath

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pushClipPath — Bir yalıtım maskesi tanımı başlatır

### Açıklama

public function ImagickDraw::pushClipPath(string `$yalıtım_maskesi_kimliği`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir ImagickDraw::popClipPath() çağrısı ile sonlandırılana kadar verilecek çizim komutları ile oluşturulacak bir yalıtım maskesi tanımını başlatır.

### Bağımsız Değişkenler

`yalıtım_maskesi_kimliği`

  Yalıtım maskesi (clip path) kimliği.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::pushDefs

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pushDefs — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popDefs() yöntemi çağrılıncaya kadar isimli elemanları tanımlayacağını belirtir

### Açıklama

public function ImagickDraw::pushDefs(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bundan sonra çağrılacak yöntemlerin ImagickDraw::popDefs() yöntemi çağrılıncaya kadar isimli elemanları (çizim parçaları, dokular gibi) tanımlayacağını belirtir. Bunlar kısa zamanda güvenle verimli olarak kullanılabilir.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::popDefs() örneği

    <?php
    function popDefs($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setstrokeOpacity(1);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->pushDefs();
        $draw->setStrokeColor('white');
        $draw->rectangle(50, 50, 200, 200);
        $draw->popDefs();

        $draw->rectangle(300, 50, 450, 200);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::pushPattern

(PECL imagick 2, PECL imagick 3)

ImagickDraw::pushPattern — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popPattern() yöntemi çağrılıncaya kadar bir isimli örüntüyü tanımlayacağını belirtir

### Açıklama

public function ImagickDraw::pushPattern(
string `$örüntü_kimliği`,
float `$x`,
float `$y`,
float `$genişlik`,
float `$yükseklik`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bundan sonra çağrılacak yöntemlerin ImagickDraw::popPattern() yöntemi çağrılıncaya kadar bir isimli örüntüyü tanımlayacağını belirtir. Örüntü uzayı, sol üst köşenin koordinatları, bir genişlik ve bir yükseklikle belirtilerek örüntünün kendi çizim uzayı haline gelir. Çizilebilen her şey örüntünün tanımında kullanılabilir. İsimli örüntüler çizgi ve fırça tanımları olarak kullanılabilir.

### Bağımsız Değişkenler

`örüntü_kimliği`

  Örüntü kimliği.

`x`

  Sol üst köşenin X konumu.

`y`

  Sol üst köşenin Y konumu.

`genişlik`

  Örüntünün genişliği.

`yükseklik`

  Örüntünün yüksekliği.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - ImagickDraw::pushPattern() örneği

    <?php
    function pushPattern($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(1);

        $draw->pushPattern("MyFirstPattern", 0, 0, 50, 50);
        for ($x = 0; $x < 50; $x += 10) {
            for ($y = 0; $y < 50; $y += 5) {
                $positionX = $x + (($y / 5) % 5);
                $draw->rectangle($positionX, $y, $positionX + 5, $y + 5);
            }
        }
        $draw->popPattern();

        $draw->setFillOpacity(0);
        $draw->rectangle(100, 100, 400, 400);
        $draw->setFillOpacity(1);

        $draw->setFillOpacity(1);

        $draw->push();
        $draw->setFillPatternURL('#MyFirstPattern');
        $draw->setFillColor('yellow');
        $draw->rectangle(100, 100, 400, 400);
        $draw->pop();

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::rectangle

(PECL imagick 2, PECL imagick 3)

ImagickDraw::rectangle — Bir dikdörtgen çizer

### Açıklama

public function ImagickDraw::rectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Köşegen koordinatları belirtilen dikdörtgeni çizer. Çizim için geçerli çizgi türü, çizgi kalınlığı ve dolgu ayarları kullanılır.

### Bağımsız Değişkenler

`x1`

  Sol üst köşenin X konumu.

`y1`

  Sol üst köşenin Y konumu.

`x2`

  Sağ alt köşenin X konumu.

`y2`

  Sağ alt köşenin Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::rectangle() örneği

    <?php
    function rectangle($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();
        $strokeColor = new \ImagickPixel($strokeColor);
        $fillColor = new \ImagickPixel($fillColor);

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);

        $draw->rectangle(200, 200, 300, 300);
        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::render

(PECL imagick 2, PECL imagick 3)

ImagickDraw::render — Evvelce verilmiş tüm çizim komutlarını resme uygular

### Açıklama

public function ImagickDraw::render(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Evvelce verilmiş tüm çizim komutlarını resme uygular.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ImagickDraw::resetVectorGraphics

(PECL imagick 2, PECL imagick 3)

ImagickDraw::resetVectorGraphics — Resets the vector graphics

### Açıklama

public function ImagickDraw::resetVectorGraphics(): bool

Resets the vector graphics.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::rotate

(PECL imagick 2, PECL imagick 3)

ImagickDraw::rotate — Geçerli koordinat sistemini belirtilen açıda döndürür

### Açıklama

public function ImagickDraw::rotate(float `$açı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli koordinat sistemini belirtilen açıda döndürür

### Bağımsız Değişkenler

`açı`

  Derece cinsinden döndürme açısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::rotate() örneği

    <?php
    function rotate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {
        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeOpacity(1);
        $draw->setFillColor($fillColor);
        $draw->rectangle(200, 200, 300, 300);
        $draw->setFillColor($fillModifiedColor);
        $draw->rotate(15);
        $draw->rectangle(200, 200, 300, 300);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::roundRectangle

(PECL imagick 2, PECL imagick 3)

ImagickDraw::roundRectangle — Köşeleri yuvarlatılmış bir dikdörtgen çizer

### Açıklama

public function ImagickDraw::roundRectangle(
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$rx`,
float `$ry`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Köşegen koordinatları belirtilen dikdörtgeni, köşelerini x ve y yarıçaplarına göre yuvarlatarak çizer. Çizim için geçerli çizgi türü, çizgi kalınlığı ve dolgu ayarları kullanılır.

### Bağımsız Değişkenler

`x1`

  Sol üst köşenin X konumu.

`y1`

  Sol üst köşenin Y konumu.

`x2`

  Sağ alt köşenin X konumu.

`y2`

  Sağ alt köşenin Y konumu.

`rx`

  x yarıçapı

`ry`

  y yarıçapı

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::roundRectangle() örneği

    <?php
    function roundRectangle($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $roundX, $roundY) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);

        $draw->roundRectangle($startX, $startY, $endX, $endY, $roundX, $roundY);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::scale

(PECL imagick 2, PECL imagick 3)

ImagickDraw::scale — Enboy oranını ayarlar

### Açıklama

public function ImagickDraw::scale(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli koordinat sisteminde yatay ve düşey yönlerde uygulanacak enboy oranını belirler.

### Bağımsız Değişkenler

`x`

  Yatay katsayı.

`y`

  Düşey katsayı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::scale() örneği

    <?php
    function scale($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeWidth(4);
        $draw->setFillColor($fillColor);
        $draw->rectangle(200, 200, 300, 300);
        $draw->setFillColor($fillModifiedColor);
        $draw->scale(1.4, 1.4);
        $draw->rectangle(200, 200, 300, 300);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setClipPath

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setClipPath — Bir isimli yalıtım maskesini resimle ilişkilendirir

### Açıklama

public function ImagickDraw::setClipPath(string `$yalıtım_maskesi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bir isimli yalıtım maskesini resimle ilişkilendirir. Yürürlükte kaldığı sürece, sadece yalıtım maskesiyle sınırlanan alanlar değiştirilir.

### Bağımsız Değişkenler

`yalıtım_maskesi`

  Resimle ilişkilendirilecek yalıtım maskesinin ismi.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setClipPath() örneği

    <?php
    function setClipPath($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);

        $clipPathName = 'testClipPath';

        $draw->pushClipPath($clipPathName);
        $draw->rectangle(0, 0, 250, 250);
        $draw->popClipPath();
        $draw->setClipPath($clipPathName);
        $draw->rectangle(100, 100, 400, 400);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setClipRule

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setClipRule — Yalıtım maskesi tarafından kullanılacak çokgen dolgu kuralını belirler

### Açıklama

public function ImagickDraw::setClipRule(int `$dolgu_kuralı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yalıtım maskesi tarafından kullanılacak çokgen dolgu kuralını belirler.

### Bağımsız Değişkenler

`dolgu_kuralı`

  Dolgu kuralı sabitlerinden biri (`imagick::FILLRULE_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setClipRule() örneği

    <?php
    function setClipRule($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);
        //\Imagick::FILLRULE_EVENODD
        //\Imagick::FILLRULE_NONZERO

        $clipPathName = 'testClipPath';
        $draw->pushClipPath($clipPathName);
        $draw->setClipRule(\Imagick::FILLRULE_EVENODD);
        $draw->rectangle(0, 0, 300, 500);
        $draw->rectangle(200, 0, 500, 500);
        $draw->popClipPath();
        $draw->setClipPath($clipPathName);
        $draw->rectangle(200, 200, 300, 300);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setClipUnits

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setClipUnits — Yalıtım maskesi birimlerinin yorumunu belirler

### Açıklama

public function ImagickDraw::setClipUnits(int `$yalıtım_birimleri`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yalıtım maskesi birimlerinin yorumunu belirler.

### Bağımsız Değişkenler

`yalıtım_birimleri`

  Yalıtım birimlerinin sayısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setClipUnits() örneği

    <?php
    function setClipUnits($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);
        $clipPathName = 'testClipPath';
        $draw->setClipUnits(\Imagick::RESOLUTION_PIXELSPERINCH);
        $draw->pushClipPath($clipPathName);
        $draw->rectangle(0, 0, 250, 250);
        $draw->popClipPath();
        $draw->setClipPath($clipPathName);

        //RESOLUTION_PIXELSPERINCH
        //RESOLUTION_PIXELSPERCENTIMETER

        $draw->rectangle(200, 200, 300, 300);
        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFillAlpha

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFillAlpha — Dolgu dokusu veya dolgu rengi için kullanılacak şeffaflığı belirler

### Açıklama

public function ImagickDraw::setFillAlpha(float `$şeffaflık`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Dolgu dokusu veya dolgu rengi için kullanılacak şeffaflığı belirler. Tam şeffaflık 1.0'dır.

### Bağımsız Değişkenler

`şeffaflık`

  Dolgunun ışık geçirgenliği.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFillAlpha() örneği

    <?php
    function setFillAlpha($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);
        $draw->rectangle(100, 200, 200, 300);
        @$draw->setFillAlpha(0.4);
        $draw->rectangle(300, 200, 400, 300);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFillColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFillColor — Dolgulu nesnelerin çiziminde kullanılacak dolgu rengini belirler

### Açıklama

public function ImagickDraw::setFillColor(ImagickPixel `$dolgu_rengi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Dolgulu nesnelerin çiziminde kullanılacak dolgu rengini belirler.

### Bağımsız Değişkenler

`dolgu_rengi`

  Renk olarak kullanılacak ImagickPixel nesnesi.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFillColor() örneği

    <?php
    function setFillColor($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(1.5);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->rectangle(50, 50, 150, 150);

        $draw->setFillColor("rgb(200, 32, 32)");
        $draw->rectangle(200, 50, 300, 150);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setFillOpacity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFillOpacity — Dolgu dokusu veya dolgu rengi için kullanılacak matlığı belirler

### Açıklama

public function ImagickDraw::setFillOpacity(float `$matlık`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Dolgu dokusu veya dolgu rengi için kullanılacak matlığı belirler. Tam matlık değeri 1.0'dır.

### Bağımsız Değişkenler

`matlık`

  Dolgunun ışık geçirmezliği.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFillOpacity() örneği

    <?php
    function setFillOpacity($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeOpacity(1);
        $draw->setStrokeWidth(2);

        $draw->rectangle(100, 200, 200, 300);

        $draw->setFillOpacity(0.4);
        $draw->rectangle(300, 200, 400, 300);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFillPatternURL

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFillPatternURL — Nesne dolgu örüntüsü için kullanılacak adresi belirler

### Açıklama

public function ImagickDraw::setFillPatternURL(string `$dolgu_adresi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dolgu örüntüsü için kullanılacak adresi belirler. Şimdilik sadece yerel betimleyiciler ("#betimleyici") desteklenmektedir. Bu yerel betimleyiciler genelde ImagickDraw::pushPattern() ve/veya ImagickDraw::popPattern() ile bir isimli örüntü tanımlamak suretiyle oluşturulurlar.

### Bağımsız Değişkenler

`dolgu_adresi`

  Dolgu örüntüsünün temin edileceği adres.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ImagickDraw::setFillRule

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFillRule — Çokgen çizerken kullanılacak dolgu kuralını belirler

### Açıklama

public function ImagickDraw::setFillRule(int `$dolgu_kuralı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Çokgen çizerken kullanılacak dolgu kuralını belirler.

### Bağımsız Değişkenler

`dolgu_kuralı`

  Dolgu kuralı sabitlerinden biri (`imagick::FILLRULE_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFillRule() örneği

    <?php
    function setFillRule($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeWidth(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $fillRules = [\Imagick::FILLRULE_NONZERO, \Imagick::FILLRULE_EVENODD];

        $points = 11;
        $size = 150;

        $draw->translate(175, 160);

        for ($x = 0; $x < 2; $x++) {
            $draw->setFillRule($fillRules[$x]);
            $draw->pathStart();
            for ($n = 0; $n < $points * 2; $n++) {

                if ($n >= $points) {
                    $angle = fmod($n * 360 * 4 / $points, 360) * pi() / 180;
                }
                else {
                    $angle = fmod($n * 360 * 3 / $points, 360) * pi() / 180;
                }

                $positionX = $size * sin($angle);
                $positionY = $size * cos($angle);

                if ($n == 0) {
                    $draw->pathMoveToAbsolute($positionX, $positionY);
                }
                else {
                    $draw->pathLineToAbsolute($positionX, $positionY);
                }
            }

            $draw->pathClose();
            $draw->pathFinish();

            $draw->translate(325, 0);
        }

        $image = new \Imagick();
        $image->newImage(700, 320, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setFont

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFont — Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler

### Açıklama

public function ImagickDraw::setFont(string `$yazıtipi_adı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler.

### Bağımsız Değişkenler

`yazıtipi_adı`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickDraw::setFont() örneği

    <?php
    function setFont($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);
        $draw->setFontSize(36);

        $draw->setFont("../fonts/Arial.ttf");
        $draw->annotation(50, 50, "Lorem Ipsum!");

        $draw->setFont("../fonts/Consolas.ttf");
        $draw->annotation(50, 100, "Lorem Ipsum!");

        $draw->setFont("../fonts/CANDY.TTF");
        $draw->annotation(50, 150, "Lorem Ipsum!");

        $draw->setFont("../fonts/Inconsolata-dz.otf");
        $draw->annotation(50, 200, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(500, 300, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFontFamily

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFontFamily — Yazı tipi ailesini belirler

### Açıklama

public function ImagickDraw::setFontFamily(string `$yazıtipi_ailesi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metni çizerken kullanılacak yazı tipi ailesini belirler.

### Bağımsız Değişkenler

`yazıtipi_ailesi`

  Yazı tipi ailesi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickDraw::setFontFamily() örneği

    <?php
    function setFontFamily($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $strokeColor = new \ImagickPixel($strokeColor);
        $fillColor = new \ImagickPixel($fillColor);

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(2);

        $draw->setFontSize(48);

        $draw->setFontFamily("Times");
        $draw->annotation(50, 50, "Lorem Ipsum!");

        $draw->setFontFamily("AvantGarde");
        $draw->annotation(50, 100, "Lorem Ipsum!");

        $draw->setFontFamily("NewCenturySchlbk");
        $draw->annotation(50, 150, "Lorem Ipsum!");

        $draw->setFontFamily("Palatino");
        $draw->annotation(50, 200, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(450, 250, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFontSize

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFontSize — Yazı tipi yüksekliğini belirler

### Açıklama

public function ImagickDraw::setFontSize(float `$punto`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yazı tipi yüksekliğini punto olarak belirler.

### Bağımsız Değişkenler

`punto`

  Punto olarak yazı tipi yüksekliği.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFontSize() örneği

    <?php
    function setFontSize($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeOpacity(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);
        $draw->setFont("../fonts/Arial.ttf");

        $sizes = [24, 36, 48, 60, 72];

        foreach ($sizes as $size) {
            $draw->setFontSize($size);
            $draw->annotation(50, ($size * $size / 16), "Lorem Ipsum!");
        }

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFontStretch

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFontStretch — Yazı tipinin karakter genişliğini belirler

### Açıklama

public function ImagickDraw::setFontStretch(int `$gerginlik`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metni çizerken kullanılacak yazı tipi karakter genişliğini belirler.

### Bağımsız Değişkenler

`gerginlik`

  Yazı tipi karakter genişliği sabitlerinden biri (`imagick::STRETCH_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFontStretch() örneği

    <?php
    function setFontStretch($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(36);

        $fontStretchTypes = [
            \Imagick::STRETCH_ULTRACONDENSED,
            \Imagick::STRETCH_CONDENSED,
            \Imagick::STRETCH_SEMICONDENSED,
            \Imagick::STRETCH_SEMIEXPANDED,
            \Imagick::STRETCH_EXPANDED,
            \Imagick::STRETCH_EXTRAEXPANDED,
            \Imagick::STRETCH_ULTRAEXPANDED,
            \Imagick::STRETCH_ANY
        ];

        $offset = 0;
        foreach ($fontStretchTypes as $fontStretch) {
            $draw->setFontStretch($fontStretch);
            $draw->annotation(50, 75 + $offset, "Lorem Ipsum!");
            $offset += 50;
        }

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFontStyle

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFontStyle — Yazı tipi tarzını belirler

### Açıklama

public function ImagickDraw::setFontStyle(int `$tarz`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metni çizerken kullanılacak yazı tipi tarzını belirler.

### Bağımsız Değişkenler

`style`

  Yazı tipi tarzı sabitlerinden biri (`imagick::STYLE_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setFontStyle() örneği

    <?php
    function setFontStyle($fillColor, $strokeColor, $backgroundColor) {
        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setFontSize(36);
        $draw->setFontStyle(\Imagick::STYLE_NORMAL);
        $draw->annotation(50, 50, "Lorem Ipsum!");

        $draw->setFontStyle(\Imagick::STYLE_ITALIC);
        $draw->annotation(50, 100, "Lorem Ipsum!");

        $draw->setFontStyle(\Imagick::STYLE_OBLIQUE);
        $draw->annotation(50, 150, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(350, 300, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setFontWeight

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setFontWeight — Yazı tipi kalınlığını belirler

### Açıklama

public function ImagickDraw::setFontWeight(int `$kalınlık`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metni çizerken kullanılacak yazı tipi kalınlığını belirler.

### Bağımsız Değişkenler

`yükseklik`

### Dönen Değerler

### Örnekler

Örnek 1 - ImagickDraw::setFontWeight() örneği

    <?php
    function setFontWeight($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(1);

        $draw->setFontSize(36);

        $draw->setFontWeight(100);
        $draw->annotation(50, 50, "Lorem Ipsum!");

        $draw->setFontWeight(200);
        $draw->annotation(50, 100, "Lorem Ipsum!");

        $draw->setFontWeight(400);
        $draw->annotation(50, 150, "Lorem Ipsum!");

        $draw->setFontWeight(800);
        $draw->annotation(50, 200, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setGravity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setGravity — Metnin çekim yönünü belirler

### Açıklama

public function ImagickDraw::setGravity(int `$çekimYönü`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin yerleştirilirken kullanılacak çekim yönünü belirler.

### Bağımsız Değişkenler

`çekimYönü`

  Çekim yönü sabitlerinden biri (`imagick::GRAVITY_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setGravity() örneği

    <?php
    function setGravity($fillColor, $strokeColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setFontSize(24);

        $gravitySettings = array(
            \Imagick::GRAVITY_NORTHWEST => 'NorthWest',
            \Imagick::GRAVITY_NORTH => 'North',
            \Imagick::GRAVITY_NORTHEAST => 'NorthEast',
            \Imagick::GRAVITY_WEST => 'West',
            \Imagick::GRAVITY_CENTER => 'Centre',
            \Imagick::GRAVITY_SOUTHWEST => 'SouthWest',
            \Imagick::GRAVITY_SOUTH => 'South',
            \Imagick::GRAVITY_SOUTHEAST => 'SouthEast',
            \Imagick::GRAVITY_EAST => 'East'
        );

        $draw->setFont("../fonts/Arial.ttf");

        foreach ($gravitySettings as $type => $description) {
            $draw->setGravity($type);
            $draw->annotation(50, 50, '"' . $description . '"');
        }

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setResolution

(PECL imagick 3 >= 3.1.0)

ImagickDraw::setResolution — Sets the resolution

### Açıklama

public function ImagickDraw::setResolution(float `$resolution_x`, float `$resolution_y`): bool

Sets the resolution.

### Bağımsız Değişkenler

`resolution_x`

`resolution_y`

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::setStrokeAlpha

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeAlpha — Vurgulu nesne dış hatlarının şeffaflığını tanımlar

### Açıklama

public function ImagickDraw::setStrokeAlpha(float `$şeffaflık`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Vurgulu nesne dış hatlarının ışık geçirgenliğini tanımlar.

### Bağımsız Değişkenler

`şeffaflık`

  Işık geçirgenliği.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeAlpha() örneği

    <?php
    function setStrokeAlpha($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(4);
        $draw->line(100, 100, 400, 145);
        $draw->rectangle(100, 200, 225, 350);
        $draw->setStrokeOpacity(0.1);
        $draw->line(100, 120, 400, 165);
        $draw->rectangle(275, 200, 400, 350);

        $image = new \Imagick();
        $image->newImage(500, 400, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeAntialias

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeAntialias — Vurgulu dış hatlara kenar yumuşatma uygulanıp uygulanmayacağını denetler

### Açıklama

public function ImagickDraw::setStrokeAntialias(bool `$vurguyu_yumuşat`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Vurgulu dış hatlara kenar yumuşatma uygulanıp uygulanmayacağını belirler. Vurgulu dış hatlara öntanımlı olarak yumuşatma uygulanır. Yumaşatma iptal edildiğinde vurgulu kenar piksellerinin rengi belirlenirken vurgu ve tuval rengi parlaklık bakımından karşılaştırılır (eşikleme).

### Bağımsız Değişkenler

`vurguyu_yumuşat`

  Vurgulu dış hatlara öntanımlı olarak yumuşatma uygulanır.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeAntialias() örneği

    <?php
    function setStrokeAntialias($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setStrokeAntialias(false);
        $draw->line(100, 100, 400, 105);

        $draw->line(100, 140, 400, 185);

        $draw->setStrokeAntialias(true);
        $draw->line(100, 110, 400, 115);
        $draw->line(100, 150, 400, 195);

        $image = new \Imagick();
        $image->newImage(500, 250, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeColor — Nesne dış hatlarını vurgulamakta kullanılacak rengi tanımlar

### Açıklama

public function ImagickDraw::setStrokeColor(ImagickPixel `$vurgu_rengi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarını vurgulamakta kullanılacak rengi tanımlar.

### Bağımsız Değişkenler

`vurgu_rengi`

  Nesne dış hatlarını vurgulamakta kullanılacak renk.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeColor() örneği

    <?php
    function setStrokeColor($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(5);

        $draw->line(100, 100, 400, 145);
        $draw->rectangle(100, 200, 225, 350);

        $draw->setStrokeOpacity(0.1);
        $draw->line(100, 120, 400, 165);
        $draw->rectangle(275, 200, 400, 350);

        $image = new \Imagick();
        $image->newImage(500, 400, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeDashArray

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeDashArray — Kesikli çizgi örüntüsünde tireleri ve boşlukları belirler

### Açıklama

public function ImagickDraw::setStrokeDashArray(array `$tireDizisi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kesikli çizgi örüntüsünü oluşturmakta kullanılacak tireleri ve boşlukları tanımlar. `tireDizisi`, kesikli çizgiyi oluşturan tire ve boşlukların kesikli çizgide yer alış sırasına göre dizildiği ve bunların uzunluklarının piksel sayısı cinsinden belirtildiği bir dizidir. Mevcut bir tire dizisini silmek için bağımsız değişkene sıfır elemanlı bir dizi aktarmak yeterlidir. Kullanışlı bir tire dizisi genellikle 5 3 2 üyelerinden oluşur.

### Bağımsız Değişkenler

`tireDizisi`

  Tire ve boşlukların uzunluklarını içeren dizi.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeDashArray() örneği

    <?php
    function setStrokeDashArray($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(4);

        $draw->setStrokeDashArray([10, 10]);
        $draw->rectangle(100, 50, 225, 175);

        $draw->setStrokeDashArray([20, 5, 20, 5, 5, 5,]);
        $draw->rectangle(275, 50, 400, 175);

        $draw->setStrokeDashArray([20, 5, 20, 5, 5]);
        $draw->rectangle(100, 200, 225, 350);

        $draw->setStrokeDashArray([1, 1, 1, 1, 2, 2, 3, 3, 5, 5, 8, 8, 13, 13, 21, 21, 34, 34, 55, 55, 89, 89, 144, 144, 233, 233, 377, 377, 610, 610, 987, 987, 1597, 1597, 2584, 2584, 4181, 4181,]);

        $draw->rectangle(275, 200, 400, 350);

        $image = new \Imagick();
        $image->newImage(500, 400, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeDashOffset

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını belirler

### Açıklama

public function ImagickDraw::setStrokeDashOffset(float `$tire_başlangıcı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kesikli çizgi örüntüsünde tire başlangıcını belirler.

### Bağımsız Değişkenler

`dash_offset`

  Tire başlangıcı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeDashOffset() örneği

    <?php
    function setStrokeDashOffset($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(4);
        $draw->setStrokeDashArray([20, 20]);
        $draw->setStrokeDashOffset(0);
        $draw->rectangle(100, 50, 225, 175);

        //Start the dash effect halfway through the solid portion
        $draw->setStrokeDashOffset(10);
        $draw->rectangle(275, 50, 400, 175);

        //Start the dash effect on the space portion
        $draw->setStrokeDashOffset(20);
        $draw->rectangle(100, 200, 225, 350);
        $draw->setStrokeDashOffset(5);
        $draw->rectangle(275, 200, 400, 350);

        $image = new \Imagick();
        $image->newImage(500, 400, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeLineCap

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeLineCap — Kalın çizgilerde çizgi uçlarının şeklini belirler

### Açıklama

public function ImagickDraw::setStrokeLineCap(int `$uçTürü`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kalın çizgilerde çizgi uçlarının şeklini belirler.

### Bağımsız Değişkenler

`linecap`

  Çizgi ucu sabitlerinden biri (`imagick::LINECAP_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeLineCap() örneği

    <?php
    function setStrokeLineCap($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(25);

        $lineTypes = [\Imagick::LINECAP_BUTT, \Imagick::LINECAP_ROUND, \Imagick::LINECAP_SQUARE,];

        $offset = 0;

        foreach ($lineTypes as $lineType) {
            $draw->setStrokeLineCap($lineType);
            $draw->line(50 + $offset, 50, 50 + $offset, 250);
            $offset += 50;
        }

        $imagick = new \Imagick();
        $imagick->newImage(300, 300, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeLineJoin

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeLineJoin — Kalın çizgi ekleminin şeklini belirler

### Açıklama

public function ImagickDraw::setStrokeLineJoin(int `$eklemTürü`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Kalın çizgi eklemlerinin şeklini (gönye, yuvarlak, eğimli) belirler.

### Bağımsız Değişkenler

`eklemTürü`

  Çizgi eklemi sabitlerinden biri (`imagick::LINEJOIN_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeLineJoin() örneği

    <?php
    function setStrokeLineJoin($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeWidth(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);

        $draw->setStrokeWidth(20);

        $offset = 220;

        $lineJoinStyle = [
            \Imagick::LINEJOIN_MITER,
            \Imagick::LINEJOIN_ROUND,
            \Imagick::LINEJOIN_BEVEL,
            ];

        for ($x = 0; $x < count($lineJoinStyle); $x++) {
            $draw->setStrokeLineJoin($lineJoinStyle[$x]);
            $points = [
                ['x' => 40 * 5, 'y' => 10 * 5 + $x * $offset],
                ['x' => 20 * 5, 'y' => 20 * 5 + $x * $offset],
                ['x' => 70 * 5, 'y' => 50 * 5 + $x * $offset],
                ['x' => 40 * 5, 'y' => 10 * 5 + $x * $offset],
            ];

            $draw->polyline($points);
        }

        $image = new \Imagick();
        $image->newImage(500, 700, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeMiterLimit

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeMiterLimit — Gönyenin kesildiği sınırı tanımlar

### Açıklama

public function ImagickDraw::setStrokeMiterLimit(int `$gönyeSınırı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Gönyenin kesildiği sınırı tanımlar. İki kalın çizgi keskin bir açı ile kesiştiğinde kesişim yeri gönye köşesi biçimini alacak şekilde çizgi fazlalıkları atılır. Bu gönye köşesini uzatmak mümkündür. `gönyeSınırı` gönye uzunluğunun çizgi genişliğine oranına bir sınırlama getirir.

### Bağımsız Değişkenler

`gönyeSınırı`

  Gönye uzatma sınırı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeMiterLimit() örneği

    <?php
    function setStrokeMiterLimit($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeOpacity(0.6);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(10);

        $yOffset = 100;

        $draw->setStrokeLineJoin(\Imagick::LINEJOIN_MITER);

        for ($y = 0; $y < 3; $y++) {

            $draw->setStrokeMiterLimit(40 * $y);

            $points = [
                ['x' => 22 * 3, 'y' => 15 * 4 + $y * $yOffset],
                ['x' => 20 * 3, 'y' => 20 * 4 + $y * $yOffset],
                ['x' => 70 * 5, 'y' => 45 * 4 + $y * $yOffset],
            ];

            $draw->polygon($points);
        }

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        $image->setImageType(\Imagick::IMGTYPE_PALETTE);
        $image->setImageCompressionQuality(100);
        $image->stripImage();

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokeOpacity

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeOpacity — Vurgulanmış nesne dış hatlarının matlığını tanımlar

### Açıklama

public function ImagickDraw::setStrokeOpacity(float `$vurgu_matlığı`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Vurgulanmış nesne dış hatlarının matlığını tanımlar.

### Bağımsız Değişkenler

`vurgu_matlığı`

  Tam matlık değeri 1.0'dır.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeOpacity() örneği

    <?php
    function setStrokeOpacity($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();

        $draw->setStrokeWidth(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(10);
        $draw->setStrokeOpacity(1);
        $draw->line(100, 80, 400, 125);
        $draw->rectangle(25, 200, 150, 350);
        $draw->setStrokeOpacity(0.5);
        $draw->line(100, 100, 400, 145);
        $draw->rectangle(200, 200, 325, 350);
        $draw->setStrokeOpacity(0.2);
        $draw->line(100, 120, 400, 165);
        $draw->rectangle(375, 200, 500, 350);

        $image = new \Imagick();
        $image->newImage(550, 400, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setStrokePatternURL

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokePatternURL — Nesne dış hatlarının çiziminde kullanılacak örüntüyü tanımlar

### Açıklama

public function ImagickDraw::setStrokePatternURL(string `$örüntü_adresi`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarının çiziminde kullanılacak örüntüyü tanımlar.

### Bağımsız Değişkenler

`örüntü_adresi`

  Dış hatların çiziminde kullanılacak örüntünün adresi.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::setStrokeWidth

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setStrokeWidth — Nesne dış hatlarının çiziminde kullanılacak çizgi genişliğini tanımlar

### Açıklama

public function ImagickDraw::setStrokeWidth(float `$vurgu_genişliği`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Nesne dış hatlarının çiziminde kullanılacak çizgi genişliğini tanımlar.

### Bağımsız Değişkenler

`vurgu_genişliği`

  Nesne dış hatları için çizgi genişliği.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setStrokeWidth() örneği

    <?php
    function setStrokeWidth($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeWidth(1);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->line(100, 100, 400, 145);
        $draw->rectangle(100, 200, 225, 350);
        $draw->setStrokeWidth(5);
        $draw->line(100, 120, 400, 165);
        $draw->rectangle(275, 200, 400, 350);

        $image = new \Imagick();
        $image->newImage(500, 400, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::setTextAlignment

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setTextAlignment — Metni hizalar

### Açıklama

public function ImagickDraw::setTextAlignment(int `$hizalama`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizilirken metne uygulanacak hizalama türünü tanımlar.

### Bağımsız Değişkenler

`hizalama`

  Hizalama sabitlerinden biri (`imagick::ALIGN_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setTextAlignment() örneği

    <?php
    function setTextAlignment($strokeColor, $fillColor, $backgroundColor) {
        $draw = new \ImagickDraw();
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setFontSize(36);

        $draw->setTextAlignment(\Imagick::ALIGN_LEFT);
        $draw->annotation(250, 75, "Lorem Ipsum!");
        $draw->setTextAlignment(\Imagick::ALIGN_CENTER);
        $draw->annotation(250, 150, "Lorem Ipsum!");
        $draw->setTextAlignment(\Imagick::ALIGN_RIGHT);
        $draw->annotation(250, 225, "Lorem Ipsum!");
        $draw->line(250, 0, 250, 500);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setTextAntialias

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setTextAntialias — Metne kenar yumuşatma uygulanıp uygulanmayacağını denetler

### Açıklama

public function ImagickDraw::setTextAntialias(bool `$yumuşat`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metne kenar yumuşatma uygulanıp uygulanmayacağını denetler. Öntanımlı olarak kenar yumuşatma uygulanır.

### Bağımsız Değişkenler

`yumuşat`

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setTextAntialias() örneği

    <?php
    function setTextAntialias($fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();
        $draw->setStrokeColor('none');
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(1);
        $draw->setFontSize(32);
        $draw->setTextAntialias(false);
        $draw->annotation(5, 30, "Lorem Ipsum!");
        $draw->setTextAntialias(true);
        $draw->annotation(5, 65, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(220, 80, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        //Scale the image so that people can see the aliasing.
        $imagick->scaleImage(220 * 6, 80 * 6);
        $imagick->cropImage(640, 480, 0, 0);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setTextDecoration

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setTextDecoration — Bir karakter süslemesi tanımlar

### Açıklama

public function ImagickDraw::setTextDecoration(int `$süs`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çizilirken uygulanacak süsleme belirtilir.

### Bağımsız Değişkenler

`süs`

  Süsleme türü sabitlerinden biri (`imagick::DECORATION_*`).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setTextDecoration() örneği

    <?php
    function setTextDecoration($strokeColor, $fillColor, $backgroundColor, $textDecoration) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->setTextDecoration($textDecoration);
        $draw->annotation(50, 75, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(500, 200, $backgroundColor);
        $imagick->setImageFormat("png");
        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setTextEncoding

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setTextEncoding — Metin karakter kümesini tanımlar

### Açıklama

public function ImagickDraw::setTextEncoding(string `$karküm`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metinleri çizerken kullanılacak karakter kümesini tanımlar. Şimdilik belirtilebilecek tek karakter kümesi, Evrenkod karakterlerini çok baytlı olarak ifade eden "UTF-8"'dir. `karküm` olarak boş bir dizge belirtirseniz sistem öntanımlısı kullanılır. Metinlerin başarıyla çizilebilmesi için Evrenkod destekli yazı tipleri kullanmalısınız.

### Bağımsız Değişkenler

`karküm`

  Karakter kümesi ismi.

### Dönen Değerler

Hiçbir değer dönmez.

# ImagickDraw::setTextInterlineSpacing

(PECL imagick 3 >= 3.1.0)

ImagickDraw::setTextInterlineSpacing — Sets the text interline spacing

### Açıklama

public function ImagickDraw::setTextInterlineSpacing(float `$spacing`): bool

Sets the text interline spacing.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`spacing`

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::setTextInterwordSpacing

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

ImagickDraw::setTextInterwordSpacing — Sets the text interword spacing

### Açıklama

public function ImagickDraw::setTextInterwordSpacing(float `$spacing`): bool

Sets the text interword spacing.

### Bağımsız Değişkenler

`spacing`

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::setTextKerning

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

ImagickDraw::setTextKerning — Sets the text kerning

### Açıklama

public function ImagickDraw::setTextKerning(float `$kerning`): bool

Sets the text kerning

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`kerning`

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickDraw::setTextUnderColor

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setTextUnderColor — Metin çerçevesinin artalan rengini tanımlar

### Açıklama

public function ImagickDraw::setTextUnderColor(ImagickPixel `$artalan`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Metin çerçevesinin artalan rengini tanımlar.

### Bağımsız Değişkenler

`artalan`

  Artalan rengi.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setTextUnderColor() örneği

    <?php
    function setTextUnderColor($strokeColor, $fillColor, $backgroundColor, $textUnderColor) {
        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);
        $draw->annotation(50, 75, "Lorem Ipsum!");
        $draw->setTextUnderColor($textUnderColor);
        $draw->annotation(50, 175, "Lorem Ipsum!");

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setVectorGraphics

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setVectorGraphics — Yöney çizgesini tanımlar

### Açıklama

public function ImagickDraw::setVectorGraphics(string `$xml`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen ImagickDraw nesnesi ile ilişkili yöney çizgesini tanımlar. Bu yöntemi, yöney çizgesinin durumununda ısrarcı olmak için bir yöntem olarak ImagickDraw::getVectorGraphics() ile birlikte kullanın.

### Bağımsız Değişkenler

`xml`

  Yöney çizgesini içeren XML.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - ImagickDraw::setVectorGraphics() örneği

    <?php
    function setVectorGraphics() {
        // Yeni bir çizim nesnesi oluşturup bir şeyler çiz
        $draw = new \ImagickDraw();
        $draw->setFillColor("red");
        $draw->circle(20, 20, 50, 50);
        $draw->setFillColor("blue");
        $draw->circle(50, 70, 50, 50);
        $draw->rectangle(50, 120, 80, 150);

        // Çizimi bir dizge olarak döndür
        $SVG = $draw->getVectorGraphics();

        //$svg bir dizgedir, bir dizgenin kaydedilebileceği her yere kaydedilebilir

        // Yeni bir çizim nesnesi üretmek için kayıtlı çizimi kullan
        $draw2 = new \ImagickDraw();
        // SVG metnini yerleştir
        $draw2->setVectorGraphics("<root>".$SVG."</root>");

        $imagick = new \Imagick();
        $imagick->newImage(200, 200, 'white');
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw2);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::setViewbox

(PECL imagick 2, PECL imagick 3)

ImagickDraw::setViewbox — Tuval boyutunu uçtan uca tanımlar

### Açıklama

public function ImagickDraw::setViewbox(
int `$x1`,
int `$y1`,
int `$x2`,
int `$y2`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Tuval boyutunun uçtan uca belirler. Normal olarak, tuval resmi ile aynı boyut kullanılarak belirtilir. Yöney verisi SVG veya MVG biçemleninde saklandığı takdirde, görüntüleyicinin üzerinde yöney verisini kullanacağı tuval boyunu belirtirken bu çerçeve kullanılır.

### Bağımsız Değişkenler

`x1`

  Sol üst X konumu.

`y1`

  Sol üst Y konumu.

`x2`

  Sağ alt X konumu.

`y2`

  Sağ alt Y konumu.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::setViewBox() örneği

    <?php
    function setViewBox($strokeColor, $fillColor, $backgroundColor) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->setStrokeWidth(2);
        $draw->setFontSize(72);

        /*

        Çizim vektör verileriyle kaydedilecek genel tuval boyutunu ayarlar.
        Genellikle bu, tuval görüntüsüyle aynı boyut kullanılarak belirtilir.
        Vektör verileri SVG veya MVG biçemlerinde kaydedildiğinde, görüntüleme
        kutusu, bir izleyicinin vektör verilerini üzerinde oluşturacağı tuval
        görüntüsünün boyutunu belirtmek için kullanılır.

         */

        $draw->circle(250, 250, 250, 0);
        $draw->setviewbox(0, 0, 200, 200);
        $draw->circle(125, 250, 250, 250);
        $draw->translate(250, 125);
        $draw->circle(0, 0, 125, 0);

        $imagick = new \Imagick();
        $imagick->newImage(500, 500, $backgroundColor);
        $imagick->setImageFormat("png");

        $imagick->drawImage($draw);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickDraw::skewX

(PECL imagick 2, PECL imagick 3)

ImagickDraw::skewX — Geçerli koordinat sistemini yatayda belirtilen açıda eğer

### Açıklama

public function ImagickDraw::skewX(float `$derece`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli koordinat sistemini yatayda belirtilen açıda eğer.

### Bağımsız Değişkenler

`derece`

  Eğim açısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::skewX() örneği

    <?php
    function skewX($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
                   $startX, $startY, $endX, $endY, $skew) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeWidth(2);
        $draw->setFillColor($fillColor);
        $draw->rectangle($startX, $startY, $endX, $endY);
        $draw->setFillColor($fillModifiedColor);
        $draw->skewX($skew);
        $draw->rectangle($startX, $startY, $endX, $endY);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::skewY

(PECL imagick 2, PECL imagick 3)

ImagickDraw::skewY — Geçerli koordinat sistemini düşeyde belirtilen açıda eğer

### Açıklama

public function ImagickDraw::skewY(float `$derece`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli koordinat sistemini düşey yönde belirtilen açıda eğer.

### Bağımsız Değişkenler

`derece`

  Eğim açısı.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::skewY() örneği

    <?php
    function skewY($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
                   $startX, $startY, $endX, $endY, $skew) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setStrokeWidth(2);
        $draw->setFillColor($fillColor);
        $draw->rectangle($startX, $startY, $endX, $endY);
        $draw->setFillColor($fillModifiedColor);
        $draw->skewY($skew);
        $draw->rectangle($startX, $startY, $endX, $endY);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");
        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickDraw::translate

(PECL imagick 2, PECL imagick 3)

ImagickDraw::translate — Geçerli koordinat sisteminin başnoktasını değiştirir

### Açıklama

public function ImagickDraw::translate(float `$x`, float `$y`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Geçerli koordinat sisteminin başnoktasını belirtilen koordinatlara taşımak suretiyle koordinat sistemine bir dönüşüm uygular.

### Bağımsız Değişkenler

`x`

  Yatay dönüşüm noktası.

`y`

  Düşey dönüşüm noktası.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 - ImagickDraw::translate() örneği

    <?php
    function translate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
                       $startX, $startY, $endX, $endY, $translateX, $translateY) {

        $draw = new \ImagickDraw();

        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->rectangle($startX, $startY, $endX, $endY);

        $draw->setFillColor($fillModifiedColor);
        $draw->translate($translateX, $translateY);
        $draw->rectangle($startX, $startY, $endX, $endY);

        $image = new \Imagick();
        $image->newImage(500, 500, $backgroundColor);
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

## İçindekiler

- ImagickDraw::affine — Geçerli homojen koordinatlar matrisini ayarlar
- ImagickDraw::annotation — Görüntünün üzerine bir metin çizer
- ImagickDraw::arc — Bir yay çizer
- ImagickDraw::bezier — Bir Bezier eğrisi çizer
- ImagickDraw::circle — Bir daire çizer
- ImagickDraw::clear — ImagickDraw nesnesini temizler
- ImagickDraw::clone — Belirtilen ImagickDraw nesnesinin tam bir kopyasını yapar
- ImagickDraw::color — Bir görüntüyü boyar
- ImagickDraw::comment — Bir yöney çıktı akımına bir açıklama ekler
- ImagickDraw::composite — Bir görüntüyü geçerli görüntüyle bileştirir
- ImagickDraw::__construct — ImagickDraw kurucusu
- ImagickDraw::destroy — ImagickDraw yıkıcısı
- ImagickDraw::ellipse — Görüntünün üzerine bir elips çizer
- ImagickDraw::getClipPath — Geçerli yalıtım maskesi kimliğini döndürür
- ImagickDraw::getClipRule — Yalıtım maskesi tarafından kullanılan çokgen dolgu kuralını döndürür
- ImagickDraw::getClipUnits — Yalıtım maskesi birimlerinin yorumunu döndürür
- ImagickDraw::getFillColor — Dolgu rengini döndürür
- ImagickDraw::getFillOpacity — Çizimde kullanılan matlık değerini döndürür
- ImagickDraw::getFillRule — Geçerli dolgu kuralını döndürür
- ImagickDraw::getFont — Geçerli yazı tipini döndürür
- ImagickDraw::getFontFamily — Yazı tipi ailesini döndürür
- ImagickDraw::getFontSize — Yazı tipi yüksekliğini döndürür
- ImagickDraw::getFontStretch — Gets the font stretch to use when annotating with text
- ImagickDraw::getFontStyle — Yazı tipi tarzını döndürür
- ImagickDraw::getFontWeight — Yazı tipi kalınlığını döndürür
- ImagickDraw::getGravity — Metnin çekim yönünü döndürür
- ImagickDraw::getStrokeAntialias — Nesne dış hatlarını çizmekte kullanılan vurgu yumuşatması ayarını döndürür
- ImagickDraw::getStrokeColor — Nesne dış hatlarını çizmekte kullanılan vurgunun rengini döndürür
- ImagickDraw::getStrokeDashArray — Kesikli çizgi örüntüsünü oluşturmakta kullanılan tireleri ve boşlukları içeren bir dizi döndürür
- ImagickDraw::getStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını döndürür
- ImagickDraw::getStrokeLineCap — Kalın çizgilerdeki çizgi uçlarının şeklini döndürür
- ImagickDraw::getStrokeLineJoin — Kalın çizgi ekleminin şeklini döndürür
- ImagickDraw::getStrokeMiterLimit — Gönyenin kesildiği sınırı döndürür
- ImagickDraw::getStrokeOpacity — Nesne dış hatlarını çizmekte kullanılan vurgunun matlığını döndürür
- ImagickDraw::getStrokeWidth — Nesne dış hatlarını çizmekte kullanılan vurgu genişliğini döndürür
- ImagickDraw::getTextAlignment — Metin hizalamasını döndürür
- ImagickDraw::getTextAntialias — Geçerli metin yumuşatma ayarını döndürür
- ImagickDraw::getTextDecoration — Metin süslemesi türünü döndürür
- ImagickDraw::getTextEncoding — Metin çizerken kullanılan karakter kümesi ismini döndürür
- ImagickDraw::getTextInterlineSpacing — Gets the text interline spacing
- ImagickDraw::getTextInterwordSpacing — Gets the text interword spacing
- ImagickDraw::getTextKerning — Gets the text kerning
- ImagickDraw::getTextUnderColor — Metin artalanındaki rengi döndürür
- ImagickDraw::getVectorGraphics — Yöney çizgesini içeren bir dizge döner
- ImagickDraw::line — Bir çizgi çizer
- ImagickDraw::matte — Görüntünün matlık kanalını boyar
- ImagickDraw::pathClose — Geçerli hatta son elemanı ekler
- ImagickDraw::pathCurveToAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToQuadraticBezierAbsolute — İkinci dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToQuadraticBezierRelative — İkinci dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — İkinci dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — İkinci dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToRelative — Üçüncü dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToSmoothAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathCurveToSmoothRelative — Üçüncü dereceden bir Bezier eğrisi çizer
- ImagickDraw::pathEllipticArcAbsolute — Eliptik bir yay çizer
- ImagickDraw::pathEllipticArcRelative — Bir eliptik yay çizer
- ImagickDraw::pathFinish — Geçerli hattı sonlandırır
- ImagickDraw::pathLineToAbsolute — Bir hat elemanı çizer
- ImagickDraw::pathLineToHorizontalAbsolute — Yatay bir hat elemanı çizer
- ImagickDraw::pathLineToHorizontalRelative — Yatay bir hat elemanı çizer
- ImagickDraw::pathLineToRelative — Bir hat elemanı çizer
- ImagickDraw::pathLineToVerticalAbsolute — Düşey bir hat elemanı çizer
- ImagickDraw::pathLineToVerticalRelative — Bir düşey hat elemanı çizer
- ImagickDraw::pathMoveToAbsolute — Yeni bir hat elemanı başlatır
- ImagickDraw::pathMoveToRelative — Yeni bir hat elemanı başlatır
- ImagickDraw::pathStart — Bir hat çizim listesinin başlangıcını bildirir
- ImagickDraw::point — Bir nokta çizer
- ImagickDraw::polygon — Bir çokgen çizer
- ImagickDraw::polyline — Bir çoklu çizgi çizer
- ImagickDraw::pop — Yığıttaki geçerli ImagickDraw nesnesini silip sonraki nesneyi döndürür
- ImagickDraw::popClipPath — Bir yalıtım maskesi tanımını sonlandırır
- ImagickDraw::popDefs — Bir tanım listesini sonlandırır
- ImagickDraw::popPattern — Bir örüntü tanımını sonlandırır
- ImagickDraw::push — Geçerli ImagickDraw nesnesini kopyalar ve yığıta basar
- ImagickDraw::pushClipPath — Bir yalıtım maskesi tanımı başlatır
- ImagickDraw::pushDefs — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popDefs yöntemi çağrılıncaya kadar isimli elemanları tanımlayacağını belirtir
- ImagickDraw::pushPattern — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popPattern yöntemi çağrılıncaya kadar bir isimli örüntüyü tanımlayacağını belirtir
- ImagickDraw::rectangle — Bir dikdörtgen çizer
- ImagickDraw::render — Evvelce verilmiş tüm çizim komutlarını resme uygular
- ImagickDraw::resetVectorGraphics — Resets the vector graphics
- ImagickDraw::rotate — Geçerli koordinat sistemini belirtilen açıda döndürür
- ImagickDraw::roundRectangle — Köşeleri yuvarlatılmış bir dikdörtgen çizer
- ImagickDraw::scale — Enboy oranını ayarlar
- ImagickDraw::setClipPath — Bir isimli yalıtım maskesini resimle ilişkilendirir
- ImagickDraw::setClipRule — Yalıtım maskesi tarafından kullanılacak çokgen dolgu kuralını belirler
- ImagickDraw::setClipUnits — Yalıtım maskesi birimlerinin yorumunu belirler
- ImagickDraw::setFillAlpha — Dolgu dokusu veya dolgu rengi için kullanılacak şeffaflığı belirler
- ImagickDraw::setFillColor — Dolgulu nesnelerin çiziminde kullanılacak dolgu rengini belirler
- ImagickDraw::setFillOpacity — Dolgu dokusu veya dolgu rengi için kullanılacak matlığı belirler
- ImagickDraw::setFillPatternURL — Nesne dolgu örüntüsü için kullanılacak adresi belirler
- ImagickDraw::setFillRule — Çokgen çizerken kullanılacak dolgu kuralını belirler
- ImagickDraw::setFont — Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler
- ImagickDraw::setFontFamily — Yazı tipi ailesini belirler
- ImagickDraw::setFontSize — Yazı tipi yüksekliğini belirler
- ImagickDraw::setFontStretch — Yazı tipinin karakter genişliğini belirler
- ImagickDraw::setFontStyle — Yazı tipi tarzını belirler
- ImagickDraw::setFontWeight — Yazı tipi kalınlığını belirler
- ImagickDraw::setGravity — Metnin çekim yönünü belirler
- ImagickDraw::setResolution — Sets the resolution
- ImagickDraw::setStrokeAlpha — Vurgulu nesne dış hatlarının şeffaflığını tanımlar
- ImagickDraw::setStrokeAntialias — Vurgulu dış hatlara kenar yumuşatma uygulanıp uygulanmayacağını denetler
- ImagickDraw::setStrokeColor — Nesne dış hatlarını vurgulamakta kullanılacak rengi tanımlar
- ImagickDraw::setStrokeDashArray — Kesikli çizgi örüntüsünde tireleri ve boşlukları belirler
- ImagickDraw::setStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını belirler
- ImagickDraw::setStrokeLineCap — Kalın çizgilerde çizgi uçlarının şeklini belirler
- ImagickDraw::setStrokeLineJoin — Kalın çizgi ekleminin şeklini belirler
- ImagickDraw::setStrokeMiterLimit — Gönyenin kesildiği sınırı tanımlar
- ImagickDraw::setStrokeOpacity — Vurgulanmış nesne dış hatlarının matlığını tanımlar
- ImagickDraw::setStrokePatternURL — Nesne dış hatlarının çiziminde kullanılacak örüntüyü tanımlar
- ImagickDraw::setStrokeWidth — Nesne dış hatlarının çiziminde kullanılacak çizgi genişliğini tanımlar
- ImagickDraw::setTextAlignment — Metni hizalar
- ImagickDraw::setTextAntialias — Metne kenar yumuşatma uygulanıp uygulanmayacağını denetler
- ImagickDraw::setTextDecoration — Bir karakter süslemesi tanımlar
- ImagickDraw::setTextEncoding — Metin karakter kümesini tanımlar
- ImagickDraw::setTextInterlineSpacing — Sets the text interline spacing
- ImagickDraw::setTextInterwordSpacing — Sets the text interword spacing
- ImagickDraw::setTextKerning — Sets the text kerning
- ImagickDraw::setTextUnderColor — Metin çerçevesinin artalan rengini tanımlar
- ImagickDraw::setVectorGraphics — Yöney çizgesini tanımlar
- ImagickDraw::setViewbox — Tuval boyutunu uçtan uca tanımlar
- ImagickDraw::skewX — Geçerli koordinat sistemini yatayda belirtilen açıda eğer
- ImagickDraw::skewY — Geçerli koordinat sistemini düşeyde belirtilen açıda eğer
- ImagickDraw::translate — Geçerli koordinat sisteminin başnoktasını değiştirir

# The ImagickDrawException class

(PECL imagick 3)

## Giriş

## Sınıf Sözdizimi

class ImagickDrawException extends Exception implements Throwable {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
/* Miras alınan yöntemler */
}

# The ImagickException class

(PECL imagick 3)

## Giriş

## Sınıf Sözdizimi

class ImagickException extends Exception implements Throwable {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
/* Miras alınan yöntemler */
}

# ImagickKernel sınıfı

(PECL imagick >= 3.3.0)

## Giriş

## Sınıf Sözdizimi

class ImagickKernel {
/* Yöntemler */
public function addKernel(ImagickKernel `$ImagickKernel`): void
public function addUnityKernel(float `$scale`): void
public static function fromBuiltin(int `$kernelType`, string `$kernelString`): ImagickKernel
public static function fromMatrix(array `$matrix`, array `$origin` = ?): ImagickKernel
public function getMatrix(): array
public function scale(float `$scale`, int `$normalizeFlag` = ?): void
public function separate(): array
}

# ImagickKernel::addKernel

(PECL imagick >= 3.3.0)

ImagickKernel::addKernel — Attach another kernel to a kernel list

### Açıklama

public function ImagickKernel::addKernel(ImagickKernel `$ImagickKernel`): void

Attach another kernel to this kernel to allow them to both be applied in a single morphology or filter function. Returns the new combined kernel.

### Bağımsız Değişkenler

`ImagickKernel`

### Dönen Değerler

### Örnekler

Örnek 1 ImagickKernel::addKernel()

    <?php
    function addKernel($imagePath) {
        $matrix1 = [
            [-1, -1, -1],
            [ 0,  0,  0],
            [ 1,  1,  1],
        ];

        $matrix2 = [
            [-1,  0,  1],
            [-1,  0,  1],
            [-1,  0,  1],
        ];

        $kernel1 = ImagickKernel::fromMatrix($matrix1);
        $kernel2 = ImagickKernel::fromMatrix($matrix2);
        $kernel1->addKernel($kernel2);

        $imagick = new \Imagick(realpath($imagePath));
        $imagick->filter($kernel1);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();

    }

    ?>

# ImagickKernel::addUnityKernel

(PECL imagick >= 3.3.0)

ImagickKernel::addUnityKernel — Adds a Unity Kernel to the kernel list

### Açıklama

public function ImagickKernel::addUnityKernel(float `$scale`): void

Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel. This in effect adds that amount of the original image into the resulting convolution kernel. The resulting effect is to convert the defined kernels into blended soft-blurs, unsharp kernels or into sharpening kernels.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 ImagickKernel::addUnityKernel()

    <?php

        function renderKernelTable($matrix) {
            $output = "<table class='infoTable'>";

            foreach ($matrix as $row) {
                $output .= "<tr>";
                foreach ($row as $cell) {
                    $output .= "<td style='text-align:left'>";
                    if ($cell === false) {
                        $output .= "false";
                    }
                    else {
                        $output .= round($cell, 3);
                    }
                    $output .= "</td>";
                }
                $output .= "</tr>";
            }

            $output .= "</table>";

            return $output;
        }

        $matrix = [
            [-1, 0, -1],
            [ 0, 4,  0],
            [-1, 0, -1],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix);
        $kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE);
        $output = "Before adding unity kernel: <br/>";
        $output .= renderKernelTable($kernel->getMatrix());
        $kernel->addUnityKernel(0.5);
        $output .= "After adding unity kernel: <br/>";
        $output .= renderKernelTable($kernel->getMatrix());

        $kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE);
        $output .= "After renormalizing kernel: <br/>";
        $output .= renderKernelTable($kernel->getMatrix());

        echo $output;

    ?>

Örnek 2 ImagickKernel::addUnityKernel()

    <?php
    function addUnityKernel($imagePath) {

        $matrix = [
            [-1, 0, -1],
            [ 0, 4,  0],
            [-1, 0, -1],
        ];

        $kernel = ImagickKernel::fromMatrix($matrix);

        $kernel->scale(4, \Imagick::NORMALIZE_KERNEL_VALUE);
        $kernel->addUnityKernel(0.5);

        $imagick = new \Imagick(realpath($imagePath));
        $imagick->filter($kernel);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();

    }

    ?>

# ImagickKernel::fromBuiltIn

(PECL imagick >= 3.3.0)

ImagickKernel::fromBuiltIn — Create a kernel from a builtin in kernel

### Açıklama

public static function ImagickKernel::fromBuiltin(int `$kernelType`, string `$kernelString`): ImagickKernel

Create a kernel from a builtin in kernel. See http://www.imagemagick.org/Usage/morphology/#kernel for examples. Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");

### Bağımsız Değişkenler

`kerneltype`

  The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND

`kernelString`

  A string that describes the parameters e.g. "4,2.5"

### Dönen Değerler

### Örnekler

Örnek 1 ImagickKernel::fromBuiltin()

    <?php

    function renderKernel(ImagickKernel $imagickKernel) {
        $matrix = $imagickKernel->getMatrix();

        $imageMargin = 20;

        $tileSize = 20;
        $tileSpace = 4;
        $shadowSigma = 4;
        $shadowDropX = 20;
        $shadowDropY = 0;

        $radius = ($tileSize / 2) * 0.9;

        $rows = count($matrix);
        $columns = count($matrix[0]);

        $imagickDraw = new \ImagickDraw();

        $imagickDraw->setFillColor('#afafaf');
        $imagickDraw->setStrokeColor('none');

        $imagickDraw->translate($imageMargin, $imageMargin);
        $imagickDraw->push();

        ksort($matrix);

        foreach ($matrix as $row) {
            ksort($row);
            $imagickDraw->push();
            foreach ($row as $cell) {
                if ($cell !== false) {
                    $color = intval(255 * $cell);
                    $colorString = sprintf("rgb(%f, %f, %f)", $color, $color, $color);
                    $imagickDraw->setFillColor($colorString);
                    $imagickDraw->rectangle(0, 0, $tileSize, $tileSize);
                }
                $imagickDraw->translate(($tileSize + $tileSpace), 0);
            }
            $imagickDraw->pop();
            $imagickDraw->translate(0, ($tileSize + $tileSpace));
        }

        $imagickDraw->pop();

        $width = ($columns * $tileSize) + (($columns - 1) * $tileSpace);
        $height = ($rows * $tileSize) + (($rows - 1) * $tileSpace);

        $imagickDraw->push();
        $imagickDraw->translate($width/2 , $height/2);
        $imagickDraw->setFillColor('rgba(0, 0, 0, 0)');
        $imagickDraw->setStrokeColor('white');
        $imagickDraw->circle(0, 0, $radius - 1, 0);
        $imagickDraw->setStrokeColor('black');
        $imagickDraw->circle(0, 0, $radius, 0);
        $imagickDraw->pop();

        $canvasWidth = $width + (2 * $imageMargin);
        $canvasHeight = $height + (2 * $imageMargin);

        $kernel = new \Imagick();
        $kernel->newPseudoImage(
            $canvasWidth,
            $canvasHeight,
            'canvas:none'
        );

        $kernel->setImageFormat('png');
        $kernel->drawImage($imagickDraw);

        /* create drop shadow on it's own layer */
        $canvas = $kernel->clone();
        $canvas->setImageBackgroundColor(new \ImagickPixel('rgb(0, 0, 0)'));
        $canvas->shadowImage(100, $shadowSigma, $shadowDropX, $shadowDropY);

        $canvas->setImagePage($canvasWidth, $canvasHeight, -5, -5);
        $canvas->cropImage($canvasWidth, $canvasHeight, 0, 0);

        /* composite original text_layer onto shadow_layer */
        $canvas->compositeImage($kernel, \Imagick::COMPOSITE_OVER, 0, 0);
        $canvas->setImageFormat('png');

        return $canvas;
    }

    function createFromBuiltin($kernelType, $kernelFirstTerm, $kernelSecondTerm, $kernelThirdTerm) {
        $string = '';

        if ($kernelFirstTerm != false && strlen(trim($kernelFirstTerm)) != 0) {
            $string .= $kernelFirstTerm;

            if ($kernelSecondTerm != false && strlen(trim($kernelSecondTerm)) != 0) {
                $string .= ','.$kernelSecondTerm;
                if ($kernelThirdTerm != false && strlen(trim($kernelThirdTerm)) != 0) {
                    $string .= ','.$kernelThirdTerm;
                }
            }
        }

        $kernel = ImagickKernel::fromBuiltIn(
            $kernelType,
            $string
        );

        return $kernel;
    }

    function fromBuiltin($kernelType, $kernelFirstTerm, $kernelSecondTerm, $kernelThirdTerm) {
        $diamondKernel = createFromBuiltin($kernelType, $kernelFirstTerm, $kernelSecondTerm, $kernelThirdTerm);
        $imagick = renderKernel($diamondKernel);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    fromBuiltin(\Imagick::KERNEL_DIAMOND, 2, false, false);

    ?>

# ImagickKernel::fromMatrix

(PECL imagick >= 3.3.0)

ImagickKernel::fromMatrix — Create a kernel from a 2d matrix of values

### Açıklama

public static function ImagickKernel::fromMatrix(array `$matrix`, array `$origin` = ?): ImagickKernel

Create a kernel from an 2d matrix of values. Each value should either be a float (if the element should be used) or 'false' if the element should be skipped. For matrices that are odd sizes in both dimensions the origin pixel will default to the centre of the kernel. For all other kernel sizes the origin pixel must be specified.

### Bağımsız Değişkenler

`array`

  A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel.

`array`

  Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as [2, 2] would specify that the bottom right element should be the origin pixel.

### Dönen Değerler

The generated ImagickKernel.

### Örnekler

Örnek 1 ImagickKernel::fromMatrix()

    <?php

    function renderKernel(ImagickKernel $imagickKernel) {
        $matrix = $imagickKernel->getMatrix();

        $imageMargin = 20;

        $tileSize = 20;
        $tileSpace = 4;
        $shadowSigma = 4;
        $shadowDropX = 20;
        $shadowDropY = 0;

        $radius = ($tileSize / 2) * 0.9;

        $rows = count($matrix);
        $columns = count($matrix[0]);

        $imagickDraw = new \ImagickDraw();

        $imagickDraw->setFillColor('#afafaf');
        $imagickDraw->setStrokeColor('none');

        $imagickDraw->translate($imageMargin, $imageMargin);
        $imagickDraw->push();

        ksort($matrix);

        foreach ($matrix as $row) {
            ksort($row);
            $imagickDraw->push();
            foreach ($row as $cell) {
                if ($cell !== false) {
                    $color = intval(255 * $cell);
                    $colorString = sprintf("rgb(%f, %f, %f)", $color, $color, $color);
                    $imagickDraw->setFillColor($colorString);
                    $imagickDraw->rectangle(0, 0, $tileSize, $tileSize);
                }
                $imagickDraw->translate(($tileSize + $tileSpace), 0);
            }
            $imagickDraw->pop();
            $imagickDraw->translate(0, ($tileSize + $tileSpace));
        }

        $imagickDraw->pop();

        $width = ($columns * $tileSize) + (($columns - 1) * $tileSpace);
        $height = ($rows * $tileSize) + (($rows - 1) * $tileSpace);

        $imagickDraw->push();
        $imagickDraw->translate($width/2 , $height/2);
        $imagickDraw->setFillColor('rgba(0, 0, 0, 0)');
        $imagickDraw->setStrokeColor('white');
        $imagickDraw->circle(0, 0, $radius - 1, 0);
        $imagickDraw->setStrokeColor('black');
        $imagickDraw->circle(0, 0, $radius, 0);
        $imagickDraw->pop();

        $canvasWidth = $width + (2 * $imageMargin);
        $canvasHeight = $height + (2 * $imageMargin);

        $kernel = new \Imagick();
        $kernel->newPseudoImage(
            $canvasWidth,
            $canvasHeight,
            'canvas:none'
        );

        $kernel->setImageFormat('png');
        $kernel->drawImage($imagickDraw);

        /* create drop shadow on it's own layer */
        $canvas = $kernel->clone();
        $canvas->setImageBackgroundColor(new \ImagickPixel('rgb(0, 0, 0)'));
        $canvas->shadowImage(100, $shadowSigma, $shadowDropX, $shadowDropY);

        $canvas->setImagePage($canvasWidth, $canvasHeight, -5, -5);
        $canvas->cropImage($canvasWidth, $canvasHeight, 0, 0);

        /* composite original text_layer onto shadow_layer */
        $canvas->compositeImage($kernel, \Imagick::COMPOSITE_OVER, 0, 0);
        $canvas->setImageFormat('png');

        return $canvas;
    }

    function createFromMatrix() {
        $matrix = [
            [0.5, 0, 0.2],
            [0, 1, 0],
            [0.9, 0, false],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix);

        return $kernel;
    }

    function fromMatrix() {
        $kernel = createFromMatrix();
        $imagick = renderKernel($kernel);

        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    ?>

# ImagickKernel::getMatrix

(PECL imagick >= 3.3.0)

ImagickKernel::getMatrix — Get the 2d matrix of values used in this kernel

### Açıklama

public function ImagickKernel::getMatrix(): array

Get the 2d matrix of values used in this kernel. The elements are either float for elements that are used or 'false' if the element should be skipped.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A matrix (2d array) of the values that represent the kernel.

### Örnekler

Örnek 1 ImagickKernel::getMatrix()

    <?php

    function renderKernelTable($matrix) {
        $output = "<table class='infoTable'>";

        foreach ($matrix as $row) {
            $output .= "<tr>";
            foreach ($row as $cell) {
                $output .= "<td style='text-align:left'>";
                if ($cell === false) {
                    $output .= "false";
                }
                else {
                    $output .= round($cell, 3);
                }
                $output .= "</td>";
            }
            $output .= "</tr>";
        }

        $output .= "</table>";

        return $output;
    }

        $output = "The built-in kernel name 'ring' with parameters of '2,3.5':<br/>";
        $kernel = \ImagickKernel::fromBuiltIn(
            \Imagick::KERNEL_RING,
            "2,3.5"
        );
        $matrix = $kernel->getMatrix();
        $output .= renderKernelTable($matrix);

        echo $output;

    ?>

# ImagickKernel::scale

(PECL imagick >= 3.3.0)

ImagickKernel::scale — Scales a kernel list by the given amount

### Açıklama

public function ImagickKernel::scale(float `$scale`, int `$normalizeFlag` = ?): void

Scales the given kernel list by the given amount, with or without normalization of the sum of the kernel values (as per given flags). The exact behaviour of this function depends on the normalization type being used please see http://www.imagemagick.org/api/morphology.php#ScaleKernelInfo for details.

### Bağımsız Değişkenler

`scale`

`normalizeFlag`

  - Imagick::NORMALIZE_KERNEL_NONE
  - Imagick::NORMALIZE_KERNEL_VALUE
  - Imagick::NORMALIZE_KERNEL_CORRELATE
  - Imagick::NORMALIZE_KERNEL_PERCENT

### Dönen Değerler

### Örnekler

Örnek 1 ImagickKernel::scale()

    <?php

        function renderKernelTable($matrix) {
            $output = "<table class='infoTable'>";

            foreach ($matrix as $row) {
                $output .= "<tr>";
                foreach ($row as $cell) {
                    $output .= "<td style='text-align:left'>";
                    if ($cell === false) {
                        $output .= "false";
                    }
                    else {
                        $output .= round($cell, 3);
                    }
                    $output .= "</td>";
                }
                $output .= "</tr>";
            }

            $output .= "</table>";

            return $output;
        }

        $output = "";

        $matrix = [
            [-1, 0, -1],
            [ 0, 4,  0],
            [-1, 0, -1],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix);
        $kernelClone = clone $kernel;

        $output .= "Start kernel<br/>";
        $output .= renderKernelTable($kernel->getMatrix());

        $output .= "Scaling with NORMALIZE_KERNEL_VALUE. The  <br/>";
        $kernel->scale(2, \Imagick::NORMALIZE_KERNEL_VALUE);
        $output .= renderKernelTable($kernel->getMatrix());

        $kernel = clone $kernelClone;
        $output .= "Scaling by percent<br/>";
        $kernel->scale(2, \Imagick::NORMALIZE_KERNEL_PERCENT);
        $output .= renderKernelTable($kernel->getMatrix());

        $matrix2 = [
            [-1, -1, 1],
            [ -1, false,  1],
            [1, 1, 1],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix2);
        $output .= "Scaling by correlate<br/>";
        $kernel->scale(1, \Imagick::NORMALIZE_KERNEL_CORRELATE);
        $output .= renderKernelTable($kernel->getMatrix());

        return $output;
    ?>

# ImagickKernel::separate

(PECL imagick >= 3.3.0)

ImagickKernel::separate — Separates a linked set of kernels and returns an array of ImagickKernels

### Açıklama

public function ImagickKernel::separate(): array

Separates a linked set of kernels and returns an array of ImagickKernels.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

### Örnekler

Örnek 1 ImagickKernel::separate()

    <?php

        function renderKernelTable($matrix) {

            $output = "<table class='infoTable'>";
            foreach ($matrix as $row) {
                $output .= "<tr>";
                foreach ($row as $cell) {
                    $output .= "<td style='text-align:left'>";
                    if ($cell === false) {
                        $output .= "false";
                    }
                    else {
                        $output .= round($cell, 3);
                    }
                    $output .= "</td>";
                }
                $output .= "</tr>";
            }

            $output .= "</table>";

            return $output;
        }

        $matrix = [
            [-1, 0, -1],
            [ 0, 4,  0],
            [-1, 0, -1],
        ];

        $kernel = \ImagickKernel::fromMatrix($matrix);
        $kernel->scale(4, \Imagick::NORMALIZE_KERNEL_VALUE);
        $diamondKernel = \ImagickKernel::fromBuiltIn(
            \Imagick::KERNEL_DIAMOND,
            "2"
        );

        $kernel->addKernel($diamondKernel);

        $kernelList = $kernel->separate();

        $output = '';
        $count = 0;
        foreach ($kernelList as $kernel) {
            $output .= "<br/>Kernel $count<br/>";
            $output .= renderKernelTable($kernel->getMatrix());
            $count++;
        }

        return $output;

    ?>

## İçindekiler

- ImagickKernel::addKernel — Attach another kernel to a kernel list
- ImagickKernel::addUnityKernel — Adds a Unity Kernel to the kernel list
- ImagickKernel::fromBuiltIn — Create a kernel from a builtin in kernel
- ImagickKernel::fromMatrix — Create a kernel from a 2d matrix of values
- ImagickKernel::getMatrix — Get the 2d matrix of values used in this kernel
- ImagickKernel::scale — Scales a kernel list by the given amount
- ImagickKernel::separate — Separates a linked set of kernels and returns an array of ImagickKernels

# ImagickKernelException sınıfı

(PECL imagick 3)

## Giriş

## Sınıf Sözdizimi

class ImagickKernelException extends Exception {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
/* Miras alınan yöntemler */
}

# ImagickPixel sınıfı

(PECL imagick 2, PECL imagick 3)

## Sınıf Sözdizimi

class ImagickPixel {
public function clear(): bool
public function __construct(string `$renk` = ?)
public function destroy(): bool
public function getColor(int `$normal` = 0): array
public function getColorAsString(): string
public function getColorCount(): int
public function getColorQuantum(): array
public function getColorValue(int `$kanal`): float
public function getColorValueQuantum(int `$color`): int|float
public function getHSL(): array
public function getIndex(): int
public function isPixelSimilar(ImagickPixel `$color`, float `$fuzz`): bool
public function isPixelSimilarQuantum(string `$color`, string `$fuzz` = ?): bool
public function isSimilar(ImagickPixel `$renk`, float `$benzerlik`): bool
public function setColor(string `$renk`): bool
public function setcolorcount(int `$colorCount`): bool
public function setColorValue(int `$kanal`, float `$değer`): bool
public function setColorValueQuantum(int `$color`, int|float `$value`): bool
public function setHSL(float `$sıcaklık`, float `$doygunluk`, float `$parlaklık`): bool
public function setIndex(int `$index`): bool
}

# ImagickPixel::clear

(PECL imagick 2, PECL imagick 3)

ImagickPixel::clear — Nesne ile ilişkili özkaynakları temizler

### Açıklama

public function ImagickPixel::clear(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Belirtilen ImagickPixel nesnesini ilk oluşturulduğu duruma döndürür. Bu ayrıca, nesne ile ilişkilendirilmiş rengi de tanımsız yapar.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixel::__construct

(PECL imagick 2, PECL imagick 3)

ImagickPixel::__construct — ImagickPixel nesnesini oluşturur

### Açıklama

public function ImagickPixel::__construct(string `$renk` = ?)
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickPixel nesnesini oluşturur. Bir renk belirtilmişse nesne bu renk kullanılarak ilklendirilir.

### Bağımsız Değişkenler

`renk`

  Bu nesnenin ilklendirilmesinde kullanılmak üzere belirtilmesi isteğe bağlı renk dizgesi.

### Dönen Değerler

Oluşturma veya ilklendirme başarılı olursa bir ImagickPixel nesnesi döner, aksi halde bir ImagickPixelException istisnası oluşur.

### Örnekler

Örnek 1 - ImagickPixel::construct() örneği

    <?php
    function construct() {

        $columns = 4;

        $exampleColors = array(
            "rgba(100%, 0%, 0%, 0.5)",
            "hsb(33.3333%, 100%,  75%)", // yeşil
            "hsl(120, 255,   191.25)", // yeşil
            "graya(50%, 0.5)", //  yarı şeffaf gri
            "LightCoral", "none", //"cmyk(0.9, 0.48, 0.83, 0.50)",
            "#f00", //  #rgb
            "#ff0000", //  #rrggbb
            "#ff0000ff", //  #rrggbbaa
            "#ffff00000000", //  #rrrrggggbbbb
            "#ffff00000000ffff", //  #rrrrggggbbbbaaaa
            "rgb(255, 0, 0)", //  her bileşen için 0-255 arasında bir tamsayı
            "rgb(100.0%, 0.0%, 0.0%)", //  her bileşen için 0—100% arasında bir gerçel sayı
            "rgb(255, 0, 0)", //  0 - 255 arası
            "rgba(255, 0, 0, 1.0)", //  aynı, örtük bir şeffaflık değeri ile
            "rgb(100%, 0%, 0%)", //  0.0% - 100.0% arası
            "rgba(100%, 0%, 0%, 1.0)", // aynı, örtük bir şeffaflık değeri ile
        );

        $draw = new \ImagickDraw();
        $count = 0;
        $black = new \ImagickPixel('rgb(0, 0, 0)');

        foreach ($exampleColors as $exampleColor) {
            $color = new \ImagickPixel($exampleColor);

            $draw->setstrokewidth(1.0);
            $draw->setStrokeColor($black);
            $draw->setFillColor($color);
            $offsetX = ($count % $columns) * 50 + 5;
            $offsetY = intval($count / $columns) * 50 + 5;
            $draw->rectangle(0 + $offsetX, 0 + $offsetY, 40 + $offsetX, 40 + $offsetY);
            $count++;
        }

        $image = new \Imagick();
        $image->newImage(350, 350, "blue");
        $image->setImageFormat("png");
        $image->drawImage($draw);
        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickPixel::destroy

(PECL imagick 2, PECL imagick 3)

ImagickPixel::destroy — Nesne ile ilgili özkaynakları serbest bırakır

### Açıklama

public function ImagickPixel::destroy(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

ImagickPixel nesnesi tarafından kullanılmış özkaynakları serbest bırakarak (nesneyi silerek) nesne ile ilişkilendirilmiş rengi tanımsız yapar. Nesne bu yöntem çağrıldıktan sonra artık kullanılmamalıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixel::getColor

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColor — Bir renk döndürür

### Açıklama

public function ImagickPixel::getColor(int `$normal` = 0): array

ImagickPixel nesnesiyle tanımlanmış rengi bir dizi olarak döndürür. Renk bir matlık kanalına sahipse bu dördüncü bir elemanla sağlanır.

### Bağımsız Değişkenler

`normal`

  Renk değerleri normalleştirilmiş mi? Olası değerler: `0`, `1` veya `2`.

  `normal` için olası değerler:
  `normal` | Açıklama
  --- | ---
  `0` | RGB değeri olarak `0` ile `255` (dahil) arasında tamsayı bir değer, şeffaflık değeri olarak ise tamsayı olarak `0` veya `1` döner.
  `1` | RGBA değeri olarak `0` ile `1` (dahil) arasında bir gerçel sayı döner.
  `2` | RGBA değeri olarak `0` ile `255` (dahil) arasında tamsayı bir değer döner.

### Dönen Değerler

Kanal değerlerini içeren bir dizi. Bağımsız değişken olarak `true` belirtilmişse elemanların her biri normalleştirilmiş bir değer içerir. Bir hata durumunda ImagickPixelException yavrulanır.

### Örnekler

Örnek 1 - Imagick::getColor() temel kullanım örneği

    <?php

    // Kahverengi bir ImagickPixel nesnesi oluştur
    $color = new ImagickPixel('brown');

    // %25 şeffaflık/matlık olsun
    $color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

    $colorInfo = $color->getColor();

    echo "Standart değerler".PHP_EOL;
    print_r($colorInfo);

    $colorInfo = $color->getColor(1);

    echo "Normalleştirilmiş değerler:".PHP_EOL;
    print_r($colorInfo);

    ?>

Yukarıdaki örneğin çıktısı:

    Standart değerler
    Array
    (
        [r] => 165
        [g] => 42
        [b] => 42
        [a] => 0
    )
    Normalleştirilmiş değerler:
    Array
    (
        [r] => 0.64705882352941
        [g] => 0.16470588235294
        [b] => 0.16470588235294
        [a] => 0.25000381475547
    )

# ImagickPixel::getColorAsString

(PECL imagick 2 >= 2.1.0, PECL imagick 3)

ImagickPixel::getColorAsString — Rengi bir dizge olarak döndürür

### Açıklama

public function ImagickPixel::getColorAsString(): string

ImagickPixel nesnesinin rengini bir dizge olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ImagickPixel nesnesinin rengi bir dizge olarak döner.

### Örnekler

Örnek 1 -Imagick::getColorAsString() temel kullanım örneği

    <?php

    // Kahverengi bir ImagickPixel nesnesi oluştur
    $color = new ImagickPixel('brown');

    $color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

    $colorInfo = $color->getColorAsString();

    print_r($colorInfo);
    ?>

Yukarıdaki örneğin çıktısı:

    rgb(165,42,42)

### Notlar

> Bilginize: Matlık/şeffaflık dönmez

> Bu işlev dönen dizge içinde rengin matlık değerini döndürmez.

# ImagickPixel::getColorCount

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColorCount — Nesnenin renk sayısını döndürür

### Açıklama

public function ImagickPixel::getColorCount(): int

Belirtilen renk nesnesi ile ilişkili renk sayısını döndürür.

Renk sayısı nesne rengindeki piksellerin sayısıdır.

ImagickPixel::getColorCount yöntemi sadece Imagick::getImageHistogram() ile oluşturulan ImagickPixel nesnelerinde çalışıyor gibi görünüyor.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Başarı durumunda renk sayısı bir tamsayı olarak döner, aksi takdirde bir ImagickPixelException istisnası oluşur.

### Örnekler

Örnek 1 - ImagickPixel::getColorCount örneği

    <?php
        $imagick = new \Imagick();
        $imagick->newPseudoImage(640, 480, "magick:logo");
        $histogramElements = $imagick->getImageHistogram();
        $lastColor = array_pop($histogramElements);
        echo "Son renk pikseli sayısı: ".$lastColor->getColorCount();
    ?>

Çıktısı şuna benzer:

    Son renk pikseli sayısı: 256244

# ImagickPixel::getColorQuantum

(No version information available, might only be in Git)

ImagickPixel::getColorQuantum — Returns the color of the pixel in an array as Quantum values

### Açıklama

public function ImagickPixel::getColorQuantum(): array

Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array with keys `"r"`, `"g"`, `"b"`, `"a"`.

# ImagickPixel::getColorValue

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getColorValue — Belirtilen renk kanalının normalleştirilmiş değerini döndürür

### Açıklama

public function ImagickPixel::getColorValue(int `$kanal`): float

Belirtilen renk kanalının değerini 0 ile 1 arasında bir gerçek sayı olarak döndürür.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri.

### Dönen Değerler

Belirtilen renk kanalının değerini 0 ile 1 arasında bir gerçek sayı olarak döndürür. Bir hata durumunda bir ImagickPixelException yavrulanır.

### Örnekler

Örnek 1 - Imagick::getColorValue() temel kullanım örneği

    <?php

    $color = new ImagickPixel('rgba(90%, 20%, 20%, 0.75)');

    echo "Matlık: ".$color->getColorValue(Imagick::COLOR_ALPHA).PHP_EOL;
    echo "".PHP_EOL;
    echo Kırmızı: ".$color->getColorValue(Imagick::COLOR_RED).PHP_EOL;
    echo "Yeşil: ".$color->getColorValue(Imagick::COLOR_GREEN).PHP_EOL;
    echo "Mavi: ".$color->getColorValue(Imagick::COLOR_BLUE).PHP_EOL;
    echo "".PHP_EOL;
    echo "Turkuaz: ".$color->getColorValue(Imagick::COLOR_CYAN).PHP_EOL;
    echo "Mor: ".$color->getColorValue(Imagick::COLOR_MAGENTA).PHP_EOL;
    echo "Sarı: ".$color->getColorValue(Imagick::COLOR_YELLOW).PHP_EOL;
    echo "Siyah: ".$color->getColorValue(Imagick::COLOR_BLACK).PHP_EOL;

    ?>

Yukarıdaki örneğin çıktısı:

    Matlık: 0.74999618524453

    Kırmızı: 0.90000762951095
    Yeşil: 0.2
    Mavi: 0.2

    Turkuaz: 0.90000762951095
    Mor: 0.2
    Sarı: 0.2
    Siyah: 0

# ImagickPixel::getColorValueQuantum

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

ImagickPixel::getColorValueQuantum — Gets the quantum value of a color in the ImagickPixel

### Açıklama

public function ImagickPixel::getColorValueQuantum(int `$color`): int|float

Gets the quantum value of a color in the ImagickPixel. Return value is a float if ImageMagick was compiled with HDRI, otherwise an integer.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.

### Örnekler

Örnek 1 ImagickPixel::getColorValueQuantum()

    <?php
            $color = new \ImagickPixel('rgb(128, 5, 255)');
            $colorRed = $color->getColorValueQuantum(\Imagick::COLOR_RED);
            $colorGreen = $color->getColorValueQuantum(\Imagick::COLOR_GREEN);
            $colorBlue = $color->getColorValueQuantum(\Imagick::COLOR_BLUE);
            $colorAlpha = $color->getColorValueQuantum(\Imagick::COLOR_ALPHA);

            printf(
                "Red: %s Green: %s  Blue %s Alpha: %s",
                $colorRed,
                $colorGreen,
                $colorBlue,
                $colorAlpha
            );

    ?>

# ImagickPixel::getHSL

(PECL imagick 2, PECL imagick 3)

ImagickPixel::getHSL — ImagickPixel nesnesinin normalleştirilmiş HSL rengini döndürür

### Açıklama

public function ImagickPixel::getHSL(): array

Bir ImagickPixel nesnesi olarak tanımlı normalleştirilmiş HSL rengini her elemanında 0.0 ile 1.0 arasında bir değer içeren üç elemanlı bir dizi olarak döndürür.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Rengin sıcaklık, doygunluk ve parlaklık değerleri sırayla "hue", "saturation" ve "luminosity" anahtarlarıyla bir ilişkisel dizi olarak döner. Başarısızlık durumunda bir ImagickPixelException yavrulanır.

### Örnekler

Örnek 1 - Imagick::getHSL() örneği

    <?php

    $color = new ImagickPixel('rgb(90%, 10%, 10%)');

    $colorInfo = $color->getHSL();

    print_r($colorInfo);

    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [hue] => 0
        [saturation] => 0.80001220740379
        [luminosity] => 0.50000762951095
    )

### Notlar

> Bilginize:

> ImageMagick kütüphanesinin 6.2.9 ve üstü sürümleriyle kullanılabilir.

# ImagickPixel::getIndex

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

ImagickPixel::getIndex — Gets the colormap index of the pixel wand

### Açıklama

public function ImagickPixel::getIndex(): int

Gets the colormap index of the pixel wand.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

# ImagickPixel::isPixelSimilar

(PECL imagick 3 >= 3.3.0)

ImagickPixel::isPixelSimilar — Check the distance between this color and another

### Açıklama

public function ImagickPixel::isPixelSimilar(ImagickPixel `$color`, float `$fuzz`): bool

Checks the distance between the color described by this ImagickPixel object and that of the provided object, by plotting their RGB values on the color cube. If the distance between the two points is less than the fuzz value given, the colors are similar. This method replaces ImagickPixel::isSimilar() and correctly normalises the fuzz value to ImageMagick QuantumRange.

### Bağımsız Değişkenler

`color`

  The ImagickPixel object to compare this object against.

`fuzz`

  The maximum distance within which to consider these colors as similar. The theoretical maximum for this value is the square root of three (1.732).

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixel::isPixelSimilarQuantum

(PECL imagick 3 >= 3.3.0)

ImagickPixel::isPixelSimilarQuantum — Returns whether two colors differ by less than the specified distance

### Açıklama

public function ImagickPixel::isPixelSimilarQuantum(string `$color`, string `$fuzz` = ?): bool

Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange. The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace

### Bağımsız Değişkenler

`color`

`fuzz`

### Dönen Değerler

# ImagickPixel::isSimilar

(PECL imagick 2, PECL imagick 3)

ImagickPixel::isSimilar — İki renk arasındaki benzerliği hesaplar

### Açıklama

public function ImagickPixel::isSimilar(ImagickPixel `$renk`, float `$benzerlik`): bool

`renk` bağımsız değişkeni ile belirtilen ImagickPixel nesnesinin rengi ile bu nesnenin rengi arasındaki benzerliği hesaplar. Eğer iki nesne arasındaki benzerlik `benzerlik` ile belirtilen değerden küçükse iki renk benzerdir. Bu işlev eskidir. Yerine ImagickPixel::isPixelSimilar() kullanılnalıdır.

### Bağımsız Değişkenler

`renk`

  Bu nesne ile karşılaştırılacak ImagickPixel nesnesi.

`benzerlik`

  Renkler arasındaki azami benzerlik. Örneğin bu değere 10 atarsanız, renk kırmızı ise ve kırmızının koyulukları 100 ve 102 ise bu iki renk aynı kabul edilir. Bu değerin kuramsal azamisi üçün kareköküne eşit bir değerdir (1.732).

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickPixel::isSimilar() örneği

    <?php
            // Aşağıdaki denemeler 255 olarak ifade edilen azami mesafe ile
            // yapılmıştır, bu nedenle bunları bir birim küpün köşegen uzunluğu
            // olan üçün karekökü ile ölçeklendirmemiz gerekir.

            $root3 = 1.732050807568877;

            $tests = array(
                ['rgb(245, 0, 0)',      'rgb(255, 0, 0)',   9 / $root3,         false,],
                ['rgb(245, 0, 0)',      'rgb(255, 0, 0)',  10 / $root3,         true,],
                ['rgb(0, 0, 0)',        'rgb(7, 7, 0)',     9 / $root3,         false,],
                ['rgb(0, 0, 0)',        'rgb(7, 7, 0)',    10 / $root3,         true,],
                ['rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)', 9 / $root3,         false,],
                ['rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)',    10 / $root3,     true,],
                ['rgb(128, 128, 128)',  'rgb(128, 128, 120)',   7 / $root3,     false,],
                ['rgb(128, 128, 128)',  'rgb(128, 128, 120)',   8 / $root3,     true,],
                ['rgb(0, 0, 0)',        'rgb(255, 255, 255)',   254.9,          false,],
                ['rgb(0, 0, 0)',        'rgb(255, 255, 255)',   255,            true,],
                ['rgb(255, 0, 0)',      'rgb(0, 255, 255)',     254.9,          false,],
                ['rgb(255, 0, 0)',      'rgb(0, 255, 255)',     255,            true,],
                ['black',               'rgba(0, 0, 0)',        0.0,            true],
                ['black',               'rgba(10, 0, 0, 1.0)',  10.0 / $root3,  true],);

            $output = "<table width='100%' class='infoTable'><thead>
                    <tr>
                    <th>
                    Color 1
                    </th>
                    <th>
                    Color 2
                    </th>
                    <th>
                        Deneme mesafesi * 255
                    </th>
                    <th>
                        Mesafe dahilinde
                    </th>
                    </tr>
            </thead>";

            $output .= "<tbody>";

            foreach ($tests as $testInfo) {
                $color1 = $testInfo[0];
                $color2 = $testInfo[1];
                $distance = $testInfo[2];
                $expectation = $testInfo[3];
                $testDistance = ($distance / 255.0);

                $color1Pixel = new \ImagickPixel($color1);
                $color2Pixel = new \ImagickPixel($color2);

                $isSimilar = $color1Pixel->isPixelSimilar($color2Pixel, $testDistance);

                if ($isSimilar !== $expectation) {
                    echo "Deneme mesafesi başarısız. [$color1] ile [$color2] renkleri mesafe içinde değil. $testDistance BAŞARISIZ.".NL;
                }

                $layout = "<tr>
                    <td>%s</td>
                    <td>%s</td>
                    <td>%s</td>
                    <td style='text-align: center;'>%s</td>
                </tr>";

                $output .= sprintf(
                    $layout,
                    $color1,
                    $color2,
                    $distance,
                    $isSimilar ? 'evet' : 'hayır'
                );
            }

            $output .= "</tbody></table>";

            return $output;

    ?>

# ImagickPixel::setColor

(PECL imagick 2, PECL imagick 3)

ImagickPixel::setColor — Renk tanımlar

### Açıklama

public function ImagickPixel::setColor(string `$renk`): bool

Bir renk dizgesi olarak verilen rengi ImagickPixel nesnesi olarak tanımlar. Renk dizgesi örnekleri: "blue", "#0000ff", "rgb(0,0,255)", "cmyk(100,100,100,10)"

### Bağımsız Değişkenler

`renk`

  ImagickPixel nesnesini ilklendirmekte kullanılacak renk dizgesi.

### Dönen Değerler

Belirtilen renk ile nesne tanımlanabilmişse `true` aksi takdirde `false`.

### Örnekler

Örnek 1 - ImagickPixel::setColor() örneği

    <?php
    function setColor() {
        $draw = new \ImagickDraw();

        $strokeColor = new \ImagickPixel('green');
        $fillColor = new \ImagickPixel();
        $fillColor->setColor('rgba(100%, 75%, 0%, 1.0)');

        $draw->setstrokewidth(3.0);
        $draw->setStrokeColor($strokeColor);
        $draw->setFillColor($fillColor);
        $draw->rectangle(200, 200, 300, 300);

        $image = new \Imagick();
        $image->newImage(500, 500, "SteelBlue2");
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickPixel::setColorCount

(PECL imagick 2, PECL imagick 3)

ImagickPixel::setColorCount — Sets the color count associated with this color

### Açıklama

public function ImagickPixel::setcolorcount(int `$colorCount`): bool

Sets the color count associated with this color.

### Bağımsız Değişkenler

`colorCount`

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixel::setColorValue

(PECL imagick 2, PECL imagick 3)

ImagickPixel::setColorValue — Renk kanallarından birinin normalleştirilmiş değerini belirler

### Açıklama

public function ImagickPixel::setColorValue(int `$kanal`, float `$değer`): bool

0 ile 1 arasında bir değerle belirtilen renk kanalı değeriyle nesnenin rengini ayarlar. Bu işlev bir ImagickPixel nesnesi için bir matlık kanalı sağlamakta kullanılabilir.

### Bağımsız Değişkenler

`kanal`

  Normalde kanal türü sabitlerinden biri.

`değer`

  Kanal değeri 0 ile 1 arasında olmalıdır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Imagick::setColorValue() örneği

    <?php

    $color  = new \ImagickPixel('firebrick');

    $color->setColorValue(Imagick::COLOR_ALPHA, 0.5);

    print_r($color->getcolor(true));
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [r] => 0.69803921568627
        [g] => 0.13333333333333
        [b] => 0.13333333333333
        [a] => 0.50000762951095
    )

# ImagickPixel::setColorValueQuantum

(PECL imagick 2 >=2.3.0, PECL imagick 3)

ImagickPixel::setColorValueQuantum — Sets the quantum value of a color element of the ImagickPixel

### Açıklama

public function ImagickPixel::setColorValueQuantum(int `$color`, int|float `$value`): bool

Sets the quantum value of a color element of the ImagickPixel.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`color`

  Which color element to set e.g. \Imagick::COLOR_GREEN.

`value`

  The quantum value to set the color element to. This should be a float if ImageMagick was compiled with HDRI otherwise an int in the range 0 to Imagick::getQuantum().

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 ImagickPixel::setColorValueQuantum()

    <?php
    function setColorValueQuantum() {
        $image = new \Imagick();

        $quantumRange = $image->getQuantumRange();

        $draw = new \ImagickDraw();
        $color = new \ImagickPixel('blue');
        $color->setcolorValueQuantum(\Imagick::COLOR_RED, 128 * $quantumRange['quantumRangeLong'] / 256);

        $draw->setstrokewidth(1.0);
        $draw->setStrokeColor($color);
        $draw->setFillColor($color);
        $draw->rectangle(200, 200, 300, 300);

        $image->newImage(500, 500, "SteelBlue2");
        $image->setImageFormat("png");

        $image->drawImage($draw);

        header("Content-Type: image/png");
        echo $image->getImageBlob();
    }

    ?>

# ImagickPixel::setHSL

(PECL imagick 2, PECL imagick 3)

ImagickPixel::setHSL — Normalleştirilmiş HSL rengini ayarlar

### Açıklama

public function ImagickPixel::setHSL(float `$sıcaklık`, float `$doygunluk`, float `$parlaklık`): bool

ImagickPixel nesnesi ile tanımlanan rengin sıcaklığını, doygunluğunu ve parlaklığını normalleştirir.

### Bağımsız Değişkenler

`sıcaklık`

  Kırmızının değeri 0 olmak üzere sıcaklık dairesindeki bir yay parçası olarak (0 ile 1 arasında) renk sıcaklığının (hue) normalleştirilmiş değeri.

`doygunluk`

  Doygunluk için normalleştirilmiş değer; tam doygunluk 1'dir.

`parlaklık`

  Parlaklık için normalleştirilmiş değer. 0.5 parlaklıkla tam sıcaklık ve doygunluğun sağlandığı siyahın 0, beyazın 1 ile temsil edildiği bir aralıkta belirtilir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - Bir rengi değiştirmek için ImagickPixel::setHSL() kullanımı

    <?php

    // Saf kırmızıya yakın bir renk oluştur
    $color = new ImagickPixel('rgb(90%, 10%, 10%)');

    // HSL değerlerini al
    $colorInfo = $color->getHSL();

    // Sıcaklığı 180 derece döndür
    $newHue = $colorInfo['hue'] + 0.5;
    if ($newHue > 1) {
        $newHue = $newHue - 1;
    }

    // ImagickPixel nesnesine yeni pikseli ata
    $colorInfo = $color->setHSL($newHue, $colorInfo['saturation'], $colorInfo['luminosity']);

    //Yeni renk mavi/yeşil mi bak
    $colorInfo = $color->getcolor();
    print_r($colorInfo);

    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [r] => 26
        [g] => 230
        [b] => 230
        [a] => 255
    )

### Notlar

> Bilginize:

> ImageMagick kütüphanesinin 6.2.9 ve üstü sürümleriyle kullanılabilir.

# ImagickPixel::setIndex

(PECL imagick 2 >= 2.3.0, PECL imagick 3)

ImagickPixel::setIndex — Sets the colormap index of the pixel wand

### Açıklama

public function ImagickPixel::setIndex(int `$index`): bool

Sets the colormap index of the pixel wand.

### Bağımsız Değişkenler

`index`

### Dönen Değerler

Başarı durumunda `true` döner.

## İçindekiler

- ImagickPixel::clear — Nesne ile ilişkili özkaynakları temizler
- ImagickPixel::__construct — ImagickPixel nesnesini oluşturur
- ImagickPixel::destroy — Nesne ile ilgili özkaynakları serbest bırakır
- ImagickPixel::getColor — Bir renk döndürür
- ImagickPixel::getColorAsString — Rengi bir dizge olarak döndürür
- ImagickPixel::getColorCount — Nesnenin renk sayısını döndürür
- ImagickPixel::getColorQuantum — Returns the color of the pixel in an array as Quantum values
- ImagickPixel::getColorValue — Belirtilen renk kanalının normalleştirilmiş değerini döndürür
- ImagickPixel::getColorValueQuantum — Gets the quantum value of a color in the ImagickPixel
- ImagickPixel::getHSL — ImagickPixel nesnesinin normalleştirilmiş HSL rengini döndürür
- ImagickPixel::getIndex — Gets the colormap index of the pixel wand
- ImagickPixel::isPixelSimilar — Check the distance between this color and another
- ImagickPixel::isPixelSimilarQuantum — Returns whether two colors differ by less than the specified distance
- ImagickPixel::isSimilar — İki renk arasındaki benzerliği hesaplar
- ImagickPixel::setColor — Renk tanımlar
- ImagickPixel::setColorCount — Sets the color count associated with this color
- ImagickPixel::setColorValue — Renk kanallarından birinin normalleştirilmiş değerini belirler
- ImagickPixel::setColorValueQuantum — Sets the quantum value of a color element of the ImagickPixel
- ImagickPixel::setHSL — Normalleştirilmiş HSL rengini ayarlar
- ImagickPixel::setIndex — Sets the colormap index of the pixel wand

# The ImagickPixelException class

(PECL imagick 3)

## Giriş

## Sınıf Sözdizimi

class ImagickPixelException extends Exception implements Throwable {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
/* Miras alınan yöntemler */
}

# ImagickPixelIterator sınıfı

(PECL imagick 2, PECL imagick 3)

## Sınıf Sözdizimi

class ImagickPixelIterator {
public function clear(): bool
public function __construct(Imagick `$kalem`)
public function destroy(): bool
public function getCurrentIteratorRow(): array
public function getIteratorRow(): int
public function getNextIteratorRow(): array
public function getPreviousIteratorRow(): array
public function newPixelIterator(Imagick `$kalem`): bool
public function newPixelRegionIterator(
Imagick `$kalem`,
int `$x`,
int `$y`,
int `$sütun_sayısı`,
int `$satır_sayısı`
): bool
public function resetIterator(): bool
public function setIteratorFirstRow(): bool
public function setIteratorLastRow(): bool
public function setIteratorRow(int `$satır`): bool
public function syncIterator(): bool
}

# ImagickPixelIterator::clear

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::clear — Piksel yineleyici ile ilişkili özkaynakları temizler

### Açıklama

public function ImagickPixelIterator::clear(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyiciyi ilk oluşturulduğu duruma getirir.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickPixelIterator::clear() örneği

    <?php
    function clear($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));

        $imageIterator = $imagick->getPixelRegionIterator(100, 100, 250, 200);

        /* Piksel satırlarında döngü */
        foreach ($imageIterator as $pixels) {
            /** @var $pixel \ImagickPixel */
            /* Piksel sütunlarında döngü */
            foreach ($pixels as $column => $pixel) {
                if ($column % 2) {
                    /* Her ikinci pikseli siyah yap */
                    $pixel->setColor("rgba(0, 0, 0, 0)");
                }
            }
            /* Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
            $imageIterator->syncIterator();
        }

        $imageIterator->clear();

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# ImagickPixelIterator::__construct

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::__construct — Bir ImagickPixelIterator nesnesi oluşturur

### Açıklama

public function ImagickPixelIterator::__construct(Imagick `$kalem`)
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yeni bir ImagickPixelIterator nesnesi oluşturur.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickPixelIterator::construct() örneği

    <?php
    function construct($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imageIterator = new \ImagickPixelIterator($imagick);

        /* Piksel satırlarında döngü */
        foreach ($imageIterator as $pixels) {
            /*Piksel sütunlarında döngü */
            foreach ($pixels as $column => $pixel) {
                /** @var $pixel \ImagickPixel */
                if ($column % 2) {
                    /* Her ikinci pikseli siyah yap */
                    $pixel->setColor("rgba(0, 0, 0, 0)");
                }
            }
            /* Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
            $imageIterator->syncIterator();
        }

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# ImagickPixelIterator::destroy

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::destroy — Piksel yineleyici ile ilişkili özkaynakları serbest bırakır

### Açıklama

public function ImagickPixelIterator::destroy(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyici ile ilişkili özkaynakları serbest bırakır (nesneyi siler).

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixelIterator::getCurrentIteratorRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::getCurrentIteratorRow — Piksel yineleyicinin üzerinde bulunduğu ImagickPixel nesneleri satırını döndürür

### Açıklama

public function ImagickPixelIterator::getCurrentIteratorRow(): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyicinin üzerinde bulunduğu satırı ImagickPixel nesnelerinden oluşan bir dizi olarak döndürür.

### Dönen Değerler

Piksel yineleyicinin üzerinde bulunduğu satır, ImagickPixel nesnelerinden oluşan bir dizi olarak döner.

# ImagickPixelIterator::getIteratorRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::getIteratorRow — Piksel yineleyicinin üzerinde bulunduğu satırın numarasını döndürür

### Açıklama

public function ImagickPixelIterator::getIteratorRow(): int

Piksel yineleyicinin üzerinde bulunduğu satırınn numarasını döndürür.

### Dönen Değerler

Satır numarasını bir tamsayı olarak döndürür. Bir hata durumunda bir ImagickPixelIteratorException istisnası oluşur.

# ImagickPixelIterator::getNextIteratorRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::getNextIteratorRow — Piksel yineleyicinin sonraki satırını döndürür

### Açıklama

public function ImagickPixelIterator::getNextIteratorRow(): array

Sonraki satırı piksel yineleyicideki piksel kalemlerinden oluşan bir dizi olarak döndürür.

### Dönen Değerler

Sonraki satırı ImagickPixel nesnelerinden oluşan bir dizi olarak döndürür. Bir hata durumunda bir ImagickPixelIteratorException yavrulanır.

### Örnekler

Örnek 1 - ImagickPixelIterator::getNextIteratorRow() örneği

    <?php
    function getNextIteratorRow($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imageIterator = $imagick->getPixelIterator();

        $count = 0;
        while ($pixels = $imageIterator->getNextIteratorRow()) {
            if (($count % 3) == 0) {
                /* Satırdaki piksellere döngü */
                foreach ($pixels as $column => $pixel) {
                    /** @var $pixel \ImagickPixel */
                    if ($column % 2) {
                        /* Her ikinci pikseli siyah yap */
                        $pixel->setColor("rgba(0, 0, 0, 0)");
                    }
                }
                /* Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
                $imageIterator->syncIterator();
            }

            $count += 1;
        }

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# ImagickPixelIterator::getPreviousIteratorRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::getPreviousIteratorRow — Önceki satırı döndürür

### Açıklama

public function ImagickPixelIterator::getPreviousIteratorRow(): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Önceki satırı piksel yineleyicideki piksel kalemlerinden oluşan bir dizi olarak döndürür.

### Dönen Değerler

Önceki satırı ImagickPixel nesnelerinden oluşan bir dizi olarak döndürür. Bir hata durumunda bir ImagickPixelIteratorException istisnası oluşur.

# ImagickPixelIterator::newPixelIterator

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::newPixelIterator — Yeni bir piksel yineleyici döndürür

### Açıklama

public function ImagickPixelIterator::newPixelIterator(Imagick `$kalem`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yeni bir piksel yineleyici döndürür.

### Dönen Değerler

Başarı durumunda `true` döner. Hata durumunda bir ImagickPixelIteratorException istisnası oluşur.

# ImagickPixelIterator::newPixelRegionIterator

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::newPixelRegionIterator — Yeni bir bölgesel piksel yineleyicisi döndürür

### Açıklama

public function ImagickPixelIterator::newPixelRegionIterator(
Imagick `$kalem`,
int `$x`,
int `$y`,
int `$sütun_sayısı`,
int `$satır_sayısı`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Yeni bir bölgesel piksel yineleyicisi döndürür.

### Bağımsız Değişkenler

`kalem`

`x`

`y`

`sütun_sayısı`

`satır_sayısı`

### Dönen Değerler

Başarılı olursa yeni bir ImagickPixelIterator nesnesi, aksi takdirde bir ImagickPixelIteratorException istisnası oluşur.

# ImagickPixelIterator::resetIterator

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::resetIterator — Piksel yineleyiciyi sıfırlar

### Açıklama

public function ImagickPixelIterator::resetIterator(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyiciyi sıfırlar. Bir piksel taşıyıcısındaki tüm pikseller üzerinde yineleme yapmak için ImagickPixelIterator::getNextIteratorRow() ile birlikte kullanılır.

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickPixelIterator::resetIterator() örneği

    <?php
    function resetIterator($imagePath) {

        $imagick = new \Imagick(realpath($imagePath));

        $imageIterator = $imagick->getPixelIterator();

        /* Piksel satırlarında döngü */
        foreach ($imageIterator as $pixels) {
            /* Piksel sütunlarında döngü */
            foreach ($pixels as $column => $pixel) {
                /** @var $pixel \ImagickPixel */
                if ($column % 2) {

                    /* Her pikseli %25 kırmızı yap */
                    $pixel->setColorValue(\Imagick::COLOR_RED, 64);
                }
            }
            /* Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
            $imageIterator->syncIterator();
        }

        $imageIterator->resetiterator();

        /* Piksel satırlarında döngü */
        foreach ($imageIterator as $pixels) {
            /* Piksel sütunlarında döngü */
            foreach ($pixels as $column => $pixel) {
                /** @var $pixel \ImagickPixel */
                if ($column % 3) {
                    /* Her pikseli biraz mavileştir */
                    $pixel->setColorValue(\Imagick::COLOR_BLUE, 64);
                    //* Her ikinci pikseli siyah yap*/
                    $pixel->setColor("rgba(0, 0, 128, 0)");
                }
            }
            /*Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
            $imageIterator->syncIterator();
        }

        $imageIterator->clear();

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# ImagickPixelIterator::setIteratorFirstRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::setIteratorFirstRow — Piksel yineleyiciyi ilk piksel satırına hizalar

### Açıklama

public function ImagickPixelIterator::setIteratorFirstRow(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyiciyi ilk piksel satırına hizalar.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixelIterator::setIteratorLastRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::setIteratorLastRow — Piksel yineleyiciyi son piksel satırına hizalar

### Açıklama

public function ImagickPixelIterator::setIteratorLastRow(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyiciyi son piksel satırına hizalar.

### Dönen Değerler

Başarı durumunda `true` döner.

# ImagickPixelIterator::setIteratorRow

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::setIteratorRow — Piksel yineleyiciyi satırını tanımlar

### Açıklama

public function ImagickPixelIterator::setIteratorRow(int `$satır`): bool

Piksel yineleyiciyi satırını tanımlar.

### Bağımsız Değişkenler

`satır`

### Dönen Değerler

Başarı durumunda `true` döner.

### Örnekler

Örnek 1 - ImagickPixelIterator::setIteratorRow() örneği

    <?php
    function setIteratorRow($imagePath) {
        $imagick = new \Imagick(realpath($imagePath));
        $imageIterator = $imagick->getPixelRegionIterator(200, 100, 200, 200);

        for ($x = 0; $x < 20; $x++) {
            $imageIterator->setIteratorRow($x * 5);
            $pixels = $imageIterator->getCurrentIteratorRow();
            /* Satırdaki piksellere döngü */
            foreach ($pixels as $pixel) {
                /** @var $pixel \ImagickPixel */
                /* Her ikinci pikseli siyah yap */
                $pixel->setColor("rgba(0, 0, 0, 0)");
            }

            /* Yineleyiciyi eşle, her yinelemede bunu yapmak önemli */
            $imageIterator->syncIterator();
        }

        header("Content-Type: image/jpg");
        echo $imagick;
    }

    ?>

# ImagickPixelIterator::syncIterator

(PECL imagick 2, PECL imagick 3)

ImagickPixelIterator::syncIterator — Piksel yineleyiciyi eşzamanlar

### Açıklama

public function ImagickPixelIterator::syncIterator(): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Piksel yineleyiciyi eşzamanlar.

### Dönen Değerler

Başarı durumunda `true` döner.

## İçindekiler

- ImagickPixelIterator::clear — Piksel yineleyici ile ilişkili özkaynakları temizler
- ImagickPixelIterator::__construct — Bir ImagickPixelIterator nesnesi oluşturur
- ImagickPixelIterator::destroy — Piksel yineleyici ile ilişkili özkaynakları serbest bırakır
- ImagickPixelIterator::getCurrentIteratorRow — Piksel yineleyicinin üzerinde bulunduğu ImagickPixel nesneleri satırını döndürür
- ImagickPixelIterator::getIteratorRow — Piksel yineleyicinin üzerinde bulunduğu satırın numarasını döndürür
- ImagickPixelIterator::getNextIteratorRow — Piksel yineleyicinin sonraki satırını döndürür
- ImagickPixelIterator::getPreviousIteratorRow — Önceki satırı döndürür
- ImagickPixelIterator::newPixelIterator — Yeni bir piksel yineleyici döndürür
- ImagickPixelIterator::newPixelRegionIterator — Yeni bir bölgesel piksel yineleyicisi döndürür
- ImagickPixelIterator::resetIterator — Piksel yineleyiciyi sıfırlar
- ImagickPixelIterator::setIteratorFirstRow — Piksel yineleyiciyi ilk piksel satırına hizalar
- ImagickPixelIterator::setIteratorLastRow — Piksel yineleyiciyi son piksel satırına hizalar
- ImagickPixelIterator::setIteratorRow — Piksel yineleyiciyi satırını tanımlar
- ImagickPixelIterator::syncIterator — Piksel yineleyiciyi eşzamanlar

# The ImagickPixelIteratorException class

(PECL imagick 3)

## Giriş

## Sınıf Sözdizimi

class ImagickPixelIteratorException extends Exception implements Throwable {
/* Miras alınan özellikler */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* Yöntemler */
/* Miras alınan yöntemler */
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Örnekler
  - Temel kullanım
- Imagick — Imagick sınıfı
  - Imagick::adaptiveBlurImage — Görüntüyü uyarlamalı olarak bulanıklaştırır
  - Imagick::adaptiveResizeImage — Nirengi noktasına göre uyarlamalı olarak görüntüyü boyutlandırır
  - Imagick::adaptiveSharpenImage — Uyarlamalı olarak görüntüyü keskinleştirir
  - Imagick::adaptiveThresholdImage — Bir yoğunluk aralığına göre her piksel için bir eşik seçer
  - Imagick::addImage — Imagick görüntü listesine yeni bir görüntü ekler
  - Imagick::addNoiseImage — Görüntüye rasgele gürültü ekler
  - Imagick::affineTransformImage — Görüntüyü dönüştürür
  - Imagick::animateImages — Bir görüntüyü veya görüntüleri canlandırır
  - Imagick::annotateImage — Görüntüye bir metin çizer
  - Imagick::appendImages — Bir görüntü kümesini ekler
  - Imagick::autoLevelImage — Adjusts the levels of a particular image channel
  - Imagick::averageImages — Bir görüntü kümesinin ortalamasını alır
  - Imagick::blackThresholdImage — Eşiğin altında kalan tüm renkleri siyaha çevirir
  - Imagick::blueShiftImage — Mutes the colors of the image
  - Imagick::blurImage — Görüntüye bir bulanıklık süzgeci ekler
  - Imagick::borderImage — Görüntüye bir çerçeve çizer
  - Imagick::brightnessContrastImage — Change the brightness and/or contrast of an image
  - Imagick::charcoalImage — Kara kalem çizimi taklit eder
  - Imagick::chopImage — Bir görüntünün bir bölgesini silerek kırpar
  - Imagick::clampImage — Restricts the color range from 0 to the quantum depth.
  - Imagick::clear — Imagick nesnesi ile ilgili tüm özkaynakları temizler
  - Imagick::clipImage — 8BIM profilindeki ilk yol boyunca görüntüyü kırpar
  - Imagick::clipImagePath — Clips along the named paths from the 8BIM profile, if present
  - Imagick::clipPathImage — 8BIM profili boyunca isimli yolları kırpar
  - Imagick::clone — Imagick nesnesinin tam bir kopyasını yapar
  - Imagick::clutImage — Görüntünün renklerini değiştirir
  - Imagick::coalesceImages — Bir görüntü kümesini tek bir görüntü olarak birleştirir
  - Imagick::colorFloodfillImage — Hedefle eşleşen her pikselin rengini değiştirir
  - Imagick::colorizeImage — Görüntünün her pikseline dolgu rengini karıştırır
  - Imagick::colorMatrixImage — Apply color transformation to an image
  - Imagick::combineImages — Bir veya daha fazla görüntüyü tek bir resim halinde birleştirir
  - Imagick::commentImage — Görüntüye bir açıklama ekler
  - Imagick::compareImageChannels — Bir veya daha fazla görüntünün farkını döndürür
  - Imagick::compareImageLayers — Görüntü katmanlarını karşılaştırıp en iyilenmiş görüntüyü döndürür
  - Imagick::compareImages — Görüntüyü yeniden oluşturulan görüntü ile karşılaştırır
  - Imagick::compositeImage — Bir görüntüyü diğeriyle birleştirir
  - Imagick::__construct — Imagick kurucusu
  - Imagick::contrastImage — Görüntünün zıtlığını değiştirir
  - Imagick::contrastStretchImage — Renkli bir görüntünün zıtlığını ayarlar
  - Imagick::convolveImage — Görüntüye bir evrişim çekirdeği uygular
  - Imagick::count — Get the number of images
  - Imagick::cropImage — Görüntünün bir bölgesini çıkarır
  - Imagick::cropThumbnailImage — Görüntünün kırpık bir örneğini oluşturur
  - Imagick::current — Geçerli Imagick nesnesini döndürür
  - Imagick::cycleColormapImage — Bir görüntünün renk eşleminin bir kısmını değiştirir
  - Imagick::decipherImage — Şifreli bir görüntünün şifresini çözer
  - Imagick::deconstructImages — Görüntüler arasındaki farklı piksellerin kapladığı en büyük alanı döndürür
  - Imagick::deleteImageArtifact — Delete image artifact
  - Imagick::deleteImageProperty — Deletes an image property
  - Imagick::deskewImage — Removes skew from the image
  - Imagick::despeckleImage — Görüntünün benekli görünümünü düzeltir
  - Imagick::destroy — Imagick nesnesini siler
  - Imagick::displayImage — Bir görüntüyü gösterir
  - Imagick::displayImages — Bir görüntü dizisini gösterir
  - Imagick::distortImage — Çeşitli yöntemlerle görüntüyü bozunuma uğratır
  - Imagick::drawImage — Belirtilen ImagickDraw nesnesini görüntüye uygular
  - Imagick::edgeImage — Görüntünün kenarlarını yuvarlatır
  - Imagick::embossImage — Üç boyutluluk etkisi vermek için görüntüyü gri tonlamaya dönüştürür
  - Imagick::encipherImage — Bir görüntüyü şifreler
  - Imagick::enhanceImage — Görüntü kalitesini arttırır
  - Imagick::equalizeImage — Görüntünün renk dağılımını dengeler
  - Imagick::evaluateImage — Görüntüye bir ifade uygular
  - Imagick::exportImagePixels — Exports raw image pixels
  - Imagick::extentImage — Görüntü boyutlarını belirler
  - Imagick::filter — Applies a custom convolution kernel to the image
  - Imagick::flattenImages — Bir görüntü dizisini tek bir görüntü halinde üstüste bindirir
  - Imagick::flipImage — Görüntünün düşeydeki yansımasını oluşturur
  - Imagick::floodFillPaintImage — Hedefle eşleşen piksellerin renklerini değiştirir
  - Imagick::flopImage — Görüntünün yataydaki yansımasını oluşturur
  - Imagick::forwardFourierTransformImage — Implements the discrete Fourier transform (DFT)
  - Imagick::frameImage — Üç boyutluluğu taklit ederek bir çerçeve ekler
  - Imagick::functionImage — Applies a function on the image
  - Imagick::fxImage — Bir ifadeyi görüntüdeki her piksele uygular
  - Imagick::gammaImage — Görüntünün gammasını düzeltir
  - Imagick::gaussianBlurImage — Görüntüyü bulanıklaştırır
  - Imagick::getColorspace — Gets the colorspace
  - Imagick::getCompression — Nesnenin sıkıştırma türünü döndürür
  - Imagick::getCompressionQuality — Nesnenin sıkıştırma seviyesini döndürür
  - Imagick::getCopyright — ImageMagick telif hakkı bilgisini döndürür
  - Imagick::getFilename — Görüntü dizisi ile ilişkili dosya ismini döndürür
  - Imagick::getFont — Yazıtipini döndürür
  - Imagick::getFormat — Imagick nesnesinin biçemini döndürür
  - Imagick::getGravity — Gets the gravity
  - Imagick::getHomeURL — ImageMagick sitesinin adresini döndürür
  - Imagick::getImage — Yeni bir Imagick nesnesi döndürür
  - Imagick::getImageAlphaChannel — Checks if the image has an alpha channel
  - Imagick::getImageArtifact — Get image artifact
  - Imagick::getImageAttribute — Returns a named attribute
  - Imagick::getImageBackgroundColor — Resmin artalan rengini döndürür
  - Imagick::getImageBlob — Görüntü dizisini ikil dizge olarak döndürür
  - Imagick::getImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktayı döndürür
  - Imagick::getImageBorderColor — Görüntünün çerçeve rengini döndürür
  - Imagick::getImageChannelDepth — Belirtilen kanalın derinliğini döndürür
  - Imagick::getImageChannelDistortion — Görüntünün kanallarını yeniden oluşturulan görüntüyle karşılaştırır
  - Imagick::getImageChannelDistortions — Gets channel distortions
  - Imagick::getImageChannelExtrema — Belirtilen kanalların uç değerlerini döndürür
  - Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose
  - Imagick::getImageChannelMean — Kanal ortalama ve standart sapmasını döndürür
  - Imagick::getImageChannelRange — Gets channel range
  - Imagick::getImageChannelStatistics — Görüntüdeki her kanalın istatistiklerini döndürür
  - Imagick::getImageClipMask — Resim kırpma maskesini döndürür
  - Imagick::getImageColormapColor — Renk eşlemi indisi belirtilen rengi döndürür
  - Imagick::getImageColors — Görüntüdeki eşsiz renklerin sayısını döndürür
  - Imagick::getImageColorspace — Resmin renk uzayını döndürür
  - Imagick::getImageCompose — Görüntü ile ilgili birleştirme işlecini döndürür
  - Imagick::getImageCompression — Görüntünün sıkıştırma türünü döndürür
  - Imagick::getImageCompressionQuality — Görüntünün sıkıştırma seviyesini döndürür
  - Imagick::getImageDelay — Görüntü gecikmesini döndürür
  - Imagick::getImageDepth — Görüntü derinliğini döndürür
  - Imagick::getImageDispose — Görüntünün elden çıkarma yöntemini döndürür
  - Imagick::getImageDistortion — Görüntüyü yeniden oluşturulmuş bir görüntü ile karşılaştırır
  - Imagick::getImageExtrema — Görüntü ile ilgili uç değerleri döndürür
  - Imagick::getImageFilename — Bir görüntü dizisindeki belli bir görüntünün dosya ismini döndürür
  - Imagick::getImageFormat — Bir görüntü dizisindeki belli bir görüntünün biçemini döndürür
  - Imagick::getImageGamma — Görüntünün gammasını döndürür
  - Imagick::getImageGeometry — Görüntünün genişliğini ve yüksekliğini bir ilişkisel dizi olarak döndürür
  - Imagick::getImageGravity — Gets the image gravity
  - Imagick::getImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı döndürür
  - Imagick::getImageHeight — Görüntünün yüksekliğini döndürür
  - Imagick::getImageHistogram — Görüntünün renk dağılımını döndürür
  - Imagick::getImageIndex — Geçerli etkin görüntünün indisini döndürür
  - Imagick::getImageInterlaceScheme — Görüntünün geçişim şemasını döndürür
  - Imagick::getImageInterpolateMethod — Aradeğerleme yöntemini döndürür
  - Imagick::getImageIterations — Görüntü yineleme sayısını döndürür
  - Imagick::getImageLength — Görüntü uzunluğunu döndürür
  - Imagick::getImageMatte — Görüntünün bir matlık kanalı varsa true döndürür
  - Imagick::getImageMatteColor — Görüntünün matlık rengini döndürür
  - Imagick::getImageMimeType — Returns the image mime-type
  - Imagick::getImageOrientation — Görüntü baskı yönünü döndürür
  - Imagick::getImagePage — Sayfa geometrisini döndürür
  - Imagick::getImagePixelColor — Belirtilen pikselin rengini döndürür
  - Imagick::getImageProfile — İsimli görüntü profilini döndürür
  - Imagick::getImageProfiles — Görüntü profillerini döndürür
  - Imagick::getImageProperties — Görüntü özelliklerini döndürür
  - Imagick::getImageProperty — İsimli görüntü özelliğini döndürür
  - Imagick::getImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktasını döndürür
  - Imagick::getImageRegion — Görüntünün bir bölgesini çıkarır
  - Imagick::getImageRenderingIntent — Görüntüye komutların uygulanış tarzını döndürür
  - Imagick::getImageResolution — Görüntünün X ve Y çözünürlüklerini döndürür
  - Imagick::getImagesBlob — Tüm görüntü dizilerini bir ikil dizge olarak döndürür
  - Imagick::getImageScene — Görüntünün artalan dekorunu döndürür
  - Imagick::getImageSignature — Görüntünün SHA-256 aşını üretir
  - Imagick::getImageSize — Görüntü uzunluğunu bayt cinsinden döndürür
  - Imagick::getImageTicksPerSecond — Görüntünün saniyedeki tik sayısını döndürür
  - Imagick::getImageTotalInkDensity — Görüntünün belli bir renginin toplam yoğunluğunu döndürür
  - Imagick::getImageType — Olası görüntü türünü döndürür
  - Imagick::getImageUnits — Görüntü çözünürlük birimlerini döndürür
  - Imagick::getImageVirtualPixelMethod — Sanal piksel yöntemini döndürür
  - Imagick::getImageWhitePoint — Görüntünün renk bileşenlerinden beyaz noktayı döndürür
  - Imagick::getImageWidth — Görüntü genişliğini döndürür
  - Imagick::getInterlaceScheme — Nesne geçişim şemasını döndürür
  - Imagick::getIteratorIndex — Geçerli etkin görüntünün indisini döndürür
  - Imagick::getNumberImages — Nesnedeki görüntü sayısını döndürür
  - Imagick::getOption — Belirtilen anahtarla ilgili değeri döndürür
  - Imagick::getPackageName — ImageMagick paket ismini döndürür
  - Imagick::getPage — Sayfa geometrisini döndürür
  - Imagick::getPixelIterator — Bir MagickPixelIterator nesnesi döndürür
  - Imagick::getPixelRegionIterator — Bir görüntü bölümü için bir ImagickPixelIterator nesnesi döndürür
  - Imagick::getPointSize — Punto değerini döndürür
  - Imagick::getQuantum — Returns the ImageMagick quantum range
  - Imagick::getQuantumDepth — Parçacık derinliğini döndürür
  - Imagick::getQuantumRange — Imagick parçacık aralığını döndürür
  - Imagick::getRegistry — Get a StringRegistry entry
  - Imagick::getReleaseDate — ImageMagick dağıtım tarihini döndürür
  - Imagick::getResource — Belirtilen özkaynağın bellek kullanımını döndürür
  - Imagick::getResourceLimit — Belirtilen özkaynağın bellek kullanım sınırını döndürür
  - Imagick::getSamplingFactors — Yatay ve düşey örnekleme katsayısını döndürür
  - Imagick::getSize — Imagick nesnesi ile ilgili boyutları döndürür
  - Imagick::getSizeOffset — Boyut başlangıç noktasını döndürür
  - Imagick::getVersion — ImageMagick API sürümünü döndürür
  - Imagick::haldClutImage — Replaces colors in the image
  - Imagick::hasNextImage — Görüntünün sonrasında bir görüntü daha var mı diye bakar
  - Imagick::hasPreviousImage — Görüntünün öncesinde bir görüntü daha var mı diye bakar
  - Imagick::identifyFormat — Formats a string with image details
  - Imagick::identifyImage — Görüntünün özniteliklerini döndürerek görüntüyü tanımlar
  - Imagick::implodeImage — Görüntüyü kopyalamak suretiyle yeni bir görüntü oluşturur
  - Imagick::importImagePixels — Imports image pixels
  - Imagick::inverseFourierTransformImage — Implements the inverse discrete Fourier transform (DFT)
  - Imagick::labelImage — Görüntüye bir yafta ekler
  - Imagick::levelImage — Bir görüntünün seviyelerini ayarlar
  - Imagick::linearStretchImage — Görüntünün koyuluğunu doygunluk ile abartır
  - Imagick::liquidRescaleImage — Bir görüntüyü veya görüntüleri canlandırır
  - Imagick::listRegistry — List all the registry settings
  - Imagick::magnifyImage — En boy oranını koruyarak görüntüyü iki katına büyütür
  - Imagick::mapImage — Görüntünün renklerini belirtilen görüntüdeki en yakın renklerle değiştirir
  - Imagick::matteFloodfillImage — Bir rengin şeffaflık değerini değiştirir
  - Imagick::medianFilterImage — Görüntüye bir sayısal süzgeç uygular
  - Imagick::mergeImageLayers — Görüntü katmanlarını katıştırır
  - Imagick::minifyImage — En boy oranını koruyarak görüntüyü yarı boyutuna indirir
  - Imagick::modulateImage — Görüntünün parlaklık, doygunluk ve renk sıcaklığını denetler
  - Imagick::montageImage — Birleşik bir görüntü oluşturur
  - Imagick::morphImages — Bir görüntü dizisini başkalaşıma uğratır
  - Imagick::morphology — Applies a user supplied kernel to the image according to the given morphology method.
  - Imagick::mosaicImages — Görüntülerden bir mozaik oluşturur
  - Imagick::motionBlurImage — Hareket bulanıklığını taklit eder
  - Imagick::negateImage — Görüntünün renklerini negatiflerine dönüştürür
  - Imagick::newImage — Yeni bir görüntü oluşturur
  - Imagick::newPseudoImage — Yeni bir görüntü oluşturur
  - Imagick::nextImage — Bir sonraki görüntüye gider
  - Imagick::normalizeImage — Renkli bir görüntünün zıtlığını arttırır
  - Imagick::oilPaintImage — Yağlı boya resmi taklit eder
  - Imagick::opaquePaintImage — Hedef ile eşleşen piksellerin rengini değiştirir
  - Imagick::optimizeImageLayers — En iyilemek amacıyla görüntülerin tekrarlanan bölümlerini siler
  - Imagick::orderedPosterizeImage — Görüntüye kurallı titreklik uygular
  - Imagick::paintFloodfillImage — Belirtilen renkle eşleşen piksellerin rengini değiştirir
  - Imagick::paintOpaqueImage — Bir rengi bir başka renkle değiştirir
  - Imagick::paintTransparentImage — Görüntüdeki belli bir rengi dolgu rengiyle değiştirir
  - Imagick::pingImage — Temel görüntü özniteliklerini bir dosyadan okur
  - Imagick::pingImageBlob — Temel görüntü özniteliklerini bir dizgeden okur
  - Imagick::pingImageFile — Temel görüntü özniteliklerini bir akımdan okur
  - Imagick::polaroidImage — Polaroid resmi taklit eder
  - Imagick::posterizeImage — Görüntüdeki renkleri belli bir sayıya düşürür
  - Imagick::previewImages — Görüntü üzerinde yapılacak bir işlem için en uygun bağımsız değişkenin tespitini hızlandırır
  - Imagick::previousImage — Bir önceki görüntüye gider
  - Imagick::profileImage — Bir görüntüye profil ekler veya çıkarır
  - Imagick::quantizeImage — Belli bir görüntü içindeki renk miktarını bulur
  - Imagick::quantizeImages — Bir görüntü kümesi içindeki renk miktarını bulur
  - Imagick::queryFontMetrics — Yazı tipinin özelliklerini içeren bir dizi döndürür
  - Imagick::queryFonts — Yapılandırımış yazı tiplerini döndürür
  - Imagick::queryFormats — Imagick tarafından desteklenen biçemleri döndürür
  - Imagick::radialBlurImage — Görüntüye dairesel bulanıklık uygular
  - Imagick::raiseImage — 3 boyutlu düğme benzeri bir etki oluşturur
  - Imagick::randomThresholdImage — Yüksek zıtlığa sahip iki renkli görüntü oluşturur
  - Imagick::readImage — Görüntüyü dosyadar okur
  - Imagick::readImageBlob — Görüntüyü ikil bir dizgeden okur
  - Imagick::readImageFile — Görüntüyü akımdan okur
  - Imagick::readimages — Reads image from an array of filenames
  - Imagick::recolorImage — Görüntüyü yeniden renklendirir
  - Imagick::reduceNoiseImage — Görüntünün dış hatlarını yumuşatır
  - Imagick::remapImage — Remaps image colors
  - Imagick::removeImage — Görüntü kümesinden görüntü siler
  - Imagick::removeImageProfile — İsimli görüntü profilini silip döndürür
  - Imagick::render — Evvelce verilmiş tüm çizim komutlarını uygular
  - Imagick::resampleImage — Belirtilen çözünürlüğe göre görüntüyü yeniden örnekler
  - Imagick::resetImagePage — Görüntü sayfasını sıfırlar
  - Imagick::resizeImage — Görüntüyü boyutlandırır
  - Imagick::rollImage — Görüntünün başlangıç noktasını tanımlar
  - Imagick::rotateImage — Görüntüyü döndürür
  - Imagick::rotationalBlurImage — Rotational blurs an image
  - Imagick::roundCorners — Görüntünün köşelerini yuvarlatır
  - Imagick::sampleImage — Görüntüyü piksel örneklemeyle oranlar
  - Imagick::scaleImage — Görüntünün enboy oranını ayarlar
  - Imagick::segmentImage — Segments an image
  - Imagick::selectiveBlurImage — Selectively blur an image within a contrast threshold
  - Imagick::separateImageChannel — Görüntüden bir kanalı ayırır
  - Imagick::sepiaToneImage — Görüntüye kızıl kahverengi tonlama uygular
  - Imagick::setBackgroundColor — Nesnenin öntanımlı artalan rengini tanımlar
  - Imagick::setColorspace — Set colorspace
  - Imagick::setCompression — Nesnenin öntanımlı sıkıştırma türünü tanımlar
  - Imagick::setCompressionQuality — Nesnenin öntanımlı sıkıştırma seviyesini tanımlar
  - Imagick::setFilename — Görüntüye dosya ismi tanımlar
  - Imagick::setFirstIterator — Imagick yineleyiciyi ilk görüntüye konumlar
  - Imagick::setFont — Imagick nesnesinin yazı tipini tanımlar
  - Imagick::setFormat — Imagick nesnesinin biçemini tanımlar
  - Imagick::setGravity — Sets the gravity
  - Imagick::setImage — Nesnedeki görüntüyü değiştirir
  - Imagick::setImageAlphaChannel — Görüntünün şeffaflık kanalını tanımlar
  - Imagick::setImageArtifact — Set image artifact
  - Imagick::setImageAttribute — Sets an image attribute
  - Imagick::setImageBackgroundColor — Görüntünün artalan rengini tanımlar
  - Imagick::setImageBias — Görüntüyü evriştirmekte kullanılan yöntem için görüntü sapmasını tanımlar
  - Imagick::setImageBiasQuantum — Sets the image bias
  - Imagick::setImageBluePrimary — Görüntünün renk bileşenlerinden birincil mavi noktasını tanımlar
  - Imagick::setImageBorderColor — Görüntünün çerçeve rengini tanımlar
  - Imagick::setImageChannelDepth — Belli bir görüntü kanalının derinliğini tanımlar
  - Imagick::setImageClipMask — Görüntü kırpma maskesini tanımlar
  - Imagick::setImageColormapColor — Renk eşlemi indisi belirtilen rengi tanımlar
  - Imagick::setImageColorspace — Görüntünün renk uzayını tanımlar
  - Imagick::setImageCompose — Görüntü birleştirme işlecini tanımlar
  - Imagick::setImageCompression — Görüntü sıkıştırma seviyesini tanımlar
  - Imagick::setImageCompressionQuality — Görüntü sıkıştırma seviyesini belirler
  - Imagick::setImageDelay — Görüntü gecikmesini tanımlar
  - Imagick::setImageDepth — Görüntü derinliğini tanımlar
  - Imagick::setImageDispose — Görüntünün elden çıkarma yöntemini tanımlar
  - Imagick::setImageExtent — Görüntünün boyutlarını tanımlar
  - Imagick::setImageFilename — Belli bir görüntünün dosya ismini tanımlar
  - Imagick::setImageFormat — Belli bir görüntünün biçemini tanımlar
  - Imagick::setImageGamma — Görüntünün gammasını tanımlar
  - Imagick::setImageGravity — Sets the image gravity
  - Imagick::setImageGreenPrimary — Görüntünün renk bileşenlerinden birincil yeşil noktayı tanımlar
  - Imagick::setImageIndex — Yineleyici konumunu tanımlar
  - Imagick::setImageInterlaceScheme — Görüntü geçişim şemasını tanımlar
  - Imagick::setImageInterpolateMethod — Görüntünün aradeğer pikseli yöntemini tanımlar
  - Imagick::setImageIterations — Görüntü yineleme sayısını tanımlar
  - Imagick::setImageMatte — Görüntünün matlık kanalını ayarlar
  - Imagick::setImageMatteColor — Görüntünün şeffaf rengini tanımlar
  - Imagick::setImageOpacity — Görüntünün matlık seviyesini tanımlar
  - Imagick::setImageOrientation — Görüntünün baskı yönünü tanımlar
  - Imagick::setImagePage — Görüntünün sayfa geometrisini tanımlar
  - Imagick::setImageProfile — Imagick nesnesine isimli bir profil ekler
  - Imagick::setImageProperty — Bir görüntü özelliğini tanımlar
  - Imagick::setImageRedPrimary — Görüntünün renk bileşenlerinden birincil kırmızı noktayı tanımlar
  - Imagick::setImageRenderingIntent — Görüntüye komutların uygulanış tarzını belirler
  - Imagick::setImageResolution — Görüntünün çözünürlüğünü ayarlar
  - Imagick::setImageScene — Görüntünün dekorunu tanımlar
  - Imagick::setImageTicksPerSecond — Canlandırma hızını değiştirir
  - Imagick::setImageType — Görüntü türünü tanımlar
  - Imagick::setImageUnits — Görüntünün çözünürlük birimlerini tanımlar
  - Imagick::setImageVirtualPixelMethod — Görüntünün sanal piksel yöntemini tanımlar
  - Imagick::setImageWhitePoint — Renk berraklığının beyaz noktasını tanımlar
  - Imagick::setInterlaceScheme — Görüntü geçişim şemasını tanımlar
  - Imagick::setIteratorIndex — Yineleyici konumunu belirler
  - Imagick::setLastIterator — Son görüntüye bir Imagick yineleyicisi atar
  - Imagick::setOption — Bir seçenek tanımlar
  - Imagick::setPage — Imagick nesnesinin sayfa geometrisini tanımlar
  - Imagick::setPointSize — Yazı puntosunu belirler
  - Imagick::setProgressMonitor — Set a callback to be called during processing
  - Imagick::setRegistry — Sets the ImageMagick registry entry named key to value
  - Imagick::setResolution — Görüntü çözünürlüğünü tanımlar
  - Imagick::setResourceLimit — Belli bir özkaynağa sınır tanımlar
  - Imagick::setSamplingFactors — Görüntü örnekleme çarpanlarını ayarlar
  - Imagick::setSize — Imagick nesnesinin boyutlarını ayarlar
  - Imagick::setSizeOffset — Imagick nesnesinin başlangıcını ve boyutlarını ayarlar
  - Imagick::setType — Görüntünün tür özniteliğini tanımlar
  - Imagick::shadeImage — Üç boyutluluk etkisi oluşturur
  - Imagick::shadowImage — Görüntüde gölgeleri taklit eder
  - Imagick::sharpenImage — Görüntüyü netleştirir
  - Imagick::shaveImage — Görüntünün kenarındaki pikselleri rendeler
  - Imagick::shearImage — Bir paralalkenar oluşturur
  - Imagick::sigmoidalContrastImage — Bir resmin zıtlığını ayarlar
  - Imagick::sketchImage — Kara kalem çalışmasını taklit eder
  - Imagick::smushImages — Takes all images from the current image pointer to the end of the image list and smushs them
  - Imagick::solarizeImage — Görüntüye uzun pozlama etkisi uygular
  - Imagick::sparseColorImage — Interpolates colors
  - Imagick::spliceImage — Görüntüye düz bir renk ekler
  - Imagick::spreadImage — Bir kümedeki her pikseli rasgele gösterir
  - Imagick::statisticImage — Modifies image using a statistics function
  - Imagick::steganoImage — Görüntünün içine sayısal bir filigran gizler
  - Imagick::stereoImage — İki görüntüyü birleştirir
  - Imagick::stripImage — Görüntüden tüm profilleri ve açıklamaları ayıklar
  - Imagick::subImageMatch — Searches for a subimage in the current image and returns a similarity image
  - Imagick::swirlImage — Görüntünün merkezine yakın pikselleri girdap gibi döndürür
  - Imagick::textureImage — Doku görüntüsünü yatay ve düşeyde yineler
  - Imagick::thresholdImage — Bazı pikselleri belli bir eşiğe göre değiştir
  - Imagick::thumbnailImage — Görüntünün boyutlarını değiştirir
  - Imagick::tintImage — Görüntüdeki her piksele bir renk yöneyi uygular
  - Imagick::__toString — Returns the image as a string
  - Imagick::transformImage — Budama miktarını ve görüntü geometrisini ayarlamanın uygun yolu
  - Imagick::transformImageColorspace — Transforms an image to a new colorspace
  - Imagick::transparentPaintImage — Pikselleri şeffaflaştırır
  - Imagick::transposeImage — Görüntünün düşeydeki yansımasını oluşturur
  - Imagick::transverseImage — Görüntünün yataydaki yansımasını oluşturur
  - Imagick::trimImage — Görüntünün kenarlarını siler
  - Imagick::uniqueImageColors — Biri dışında tüm piksel renklerini iptal eder
  - Imagick::unsharpMaskImage — Görüntüyü netleştirir
  - Imagick::valid — Imagick nesnesinin geçerli olup olmadığını sınar
  - Imagick::vignetteImage — Görüntüye bir nakış süzgeci uygular
  - Imagick::waveImage — Görüntüye bir dalga süzgeci uygular
  - Imagick::whiteThresholdImage — Eşiğin üstündeki tüm piksellerin rengini beyaza zorlar
  - Imagick::writeImage — Görüntüyü belirtilen dosyaya yazar
  - Imagick::writeImageFile — Bir görüntüyü belirtilen dosya tanıtıcısına yazar
  - Imagick::writeImages — Bir görüntüyü veya görüntü kümesini dosyaya yazar
  - Imagick::writeImagesFile — Görüntü karelerini bir dosya tanıtıcısına yazar
- ImagickDraw — ImagickDraw sınıfı
  - ImagickDraw::affine — Geçerli homojen koordinatlar matrisini ayarlar
  - ImagickDraw::annotation — Görüntünün üzerine bir metin çizer
  - ImagickDraw::arc — Bir yay çizer
  - ImagickDraw::bezier — Bir Bezier eğrisi çizer
  - ImagickDraw::circle — Bir daire çizer
  - ImagickDraw::clear — ImagickDraw nesnesini temizler
  - ImagickDraw::clone — Belirtilen ImagickDraw nesnesinin tam bir kopyasını yapar
  - ImagickDraw::color — Bir görüntüyü boyar
  - ImagickDraw::comment — Bir yöney çıktı akımına bir açıklama ekler
  - ImagickDraw::composite — Bir görüntüyü geçerli görüntüyle bileştirir
  - ImagickDraw::__construct — ImagickDraw kurucusu
  - ImagickDraw::destroy — ImagickDraw yıkıcısı
  - ImagickDraw::ellipse — Görüntünün üzerine bir elips çizer
  - ImagickDraw::getClipPath — Geçerli yalıtım maskesi kimliğini döndürür
  - ImagickDraw::getClipRule — Yalıtım maskesi tarafından kullanılan çokgen dolgu kuralını döndürür
  - ImagickDraw::getClipUnits — Yalıtım maskesi birimlerinin yorumunu döndürür
  - ImagickDraw::getFillColor — Dolgu rengini döndürür
  - ImagickDraw::getFillOpacity — Çizimde kullanılan matlık değerini döndürür
  - ImagickDraw::getFillRule — Geçerli dolgu kuralını döndürür
  - ImagickDraw::getFont — Geçerli yazı tipini döndürür
  - ImagickDraw::getFontFamily — Yazı tipi ailesini döndürür
  - ImagickDraw::getFontSize — Yazı tipi yüksekliğini döndürür
  - ImagickDraw::getFontStretch — Gets the font stretch to use when annotating with text
  - ImagickDraw::getFontStyle — Yazı tipi tarzını döndürür
  - ImagickDraw::getFontWeight — Yazı tipi kalınlığını döndürür
  - ImagickDraw::getGravity — Metnin çekim yönünü döndürür
  - ImagickDraw::getStrokeAntialias — Nesne dış hatlarını çizmekte kullanılan vurgu yumuşatması ayarını döndürür
  - ImagickDraw::getStrokeColor — Nesne dış hatlarını çizmekte kullanılan vurgunun rengini döndürür
  - ImagickDraw::getStrokeDashArray — Kesikli çizgi örüntüsünü oluşturmakta kullanılan tireleri ve boşlukları içeren bir dizi döndürür
  - ImagickDraw::getStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını döndürür
  - ImagickDraw::getStrokeLineCap — Kalın çizgilerdeki çizgi uçlarının şeklini döndürür
  - ImagickDraw::getStrokeLineJoin — Kalın çizgi ekleminin şeklini döndürür
  - ImagickDraw::getStrokeMiterLimit — Gönyenin kesildiği sınırı döndürür
  - ImagickDraw::getStrokeOpacity — Nesne dış hatlarını çizmekte kullanılan vurgunun matlığını döndürür
  - ImagickDraw::getStrokeWidth — Nesne dış hatlarını çizmekte kullanılan vurgu genişliğini döndürür
  - ImagickDraw::getTextAlignment — Metin hizalamasını döndürür
  - ImagickDraw::getTextAntialias — Geçerli metin yumuşatma ayarını döndürür
  - ImagickDraw::getTextDecoration — Metin süslemesi türünü döndürür
  - ImagickDraw::getTextEncoding — Metin çizerken kullanılan karakter kümesi ismini döndürür
  - ImagickDraw::getTextInterlineSpacing — Gets the text interline spacing
  - ImagickDraw::getTextInterwordSpacing — Gets the text interword spacing
  - ImagickDraw::getTextKerning — Gets the text kerning
  - ImagickDraw::getTextUnderColor — Metin artalanındaki rengi döndürür
  - ImagickDraw::getVectorGraphics — Yöney çizgesini içeren bir dizge döner
  - ImagickDraw::line — Bir çizgi çizer
  - ImagickDraw::matte — Görüntünün matlık kanalını boyar
  - ImagickDraw::pathClose — Geçerli hatta son elemanı ekler
  - ImagickDraw::pathCurveToAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToQuadraticBezierAbsolute — İkinci dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToQuadraticBezierRelative — İkinci dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — İkinci dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — İkinci dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToRelative — Üçüncü dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToSmoothAbsolute — Üçüncü dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathCurveToSmoothRelative — Üçüncü dereceden bir Bezier eğrisi çizer
  - ImagickDraw::pathEllipticArcAbsolute — Eliptik bir yay çizer
  - ImagickDraw::pathEllipticArcRelative — Bir eliptik yay çizer
  - ImagickDraw::pathFinish — Geçerli hattı sonlandırır
  - ImagickDraw::pathLineToAbsolute — Bir hat elemanı çizer
  - ImagickDraw::pathLineToHorizontalAbsolute — Yatay bir hat elemanı çizer
  - ImagickDraw::pathLineToHorizontalRelative — Yatay bir hat elemanı çizer
  - ImagickDraw::pathLineToRelative — Bir hat elemanı çizer
  - ImagickDraw::pathLineToVerticalAbsolute — Düşey bir hat elemanı çizer
  - ImagickDraw::pathLineToVerticalRelative — Bir düşey hat elemanı çizer
  - ImagickDraw::pathMoveToAbsolute — Yeni bir hat elemanı başlatır
  - ImagickDraw::pathMoveToRelative — Yeni bir hat elemanı başlatır
  - ImagickDraw::pathStart — Bir hat çizim listesinin başlangıcını bildirir
  - ImagickDraw::point — Bir nokta çizer
  - ImagickDraw::polygon — Bir çokgen çizer
  - ImagickDraw::polyline — Bir çoklu çizgi çizer
  - ImagickDraw::pop — Yığıttaki geçerli ImagickDraw nesnesini silip sonraki nesneyi döndürür
  - ImagickDraw::popClipPath — Bir yalıtım maskesi tanımını sonlandırır
  - ImagickDraw::popDefs — Bir tanım listesini sonlandırır
  - ImagickDraw::popPattern — Bir örüntü tanımını sonlandırır
  - ImagickDraw::push — Geçerli ImagickDraw nesnesini kopyalar ve yığıta basar
  - ImagickDraw::pushClipPath — Bir yalıtım maskesi tanımı başlatır
  - ImagickDraw::pushDefs — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popDefs yöntemi çağrılıncaya kadar isimli elemanları tanımlayacağını belirtir
  - ImagickDraw::pushPattern — Bundan sonra çağrılacak yöntemlerin ImagickDraw::popPattern yöntemi çağrılıncaya kadar bir isimli örüntüyü tanımlayacağını belirtir
  - ImagickDraw::rectangle — Bir dikdörtgen çizer
  - ImagickDraw::render — Evvelce verilmiş tüm çizim komutlarını resme uygular
  - ImagickDraw::resetVectorGraphics — Resets the vector graphics
  - ImagickDraw::rotate — Geçerli koordinat sistemini belirtilen açıda döndürür
  - ImagickDraw::roundRectangle — Köşeleri yuvarlatılmış bir dikdörtgen çizer
  - ImagickDraw::scale — Enboy oranını ayarlar
  - ImagickDraw::setClipPath — Bir isimli yalıtım maskesini resimle ilişkilendirir
  - ImagickDraw::setClipRule — Yalıtım maskesi tarafından kullanılacak çokgen dolgu kuralını belirler
  - ImagickDraw::setClipUnits — Yalıtım maskesi birimlerinin yorumunu belirler
  - ImagickDraw::setFillAlpha — Dolgu dokusu veya dolgu rengi için kullanılacak şeffaflığı belirler
  - ImagickDraw::setFillColor — Dolgulu nesnelerin çiziminde kullanılacak dolgu rengini belirler
  - ImagickDraw::setFillOpacity — Dolgu dokusu veya dolgu rengi için kullanılacak matlığı belirler
  - ImagickDraw::setFillPatternURL — Nesne dolgu örüntüsü için kullanılacak adresi belirler
  - ImagickDraw::setFillRule — Çokgen çizerken kullanılacak dolgu kuralını belirler
  - ImagickDraw::setFont — Metni çizerken kullanılacak yazı tipini tam belirtimiyle belirler
  - ImagickDraw::setFontFamily — Yazı tipi ailesini belirler
  - ImagickDraw::setFontSize — Yazı tipi yüksekliğini belirler
  - ImagickDraw::setFontStretch — Yazı tipinin karakter genişliğini belirler
  - ImagickDraw::setFontStyle — Yazı tipi tarzını belirler
  - ImagickDraw::setFontWeight — Yazı tipi kalınlığını belirler
  - ImagickDraw::setGravity — Metnin çekim yönünü belirler
  - ImagickDraw::setResolution — Sets the resolution
  - ImagickDraw::setStrokeAlpha — Vurgulu nesne dış hatlarının şeffaflığını tanımlar
  - ImagickDraw::setStrokeAntialias — Vurgulu dış hatlara kenar yumuşatma uygulanıp uygulanmayacağını denetler
  - ImagickDraw::setStrokeColor — Nesne dış hatlarını vurgulamakta kullanılacak rengi tanımlar
  - ImagickDraw::setStrokeDashArray — Kesikli çizgi örüntüsünde tireleri ve boşlukları belirler
  - ImagickDraw::setStrokeDashOffset — Kesikli çizgi örüntüsünde tire başlangıcını belirler
  - ImagickDraw::setStrokeLineCap — Kalın çizgilerde çizgi uçlarının şeklini belirler
  - ImagickDraw::setStrokeLineJoin — Kalın çizgi ekleminin şeklini belirler
  - ImagickDraw::setStrokeMiterLimit — Gönyenin kesildiği sınırı tanımlar
  - ImagickDraw::setStrokeOpacity — Vurgulanmış nesne dış hatlarının matlığını tanımlar
  - ImagickDraw::setStrokePatternURL — Nesne dış hatlarının çiziminde kullanılacak örüntüyü tanımlar
  - ImagickDraw::setStrokeWidth — Nesne dış hatlarının çiziminde kullanılacak çizgi genişliğini tanımlar
  - ImagickDraw::setTextAlignment — Metni hizalar
  - ImagickDraw::setTextAntialias — Metne kenar yumuşatma uygulanıp uygulanmayacağını denetler
  - ImagickDraw::setTextDecoration — Bir karakter süslemesi tanımlar
  - ImagickDraw::setTextEncoding — Metin karakter kümesini tanımlar
  - ImagickDraw::setTextInterlineSpacing — Sets the text interline spacing
  - ImagickDraw::setTextInterwordSpacing — Sets the text interword spacing
  - ImagickDraw::setTextKerning — Sets the text kerning
  - ImagickDraw::setTextUnderColor — Metin çerçevesinin artalan rengini tanımlar
  - ImagickDraw::setVectorGraphics — Yöney çizgesini tanımlar
  - ImagickDraw::setViewbox — Tuval boyutunu uçtan uca tanımlar
  - ImagickDraw::skewX — Geçerli koordinat sistemini yatayda belirtilen açıda eğer
  - ImagickDraw::skewY — Geçerli koordinat sistemini düşeyde belirtilen açıda eğer
  - ImagickDraw::translate — Geçerli koordinat sisteminin başnoktasını değiştirir
- ImagickDrawException — The ImagickDrawException class
- ImagickException — The ImagickException class
- ImagickKernel — ImagickKernel sınıfı
  - ImagickKernel::addKernel — Attach another kernel to a kernel list
  - ImagickKernel::addUnityKernel — Adds a Unity Kernel to the kernel list
  - ImagickKernel::fromBuiltIn — Create a kernel from a builtin in kernel
  - ImagickKernel::fromMatrix — Create a kernel from a 2d matrix of values
  - ImagickKernel::getMatrix — Get the 2d matrix of values used in this kernel
  - ImagickKernel::scale — Scales a kernel list by the given amount
  - ImagickKernel::separate — Separates a linked set of kernels and returns an array of ImagickKernels
- ImagickKernelException — ImagickKernelException sınıfı
- ImagickPixel — ImagickPixel sınıfı
  - ImagickPixel::clear — Nesne ile ilişkili özkaynakları temizler
  - ImagickPixel::__construct — ImagickPixel nesnesini oluşturur
  - ImagickPixel::destroy — Nesne ile ilgili özkaynakları serbest bırakır
  - ImagickPixel::getColor — Bir renk döndürür
  - ImagickPixel::getColorAsString — Rengi bir dizge olarak döndürür
  - ImagickPixel::getColorCount — Nesnenin renk sayısını döndürür
  - ImagickPixel::getColorQuantum — Returns the color of the pixel in an array as Quantum values
  - ImagickPixel::getColorValue — Belirtilen renk kanalının normalleştirilmiş değerini döndürür
  - ImagickPixel::getColorValueQuantum — Gets the quantum value of a color in the ImagickPixel
  - ImagickPixel::getHSL — ImagickPixel nesnesinin normalleştirilmiş HSL rengini döndürür
  - ImagickPixel::getIndex — Gets the colormap index of the pixel wand
  - ImagickPixel::isPixelSimilar — Check the distance between this color and another
  - ImagickPixel::isPixelSimilarQuantum — Returns whether two colors differ by less than the specified distance
  - ImagickPixel::isSimilar — İki renk arasındaki benzerliği hesaplar
  - ImagickPixel::setColor — Renk tanımlar
  - ImagickPixel::setColorCount — Sets the color count associated with this color
  - ImagickPixel::setColorValue — Renk kanallarından birinin normalleştirilmiş değerini belirler
  - ImagickPixel::setColorValueQuantum — Sets the quantum value of a color element of the ImagickPixel
  - ImagickPixel::setHSL — Normalleştirilmiş HSL rengini ayarlar
  - ImagickPixel::setIndex — Sets the colormap index of the pixel wand
- ImagickPixelException — The ImagickPixelException class
- ImagickPixelIterator — ImagickPixelIterator sınıfı
  - ImagickPixelIterator::clear — Piksel yineleyici ile ilişkili özkaynakları temizler
  - ImagickPixelIterator::__construct — Bir ImagickPixelIterator nesnesi oluşturur
  - ImagickPixelIterator::destroy — Piksel yineleyici ile ilişkili özkaynakları serbest bırakır
  - ImagickPixelIterator::getCurrentIteratorRow — Piksel yineleyicinin üzerinde bulunduğu ImagickPixel nesneleri satırını döndürür
  - ImagickPixelIterator::getIteratorRow — Piksel yineleyicinin üzerinde bulunduğu satırın numarasını döndürür
  - ImagickPixelIterator::getNextIteratorRow — Piksel yineleyicinin sonraki satırını döndürür
  - ImagickPixelIterator::getPreviousIteratorRow — Önceki satırı döndürür
  - ImagickPixelIterator::newPixelIterator — Yeni bir piksel yineleyici döndürür
  - ImagickPixelIterator::newPixelRegionIterator — Yeni bir bölgesel piksel yineleyicisi döndürür
  - ImagickPixelIterator::resetIterator — Piksel yineleyiciyi sıfırlar
  - ImagickPixelIterator::setIteratorFirstRow — Piksel yineleyiciyi ilk piksel satırına hizalar
  - ImagickPixelIterator::setIteratorLastRow — Piksel yineleyiciyi son piksel satırına hizalar
  - ImagickPixelIterator::setIteratorRow — Piksel yineleyiciyi satırını tanımlar
  - ImagickPixelIterator::syncIterator — Piksel yineleyiciyi eşzamanlar
- ImagickPixelIteratorException — The ImagickPixelIteratorException class

- Exif — Değiş Tokuş Edilebilir Görüntü Bilgileri
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Exif İşlevleri
- GD — Görüntü İşleme ve GD
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - GD ve Görüntü İşlevleri
  - GdImage — GdImage sınıfı
  - GdFont — GdFont sınıfı
- Gmagick
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Gmagick — The Gmagick class
  - GmagickDraw — The GmagickDraw class
  - GmagickPixel — The GmagickPixel class
- ImageMagick — Görüntü İşleme (ImageMagick)
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - Imagick — Imagick sınıfı
  - ImagickDraw — ImagickDraw sınıfı
  - ImagickDrawException — The ImagickDrawException class
  - ImagickException — The ImagickException class
  - ImagickKernel — ImagickKernel sınıfı
  - ImagickKernelException — ImagickKernelException sınıfı
  - ImagickPixel — ImagickPixel sınıfı
  - ImagickPixelException — The ImagickPixelException class
  - ImagickPixelIterator — ImagickPixelIterator sınıfı
  - ImagickPixelIteratorException — The ImagickPixelIteratorException class

# Postayla İlgili Eklentiler

# IMAP, POP3 ve NNTP

# Giriş

Bu işlevler sayesinde sadece IMAP protokolü ile değil NNTP, POP3 ve yerel posta kutusu erişim yöntemleri ile de çalışabilirsiniz.

Bununla birlikte, bazı IMAP işlevlerinin POP protokolü ile düzgün çalışmayacağını bilmenizde yarar var.

Uyarı

IMAP eklentisi evreli çalışmada güvenilir değildir; ZTS etkin derlemelerle kullanılmamalıdır.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Gereksinimler

Bu eklenti, sisteminizde c-client kütüphanesinin kurulu olmasını gerektirir. En son sürümünü » https://github.com/uw-imap/imap adresinden indirip kurabilirsiniz.

IMAP kaynak dosyalarının doğrudan sistemin include/ dizinine kopyalanmaması büyük önem taşır, aksi takdirde orada bazı sorunlar çıkabilir. En iyisi sistemde /usr/local/imap-2000b/ gibi yeni bir dizin oluşturup (yeri ve adı kullandığınız IMAP sürümüne bağlıdır) içine lib/ ve include/ gibi yeni dizinler açmaktır. IMAP kaynak ağacınızın c-client dizinindeki tüm *.h dosyalarını include/ altına ve tüm *.c dosyalarını lib/ altına kopyalayın. Buna ek olarak IMAP'ı derlerken c-client.a diye bir dosya oluşturulur. Bu dosyayı da lib/ dizininin altına koyup adını libc-client.a olarak değiştirin.

> Bilginize:

> c-client kütüphanesinin SSL ve/veya Kerberos destekli olmasını isterseniz paket ile birlikte gelen belgeleri okuyun.

## Kurulum

Bu işlevlerin çalışması için PHP'yi --with-imap[=DiZiN] seçeneği ile derlemelisiniz. Buradaki DiZiN c-client kurulumunun yapıldığı ana dizindir (PREFIX). Örneğimizde olduğu gibi --with- imap=/usr/local/imap-2000b seçeneğini kullanmalısınız. Bu konum, yukarıda açıklanan DiZiNe bağlı olarak değişiklik gösterebilir. Windows kullanıcılarının php_imap.dll DLL'ini php.ini dosyasına dahil etmeleri gerekebilir.

> Bilginize: C-client kütüphanesinin yapılandırmasına bağlı olarak PHP yapılandırma seçeneklerine --with-imap-ssl=/bir/yol/openssl/ ve/veya --with-kerberos=/bir/yol/kerberos seçeneğini eklemeniz gerekebilir.

Uyarı

IMAP eklentisi evreli çalışmada güvenilir değildir; ZTS etkin derlemelerle kullanılmamalıdır.

Uyarı

IMAP, recode ve YAZ eklentileri, aynı dahili simgeleri paylaştıklarından birlikte kullanılamazlar. Bilgi: Yaz 2.0 ve sonrası bu sorundan etkilenmemektedir.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

IMAP Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
imap.enable_insecure_rsh | "0" | `INI_SYSTEM` | PHP 7.1.25, 7.2.13, 7.3.0 sürümlerinde geçerlidir. Evvelce örtük olarak etkindi.

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`imap.enable_insecure_rsh` bool

  Bu php.ini seçeneği etkin olduğu sürece sunucuya kurulan her bağlantı rsh veya ssh komutunu çalıştırabilir.

  Uyarı

  rsh veya ssh komutuna bunları aktarmadan önce posta kutusu isimlerini ne PHP ne de IMAP kütüphanesi süzer. Bu bakımdan, bu php.ini seçeneğini iptal etmeden bu işleve güvenilir olmayan verinin aktarılması güvenli değildir.

## Özkaynak Türleri

PHP 8.1.0'dan önce, bu eklentide açık bir IMAP akımının tanıtıcısı olarak, imap_open() tarafından döndürülen bir `imap` özkaynağı kullanılıyordu.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`NIL` (int)
  PHP 8.1.0 ve sonrasında kullanımı önerilmiyor.
`OP_DEBUG` (int)
`OP_READONLY` (int)
  Open mailbox read-only
`OP_ANONYMOUS` (int)
  Haberler için bir .newsrc kullanmayın veya güncellemeyin (sadece NNTP için).
`OP_SHORTCACHE` (int)
`OP_SILENT` (int)
`OP_PROTOTYPE` (int)
`OP_HALFOPEN` (int)
  IMAP ve NNTP isimleri için bir posta kutusu değil bir bağlantı açılır.
`OP_EXPUNGE` (int)
`OP_SECURE` (int)
`CL_EXPUNGE` (int)
  imap_close() çağrıldığında kapatmadan önce posta kutusu sessizce silinir.
`FT_UID` (int)
  Bağımsız değişken bir kullanıcı kimliğidir.
`FT_PEEK` (int)
  Zaten varsa `\Seen` seçeneği tekrar atanmaz.
`FT_NOT` (int)
`FT_INTERNAL` (int)
  Dönen dizge dahili biçemde olur, CRLF ile meşrulaştırılmaz.
`FT_PREFETCHTEXT` (int)
`ST_UID` (int)
  Sıralama bağımsız değişkeni sıra numaraları yerine kullanıcı kimliklerini içerir.
`ST_SILENT` (int)
`ST_SET` (int)
`CP_UID` (int)
  Sıra numaraları kullanıcı kimliklerini içerir.
`CP_MOVE` (int)
  imap_mail_copy() ile kopyalandıktan sonra geçerli posta kutusundaki iletiler silinir.
`SE_UID` (int)
  Sıra numaraları yerine kullanıcı kimlikleri döndürülür.
`SE_FREE` (int)
`SE_NOPREFETCH` (int)
  Aranan iletiler önce alınıp sonra aranmaz.
`SO_FREE` (int)
`SO_NOSERVER` (int)
`SA_MESSAGES` (int)
`SA_RECENT` (int)
`SA_UNSEEN` (int)
`SA_UIDNEXT` (int)
`SA_UIDVALIDITY` (int)
`SA_ALL` (int)
`LATT_NOINFERIORS` (int)
  Bu posta kutusunun "çocukları" yoktur (altında başka posta kutusu yoktur).
`LATT_NOSELECT` (int)
  Bu bir posta kutusu değil sadece bir taşıyıcıdır - bu yüzden onu açamazsınız.
`LATT_MARKED` (int)
  Posta kutusu imlenmiş. Sadece UW-IMAPD tarafından kullanılır.
`LATT_UNMARKED` (int)
  Posta kutusu imlenmemiş. Sadece UW-IMAPD tarafından kullanılır.
`LATT_REFERRAL` (int)
  Bu kapsayıcının uzak posta kutusuna yönlendirmesi var.
`LATT_HASCHILDREN` (int)
  Bu posta kutusunun seçilebilir alt seviyeleri var.
`LATT_HASNOCHILDREN` (int)
  Bu posta kutusunun seçilebilir alt seviyeleri yok.
`SORTDATE` (int)
  imap_sort() için sıralama kuralı: İleti tarihi.
`SORTARRIVAL` (int)
  imap_sort() için sıralama kuralı: Geliş tarihi.
`SORTFROM` (int)
  imap_sort() için sıralama kuralı: İlk Kimden adresindeki posta kutusu.
`SORTSUBJECT` (int)
  imap_sort() için sıralama kuralı: İleti konusu
`SORTTO` (int)
  imap_sort() için sıralama kuralı: İlk Kime adresindeki posta kutusu.
`SORTCC` (int)
  imap_sort() için sıralama kuralı: İlk karbon kopya adresindeki posta kutusu.
`SORTSIZE` (int)
  imap_sort() için sıralama kuralı: Sekizlik olarak ileti uzunluğu.
`TYPETEXT` (int)
  Birincil gövde türü: biçimlendirilmemiş metin
`TYPEMULTIPART` (int)
  Birincil gövde türü: çoklu bölüm
`TYPEMESSAGE` (int)
  Birincil gövde türü: sarmalanmış ileti
`TYPEAPPLICATION` (int)
  Birincil gövde türü: uygulama verisi
`TYPEAUDIO` (int)
  Birincil gövde türü: ses
`TYPEIMAGE` (int)
  Birincil gövde türü: sabit resim
`TYPEVIDEO` (int)
  Birincil gövde türü: video
`TYPEMODEL` (int)
  Birincil gövde türü: model
`TYPEOTHER` (int)
  Birincil gövde türü: bilinmiyor
`ENC7BIT` (int)
  Gövde kodlaması: 7 bit SMTP semantik veri
`ENC8BIT` (int)
  Gövde kodlaması: 7 bit SMTP semantik veri
`ENCBINARY` (int)
  Gövde kodlaması: 8 bit ikil veri
`ENCBASE64` (int)
  Gövde kodlaması: base-64 kodlu veri
`ENCQUOTEDPRINTABLE` (int)
  Gövde kodlaması: insan tarafından okunabilir 8'e 7 bit veri
`ENCOTHER` (int)
  Gövde kodlaması: bilinmiyor
`IMAP_OPENTIMEOUT` (int)
`IMAP_READTIMEOUT` (int)
`IMAP_WRITETIMEOUT` (int)
`IMAP_CLOSETIMEOUT` (int)
`IMAP_GC_ELT` (int)
  Çöp toplayıcı; ileti önbellek elemanlarını temizler.
`IMAP_GC_ENV` (int)
  Çöp toplayıcı; zarfları ve ileti gövdelerini temizler.
`IMAP_GC_TEXTS` (int)
  Çöp toplayıcı; metinleri temizler.

# IMAP İşlevleri

# Ayrıca Bakınız

Bu belgede bulunan işlev açıklamalarında tüm ayrıntılara yer verilememiştir. Bu bilgileri c-client kütüphanesinin belgelerinden ve aşağıdaki RFC'lerden edinebilirsiniz:

- » RFC2821: `Simple Mail Transfer Protocol` (SMTP) - Basit dosya Aktarım Protokolü.
- » RFC2822: `Standard for ARPA internet text messages` - ARPA genel ağ metin iletileri standardı.
- » RFC2060: `Internet Message Access Protocol` (IMAP) Version 4rev1 - Genel ağ İleti Erişim Protokolü 4.1 sürümü.
- » RFC1939: `Post Office Protocol Version 3` (POP3) - Postane Protokolünün 3. sürümü.
- » RFC977: `Network News Transfer Protocol` (NNTP) - Ağ Haberleri Aktarım Protokolü.
- » RFC2076: `Common Internet Message Headers` - Genel Ağ Ortak İleti Başlıkları.
- » RFC2045, » RFC2046, » RFC2047, » RFC2048 ve » RFC2049: `Multipurpose Internet Mail Extensions` (MIME) - Çok Amaçlı Genel Ağ Posta Eklentileri.

Ayrıca, » `Programming Internet Email` - Genel Ağ Epostasını Programlamak (David Wood) ve » Managing IMAP - IMAP Yönetimi (Dianna Mullet & Kevin Mullet) kitaplarında ayrıntılı bir genel bakış mevcuttur.

# imap_8bit

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_8bit — 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür

### Açıklama

function imap_8bit(string `$dizge`): string|false

» RFC 2045'in 6.7. bölümüne uygun olarak 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür.

### Bağımsız Değişkenler

`dizge`

  Dönüştürülecek 8 bitlik dizge.

### Dönen Değerler

7 bitlik (quoted-printable) bir dizge, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_qprint() - Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür

# imap_alerts

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_alerts — Oluşan tüm IMAP uyarı iletilerini döndürür

### Açıklama

function imap_alerts(): array|false

Son imap_alerts() çağrısından beri veya sayfa isteğinin başından beri oluşan tüm uyarı iletilerini içeren bir dizi döndürür.

imap_alerts() çağrısı uyarı yığıtını temizler. IMAP belirtimi bu iletilerin kullanıcıya aktarılmasını gerektirir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Üretilmiş tüm uyarı iletilerini içeren bir dizi döner. Eğer hiç uyarı iletisi yoksa `false` döner.

### Ayrıca Bakınız

- imap_errors() - Oluşan tüm IMAP hatalarının iletilerini döndürür

# imap_append

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_append — Belirtilen posta kutusuna bir ileti ekler

### Açıklama

function imap_append(
IMAP\Connection `$imap`,
string `$dizin`,
string `$ileti`,
?string `$seçenekler` = `null`,
?string `$rfc2060_tarih` = `null`
): bool

Belirtilen `dizin`e bir `ileti` ekler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`dizin`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`ileti`

  Bir dizge olarak eklenecek ileti.

  Cyrus IMAP sunucusuna gönderirken, iletide satır sonu karakteri olarak "\n" değil "\r\n" kullanmalısınz, yoksa işlem başarısız olur.

`seçenekler`

  Belirtildiği takdirde `dizin`e bu seçenekler de yazılır.

`rfc2060_tarih`

  Bu bağımsız değişken belirtilmişse, ekli iletinin INTERNALDATE alanına atanır. Değer, RFC2060'a uygun bir tarih dizgesi olmalıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.
8.0.0 | `seçenekler` ve `rfc2060_tarih` artık `null` olabiliyor.

### Örnekler

Örnek 1 - imap_append() örneği

    <?php
    $imap = imap_open("{imap.example.org}INBOX.Drafts", "username", "password");

    $check = imap_check($imap);
    echo "Ekleme öncesi ileti sayısı: ". $check->Nmsgs . "\n";

    imap_append($imap, "{imap.example.org}INBOX.Drafts"
                       , "From: me@example.com\r\n"
                       . "To: you@example.com\r\n"
                       . "Subject: test\r\n"
                       . "\r\n"
                       . "Bu bir deneme iletisidir, lütfen yok sayın.\r\n"
                       );

    $check = imap_check($imap);
    echo "Ekleme sonrası ileti sayısı: ". $check->Nmsgs . "\n";

    imap_close($imap);
    ?>

# imap_base64

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_base64 — Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür

### Açıklama

function imap_base64(string `$dizge`): string|false

Base-64 kodlu `dizge` dizgesini 8 bitlik bir dizgeye dönüştürür.

### Bağımsız Değişkenler

`metin`

  Base64 kodlu metin.

### Dönen Değerler

8 bitlik bir dizge, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_binary() - 8 bitlik bir dizgeyi bir base64 dizgesine dönüştürür
- base64_encode() - Veriye MIME base64 kodlaması uygular
- base64_decode() - MIME base64 ile kodlanmış verinin kodunu açar
- » RFC2045, Bölüm 6.8

# imap_binary

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_binary — 8 bitlik bir dizgeyi bir base64 dizgesine dönüştürür

### Açıklama

function imap_binary(string `$dizge`): string|false

8 bitlik dizge, » RFC 2045'in 6.8. bölümüne uygun olarak bir base64 dizgesine dönüştürülür.

### Bağımsız Değişkenler

`dizge`

  8 bitlik dizge.

### Dönen Değerler

Base64 ile kodlanmış bir dizge, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_base64() - Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür

# imap_body

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_body — İleti gövdesini okur

### Açıklama

function imap_body(IMAP\Connection `$imap`, int `$ileti_num`, int `$seçenekler` = 0): string|false

`ileti_num` ile belirtilen iletinin gövdesini döndürür.

imap_body() işlevi ileti gövdesinin bire bir kopyasını döndürür. Çok parçalı MIME kodlu bir iletiden tek bir parçayı elde etmek için önce yapı imap_fetchstructure() ile incelenmeli sonra da gövdeden istenen bölüm imap_fetchbody()ile çıkarılmalıdır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`seçenekler`

  Şunlardan gerekenleri içeren bir bit maskesidir:

  - `FT_UID` - `ileti_num` bir eşsiz kimliktir.
  - `FT_PEEK` - `\Seen` imi tanımlıysa bir daha tanımlanmaz.
  - `FT_INTERNAL` - CRLF ile meşrulaştırılmamış olarak dizgeyi dahili biçemde döndürür.

### Dönen Değerler

Belirtilen iletinin gövdesi bir dizge olarak, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

# imap_bodystruct

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_bodystruct — Belirtilen iletinin bir gövde bölümünün yapısını okur

### Açıklama

function imap_bodystruct(IMAP\Connection `$imap`, int `$ileti_num`, string `$bölüm`): stdClass|false

Belirtilen iletinin `bölüm` ile belirtilen gövde bölümünün yapısını okur.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`bölüm`

  Okunacak gövde bölümü.

### Dönen Değerler

Bilgi bir nesne içinde döndürülür, başarısızlık durumunda `false` döner. Nesnenin yapısı ve özellikleri hakkında bilgi almak için imap_fetchstructure() işlevine bakınız.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_fetchstructure() - Belli bir iletinin yapısını okur

# imap_check

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_check — Posta kutusu bilgilerini döndürür

### Açıklama

function imap_check(IMAP\Connection `$imap`): stdClass|false

Posta kutusu bilgilerini döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Şu özelliklere sahip bir nesne döner:

- `Date` - » RFC 2822'ye uygun olarak biçemlenmiş sistem zamanı.
- `Driver` - Posta kutusuna erişirken kullanılan protokol: POP3, IMAP, NNTP
- `Mailbox` - Posta kutusunun ismi.
- `Nmsgs` - Posta kutusundaki ileti sayısı.
- `Recent` - Posta kutusuna son gelen ileti sayısı.

Başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_check() örneği

    <?php

    $imap = imap_check($imap_stream);
    var_dump($imap);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    object(stdClass)(5) {
      ["Date"]=>
      string(37) "Wed, 10 Dec 2003 17:56:54 +0100 (CET)"
      ["Driver"]=>
      string(4) "imap"
      ["Mailbox"]=>
      string(54)
      "{www.example.com:143/imap/user="foo@example.com"}INBOX"
      ["Nmsgs"]=>
      int(1)
      ["Recent"]=>
      int(0)
    }

# imap_clearflag_full

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_clearflag_full — İletilerdeki imleri temizler

### Açıklama

function imap_clearflag_full(
IMAP\Connection `$imap`,
string `$aralık`,
string `$imler`,
int `$seçenekler` = 0
): true

Belirtilen `aralık` içindeki iletilerden `imler` ile belirtilen imleri siler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`aralık`

  İleti numaraları aralığı. İstenen iletileri X,Y biçeminde sıralayabilir veya X:Y biçeminde bir aralık olarak belirtebilirsiniz.

`imler`

  » RFC 2060'ta belirtildiği gibi silinecek imleri "\\Seen" (okundu), "\\Answered" (yanıtlandı), "\\Flagged (imli)", "\\Deleted" (silindi), "\\Draft" (taslak) olarak belirtebilirsiniz.

`seçenekler`

  Şunlardan gerekenleri içeren bir bit maskesidir:

  - `ST_UID` - `aralık` bağımsız değişkeninin eşsiz kimlikleri içerdiği varsayılır.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

`seçenekler` geçersiz ise ValueError oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` geçersiz ise artık ValueError oluşuyor. Evvelce, bir uyarı verilir ve işlev `false` döndürürdü.
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_setflag_full() - İletileri imler

# imap_close

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_close — IMAP akımını kapatır

### Açıklama

function imap_close(IMAP\Connection `$imap`, int `$seçenekler` = 0): true

Belirtilen IMAP akımını kapatır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`seçenekler`

  Değer olarak `CL_EXPUNGE` belirtilirse, posta kutusu kapatılmadan önce silindi olarak imlenmiş iletiler posta kutusundan silinir. Bu işlevselliği imap_expunge() işleviyle de elde edebilirsiniz.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

`seçenekler` geçersiz ise ValueError oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` geçersiz ise artık ValueError oluşuyor. Evvelce, bir uyarı verilir ve işlev `false` döndürürdü.
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_open() - Belirtilen posta kutusuna yeni bir IMAP akımı açar

# imap_create

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_create — imap_createmailbox() işlevinin takma adıdır

### Açıklama

Bu işlev şu işlevin takma adıdır: imap_createmailbox().

# imap_createmailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_createmailbox — Yeni bir posta kutusu oluşturur

### Açıklama

function imap_createmailbox(IMAP\Connection `$imap`, string `$pk`): bool

`pk` ile belirtilen posta kutusunu oluşturur.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`pk`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız. Uluslararası karakterler içeren posta kutusu isimleri imap_utf7_encode() ile kodlanmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_createmailbox() örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
         or die("bağlanılamadı: " . imap_last_error());

    $name1 = "phpnewbox";
    $name2 = imap_utf7_encode("phpnewböx"); // phpnewb&w7Y-x

    $newname = $name1;

    echo "Yeni posta kutusu: '$name1'<br />\n";

    // Gelen kutusunda önce "phptestbox" adında yeni bir posta kutusu
    // oluşturacağız. Oluşturduktan sonra durumuna bakacağız ve son olarak
    // gelen kutusunu ilk haline getirmek için yeni posta kutusunu sileceğiz.

    if (@imap_createmailbox($mbox, imap_utf7_encode("{imap.example.org}INBOX.$newname"))) {
      $status = @imap_status($mbox, "{imap.example.org}INBOX.$newname", SA_ALL);
      if ($status) {
          echo "Yeni posta kutusu '$name1' ile ilgili durum:<br />\n";
          echo "İleti sayısı:         " . $status->messages    . "<br />\n";
          echo "Son gelen sayısı:     " . $status->recent      . "<br />\n";
          echo "Okunmamış sayısı:     " . $status->unseen      . "<br />\n";
          echo "Sonraki eşsiz kimlik: " . $status->uidnext     . "<br />\n";
          echo "Kimlik doğrulaması:   " . $status->uidvalidity . "<br />\n";

        if (imap_renamemailbox($mbox, "{imap.example.org}INBOX.$newname",
            "{imap.example.org}INBOX.$name2")) {
          echo "Yeni posta kutusunun ismi '$name1' iken '$name2' yapıldı<br />\n";
            $newname = $name2;
        } else {
            echo "imap_renamemailbox başarısız oldu: " .
              imap_last_error() . "<br />\n";
        }
      } else {
          echo "Yeni posta kutusunun durumuna bakılırken bir hata oluştu: " .
            imap_last_error() . "<br />\n";
      }

      if (@imap_deletemailbox($mbox, "{imap.example.org}INBOX.$newname")) {
          echo "Yeni posta kutusu silindi.<br />\n";
      } else {
          echo "Yeni posta kutusu için imap_deletemailbox başarısız oldu: " .
              implode("<br />\n", imap_errors()) . "<br />\n";
      }

    } else {
        echo "Yeni posta kutusu oluşturulamadı: " .
            implode("<br />\n", imap_errors()) . "<br />\n";
    }

    imap_close($mbox);
    ?>

### Ayrıca Bakınız

- imap_renamemailbox() - Posta kutusunun ismini değiştirir
- imap_deletemailbox() - Bir posta kutusunu siler

# imap_delete

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_delete — Belirtilen iletiyi silindi olarak imler

### Açıklama

function imap_delete(IMAP\Connection `$imap`, string `$ileti_num`, int `$seçenekler` = 0): true

`ileti_num` ile belirtilen iletileri silinmek üzere imler. Bu iletiler bir imap_expunge() çağrısına kadar veya `CL_EXPUNGE` seçeneği ile yapılan bir imap_close() çağrısına kadar posta kutusunda kalır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  IMAP4 tarzı aralık dizgesi biçeminde bir veya daha fazla ileti içeren bir dizge (`"n"`, `"n:m"` veya bunların virgüllerle ayrılmış birleşimleri).

`seçenekler`

  Bu bağımsız değişkende `FT_UID` sabiti belirtilirse `ileti_num` bağımsız değişkeninin eşsiz kimlikleri içerdiği varsayılır.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` geçersiz ise artık ValueError oluşuyor. Evvelce, bir uyarı verilir ve işlev `false` döndürürdü.
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_delete() örneği

    <?php

    $mbox = imap_open("{imap.example.org}INBOX", "username", "password")
        or die("bağlanılamadı: " . imap_last_error());

    $check = imap_mailboxmsginfo($mbox);
    echo "Silme imlemesi öncesi ileti sayısı: " . $check->Nmsgs . "<br />\n";

    imap_delete($mbox, 1);

    $check = imap_mailboxmsginfo($mbox);
    echo "Silme imlemesi sonrası ileti sayısı: " . $check->Nmsgs . "<br />\n";

    imap_expunge($mbox);

    $check = imap_mailboxmsginfo($mbox);
    echo "İletiler silindikten sonraki ileti sayısı: " .
          $check->Nmsgs . "<br />\n";

    imap_close($mbox);
    ?>

### Notlar

> Bilginize:

> IMAP posta kutuları bağlantılar arasında ileti imlerini saklamazlar. Bu nedenle silinmek üzere imlenmiş iletileri gerçekten silmek için imap_expunge() işlevini aynı oturumda kullanmalısınız.

### Ayrıca Bakınız

- imap_undelete() - Silindi diye imlenmiş bir iletinin imini kaldırır
- imap_expunge() - Silindi imli tüm iletileri gerçekten siler
- imap_close() - IMAP akımını kapatır

# imap_deletemailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_deletemailbox — Bir posta kutusunu siler

### Açıklama

function imap_deletemailbox(IMAP\Connection `$imap`, string `$pk`): bool

`pk` ile belirtilen posta kutusunu siler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`pk`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_createmailbox() - Yeni bir posta kutusu oluşturur
- imap_renamemailbox() - Posta kutusunun ismini değiştirir
- imap_open() - Belirtilen posta kutusuna yeni bir IMAP akımı açar

# imap_errors

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_errors — Oluşan tüm IMAP hatalarının iletilerini döndürür

### Açıklama

function imap_errors(): array|false

Hata yığıtı sıfırlandığından beri veya bu sayfa isteği sırasında oluşan tüm IMAP hatalarını döndürür.

imap_errors() çağrısı hata yığıtını temizler.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Son imap_errors() çağrısından beri veya sayfa isteğinin başından beri oluşan tüm hataların iletilerini içeren bir dizi döndürür. Döndürülecek hiç hata iletisi yoksa `false` döner.

### Ayrıca Bakınız

- imap_last_error() - Geçerli sayfa isteği sırasında oluşan son IMAP hatasının açıklamasını döndürür
- imap_alerts() - Oluşan tüm IMAP uyarı iletilerini döndürür

# imap_expunge

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_expunge — Silindi imli tüm iletileri gerçekten siler

### Açıklama

function imap_expunge(IMAP\Connection `$imap`): true

imap_delete(), imap_mail_move() veya imap_setflag_full() tarafından 'silindi' olarak imlenmiş tüm iletileri siler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

# imap_fetch_overview

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetch_overview — Belirtilen iletinin başlıklarından belli bilgileri toplar

### Açıklama

function imap_fetch_overview(IMAP\Connection `$imap`, string `$aralık`, int `$seçenekler` = 0): array|false

`aralık` ile belirtilen iletilerin posta başlıklarını alır ve içinden belli bilgileri toplar.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`aralık`

  İleti numaraları aralığı. İstenen iletileri X,Y biçeminde sıralayabilir veya X:Y biçeminde bir aralık olarak belirtebilirsiniz.

`seçenekler`

  Bu bağımsız değişkende `FT_UID` sabiti belirtilirse `aralık` bağımsız değişkeni ileti numaralarını veya eşsiz kimlikleri içerebilir.

### Dönen Değerler

Her biri belli bir iletiye ait nesnelerden oluşan bir dizi döner. Nesne, sadece iletide mevcut olan özellikleri içerir. Olası özellikler:

- `subject` - İleti konusu.
- `from` - Kimden.
- `to` - Kime.
- `date` - İletinin gönderildiği tarih.
- `message_id` - İleti kimliği.
- `references` - İleti kimliğine gönderimler.
- `in_reply_to` - İleti, bu ileti kimliğine bir yanıttır.
- `size` - İletinin bayt cinsinden uzunluğu.
- `uid` - İletinin posta kusunudaki eşsiz kimliği.
- `msgno` - İletinin posta kusunudaki sıra numarası
- `recent` - İleti son gönderilenlerden olarak imlenmiş.
- `flagged` - İleti imlenmiş.
- `answered` - İleti, yanıtlandı olarak imlenmiş.
- `deleted` - İleti, silindi olarak imlenmiş.
- `seen` - İleti, okundu olarak imlenmiş.
- `draft` - İleti taslak olarak imlenmiş.
- `udate` - Geliş tarihinin UNIX zaman damgası.

Bu işlev başarısızlık durumunda `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_fetch_overview() örneği

    <?php
    $mbox = imap_open("{imap.example.org:143}INBOX", "username", "password")
         or die("bağlanılamadı: " . imap_last_error());

    $MC = imap_check($mbox);

    // INBOX içindeki tüm iletilerle ilgili bilgileri toplayalım
    $result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
    foreach ($result as $overview) {
        echo "#{$overview->msgno} ({$overview->date}) - From: {$overview->from}
        {$overview->subject}\n";
    }
    imap_close($mbox);
    ?>

### Ayrıca Bakınız

- imap_fetchheader() - Bir iletinin başlığını döndürür

# imap_fetchbody

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetchbody — Belirtilen iletinin belli bir gövde bölümünü döndürür

### Açıklama

function imap_fetchbody(
IMAP\Connection `$imap`,
int `$ileti_num`,
string `$bölüm`,
int `$seçenekler` = 0
): string|false

Belirtilen iletinin belli bir gövde bölümünü döndürür. Gövde parçaları bu işlevle çözülmez.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`iletinum`

  İleti numarası.

`bölüm`

  Parça numarası. IMAP4 belirtimine uygun olarak, gövde parçasını indisleyen noktalarla ayrılmış sayılardan oluşan bir dizge olarak belirtilir.

`seçenekler`

  Aşağıdaki sabitlerin biri veya birkaçından oluşan bir bit maskesidir:

  - `FT_UID` - `iletinum` bağımsız değişkeninin eşsiz kimlik olarak ele alınmasını sağlar.
  - `FT_PEEK` - Zaten ileti `\Seen` (okundu) imliyse tekrar okundu olarak imlenmez.
  - `FT_INTERNAL` - Satırları CRLF'lerle meşrulaştırılmadan dizgenin "dahili" biçemiyle döndürülmesini sağlar.

### Dönen Değerler

Belirtilen ileti bölümünü bir dizge olarak döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_savebody() - Belirtilen iletinin gövdesini bir dosyaya kaydeder
- imap_fetchstructure() - Belli bir iletinin yapısını okur

# imap_fetchheader

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetchheader — Bir iletinin başlığını döndürür

### Açıklama

function imap_fetchheader(IMAP\Connection `$imap`, int `$ileti_num`, int `$seçenekler` = 0): string|false

Belirtilen iletinin » RFC2822 biçemli başlığının tamamını herhangi bir işlemden geçirmeden döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`seçenekler`

  Olası `seçenekler`:

  - `FT_UID` - The `iletinum` bağımsız değişkeninin bir eşsiz kimlik olarak ele alınmasını sağlar.
  - `FT_INTERNAL` - Satırları CRLF'lerle meşrulaştırılmadan dizgenin "dahili" biçemiyle döndürülmesini sağlar.
  - `FT_PREFETCHTEXT` - Aynı anda ileti metninin de alınmasını sağlar. İletinin tam metni istendiği durumda (içeriğin yerel bir dosyaya kaydedilmek istenmesi gibi) IMAP bağlantısında ek bir RTT (gecikme) oluşmasını engeller.

### Dönen Değerler

Belirtilen iletinin başlığını içeren bir dizge, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_fetch_overview() - Belirtilen iletinin başlıklarından belli bilgileri toplar

# imap_fetchmime

(PHP 5 >= 5.3.6, PHP 7, PHP 8)

imap_fetchmime — İletinin belirli bir bölümü için MIME başlıklarını getirir

### Açıklama

function imap_fetchmime(
IMAP\Connection `$imap`,
int `$ileti_num`,
string `$bölüm`,
int `$seçenekler` = 0
): string|false

Belirtilen iletilerin belirli bir gövde bölümünün MIME başlıklarını getirir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`bölüm`

  Bölüm numarası. IMAP4 belirtimine göre bir gövde parçası listesini indisleyen nokta ayraçlı bir tamsayı dizisidir.

`seçenekler`

  Aşağıdakilerden bir veya daha fazlasını içeren bir bit maskesi:

  - `FT_UID` - `ileti_num` bir UID'dir
  - `FT_PEEK` - Zaten atanmışsa Görüldü bayrağı atanmaz.
  - `FT_INTERNAL` - Dönen dizge dahili biçemde olur, CRLF ile standartlaştırılmaz.

### Dönen Değerler

Belirtilen iletilerin belirli bir gövde bölümünün MIME başlıkları bir dizge olarak döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_fetchbody() - Belirtilen iletinin belli bir gövde bölümünü döndürür
- imap_fetchstructure() - Belli bir iletinin yapısını okur
- imap_fetchheader() - Bir iletinin başlığını döndürür

# imap_fetchstructure

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetchstructure — Belli bir iletinin yapısını okur

### Açıklama

function imap_fetchstructure(IMAP\Connection `$imap`, int `$ileti_num`, int `$seçenekler` = 0): stdClass|false

Belirtilen ileti için yapılandırılmış tüm bilgiyi döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`seçenekler`

  Bu isteğe bağlı bağımsız değişkende tek bir seçenek belirtilebilir: `ileti_num` bağımsız değişkeninin eşsiz kimlik olarak ele alınmasını sağlayan `FT_UID` sabiti.

### Dönen Değerler

Aşağıdaki özelliklere sahip bir nesne, başarısızlık durumunda `false` döner.

imap_fetchstructure() işlevinden dönen nesnenin özellikleri
type | Birincil gövde türü.
encoding | Gövde aktarım kodlaması.
ifsubtype | Bir alt MIME türünde dizge varsa `true`.
subtype | MIME alt türü.
ifdescription | Bir açıklama dizgesi varsa `true`
description | Açıklama dizgesinin içeriği.
ifid | Kimliklendirici bir dizge varsa `true`.
id | Kimliklendirme dizgesi.
lines | Satır sayısı.
bytes | Bayt sayısı.
ifdisposition | Bir `Content-Disposition:` başlığı varsa `true`.
disposition | `Content-Disposition:` başlıklı dizge.
ifdparameters | dparameters dizisi mevcutsa `true`.
dparameters | `Content-disposition` MIME başlığındaki bağımsız değişkenlere karşı düşen `"attribute"` ve `"value"` özelliklerine sahip nesnelerden oluşan bir dizi.
ifparameters | `parameters` dizisi mevcutsa `true`.
parameters | `"attribute"` ve `"value"` özelliklerine sahip nesnelerden oluşan bir dizi.
parts | Her biri bir MIME gövde parçasına karşılık gelen ve üst seviye nesnenin yapısına eşdeğer nesnelerden oluşan bir dizi.

Birincil gövde türü (değer kütüphaneye göre değişir, bu bakımdan sabitlerin kullanılması önerilir)
Değer | Türü | Sabiti
--- | --- | ---
0 | text | TYPETEXT
1 | multipart | TYPEMULTIPART
2 | message | TYPEMESSAGE
3 | application | TYPEAPPLICATION
4 | audio | TYPEAUDIO
5 | image | TYPEIMAGE
6 | video | TYPEVIDEO
7 | model | TYPEMODEL
8 | other | TYPEOTHER

Aktarım kodlaması (değer kütüphaneye göre değişir, bu bakımdan sabitlerin kullanılması önerilir)
Değer | Türü | Sabiti
--- | --- | ---
0 | 7bit | ENC7BIT
1 | 8bit | ENC8BIT
2 | Binary | ENCBINARY
3 | Base64 | ENCBASE64
4 | Quoted-Printable | ENCQUOTEDPRINTABLE
5 | other | ENCOTHER

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_fetchbody() - Belirtilen iletinin belli bir gövde bölümünü döndürür
- imap_bodystruct() - Belirtilen iletinin bir gövde bölümünün yapısını okur

# imap_fetchtext

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetchtext — imap_body() işlevinin takma adıdır

### Açıklama

Bu işlev şu işlevin takma adıdır: imap_body().

# imap_gc

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

imap_gc — IMAP önbelleğini temizler

### Açıklama

function imap_gc(IMAP\Connection `$imap`, int `$seçenekler`): true

Türü belirtilen önbellek girdilerini siler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`seçenekler`

  Silinecek önbellek türü. Şu sabitlerden biri veya birkaçı belirtilebilir: `IMAP_GC_ELT` (ileti önbellek elemanları), `IMAP_GC_ENV` (zarflar ve gövdeler), `IMAP_GC_TEXTS` (metinler).

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

`seçenekler` geçersiz ise ValueError oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` geçersiz ise artık ValueError oluşuyor. Evvelce, bir uyarı verilir ve işlev `false` döndürürdü.
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_gc() örneği

    <?php

    $mbox = imap_open("{imap.example.org:143}", "username", "password");

    imap_gc($mbox, IMAP_GC_ELT);

    ?>

# imap_get_quota

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

imap_get_quota — Belirtilen kullanıcının kota ayarlarını döndürür

### Açıklama

function imap_get_quota(IMAP\Connection `$imap`, string `$kullanıcı`): array|false

Belirtilen kullanıcının posta kutusunun kota ayarlarını ve istatistiklerini döndürür.

Bu işlev sadece yönetici tarafından kullanılır. Diğer kullanıcıların imap_get_quotaroot() işlevini kullanmaları gerekir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`quota_root`

  Genelde `user.isim` biçeminde olup 'isim' hakkında bilgi istenecek posta kutusunun ismidir.

### Dönen Değerler

Belirtilen posta kutusunun kapasitesi ile ilgili bilgileri bir ilişkisel dizi içinde döndürür. Tüm değerler bir özkaynağın adını anahtar olarak alan birer dizidir ve bu alt diziler 'usage' ve 'limit' indisli değerler içerir. Bir hata durumunda `false` döner.

PHP 4.3'ten itibaren, işlev » RFC 2087'ye daha fazla uyumludur. Dönen dizi sınırsız sayıda özkaynağı (iletiler, alt dizinler gibi) destekleyecek şekilde değiştirilmiştir. Her özkaynakla ilgili bilgiler ayrıca alt dizinlere konmuştur. İlişkisel dizinin her anahtarı değer olarak 'usage' ve 'limit' indisli bir dizi içerir.

Geriye uyumluluk adına özgün erişim yöntemleri hala kullanılabilmekteyse de bir güncelleme önerilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_get_quota() örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "mailadmin", "password", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $quota_value = imap_get_quota($mbox, "user.kalowsky");
    if (is_array($quota_value)) {
        echo "Kullanılan: "  . $quota_value['usage'];
        echo "Azami boyut: " . $quota_value['limit'];
    }

    imap_close($mbox);
    ?>

Örnek 2 - imap_get_quota() 4.3 ve üstü örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "mailadmin", "password", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $quota_values = imap_get_quota($mbox, "user.kalowsky");
    if (is_array($quota_values)) {
       $storage = $quota_values['STORAGE'];
       echo "Kullanılmış saklama alanı:     " .  $storage['usage'];
       echo "Saklama alanının azami boyutu: " .  $storage['limit'];

       $message = $quota_values['MESSAGE'];
       echo "İletinin uzunluğu:        " .  $message['usage'];
       echo "İleti için azami uzunluk: " .  $message['limit'];

       /* ...  */
    }

    imap_close($mbox);
    ?>

### Notlar

Bu işlev sadece c-client2000 ve üstü kütüphane sürümleriyle kullanılabilir.

`imap_akımı` posta yöneticisi olarak açılmış olmalıdır, yoksa işlev başarısız olur.

### Ayrıca Bakınız

- imap_open() - Belirtilen posta kutusuna yeni bir IMAP akımı açar
- imap_set_quota() - Belirtilen posta kutusu için bir kota tanımlar
- imap_get_quotaroot() - Kullanıcının kendi kota ayarlarını döndürür

# imap_get_quotaroot

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

imap_get_quotaroot — Kullanıcının kendi kota ayarlarını döndürür

### Açıklama

function imap_get_quotaroot(IMAP\Connection `$imap`, string `$pk`): array|false

Kullanıcının kota ayarlarını döndürür. 'limit' değeri kullanıcının posta kutusu için izin verilen azami toplam kullanım alanını gösterir. 'usage' değeri ise kullanıcının o anki toplam posta kutusu kullanımını gösterir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`pk`

  Normalde posta kutusunun ismidir (örneğin, INBOX).

### Dönen Değerler

Belirtilen posta kutusunun kapasitesi ile ilgili bilgileri bir ilişkisel dizi içinde döndürür. Tüm değerler bir özkaynağın adını anahtar olarak alan birer dizidir ve bu alt diziler 'usage' ve 'limit' indisli değerler içerir.

Bir hata durumunda `false`, sunucudan alınan yanıt çözümlenemezse bağlantı hakkında bilgi içeren bir dizi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_get_quotaroot() örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "kalowsky", "password", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $quota = imap_get_quotaroot($mbox, "INBOX");
    if (is_array($quota)) {
       $storage = $quota['STORAGE'];
       echo "Kullanılmış saklama alanı:     " .  $storage['usage'];
       echo "Saklama alanının azami boyutu: " .  $storage['limit'];

       $message = $quota['MESSAGE'];
       echo "İletinin uzunluğu:        " .  $message['usage'];
       echo "İleti için azami uzunluk: " .  $message['limit'];

       /* ...  */

    }

    imap_close($mbox);
    ?>

### Notlar

Bu işlev sadece c-client2000 ve üstü kütüphane sürümleriyle kullanılabilir.

`imap_akımı` posta kutusu kotasına bakılacak kullanıcı için açılmış olmalıdır.

### Ayrıca Bakınız

- imap_open() - Belirtilen posta kutusuna yeni bir IMAP akımı açar
- imap_set_quota() - Belirtilen posta kutusu için bir kota tanımlar
- imap_get_quota() - Belirtilen kullanıcının kota ayarlarını döndürür

# imap_getacl

(PHP 5, PHP 7, PHP 8)

imap_getacl — Belirtilen posta kutusunun erişim izinlerini döndürür

### Açıklama

function imap_getacl(IMAP\Connection `$imap`, string `$pk`): array|false

Belirtilen posta kutusunun (`pk`) erişim izinlerini döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`pk`

  Posta kutusunun ismi; bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

"dizin" => "izinler" çiftlerinden oluşan bir ilişkisel dizi, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_getacl() örneği

    <?php

    print_r(imap_getacl($imap, 'user.joecool'));

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [asubfolder] => lrswipcda
        [anothersubfolder] => lrswipcda
    )

### Notlar

Bu işlev sadece c-client2000 ve üstü kütüphane sürümleriyle kullanılabilir.

### Ayrıca Bakınız

- imap_setacl() - Belirtilen posta kutusu ile ilgili erişim izinlerini tanımlar

# imap_getmailboxes

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_getmailboxes — Posta kutuları hakkında ayrıntılı bilgi döndürür

### Açıklama

function imap_getmailboxes(IMAP\Connection `$imap`, string `$hedef`, string `$kalıp`): array|false

Posta kutusu listesini okuyup her PK için ayrıntılı bilgi döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`hedef`

  imap_open() işlevinde açıklandığı gibi normal olarak bir sunucu belirtimi olmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kalıp`

  Posta kutusu hiyerarşisi içine aramanın başlayacağı yeri belirtir.

  `kalıp` içinde belirtilebilecek iki özel karakter vardır: Alt dizinlere inilmesini sağlayan '`*`' ve alt dizinlere inilmemesini sağlayan '`%`'. `kalıp` olarak '`*`' posta kutusu hiyerarşisi içindeki tüm posta kutularının listelenmesini, '`%`' ise sadece tepe seviyedeki posta kutularının listelenmesini sağlar. `kalıp` olarak '`~/mail/%`' belirtilirse alt dizinlere inilmeden sadece ~/mail dizini altındaki posta kutuları listelenir.

### Dönen Değerler

Posta kutusu bilgilerini içeren nesnelerden oluşan bir dizi döner. Her nesnenin üç özelliği vardır: Posta kutusunun ismini içeren `name`, hiyerarşik ayracı içeren `delimiter` ve `attributes`. `attributes` özelliği şu değerleri içerebilen bir bit maskesidir:

- `LATT_NOINFERIORS` - "Çocuklar" olmaksızın posta kutusunun kendisi (bunun altında posta kutusu bulunmaz). Bir alt posta kutusu olmaz. Bu posta kutusu altında imap_createmailbox() çalışmaz.

- `LATT_NOSELECT` - Sadece bir taşıyıcıdır, bir posta kutusu değildir - bu açılamaz.

- `LATT_MARKED` - Posta kutusu imlidir. Yani, son erişimden bu yana yeni gelmiş iletiler var demektir. Her IMAP sunucusu bu bilgiyi sağlamaz.

- `LATT_UNMARKED` - Posta kutusu imsizdir, posta kutusunda yeni gelmiş ileti yoktur. `MARKED` veya `UNMARKED` bilgisi sağlanmışsa IMAP sunucusunun bu posta kutusunda bu özelliği desteklediğini varsayabiliriz.

- `LATT_REFERRAL` - Bu taşıyıcının uzak bir posta kutusuna yönlendirmesi var.

- `LATT_HASCHILDREN` - Bu posta kutusunun seçilebilir alt öğeleri vardır.

- `LATT_HASNOCHILDREN` - Bu posta kutusunun seçilebilir alt öğeleri yoktur.

İşlev başarısızlık durumunda `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_getmailboxes() örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $list = imap_getmailboxes($mbox, "{imap.example.org}", "*");
    if (is_array($list)) {
        foreach ($list as $key => $val) {
            echo "($key) ";
            echo imap_utf7_decode($val->name) . ",";
            echo "'" . $val->delimiter . "',";
            echo $val->attributes . "<br />\n";
        }
    } else {
        echo "imap_getmailboxes başarısız oldu: " . imap_last_error() . "\n";
    }

    imap_close($mbox);
    ?>

### Ayrıca Bakınız

- imap_getsubscribed() - Üyesi olunan tüm posta kutularını listeler

# imap_getsubscribed

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_getsubscribed — Üyesi olunan tüm posta kutularını listeler

### Açıklama

function imap_getsubscribed(IMAP\Connection `$imap`, string `$hedef`, string `$kalıp`): array|false

Üyesi olunan tüm posta kutularını bir dizi içinde döndürür.

Sadece kullanıcının üyesi olduğu posta kutularını döndürmesi dışında imap_getmailboxes() işlevine benzer.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`hedef`

  imap_open() işlevinde açıklandığı gibi normal olarak bir sunucu belirtimi olmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kalıp`

  Posta kutusu hiyerarşisi içine aramanın başlayacağı yeri belirtir.

  `kalıp` içinde belirtilebilecek iki özel karakter vardır: Alt dizinlere inilmesini sağlayan '`*`' ve alt dizinlere inilmemesini sağlayan '`%`'. `kalıp` olarak '`*`' posta kutusu hiyerarşisi içindeki tüm posta kutularının listelenmesini, '`%`' ise sadece tepe seviyedeki posta kutularının listelenmesini sağlar. `kalıp` olarak '`~/mail/%`' belirtilirse alt dizinlere inilmeden sadece ~/mail dizini altındaki posta kutuları listelenir.

### Dönen Değerler

Posta kutusu bilgilerini içeren nesnelerden oluşan bir dizi döner. Her nesnenin üç özelliği vardır: Posta kutusunun ismini içeren `name`, hiyerarşik ayracı içeren `delimiter` ve `attributes`. `attributes` özelliği şu değerleri içerebilen bir bit maskesidir:

- `LATT_NOINFERIORS` - "Çocuklar" olmaksızın posta kutusunun kendisi (bunun altında posta kutusu bulunmaz).
- `LATT_NOSELECT` - Sadece bir taşıyıcıdır, bir posta kutusu değildir - bu açılamaz.
- `LATT_MARKED` - Posta kutusu imlidir. Sadece UW-IMAPD kullanır.
- `LATT_UNMARKED` - Posta kutusu imsizdir. Sadece UW-IMAPD kullanır.

- `LATT_REFERRAL` - Bu taşıyıcının uzak bir posta kutusuna yönlendirmesi var.

- `LATT_HASCHILDREN` - Bu posta kutusunun seçilebilir alt öğeleri vardır.

- `LATT_HASNOCHILDREN` - Bu posta kutusunun seçilebilir alt öğeleri yoktur.

İşlev başarısızlık durumunda `false` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

# imap_header

(PHP 4, PHP 5, PHP 7)

imap_header — imap_headerinfo() işlevinin takma adıdır

Uyarı

Bu takma ad PHP 8.0.0'da tamamen KALDIRILMIŞTIR.

### Açıklama

Bu işlev, imap_headerinfo() işlevinin takma adıdır.

# imap_headerinfo

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_headerinfo — Belirtilen iletinin başlığını okur

### Açıklama

function imap_headerinfo(
IMAP\Connection `$imap`,
int `$ileti_num`,
int `$kimden_uzunluğu` = 0,
int `$konu_uzunluğu` = 0
): stdClass|false

İleti numarası belirtilen iletinin başlıklarını okuyup elde ettiği bilgiyi bir nesne içinde döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

`kimden_uzunluğu`

  `fetchfrom` özelliği için karakter sayısı. Sıfır veya daha büyük bir tamsayı olmalıdır.

`konu_uzunluğu`

  `fetchsubject` özelliği için karakter sayısı. Sıfır veya daha büyük bir tamsayı olmalıdır.

`öntanımlı_konak`

### Dönen Değerler

Hata durumunda `false` aksi takdirde aşağıdaki özelliklerde bir nesne döner:

- `toaddress` - `to:` satırının tamamı, en fazla 1024 karakter.
- `to` - `To:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`.
- `fromaddress` - `from:` satırının tamamı, en fazla 1024 karakter.
- `from` - `From:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`.
- `ccaddress` - `cc:` satırının tamamı, en fazla 1024 karakter.
- `cc` - `Cc:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`.
- `bccaddress` - `bcc:` satırının tamamı, en fazla 1024 karakter.
- `bcc` - `Bcc:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`.
- `reply_toaddress` - `Reply-To:` satırının tamamı, en fazla 1024 karakter.
- `reply_to` - `Reply-To:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`.
- `senderaddress` - `sender:` satırının tamamı, en fazla 1024 karakter.
- `sender` - `Sender:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`
- `return_pathaddress` - `Return-Path:` satırının tamamı, en fazla 1024 karakter.
- `return_path` - `Return-Path:` satırındaki nesnelerden oluşan bir dizi. Nesneler şu özelliklere sahiptir: `personal`, `adl`, `mailbox` ve `host`
- `remail` -
- `date` - Başlıklarda bulunan ileti tarihi.
- `Date` - `date` ile aynı.
- `subject` - İleti konusu
- `Subject` - `subject` ile aynı.
- `in_reply_to` -
- `message_id` -
- `newsgroups` -
- `followup_to` -
- `references` -
- `Recent` - Son gelenlerdense ve okunmuşsa `R`, son gelenlerdense ve okunmamışsa `N`, son gelenlerden değilse ' '.
- `Unseen` - Son gelenlerden değilse ve okunmamışsa `U`, okunmuş olsun ya da olmasın son gelenlerdense ' '.
- `Flagged` - İmli ise `F`, değilse ' '.
- `Answered` - Yanıtlanmışsa `A`, yanıtlanmamışsa ' '.
- `Deleted` - Silinmişse `D`, silinmemişse ' '.
- `Draft` - Taslaksa `X`, değilse ' '.
- `Msgno` - İleti numarası.
- `MailDate` -
- `Size` - İleti uzunluğu
- `udate` - Unix zamanı olarak ileti tarihi.
- `fetchfrom` - `kimden_uzunluğu` karakterlik `from:` satırı.
- `fetchsubject` - `konu_uzunluğu` karakterlik `subject:` satırı.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.
8.0.0 | Kullanılmayan `öntanımlı_konak` bağımsız değişkeni kaldırıldı.

### Ayrıca Bakınız

- imap_fetch_overview() - Belirtilen iletinin başlıklarından belli bilgileri toplar

# imap_headers

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_headers — Bir posta kutusu içindeki tüm iletilerin başlıklarını döndürür

### Açıklama

function imap_headers(IMAP\Connection `$imap`): array|false

Posta kutusu içindeki tüm iletilerin başlıklarını döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Başlık bilgisiyle biçemlenmiş dizgelerden oluşan bir dizi döner. Her eleman bir eposta iletisine aittir. Başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

# imap_is_open

(PHP 8 >= 8.2.1)

imap_is_open — Check if the IMAP stream is still valid

### Açıklama

function imap_is_open(IMAP\Connection `$imap`): bool

Check if the IMAP stream is still valid.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Returns `true` if the stream is still valid, `false` otherwise.

### Örnekler

Örnek 1 imap_is_open() example

    <?php
    $mbox = imap_open("{imap.example.org:143}INBOX", "username", "password") or die(implode(", ", imap_errors()));
    imap_is_open($mbox);
    // ...
    ?>

# imap_last_error

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_last_error — Geçerli sayfa isteği sırasında oluşan son IMAP hatasının açıklamasını döndürür

### Açıklama

function imap_last_error(): string|false

Geçerli sayfa isteği sırasında oluşan son IMAP hatasının açıklamasını döndürür. Hata yığıtına dokunulmaz, dolayısıyla işlev peşpeşe çağrılırsa hep aynı ileti dönecektir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Ortada bir hata iletisi yoksa `false`, varsa son IMAP hatasının açıklamasını içeren bir dizge döndürür

### Ayrıca Bakınız

- imap_errors() - Oluşan tüm IMAP hatalarının iletilerini döndürür

# imap_list

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_list — Posta kutularını listeler

### Açıklama

function imap_list(IMAP\Connection `$imap`, string `$hedef`, string `$kalıp`): array|false

Posta kutusu listesini okur.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`hedef`

  imap_open() işlevinde açıklandığı gibi normal olarak bir sunucu belirtimi olmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kalıp`

  Posta kutusu hiyerarşisi içine aramanın başlayacağı yeri belirtir.

  `kalıp` içinde belirtilebilecek iki özel karakter vardır: Alt dizinlere inilmesini sağlayan '`*`' ve alt dizinlere inilmemesini sağlayan '`%`'. `kalıp` olarak '`*`' posta kutusu hiyerarşisi içindeki tüm posta kutularının listelenmesini, '`%`' ise sadece tepe seviyedeki posta kutularının listelenmesini sağlar. `kalıp` olarak '`~/mail/%`' belirtilirse alt dizinlere inilmeden sadece ~/mail dizini altındaki posta kutuları listelenir.

### Dönen Değerler

Posta kutusu isimlerini içeren bir dizi döner. Başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_list() örneği

    <?php
    $mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $list = imap_list($mbox, "{imap.example.org}", "*");
    if (is_array($list)) {
        foreach ($list as $val) {
            echo imap_utf7_decode($val) . "\n";
        }
    } else {
        echo "imap_list başarısız oldu: " . imap_last_error() . "\n";
    }

    imap_close($mbox);
    ?>

### Ayrıca Bakınız

- imap_getmailboxes() - Posta kutuları hakkında ayrıntılı bilgi döndürür
- imap_lsub() - Üyesi olunan tüm posta kutularını listeler

# imap_listmailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_listmailbox — imap_list() işlevinin takma adıdır

### Açıklama

Bu işlev, imap_list() işlevinin takma adıdır.

# imap_listscan

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_listscan — Belirtilen metin ile eşleşen posta kutularını listeler

### Açıklama

function imap_listscan(
IMAP\Connection `$imap`,
string `$hedef`,
string `$kalıp`,
string `$içerik`
): array|false

Posta kutusu metninde `içerik` bulunan posta kutusu isimlerini içeren bir dizi döndürür.

Posta kutusu verisi içinde `içerik` dizgesinin varlığına bakması dışında imap_list() işlevine benzer.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`hedef`

  imap_open() işlevinde açıklandığı gibi normal olarak bir sunucu belirtimi olmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kalıp`

  Posta kutusu hiyerarşisi içine aramanın başlayacağı yeri belirtir.

  `kalıp` içinde belirtilebilecek iki özel karakter vardır: Alt dizinlere inilmesini sağlayan '`*`' ve alt dizinlere inilmemesini sağlayan '`%`'. `kalıp` olarak '`*`' posta kutusu hiyerarşisi içindeki tüm posta kutularının listelenmesini, '`%`' ise sadece tepe seviyedeki posta kutularının listelenmesini sağlar. `kalıp` olarak '`~/mail/%`' belirtilirse alt dizinlere inilmeden sadece ~/mail dizini altındaki posta kutuları listelenir.

`içerik`

  Aranacak dizge.

### Dönen Değerler

Posta kutusu metninde `içerik` dizgesi geçen posta kutusu isimlerini bir dizi içinde döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_listmailbox() - imap_list işlevinin takma adıdır
- imap_search() - Belirtilen kurala uyan iletileri bir dizi içinde döndürür

# imap_listsubscribed

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_listsubscribed — imap_lsub() işlevinin takma adıdır

### Açıklama

Bu işlev, imap_lsub() işlevinin takma adıdır.

# imap_lsub

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_lsub — Üyesi olunan tüm posta kutularını listeler

### Açıklama

function imap_lsub(IMAP\Connection `$imap`, string `$hedef`, string `$kalıp`): array|false

Üyesi olunan tüm posta kutularını bir dizi içinde döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`hedef`

  imap_open() işlevinde açıklandığı gibi normal olarak bir sunucu belirtimi olmalıdır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kalıp`

  Posta kutusu hiyerarşisi içine aramanın başlayacağı yeri belirtir.

  `kalıp` içinde belirtilebilecek iki özel karakter vardır: Alt dizinlere inilmesini sağlayan '`*`' ve alt dizinlere inilmemesini sağlayan '`%`'. `kalıp` olarak '`*`' posta kutusu hiyerarşisi içindeki tüm posta kutularının listelenmesini, '`%`' ise sadece tepe seviyedeki posta kutularının listelenmesini sağlar. `kalıp` olarak '`~/mail/%`' belirtilirse alt dizinlere inilmeden sadece ~/mail dizini altındaki posta kutuları listelenir.

### Dönen Değerler

Üye olunan tüm posta kutularını bir dizi içinde döndürür, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_list() - Posta kutularını listeler
- imap_getmailboxes() - Posta kutuları hakkında ayrıntılı bilgi döndürür

# imap_mail

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mail — Bir eposta iletisi gönderir

### Açıklama

function imap_mail(
string `$kime`,
string `$konu`,
string `$ileti`,
?string `$ek_başlıklar` = `null`,
?string `$cc` = `null`,
?string `$bcc` = `null`,
?string `$dönüş_yolu` = `null`
): bool

Cc ve Bcc alıcıları doğru yorumlanan epostaların gönderimine imkan verir.

`kime`, `cc` ve `bcc` bağımsız değişkenleri birer dizge olup » RFC 822'ye göre yorumlanırlar.

### Bağımsız Değişkenler

`kime`

  Alıcının adresi.

`konu`

  Postanın konusu.

`ileti`

  Postanın gövdesi. Bkz: imap_mail_compose()

`ek_başlıklar`

  Posta üzerinde gönderilecek ek başlıkları içeren bir dizge.

`cc`

`bcc`

  Kara karbon kopya alıcıları (bcc) olarak belirtilen alıcılar eposta başlıklarında görünmez.

`dönüş_yolu`

  Posta teslim edilemezse kullanılacak dönüş adresi bu bağımsız değişkende belirtilir. PHP'nin çok sayıda kullanıcı için posta istemcisi olarak çalıştığı durumda yararlıdır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `ek_başlıklar`, `cc`, `bcc` ve `dönüş_yolu` artık `null` olabiliyor.

### Ayrıca Bakınız

- mail() - Eposta gönderir
- imap_mail_compose() - Zarfı ve gövdesi belirtilen MIME iletisini oluşturur

# imap_mail_compose

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mail_compose — Zarfı ve gövdesi belirtilen MIME iletisini oluşturur

### Açıklama

function imap_mail_compose(array `$zarf`, array `$gövdeler`): string|false

Belirtilen `zarf` ve `gövdeler` bölümlerini kullanarak bir MIME iletisi oluşturur.

### Bağımsız Değişkenler

`zarf`

  Başlıkları içeren bir ilişkisel dizi. Geçerli anahtarlar: `"remail"`, `"return_path"`, `"date"`, `"from"`, `"reply_to"`, `"in_reply_to"`, `"subject"`, `"to"`, `"cc"`, `"bcc"` ve `"message_id"`. Bu anahtarlara ileti ile ilgili değerler atanır. Ek başlıklar ayarlamak için, bu başlıkların bir dizisini bekleyen "custom_headers" anahtarı desteklenir, ör. `["User-Agent: Posta İstemcim"]`.

`gövdeler`

  Gövdeleri içeren bir ilişkisel dizi. İlk gövde, iletinin ana gövdesidir; yalnızca `TYPEMULTIPART` türünde ise, diğer gövdeler işlenir; bu gövdeler parçaların gövdelerini oluşturur.

  Gövde dizisinin yapısı
  Anahtar | Tür | Açıklama
  --- | --- | ---
  `type` | int | MIME türü. `TYPETEXT` (öntanımlı), `TYPEMULTIPART`, `TYPEMESSAGE`, `TYPEAPPLICATION`, `TYPEAUDIO`, `TYPEIMAGE`, `TYPEMODEL`, `TYPEOTHER` sabitlerinden biri.
  `encoding` | int | `Content-Transfer-Encoding`. `ENC7BIT` (öntanımlı), `ENC8BIT`, `ENCBINARY`, `ENCBASE64`, `ENCQUOTEDPRINTABLE`, `ENCOTHER` sabitlerinden biri.
  `charset` | string | MIME türünün karakter kümesi.
  `type.parameters` | array | `Content-Type` isim ve değerlerini içeren ilişkisel bir dizi.
  `subtype` | string | MIME alt türü; `TYPEIMAGE` için `'jpeg'` gibi.
  `id` | string | `Content-ID`.
  `description` | string | `Content-Description`.
  `disposition.type` | string | `Content-Disposition`, örn. `'attachment'`.
  `disposition` | array | `Content-Disposition` isim ve değerlerini içeren ilişkisel bir dizi.
  `contents.data` | string | İş yükü.
  `lines` | int | Yüklü satır sayısı.
  `bytes` | int | Yüklü bayt miktarı.
  `md5` | string | Yükün MD5 aşı.

### Dönen Değerler

Dizge olarak MIME iletisi, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - imap_mail_compose() örneği

    <?php

    $envelope["from"]= "joe@example.com";
    $envelope["to"]  = "foo@example.com";
    $envelope["cc"]  = "bar@example.com";

    $part1["type"] = TYPEMULTIPART;
    $part1["subtype"] = "mixed";

    $filename = "/tmp/imap.c.gz";
    $fp = fopen($filename, "r");
    $contents = fread($fp, filesize($filename));
    fclose($fp);

    $part2["type"] = TYPEAPPLICATION;
    $part2["encoding"] = ENCBINARY;
    $part2["subtype"] = "octet-stream";
    $part2["description"] = basename($filename);
    $part2["contents.data"] = $contents;

    $part3["type"] = TYPETEXT;
    $part3["subtype"] = "plain";
    $part3["description"] = "description3";
    $part3["contents.data"] = "contents.data3\n\n\n\t";

    $body[1] = $part1;
    $body[2] = $part2;
    $body[3] = $part3;

    echo nl2br(imap_mail_compose($envelope, $body));

    ?>

# imap_mail_copy

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mail_copy — Belirtilen iletileri bir posta kutusuna kopyalar

### Açıklama

function imap_mail_copy(
IMAP\Connection `$imap`,
string `$iletiler`,
string `$pk`,
int `$seçenekler` = 0
): bool

`iletiler` bağımsız değişkeninde belirtilen posta iletileri belirtilen posta kutusuna (`pk`) kopyalanır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`iletiler`

  Kopyalanacak iletiler, » RFC 2060'da açıklandığı gibi bir ileti numarası aralığı olarak belirtilir.

`pk`

  Posta kutusu ismi; daha fazla bilgi için imap_open()işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`seçenekler`

  Aşağıdakilerin birini veya tamamını içeren bir bit maskesidir:

  - `CP_UID` - Sıra numaraları eşsiz kimlikleri içerir.
  - `CP_MOVE` - Kopyalandıktan sonra ileti yerel posta kutusundan silinir. Bu seçenek atanmışsa işlev, imap_mail_move() işlevi gibi davranır.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_mail_move() - Belirtilen iletiyi bir posta kutusuna taşır

# imap_mail_move

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mail_move — Belirtilen iletiyi bir posta kutusuna taşır

### Açıklama

function imap_mail_move(
IMAP\Connection `$imap`,
string `$iletiler`,
string `$pk`,
int `$seçenekler` = 0
): bool

`iletiler` bağımsız değişkeninde belirtilen posta iletileri belirtilen posta kutusuna (`pk`) taşınır. Aslında, iletiler posta kutusuna kopyalandıktan sonra özgün iletiler silinmek üzere işaretlenir. Bu, posta kutusundaki iletilere yeni kullanıcı kimliklerin atanacağı anlamına gelir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`iletiler`

  Taşınacak iletiler, » RFC 2060'da açıklandığı gibi bir ileti numarası aralığı olarak belirtilir.

`pk`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`seçenekler`

  Şimdilik tek bir seçenek desteklenmektedir:

  - `CP_UID` - Sıra numaraları eşsiz kimlikleri içerir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Notlar

> Bilginize:

> imap_mail_move() özgün postayı bir silme bayrağıyla işaretler, postayı gerçekten silmek için imap_expunge() işlevi çağrılmalıdır.

### Ayrıca Bakınız

- imap_mail_copy() - Belirtilen iletileri bir posta kutusuna kopyalar

# imap_mailboxmsginfo

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mailboxmsginfo — Posta kutusu hakkında bilgi döndürür

### Açıklama

function imap_mailboxmsginfo(IMAP\Connection `$imap`): stdClass

Sunucudaki posta kutusunun durumunu sorgular. imap_status() işlevine benzemekle birlikte, biraz zaman alsa da posta kutusundaki iletilerin toplam uzunluğunu da döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Aşağıdaki özelliklere sahip bir nesne döner:

Posta kutusu özellikleri
Date | Son değişiklik tarihi (günün zamanı)
Driver | Sürücü
Mailbox | Posta kutusu ismi
Nmsgs | İleti sayısı
Recent | Son gelen ileti sayısı
Unread | Okunmamış ileti sayısı
Deleted | Silinmiş ileti sayısı
Size | Posta kutusunun boyu

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_mailboxmsginfo() örneği

    <?php

    $mbox = imap_open("{imap.example.org}INBOX", "username", "password")
          or die("bağlanılamadı: " . imap_last_error());

    $check = imap_mailboxmsginfo($mbox);

    if ($check) {
        echo "Date: "     . $check->Date    . "<br />\n" ;
        echo "Driver: "   . $check->Driver  . "<br />\n" ;
        echo "Mailbox: "  . $check->Mailbox . "<br />\n" ;
        echo "Messages: " . $check->Nmsgs   . "<br />\n" ;
        echo "Recent: "   . $check->Recent  . "<br />\n" ;
        echo "Unread: "   . $check->Unread  . "<br />\n" ;
        echo "Deleted: "  . $check->Deleted . "<br />\n" ;
        echo "Size: "     . $check->Size    . "<br />\n" ;
    } else {
        echo "imap_mailboxmsginfo() hata verdi: " . imap_last_error() . "<br />\n";
    }

    imap_close($mbox);

    ?>

# imap_mime_header_decode

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_mime_header_decode — MIME başlık elemanlarının kodlamasını açar

### Açıklama

function imap_mime_header_decode(string `$dizge`): array|false

ASCII olmayan karakterler içeren MIME ileti başlıklarının kodlamasını açar (» RFC 2047'ye bakınız).

### Bağımsız Değişkenler

`dizge`

  MIME kodlu metin.

### Dönen Değerler

Kodu açılan başlıklar bir nesne dizisi olarak döndürülür. Her nesnenin iki özelliği vardır: `charset` ve `text`.

Başlıklar kodlanmamışsa, yani salt ASCII iseler nesnenin `charset` özelliğine `default` değeri atanır.

İşlev başarısızlık durumunda `false` döndürür.

### Örnekler

Örnek 1 - imap_mime_header_decode() örneği

    <?php
    $text = "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@example.com>";

    $elements = imap_mime_header_decode($text);
    for ($i=0; $i<count($elements); $i++) {
        echo "Charset: {$elements[$i]->charset}\n";
        echo "Text: {$elements[$i]->text}\n\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    Charset: ISO-8859-1
    Text: Keld Jørn Simonsen

    Charset: default
    Text:  <keld@example.com>

Yukarıdaki örnekte dizi iki elemanlıdır. İlk elemandaki nesne ISO-8859-1 kodlu bir dizge içerirken ikincisi salt ASCII bir dizge içermektedir.

### Ayrıca Bakınız

- imap_utf8() - MIME kodlu metni UTF-8'e dönüştürür

# imap_msgno

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_msgno — Belirtilen eşsiz kimlik için ileti numarasını döndürür

### Açıklama

function imap_msgno(IMAP\Connection `$imap`, int `$ileti_uid`): int

Belirtilen eşsiz kimlik (`ileti_uid`) için ileti numarasını döndürür.

Bu işlev imap_uid() işlevinin tersidir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_uid`

  İletinin eşsiz kimliği.

### Dönen Değerler

İletinin sıra numarası bir tamsayı olarak döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_uid() - Numarası belirtilen iletiyle ilgili eşsiz kimliği döndürür

# imap_mutf7_to_utf8

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

imap_mutf7_to_utf8 — Değiştirilmiş bir UTF-7 dizgesini UTF-8 olarak kodlar

### Açıklama

function imap_mutf7_to_utf8(string `$dizge`): string|false

Değiştirilmiş bir UTF-7 dizgesini (RFC 2060, 5.1.3 bölümünde belirtildiği gibi) UTF-8 olarak kodlar.

> Bilginize:

> Bu işlev yalnızca, utf8_to_mutf7() işlevini libcclient dışa aktarıyorsa kullanılabilir.

### Bağımsız Değişkenler

`dizge`

  Değiştirilmiş UTF-7 dizgesi.

### Dönen Değerler

UTF-8 kodlu `dizge` ile döner, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_utf8_to_mutf7() - UTF-8 dizgeyi değiştirilmiş UTF-7 olarak kodlar

# imap_num_msg

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_num_msg — Posta kutusundaki ileti sayısını döndürür

### Açıklama

function imap_num_msg(IMAP\Connection `$imap`): int|false

Posta kutusundaki ileti sayısını döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

İleti sayısı bir tamsayı olarak döner, hata durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_num_recent() - Posta kutusuna en son gelen ileti sayısını döndürür
- imap_status() - Bir posta kutusunun durum bilgisini döndürür

# imap_num_recent

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_num_recent — Posta kutusuna en son gelen ileti sayısını döndürür

### Açıklama

function imap_num_recent(IMAP\Connection `$imap`): int

Posta kutusuna en son gelen ileti sayısını döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Son gelen ileti sayısını bir tamsayı olarak döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_num_msg() - Posta kutusundaki ileti sayısını döndürür
- imap_status() - Bir posta kutusunun durum bilgisini döndürür

# imap_open

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_open — Belirtilen posta kutusuna yeni bir IMAP akımı açar

### Açıklama

function imap_open(
string `$pk`,
string `$kullanıcı`,
string `$parola`,
int `$bayraklar` = NIL,
int `$dnm_sayısı` = 0,
array `$seçenekler` = []
): IMAP\Connection|false

Belirtilen posta kutusuna (`pk`) bir IMAP akımı açar.

Bu işlev POP3 ve NNTP sunucularına oturum açmak için de kullanılabilirse de bazı işlevler ve özellikler sadece IMAP sunucularında kullanılabilmektedir.

### Bağımsız Değişkenler

`pk`

  Bir posta kutusu ismi, bir sunucu ve sunucu üzerindeki bir posta kutusu yolundan oluşur. `INBOX` özel bir isim olup kullanıcıların kişisel posta kutularını betimler. Uluslararası karakterler içeren posta kutusu isimleri, ASCII bölgesinde basılabilir hale getirilmek üzere imap_utf7_encode() ile kodlanır.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

  Posta kutusu isminin sunucu parçası '{' ve '}' ayraçları arasına yazılmış sunucu adı veya IP adresine iki nokta imi ile eklemlenebilen isteğe bağlı bir port ve '/' ile eklemlenebilen yine isteğe bağlı bir protokol belirtiminden oluşur.

  Tüm posta kutusu bağımsız değişkenlerinde sunucu parçasının belirtilmesi zorunludur.

  Tüm isimler `{` ayracı ile başlar ve genelde şu sözdizimine sahiptir: `"{" uzak_sistem_adı [":" port] [imler] "}" [pk_ismi]`. Sözdizimini oluşturan parçaların açıklamaları:

  - `uzak_sistem_adı` - Genel Ağ alan adı veya sunucunun IP adresi.
  - `port` - İsteğe bağlı TCP port numarası; öntanımlı değeri hizmetin öntanımlı port numarasıdır.
  - `imler` - İsteğe bağlı imlerin açıklamaları için aşağıdaki tabloya bakınız.
  - `pk_ismi` - Uzak posta kutusu ismi; INBOX öntanımlı isimdir.

  İsimler için seçimlik imler
  İm | Açıklama
  --- | ---
  `/service=`hizmet | Posta kutusuna erişimi sağlayan hizmetin adı; "imap" öntanımlı değerdir.
  `/user=`kullanıcı | Sunucuya oturum açmak için uzak kullanıcı ismi
  `/authuser=`kullanıcı | Kimlik doğrulaması için kullanılacak kullanıcı ismi; belirtilirse parola olarak bu kullanıcının parolası kullanılır.
  `/anonymous` | Bir anonim kullanıcı olarak erişim
  `/debug` | Uygulamanın hata ayıklama günlüğündeki protokol uzaktan ölçümü kaydedilir.
  `/secure` | Salt metin bir parola ağ üzerinden aktarılmaz.
  `/imap`, `/imap2`, `/imap2bis`, `/imap4`, `/imap4rev1` | `/service=imap`'a eşdeğerdir.
  `/pop3` | `/service=pop3`'e eşdeğerdir.
  `/nntp` | `/service=nntp`'ye eşdeğerdir.
  `/norsh` | Ön kimlik doğrulamalı IMAP oturumu oluşturmak için rsh veya ssh kullanılmaz
  `/ssl` | Oturumu şifrelemek için use the SSL kullanılır.
  `/validate-cert` | TLS/SSL sunucusundaki sertifikaları doğrular (bu öntanımlı davranıştır)
  `/novalidate-cert` | TLS/SSL sunucusundaki sertifikalar doğrulanmaz; sunucu öz- imzalı sertifikalar kullanıyorsa gerekir.
  `/tls` | Oturumu şifrelemek için `start-TLS` kullanımı zorlanır ve bunu desteklemeyen sunuculara bağlantı reddedilir.
  `/notls` | Oturumu şifrelemek için sunucular desteklese bile `start-TLS` kullanılmaz.
  `/readonly` | Salt-okunur posta kutusu açma isteği yapılır. (Sadece IMAP içindir. NNTP'de yoksayılır, SMTP ve POP3 ile kullanıldığında ise hata oluşur).

`kullanıcı`

  Kullanıcı ismi.

`Parola`

  `kullanıcı` ile ilişkili parola.

`bayraklar`

  Aşağıdakilerden bir veya birkaçını içeren bir bit maskesidir:

  - `OP_READONLY` - Posta kutusu salt-okunu açılır.
  - `OP_ANONYMOUS` - Haberler (sadece NNTP) için .newsrc kullanılmaz ve güncellenmez.
  - `OP_HALFOPEN` - IMAP ve NNTP isimleri için bir posta kutusu değil bir bağlantı açar.
  - `CL_EXPUNGE` - Kapatmadan önce posta kutusu sessizce silinir (ayrıca bakınız: imap_delete() ve imap_expunge())
  - `OP_DEBUG` - Hata ayıklama protokolü pazarlığı yapılır.
  - `OP_SHORTCACHE` - Küçük (sadece `elt`) önbellekleme
  - `OP_SILENT` - Olaylar aktarılmaz (dahili kullanım)
  - `OP_PROTOTYPE` - Sürücü önörneği döner.
  - `OP_SECURE` - Güvenilir olmayan bağlantıyla kimlik doğrulaması yapılmaz.
`dnm_sayısı`

  Azami bağlantı denemesi sayısı.

`seçenekler`

  Bağlantı bağımsız değişkenleri. Aşağıdaki anahtarlar bunlardan biri veya bir kaçını atamakta kullanılabilir:

  - `DISABLE_AUTHENTICATOR` - Kimlik kanıtlama özelliklerini iptal eder.

### Dönen Değerler

Hata durumunda `false` yoksa bir IMAP\Connection nesnesi döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Artık IMAP\Connection nesnesi dönüyor; evvelce imap akımı özkaynağı dönerdi.

### Örnekler

Örnek 1 - imap_open() işlevinin farklı kullanımları

    <?php
    // Yerel makinenin 143. portunda çalışan IMAP sunucusuna bağlan
    $mbox = imap_open("{localhost:143}INBOX", "birey", "parola");

    // Yerel makinenin 110. portunda çalışan POP3 sunucusuna bağlan
    $mbox = imap_open ("{localhost:110/pop3}INBOX", "birey", "parola");

    // Protokol belirtimi olarak /ssl kullanarak
    // bir SSL IMAP veya POP3 sunucusuna bağlan
    $mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "birey", "parola");

    // Protokol belirtimi olarak /ssl/novalidate-cert kullanarak öz-imzalı
    // sertifika kullanan bir SSL IMAP veya POP3 sunucusuna bağlan
    $mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}",
              "birey", "parola");

    // Yerel makinenin 119. portunda çalışan NNTP sunucusuna bağlan
    $nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
    // Bir uzak sunucuya bağlanmak için "localhost" yerine sunucunun adını
    // veya IP adresini yazın.
    ?>

Örnek 2 - imap_open() örneği

    <?php
    $mbox = imap_open("{imap.example.org:143}", "birey", "parola");

    echo "<h1>Posta kutuları</h1>\n";
    $folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

    if ($folders == false) {
        echo "İşlem başarısız oldu<br />\n";
    } else {
        foreach ($folders as $val) {
            echo $val . "<br />\n";
        }
    }

    echo "<h1>INBOX içindeki başlıklar</h1>\n";
    $headers = imap_headers($mbox);

    if ($headers == false) {
        echo "İşlem başarısız oldu<br />\n";
    } else {
        foreach ($headers as $val) {
            echo $val . "<br />\n";
        }
    }

    imap_close($mbox);
    ?>

### Ayrıca Bakınız

- imap_close() - IMAP akımını kapatır

# imap_ping

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_ping — Belirtilen IMAP akımı hala etkin mi diye bakar

### Açıklama

function imap_ping(IMAP\Connection `$imap`): bool

imap_ping() işlevi hala etkin olup olmadığını anlamak için belirtilen akıma ping atar. Yeni postaların varlığını sınamak için kullanılabilir; özellikle belli bir süre etkinlik olmadığında bağlantıyı kapatan sunucularda belli aralıklarla yeni eposta gelip gelmediğine bakmak için iyi bir yöntemdir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

### Dönen Değerler

Akım hala etkinse `true`, diğer tüm durumlarda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_ping() örneği

    <?php

    $imap = imap_open("{imap.example.org}", "mailadmin", "password");

    // bir süre geçtikten sonra
    if (!imap_ping($imap)) {
        // yeniden bağlanmaya çalış
    }

    ?>

# imap_qprint

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_qprint — Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür

### Açıklama

function imap_qprint(string `$dizge`): string|false

Belirtilen 7 bitlik (`quoted-printable` kodlu) dizgenin kodlamasını » RFC2045, bölüm 6.7'ye uygun olarak 8 bite dönüştürür.

### Bağımsız Değişkenler

`dizge`

  7 bitlik (`quoted-printable`) dizge.

### Dönen Değerler

8 bitlik dizge döner, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_8bit() - 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür

# imap_rename

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rename — imap_renamemailbox() işlevinin takma adıdır

### Açıklama

Bu işlev şu işlevin takma adıdır: imap_renamemailbox().

# imap_renamemailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_renamemailbox — Posta kutusunun ismini değiştirir

### Açıklama

function imap_renamemailbox(IMAP\Connection `$imap`, string `$eskisi`, string `$yenisi`): bool

Posta kutusunun ismini değiştirir. Posta kutusu isimlerinin biçemi için imap_open() işlevine bakın.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`eskisi`

  Eski posta kutusu ismi.

`yenisi`

  Yeni posta kutusu ismi.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_createmailbox() - Yeni bir posta kutusu oluşturur
- imap_deletemailbox() - Bir posta kutusunu siler

# imap_reopen

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_reopen — IMAP akımını yeni posta kutusunda yeniden açar

### Açıklama

function imap_reopen(
IMAP\Connection `$imap`,
string `$pk`,
int `$seçenekler` = 0,
int `$dnm_sayısı` = 0
): bool

Bir IMAP veya NNTP sunucu üzerinde belirtilen posta kutusu için (`pk`) belirtilen akımı yeniden açar.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`pk`

  Posta kutusu adı; ayrıntılar için imap_open()işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`seçenekler`

  Aşağıdakilerden gerekenleri içeren bir bit maskesi olarak belirtilir:

  - `OP_READONLY` - Posta kutusunu salt-okunur açar
  - `OP_ANONYMOUS` - Haberler (sadece NNTP) için .newsrc kullanılmaz ve güncellenmez.
  - `OP_HALFOPEN` - IMAP ve NNTP isimleri için bir posta kutusu değil bir bağlantı açar.
  - `OP_EXPUNGE` - Akım yeniden başlatılacağı zaman eskisi sessizce silinir.
  - `CL_EXPUNGE` - Kapatmadan önce posta kutusu sessizce silinir (ayrıca bakınız: imap_delete() ve imap_expunge())
`dnm_sayısı`

  Azama bağlantı denemesi sayısı.

### Dönen Değerler

Akım yeniden açılabilirse `true` yoksa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_reopen() örneği

    <?php
    $mbox = imap_open("{imap.example.org:143}INBOX", "username", "password")
              or die(implode(", ", imap_errors()));
    // ...
    imap_reopen($mbox, "{imap.example.org:143}INBOX.Sent")
              or die(implode(", ", imap_errors()));
    // ..
    ?>

# imap_rfc822_parse_adrlist

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rfc822_parse_adrlist — Bir adres dizgesini çözümler

### Açıklama

function imap_rfc822_parse_adrlist(string `$adres`, string `$konak_adı`): array

Belirtilen adresleri içeren dizgeyi » RFC 2822'de tanımlandığı gibi çözümler.

### Bağımsız Değişkenler

`adres`

  Eposta adreslerini içeren bir dizge.

`konak_adı`

  Öntanımlı konak adı.

### Dönen Değerler

Bir nesne dizisi döner. Nesnelerin özellikleri şunlardır:

- mailbox - Posta kutusu ismi (kullanıcı adı)
- host - Alan adı
- personal - Kullanıcının adı ve soyadı.
- adl - @ alan adres yolu

### Örnekler

Örnek 1 - imap_rfc822_parse_adrlist() örneği

    <?php

    $address_string = "Joe Doe <doe@example.com>, postmaster@example.com, root";
    $address_array  = imap_rfc822_parse_adrlist($address_string, "example.com");
    if (!is_array($address_array) || count($address_array) < 1) {
        die("Bir şeyler yanlış\n");
    }

    foreach ($address_array as $id => $val) {
        echo "# $id\n";
        echo "  Posta kutusu:  " . $val->mailbox . "\n";
        echo "  Alan adı:      " . $val->host . "\n";
        echo "  Adı ve soyadı: " . $val->personal . "\n";
        echo "  adl:           " . $val->adl . "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    # 0
      Posta kutusu:  doe
      Alan adı:      example.com
      Adı ve soyadı: Joe Doe
      adl:
    # 1
      Posta kutusu:  postmaster
      Alan adı:      example.com
      Adı ve soyadı:
      adl:
    # 2
      Posta kutusu:  root
      Alan adı:      example.com
      Adı ve soyadı:
      adl:

### Ayrıca Bakınız

- imap_rfc822_parse_headers() - Bir dizgedeki eposta başlıklarını çözümler

# imap_rfc822_parse_headers

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rfc822_parse_headers — Bir dizgedeki eposta başlıklarını çözümler

### Açıklama

function imap_rfc822_parse_headers(string `$başlıklar`, string `$konakadı` = "UNKNOWN"): stdClass

imap_header() işlevindeki gibi çeşitli başlık elemanlarından oluşan bir nesne döner.

### Bağımsız Değişkenler

`başlıklar`

  Çözümlenecek başlık verisi.

`konakadı`

  Öntanımlı konak adı.

### Dönen Değerler

imap_header() işlevindeki gibi bir nesne döndürür, farklı olarak IMAP sunucusundan gelen diğer özellikler ve imler hariç tutulur.

### Ayrıca Bakınız

- imap_rfc822_parse_adrlist() - Bir adres dizgesini çözümler

# imap_rfc822_write_address

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rfc822_write_address — Posta kutusu, alan adı ve kişisel bilgi ile gerektiği gibi biçemlenmiş bir eposta adresi dönürür

### Açıklama

function imap_rfc822_write_address(string `$posta_kutusu`, string `$alan_adı`, string `$adı_soyadı`): string|false

Belirtilen verilerle » RFC 2822'de tanımlandığı gibi düzgün olarak biçemlenmiş bir eposta adresi döndürür.

### Bağımsız Değişkenler

`posta_kutusu`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`alan_adı`

  Eposta adresinin alan adı parçası.

`adı_soyadı`

  Eposta adresi sahibinin adı ve soyadı.

### Dönen Değerler

» RFC 2822'de tanımlandığı gibi düzgün olarak biçemlenmiş bir eposta adresi döner, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 - imap_rfc822_write_address() örneği

    <?php
    echo imap_rfc822_write_address("hartmut", "example.com", "Hartmut Holzgraefe");
    ?>

Yukarıdaki örneğin çıktısı:

    Hartmut Holzgraefe <hartmut@example.com>

# imap_savebody

(PHP 5 >= 5.1.3, PHP 7, PHP 8)

imap_savebody — Belirtilen iletinin gövdesini bir dosyaya kaydeder

### Açıklama

function imap_savebody(
IMAP\Connection `$imap`,
resource|string|int `$dosya`,
int `$ileti_num`,
string `$parçanum` = "",
int `$seçenekler` = 0
): bool

Belirtilen ileti gövdesinin belirtilen parçasını bir dosyaya kaydeder.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`dosya`

  Bir dizge olarak ileti parçasının kaydedileceği dosyanın yolu veya fopen() tarafından döndürülmüş geçerli bir dosya tanıtıcısı.

`ileti_num`

  İleti numarası.

`parçanum`

  Parça numarası. IMAP4 belirtimine uygun olarak bir gövde parça listesi içindeki indisleri nokta ile ayrılmış tamsayılar biçeminde içeren bir dizge.

`seçenekler`

  Şunlardan gerekenleri içeren bir bit maskesidir:

  - `FT_UID` - `ileti_num` bir eşsiz kimliktir.
  - `FT_PEEK` - \Seen imi tanımlıysa bir daha tanımlanmaz.
  - `FT_INTERNAL` - CRLF ile meşrulaştırılmamış olarak dizgeyi dahili biçemde döndürür.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_fetchbody() - Belirtilen iletinin belli bir gövde bölümünü döndürür

# imap_scan

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_scan — imap_listscan() işlevinin takma adıdır

### Açıklama

Bu işlev şu işlevin takma adıdır: imap_listscan().

# imap_scanmailbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_scanmailbox — imap_listscan() işlevinin takma adıdır

### Açıklama

Bu işlev, imap_listscan() işlevinin takma adıdır.

# imap_search

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_search — Belirtilen kurala uyan iletileri bir dizi içinde döndürür

### Açıklama

function imap_search(
IMAP\Connection `$imap`,
string `$kural`,
int `$seçenekler` = SE_FREE,
string `$karküm` = ""
): array|false

Belirtilen IMAP akımı üzerinde açılmış posta kutusunda bir arama gerçekleştirir.

Örneğin, "annem" tarafından gönderilen yanıtlanmamış tüm iletileri döndürmek için şu kural kullanılır: "UNANSWERED FROM annem". Arama işlemi harf büyüklüğüne duyarsızdır. UW c-client kaynak kodundan okunan kural listesi eksik veya yanlış olabilir (ayrıca bakınız: » RFC1176, "tag SEARCH search_criteria" bölümü).

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`kural`

  Boşluk ayraçlı bir dizge olup aşağıdaki anahtar sözcüklere izin verilir. Çok sözcüklü bağımsız değişkenlerin çift tırnak içine alınması gerekir (örnek: `FROM "joey smith"`).

  - ALL - Kuralın kalanı ile eşleşen tüm iletiler döndürülür.
  - ANSWERED - \\ANSWERED (yanıtlandı) imli iletiler döndürülür.
  - BCC "dizge" - Bcc: başlığında "dizge" bulunan iletiler döndürülür
  - BEFORE "tarih" - Date: başlığındaki "tarih" tarihinden önceki iletiler döndürülür.
  - BODY "dizge" - İleti gövdesindeki "dizge" ile eşleşen iletiler döndürülür
  - CC "dizge" - Cc: başlığında "dizge" bulunan iletiler döndürülür.
  - DELETED - silinen iletiler döndürülür.
  - FLAGGED - \\FLAGGED imli (bazan Önemli ve Acil diye de nitelenir) iletiler döndürülür.
  - FROM "dizge" - From: başlığında "dizge" bulunan iletiler döndürülür.
  - KEYWORD "dizge" - Bir anahtar sözcük olarak "ileti" içeren iletiler döndürülür.
  - NEW - Yeni iletiler döndürülür.
  - OLD - Eski iletiler döndürülür.
  - ON "tarih" - Date: başlığında "tarih" bulunan iletiler döndürülür.
  - RECENT - \\RECENT (en yeni) imli iletiler döndürülür.
  - SEEN - \\SEEN (okundu) imli iletiler döndürülür.
  - SINCE "tarih" - Date: başlığında "tarih" tarihinden sonraki tarihli iletiler döndürülür.
  - SUBJECT "dizge" - Subject: başlığında "dizge" bulunan iletiler döndürülür.
  - TEXT "dizge" - "dizge" metniyle eşleşen iletiler döndürülür.
  - TO "dizge" - To: başlığında "dizge" bulunan iletiler döndürülür.
  - UNANSWERED - Yanıtlanmamış iletiler döndürülür.
  - UNDELETED - Silinmiş iletiler döndürülür.
  - UNFLAGGED - İmlenmemiş iletiler döndürülür.
  - UNKEYWORD "dizge" - "dizge" anahtar sözcüğünü içermeyen iletiler döndürülür.
  - UNSEEN - Henüz okunmamış iletiler döndürülür.
`seçenekler`

  Tek geçerli değer, iletilerin dizi içinde ileti numaralarıyla değil eşsiz kimlikleriyle dönmesini sağlayan `SE_UID` sabitidir.

`karküm`

  Dizge aramasında kullanılacak MIME karakter kümesi.

### Dönen Değerler

İleti numaralarını veya eşsiz kimlikleri içeren bir dizi döner.

`kural` ile belirtilen arama kuralı anlaşılamazsa veya kurala uyan hiçbir ileti yoksa `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_search() örneği

    <?php
    $imap   = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'foo@example.com', 'pass123', OP_READONLY);

    $some   = imap_search($imap, 'SUBJECT "HOWTO be Awesome" SINCE "8 August 2008"', SE_UID);
    $msgnos = imap_search($imap, 'ALL');
    $uids   = imap_search($imap, 'ALL', SE_UID);

    print_r($some);
    print_r($msgnos);
    print_r($uids);
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Array
    (
        [0] => 4
        [1] => 6
        [2] => 11
    )
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )
    Array
    (
        [0] => 1
        [1] => 4
        [2] => 6
        [3] => 8
        [4] => 11
        [5] => 12
    )

### Ayrıca Bakınız

- imap_listscan() - Belirtilen metin ile eşleşen posta kutularını listeler

# imap_set_quota

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

imap_set_quota — Belirtilen posta kutusu için bir kota tanımlar

### Açıklama

function imap_set_quota(IMAP\Connection `$imap`, string `$posta_kutusu`, int `$kota_sınırı`): bool

Belirtilen posta kutusu için bir kota üst sınırı tanımlar.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`posta_kutusu`

  Kotası tanımlanacak posta kutusu. IMAP standardına uygun olarak `kullanıcı.isim` biçeminde belirtilmelidir.

`kota_sınırı`

  `posta_kutusu`'nun azami boyu (KB olarak)

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_set_quota() örneği

    <?php
    $mbox = imap_open("{imap.example.org:143}", "mailadmin", "password");

    if (!imap_set_quota($mbox, "user.kalowsky", 3000)) {
        echo "Kota ayarlanırken bir sorun çıktı\n";
        return;
    }

    imap_close($mbox);
    ?>

### Notlar

Bu işlev şimdilik sadece c-client2000 ve üstü kütüphane sürümlerini kullananlar tarafından kullanılabilmektedir.

Belirtilen `imap_akımı` posta yöneticisi tarafından açılmış olmalıdır, yoksa işlev başarısız olur.

### Ayrıca Bakınız

- imap_open() - Belirtilen posta kutusuna yeni bir IMAP akımı açar
- imap_get_quota() - Belirtilen kullanıcının kota ayarlarını döndürür

# imap_setacl

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imap_setacl — Belirtilen posta kutusu ile ilgili erişim izinlerini tanımlar

### Açıklama

function imap_setacl(
IMAP\Connection `$imap`,
string `$posta_kutusu`,
string `$kullanıcı`,
string `$izinler`
): bool

Belirtilen posta kutusu ile ilgili erişim izinlerini tanımlar.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`posta_kutusu`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`kullanıcı`

  Erişim izinleri değiştirilecek kullanıcı.

`izinler`

  Kullanıcıya verilecek izinler. Boş bir dizge atanması geçerli izinleri siler.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Notlar

Bu işlev sadece c-client2000 ve üstü kütüphane sürümlerini kullanan kullanıcılar için kullanılabilir.

### Ayrıca Bakınız

- imap_getacl() - Belirtilen posta kutusunun erişim izinlerini döndürür

# imap_setflag_full

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_setflag_full — İletileri imler

### Açıklama

function imap_setflag_full(
IMAP\Connection `$imap`,
string `$aralık`,
string `$im`,
int `$seçenekler` = 0
): true

Belirtilen `aralık` içindeki iletilerin imlerine belirtilen `im` imini ekler.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`aralık`

  İleti numaraları aralığı. İmlenecek iletileri X,Y biçeminde sıralayabilir veya X:Y biçeminde bir aralık olarak belirtebilirsiniz.

`im`

  » RFC 2060 tarafından tanımlanmış şu imler belirtilebilir: `\Seen` (okundu), `\Answered` (yanıtlandı), `\Flagged` (imlendi), `\Deleted` (silindi) ve `\Draft` (taslak).

`seçenekler`

  Şu seçeneklerden sadece birini içerebilir:

  - `ST_UID` - `aralık` bağımsız değişkeni sıra numaraları yerine eşsiz kimlikleri içerir.

### Dönen Değerler

Daima `true` döndürür.

### Hatalar/İstisnalar

`seçenekler` geçersiz ise ValueError oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `seçenekler` geçersiz ise artık ValueError oluşuyor. Evvelce, bir uyarı verilir ve işlev `false` döndürürdü.
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_setflag_full() örneği

    <?php
    $pk = imap_open("{imap.example.org:143}", "birey", "parola")
         or die("bağlanılamadı: " . imap_last_error());

    $durum = imap_setflag_full($pk, "2,5", "\\Seen \\Flagged");

    echo gettype($durum) . "\n";
    echo $durum . "\n";

    imap_close($pk);
    ?>

### Ayrıca Bakınız

- imap_clearflag_full() - İletilerdeki imleri temizler

# imap_sort

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_sort — İletileri sıralar ve döndürür

### Açıklama

function imap_sort(
IMAP\Connection `$imap`,
int `$kural`,
bool `$tersine`,
int `$seçenekler` = 0,
?string `$arama_kuralı` = `null`,
?string `$karküm` = `null`
): array|false

Belirtilen bağımsız değişkenlere göre iletileri sıralar ve döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`kural`

  Şunlardan sadece biri belirtilebilir:

  - `SORTDATE` - İleti tarihi
  - `SORTARRIVAL` - Geliş tarihi
  - `SORTFROM` -İlk Kimden adresindeki posta kutusu
  - `SORTSUBJECT` - İleti konusu
  - `SORTTO` - İlk Kime adresindeki posta kutusu
  - `SORTCC` - İlk Karbon Kopya adresindeki posta kutusu
  - `SORTSIZE` - Sekizlik olarak ileti uzunluğu
`tersine`

  1 atanırsa sıralama ters yönde yapılır.

`seçenekler`

  Aşağıda, lazım olanlardan oluşan bir bit maskesi olarak belirtilir:

  - `SE_UID` - Sıra numarası yerine eşsiz kimlikler döner.
  - `SE_NOPREFETCH` - Arama yapılacak iletiler önce alınmaz.
`arama_kuralı`

  IMAP2 biçemi arama kuralı dizgesi. Ayrıntılar için bkz: imap_search()

`karküm`

  Dizgeleri sıralamakta kullanılacak MIME karakter kümesi.

### Dönen Değerler

Belirtilen bağımsız değişkenlere göre sıralanmış olarak bir ileti dizisi döner, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.
8.0.0 | `tersine` artık int değil bool türünde.
8.0.0 | `arama_kuralı` ve `karküm` artık `null` olabiliyor.

# imap_status

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_status — Bir posta kutusunun durum bilgisini döndürür

### Açıklama

function imap_status(IMAP\Connection `$imap`, string `$posta_kutusu`, int `$seçenekler`): stdClass|false

Belirtilen `posta_kutusu` hakkında durum bilgisi döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`posta_kutusu`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

`seçenekler`

  Geçerli seçenekler:

  - `SA_MESSAGES` - Posta kutusundaki ileti sayısını $durum->messages yapar.
  - `SA_RECENT` - Posta kutusundaki son iletinin numarasını $durum->recent yapar.
  - `SA_UNSEEN` - Posta kutusundaki okunmamış (yeni) ileti sayısını $durum->unseen yapar.
  - `SA_UIDNEXT` - Posta kutusunda kullanılacak sonraki eşsiz kimliği $durum->uidnext yapar.
  - `SA_UIDVALIDITY` - Posta kutusundaki eşsiz kimlikler geçersiz olduğunda değişen bir sabitin değerini $durum->uidvalidity yapar.
  - `SA_ALL` - Yukarıdakilerin hepsini tanımlar.

### Dönen Değerler

Durum bilgisini içeren bir nesne döndürür, başarısızlık durumunda `false` döner. Nesne şu özelliklere sahiptir: `messages`, `recent`, `unseen`, `uidnext` ve `uidvalidity`.

Ayrıca, `seçenekler` bağımsız değişkenine yukarıdaki sabitleri içeren bir bit maskesi atanır.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_status() örneği

    <?php
    $pk = imap_open("{imap.example.com}", "birey", "parola", OP_HALFOPEN)
          or die("bağlanılamadı: " . imap_last_error());

    $durum = imap_status($pk, "{imap.example.org}INBOX", SA_ALL);
    if ($durum) {
      echo "İleti sayısı:        " . $durum->messages    . "<br />\n";
      echo "Yeni gelenler:       " . $durum->recent      . "<br />\n";
      echo "Okunmamışlar:        " . $durum->unseen      . "<br />\n";
      echo "Sonraki eşsiz kimlik:" . $durum->uidnext     . "<br />\n";
      echo "kimli geçerli mi?:   " . $durum->uidvalidity . "<br />\n";
    } else {
      echo "imap_status başarısız oldu: " . imap_last_error() . "\n";
    }

    imap_close($pk);
    ?>

# imap_subscribe

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_subscribe — Bir posta kutusuna üyeliği başlatır

### Açıklama

function imap_subscribe(IMAP\Connection `$imap`, string `$posta_kutusu`): bool

Belirtilen posta kutusuna yeni bir üyelik başlatır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`posta_kutusu`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_unsubscribe() - Bir posta kutusundan üyeliği sonlandırır

# imap_thread

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imap_thread — Bir iletinin konu ağacını döndürür

### Açıklama

function imap_thread(IMAP\Connection `$imap`, int `$seçenekler` = `SE_FREE`): array|false

Bir iletinin konu ağacını döndürür.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`seçenekler`

### Dönen Değerler

Bir iletinin konu ağacını `REFERENCES` alanına göre içeren bir ilişkisel dizi döner. İşlem sırasında bir hata oluşmuşsa `false` döner.

Posta kutusundaki her ileti sonuç dizisinde üç girdi ile temsil edilir:

- $thread["XX.num"] - geçerli ileti numarası

- $thread["XX.next"] - sonraki

- $thread["XX.branch"] - dal

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Örnekler

Örnek 1 - imap_thread() örneği

    <?php

    // Bir haber grubundaki bir tartışmayı HTML olarak çıktılayalım

    $nntp = imap_open('{news.example.com:119/nntp}some.newsgroup', '', '');
    $threads = imap_thread($nntp);

    foreach ($threads as $key => $val) {
      $tree = explode('.', $key);
      if ($tree[1] == 'num') {
        $header = imap_headerinfo($nntp, $val);
        echo "<ul>\n\t<li>" . $header->fromaddress . "\n";
      } elseif ($tree[1] == 'branch') {
        echo "\t</li>\n</ul>\n";
      }
    }

    imap_close($nntp);

    ?>

# imap_timeout

(PHP 4 >= 4.3.3, PHP 5, PHP 7, PHP 8)

imap_timeout — IMAP zaman aşımını tanımlar veya döndürür

### Açıklama

function imap_timeout(int `$türü`, int `$süre` = -1): int|bool

IMAP zaman aşımını tanımlar veya döndürür.

### Bağımsız Değişkenler

`türü`

  Şunlardan biridir: `IMAP_OPENTIMEOUT`, `IMAP_READTIMEOUT`, `IMAP_WRITETIMEOUT`, `IMAP_CLOSETIMEOUT`.

`süre`

  Saniye cinsinden zaman aşımı süresi.

### Dönen Değerler

`süre` bağımsız değişkeni belirtilmişse `true` başarısızlık durumunda ise `false` döner.

`süre` belirtilmemişse veya -1 ise `türü` ile belirtilen türdeki geçerli zaman aşımı süresini bir tamsayı olarak döndürür.

### Örnekler

Örnek 1 - imap_timeout() örneği

    <?php

    echo "Okuma zaman aşımı: " . imap_timeout(IMAP_READTIMEOUT) . "\n";

    ?>

# imap_uid

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_uid — Numarası belirtilen iletiyle ilgili eşsiz kimliği döndürür

### Açıklama

function imap_uid(IMAP\Connection `$imap`, int `$ileti_num`): int|false

Numarası belirtilen iletiyle ilgili eşsiz kimliğini döndürür. Adından anlaşılacağı gibi eşsiz kimlik eşsiz bir betimleyici olup posta kutusundaki her değişiklikte ileti numarası değişse bile o değişmez.

Bu işlev, imap_msgno() işlevinin tersidir.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  İleti numarası.

### Dönen Değerler

Belirtilen iletinin eşsiz kimliği döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Notlar

> Bilginize:

> Bu işlev POP3 posta kutularında kullanılamaz.

### Ayrıca Bakınız

- imap_msgno() - Belirtilen eşsiz kimlik için ileti numarasını döndürür

# imap_undelete

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_undelete — Silindi diye imlenmiş bir iletinin imini kaldırır

### Açıklama

function imap_undelete(IMAP\Connection `$imap`, string `$ileti_num`, int `$seçenekler` = 0): true

Belirtilen iletiden imap_delete() veya imap_mail_move() işleviyle konmuş silme imini kaldırır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`ileti_num`

  IMAP4 tarzı aralık dizgesi biçeminde bir veya daha fazla ileti içeren bir dizge (`"n"`, `"n:m"` veya bunların virgüllerle ayrılmış birleşimleri).

`seçenekler`

### Dönen Değerler

Daima `true` döndürür.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_delete() - Belirtilen iletiyi silindi olarak imler
- imap_mail_move() - Belirtilen iletiyi bir posta kutusuna taşır

# imap_unsubscribe

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_unsubscribe — Bir posta kutusundan üyeliği sonlandırır

### Açıklama

function imap_unsubscribe(IMAP\Connection `$imap`, string `$posta_kutusu`): bool

Belirtilen `posta_kutusu` ile üyeliği sonlandırır.

### Bağımsız Değişkenler

`imap`

  IMAP\Connection nesnesi.

`posta_kutusu`

  Posta kutusu ismi; daha fazla bilgi için imap_open() işlevine bakınız.

  Uyarı

  imap.enable_insecure_rsh iptal edilmedikçe bu bağımsız değişkene güvenilir olmayan verinin aktarılması güvenli değildir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | `imap` bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir `imap` değeri kabul ederdi.

### Ayrıca Bakınız

- imap_subscribe() - Bir posta kutusuna üyeliği başlatır

# imap_utf7_decode

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_utf7_decode — Bir dizgenin karakter kodlamasını takviyeli UTF-7'den ISO-8859-1'e dönüştürür

### Açıklama

function imap_utf7_decode(string `$metin`): string|false

Takviyeli UTF-7 ile kodlanmış `metin` dizgesinin karakter kodlamasını ISO-8859-1'e dönüştürür.

Basılabilir ASCII karakter aralığı dışında kalan karakterler içeren posta kutusu isimlerini kodlamak için gerekir.

### Bağımsız Değişkenler

`metin`

  » RFC 2060, 5.1.3. bölümünde tanımlanan takviyeli UTF-7 ile kodlanmış bir dizge.

### Dönen Değerler

`metin`, geçersiz takviyeli UTF-7 kodları veya ISO-8859-1'de bulunmayan karakterler içeriyorsa `false`, yoksa dönüştürülmüş dizge döner.

### Ayrıca Bakınız

- imap_utf7_encode() - ISO-8859-1 kodlu bir dizgenin kodlamasını takviyeli UTF-7'ye dönüştürür

# imap_utf7_encode

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_utf7_encode — ISO-8859-1 kodlu bir dizgenin kodlamasını takviyeli UTF-7'ye dönüştürür

### Açıklama

function imap_utf7_encode(string `$veri`): string

Belirtilen `veri` dizgesinin karakter kodlamasını takviyeli UTF-7'ye dönüştürür.

Basılabilir ASCII karakter aralığı dışında kalan karakterler içeren posta kutusu isimlerini kodlamak için gerekir.

### Bağımsız Değişkenler

`veri`

  ISO-8859-1 kodlu bir dizge.

### Dönen Değerler

`veri` dizgesinin » RFC 2060'ın 5.1.3. bölümünde tanımlanan takviyeli UTF-7 ile kodlanmış halini döndürür.

### Ayrıca Bakınız

- imap_utf7_decode() - Bir dizgenin karakter kodlamasını takviyeli UTF-7'den ISO-8859-1'e dönüştürür

# imap_utf8

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_utf8 — MIME kodlu metni UTF-8'e dönüştürür

### Açıklama

function imap_utf8(string `$mimeli_metin`): string

Belirtilen MIME kodlu `mimeli_metin` dizgesinin karakter kodlamasını, karakter kümesi libc_istemci tarafından biliniyorsa UTF-8'e dönüştürür, aksi takdirde belirtilen metnin kodlaması çözümlenir ama UTF-8'e dönüştürülmez.

### Bağımsız Değişkenler

`mimeli_metin`

  MIME kodlu dizge. MIME kodlama yöntemi » RFC2047'de, UTF-8 belirtimi ise » RFC2044'te açıklanmıştır.

### Dönen Değerler

Kodu çözülmüş ve mümkünse UTF-8'e dönüştürülmüş dizge.

### Örnekler

Örnek 1 - imap_utf8() örneği

    <?php
    echo imap_utf8("Johannes =?ISO-8859-1?Q?Schl=FCter?=");
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Johannes Schlüter

### Ayrıca Bakınız

- imap_mime_header_decode() - MIME başlık elemanlarının kodlamasını açar

# imap_utf8_to_mutf7

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

imap_utf8_to_mutf7 — UTF-8 dizgeyi değiştirilmiş UTF-7 olarak kodlar

### Açıklama

function imap_utf8_to_mutf7(string `$dizge`): string|false

UTF-8 dizgesini (RFC 2060, 5.1.3 bölümünde belirtildiği gibi) değiştirilmiş UTF-7 olarak kodlar.

> Bilginize:

> Bu işlev yalnızca, utf8_to_mutf7() işlevini libcclient dışa aktarıyorsa kullanılabilir.

### Bağımsız Değişkenler

`dizge`

  UTF-8 kodlu dizge.

### Dönen Değerler

Değiştirilmiş UTF-7 kodlu `dizge` ile döner, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- imap_mutf7_to_utf8() - Değiştirilmiş bir UTF-7 dizgesini UTF-8 olarak kodlar

## İçindekiler

- imap_8bit — 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür
- imap_alerts — Oluşan tüm IMAP uyarı iletilerini döndürür
- imap_append — Belirtilen posta kutusuna bir ileti ekler
- imap_base64 — Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür
- imap_binary — 8 bitlik bir dizgeyi bir base64 dizgesine dönüştürür
- imap_body — İleti gövdesini okur
- imap_bodystruct — Belirtilen iletinin bir gövde bölümünün yapısını okur
- imap_check — Posta kutusu bilgilerini döndürür
- imap_clearflag_full — İletilerdeki imleri temizler
- imap_close — IMAP akımını kapatır
- imap_create — imap_createmailbox işlevinin takma adıdır
- imap_createmailbox — Yeni bir posta kutusu oluşturur
- imap_delete — Belirtilen iletiyi silindi olarak imler
- imap_deletemailbox — Bir posta kutusunu siler
- imap_errors — Oluşan tüm IMAP hatalarının iletilerini döndürür
- imap_expunge — Silindi imli tüm iletileri gerçekten siler
- imap_fetch_overview — Belirtilen iletinin başlıklarından belli bilgileri toplar
- imap_fetchbody — Belirtilen iletinin belli bir gövde bölümünü döndürür
- imap_fetchheader — Bir iletinin başlığını döndürür
- imap_fetchmime — İletinin belirli bir bölümü için MIME başlıklarını getirir
- imap_fetchstructure — Belli bir iletinin yapısını okur
- imap_fetchtext — imap_body işlevinin takma adıdır
- imap_gc — IMAP önbelleğini temizler
- imap_get_quota — Belirtilen kullanıcının kota ayarlarını döndürür
- imap_get_quotaroot — Kullanıcının kendi kota ayarlarını döndürür
- imap_getacl — Belirtilen posta kutusunun erişim izinlerini döndürür
- imap_getmailboxes — Posta kutuları hakkında ayrıntılı bilgi döndürür
- imap_getsubscribed — Üyesi olunan tüm posta kutularını listeler
- imap_header — imap_headerinfo işlevinin takma adıdır
- imap_headerinfo — Belirtilen iletinin başlığını okur
- imap_headers — Bir posta kutusu içindeki tüm iletilerin başlıklarını döndürür
- imap_is_open — Check if the IMAP stream is still valid
- imap_last_error — Geçerli sayfa isteği sırasında oluşan son IMAP hatasının açıklamasını döndürür
- imap_list — Posta kutularını listeler
- imap_listmailbox — imap_list işlevinin takma adıdır
- imap_listscan — Belirtilen metin ile eşleşen posta kutularını listeler
- imap_listsubscribed — imap_lsub işlevinin takma adıdır
- imap_lsub — Üyesi olunan tüm posta kutularını listeler
- imap_mail — Bir eposta iletisi gönderir
- imap_mail_compose — Zarfı ve gövdesi belirtilen MIME iletisini oluşturur
- imap_mail_copy — Belirtilen iletileri bir posta kutusuna kopyalar
- imap_mail_move — Belirtilen iletiyi bir posta kutusuna taşır
- imap_mailboxmsginfo — Posta kutusu hakkında bilgi döndürür
- imap_mime_header_decode — MIME başlık elemanlarının kodlamasını açar
- imap_msgno — Belirtilen eşsiz kimlik için ileti numarasını döndürür
- imap_mutf7_to_utf8 — Değiştirilmiş bir UTF-7 dizgesini UTF-8 olarak kodlar
- imap_num_msg — Posta kutusundaki ileti sayısını döndürür
- imap_num_recent — Posta kutusuna en son gelen ileti sayısını döndürür
- imap_open — Belirtilen posta kutusuna yeni bir IMAP akımı açar
- imap_ping — Belirtilen IMAP akımı hala etkin mi diye bakar
- imap_qprint — Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür
- imap_rename — imap_renamemailbox işlevinin takma adıdır
- imap_renamemailbox — Posta kutusunun ismini değiştirir
- imap_reopen — IMAP akımını yeni posta kutusunda yeniden açar
- imap_rfc822_parse_adrlist — Bir adres dizgesini çözümler
- imap_rfc822_parse_headers — Bir dizgedeki eposta başlıklarını çözümler
- imap_rfc822_write_address — Posta kutusu, alan adı ve kişisel bilgi ile gerektiği gibi biçemlenmiş bir eposta adresi dönürür
- imap_savebody — Belirtilen iletinin gövdesini bir dosyaya kaydeder
- imap_scan — imap_listscan işlevinin takma adıdır
- imap_scanmailbox — imap_listscan işlevinin takma adıdır
- imap_search — Belirtilen kurala uyan iletileri bir dizi içinde döndürür
- imap_set_quota — Belirtilen posta kutusu için bir kota tanımlar
- imap_setacl — Belirtilen posta kutusu ile ilgili erişim izinlerini tanımlar
- imap_setflag_full — İletileri imler
- imap_sort — İletileri sıralar ve döndürür
- imap_status — Bir posta kutusunun durum bilgisini döndürür
- imap_subscribe — Bir posta kutusuna üyeliği başlatır
- imap_thread — Bir iletinin konu ağacını döndürür
- imap_timeout — IMAP zaman aşımını tanımlar veya döndürür
- imap_uid — Numarası belirtilen iletiyle ilgili eşsiz kimliği döndürür
- imap_undelete — Silindi diye imlenmiş bir iletinin imini kaldırır
- imap_unsubscribe — Bir posta kutusundan üyeliği sonlandırır
- imap_utf7_decode — Bir dizgenin karakter kodlamasını takviyeli UTF-7'den ISO-8859-1'e dönüştürür
- imap_utf7_encode — ISO-8859-1 kodlu bir dizgenin kodlamasını takviyeli UTF-7'ye dönüştürür
- imap_utf8 — MIME kodlu metni UTF-8'e dönüştürür
- imap_utf8_to_mutf7 — UTF-8 dizgeyi değiştirilmiş UTF-7 olarak kodlar

# IMAP\Connection sınıfı

(PHP 8 >= 8.1.0)

## Giriş

PHP 8.1.0 ve sonrasında `imap` özkaynağının yerini alan tamamen donuk sınıf.

## Sınıf Sözdizimi

final class IMAP\Connection {
}

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- IMAP İşlevleri
  - imap_8bit — 8 bitlik bir dizgeyi 7 bitlik (quoted-printable) bir dizgeye dönüştürür
  - imap_alerts — Oluşan tüm IMAP uyarı iletilerini döndürür
  - imap_append — Belirtilen posta kutusuna bir ileti ekler
  - imap_base64 — Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür
  - imap_binary — 8 bitlik bir dizgeyi bir base64 dizgesine dönüştürür
  - imap_body — İleti gövdesini okur
  - imap_bodystruct — Belirtilen iletinin bir gövde bölümünün yapısını okur
  - imap_check — Posta kutusu bilgilerini döndürür
  - imap_clearflag_full — İletilerdeki imleri temizler
  - imap_close — IMAP akımını kapatır
  - imap_create — imap_createmailbox işlevinin takma adıdır
  - imap_createmailbox — Yeni bir posta kutusu oluşturur
  - imap_delete — Belirtilen iletiyi silindi olarak imler
  - imap_deletemailbox — Bir posta kutusunu siler
  - imap_errors — Oluşan tüm IMAP hatalarının iletilerini döndürür
  - imap_expunge — Silindi imli tüm iletileri gerçekten siler
  - imap_fetch_overview — Belirtilen iletinin başlıklarından belli bilgileri toplar
  - imap_fetchbody — Belirtilen iletinin belli bir gövde bölümünü döndürür
  - imap_fetchheader — Bir iletinin başlığını döndürür
  - imap_fetchmime — İletinin belirli bir bölümü için MIME başlıklarını getirir
  - imap_fetchstructure — Belli bir iletinin yapısını okur
  - imap_fetchtext — imap_body işlevinin takma adıdır
  - imap_gc — IMAP önbelleğini temizler
  - imap_get_quota — Belirtilen kullanıcının kota ayarlarını döndürür
  - imap_get_quotaroot — Kullanıcının kendi kota ayarlarını döndürür
  - imap_getacl — Belirtilen posta kutusunun erişim izinlerini döndürür
  - imap_getmailboxes — Posta kutuları hakkında ayrıntılı bilgi döndürür
  - imap_getsubscribed — Üyesi olunan tüm posta kutularını listeler
  - imap_header — imap_headerinfo işlevinin takma adıdır
  - imap_headerinfo — Belirtilen iletinin başlığını okur
  - imap_headers — Bir posta kutusu içindeki tüm iletilerin başlıklarını döndürür
  - imap_is_open — Check if the IMAP stream is still valid
  - imap_last_error — Geçerli sayfa isteği sırasında oluşan son IMAP hatasının açıklamasını döndürür
  - imap_list — Posta kutularını listeler
  - imap_listmailbox — imap_list işlevinin takma adıdır
  - imap_listscan — Belirtilen metin ile eşleşen posta kutularını listeler
  - imap_listsubscribed — imap_lsub işlevinin takma adıdır
  - imap_lsub — Üyesi olunan tüm posta kutularını listeler
  - imap_mail — Bir eposta iletisi gönderir
  - imap_mail_compose — Zarfı ve gövdesi belirtilen MIME iletisini oluşturur
  - imap_mail_copy — Belirtilen iletileri bir posta kutusuna kopyalar
  - imap_mail_move — Belirtilen iletiyi bir posta kutusuna taşır
  - imap_mailboxmsginfo — Posta kutusu hakkında bilgi döndürür
  - imap_mime_header_decode — MIME başlık elemanlarının kodlamasını açar
  - imap_msgno — Belirtilen eşsiz kimlik için ileti numarasını döndürür
  - imap_mutf7_to_utf8 — Değiştirilmiş bir UTF-7 dizgesini UTF-8 olarak kodlar
  - imap_num_msg — Posta kutusundaki ileti sayısını döndürür
  - imap_num_recent — Posta kutusuna en son gelen ileti sayısını döndürür
  - imap_open — Belirtilen posta kutusuna yeni bir IMAP akımı açar
  - imap_ping — Belirtilen IMAP akımı hala etkin mi diye bakar
  - imap_qprint — Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür
  - imap_rename — imap_renamemailbox işlevinin takma adıdır
  - imap_renamemailbox — Posta kutusunun ismini değiştirir
  - imap_reopen — IMAP akımını yeni posta kutusunda yeniden açar
  - imap_rfc822_parse_adrlist — Bir adres dizgesini çözümler
  - imap_rfc822_parse_headers — Bir dizgedeki eposta başlıklarını çözümler
  - imap_rfc822_write_address — Posta kutusu, alan adı ve kişisel bilgi ile gerektiği gibi biçemlenmiş bir eposta adresi dönürür
  - imap_savebody — Belirtilen iletinin gövdesini bir dosyaya kaydeder
  - imap_scan — imap_listscan işlevinin takma adıdır
  - imap_scanmailbox — imap_listscan işlevinin takma adıdır
  - imap_search — Belirtilen kurala uyan iletileri bir dizi içinde döndürür
  - imap_set_quota — Belirtilen posta kutusu için bir kota tanımlar
  - imap_setacl — Belirtilen posta kutusu ile ilgili erişim izinlerini tanımlar
  - imap_setflag_full — İletileri imler
  - imap_sort — İletileri sıralar ve döndürür
  - imap_status — Bir posta kutusunun durum bilgisini döndürür
  - imap_subscribe — Bir posta kutusuna üyeliği başlatır
  - imap_thread — Bir iletinin konu ağacını döndürür
  - imap_timeout — IMAP zaman aşımını tanımlar veya döndürür
  - imap_uid — Numarası belirtilen iletiyle ilgili eşsiz kimliği döndürür
  - imap_undelete — Silindi diye imlenmiş bir iletinin imini kaldırır
  - imap_unsubscribe — Bir posta kutusundan üyeliği sonlandırır
  - imap_utf7_decode — Bir dizgenin karakter kodlamasını takviyeli UTF-7'den ISO-8859-1'e dönüştürür
  - imap_utf7_encode — ISO-8859-1 kodlu bir dizgenin kodlamasını takviyeli UTF-7'ye dönüştürür
  - imap_utf8 — MIME kodlu metni UTF-8'e dönüştürür
  - imap_utf8_to_mutf7 — UTF-8 dizgeyi değiştirilmiş UTF-7 olarak kodlar
- IMAP\Connection — IMAP\Connection sınıfı

# Eposta

# Giriş

mail() işlevi eposta göndermeyi mümkün kılar.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Çalışma Anı Yapılandırması

## Gereksinimler

Eposta işlevlerinin kullanılabilmesi için PHP'nin derlenmesi sırasında `sendmail` çalıştırılabilirine erişebilmesi gerekir. Eğer qmail, postfix gibi başka bir eposta gönderme programı kullanıyorsanız PHP'nin, bunların sendmail sarmalayıcılarını kullandığından emin olmalısınız. PHP, `sendmail` dosyasını önce PATH ortam değişkenindeki yollarda arar. Bulamazsa şu yolları arar: `/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib`. `sendmail` dosyasının PATH ortam değişkenindeki yollardan birinde bulunmasını sağlarsanız iyi olur. Ayrıca, PHP'yi derleyen kullanıcının da `sendmail` çalıştırılabilirine erişimi olması gerekir.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Eposta eklentisi yapılandırma yönergeleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mail.add_x_header | "0" | `INI_PERDIR` |
mail.log | `null` | `INI_PERDIR` | `INI_SYSTEM`|`INI_PERDIR`
mail.force_extra_parameters | NULL | `INI_PERDIR` | `INI_SYSTEM`|`INI_PERDIR`
SMTP | "localhost" | `INI_ALL` |
smtp_port | "25" | `INI_ALL` |
sendmail_from | NULL | `INI_ALL` |
sendmail_path | "/usr/sbin/sendmail -t -i" | `INI_SYSTEM` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mail.add_x_header` bool

  Betiğin kullanıcı kimliğini ve dosya adını değer olarak alan `X-PHP-Originating-Script` başlığını ekler.

`mail.log` string

  Tüm mail() çağrılarının günlükleneceği dosyanın tam yolu. Günlük girdileri betiğin tam yolu, satır numarası, `To` adresi ve başlıkları içerir.

`mail.force_extra_parameters` string

  Belirtilen bağımsız değişkenlerin sendmail çalıştırılabilirine ek bağımsız değişkenler olarak aktarılmasını sağlar. Bu bağımsız değişkenler daima mail() işlevinin beşinci bağımsız değişkeninin değerinin yerine kullanılır.

`SMTP` string

  Sadece Windows altında kullanılır: PHP'nin mail() işleviyle eposta göndermek için kullanacağı SMTP sunucusunun konak ismi veya IP adresi.

`smtp_port` int

  Sadece Windows altında kullanılır: mail() işlevi ile eposta gönderirken `SMTP` yönergesinde belirtilen sunucuya bağlantı için kullanılacak port numarası; 25 öntanımlıdır.

`sendmail_from` string

  Windows altında SMTP ile eposta gönderirken kullanılan gönderici (`"From:"`) eposta adresi. Bu adres ayrıca `"Return-Path:"` başlığının değeri olarak da kullanılır.

`sendmail_path` string

  sendmail programının bulunduğu yer; normalde /usr/sbin/sendmail veya /usr/lib/sendmail'dir. configure bu yeri sizin için bulup, bu yeri yönergenin öntanımlı değeri haline getirir; eğer bu işlem başarısız olursa, programın yerini siz de belirtebilirsiniz.

  sendmail kullanılmayan sistemlerde bu yönergeye aynı amaçla kullanılan programın yerini yazmalısınız. Örneğin, » Qmail kullananlar /var/qmail/bin/sendmail veya /var/qmail/bin/qmail-inject gibi bir atama yapabilirler.

  qmail-inject epostayı gönderirken herhangi bir seçenek belirtmeyi gerektirmez.

  Bu yönerge Windows altında da çalışır. Belirtildiği takdirde, `smtp`, `smtp_port` ve `sendmail_from` yönergeleri yok sayılır ve bu yönergede belirtilen komut çalıştırılır.

# Eposta İşlevleri

# ezmlm_hash

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ezmlm_hash — EZMLM için gereken ileti özetini hesaplar

Uyarı

Bu işlevin kullanımı PHP 7.4.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function ezmlm_hash(string `$adres`): int

ezmlm_hash() işlevi EZMLM eposta listelerini bir MySQL veritabanınıda tutarken gereken ileti özetini hesaplar.

### Bağımsız Değişkenler

`adres`

  Özeti hesaplanacak eposta adresi.

### Dönen Değerler

`adres` ile belirtilen eposta adresinin özetini bir dizge olarak döndürür.

### Örnekler

Örnek 1 - Adres özetinin hesaplanıp bir kullanıcının üye yapılması

    <?php

    $adres = "joecool@example.com";
    $özet = ezmlm_hash($adres);
    $sorgu = sprintf("INSERT INTO sample VALUES (%s, '%s')", $özet, $adres);
    $db->query($sorgu); // PHPLIB db arayüzü kullanılarak

    ?>

# mail

(PHP 4, PHP 5, PHP 7, PHP 8)

mail — Eposta gönderir

### Açıklama

function mail(
string `$kime`,
string `$konu`,
string `$ileti`,
array|string `$ek_başlıklar` = [],
string `$ek_bağımsız değişkenler` = ""
): bool

Sends an email.

### Bağımsız Değişkenler

`kime`

  Epostanın alıcısı veya alıcıları.

  Bu dizgenin biçemi » RFC 2822'ye uygun olmalıdır. Bazı örnekler:

  - user@example.com
  - user@example.com, anotheruser@example.com
  - User
  - User , Another User
`konu`

  Epostanın konusu.

  Dikkat

  Konu » RFC 2047'nin koşullarını yerine getirmelidir.

`ileti`

  Gönderilecek ileti.

  Her satır bir CRLF (\r\n) karakteri ile bitmeli ve 70 karakterden uzun olmamalıdır.

  Dikkat

  (Sadece Windows'ta) PHP, bir SMTP sunucu ile doğrudan konuşacaksa, bir satırın başında noktaya rastlanırsa bu nokta silinir. Bu hoşunuza gitmiyorsa bu noktaları çift nokta haline getirin.

      <?php
      $text = str_replace("\n.", "\n..", $text);
      ?>

`ek_başlıklar` (seçimlik)

  Eposta başlığının sonuna yerleştirilecek string veya array türünde veri.

  Bu genellikle ek başlıklar eklemek için kullanılır (From, Cc, Bcc gibi). Çok sayıda başlık eklenecekse bunlar birer CRLF (\r\n) ile birbirlerinden ayrılmalıdır. Bu başlığı oluşturmak için dış veriler kullanılıyorsa, istenmeyen başlıkların araya girmemesi için veriler elden geçirilip temizlenmelidir.

  Bir dizi aktarılmışsa, anahtarları başlık isimleri, değerleri de ilgili başlık değerleri olmalıdır.

  > Bilginize:

  > Eposta gönderilirken bir `From` başlığı içermesi gerekir. Bu başlık, bu bağımsız değişken ile belirtilebileceği gibi öntanımlı gönderici adresini php.ini dosyasında da belirtmek mümkündür.

  > Bunu yapmazsanız şöyle bir hata alırsınız: `Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing` (Uyarı: mail(): php.ini dosyasında "sendmail_from" atanmamış veya özel "From:" başlığı eksik). `From` başlığı Windows altında doğrudan SMTP üzerinden gönderirken `Return-Path` başlığını da tanımlar.

  > Bilginize:

  > Eğer ileti alınmazsa satırsonlarını CRLF (\r\n) ile değil sadece LF (\n) ile sonlandırmayı deneyin. Bazı düşük kaliteli Unix eposta sunucuları (en bilineni » qmail) LF karakterlerini otomatik olarak CRLF karakterleri ile değiştirir (CRLF kullanıldıysa sonuç CRCRLF olur). Bu yöntem » RFC 2822'ye uygun olmadığından başka çare yoksa kullanılmalıdır.

`ek_bağımsız değişkenler` (seçimlik)

  Eposta gönderirken kullanılan programa komut satırı seçenekleri aktarmak için kullanılır. Eposta gönderme programının adı `sendmail_path` yapılandırma yönergesinde belirtilir. Örneğin, sendmail kullanılıyorsa bu bağımsız değişkeni `-f` komut satırı seçeneği ile zarf gönderici adresini belirtmek için kullanabilirsiniz.

  Bu bağımsız değişken komut çalıştırmayı engellemek için dahili olarak escapeshellcmd() işlevi tarafından öncelenir, fakat işlev ek bağımsız değişkenler eklemeye izin verir. Güvenlik nedeniyle, kabuk komutuna istenmeyen bağımsız değişkenler eklenmesinden kaçınmak için bu bağımsız değişkenin kullanıcı tarafından elden geçirilip temizlenmesi önerilir.

  escapeshellcmd() işlevi otomatik uygulandığından, internet RFCleri tarafından eposta adreslerinde izin verilen bazı karakterler kullanılamaz. mail() böyle karakterlere izin veremez, bu bakımdan bu tür karakterlerin kullanılmasının gerekli olduğu programlarda alternatif e-posta gönderme yöntemleri (bir iskelet veya kitaplık kullanmak gibi) önerilir.

  Zarf göndericisinin (-f) bu bağımsız değişken ile belirtildiği durumda, iletiye bir '`X-Warning`' başlığının eklenmemesi için HTTP sunucusunu çalıştıran kullanıcının sendmail yapılandırma dosyasını güvenilir kullanıcı olarak kaydedilmesi gerekir. sendmail kullanıcıları için, bu dosyanın yeri: /etc/mail/trusted-users.

### Dönen Değerler

Eposta sunucu tarafından başarıyla teslim alınmışsa `true`, aksi takdirde `false` döner.

Yalnız şuna dikkat edin: Epostanın sunucu tarafından teslim alınması, epostanın alıcısına ulaştığı anlamına gelmez.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.2.0 | `ek_başlıklar` bağımsız değişkeni artık dizi de kabul ediyor.

### Örnekler

Örnek 1 - Eposta gönderimi

mail() işlevi ile basit bir eposta gönderelim:

    <?php
    // İleti
    $ileti = "Line 1\r\nLine 2\r\nLine 3";

    // Satırlarımızın 70 karakterden uzun olanlarını katlamamız lazım
    $ileti = wordwrap($ileti, 70, "\r\n");

    // Epostayı gönderelim
    mail('kafeinli@example.com', 'İleti konusu', $ileti);
    ?>

Örnek 2 - Ek başlıklarla eposta gönderimi

From ve Reply-To adreslerini ek başlıklar olarak belirtelim:

    <?php
    $kime      = 'nobody@example.com';
    $konu      = 'konu';
    $ileti     = 'Merhaba';
    $başlıklar = 'From: webmaster@example.com' . "\r\n" .
        'Reply-To: webmaster@example.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($kime, $konu, $ileti, $başlıklar);
    ?>

Örnek 3 - array türünde ek başlıklarla eposta gönderimi

Bu örnekte, üst örnekteki eposta gönderilmekte, ancak ek başlıklar bir dizi olarak aktarılmaktadır (PHP 7.2.0 ve sonrasında kullanılabilir).

    <?php
    $kime      = 'nobody@example.com';
    $konu      = 'konu';
    $ileti     = 'Merhaba';
    $başlıklar = array(
        'From' => 'webmaster@example.com',
        'Reply-To' => 'webmaster@example.com',
        'X-Mailer' => 'PHP/' . phpversion()
    );

    mail($kime, $konu, $ileti, $başlıklar);
    ?>

Örnek 4 - Ek komut satırı seçenekleriyle eposta gönderimi

`sendmail_path` yönergesinde belirtilen posta gönderme programına komut satırı bağımsız değişkenleri aktarmak için `ek_bağımsız değişkenler` bağımsız değişkeni kullanılabilir.

    <?php
    mail('nobody@example.com', 'the subject', 'the message', null,
       '-fwebmaster@example.com');
    ?>

Örnek 5 - HTML eposta gönderimi

mail() işleviyle HTML eposta göndermek de mümkündür.

    <?php
    // çok sayıda alıcı
    $to = 'johny@example.com, sally@example.com'; // virgüle dikkat

    // konu
    $subject = 'Ağustos ayında hatırlanacak doğum günleri';

    // ileti
    $message = '
    <html>
    <head>
      <title>Ağustos ayında hatırlanacak doğum günleri</title>
    </head>
    <body>
      <p>Ağustos ayındaki doğum günleri!</p>
      <table>
        <tr>
          <th>Kişi</th><th>Gün</th><th>Ay</th><th>Yıl</th>
        </tr>
        <tr>
          <td>Ali</td><td>3</td><td>Ağustos</td><td>1970</td>
        </tr>
        <tr>
          <td>Veli</td><td>17</td><td>Ağustos</td><td>1973</td>
        </tr>
      </table>
    </body>
    </html>
    ';

    // HTML eposta göndermek için, the Content-type başlığı belirtilmeli
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-type: text/html; charset=utf-8';

    // Ek başlıklar
    +$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
    +$headers[] = 'From: Birthday Reminder <birthday@example.com>';
    +$headers[] = 'Cc: birthdayarchive@example.com';
    +$headers[] = 'Bcc: birthdaycheck@example.com';

    // İletiyi postalayalım
    mail($to, $subject, $message, implode("\r\n", $headers));
    ?>

> Bilginize:

> HTML veya daha karmaşık bir eposta göndermek isterseniz » PEAR::Mail_Mime PEAR paketini kullanmanızı öneririz.

### Notlar

> Bilginize:

> mail() işlevinin Windows SMTP gerçeklenimi bir çok bakımdan sendmail gerçekleniminden farklıdır. Birincisi, iletileri göndermek için yerel bir program kullanılmaz, doğrudan soketlerle çalışılır ve MTA'nın soketi dinlediği varsayılır.

> İkincisi, `From:`, `Cc:`, `Bcc:` ve `Date:` gibi özel başlıklar, epostayı ilk alan MTA tarafından yorumlanmaz, fakat PHP tarafından çözümlenir.

> Aslında, `to` bağımsız değişkeninin "Adı Soyad <birisi@example.com>" biçeminde bir adres olmaması gerekir. mail komutu MTA ile anlaşırken bunu gerektiği gibi çözümleyemeyebilir.

> Bilginize:

> Çok sayıda epostayı göndermek için mail() işlevini bir döngüye sokmak hiç de iyi bir fikir değildir. Bu işlev her eposta için SMTP soketini açıp kapadığından verimli değildir.

> Çok sayıda eposta göndermek için, » PEAR::Mail ve » PEAR::Mail_Queue paketlerine bakınız.

> Bilginize:

> Şu RFC'ler yararlı olabilir: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049 ve » RFC 2822.

### Ayrıca Bakınız

- mb_send_mail() - Kodlanmış olarak posta gönderir
- imap_mail() - Bir eposta iletisi gönderir
- » PEAR::Mail
- » PEAR::Mail_Mime

## İçindekiler

- ezmlm_hash — EZMLM için gereken ileti özetini hesaplar
- mail — Eposta gönderir

- Yapılandırma/Kurulum
  - Gereksinimler
  - Çalışma Anı Yapılandırması
- Eposta İşlevleri
  - ezmlm_hash — EZMLM için gereken ileti özetini hesaplar
  - mail — Eposta gönderir

# Mailparse

# Giriş

Mailparse is an extension for parsing and working with email messages. It can deal with » RFC 822 and » RFC 2045 (`MIME`) compliant messages.

Mailparse is stream based, which means that it does not keep in-memory copies of the files it processes - so it is very resource efficient when dealing with large messages.

> Bilginize: Mailparse requires the mbstring extension, and mbstring must be loaded before mailparse.

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması
- Özkaynak Türleri

## Kurulum

Bu » PECL eklentisi PHP ile gelmez. Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/mailparse.

In order to use these functions you must compile PHP with mailparse support by using the --enable-mailparse configure option.

Windows users will enable php_mailparse.dll inside of php.ini in order to use these functions. Bu PECL eklentisi için Windows kütüphaneleri (DLL dosyaları) PECL sitesinde mevcuttur.

It is necessary that the mbstring extension is loaded before mailparse.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Mailparse Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
mailparse.def_charset | "us-ascii" | `INI_SYSTEM` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`mailparse.def_charset` string
  The default character set.

## Özkaynak Türleri

Mailparse defines the resource type `mailparse_mail_structure`, which is returned by mailparse_msg_create() and mailparse_msg_parse_file().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`MAILPARSE_EXTRACT_OUTPUT` (int)
`MAILPARSE_EXTRACT_STREAM` (int)
`MAILPARSE_EXTRACT_RETURN` (int)

# Mailparse İşlevleri

# mailparse_determine_best_xfer_encoding

(PECL mailparse >= 0.9.0)

mailparse_determine_best_xfer_encoding — Gets the best way of encoding

### Açıklama

function mailparse_determine_best_xfer_encoding(resource `$fp`): string

Figures out the best way of encoding the content read from the given file pointer.

### Bağımsız Değişkenler

`fp`
  A valid file pointer, which must be seek-able.

### Dönen Değerler

Returns one of the character encodings supported by the mbstring module.

### Örnekler

Örnek 1 mailparse_determine_best_xfer_encoding() example

    <?php

    $fp = fopen('somemail.eml', 'r');
    echo 'Best encoding: ' . mailparse_determine_best_xfer_encoding($fp);

    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    Best encoding: 7bit

# mailparse_msg_create

(PECL mailparse >= 0.9.0)

mailparse_msg_create — Create a mime mail resource

### Açıklama

function mailparse_msg_create(): resource

Create a `MIME` mail resource.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a handle that can be used to parse a message.

### Notlar

> Bilginize: It is recommended to call mailparse_msg_free() on the result of this function, when it is no longer needed, to avoid memory leaks.

### Ayrıca Bakınız

- mailparse_msg_free() - Frees a MIME resource
- mailparse_msg_parse_file() - Parses a file

# mailparse_msg_extract_part

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_part — Extracts/decodes a message section

### Açıklama

function mailparse_msg_extract_part(resource `$mimemail`, string `$msgbody`, callable `$callbackfunc` = ?): void
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.
`msgbody`
`callbackfunc`

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- mailparse_msg_extract_part_file() - Extracts/decodes a message section
- mailparse_msg_extract_whole_part_file() - Extracts a message section including headers without decoding the transfer encoding

# mailparse_msg_extract_part_file

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_part_file — Extracts/decodes a message section

### Açıklama

function mailparse_msg_extract_part_file(resource `$mimemail`, mixed `$filename`, callable `$callbackfunc` = ?): string

Extracts/decodes a message section from the supplied filename.

The contents of the section will be decoded according to their transfer encoding - base64, quoted-printable and uuencoded text are supported.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource, created with mailparse_msg_create().
`filename`
  Can be a file name or a valid stream resource.
`callbackfunc`
  If set, this must be either a valid callback that will be passed the extracted section, or `null` to make this function return the extracted section. If not specified, the contents will be sent to "stdout".

### Dönen Değerler

If `callbackfunc` is not `null` returns `true` on success.

If `callbackfunc` is set to `null`, returns the extracted section as a string.

Returns `false` on error.

### Ayrıca Bakınız

- mailparse_msg_extract_part() - Extracts/decodes a message section
- mailparse_msg_extract_whole_part_file() - Extracts a message section including headers without decoding the transfer encoding

# mailparse_msg_extract_whole_part_file

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding

### Açıklama

function mailparse_msg_extract_whole_part_file(resource `$mimemail`, string `$filename`, callable `$callbackfunc` = ?): string
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.
`filename`
`callbackfunc`

### Dönen Değerler

### Ayrıca Bakınız

- mailparse_msg_extract_part() - Extracts/decodes a message section
- mailparse_msg_extract_part_file() - Extracts/decodes a message section

# mailparse_msg_free

(PECL mailparse >= 0.9.0)

mailparse_msg_free — Frees a MIME resource

### Açıklama

function mailparse_msg_free(resource `$mimemail`): bool

Frees a `MIME` resource.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource allocated by mailparse_msg_create() or mailparse_msg_parse_file().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- mailparse_msg_create() - Create a mime mail resource
- mailparse_msg_parse_file() - Parses a file

# mailparse_msg_get_part

(PECL mailparse >= 0.9.0)

mailparse_msg_get_part — Returns a handle on a given section in a mimemessage

### Açıklama

function mailparse_msg_get_part(resource `$mimemail`, string `$mimesection`): resource
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.
`mimesection`

# mailparse_msg_get_part_data

(PECL mailparse >= 0.9.0)

mailparse_msg_get_part_data — Returns an associative array of info about the message

### Açıklama

function mailparse_msg_get_part_data(resource `$mimemail`): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.

# mailparse_msg_get_structure

(PECL mailparse >= 0.9.0)

mailparse_msg_get_structure — Returns an array of mime section names in the supplied message

### Açıklama

function mailparse_msg_get_structure(resource `$mimemail`): array
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.

# mailparse_msg_parse

(PECL mailparse >= 0.9.0)

mailparse_msg_parse — Incrementally parse data into buffer

### Açıklama

function mailparse_msg_parse(resource `$mimemail`, string `$data`): bool

Incrementally parse data into the supplied mime mail resource.

This function allow you to stream portions of a file at a time, rather than read and parse the whole thing.

### Bağımsız Değişkenler

`mimemail`
  A valid `MIME` resource.
`data`

  > Bilginize: The final chunk of `data` is supposed to end with a newline (`CRLF`); otherwise the last line of the message will not be parsed.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# mailparse_msg_parse_file

(PECL mailparse >= 0.9.0)

mailparse_msg_parse_file — Parses a file

### Açıklama

function mailparse_msg_parse_file(string `$filename`): resource

Parses a file. This is the optimal way of parsing a mail file that you have on disk.

### Bağımsız Değişkenler

`filename`
  Path to the file holding the message. The file is opened and streamed through the parser.

  > Bilginize: The message contained in `filename` is supposed to end with a newline (`CRLF`); otherwise the last line of the message will not be parsed.

### Dönen Değerler

Returns a `MIME` resource representing the structure, or `false` on error.

### Notlar

> Bilginize: It is recommended to call mailparse_msg_free() on the result of this function, when it is no longer needed, to avoid memory leaks.

### Ayrıca Bakınız

- mailparse_msg_free() - Frees a MIME resource
- mailparse_msg_create() - Create a mime mail resource

# mailparse_rfc822_parse_addresses

(PECL mailparse >= 0.9.0)

mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses

### Açıklama

function mailparse_rfc822_parse_addresses(string `$addresses`): array

Parses a » RFC 822 compliant recipient list, such as that found in the `To:` header.

### Bağımsız Değişkenler

`addresses`
  A string containing addresses, like in: `Wez Furlong <wez@example.com>, doe@example.com`

  > Bilginize: This string must not include the header name.

### Dönen Değerler

Returns an array of associative arrays with the following keys for each recipient:

`display` | The recipient name, for display purpose. If this part is not set for a recipient, this key will hold the same value as `address`.
`address` | The email address
`is_group` | `true` if the recipient is a newsgroup, `false` otherwise.

### Örnekler

Örnek 1 mailparse_rfc822_parse_addresses() example

    <?php

    $to = 'Wez Furlong <wez@example.com>, doe@example.com';
    var_dump(mailparse_rfc822_parse_addresses($to));

    ?>

Yukarıdaki örneğin çıktısı:

    array(2) {
      [0]=>
      array(3) {
        ["display"]=>
        string(11) "Wez Furlong"
        ["address"]=>
        string(15) "wez@example.com"
        ["is_group"]=>
        bool(false)
      }
      [1]=>
      array(3) {
        ["display"]=>
        string(15) "doe@example.com"
        ["address"]=>
        string(15) "doe@example.com"
        ["is_group"]=>
        bool(false)
      }
    }

# mailparse_stream_encode

(PECL mailparse >= 0.9.0)

mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp

### Açıklama

function mailparse_stream_encode(resource `$sourcefp`, resource `$destfp`, string `$encoding`): bool

Streams data from the source file pointer, apply `encoding` and write to the destination file pointer.

### Bağımsız Değişkenler

`sourcefp`
  A valid file handle. The file is streamed through the parser.
`destfp`
  The destination file handle in which the encoded data will be written.
`encoding`
  One of the character encodings supported by the mbstring module.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 mailparse_stream_encode() example

    <?php

    // email.eml contents: hello, this is some text=hello.
    $fp = fopen('email.eml', 'r');

    $dest = tmpfile();

    mailparse_stream_encode($fp, $dest, "quoted-printable");

    rewind($dest);

    // Display new file contents
    fpassthru($dest);

    ?>

Yukarıdaki örneğin çıktısı:

    hello, this is some text=3Dhello.

# mailparse_uudecode_all

(PECL mailparse >= 0.9.0)

mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file

### Açıklama

function mailparse_uudecode_all(resource `$fp`): array

Scans the data from the given file pointer and extract each embedded uuencoded file into a temporary file.

### Bağımsız Değişkenler

`fp`
  A valid file pointer.

### Dönen Değerler

Returns an array of associative arrays listing filename information.

`filename` | Path to the temporary file name created
`origfilename` | The original filename, for uuencoded parts only

The first filename entry is the message body. The next entries are the decoded uuencoded files.

### Örnekler

Örnek 1 mailparse_uudecode_all() example

    <?php

    $text = <<<EOD
    To: fred@example.com

    hello, this is some text hello.
    blah blah blah.

    begin 644 test.txt
    /=&AI<R!I<R!A('1E<W0*
    `
    end

    EOD;

    $fp = tmpfile();
    fwrite($fp, $text);

    $data = mailparse_uudecode_all($fp);

    echo "BODY\n";
    readfile($data[0]["filename"]);
    echo "UUE ({$data[1]['origfilename']})\n";
    readfile($data[1]["filename"]);

    // Clean up
    unlink($data[0]["filename"]);
    unlink($data[1]["filename"]);

    ?>

Yukarıdaki örneğin çıktısı:

    BODY
    To: fred@example.com

    hello, this is some text hello.
    blah blah blah.

    UUE (test.txt)
    this is a test

## İçindekiler

- mailparse_determine_best_xfer_encoding — Gets the best way of encoding
- mailparse_msg_create — Create a mime mail resource
- mailparse_msg_extract_part — Extracts/decodes a message section
- mailparse_msg_extract_part_file — Extracts/decodes a message section
- mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding
- mailparse_msg_free — Frees a MIME resource
- mailparse_msg_get_part — Returns a handle on a given section in a mimemessage
- mailparse_msg_get_part_data — Returns an associative array of info about the message
- mailparse_msg_get_structure — Returns an array of mime section names in the supplied message
- mailparse_msg_parse — Incrementally parse data into buffer
- mailparse_msg_parse_file — Parses a file
- mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
- mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp
- mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Mailparse İşlevleri
  - mailparse_determine_best_xfer_encoding — Gets the best way of encoding
  - mailparse_msg_create — Create a mime mail resource
  - mailparse_msg_extract_part — Extracts/decodes a message section
  - mailparse_msg_extract_part_file — Extracts/decodes a message section
  - mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding
  - mailparse_msg_free — Frees a MIME resource
  - mailparse_msg_get_part — Returns a handle on a given section in a mimemessage
  - mailparse_msg_get_part_data — Returns an associative array of info about the message
  - mailparse_msg_get_structure — Returns an array of mime section names in the supplied message
  - mailparse_msg_parse — Incrementally parse data into buffer
  - mailparse_msg_parse_file — Parses a file
  - mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
  - mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp
  - mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file

- IMAP — IMAP, POP3 ve NNTP
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - IMAP İşlevleri
  - IMAP\Connection — IMAP\Connection sınıfı
- Mail — Eposta
  - Yapılandırma/Kurulum
  - Eposta İşlevleri
- Mailparse
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Mailparse İşlevleri

# Matematiksel Eklentiler

# BCMath Keyfi Duyarlıklı Matematik

# Giriş

Keyfi duyarlıklı matematik işlemleri için PHP, herhangi bir boyut ve duyarlıktaki sayıları `2147483647`'ye kadar (veya `0x7FFFFFFF`) destekleyen BCMath işlevlerini kullanır. Yeterli bellek yoksa, sayılar dizge olarak gösterilir.

Geçerli (yani, iyi biçimli) BCMath sayıları `/^[+-]?[0-9]*(\.[0-9]*)?$/` düzenli ifadesi ile eşleşen dizgelerdir.

Dikkat

string türünde bir terim bekleyen bir BCMath işlevine float türünde değer aktarılması, PHP'nin float değerleri string türüne dönüştürme yolundan dolayı istenen etkiyi sağlamayabilir (string üstel gösterim içerebilir ama üstel gösterim BCMath tarafından desteklenmez, ayrıca PHP 8.0.0 öncesinde ondalık ayracı yerele bağımlıdır ama BCMath burada ondalık nokta bekler).

    <?php
    $num1 = 0; // (string) 0 => '0'
    $num2 = -0.000005; // (string) -0.000005 => '-5.05E-6'
    echo bcadd($num1, $num2, 6); // => '0.000000'

    setlocale(LC_NUMERIC, 'de_DE'); // ondalık ayraç virgüldür
    $num2 = 1.2; // (string) 1.2 => '1,2'
    echo bcsub($num1, $num2, 1); // => '0.0'
    ?>

# Yapılandırma/Kurulum

## İçindekiler

- Kurulum
- Çalışma Anı Yapılandırması

## Kurulum

Bu işlevler, PHP --enable-bcmath ile yapılandırıldı ise erişilebilirdir.

PHP'nin Windows sürümünde bu eklenti yerleşik olarak gelmektedir. Bu işlevleri Windows'ta kullanmak için herhangi bir eklenti kurulmasına gerek yoktur.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

BC matematik yapılandırma seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
bcmath.scale | "0" | `INI_ALL` |

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`bcmath.scale` int

  Bütün bcmath işlevleri için ondalık hane sayısı, ayrıca bcscale() işlevine bakınız.

  > Bilginize: BcMath\Number bu atamadan etkilenmez.

# BC Math İşlevleri

# bcadd

(PHP 4, PHP 5, PHP 7, PHP 8)

bcadd — Keyfi duyarlıklı iki sayıyı toplar

### Açıklama

function bcadd(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): string

`sayı1` ile `sayı2`yi toplar.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak sol terim.

`sayı2`

  Dizge olarak sağ terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

İki sayının toplamını dizge olarak verir.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.

### Örnekler

Örnek 1 - bcadd() örneği

    <?php

    $a = '1.234';
    $b = '5';

    echo bcadd($a, $b);     // 6
    echo bcadd($a, $b, 4);  // 6.2340

    ?>

### Ayrıca Bakınız

- bcsub() - Keyfi duyarlıklı sayılar arasında çıkartma işlemi yapar
- BcMath\Number::add() - Adds an arbitrary precision number

# bcceil

(PHP 8 >= 8.4.0)

bcceil — Round up arbitrary precision number

### Açıklama

function bcceil(string `$num`): string

Returns the next highest integer value by rounding up `num` if necessary.

### Bağımsız Değişkenler

`num`
  The value to round.

### Dönen Değerler

Returns a numeric string representing `num` rounded up to the nearest integer.

### Hatalar/İstisnalar

This function throws a ValueError if `num` is not a well-formed BCMath numeric string.

### Örnekler

Örnek 1 bcceil() example

    <?php
    var_dump(bcceil('4.3'));
    var_dump(bcceil('9.999'));
    var_dump(bcceil('-3.14'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "5"
    string(2) "10"
    string(2) "-3"

### Ayrıca Bakınız

- bcfloor() - Round down arbitrary precision number
- bcround() - Round arbitrary precision number
- BcMath\Number::ceil() - Rounds up an arbitrary precision number

# bccomp

(PHP 4, PHP 5, PHP 7, PHP 8)

bccomp — İki keyfi duyarlıklı sayıyı karşılaştırır

### Açıklama

function bccomp(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): int

`sayı1` ile `sayı2`karşılaştırılır ve sonuç tamsayı olarak döndürülür.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak sol terim.

`sayı2`

  Dizge olarak sağ terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Eğer iki terim eşitse `0` döndürür, `sayı1` `sayı2`'den büyükse `1`, değilse `-1` döndürür.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.

### Örnekler

Örnek 1 bccomp() örneği

    <?php

    echo bccomp('1', '2') . "\n";   // -1
    echo bccomp('1.00001', '1', 3); // 0
    echo bccomp('1.00001', '1', 5); // 1

    ?>

### Ayrıca Bakınız

- BcMath\Number::compare() - Compares two arbitrary precision numbers

# bcdiv

(PHP 4, PHP 5, PHP 7, PHP 8)

bcdiv — İki keyfi duyarlıklı sayıyı böler

### Açıklama

function bcdiv(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): string

`sayı1`'i `sayı2` ile böler.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak bölünen.

`sayı2`

  Dizge olarak bölen.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Bölme sonucunu dizge olarak hesaplar.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

`sayı1` bağımsız değişkeninin değeri `0` ise DivisionByZeroError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.
8.0.0 | `0` ile bölme, `null` döndürmek yerine artık DivisionByZeroError istisnasına sebep oluyor.

### Örnekler

Örnek 1 - bcdiv() örneği

    <?php

    echo bcdiv('105', '6.55957', 3);  // 16.007

    ?>

### Ayrıca Bakınız

- bcdivmod() - Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
- bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
- bcmul() - İki keyfi duyarlıklı sayıyı çarpar
- BcMath\Number::div() - Divides by an arbitrary precision number

# bcdivmod

(PHP 8 >= 8.4.0)

bcdivmod — Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir

### Açıklama

function bcdivmod(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): array

`sayı1`'in `sayı2`'ye bölünmesinden bölümü ve kalanı verir.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak bölünen.

`sayı2`

  Dizge olarak bölen.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

İlk elemanı string türünde bölüm, ikinci elemanı string türünde kalan olarak indisli bir dizi döner.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

`sayı1` `0` ise DivisionByZeroError istisnası oluşur.

### Örnekler

Örnek 1 - bcdivmod() örneği

    <?php
    bcscale(0);

    [$quot, $rem] = bcdivmod('5',  '3');
    echo $quot; // 1
    echo $rem;  // 2

    [$quot, $rem] = bcdivmod('5',  '-3');
    echo $quot; // -1
    echo $rem;  // 2

    [$quot, $rem] = bcdivmod('-5',  '3');
    echo $quot; // -1
    echo $rem;  // -2

    [$quot, $rem] = bcdivmod('-5',  '-3');
    echo $quot; // 1
    echo $rem;  // -2
    ?>

Örnek 2 - Ondalık sayılarla bcdivmod()

    <?php
    [$quot, $rem] = bcdivmod('5.7', '1.3', 1);
    echo $quot; // 4
    echo $rem;  // 0.5
    ?>

### Ayrıca Bakınız

- bcdiv() - İki keyfi duyarlıklı sayıyı böler
- bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
- BcMath\Number::divmod() - Gets the quotient and modulus of an arbitrary precision number

# bcfloor

(PHP 8 >= 8.4.0)

bcfloor — Round down arbitrary precision number

### Açıklama

function bcfloor(string `$num`): string

Returns the next lowest integer value by rounding down `num` if necessary.

### Bağımsız Değişkenler

`num`
  The value to round.

### Dönen Değerler

Returns a numeric string representing `num` rounded down to the nearest integer.

### Hatalar/İstisnalar

This function throws a ValueError if `num` is not a well-formed BCMath numeric string.

### Örnekler

Örnek 1 bcfloor() example

    <?php
    var_dump(bcfloor('4.3'));
    var_dump(bcfloor('9.999'));
    var_dump(bcfloor('-3.14'));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "4"
    string(1) "9"
    string(2) "-4"

### Ayrıca Bakınız

- bcceil() - Round up arbitrary precision number
- bcround() - Round arbitrary precision number
- BcMath\Number::floor() - Rounds down an arbitrary precision number

# bcmod

(PHP 4, PHP 5, PHP 7, PHP 8)

bcmod — Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur

### Açıklama

function bcmod(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): string

`sayı1`'in `sayı2`'ye bölünmesinden kalanı döndürür. Sonuç `sayı1`'in işaretini alır.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak sol terim.

`sayı2`

  Dizge olarak sağ terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Dizge olarak kalanı döndürür.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

`sayı1` `0` ise DivisionByZeroError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.
8.0.0 | `0` ile bölme, `null` döndürmek yerine artık DivisionByZeroError istisnasına sebep oluyor.
7.2.0 | `sayı1` ve `sayı2` artık ondalık kısmı kırpılıp tamsayı yapılmıyor. Dolayısıyla, işlev artık `%` işleci gibi değil fmod() gibi davranıyor.
7.2.0 | `basamak` bağımsız değişkeni eklendi.

### Örnekler

Örnek 1 - bcmod() örneği

    <?php
    bcscale(0);
    echo bcmod( '5',  '3'); //  2
    echo bcmod( '5', '-3'); //  2
    echo bcmod('-5',  '3'); // -2
    echo bcmod('-5', '-3'); // -2
    ?>

Örnek 2 - Ondalık basamaklarla bcmod()

    <?php
    bcscale(1);
    echo bcmod('5.7', '1.3'); // PHP 7.2.0 ve sonrası 0.5 - öncesi 0
    ?>

### Ayrıca Bakınız

- bcdiv() - İki keyfi duyarlıklı sayıyı böler
- bcdivmod() - Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
- BcMath\Number::mod() - Gets the modulus of an arbitrary precision number

# bcmul

(PHP 4, PHP 5, PHP 7, PHP 8)

bcmul — İki keyfi duyarlıklı sayıyı çarpar

### Açıklama

function bcmul(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): string

`sayı1`'i `sayı2` ile çarpar.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak sol terim.

`sayı2`

  Dizge olarak sağ terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Sonucu dizge olarak döndürür.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.
7.3.0 | bcmul() artık sayıların ondalık basamak sayısını dikkate alıyor. Daha önce, döndürülen sayılarda sondaki ondalık sıfırları yoksayabiliyordu.

### Örnekler

Örnek 1 - bcmul() örneği

    <?php
    echo bcmul('1.34747474747', '35', 3); // 47.161
    echo bcmul('2', '4'); // 8
    ?>

### Notlar

> Bilginize:

> PHP 7.3.0 öncesinde bcmul() ondalık noktadan sonraki basamak sayısını `basamak` ile belirtilenden daha az sayıda döndürebiliyordu. Artık sadece `basamak` ile belirtilenden daha azı ile gereken hassasiyet sağlanabildiği takdirde bu olmaktadır. Örnek:

> Örnek 2 - bcmul() basamak örneği

>     <?php
>     echo bcmul('5', '2', 2);     // "10" basar, "10.00" değil
>     ?>

### Ayrıca Bakınız

- bcdiv() - İki keyfi duyarlıklı sayıyı böler
- BcMath\Number::mul() - Multiplies an arbitrary precision number

# bcpow

(PHP 4, PHP 5, PHP 7, PHP 8)

bcpow — Keyfi duyarlıklı sayılar için üs alma işlemi yapar

### Açıklama

function bcpow(string `$taban`, string `$üs`, ?int `$basamak` = `null`): string

`taban`ın `üs`sünü hesaplar.

### Bağımsız Değişkenler

`taban`

  Dizge olarak taban.

`üs`

  Dizge olarak üs. Üs tamsayı olmalı ondalık kısım içermemelidir. Üssün geçerli aralığı platforma özgüdür, ancak en azından `-2147483648` ile `2147483647` arasındadır.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Sonucu dizge olarak döndürür.

### Hatalar/İstisnalar

İşlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `taban` veya `üs` iyi biçimlenmiş BCMath sayısal dizgesi değilse
- `üs` ondalık kısım içeriyorsa
- `üs` veya `basamak` geçerli aralığın dışındaysa

`taban` `0` ve `üs` negatif ise DivisionByZeroError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | `0`'ın negatif üssü evvelce `0` döndürürdü, artık DivisionByZeroError istisnası oluşuyor.
8.0.0 | `üs` ondalık kısım içeriyorsa, ondalık kısmın kırpılması yerine artık ValueError istisnası oluşuyor.
7.3.0 | bcpow() artık sayıların ondalık basamak sayısını dikkate alıyor. Daha önce, döndürülen sayılarda sondaki ondalık sıfırları yoksayabiliyordu.

### Örnekler

Örnek 1 bcpow() örneği

    <?php

    echo bcpow('4.2', '3', 2); // 74.08

    ?>

### Notlar

> Bilginize:

> PHP 7.3.0 öncesinde bcpow() ondalık noktadan sonraki basamak sayısını `basamak` ile belirtilenden daha az sayıda döndürebiliyordu. Artık sadece `basamak` ile belirtilenden daha azı ile gereken hassasiyet sağlanabildiği takdirde bu olmaktadır. Örnek:

> Örnek 2 bcpow() basamak örneği

>     <?php
>     echo bcpow('5', '2', 2);     // "25" basar, "25.00" değil
>     ?>
>     +

### Ayrıca Bakınız

- bcpowmod() - Önce bir keyfi duyarlıklı sayının diğerine göre üs alma işlemini yapar, sonra sonucun modüle göre kalanını bulur
- bcsqrt() - Keyfi duyarlıklı bir sayının karekök alma işlemini yapar
- BcMath\Number::pow() - Raises an arbitrary precision number

# bcpowmod

(PHP 5, PHP 7, PHP 8)

bcpowmod — Önce bir keyfi duyarlıklı sayının diğerine göre üs alma işlemini yapar, sonra sonucun modüle göre kalanını bulur

### Açıklama

function bcpowmod(
string `$taban`,
string `$üs`,
string `$modül`,
?int `$basamak` = `null`
): string

`taban`ın `üs`sünü bulur, sonucun `modül` ile kalanını bulur.

### Bağımsız Değişkenler

`taban`

  Tamsayı dizgesi olarak taban (Yani, ondalık basamak sayısı sıfır olmalı).

`üs`

  Negatif olmayan tamsayı dizgesi olarak üs (Yani, ondalık basamak sayısı sıfır olmalı).

`modül`

  Tamsayı dizgesi olarak modül (Yani, ondalık basamak sayısı sıfır olmalı).

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Dizge olarak sonucu döndürür.

### Hatalar/İstisnalar

İşlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `taban`, `üs` veya `modül` iyi biçimlenmiş BCMath sayısal dizgesi değilse
- `taban`, `üs` veya `modül` ondalık kısım içeriyorsa
- `üs` negatif ise
- `basamak` geçerli aralığın dışındaysa

`modül` `0` ise DivisionByZeroError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.
8.0.0 | `üs` negatif ise `false` döndürmek yerine artık ValueError istisnası oluşturuluyor.
8.0.0 | `0` ile bölme işlemi `false` döndürmek yerine artık DivisionByZeroError istisnası oluşturuluyor.

### Örnekler

Örnekteki 2 deyim denktir. Bununla birlikte bcpowmod() deyimi daha az zamanda sonuç verir ve daha büyük bağımsız değişkenleri kabul eder.

    <?php
    $a = bcpowmod($x, $y, $mod);

    $b = bcmod(bcpow($x, $y), $mod);

    // $a ve $b sonuclari esittir.

    ?>

### Notlar

> Bilginize:

> Bu işlev kalan bulma işlemleri yaptığı için pozitif tamsayı olmayan sayılar beklenmeyen sonuçlar verebilir.

### Ayrıca Bakınız

- bcpow() - Keyfi duyarlıklı sayılar için üs alma işlemi yapar
- bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
- BcMath\Number::powmod() - Raises an arbitrary precision number, reduced by a specified modulus

# bcround

(PHP 8 >= 8.4.0)

bcround — Round arbitrary precision number

### Açıklama

function bcround(string `$num`, int `$precision` = 0, RoundingMode `$mode` = `RoundingMode::HalfAwayFromZero`): string

Returns the rounded value of `num` to specified `precision` (number of digits after the decimal point). `precision` can also be negative or zero (default).

### Bağımsız Değişkenler

`num`

  The value to round.

`precision`

  The optional number of decimal digits to round to.

  If the `precision` is positive, `num` is rounded to `precision` significant digits after the decimal point.

  If the `precision` is negative, `num` is rounded to `precision` significant digits before the decimal point, i.e. to the nearest multiple of `pow(10, -$precision)`, e.g. for a `precision` of -1 `num` is rounded to tens, for a `precision` of -2 to hundreds, etc.

`mode`
  Specifies the rounding mode. For more information about modes, see RoundingMode.

### Dönen Değerler

Returns a numeric string representing `num` rounded to the given precision.

### Hatalar/İstisnalar

This function throws a ValueError in the following cases:

- `num` is not a well-formed BCMath numeric string.
- An invalid `mode` is specified.

### Örnekler

Örnek 1 bcround() examples

    <?php
    var_dump(bcround('3.4'));
    var_dump(bcround('3.5'));
    var_dump(bcround('3.6'));
    var_dump(bcround('3.6', 0));
    var_dump(bcround('5.045', 2));
    var_dump(bcround('5.055', 2));
    var_dump(bcround('345', -2));
    var_dump(bcround('345', -3));
    var_dump(bcround('678', -2));
    var_dump(bcround('678', -3));
    ?>

Yukarıdaki örneğin çıktısı:

    string(1) "3"
    string(1) "4"
    string(1) "4"
    string(1) "4"
    string(4) "5.05"
    string(4) "5.06"
    string(3) "300"
    string(1) "0"
    string(3) "700"
    string(4) "1000"

Örnek 2 Example of using bcround() with different `precision` values

    <?php
    $number = '123.45';

    var_dump(bcround($number, 3));
    var_dump(bcround($number, 2));
    var_dump(bcround($number, 1));
    var_dump(bcround($number, 0));
    var_dump(bcround($number, -1));
    var_dump(bcround($number, -2));
    var_dump(bcround($number, -3));
    ?>

Yukarıdaki örneğin çıktısı:

    string(7) "123.450"
    string(6) "123.45"
    string(5) "123.5"
    string(3) "123"
    string(3) "120"
    string(3) "100"
    string(1) "0"

Örnek 3 Example of using bcround() with different `mode` values

    <?php
    echo 'Rounding modes with 9.5' . PHP_EOL;
    var_dump(bcround('9.5', 0, RoundingMode::HalfAwayFromZero));
    var_dump(bcround('9.5', 0, RoundingMode::HalfTowardsZero));
    var_dump(bcround('9.5', 0, RoundingMode::HalfEven));
    var_dump(bcround('9.5', 0, RoundingMode::HalfOdd));
    var_dump(bcround('9.5', 0, RoundingMode::TowardsZero));
    var_dump(bcround('9.5', 0, RoundingMode::AwayFromZero));
    var_dump(bcround('9.5', 0, RoundingMode::NegativeInfinity));
    var_dump(bcround('9.5', 0, RoundingMode::PositiveInfinity));

    echo PHP_EOL;
    echo 'Rounding modes with 8.5' . PHP_EOL;
    var_dump(bcround('8.5', 0, RoundingMode::HalfAwayFromZero));
    var_dump(bcround('8.5', 0, RoundingMode::HalfTowardsZero));
    var_dump(bcround('8.5', 0, RoundingMode::HalfEven));
    var_dump(bcround('8.5', 0, RoundingMode::HalfOdd));
    var_dump(bcround('8.5', 0, RoundingMode::TowardsZero));
    var_dump(bcround('8.5', 0, RoundingMode::AwayFromZero));
    var_dump(bcround('8.5', 0, RoundingMode::NegativeInfinity));
    var_dump(bcround('8.5', 0, RoundingMode::PositiveInfinity));
    ?>

Yukarıdaki örneğin çıktısı:

    Rounding modes with 9.5
    string(2) "10"
    string(1) "9"
    string(2) "10"
    string(1) "9"
    string(1) "9"
    string(2) "10"
    string(1) "9"
    string(2) "10"

    Rounding modes with 8.5
    string(1) "9"
    string(1) "8"
    string(1) "8"
    string(1) "9"
    string(1) "8"
    string(1) "9"
    string(1) "8"
    string(1) "9"

Örnek 4 Example of using bcround() with different `mode` values when specifying `precision`

    <?php
    echo 'Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::HalfAwayFromZero));
    var_dump(bcround(-1.55, 1, RoundingMode::HalfAwayFromZero));

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfTowardsZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::HalfTowardsZero));
    var_dump(bcround(-1.55, 1, RoundingMode::HalfTowardsZero));

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfEven with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::HalfEven));
    var_dump(bcround(-1.55, 1, RoundingMode::HalfEven));

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfOdd with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::HalfOdd));
    var_dump(bcround(-1.55, 1, RoundingMode::HalfOdd));

    echo PHP_EOL;
    echo 'Using RoundingMode::TowardsZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::TowardsZero));
    var_dump(bcround(-1.55, 1, RoundingMode::TowardsZero));

    echo PHP_EOL;
    echo 'Using RoundingMode::AwayFromZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::AwayFromZero));
    var_dump(bcround(-1.55, 1, RoundingMode::AwayFromZero));

    echo PHP_EOL;
    echo 'Using RoundingMode::NegativeInfinity with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::NegativeInfinity));
    var_dump(bcround(-1.55, 1, RoundingMode::NegativeInfinity));

    echo PHP_EOL;
    echo 'Using RoundingMode::PositiveInfinity with 1 decimal digit precision' . PHP_EOL;
    var_dump(bcround( 1.55, 1, RoundingMode::PositiveInfinity));
    var_dump(bcround(-1.55, 1, RoundingMode::PositiveInfinity));
    ?>

Yukarıdaki örneğin çıktısı:

    Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision
    string(3) "1.6"
    string(4) "-1.6"

    Using RoundingMode::HalfTowardsZero with 1 decimal digit precision
    string(3) "1.5"
    string(4) "-1.5"

    Using RoundingMode::HalfEven with 1 decimal digit precision
    string(3) "1.6"
    string(4) "-1.6"

    Using RoundingMode::HalfOdd with 1 decimal digit precision
    string(3) "1.5"
    string(4) "-1.5"

    Using RoundingMode::TowardsZero with 1 decimal digit precision
    string(3) "1.5"
    string(4) "-1.5"

    Using RoundingMode::AwayFromZero with 1 decimal digit precision
    string(3) "1.6"
    string(4) "-1.6"

    Using RoundingMode::NegativeInfinity with 1 decimal digit precision
    string(3) "1.5"
    string(4) "-1.6"

    Using RoundingMode::PositiveInfinity with 1 decimal digit precision
    string(3) "1.6"
    string(4) "-1.5"

### Ayrıca Bakınız

- bcceil() - Round up arbitrary precision number
- bcfloor() - Round down arbitrary precision number
- BcMath\Number::round() - Rounds an arbitrary precision number

# bcscale

(PHP 4, PHP 5, PHP 7, PHP 8)

bcscale — Bütün bc matematik işlevleri için öntanımlı basamak bağımsız değişkenini tanımlar

### Açıklama

function bcscale(int `$basamak`): bool

Bir basamak belirtilmeden çağrılan bütün bc matematik işlevleri için öntanımlı basamak bağımsız değişkenini atar.

function bcscale(null `$basamak` = `null`): int

Geçerli basamak sayısını döndürür.

### Bağımsız Değişkenler

`basamak`

  Ölçek katsayısı.

### Dönen Değerler

Öntanımlı değer atanıyorsa eski değeri döndürür, aksi takdirde geçerli değeri döndürür.

### Hatalar/İstisnalar

`basamak` geçerli aralığın dışındaysa ValueError istisnası oluşur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.
7.3.0 | bcscale() artık geçerli basamak sayısını döndürmek için kullanılabiliyor. Değer atamak için kullanıldığında ise eski değeri döndürüyor. Evvelce `basamak` belirtmek zorunluydu ve bcscale() daima `true` döndürürdü.

### Örnekler

Örnek 1 - bcscale() örneği

    <?php

    // ontanimli olcek : 3
    bcscale(3);
    echo bcdiv('105', '6.55957'); // 16.007

    // bcscale() cagrilmamasi ile esdegerdir
    echo bcdiv('105', '6.55957', 3); // 16.007

    ?>

# bcsqrt

(PHP 4, PHP 5, PHP 7, PHP 8)

bcsqrt — Keyfi duyarlıklı bir sayının karekök alma işlemini yapar

### Açıklama

function bcsqrt(string `$terim`, ?int `$basamak` = `null`): string

`terim`in karekökünü döndürür.

### Bağımsız Değişkenler

`terim`

  İyi biçemli BCMath sayısal dizgesi olarak terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Karakökü iyi biçemli BCMath sayısal dizgesi olarak döndürür.

### Hatalar/İstisnalar

Bu işlev,

- `terim` iyi biçemli BCMath sayısal dizgesi değilse
- `terim` negatifse
- `basamak` geçerli aralığın dışındaysa

bir ValueError nesnesi oluşturur.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `terim` iyi biçemli BCMath sayısal dizgesi değilse veya negatifse artık bir ValueError nesnesi oluşuyor. Evvelce, bunun yerine `E_WARNING` çıktılanırdı.
8.0.0 | `basamak` artık `0` ila `2147483647` arasında olmalı; evvelce negatif değerler sessizce `0` olarak ele alınırdı.
8.0.0 | `basamak` artık `null` olabiliyor.

### Örnekler

Örnek 1 bcsqrt() örneği

    <?php

    echo bcsqrt('2', 3); // 1.414

    ?>

### Ayrıca Bakınız

- bcpow() - Keyfi duyarlıklı sayılar için üs alma işlemi yapar
- BcMath\Number::sqrt() - Gets the square root of an arbitrary precision number

# bcsub

(PHP 4, PHP 5, PHP 7, PHP 8)

bcsub — Keyfi duyarlıklı sayılar arasında çıkartma işlemi yapar

### Açıklama

function bcsub(string `$sayı1`, string `$sayı2`, ?int `$basamak` = `null`): string

`sayı1`'den `sayı2`'yi çıkartır.

### Bağımsız Değişkenler

`sayı1`

  Dizge olarak sol terim.

`sayı2`

  Dizge olarak sağ terim.

`basamak`
  Bu bağımsız değişken, sonuçtaki ondalık iminden sonraki basamak sayısını ayarlamak için kullanılır. Değeri `null` ise, bcscale() ile atanan öntanımlı basamak sayısı veya son çare olarak `bcmath.scale` INI yönergesinin değeri kullanılır.

### Dönen Değerler

Dizge olarak çıkartma sonucunu verir.

### Hatalar/İstisnalar

Bu işlev aşağıdaki durumlarda ValueError istisnası oluşturur:

- `sayı1` veya `sayı2` iyi biçimlenmiş BCMath sayısal dizgesi değilse.
- `basamak` geçerli aralığın dışındaysa.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `basamak` artık `null` olabiliyor.

### Örnekler

Örnek 1 bcsub() örneği

    <?php

    $a = '1.234';
    $b = '5';

    echo bcsub($a, $b);     // -3
    echo bcsub($a, $b, 4);  // -3.7660

    ?>

### Ayrıca Bakınız

- bcadd() - Keyfi duyarlıklı iki sayıyı toplar
- BcMath\Number::sub() - Subtracts an arbitrary precision number

## İçindekiler

- bcadd — Keyfi duyarlıklı iki sayıyı toplar
- bcceil — Round up arbitrary precision number
- bccomp — İki keyfi duyarlıklı sayıyı karşılaştırır
- bcdiv — İki keyfi duyarlıklı sayıyı böler
- bcdivmod — Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
- bcfloor — Round down arbitrary precision number
- bcmod — Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
- bcmul — İki keyfi duyarlıklı sayıyı çarpar
- bcpow — Keyfi duyarlıklı sayılar için üs alma işlemi yapar
- bcpowmod — Önce bir keyfi duyarlıklı sayının diğerine göre üs alma işlemini yapar, sonra sonucun modüle göre kalanını bulur
- bcround — Round arbitrary precision number
- bcscale — Bütün bc matematik işlevleri için öntanımlı basamak bağımsız değişkenini tanımlar
- bcsqrt — Keyfi duyarlıklı bir sayının karekök alma işlemini yapar
- bcsub — Keyfi duyarlıklı sayılar arasında çıkartma işlemi yapar

# The BcMath\Number class

(PHP 8 >= 8.4.0)

## Giriş

A class for an arbitrary precision number. These objects support overloaded arithmetic and comparison operators.

> Bilginize: This class is not affected by the bcmath.scale INI directive set in php.ini.

> Bilginize: The behavior of an overloaded operator is the same as specifying `null` for the `scale` parameter on the corresponding method.

## Sınıf Sözdizimi

namespace BcMath;
final readonly class Number implements Stringable {
/* Özellikler */
public string $value;
public int $scale;
/* Yöntemler */
public function __construct(string|int `$num`)
public function add(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number
public function ceil(): BcMath\Number
public function compare(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): int
public function div(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number
public function divmod(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): array
public function floor(): BcMath\Number
public function mod(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number
public function mul(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number
public function pow(BcMath\Number|string|int `$exponent`, ?int `$scale` = `null`): BcMath\Number
public function powmod(BcMath\Number|string|int `$exponent`, BcMath\Number|string|int `$modulus`, ?int `$scale` = `null`): BcMath\Number
public function round(int `$precision` = 0, RoundingMode `$mode` = `RoundingMode::HalfAwayFromZero`): BcMath\Number
public function __serialize(): array
public function sqrt(?int `$scale` = `null`): BcMath\Number
public function sub(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number
public function __toString(): string
public function __unserialize(array `$data`): void
}

## Özellikler

value
  A string representation of an arbitrary precision number.
scale
  The scale value currently set on the object. For objects resulting from calculations, this value is automatically computed and set, unless the `scale` parameter was set in the calculation method.

# BcMath\Number::add

(PHP 8 >= 8.4.0)

BcMath\Number::add — Adds an arbitrary precision number

### Açıklama

public function BcMath\Number::add(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number

Adds $this and `num`.

### Bağımsız Değişkenler

`num`
  The value to add.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result of addition as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the greater BcMath\Number::scale of the two numbers used for addition is used.

That is, if the BcMath\Number::scales of two values are `2` and `5` respectively, the BcMath\Number::scale of the result will be `5`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range

### Örnekler

Örnek 1 BcMath\Number::add() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->add(new BcMath\Number('2.34567'));
    $ret2 = $number->add('-3.456');
    $ret3 = $number->add(7);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(7) "3.57967"
      ["scale"]=>
      int(5)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(6) "-2.222"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "8.234"
      ["scale"]=>
      int(3)
    }

Örnek 2 BcMath\Number::add() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->add(new BcMath\Number('2.34567'), 1);
    $ret2 = $number->add('-3.456', 10);
    $ret3 = $number->add(7, 0);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "3.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(13) "-2.2220000000"
      ["scale"]=>
      int(10)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcadd() - Keyfi duyarlıklı iki sayıyı toplar
- BcMath\Number::sub() - Subtracts an arbitrary precision number

# BcMath\Number::ceil

(PHP 8 >= 8.4.0)

BcMath\Number::ceil — Rounds up an arbitrary precision number

### Açıklama

public function BcMath\Number::ceil(): BcMath\Number

Returns the next highest integer value by rounding up $this if necessary.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the result as a new BcMath\Number object. The BcMath\Number::scale of the result is always `0`.

### Örnekler

Örnek 1 BcMath\Number::ceil() example

    <?php
    $num1 = new BcMath\Number('4.3')->ceil();
    $num2 = new BcMath\Number('9.999')->ceil();
    $num3 = new BcMath\Number('-3.14')->ceil();

    var_dump($num1, $num2, $num3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "5"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(2) "10"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(2) "-3"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcceil() - Round up arbitrary precision number
- BcMath\Number::floor() - Rounds down an arbitrary precision number
- BcMath\Number::round() - Rounds an arbitrary precision number

# BcMath\Number::compare

(PHP 8 >= 8.4.0)

BcMath\Number::compare — Compares two arbitrary precision numbers

### Açıklama

public function BcMath\Number::compare(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): int

Compare two arbitrary precision numbers. This method behaves similar to the spaceship operator.

### Bağımsız Değişkenler

`num`
  The value to be compared to.
`scale`
  Specify the `scale` to use for comparison. If `null`, all digits are used in the comparison.

### Dönen Değerler

Returns `0` if the two numbers are equal, `1` if $this is greater than `num`, `-1` otherwise.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range

### Örnekler

Örnek 1 BcMath\Number::compare() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('1.234');

    var_dump(
        $number->compare(new BcMath\Number('1.234')),
        $number->compare('1.23400'),
        $number->compare('1.23401'),
        $number->compare(1),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(0)
    int(-1)
    int(1)

Örnek 2 BcMath\Number::compare() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('1.234');

    var_dump(
        $number->compare(new BcMath\Number('1.299'), 1),
        $number->compare('1.24', 2),
        $number->compare('1.22', 2),
        $number->compare(1, 0),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    int(0)
    int(-1)
    int(1)
    int(0)

### Ayrıca Bakınız

- bccomp() - İki keyfi duyarlıklı sayıyı karşılaştırır

# BcMath\Number::__construct

(PHP 8 >= 8.4.0)

BcMath\Number::__construct — Creates a BcMath\Number object

### Açıklama

public function BcMath\Number::__construct(string|int `$num`)

Creates a BcMath\Number object from an int or string value.

### Bağımsız Değişkenler

`num`
  An int or string value. If `num` is a int, the BcMath\Number::scale is always set to `0`. If `num` is a string, it must be a valid number, and the BcMath\Number::scale is automatically set by parsing the string.

### Hatalar/İstisnalar

This method throws a ValueError if `num` is string and not a well-formed BCMath numeric string.

### Örnekler

Örnek 1 BcMath\Number::__construct() example

    <?php
    $num1 = new BcMath\Number(100);
    $num2 = new BcMath\Number('-200');
    $num3 = new BcMath\Number('300.00');

    var_dump($num1, $num2, $num3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(3) "100"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(4) "-200"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(6) "300.00"
      ["scale"]=>
      int(2)
    }

### Ayrıca Bakınız

- BcMath\Number::__serialize() - Serializes a BcMath\Number object
- BcMath\Number::__unserialize() - Deserializes a data parameter into a BcMath\Number object

# BcMath\Number::div

(PHP 8 >= 8.4.0)

BcMath\Number::div — Divides by an arbitrary precision number

### Açıklama

public function BcMath\Number::div(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number

Divides $this by `num`.

### Bağımsız Değişkenler

`num`
  The divisor.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result of division as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the BcMath\Number::scale of the dividend is used. However, in cases such as indivisible division, the BcMath\Number::scale of the result is expanded. Expansion is done only as needed, up to a maximum of `+10`.

That is, if the BcMath\Number::scale of the dividend is `5`, the BcMath\Number::scale of the result is between `5` and `15`.

Even in indivisible calculations, the BcMath\Number::scale will not always be `+10`. A `0` at the end of the result is considered not to need expansion, so the BcMath\Number::scale is reduced by that amount. The BcMath\Number::scale will never be less than the BcMath\Number::scale before expansion. See also the code example.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range
- BcMath\Number::scale of the result object is outside the valid range

This method throws a DivisionByZeroError exception if `num` is `0`.

### Örnekler

Örnek 1 BcMath\Number::div() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('0.002');

    $ret1 = $number->div(new BcMath\Number('2.000'));
    $ret2 = $number->div('-3');
    $ret3 = $number->div(32);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "0.002"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(5) "0.001"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(16) "-0.0006666666666"
      ["scale"]=>
      int(13)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(9) "0.0000625"
      ["scale"]=>
      int(7)
    }

Örnek 2 BcMath\Number::div() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('0.002');

    $ret1 = $number->div(new BcMath\Number('2.000'), 15);
    $ret2 = $number->div('-3', 5);
    $ret3 = $number->div(32, 2);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "0.002"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(17) "0.001000000000000"
      ["scale"]=>
      int(15)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(8) "-0.00066"
      ["scale"]=>
      int(5)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(4) "0.00"
      ["scale"]=>
      int(2)
    }

Örnek 3 BcMath\Number::div() example of expansioning BcMath\Number::scale of result object

    <?php
    var_dump(
        new BcMath\Number('0.001')->div('10001'),
        new BcMath\Number('0.001')->div('10001', 13),
        new BcMath\Number('0.001')->div('100000000000001'),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(13) "0.00000009999"
      ["scale"]=>
      int(11)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(15) "0.0000000999900"
      ["scale"]=>
      int(13)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "0.000"
      ["scale"]=>
      int(3)
    }

### Ayrıca Bakınız

- bcdiv() - İki keyfi duyarlıklı sayıyı böler
- BcMath\Number::divmod() - Gets the quotient and modulus of an arbitrary precision number
- BcMath\Number::mod() - Gets the modulus of an arbitrary precision number
- BcMath\Number::sqrt() - Gets the square root of an arbitrary precision number
- BcMath\Number::pow() - Raises an arbitrary precision number
- BcMath\Number::mul() - Multiplies an arbitrary precision number

# BcMath\Number::divmod

(PHP 8 >= 8.4.0)

BcMath\Number::divmod — Gets the quotient and modulus of an arbitrary precision number

### Açıklama

public function BcMath\Number::divmod(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): array

Gets the quotient and remainder of dividing $this by `num`.

### Bağımsız Değişkenler

`num`
  The divisor.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns an indexed array where the first element is the quotient as a new BcMath\Number object and the second element is the remainder as a new BcMath\Number object.

The quotient is always an integer value, so BcMath\Number::scale of the quotient will always be `0`, regardless of whether explicitly specify `scale`.

If `scale` is explicitly specified, BcMath\Number::scale of the remainder will be the specified value. When the BcMath\Number::scale of the result's remainder object is automatically set, the greater BcMath\Number::scale of the two numbers used for modulus operation is used.

That is, if the BcMath\Number::scales of two values are `2` and `5` respectively, the BcMath\Number::scale of the remainder will be `5`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range

This method throws a DivisionByZeroError exception if `num` is `0`.

### Örnekler

Örnek 1 BcMath\Number::divmod() example when `scale` is not specified

    <?php
    echo '8.3 / 2.22' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('8')->divmod(new BcMath\Number('2.22'));
    var_dump($quot, $rem);

    echo PHP_EOL . '8.3 / 8.3' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('8.3')->divmod('8.3');
    var_dump($quot, $rem);

    echo PHP_EOL . '10 / -3' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('10')->divmod(-3);
    var_dump($quot, $rem);
    ?>

Yukarıdaki örneğin çıktısı:

    8.3 / 2.22
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "3"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(4) "1.34"
      ["scale"]=>
      int(2)
    }

    8.3 / 8.3
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(3) "0.0"
      ["scale"]=>
      int(1)
    }

    10 / -3
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(2) "-3"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }

Örnek 2 BcMath\Number::divmod() example of explicitly specifying `scale`

    <?php
    echo '8.3 / 2.22' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('8')->divmod(new BcMath\Number('2.22'), 1);
    var_dump($quot, $rem);

    echo PHP_EOL . '8.3 / 8.3' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('8.3')->divmod('8.3', 4);
    var_dump($quot, $rem);

    echo PHP_EOL . '10 / -3' . PHP_EOL;
    [$quot, $rem] = new BcMath\Number('10')->divmod(-3, 5);
    var_dump($quot, $rem);
    ?>

Yukarıdaki örneğin çıktısı:

    8.3 / 2.22
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "3"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.3"
      ["scale"]=>
      int(1)
    }

    8.3 / 8.3
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(6) "0.0000"
      ["scale"]=>
      int(4)
    }

    10 / -3
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(2) "-3"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(7) "1.00000"
      ["scale"]=>
      int(5)
    }

### Ayrıca Bakınız

- bcdivmod() - Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
- BcMath\Number::div() - Divides by an arbitrary precision number
- BcMath\Number::mod() - Gets the modulus of an arbitrary precision number

# BcMath\Number::floor

(PHP 8 >= 8.4.0)

BcMath\Number::floor — Rounds down an arbitrary precision number

### Açıklama

public function BcMath\Number::floor(): BcMath\Number

Returns the next highest integer value by rounding down $this if necessary.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the result as a new BcMath\Number object. The BcMath\Number::scale of the result is always `0`.

### Örnekler

Örnek 1 BcMath\Number::floor() example

    <?php
    $num1 = new BcMath\Number('4.3')->floor();
    $num2 = new BcMath\Number('9.999')->floor();
    $num3 = new BcMath\Number('-3.14')->floor();

    var_dump($num1, $num2, $num3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "4"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(2) "-4"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcfloor() - Round down arbitrary precision number
- BcMath\Number::ceil() - Rounds up an arbitrary precision number
- BcMath\Number::round() - Rounds an arbitrary precision number

# BcMath\Number::mod

(PHP 8 >= 8.4.0)

BcMath\Number::mod — Gets the modulus of an arbitrary precision number

### Açıklama

public function BcMath\Number::mod(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number

Gets the remainder of dividing $this by `num`. Unless `num` is `0`, the result has the same sign as $this.

### Bağımsız Değişkenler

`num`
  The divisor.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the modulus as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the greater BcMath\Number::scale of the two numbers used for modulus operation is used.

That is, if the BcMath\Number::scales of two values are `2` and `5` respectively, the BcMath\Number::scale of the result will be `5`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range

This method throws a DivisionByZeroError exception if `num` is `0`.

### Örnekler

Örnek 1 BcMath\Number::mod() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('8.3');

    $ret1 = $number->mod(new BcMath\Number('2.22'));
    $ret2 = $number->mod('8.3');
    $ret3 = $number->mod(-5);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(3) "8.3"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(4) "1.64"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(3) "0.0"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "3.3"
      ["scale"]=>
      int(1)
    }

Örnek 2 BcMath\Number::mod() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('8.3');

    $ret1 = $number->mod(new BcMath\Number('2.22'), 1);
    $ret2 = $number->mod('8.3', 3);
    $ret3 = $number->mod(-5, 0);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(3) "8.3"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "1.6"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(5) "0.000"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "3"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcmod() - Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
- BcMath\Number::div() - Divides by an arbitrary precision number
- BcMath\Number::divmod() - Gets the quotient and modulus of an arbitrary precision number
- BcMath\Number::powmod() - Raises an arbitrary precision number, reduced by a specified modulus

# BcMath\Number::mul

(PHP 8 >= 8.4.0)

BcMath\Number::mul — Multiplies an arbitrary precision number

### Açıklama

public function BcMath\Number::mul(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number

Multiplies $this by `num`.

### Bağımsız Değişkenler

`num`
  The multiplier.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result of multiplication as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the sum of the BcMath\Number::scales of the two values used for multiplication is used.

That is, if the BcMath\Number::scales of two values are `2` and `5` respectively, the BcMath\Number::scale of the result will be `7`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range
- BcMath\Number::scale of the result object is outside the valid range

### Örnekler

Örnek 1 BcMath\Number::mul() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->mul(new BcMath\Number('2.3456'));
    $ret2 = $number->mul('-3.4');
    $ret3 = $number->mul(7);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(9) "2.8944704"
      ["scale"]=>
      int(7)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(7) "-4.1956"
      ["scale"]=>
      int(4)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "8.638"
      ["scale"]=>
      int(3)
    }

Örnek 2 BcMath\Number::mul() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->mul(new BcMath\Number('2.3456'), 1);
    $ret2 = $number->mul('-3.4', 10);
    $ret3 = $number->mul(7, 0);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "2.8"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(13) "-4.1956000000"
      ["scale"]=>
      int(10)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcmul() - İki keyfi duyarlıklı sayıyı çarpar
- BcMath\Number::div() - Divides by an arbitrary precision number
- BcMath\Number::pow() - Raises an arbitrary precision number
- BcMath\Number::powmod() - Raises an arbitrary precision number, reduced by a specified modulus

# BcMath\Number::pow

(PHP 8 >= 8.4.0)

BcMath\Number::pow — Raises an arbitrary precision number

### Açıklama

public function BcMath\Number::pow(BcMath\Number|string|int `$exponent`, ?int `$scale` = `null`): BcMath\Number

Raises $this to the `exponent` power.

### Bağımsız Değişkenler

`exponent`
  The exponent. Must be a value with no fractional part. The valid range of the `exponent` is platform specific, but it is at least `-2147483648` to `2147483647`.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result of power as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, depending on the value of `exponent`, the BcMath\Number::scale of result will be as follows:

`exponent` | BcMath\Number::scale of result
--- | ---
positive | (BcMath\Number::scale of power base) * (`exponent`'s value)
`0` | `0`
negative | Between (BcMath\Number::scale of power base) and (BcMath\Number::scale of power base + `10`)

If an indivisible division occurs due to a negative `exponent`, the BcMath\Number::scale of the result is expanded. Expansion is done only as needed, up to a maximum of `+10`. This behavior is the same as BcMath\Number::div(), so please see that for details.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `exponent` is string and not a well-formed BCMath numeric string
- `exponent` has a fractional part
- `exponent` or `scale` is outside the valid range
- BcMath\Number::scale of the result object is outside the valid range

This method throws a DivisionByZeroError exception if $this's value is `0` and `exponent` is a negative value.

### Örnekler

Örnek 1 BcMath\Number::pow() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('3.0');

    $ret1 = $number->pow(new BcMath\Number('5'));
    $ret2 = $number->pow('-1');
    $ret3 = $number->pow(0);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(3) "3.0"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(9) "243.00000"
      ["scale"]=>
      int(5)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(13) "0.33333333333"
      ["scale"]=>
      int(11)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }

Örnek 2 BcMath\Number::pow() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('3.0');

    $ret1 = $number->pow(new BcMath\Number('5'), 0);
    $ret2 = $number->pow('-1', 2);
    $ret3 = $number->pow(0, 10);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(3) "3.0"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "243"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(4) "0.33"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(12) "1.0000000000"
      ["scale"]=>
      int(10)
    }

### Ayrıca Bakınız

- bcpow() - Keyfi duyarlıklı sayılar için üs alma işlemi yapar
- BcMath\Number::powmod() - Raises an arbitrary precision number, reduced by a specified modulus
- BcMath\Number::mul() - Multiplies an arbitrary precision number
- BcMath\Number::sqrt() - Gets the square root of an arbitrary precision number
- BcMath\Number::div() - Divides by an arbitrary precision number

# BcMath\Number::powmod

(PHP 8 >= 8.4.0)

BcMath\Number::powmod — Raises an arbitrary precision number, reduced by a specified modulus

### Açıklama

public function BcMath\Number::powmod(BcMath\Number|string|int `$exponent`, BcMath\Number|string|int `$modulus`, ?int `$scale` = `null`): BcMath\Number

Use the fast-exponentiation method to raise $this to the power `exponent` with respect to the modulus `modulus`.

### Bağımsız Değişkenler

`exponent`
  The exponent, as an non-negative and integral (i.e. the scale has to be zero).
`modulus`
  The modulus, as an integral (i.e. the scale has to be zero).
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the BcMath\Number::scale of the result object will always be `0`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `exponent` or `modulus` is string and not a well-formed BCMath numeric string
- $this, `exponent` or `modulus` has a fractional part
- `exponent` is a negative value
- `scale` is outside the valid range

This method throws a DivisionByZeroError exception if `modulus` is `0`.

### Örnekler

Örnek 1 BcMath\Number::powmod() example when `scale` is not specified

    <?php
    var_dump(
        new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5),
        new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5),
        new BcMath\Number('8')->powmod('2', -3),
        new BcMath\Number('-8')->powmod(5, 7),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "2"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(2) "-2"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "1"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(2) "-1"
      ["scale"]=>
      int(0)
    }

Örnek 2 BcMath\Number::powmod() example of explicitly specifying `scale`

    <?php
    var_dump(
        new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5, 1),
        new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5, 2),
        new BcMath\Number('8')->powmod('2', -3, 3),
        new BcMath\Number('-8')->powmod(5, 7, 4),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(3) "2.0"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "-2.00"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(5) "1.000"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(7) "-1.0000"
      ["scale"]=>
      int(4)
    }

### Ayrıca Bakınız

- bcpowmod() - Önce bir keyfi duyarlıklı sayının diğerine göre üs alma işlemini yapar, sonra sonucun modüle göre kalanını bulur
- BcMath\Number::pow() - Raises an arbitrary precision number
- BcMath\Number::mod() - Gets the modulus of an arbitrary precision number

# BcMath\Number::round

(PHP 8 >= 8.4.0)

BcMath\Number::round — Rounds an arbitrary precision number

### Açıklama

public function BcMath\Number::round(int `$precision` = 0, RoundingMode `$mode` = `RoundingMode::HalfAwayFromZero`): BcMath\Number

Returns the rounded value of $this to specified `precision` (number of digits after the decimal point). `precision` can also be negative or zero (default).

### Bağımsız Değişkenler

`precision`

  The optional number of decimal digits to round to.

  If the `precision` is positive, `num` is rounded to `precision` significant digits after the decimal point.

  If the `precision` is negative, `num` is rounded to `precision` significant digits before the decimal point, i.e. to the nearest multiple of `pow(10, -$precision)`, e.g. for a `precision` of -1 `num` is rounded to tens, for a `precision` of -2 to hundreds, etc.

`mode`
  Specifies the rounding mode. For more information about modes, see RoundingMode.

### Dönen Değerler

Returns the result as a new BcMath\Number object.

### Hatalar/İstisnalar

This method throws a ValueError if an invalid `mode` is specified.

### Örnekler

Örnek 1 BcMath\Number::round() example

    <?php
    var_dump(
        new BcMath\Number('3.4')->round(),
        new BcMath\Number('3.5')->round(),
        new BcMath\Number('3.6')->round(),
        new BcMath\Number('3.6')->round(0),
        new BcMath\Number('5.045')->round(2),
        new BcMath\Number('5.055')->round(2),
        new BcMath\Number('345')->round(-2),
        new BcMath\Number('345')->round(-3),
        new BcMath\Number('678')->round(-2),
        new BcMath\Number('678')->round(-3),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(1) "3"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "4"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "4"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(1) "4"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#6 (2) {
      ["value"]=>
      string(4) "5.05"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#7 (2) {
      ["value"]=>
      string(4) "5.06"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#8 (2) {
      ["value"]=>
      string(3) "300"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#9 (2) {
      ["value"]=>
      string(1) "0"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#10 (2) {
      ["value"]=>
      string(3) "700"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#11 (2) {
      ["value"]=>
      string(4) "1000"
      ["scale"]=>
      int(0)
    }

Örnek 2 Example of using BcMath\Number::round() with different `precision` values

    <?php
    $number = new BcMath\Number('123.45');

    var_dump(
        $number->round(3),
        $number->round(2),
        $number->round(1),
        $number->round(0),
        $number->round(-1),
        $number->round(-2),
        $number->round(-3),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(7) "123.450"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(6) "123.45"
      ["scale"]=>
      int(2)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(5) "123.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(3) "123"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#6 (2) {
      ["value"]=>
      string(3) "120"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#7 (2) {
      ["value"]=>
      string(3) "100"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#8 (2) {
      ["value"]=>
      string(1) "0"
      ["scale"]=>
      int(0)
    }

Örnek 3 Example of using BcMath\Number::round() with different `mode` values

    <?php
    echo 'Rounding modes with 9.5' . PHP_EOL;
    $number = new BcMath\Number('9.5');
    var_dump(
        $number->round(0, RoundingMode::HalfAwayFromZero),
        $number->round(0, RoundingMode::HalfTowardsZero),
        $number->round(0, RoundingMode::HalfEven),
        $number->round(0, RoundingMode::HalfOdd),
        $number->round(0, RoundingMode::TowardsZero),
        $number->round(0, RoundingMode::AwayFromZero),
        $number->round(0, RoundingMode::NegativeInfinity),
        $number->round(0, RoundingMode::PositiveInfinity),
    );

    echo PHP_EOL;
    echo 'Rounding modes with 8.5' . PHP_EOL;
    $number = new BcMath\Number('8.5');
    var_dump(
        $number->round(0, RoundingMode::HalfAwayFromZero),
        $number->round(0, RoundingMode::HalfTowardsZero),
        $number->round(0, RoundingMode::HalfEven),
        $number->round(0, RoundingMode::HalfOdd),
        $number->round(0, RoundingMode::TowardsZero),
        $number->round(0, RoundingMode::AwayFromZero),
        $number->round(0, RoundingMode::NegativeInfinity),
        $number->round(0, RoundingMode::PositiveInfinity),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    Rounding modes with 9.5
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(2) "10"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#7 (2) {
      ["value"]=>
      string(2) "10"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#9 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#11 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#13 (2) {
      ["value"]=>
      string(2) "10"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#15 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#17 (2) {
      ["value"]=>
      string(2) "10"
      ["scale"]=>
      int(0)
    }

    Rounding modes with 8.5
    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#15 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#13 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#11 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#9 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#7 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(1) "8"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(1) "9"
      ["scale"]=>
      int(0)
    }

Örnek 4 Example of using BcMath\Number::round() with different `mode` values when specifying `precision`

    <?php
    $positive = new BcMath\Number('1.55');
    $negative = new BcMath\Number('-1.55');

    echo 'Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::HalfAwayFromZero),
        $negative->round(1, RoundingMode::HalfAwayFromZero),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfTowardsZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::HalfTowardsZero),
        $negative->round(1, RoundingMode::HalfTowardsZero),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfEven with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::HalfEven),
        $negative->round(1, RoundingMode::HalfEven),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::HalfOdd with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::HalfOdd),
        $negative->round(1, RoundingMode::HalfOdd),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::TowardsZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::TowardsZero),
        $negative->round(1, RoundingMode::TowardsZero),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::AwayFromZero with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::AwayFromZero),
        $negative->round(1, RoundingMode::AwayFromZero),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::NegativeInfinity with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::NegativeInfinity),
        $negative->round(1, RoundingMode::NegativeInfinity),
    );

    echo PHP_EOL;
    echo 'Using RoundingMode::PositiveInfinity with 1 decimal digit precision' . PHP_EOL;
    var_dump(
        $positive->round(1, RoundingMode::PositiveInfinity),
        $negative->round(1, RoundingMode::PositiveInfinity),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.6"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(4) "-1.6"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::HalfTowardsZero with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#6 (2) {
      ["value"]=>
      string(4) "-1.5"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::HalfEven with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.6"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#7 (2) {
      ["value"]=>
      string(4) "-1.6"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::HalfOdd with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#8 (2) {
      ["value"]=>
      string(4) "-1.5"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::TowardsZero with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#9 (2) {
      ["value"]=>
      string(4) "-1.5"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::AwayFromZero with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.6"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#10 (2) {
      ["value"]=>
      string(4) "-1.6"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::NegativeInfinity with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.5"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#11 (2) {
      ["value"]=>
      string(4) "-1.6"
      ["scale"]=>
      int(1)
    }

    Using RoundingMode::PositiveInfinity with 1 decimal digit precision
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(3) "1.6"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#12 (2) {
      ["value"]=>
      string(4) "-1.5"
      ["scale"]=>
      int(1)
    }

### Ayrıca Bakınız

- bcround() - Round arbitrary precision number
- BcMath\Number::ceil() - Rounds up an arbitrary precision number
- BcMath\Number::floor() - Rounds down an arbitrary precision number

# BcMath\Number::__serialize

(PHP 8 >= 8.4.0)

BcMath\Number::__serialize — Serializes a BcMath\Number object

### Açıklama

public function BcMath\Number::__serialize(): array

Serializes $this.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Ayrıca Bakınız

- BcMath\Number::__construct() - Creates a BcMath\Number object
- BcMath\Number::__unserialize() - Deserializes a data parameter into a BcMath\Number object

# BcMath\Number::sqrt

(PHP 8 >= 8.4.0)

BcMath\Number::sqrt — Gets the square root of an arbitrary precision number

### Açıklama

public function BcMath\Number::sqrt(?int `$scale` = `null`): BcMath\Number

Return the square root of $this.

### Bağımsız Değişkenler

`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the square root as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the BcMath\Number::scale of $this is used. However, in cases such as indivisible division, the BcMath\Number::scale of the result is expanded. Expansion is done only as needed, up to a maximum of `+10`. This behavior is the same as BcMath\Number::div(), so please see that for details.

That is, if the BcMath\Number::scale of $this is `5`, the BcMath\Number::scale of the result is between `5` and `15`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- $this is a negative value
- `scale` is outside the valid range
- BcMath\Number::scale of the result object is outside the valid range

### Örnekler

Örnek 1 BcMath\Number::sqrt() example

    <?php
    var_dump(
        new BcMath\Number('2')->sqrt(),
        new BcMath\Number('2')->sqrt(3),
        new BcMath\Number('4')->sqrt(),
        new BcMath\Number('4')->sqrt(3),
    );
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(12) "1.4142135623"
      ["scale"]=>
      int(10)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(5) "1.414"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(1) "2"
      ["scale"]=>
      int(0)
    }
    object(BcMath\Number)#5 (2) {
      ["value"]=>
      string(5) "2.000"
      ["scale"]=>
      int(3)
    }

### Ayrıca Bakınız

- bcsqrt() - Keyfi duyarlıklı bir sayının karekök alma işlemini yapar
- BcMath\Number::div() - Divides by an arbitrary precision number
- BcMath\Number::pow() - Raises an arbitrary precision number

# BcMath\Number::sub

(PHP 8 >= 8.4.0)

BcMath\Number::sub — Subtracts an arbitrary precision number

### Açıklama

public function BcMath\Number::sub(BcMath\Number|string|int `$num`, ?int `$scale` = `null`): BcMath\Number

Subtracts `num` from $this.

### Bağımsız Değişkenler

`num`
  The value to subtract.
`scale`
  BcMath\Number::scale explicitly specified for calculation results. If `null`, the BcMath\Number::scale of the calculation result will be set automatically.

### Dönen Değerler

Returns the result of subtraction as a new BcMath\Number object.

When the BcMath\Number::scale of the result object is automatically set, the greater BcMath\Number::scale of the two numbers used for subtraction is used.

That is, if the BcMath\Number::scales of two values are `2` and `5` respectively, the BcMath\Number::scale of the result will be `5`.

### Hatalar/İstisnalar

This method throws a ValueError in the following cases:

- `num` is string and not a well-formed BCMath numeric string
- `scale` is outside the valid range

### Örnekler

Örnek 1 BcMath\Number::sub() example when `scale` is not specified

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->sub(new BcMath\Number('2.34567'));
    $ret2 = $number->sub('-3.456');
    $ret3 = $number->sub(7);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(8) "-1.11167"
      ["scale"]=>
      int(5)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(5) "4.690"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(6) "-5.766"
      ["scale"]=>
      int(3)
    }

Örnek 2 BcMath\Number::sub() example of explicitly specifying `scale`

    <?php
    $number = new BcMath\Number('1.234');

    $ret1 = $number->sub(new BcMath\Number('2.34567'), 1);
    $ret2 = $number->sub('-3.456', 10);
    $ret3 = $number->sub(7, 0);

    var_dump($number, $ret1, $ret2, $ret3);
    ?>

Yukarıdaki örneğin çıktısı:

    object(BcMath\Number)#1 (2) {
      ["value"]=>
      string(5) "1.234"
      ["scale"]=>
      int(3)
    }
    object(BcMath\Number)#3 (2) {
      ["value"]=>
      string(4) "-1.1"
      ["scale"]=>
      int(1)
    }
    object(BcMath\Number)#2 (2) {
      ["value"]=>
      string(12) "4.6900000000"
      ["scale"]=>
      int(10)
    }
    object(BcMath\Number)#4 (2) {
      ["value"]=>
      string(2) "-5"
      ["scale"]=>
      int(0)
    }

### Ayrıca Bakınız

- bcsub() - Keyfi duyarlıklı sayılar arasında çıkartma işlemi yapar
- BcMath\Number::add() - Adds an arbitrary precision number

# BcMath\Number::__toString

(PHP 8 >= 8.4.0)

BcMath\Number::__toString — Converts BcMath\Number to string

### Açıklama

public function BcMath\Number::__toString(): string

Converts BcMath\Number to string.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns BcMath\Number::value as a string.

# BcMath\Number::__unserialize

(PHP 8 >= 8.4.0)

BcMath\Number::__unserialize — Deserializes a data parameter into a BcMath\Number object

### Açıklama

public function BcMath\Number::__unserialize(array `$data`): void

Deserializes a data parameter into a BcMath\Number object.

### Bağımsız Değişkenler

`data`
  The serialized data parameter as an associative array

### Hatalar/İstisnalar

This method throws a ValueError if invalid serialized data is passed.

### Ayrıca Bakınız

- BcMath\Number::__construct() - Creates a BcMath\Number object
- BcMath\Number::serialize()

## İçindekiler

- BcMath\Number::add — Adds an arbitrary precision number
- BcMath\Number::ceil — Rounds up an arbitrary precision number
- BcMath\Number::compare — Compares two arbitrary precision numbers
- BcMath\Number::__construct — Creates a BcMath\Number object
- BcMath\Number::div — Divides by an arbitrary precision number
- BcMath\Number::divmod — Gets the quotient and modulus of an arbitrary precision number
- BcMath\Number::floor — Rounds down an arbitrary precision number
- BcMath\Number::mod — Gets the modulus of an arbitrary precision number
- BcMath\Number::mul — Multiplies an arbitrary precision number
- BcMath\Number::pow — Raises an arbitrary precision number
- BcMath\Number::powmod — Raises an arbitrary precision number, reduced by a specified modulus
- BcMath\Number::round — Rounds an arbitrary precision number
- BcMath\Number::__serialize — Serializes a BcMath\Number object
- BcMath\Number::sqrt — Gets the square root of an arbitrary precision number
- BcMath\Number::sub — Subtracts an arbitrary precision number
- BcMath\Number::__toString — Converts BcMath\Number to string
- BcMath\Number::__unserialize — Deserializes a data parameter into a BcMath\Number object

- Yapılandırma/Kurulum
  - Kurulum
  - Çalışma Anı Yapılandırması
- BC Math İşlevleri
  - bcadd — Keyfi duyarlıklı iki sayıyı toplar
  - bcceil — Round up arbitrary precision number
  - bccomp — İki keyfi duyarlıklı sayıyı karşılaştırır
  - bcdiv — İki keyfi duyarlıklı sayıyı böler
  - bcdivmod — Keyfi hassasiyetli bir sayının bölümünü ve kalanını verir
  - bcfloor — Round down arbitrary precision number
  - bcmod — Keyfi duyarlıklı sayılarda bölme işleminden kalanı bulur
  - bcmul — İki keyfi duyarlıklı sayıyı çarpar
  - bcpow — Keyfi duyarlıklı sayılar için üs alma işlemi yapar
  - bcpowmod — Önce bir keyfi duyarlıklı sayının diğerine göre üs alma işlemini yapar, sonra sonucun modüle göre kalanını bulur
  - bcround — Round arbitrary precision number
  - bcscale — Bütün bc matematik işlevleri için öntanımlı basamak bağımsız değişkenini tanımlar
  - bcsqrt — Keyfi duyarlıklı bir sayının karekök alma işlemini yapar
  - bcsub — Keyfi duyarlıklı sayılar arasında çıkartma işlemi yapar
- BcMath\Number — The BcMath\Number class
  - BcMath\Number::add — Adds an arbitrary precision number
  - BcMath\Number::ceil — Rounds up an arbitrary precision number
  - BcMath\Number::compare — Compares two arbitrary precision numbers
  - BcMath\Number::__construct — Creates a BcMath\Number object
  - BcMath\Number::div — Divides by an arbitrary precision number
  - BcMath\Number::divmod — Gets the quotient and modulus of an arbitrary precision number
  - BcMath\Number::floor — Rounds down an arbitrary precision number
  - BcMath\Number::mod — Gets the modulus of an arbitrary precision number
  - BcMath\Number::mul — Multiplies an arbitrary precision number
  - BcMath\Number::pow — Raises an arbitrary precision number
  - BcMath\Number::powmod — Raises an arbitrary precision number, reduced by a specified modulus
  - BcMath\Number::round — Rounds an arbitrary precision number
  - BcMath\Number::__serialize — Serializes a BcMath\Number object
  - BcMath\Number::sqrt — Gets the square root of an arbitrary precision number
  - BcMath\Number::sub — Subtracts an arbitrary precision number
  - BcMath\Number::__toString — Converts BcMath\Number to string
  - BcMath\Number::__unserialize — Deserializes a data parameter into a BcMath\Number object

# GNU Multiple Precision

# Giriş

These functions allow for arbitrary-length integers to be worked with using the GNU MP library.

> Bilginize:

> Most GMP functions accept GMP number arguments. These are shown in this documentation as GMP objects. Most of these functions will also accept numeric and string arguments, so long as it is possible to convert the latter to a number. Also, if there is a more performant function that can operate on the arguments (integers only), then it will be used instead (this is done transparently). See also the gmp_init() function.

> Bilginize:

> The arithmetic, bitwise, and comparison operators may be used with the GMP objects returned from gmp_init() and other GMP functions.

Uyarı

Large integers must be specified as strings - otherwise, PHP will coerce them to floats, resulting in a loss of precision.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

The GMP library can be downloaded from » http://gmplib.org/#DOWNLOAD. This site also has the GMP manual available.

At least GMP version 4.2 is required, with some functions requiring a more recent version of the GMP library.

On Windows, MPIR is required instead of GMP.

## Kurulum

In order to have these functions available, PHP must be compiled with GMP support by using the --with-gmp option.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`GMP_ROUND_ZERO` (int)
`GMP_ROUND_PLUSINF` (int)
`GMP_ROUND_MINUSINF` (int)
`GMP_MSW_FIRST` (int)
`GMP_LSW_FIRST` (int)
`GMP_LITTLE_ENDIAN` (int)
`GMP_BIG_ENDIAN` (int)
`GMP_NATIVE_ENDIAN` (int)
`GMP_VERSION` (string)
  The GMP library version
`GMP_MPIR_VERSION` (string)
  The MPIR library version.

# Örnekler

Örnek 1 Factorial function using GMP

    <?php
    function fact($x)
    {
        $return = 1;
        for ($i=2; $i <= $x; $i++) {
            $return = gmp_mul($return, $i);
        }
        return $return;
    }

    echo gmp_strval(fact(1000)) . "\n";
    ?>

This will calculate factorial of 1000 (pretty big number) very fast.

# GMP İşlevleri

## Ayrıca Bakınız

More mathematical functions can be found in the Matematiksel Eklentiler section

# gmp_abs

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_abs — Absolute value

### Açıklama

function gmp_abs(GMP|int|string `$num`): GMP

Get the absolute value of a number.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns the absolute value of `num`, as a GMP number.

### Örnekler

Örnek 1 gmp_abs() example

    <?php
    $abs1 = gmp_abs("274982683358");
    $abs2 = gmp_abs("-274982683358");

    echo gmp_strval($abs1) . "\n";
    echo gmp_strval($abs2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    274982683358
    274982683358

# gmp_add

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_add — Add numbers

### Açıklama

function gmp_add(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Add two numbers.

### Bağımsız Değişkenler

`num1`
  The first summand (augend).

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The second summand (addend).

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

A GMP number representing the sum of the arguments.

### Örnekler

Örnek 1 gmp_add() example

    <?php
    $sum = gmp_add("123456789012345", "76543210987655");
    echo gmp_strval($sum) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    200000000000000

# gmp_and

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_and — Bitwise AND

### Açıklama

function gmp_and(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Calculates bitwise AND of two GMP numbers.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

A GMP number representing the bitwise `AND` comparison.

### Örnekler

Örnek 1 gmp_and() example

    <?php
    $and1 = gmp_and("0xfffffffff4", "0x4");
    $and2 = gmp_and("0xfffffffff4", "0x8");
    echo gmp_strval($and1) . "\n";
    echo gmp_strval($and2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    4
    0

# gmp_binomial

(PHP 7 >= 7.3.0, PHP 8)

gmp_binomial — Calculates binomial coefficient

### Açıklama

function gmp_binomial(GMP|int|string `$n`, int `$k`): GMP

Calculates the binomial coefficient C(n, k).

### Bağımsız Değişkenler

`n`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`k`

### Dönen Değerler

Returns the binomial coefficient C(n, k).

### Hatalar/İstisnalar

Throws ValueError if `k` is negative. Prior to PHP 8.0.0, `E_WARNING` was issued instead.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function no longer returns `false` on failure.

# gmp_clrbit

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_clrbit — Clear bit

### Açıklama

function gmp_clrbit(GMP `$num`, int `$index`): void

Clears (sets to 0) bit `index` in `num`. The index starts at 0.

### Bağımsız Değişkenler

`num`

  A GMP object.

`index`

  The index of the bit to clear. Index 0 represents the least significant bit.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 gmp_clrbit() example

    <?php
    $a = gmp_init("0xff");
    gmp_clrbit($a, 0); // index starts at 0, least significant bit
    echo gmp_strval($a) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    254

### Notlar

> Bilginize:

> Unlike most of the other GMP functions, gmp_clrbit() must be called with a GMP object that already exists (using gmp_init() for example). One will not be automatically created.

### Ayrıca Bakınız

- gmp_setbit() - Set bit
- gmp_testbit() - Tests if a bit is set

# gmp_cmp

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_cmp — Compare numbers

### Açıklama

function gmp_cmp(GMP|int|string `$num1`, GMP|int|string `$num2`): int

Compares two numbers.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns a positive value if `a > b`, zero if `a = b` and a negative value if `a < b`.

### Örnekler

Örnek 1 gmp_cmp() example

    <?php
    $cmp1 = gmp_cmp("1234", "1000"); // greater than
    $cmp2 = gmp_cmp("1000", "1234"); // less than
    $cmp3 = gmp_cmp("1234", "1234"); // equal to

    echo "$cmp1 $cmp2 $cmp3\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1 -1 0

# gmp_com

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_com — Calculates one's complement

### Açıklama

function gmp_com(GMP|int|string `$num`): GMP

Returns the one's complement of `num`.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns the one's complement of `num`, as a GMP number.

### Örnekler

Örnek 1 gmp_com() example

    <?php
    $com = gmp_com("1234");
    echo gmp_strval($com) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    -1235

# gmp_div

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_div — Takma Adı: gmp_div_q()

### Açıklama

Bu işlev şu işlevin takma adıdır: gmp_div_q().

# gmp_div_q

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_div_q — Divide numbers

### Açıklama

function gmp_div_q(GMP|int|string `$num1`, GMP|int|string `$num2`, int `$rounding_mode` = `GMP_ROUND_ZERO`): GMP

Divides `num1` by `num2` and returns the integer result.

### Bağımsız Değişkenler

`num1`

  The number being divided.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The number that `num1` is being divided by.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`rounding_mode`

  The result rounding is defined by the `rounding_mode`, which can have the following values:

  - `GMP_ROUND_ZERO`: The result is truncated towards 0.
  - `GMP_ROUND_PLUSINF`: The result is rounded towards `+infinity`.
  - `GMP_ROUND_MINUSINF`: The result is rounded towards `-infinity`.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_div_q() example

    <?php
    $div1 = gmp_div_q("100", "5");
    echo gmp_strval($div1) . "\n";

    $div2 = gmp_div_q("1", "3");
    echo gmp_strval($div2) . "\n";

    $div3 = gmp_div_q("1", "3", GMP_ROUND_PLUSINF);
    echo gmp_strval($div3) . "\n";

    $div4 = gmp_div_q("-1", "4", GMP_ROUND_PLUSINF);
    echo gmp_strval($div4) . "\n";

    $div5 = gmp_div_q("-1", "4", GMP_ROUND_MINUSINF);
    echo gmp_strval($div5) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    20
    0
    1
    0
    -1

### Notlar

> Bilginize:

> This function can also be called as gmp_div().

### Ayrıca Bakınız

- gmp_div_r() - Remainder of the division of numbers
- gmp_div_qr() - Divide numbers and get quotient and remainder

# gmp_div_qr

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_div_qr — Divide numbers and get quotient and remainder

### Açıklama

function gmp_div_qr(GMP|int|string `$num1`, GMP|int|string `$num2`, int `$rounding_mode` = `GMP_ROUND_ZERO`): array

The function divides `num1` by `num2`.

### Bağımsız Değişkenler

`num1`

  The number being divided.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The number that `num1` is being divided by.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`rounding_mode`

  See the gmp_div_q() function for description of the `rounding_mode` argument.

### Dönen Değerler

Returns an array, with the first element being `[n/d]` (the integer result of the division) and the second being `(n - [n/d] * d)` (the remainder of the division).

### Örnekler

Örnek 1 Division of GMP numbers

    <?php
    $a = gmp_init("0x41682179fbf5");
    $res = gmp_div_qr($a, "0xDEFE75");
    printf("Result is: q - %s, r - %s",
           gmp_strval($res[0]), gmp_strval($res[1]));
    ?>

### Ayrıca Bakınız

- gmp_div_q() - Divide numbers
- gmp_div_r() - Remainder of the division of numbers

# gmp_div_r

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_div_r — Remainder of the division of numbers

### Açıklama

function gmp_div_r(GMP|int|string `$num1`, GMP|int|string `$num2`, int `$rounding_mode` = `GMP_ROUND_ZERO`): GMP

Calculates remainder of the integer division of `num1` by `num2`. The remainder has the sign of the `num1` argument, if not zero.

### Bağımsız Değişkenler

`num1`

  The number being divided.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The number that `num1` is being divided by.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`rounding_mode`

  See the gmp_div_q() function for description of the `rounding_mode` argument.

### Dönen Değerler

The remainder, as a GMP number.

### Örnekler

Örnek 1 gmp_div_r() example

    <?php
    $div = gmp_div_r("105", "20");
    echo gmp_strval($div) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    5

### Ayrıca Bakınız

- gmp_div_q() - Divide numbers
- gmp_div_qr() - Divide numbers and get quotient and remainder

# gmp_divexact

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_divexact — Exact division of numbers

### Açıklama

function gmp_divexact(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Divides `num1` by `num2`, using fast "exact division" algorithm. This function produces correct results only when it is known in advance that `num2` divides `num1`.

### Bağımsız Değişkenler

`num1`

  The number being divided.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The number that `num1` is being divided by.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_divexact() example

    <?php
    $div1 = gmp_divexact("10", "2");
    echo gmp_strval($div1) . "\n";

    $div2 = gmp_divexact("10", "3"); // bogus result
    echo gmp_strval($div2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    5
    2863311534

# gmp_export

(PHP 5 >= 5.6.1, PHP 7, PHP 8)

gmp_export — Export to a binary string

### Açıklama

function gmp_export(GMP|int|string `$num`, int `$word_size` = 1, int `$flags` = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string

Export a GMP number to a binary string

### Bağımsız Değişkenler

`num`

  The GMP number being exported

`word_size`

  Default value is 1. The number of bytes in each chunk of binary data. This is mainly used in conjunction with the options parameter.

`flags`

  Default value is `GMP_MSW_FIRST` | `GMP_NATIVE_ENDIAN`.

### Dönen Değerler

Returns a string.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function no longer returns `false` on failure.

### Örnekler

Örnek 1 gmp_export() example

    <?php
    $number = gmp_init(16705);
    echo gmp_export($number) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    AA

### Ayrıca Bakınız

- gmp_import() - Import from a binary string

# gmp_fact

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_fact — Factorial

### Açıklama

function gmp_fact(GMP|int|string `$num`): GMP

Calculates factorial (`num!`) of `num`.

### Bağımsız Değişkenler

`num`

  The factorial number.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_fact() example

    <?php
    $fact1 = gmp_fact(5); // 5 * 4 * 3 * 2 * 1
    echo gmp_strval($fact1) . "\n";

    $fact2 = gmp_fact(50); // 50 * 49 * 48, ... etc
    echo gmp_strval($fact2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    120
    30414093201713378043612608166064768844377641568960512000000000000

# gmp_gcd

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_gcd — Calculate GCD

### Açıklama

function gmp_gcd(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Calculate greatest common divisor of `num1` and `num2`. The result is always positive even if either of, or both, input operands are negative.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

A positive GMP number that divides into both `num1` and `num2`.

### Örnekler

Örnek 1 gmp_gcd() example

    <?php
    $gcd = gmp_gcd("12", "21");
    echo gmp_strval($gcd) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3

### Ayrıca Bakınız

- gmp_lcm() - Calculate LCM

# gmp_gcdext

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_gcdext — Calculate GCD and multipliers

### Açıklama

function gmp_gcdext(GMP|int|string `$num1`, GMP|int|string `$num2`): array

Calculates g, s, and t, such that `a*s + b*t = g = gcd(a,b)`, where gcd is the greatest common divisor. Returns an array with respective elements g, s and t.

This function can be used to solve linear Diophantine equations in two variables. These are equations that allow only integer solutions and have the form: `a*x + b*y = c`. For more information, go to the » "Diophantine Equation" page at MathWorld

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

An array of GMP numbers.

### Örnekler

Örnek 1 Solving a linear Diophantine equation

    <?php
    // Solve the equation a*s + b*t = g
    // where a = 12, b = 21, g = gcd(12, 21) = 3
    $a = gmp_init(12);
    $b = gmp_init(21);
    $g = gmp_gcd($a, $b);
    $r = gmp_gcdext($a, $b);

    $check_gcd = (gmp_strval($g) == gmp_strval($r['g']));
    $eq_res = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t']));
    $check_res = (gmp_strval($g) == gmp_strval($eq_res));

    if ($check_gcd && $check_res) {
        $fmt = "Solution: %d*%d + %d*%d = %d\n";
        printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b),
        gmp_strval($r['t']), gmp_strval($r['g']));
    } else {
        echo "Error while solving the equation\n";
    }

    // output: Solution: 12*2 + 21*-1 = 3
    ?>

# gmp_hamdist

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_hamdist — Hamming distance

### Açıklama

function gmp_hamdist(GMP|int|string `$num1`, GMP|int|string `$num2`): int

Returns the hamming distance between `num1` and `num2`. Both operands should be non-negative.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

  It should be positive.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

  It should be positive.

### Dönen Değerler

The hamming distance between `num1` and `num2`, as an int.

### Örnekler

Örnek 1 gmp_hamdist() example

    <?php
    $ham1 = gmp_init("1001010011", 2);
    $ham2 = gmp_init("1011111100", 2);
    echo gmp_hamdist($ham1, $ham2) . "\n";

    /* hamdist is equivalent to: */
    echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    6
    6

### Ayrıca Bakınız

- gmp_popcount() - Population count
- gmp_xor() - Bitwise XOR

# gmp_import

(PHP 5 >= 5.6.1, PHP 7, PHP 8)

gmp_import — Import from a binary string

### Açıklama

function gmp_import(string `$data`, int `$word_size` = 1, int `$flags` = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP

Import a GMP number from a binary string

### Bağımsız Değişkenler

`data`

  The binary string being imported

`word_size`

  Default value is 1. The number of bytes in each chunk of binary data. This is mainly used in conjunction with the options parameter.

`flags`

  Default value is `GMP_MSW_FIRST` | `GMP_NATIVE_ENDIAN`.

### Dönen Değerler

Returns a GMP number.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | This function no longer returns `false` on failure.

### Örnekler

Örnek 1 gmp_import() example

    <?php
    $number = gmp_import("\0");
    echo gmp_strval($number) . "\n";

    $number = gmp_import("\0\1\2");
    echo gmp_strval($number) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    0
    258

### Ayrıca Bakınız

- gmp_export() - Export to a binary string

# gmp_init

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_init — Create GMP number

### Açıklama

function gmp_init(int|string `$num`, int `$base` = 0): GMP

Creates a GMP number from an integer or string.

### Bağımsız Değişkenler

`num`
  An integer or a string. The string representation can be decimal, hexadecimal, octal, or binary.
`base`
  The base to use for converting a string representation. An explicit base can be between `2` and `62`. For bases up to `36`, case is ignored; upper-case and lower-case letters have the same value. For bases `37` to `62`, upper-case letter represent the values `10` to `35` and lower-case letter represent the values `36` to `61`. If `base` is `0` then the actual base is determined from the leading characters of `num`. If the first two characters are `0x` or `0X`, the string is interpreted as a hexadecimal integer. If the first two characters are `0b` or `0B`, the string is interpreted as a binary integer. If the first two characters are `0o` or `0O`, the string is interpreted as an octal integer. Moreover, if the first character is `0` the string is also interpreted as an octal integer. In all other cases, the string is interpreted as a decimal integer.

### Dönen Değerler

Bir GMP nesnesi.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.1.0 | Support for explicit octal prefixes `0o` and `0O` has been added for `num` strings. Interpretation of such prefixes when `base` is `0` has also been added.

### Örnekler

Örnek 1 Creating GMP number

    <?php
    $a = gmp_init(123456);
    $b = gmp_init("0xFFFFDEBACDFEDF7200");
    ?>

### Notlar

> Bilginize:

> It is not necessary to call this function in order to use integers or strings in place of GMP numbers in GMP functions (such as with gmp_add()). Function arguments are automatically converted to GMP numbers, if such conversion is possible and needed, using the same rules as gmp_init().

### Ayrıca Bakınız

- GMP::__construct() - Create GMP number

# gmp_intval

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_intval — Convert GMP number to integer

### Açıklama

function gmp_intval(GMP|int|string `$num`): int

This function converts GMP number into native PHP ints.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

The int value of `num`.

### Örnekler

Örnek 1 gmp_intval() example

    <?php
    // displays correct result
    echo gmp_intval("2147483647") . "\n";

    // displays wrong result, above PHP integer limit
    echo gmp_intval("2147483648") . "\n";

    // displays correct result
    echo gmp_strval("2147483648") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2147483647
    2147483647
    2147483648

### Notlar

Uyarı

This function returns a useful result only if the number actually fits the PHP integer (i.e., signed long type). To simply print the GMP number, use gmp_strval().

# gmp_invert

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_invert — Inverse by modulo

### Açıklama

function gmp_invert(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP|false

Computes the inverse of `num1` modulo `num2`.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

A GMP number on success or `false` if an inverse does not exist.

### Örnekler

Örnek 1 gmp_invert() example

    <?php
    echo gmp_invert("5", "10"); // no inverse, outputs nothing, result is FALSE
    $invert = gmp_invert("5", "11");
    echo gmp_strval($invert) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    9

# gmp_jacobi

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_jacobi — Jacobi symbol

### Açıklama

function gmp_jacobi(GMP|int|string `$num1`, GMP|int|string `$num2`): int

Computes » Jacobi symbol of `num1` and `num2`. `num2` should be odd and must be positive.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

  Should be odd and must be positive.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_jacobi() example

    <?php
    echo gmp_jacobi("1", "3") . "\n";
    echo gmp_jacobi("2", "3") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1
    0

### Ayrıca Bakınız

- gmp_kronecker() - Kronecker symbol
- gmp_legendre() - Legendre symbol

# gmp_kronecker

(PHP 7 >= 7.3.0, PHP 8)

gmp_kronecker — Kronecker symbol

### Açıklama

function gmp_kronecker(GMP|int|string `$num1`, GMP|int|string `$num2`): int

This function computes the Kronecker symbol of `num1` and `num2`.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns the Kronecker symbol of `num1` and `num2`

### Ayrıca Bakınız

- gmp_jacobi() - Jacobi symbol
- gmp_legendre() - Legendre symbol

# gmp_lcm

(PHP 7 >= 7.3.0, PHP 8)

gmp_lcm — Calculate LCM

### Açıklama

function gmp_lcm(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

This function computes the least common multiple (lcm) of `num1` and `num2`.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Ayrıca Bakınız

- gmp_gcd() - Calculate GCD

# gmp_legendre

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_legendre — Legendre symbol

### Açıklama

function gmp_legendre(GMP|int|string `$num1`, GMP|int|string `$num2`): int

Compute the » Legendre symbol of `num1` and `num2`. `num2` should be odd and must be positive.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

  Should be odd and must be positive.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_legendre() example

    <?php
    echo gmp_legendre("1", "3") . "\n";
    echo gmp_legendre("2", "3") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1
    0

### Ayrıca Bakınız

- gmp_jacobi() - Jacobi symbol
- gmp_kronecker() - Kronecker symbol

# gmp_mod

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_mod — Modulo operation

### Açıklama

function gmp_mod(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Calculates `num1` modulo `num2`. The result is always non-negative, the sign of `num2` is ignored.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The modulo that is being evaluated.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_mod() example

    <?php
    $mod = gmp_mod("8", "3");
    echo gmp_strval($mod) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2

# gmp_mul

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_mul — Multiply numbers

### Açıklama

function gmp_mul(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Multiplies `num1` by `num2` and returns the result.

### Bağımsız Değişkenler

`num1`

  A number that will be multiplied by `num2`.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  A number that will be multiplied by `num1`.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_mul() example

    <?php
    $mul = gmp_mul("12345678", "2000");
    echo gmp_strval($mul) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    24691356000

# gmp_neg

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_neg — Negate number

### Açıklama

function gmp_neg(GMP|int|string `$num`): GMP

Returns the negative value of a number.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns -`num`, as a GMP number.

### Örnekler

Örnek 1 gmp_neg() example

    <?php
    $neg1 = gmp_neg("1");
    echo gmp_strval($neg1) . "\n";
    $neg2 = gmp_neg("-1");
    echo gmp_strval($neg2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    -1
    1

# gmp_nextprime

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

gmp_nextprime — Find next prime number

### Açıklama

function gmp_nextprime(GMP|int|string `$num`): GMP

Find next prime number

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Return the next prime number greater than `num`, as a GMP number.

### Örnekler

Örnek 1 gmp_nextprime() example

    <?php
    $prime1 = gmp_nextprime(10); // next prime number greater than 10
    $prime2 = gmp_nextprime(-1000); // next prime number greater than -1000

    echo gmp_strval($prime1) . "\n";
    echo gmp_strval($prime2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    11
    2

### Notlar

> Bilginize:

> This function uses a probabilistic algorithm to identify primes and chances to get a composite number are extremely small.

# gmp_or

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_or — Bitwise OR

### Açıklama

function gmp_or(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Calculates bitwise inclusive OR of two GMP numbers.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_or() example

    <?php
    $or1 = gmp_or("0xfffffff2", "4");
    echo gmp_strval($or1, 16) . "\n";
    $or2 = gmp_or("0xfffffff2", "2");
    echo gmp_strval($or2, 16) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    fffffff6
    fffffff2

# gmp_perfect_power

(PHP 7 >= 7.3.0, PHP 8)

gmp_perfect_power — Perfect power check

### Açıklama

function gmp_perfect_power(GMP|int|string `$num`): bool

Checks whether `num` is a perfect power.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns `true` if `num` is a perfect power, `false` otherwise.

### Ayrıca Bakınız

- gmp_perfect_square() - Perfect square check

# gmp_perfect_square

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_perfect_square — Perfect square check

### Açıklama

function gmp_perfect_square(GMP|int|string `$num`): bool

Check if a number is a perfect square.

### Bağımsız Değişkenler

`num`

  The number being checked as a perfect square.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns `true` if `num` is a perfect square, `false` otherwise.

### Örnekler

Örnek 1 gmp_perfect_square() example

    <?php
    // 3 * 3, perfect square
    var_dump(gmp_perfect_square("9"));

    // not a perfect square
    var_dump(gmp_perfect_square("7"));

    // 1234567890 * 1234567890, perfect square
    var_dump(gmp_perfect_square("1524157875019052100"));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(true)
    bool(false)
    bool(true)

### Ayrıca Bakınız

- gmp_perfect_power() - Perfect power check
- gmp_sqrt() - Calculate square root
- gmp_sqrtrem() - Square root with remainder

# gmp_popcount

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_popcount — Population count

### Açıklama

function gmp_popcount(GMP|int|string `$num`): int

Get the population count.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

The population count of `num`, as an int.

### Örnekler

Örnek 1 gmp_popcount() example

    <?php
    $pop1 = gmp_init("10000101", 2); // 3 1's
    echo gmp_popcount($pop1) . "\n";
    $pop2 = gmp_init("11111110", 2); // 7 1's
    echo gmp_popcount($pop2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3
    7

# gmp_pow

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_pow — Raise number into power

### Açıklama

function gmp_pow(GMP|int|string `$num`, int `$exponent`): GMP

Raise `num` into power `exponent`.

### Bağımsız Değişkenler

`num`

  The base number.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`exponent`

  The positive power to raise the `num`.

### Dönen Değerler

The new (raised) number, as a GMP number. The case of `0^0` yields 1.

### Örnekler

Örnek 1 gmp_pow() example

    <?php
    $pow1 = gmp_pow("2", 31);
    echo gmp_strval($pow1) . "\n";
    $pow2 = gmp_pow("0", 0);
    echo gmp_strval($pow2) . "\n";
    $pow3 = gmp_pow("2", -1); // Negative exp, generates warning
    echo gmp_strval($pow3) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2147483648
    1

# gmp_powm

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_powm — Raise number into power with modulo

### Açıklama

function gmp_powm(GMP|int|string `$num`, GMP|int|string `$exponent`, GMP|int|string `$modulus`): GMP

Calculate (`num` raised into power `exponent`) modulo `modulus`. If `exponent` is negative, result is undefined.

### Bağımsız Değişkenler

`num`

  The base number.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`exponent`

  The positive power to raise the `num`.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`modulus`

  The modulo.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

The new (raised) number, as a GMP number.

### Örnekler

Örnek 1 gmp_powm() example

    <?php
    $pow1 = gmp_powm("2", "31", "2147483649");
    echo gmp_strval($pow1) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2147483648

# gmp_prob_prime

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_prob_prime — Check if number is "probably prime"

### Açıklama

function gmp_prob_prime(GMP|int|string `$num`, int `$repetitions` = 10): int

The function uses Miller-Rabin's probabilistic test to check if a number is a prime.

### Bağımsız Değişkenler

`num`

  The number being checked as a prime.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`repetitions`

  Reasonable values of `repetitions` vary from 5 to 10 (default being 10); a higher value lowers the probability for a non-prime to pass as a "probable" prime.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

If this function returns 0, `num` is definitely not prime. If it returns 1, then `num` is "probably" prime. If it returns 2, then `num` is surely prime.

### Örnekler

Örnek 1 gmp_prob_prime() example

    <?php
    // definitely not a prime
    echo gmp_prob_prime("6") . "\n";

    // probably a prime
    echo gmp_prob_prime("1111111111111111111") . "\n";

    // definitely a prime
    echo gmp_prob_prime("11") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    0
    1
    2

# gmp_random

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_random — Random number

Uyarı

Bu işlevin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

### Açıklama

function gmp_random(int `$limiter` = 20): GMP

Generate a random number. The number will be between 0 and (2 ** n) - 1, where n is the number of bits per limb multiplied by `limiter`. If `limiter` is negative, negative numbers are generated.

A limb is an internal GMP mechanism. The number of bits in a limb is not static, and can vary from system to system. Generally, the number of bits in a limb is either 32 or 64, but this is not guaranteed.

Dikkat

Bu işlev kriptografik olarak güvenilir değerler üretmez ve kriptografik amaçlarla veya döndürülen değerlerin tahmin edilemez olmasını gerektiren amaçlarla kullanılmamalıdır.

Kriptografik olarak güvenilir rastgelelik gerekliyse Random\Randomizer sınıfı Random\Engine\Secure motoru ile kullanılabilir. Basit kullanım durumlarında random_int() ve random_bytes() işlevleri, işletim sisteminin CSPRNG’i tarafından desteklenen kullanışlı ve güvenli bir arayüz sağlar.

### Bağımsız Değişkenler

`limiter`

  The limiter.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

A random GMP number.

### Örnekler

Örnek 1 gmp_random() example

    <?php
    $rand1 = gmp_random(1); // random number from 0 to 1 * bits per limb
    $rand2 = gmp_random(2); // random number from 0 to 2 * bits per limb

    echo gmp_strval($rand1) . "\n";
    echo gmp_strval($rand2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1915834968
    8642564075890328087

# gmp_random_bits

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

gmp_random_bits — Random number

### Açıklama

function gmp_random_bits(int `$bits`): GMP

Generate a random number. The number will be between `0` and `2$bits - 1`.

`bits` must be greater than 0, and the maximum value is restricted by available memory.

Dikkat

Bu işlev kriptografik olarak güvenilir değerler üretmez ve kriptografik amaçlarla veya döndürülen değerlerin tahmin edilemez olmasını gerektiren amaçlarla kullanılmamalıdır.

Kriptografik olarak güvenilir rastgelelik gerekliyse Random\Randomizer sınıfı Random\Engine\Secure motoru ile kullanılabilir. Basit kullanım durumlarında random_int() ve random_bytes() işlevleri, işletim sisteminin CSPRNG’i tarafından desteklenen kullanışlı ve güvenli bir arayüz sağlar.

### Bağımsız Değişkenler

`bits`

  The number of bits to generate.

### Dönen Değerler

A random GMP number.

### Hatalar/İstisnalar

If `bits` is less than `1`, a ValueError will be thrown.

### Örnekler

Örnek 1 gmp_random_bits() example

    <?php
    $rand1 = gmp_random_bits(3); // random number from 0 to 7
    $rand2 = gmp_random_bits(5); // random number from 0 to 31

    echo gmp_strval($rand1) . "\n";
    echo gmp_strval($rand2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3
    15

# gmp_random_range

(PHP 5 >= 5.6.3, PHP 7, PHP 8)

gmp_random_range — Get a uniformly selected integer

### Açıklama

function gmp_random_range(GMP|int|string `$min`, GMP|int|string `$max`): GMP

Generate a random number. The number will be between `min` and `max`.

`min` and `max` can both be negative, but `min` must always be less than `max`.

Dikkat

Bu işlev kriptografik olarak güvenilir değerler üretmez ve kriptografik amaçlarla veya döndürülen değerlerin tahmin edilemez olmasını gerektiren amaçlarla kullanılmamalıdır.

Kriptografik olarak güvenilir rastgelelik gerekliyse Random\Randomizer sınıfı Random\Engine\Secure motoru ile kullanılabilir. Basit kullanım durumlarında random_int() ve random_bytes() işlevleri, işletim sisteminin CSPRNG’i tarafından desteklenen kullanışlı ve güvenli bir arayüz sağlar.

### Bağımsız Değişkenler

`min`

  A GMP number representing the lower bound for the random number

`max`

  A GMP number representing the upper bound for the random number

### Dönen Değerler

Returns a GMP object which contains a uniformly selected integer from the closed interval [`min`, `max`]. Both `min` and `max` are possible return values.

### Hatalar/İstisnalar

If `max` is less than `min`, a ValueError will be thrown.

### Örnekler

Örnek 1 gmp_random_range() example

    <?php
    $rand1 = gmp_random_range(0, 100);    // random number between 0 and 100
    $rand2 = gmp_random_range(-100, -10); // random number between -100 and -10

    echo gmp_strval($rand1) . "\n";
    echo gmp_strval($rand2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    42
    -67

# gmp_random_seed

(PHP 7, PHP 8)

gmp_random_seed — Sets the RNG seed

### Açıklama

function gmp_random_seed(GMP|int|string `$seed`): void

### Bağımsız Değişkenler

`seed`

  The seed to be set for the gmp_random(), gmp_random_bits(), and gmp_random_range() functions.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Hiçbir değer dönmez.

### Hatalar/İstisnalar

Throws a ValueError if `seed` is invalid.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | If `seed` is invalid, gmp_random_seed() now throws a ValueError. Previously it emitted an `E_WARNING` and returned `false`.

### Örnekler

Örnek 1 gmp_random_seed() example

    <?php
    // set the seed
    gmp_random_seed(100);

    var_dump(gmp_strval(gmp_random(1)));

    // set the seed to something else
    gmp_random_seed(gmp_init(-100));

    var_dump(gmp_strval(gmp_random_bits(10)));

    // set the seed to something invalid
    var_dump(gmp_random_seed('not a number'));

Yukarıdaki örneğin çıktısı:

    string(20) "15370156633245019617"
    string(3) "683"

    Warning: gmp_random_seed(): Unable to convert variable to GMP - string is not an integer in %s on line %d
    bool(false)

### Ayrıca Bakınız

- gmp_init() - Create GMP number
- gmp_random() - Random number
- gmp_random_bits() - Random number
- gmp_random_range() - Get a uniformly selected integer

# gmp_root

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

gmp_root — Take the integer part of nth root

### Açıklama

function gmp_root(GMP|int|string `$num`, int `$nth`): GMP

Takes the `nth` root of `num` and returns the integer component of the result.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`nth`

  The positive root to take of `num`.

### Dönen Değerler

The integer component of the resultant root, as a GMP number.

# gmp_rootrem

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

gmp_rootrem — Take the integer part and remainder of nth root

### Açıklama

function gmp_rootrem(GMP|int|string `$num`, int `$nth`): array

Takes the `nth` root of `num` and returns the integer component and remainder of the result.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`nth`

  The positive root to take of `num`.

### Dönen Değerler

A two element array, where the first element is the integer component of the root, and the second element is the remainder, both represented as GMP numbers.

# gmp_scan0

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_scan0 — Scan for 0

### Açıklama

function gmp_scan0(GMP|int|string `$num1`, int `$start`): int

Scans `num1`, starting with bit `start`, towards more significant bits, until the first clear bit is found.

### Bağımsız Değişkenler

`num1`

  The number to scan.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`start`

  The starting bit.

### Dönen Değerler

Returns the index of the found bit, as an int. The index starts from 0.

### Örnekler

Örnek 1 gmp_scan0() example

    <?php
    // "0" bit is found at position 3. index starts at 0
    $s1 = gmp_init("10111", 2);
    echo gmp_scan0($s1, 0) . "\n";

    // "0" bit is found at position 7. index starts at 5
    $s2 = gmp_init("101110000", 2);
    echo gmp_scan0($s2, 5) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3
    7

# gmp_scan1

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_scan1 — Scan for 1

### Açıklama

function gmp_scan1(GMP|int|string `$num1`, int `$start`): int

Scans `num1`, starting with bit `start`, towards more significant bits, until the first set bit is found.

### Bağımsız Değişkenler

`num1`

  The number to scan.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`start`

  The starting bit.

### Dönen Değerler

Returns the index of the found bit, as an int. If no set bit is found, -1 is returned.

### Örnekler

Örnek 1 gmp_scan1() example

    <?php
    // "1" bit is found at position 3. index starts at 0
    $s1 = gmp_init("01000", 2);
    echo gmp_scan1($s1, 0) . "\n";

    // "1" bit is found at position 9. index starts at 5
    $s2 = gmp_init("01000001111", 2);
    echo gmp_scan1($s2, 5) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3
    9

# gmp_setbit

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_setbit — Set bit

### Açıklama

function gmp_setbit(GMP `$num`, int `$index`, bool `$value` = `true`): void

Sets bit `index` in `num`.

### Bağımsız Değişkenler

`num`

  A GMP object.

`index`

  The index of the bit to set. Index 0 represents the least significant bit.

`value`

  True to set the bit (set it to 1/on); false to clear the bit (set it to 0/off).

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 gmp_setbit() example - 0 index

    <?php
    $a = gmp_init("2"); //
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    gmp_setbit($a, 0); // 0b10 now becomes 0b11
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    2 -> 0b10
    3 -> 0b11

Örnek 2 gmp_setbit() example - 1 index

    <?php
    $a = gmp_init("0xfd");
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    gmp_setbit($a, 1); // index starts at 0
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    253 -> 0b11111101
    255 -> 0b11111111

Örnek 3 gmp_setbit() example - clearing a bit

    <?php
    $a = gmp_init("0xff");
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    gmp_setbit($a, 0, false); // clear bit at index 0
    echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    255 -> 0b11111111
    254 -> 0b11111110

### Notlar

> Bilginize:

> Unlike most of the other GMP functions, gmp_setbit() must be called with a GMP object that already exists (using gmp_init() for example). One will not be automatically created.

### Ayrıca Bakınız

- gmp_clrbit() - Clear bit
- gmp_testbit() - Tests if a bit is set

# gmp_sign

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_sign — Sign of number

### Açıklama

function gmp_sign(GMP|int|string `$num`): int

Checks the sign of a number.

### Bağımsız Değişkenler

`num`

  Either a GMP object, or a numeric string provided that it is possible to convert the latter to an int.

### Dönen Değerler

Returns 1 if `num` is positive, -1 if `num` is negative, and 0 if `num` is zero.

### Örnekler

Örnek 1 gmp_sign() example

    <?php
    // positive
    echo gmp_sign("500") . "\n";

    // negative
    echo gmp_sign("-500") . "\n";

    // zero
    echo gmp_sign("0") . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1
    -1
    0

### Ayrıca Bakınız

- gmp_abs() - Absolute value
- abs() - Mutlak değer

# gmp_sqrt

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_sqrt — Calculate square root

### Açıklama

function gmp_sqrt(GMP|int|string `$num`): GMP

Calculates square root of `num`.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

The integer portion of the square root, as a GMP number.

### Örnekler

Örnek 1 gmp_sqrt() example

    <?php
    $sqrt1 = gmp_sqrt("9");
    $sqrt2 = gmp_sqrt("7");
    $sqrt3 = gmp_sqrt("1524157875019052100");

    echo gmp_strval($sqrt1) . "\n";
    echo gmp_strval($sqrt2) . "\n";
    echo gmp_strval($sqrt3) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3
    2
    1234567890

# gmp_sqrtrem

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_sqrtrem — Square root with remainder

### Açıklama

function gmp_sqrtrem(GMP|int|string `$num`): array

Calculate the square root of a number, with remainder.

### Bağımsız Değişkenler

`num`

  The number being square rooted.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Returns array where first element is the integer square root of `num` and the second is the remainder (i.e., the difference between `num` and the first element squared).

### Örnekler

Örnek 1 gmp_sqrtrem() example

    <?php
    list($sqrt1, $sqrt1rem) = gmp_sqrtrem("9");
    list($sqrt2, $sqrt2rem) = gmp_sqrtrem("7");
    list($sqrt3, $sqrt3rem) = gmp_sqrtrem("1048576");

    echo gmp_strval($sqrt1) . ", " . gmp_strval($sqrt1rem) . "\n";
    echo gmp_strval($sqrt2) . ", " . gmp_strval($sqrt2rem) . "\n";
    echo gmp_strval($sqrt3) . ", " . gmp_strval($sqrt3rem) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    3, 0
    2, 3
    1024, 0

# gmp_strval

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_strval — Convert GMP number to string

### Açıklama

function gmp_strval(GMP|int|string `$num`, int `$base` = 10): string

Convert GMP number to string representation in base `base`. The default base is 10.

### Bağımsız Değişkenler

`num`

  The GMP number that will be converted to a string.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`base`

  The base of the returned number. The default base is 10. Allowed values for the base are from 2 to 62 and -2 to -36.

### Dönen Değerler

The number, as a string.

### Örnekler

Örnek 1 Converting a GMP number to a string

    <?php
    $a = gmp_init("0x41682179fbf5");
    printf("Decimal: %s, 36-based: %s", gmp_strval($a), gmp_strval($a,36));
    ?>

# gmp_sub

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_sub — Subtract numbers

### Açıklama

function gmp_sub(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Subtracts `num2` from `num1` and returns the result.

### Bağımsız Değişkenler

`num1`

  The number being subtracted from.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  The number subtracted from `num1`.

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_sub() example

    <?php
    $sub = gmp_sub("281474976710656", "4294967296"); // 2^48 - 2^32
    echo gmp_strval($sub) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    281470681743360

# gmp_testbit

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gmp_testbit — Tests if a bit is set

### Açıklama

function gmp_testbit(GMP|int|string `$num`, int `$index`): bool

Tests if the specified bit is set.

### Bağımsız Değişkenler

`num`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`index`

  The bit to test

### Dönen Değerler

Returns `true` if the bit is set in `num`, otherwise `false`.

### Hatalar/İstisnalar

An `E_WARNING` level error is issued when `index` is less than zero, and `false` is returned.

### Örnekler

Örnek 1 gmp_testbit() example

    <?php
    $n = gmp_init("1000000");
    var_dump(gmp_testbit($n, 1));
    gmp_setbit($n, 1);
    var_dump(gmp_testbit($n, 1));
    ?>

Yukarıdaki örneğin çıktısı:

    bool(false)
    bool(true)

### Ayrıca Bakınız

- gmp_setbit() - Set bit
- gmp_clrbit() - Clear bit

# gmp_xor

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_xor — Bitwise XOR

### Açıklama

function gmp_xor(GMP|int|string `$num1`, GMP|int|string `$num2`): GMP

Calculates bitwise exclusive OR (XOR) of two GMP numbers.

### Bağımsız Değişkenler

`num1`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

`num2`

  Bir GMP nesnesi, bir tamsayı veya sayısal bir dizge.

### Dönen Değerler

Bir GMP nesnesi.

### Örnekler

Örnek 1 gmp_xor() example

    <?php
    $xor1 = gmp_init("1101101110011101", 2);
    $xor2 = gmp_init("0110011001011001", 2);

    $xor3 = gmp_xor($xor1, $xor2);

    echo gmp_strval($xor3, 2) . "\n";
    ?>

Yukarıdaki örneğin çıktısı:

    1011110111000100

## İçindekiler

- gmp_abs — Absolute value
- gmp_add — Add numbers
- gmp_and — Bitwise AND
- gmp_binomial — Calculates binomial coefficient
- gmp_clrbit — Clear bit
- gmp_cmp — Compare numbers
- gmp_com — Calculates one's complement
- gmp_div — Takma Adı: gmp_div_q
- gmp_div_q — Divide numbers
- gmp_div_qr — Divide numbers and get quotient and remainder
- gmp_div_r — Remainder of the division of numbers
- gmp_divexact — Exact division of numbers
- gmp_export — Export to a binary string
- gmp_fact — Factorial
- gmp_gcd — Calculate GCD
- gmp_gcdext — Calculate GCD and multipliers
- gmp_hamdist — Hamming distance
- gmp_import — Import from a binary string
- gmp_init — Create GMP number
- gmp_intval — Convert GMP number to integer
- gmp_invert — Inverse by modulo
- gmp_jacobi — Jacobi symbol
- gmp_kronecker — Kronecker symbol
- gmp_lcm — Calculate LCM
- gmp_legendre — Legendre symbol
- gmp_mod — Modulo operation
- gmp_mul — Multiply numbers
- gmp_neg — Negate number
- gmp_nextprime — Find next prime number
- gmp_or — Bitwise OR
- gmp_perfect_power — Perfect power check
- gmp_perfect_square — Perfect square check
- gmp_popcount — Population count
- gmp_pow — Raise number into power
- gmp_powm — Raise number into power with modulo
- gmp_prob_prime — Check if number is "probably prime"
- gmp_random — Random number
- gmp_random_bits — Random number
- gmp_random_range — Get a uniformly selected integer
- gmp_random_seed — Sets the RNG seed
- gmp_root — Take the integer part of nth root
- gmp_rootrem — Take the integer part and remainder of nth root
- gmp_scan0 — Scan for 0
- gmp_scan1 — Scan for 1
- gmp_setbit — Set bit
- gmp_sign — Sign of number
- gmp_sqrt — Calculate square root
- gmp_sqrtrem — Square root with remainder
- gmp_strval — Convert GMP number to string
- gmp_sub — Subtract numbers
- gmp_testbit — Tests if a bit is set
- gmp_xor — Bitwise XOR

# The GMP class

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

## Giriş

A GMP number. These objects support overloaded arithmetic, bitwise and comparison operators.

> Bilginize:

> No object-oriented interface is provided to manipulate GMP objects. Please use the procedural GMP API.

## Sınıf Sözdizimi

final class GMP {
/* Yöntemler */
public function __construct(int|string `$num` = 0, int `$base` = 0)
public function __serialize(): array
public function __unserialize(array `$data`): void
}

## Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | GMP is now marked final

# GMP::__construct

(PHP 8 >= 8.2.4)

GMP::__construct — Create GMP number

### Açıklama

public function GMP::__construct(int|string `$num` = 0, int `$base` = 0)

Creates a GMP number from an integer or string.

### Bağımsız Değişkenler

`num`
  An integer or a string. The string representation can be decimal, hexadecimal, octal, or binary.
`base`
  The base to use for converting a string representation. An explicit base can be between `2` and `62`. For bases up to `36`, case is ignored; upper-case and lower-case letters have the same value. For bases `37` to `62`, upper-case letter represent the values `10` to `35` and lower-case letter represent the values `36` to `61`. If `base` is `0` then the actual base is determined from the leading characters of `num`. If the first two characters are `0x` or `0X`, the string is interpreted as a hexadecimal integer. If the first two characters are `0b` or `0B`, the string is interpreted as a binary integer. If the first two characters are `0o` or `0O`, the string is interpreted as an octal integer. Moreover, if the first character is `0` the string is also interpreted as an octal integer. In all other cases, the string is interpreted as a decimal integer.

### Ayrıca Bakınız

- gmp_init() - Create GMP number

# GMP::__serialize

(PHP 8 >= 8.1.0)

GMP::__serialize — Serializes the GMP object

### Açıklama

public function GMP::__serialize(): array

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# GMP::__unserialize

(PHP 8 >= 8.1.0)

GMP::__unserialize — Deserializes the `data` parameter into a GMP object

### Açıklama

public function GMP::__unserialize(array `$data`): void

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`data`

  The value being deserialized.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- GMP::__construct — Create GMP number
- GMP::__serialize — Serializes the GMP object
- GMP::__unserialize — Deserializes the data parameter into a GMP object

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Örnekler
- GMP İşlevleri
  - gmp_abs — Absolute value
  - gmp_add — Add numbers
  - gmp_and — Bitwise AND
  - gmp_binomial — Calculates binomial coefficient
  - gmp_clrbit — Clear bit
  - gmp_cmp — Compare numbers
  - gmp_com — Calculates one's complement
  - gmp_div — Takma Adı: gmp_div_q
  - gmp_div_q — Divide numbers
  - gmp_div_qr — Divide numbers and get quotient and remainder
  - gmp_div_r — Remainder of the division of numbers
  - gmp_divexact — Exact division of numbers
  - gmp_export — Export to a binary string
  - gmp_fact — Factorial
  - gmp_gcd — Calculate GCD
  - gmp_gcdext — Calculate GCD and multipliers
  - gmp_hamdist — Hamming distance
  - gmp_import — Import from a binary string
  - gmp_init — Create GMP number
  - gmp_intval — Convert GMP number to integer
  - gmp_invert — Inverse by modulo
  - gmp_jacobi — Jacobi symbol
  - gmp_kronecker — Kronecker symbol
  - gmp_lcm — Calculate LCM
  - gmp_legendre — Legendre symbol
  - gmp_mod — Modulo operation
  - gmp_mul — Multiply numbers
  - gmp_neg — Negate number
  - gmp_nextprime — Find next prime number
  - gmp_or — Bitwise OR
  - gmp_perfect_power — Perfect power check
  - gmp_perfect_square — Perfect square check
  - gmp_popcount — Population count
  - gmp_pow — Raise number into power
  - gmp_powm — Raise number into power with modulo
  - gmp_prob_prime — Check if number is "probably prime"
  - gmp_random — Random number
  - gmp_random_bits — Random number
  - gmp_random_range — Get a uniformly selected integer
  - gmp_random_seed — Sets the RNG seed
  - gmp_root — Take the integer part of nth root
  - gmp_rootrem — Take the integer part and remainder of nth root
  - gmp_scan0 — Scan for 0
  - gmp_scan1 — Scan for 1
  - gmp_setbit — Set bit
  - gmp_sign — Sign of number
  - gmp_sqrt — Calculate square root
  - gmp_sqrtrem — Square root with remainder
  - gmp_strval — Convert GMP number to string
  - gmp_sub — Subtract numbers
  - gmp_testbit — Tests if a bit is set
  - gmp_xor — Bitwise XOR
- GMP — The GMP class
  - GMP::__construct — Create GMP number
  - GMP::__serialize — Serializes the GMP object
  - GMP::__unserialize — Deserializes the data parameter into a GMP object

# Mathematical Functions

# Giriş

These math functions will only handle values within the range of the int and float types. To handle larger numbers, take a look at the arbitrary precision math or GNU Multiple Precision functions functions.

## Ayrıca Bakınız

- arithmetic operators
- Arbitrary precision math functions
- GNU Multiple Precision functions

# Öntanımlı Sabitler

Aşağıdaki sabitler PHP çekirdeğinin parçası olarak daima kullanılabilir durumdadır.

Mathematical Constants
`M_PI` (float)
  Approximation of the number π (pi). (`3.14159265358979323846`).
`M_E` (float)
  Approximation of Euler's number `e` (`2.7182818284590452354`).
`M_LOG2E` (float)
  Approximation of `log2(e)` (`1.4426950408889634074`).
`M_LOG10E` (float)
  Approximation of `log10(e)` (`0.43429448190325182765`).
`M_LN2` (float)
  Approximation of `ln(2)` (`0.69314718055994530942`).
`M_LN10` (float)
  Approximation of `ln(10)` (`2.30258509299404568402`).
`M_PI_2` (float)
  Approximation of `π/2` (`1.57079632679489661923`).
`M_PI_4` (float)
  Approximation of `π/4` (`0.78539816339744830962`).
`M_1_PI` (float)
  Approximation of `1/π` (`0.31830988618379067154`).
`M_2_PI` (float)
  Approximation of `2/π` (`0.63661977236758134308`).
`M_SQRTPI` (float)
  Approximation of `sqrt(π)` (`1.77245385090551602729`).
`M_2_SQRTPI` (float)
  Approximation of `2/sqrt(π)` (`1.12837916709551257390`).
`M_SQRT2` (float)
  Approximation of `sqrt(2)` (`1.41421356237309504880`).
`M_SQRT3` (float)
  Approximation of `sqrt(3)` (`1.73205080756887729352`).
`M_SQRT1_2` (float)
  Approximation of `1/sqrt(2)` (`0.70710678118654752440`).
`M_LNPI` (float)
  Approximation of `ln(π)` (`1.14472988584940017414`).
`M_EULER` (float)
  Approximation of Euler's constant γ (`0.57721566490153286061`).

IEEE 754 floating point constants
`NAN` (float)
  Not A Number
`INF` (float)
  Infinity

Rounding constants

> Bilginize: As of PHP 8.4.0, it is recommended to use the RoundingMode enum instead.

`PHP_ROUND_HALF_UP` (int)
  Rounding half away from zero.
`PHP_ROUND_HALF_DOWN` (int)
  Rounding half toward zero.
`PHP_ROUND_HALF_EVEN` (int)
  Round halves to even numbers
`PHP_ROUND_HALF_ODD` (int)
  Round halves to odd numbers

# The RoundingMode Enum

(PHP 8 >= 8.4.0)

## Giriş

The RoundingMode enum is used to specify how rounding should be performed for round(), bcround(), and BcMath\Number::round().

## Sayımlama Sözdizimi

enum RoundingMode
{
case HalfAwayFromZero ; // Round to the nearest integer. If the decimal part is `5`, round to the integer with the larger absolute value.
case HalfTowardsZero ; // Round to the nearest integer. If the decimal part is `5`, round to the integer with the smaller absolute value.
case HalfEven ; // Round to the nearest integer. If the decimal part is `5`, round to the even integer.
case HalfOdd ; // Round to the nearest integer. If the decimal part is `5`, round to the odd integer.
case TowardsZero ; // Round to the nearest integer with a smaller or equal absolute value.
case AwayFromZero ; // Round to the nearest integer with a greater or equal absolute value.
case NegativeInfinity ; // Round to the largest integer that is smaller or equal.
case PositiveInfinity ; // Round to the smallest integer that is greater or equal.
}

# Math İşlevleri

# abs

(PHP 4, PHP 5, PHP 7, PHP 8)

abs — Mutlak değer

### Açıklama

function abs(int|float `$sayı`): int|float

`sayı` değerinin mutlak değerini döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek sayısal değer.

### Dönen Değerler

`sayı` değerinin mutlak değeri. `sayı` bağımsız değişkeni float türünde ise dönüş türü de float, aksi halde int olur (float türü genellikle int türünden daha geniş bir değer aralığına sahip olduğundan).

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sayı` artık sayısal dönüşümü destekleyen dahili nesneleri kabul etmemekte.

### Örnekler

Örnek 1 abs() örneği

    <?php
    var_dump(abs(-4.2));
    var_dump(abs(5));
    var_dump(abs(-5));
    ?>

Yukarıdaki örneğin çıktısı:

    float(4.2)
    int(5)
    int(5)

### Ayrıca Bakınız

- gmp_abs() - Absolute value
- gmp_sign() - Sign of number

# acos

(PHP 4, PHP 5, PHP 7, PHP 8)

acos — Ark kosinüs

### Açıklama

function acos(float `$sayı`): float

`sayı` değerinin radyan cinsinden ark kosinüsünü döndürür. acos(), cos() işlevinin ters işlevidir; yani acos() tanım kümesindeki her `sayı` değeri için `$sayı == cos(acos($sayı))` doğrudur.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin radyan cinsinden ark kosinüsü.

### Ayrıca Bakınız

- cos() - Kosinüs
- acosh() - Ters hiperbolik kosinüs
- asin() - Ark sinüs
- atan() - Ark tanjant

# acosh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

acosh — Ters hiperbolik kosinüs

### Açıklama

function acosh(float `$sayı`): float

`sayı` değerinin ters hiperbolik kosinüsünü, yani hiperbolik kosinüsü `sayı` olan değeri döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek değer.

### Dönen Değerler

`sayı` değerinin ters hiperbolik kosinüsü.

### Ayrıca Bakınız

- cosh() - Hiperbolik kosinüs
- acos() - Ark kosinüs
- asinh() - Ters hiperbolik sinüs
- atanh() - Ters hiperbolik tanjant

# asin

(PHP 4, PHP 5, PHP 7, PHP 8)

asin — Ark sinüs

### Açıklama

function asin(float `$sayı`): float

`sayı` değerinin radyan cinsinden ark sinüsünü döndürür. asin(), sin() işlevinin ters işlevidir; yani asin() tanım kümesindeki her `sayı` değeri için `$sayı == sin(asin($sayı))` doğrudur.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin radyan cinsinden ark sinüsü.

### Ayrıca Bakınız

- sin() - Sinüs
- asinh() - Ters hiperbolik sinüs
- acos() - Ark kosinüs
- atan() - Ark tanjant

# asinh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

asinh — Ters hiperbolik sinüs

### Açıklama

function asinh(float `$sayı`): float

`sayı` değerinin ters hiperbolik sinüsünü, yani hiperbolik sinüsü `sayı` olan değeri döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin ters hiperbolik sinüsü.

### Ayrıca Bakınız

- sinh() - Hiperbolik sinüs
- asin() - Ark sinüs
- acosh() - Ters hiperbolik kosinüs
- atanh() - Ters hiperbolik tanjant

# atan

(PHP 4, PHP 5, PHP 7, PHP 8)

atan — Ark tanjant

### Açıklama

function atan(float `$sayı`): float

`sayı` değerinin radyan cinsinden ark tanjantını döndürür. atan(), tan() işlevinin ters işlevidir; yani atan() tanım kümesindeki her `sayı` değeri için `$sayı == tan(atan($sayı))` doğrudur.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin radyan cinsinden ark tanjantı.

### Ayrıca Bakınız

- tan() - Tanjant
- atanh() - Ters hiperbolik tanjant
- asin() - Ark sinüs
- acos() - Ark kosinüs

# atan2

(PHP 4, PHP 5, PHP 7, PHP 8)

atan2 — Arc tangent of two variables

### Açıklama

function atan2(float `$y`, float `$x`): float

This function calculates the arc tangent of the two variables `x` and `y`. It is similar to calculating the arc tangent of `y` / `x`, except that the signs of both arguments are used to determine the quadrant of the result.

The function returns the result in radians, which is between -PI and PI (inclusive).

### Bağımsız Değişkenler

`y`

  Dividend parameter

`x`

  Divisor parameter

### Dönen Değerler

The arc tangent of `y`/`x` in radians.

### Ayrıca Bakınız

- atan() - Ark tanjant

# atanh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

atanh — Ters hiperbolik tanjant

### Açıklama

function atanh(float `$sayı`): float

`sayı` değerinin ters hiperbolik tanjantını, yani hiperbolik tanjantı `sayı` olan değeri döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin ters hiperbolik tanjantı.

### Ayrıca Bakınız

- tanh() - Hiperbolik tanjant
- atan() - Ark tanjant
- asinh() - Ters hiperbolik sinüs
- acosh() - Ters hiperbolik kosinüs

# base_convert

(PHP 4, PHP 5, PHP 7, PHP 8)

base_convert — Bir sayıyı keyfi tabanlar arasında dönüştürür

### Açıklama

function base_convert(string `$sayı`, int `$kaynak_taban`, int `$hedef_taban`): string

`sayı` değerinin `hedef_taban` tabanındaki gösterimini içeren bir dize döndürür. `sayı` değerinin verildiği taban `kaynak_taban` ile belirtilir. Hem `kaynak_taban` hem de `hedef_taban` uçlar dahil 2 ile 36 arasında olmalıdır. Tabanı 10'dan büyük sayılardaki rakamlar a-z harfleriyle gösterilir; a 10, b 11 ve z 35 anlamına gelir. Harflerin büyük ya da küçük olması farketmez, yani `sayı` harf büyüklüğüne duyarsız olarak yorumlanır.

Uyarı

base_convert(), dahili olarak kullanılan float türünün özellikleri nedeniyle büyük sayılarda hassasiyet kaybedebilir. Daha ayrıntılı bilgi ve kısıtlamalar için kılavuzdaki Gerçek sayılar bölümüne bakınız.

### Bağımsız Değişkenler

`sayı`

  Dönüştürülecek sayı. `sayı` içindeki geçersiz karakterler sessizce yok sayılır. PHP 7.4.0'dan itibaren geçersiz karakter aktarmak artık önerilmemektedir.

`kaynak_taban`

  `sayı` değerinin bulunduğu taban.

`hedef_taban`

  `sayı` değerinin dönüştürüleceği taban.

### Dönen Değerler

`sayı` değerinin `hedef_taban` tabanına dönüştürülmüş hali.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Geçersiz karakter aktarmak artık bir önerilmiyor bildirimi üretir. Sonuç, geçersiz karakterler yokmuş gibi hesaplanmaya devam eder.

### Örnekler

Örnek 1 base_convert() örneği

    <?php
    $onaltilik = 'a37334';
    echo base_convert($onaltilik, 16, 2);
    ?>

Yukarıdaki örneğin çıktısı:

    101000110111001100110100

### Ayrıca Bakınız

- intval() - Bir değişkenin tamsayı değerini döndürür

# bindec

(PHP 4, PHP 5, PHP 7, PHP 8)

bindec — İkilikten onluğa

### Açıklama

function bindec(string `$ikilik_dize`): int|float

`ikilik_dize` bağımsız değişkeniyle temsil edilen ikilik sayının onluk eşdeğerini döndürür.

bindec(), bir ikilik sayıyı int'e veya, boyut nedeniyle gerekirse float'a dönüştürür.

bindec(), tüm `ikilik_dize` değerlerini işaretsiz tamsayı olarak yorumlar. Bunun nedeni, bindec()'in en anlamlı biti işaret biti olarak değil, bir büyüklük basamağı olarak görmesidir.

### Bağımsız Değişkenler

`ikilik_dize`

  Dönüştürülecek ikilik dize. `ikilik_dize` içindeki geçersiz karakterler sessizce yok sayılır. PHP 7.4.0'dan itibaren geçersiz karakter aktarmak artık önerilmemektedir.

Uyarı

Bağımsız değişken bir dize olmalıdır. Başka veri türleri kullanmak beklenmedik sonuçlara yol açacaktır.

### Dönen Değerler

`ikilik_dize` değerinin onluk karşılığı.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Geçersiz karakter aktarmak artık bir önerilmiyor bildirimi üretir. Sonuç, geçersiz karakterler yokmuş gibi hesaplanmaya devam eder.

### Örnekler

Örnek 1 bindec() örneği

    <?php
    echo bindec('110011') . "\n";
    echo bindec('000110011') . "\n";

    echo bindec('111');
    ?>

Yukarıdaki örneğin çıktısı:

    51
    51
    7

Örnek 2 bindec() girdiyi işaretsiz tamsayı olarak yorumlar

    <?php
    /*
     * Bu örneğin asıl dersi, PHP kodunun kendisinde değil,
     * çıktısındadır.
     */

    $buyukluk_alt = pow(2, (PHP_INT_SIZE * 8) - 2);
    p($buyukluk_alt - 1);
    p($buyukluk_alt, 'Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...');

    p(PHP_INT_MAX, 'PHP_INT_MAX');
    p(~PHP_INT_MAX, 'PHP_INT_MAX değerinden bir fazlası olarak yorumlanır');

    if (PHP_INT_SIZE == 4) {
        $not = 'en büyük işaretsiz tamsayı olarak yorumlanır';
    } else {
        $not = 'en büyük işaretsiz tamsayı olarak yorumlanır
                  (18446744073709551615) ancak float hassasiyeti tarafından çarpıtılır';
    }
    p(-1, $not);

    function p($girdi, $not = '') {
        echo "girdi:        $girdi\n";

        $bicim = '%0' . (PHP_INT_SIZE * 8) . 'b';
        $ikilik = sprintf($bicim, $girdi);
        echo "ikilik:       $ikilik\n";

        ini_set('precision', 20);  // 64 bit makinelerde okunabilirlik için.
        $onluk = bindec($ikilik);
        echo 'bindec():     ' . $onluk . "\n";

        if ($not) {
            echo "NOT:          $not\n";
        }

        echo "\n";
    }
    ?>

Yukarıdaki örneğin 32 bitlik makinelerdeki çıktısı:

    girdi:        1073741823
    ikilik:       00111111111111111111111111111111
    bindec():     1073741823

    girdi:        1073741824
    ikilik:       01000000000000000000000000000000
    bindec():     1073741824
    NOT:          Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...

    girdi:        2147483647
    ikilik:       01111111111111111111111111111111
    bindec():     2147483647
    NOT:          PHP_INT_MAX

    girdi:        -2147483648
    ikilik:       10000000000000000000000000000000
    bindec():     2147483648
    NOT:          PHP_INT_MAX değerinden bir fazlası olarak yorumlanır

    girdi:        -1
    ikilik:       11111111111111111111111111111111
    bindec():     4294967295
    NOT:          en büyük işaretsiz tamsayı olarak yorumlanır

Yukarıdaki örneğin 64 bitlik makinelerdeki çıktısı:

    girdi:        4611686018427387903
    ikilik:       0011111111111111111111111111111111111111111111111111111111111111
    bindec():     4611686018427387903

    girdi:        4611686018427387904
    ikilik:       0100000000000000000000000000000000000000000000000000000000000000
    bindec():     4611686018427387904
    NOT:          Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...

    girdi:        9223372036854775807
    ikilik:       0111111111111111111111111111111111111111111111111111111111111111
    bindec():     9223372036854775807
    NOT:          PHP_INT_MAX

    girdi:        -9223372036854775808
    ikilik:       1000000000000000000000000000000000000000000000000000000000000000
    bindec():     9223372036854775808
    NOT:          PHP_INT_MAX değerinden bir fazlası olarak yorumlanır

    girdi:        -1
    ikilik:       1111111111111111111111111111111111111111111111111111111111111111
    bindec():     18446744073709551616
    NOT:          en büyük işaretsiz tamsayı olarak yorumlanır
                  (18446744073709551615) ancak float hassasiyeti tarafından çarpıtılır

### Notlar

> Bilginize:

> Bu işlev, platformun int türüne sığamayacak kadar büyük sayıları dönüştürebilir; bu durumda daha büyük değerler float olarak döndürülür.

### Ayrıca Bakınız

- decbin() - Onluktan ikiliğe
- octdec() - Octal to decimal
- hexdec() - Onaltılıktan onluğa
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür

# ceil

(PHP 4, PHP 5, PHP 7, PHP 8)

ceil — Kesirleri yukarı yuvarlar

### Açıklama

function ceil(int|float `$sayı`): float

Gerekirse `sayı` değerini yukarı yuvarlayarak bir sonraki en büyük tamsayı değerini döndürür.

### Bağımsız Değişkenler

`sayı`

  Yuvarlanacak değer.

### Dönen Değerler

`sayı` değerinin bir sonraki en büyük tamsayıya yukarı yuvarlanmış hali. ceil() işlevinin dönüş değeri, float türünün değer aralığı genellikle int türünden daha geniş olduğundan yine float türündedir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sayı` artık sayısal dönüşümü destekleyen dahili nesneleri kabul etmemekte.

### Örnekler

Örnek 1 ceil() örneği

    <?php
    echo ceil(4.3), PHP_EOL;    // 5
    echo ceil(9.999), PHP_EOL;  // 10
    echo ceil(-3.14), PHP_EOL;  // -3
    ?>

### Ayrıca Bakınız

- floor() - Kesirleri aşağı yuvarlar
- round() - Rounds a float

# cos

(PHP 4, PHP 5, PHP 7, PHP 8)

cos — Kosinüs

### Açıklama

function cos(float `$sayı`): float

cos(), `sayı` bağımsız değişkeninin kosinüsünü döndürür. `sayı` radyan cinsindendir.

### Bağımsız Değişkenler

`sayı`

  Radyan cinsinden bir açı.

### Dönen Değerler

`sayı` değerinin kosinüsü.

### Örnekler

Örnek 1 cos() örneği

    <?php

    echo cos(M_PI); // -1

    ?>

### Ayrıca Bakınız

- acos() - Ark kosinüs
- sin() - Sinüs
- tan() - Tanjant
- deg2rad() - Converts the number in degrees to the radian equivalent

# cosh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cosh — Hiperbolik kosinüs

### Açıklama

function cosh(float `$sayı`): float

`sayı` değerinin `(exp($sayı) + exp(-$sayı))/2` olarak tanımlı hiperbolik kosinüsünü döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin hiperbolik kosinüsü.

### Ayrıca Bakınız

- cos() - Kosinüs
- acosh() - Ters hiperbolik kosinüs
- sinh() - Hiperbolik sinüs
- tanh() - Hiperbolik tanjant

# decbin

(PHP 4, PHP 5, PHP 7, PHP 8)

decbin — Onluktan ikiliğe

### Açıklama

function decbin(int `$sayı`): string

Verilen `sayı` bağımsız değişkeninin ikilik gösterimini içeren bir dize döndürür.

### Bağımsız Değişkenler

`sayı`

  Dönüştürülecek onluk değer.

  32 bitlik makinelerde girdi aralığı
  pozitif `sayı` | negatif `sayı` | dönüş değeri
  --- | --- | ---
  0 |  | 0
  1 |  | 1
  2 |  | 10
  ... olağan ilerleme ...
  2147483646 |  | 1111111111111111111111111111110
  2147483647 (en büyük işaretli tamsayı) |  | 1111111111111111111111111111111 (31 tane 1)
  2147483648 | -2147483648 | 10000000000000000000000000000000
  ... olağan ilerleme ...
  4294967294 | -2 | 11111111111111111111111111111110
  4294967295 (en büyük işaretsiz tamsayı) | -1 | 11111111111111111111111111111111 (32 tane 1)

  64 bitlik makinelerde girdi aralığı
  pozitif `sayı` | negatif `sayı` | dönüş değeri
  --- | --- | ---
  0 |  | 0
  1 |  | 1
  2 |  | 10
  ... olağan ilerleme ...
  9223372036854775806 |  | 111111111111111111111111111111111111111111111111111111111111110
  9223372036854775807 (en büyük işaretli tamsayı) |  | 111111111111111111111111111111111111111111111111111111111111111 (63 tane 1)
  | -9223372036854775808 | 1000000000000000000000000000000000000000000000000000000000000000
  ... olağan ilerleme ...
  | -2 | 1111111111111111111111111111111111111111111111111111111111111110
  | -1 | 1111111111111111111111111111111111111111111111111111111111111111 (64 tane 1)

### Dönen Değerler

`sayı` değerinin ikilik dize gösterimi.

### Örnekler

Örnek 1 decbin() örneği

    <?php
    echo decbin(12) . "\n";
    echo decbin(26);
    ?>

Yukarıdaki örneğin çıktısı:

    1100
    11010

### Ayrıca Bakınız

- bindec() - İkilikten onluğa
- decoct() - Onluktan sekizliğe
- dechex() - Onluktan onaltılığa
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür
- printf() - Biçemli bir dizge çıktılar, biçim olarak `%b`, `%032b` veya `%064b` ile
- sprintf() - Biçemli bir dizge döndürür, biçim olarak `%b`, `%032b` veya `%064b` ile

# dechex

(PHP 4, PHP 5, PHP 7, PHP 8)

dechex — Onluktan onaltılığa

### Açıklama

function dechex(int `$sayı`): string

Verilen işaretsiz `sayı` bağımsız değişkeninin onaltılık gösterimini içeren bir dize döndürür.

Dönüştürülebilecek en büyük sayı `PHP_INT_MAX``* 2 + 1`'dir (veya `-1`): 32 bitlik platformlarda bu, onluk tabanda `4294967295`'tir ve dechex() bunun için `ffffffff` döndürür.

### Bağımsız Değişkenler

`sayı`

  Dönüştürülecek onluk değer.

  PHP'nin int türü işaretli olduğundan, ancak dechex() işaretsiz tamsayılarla çalıştığından, negatif tamsayılar işaretsizmiş gibi ele alınır.

### Dönen Değerler

`sayı` değerinin onaltılık dize gösterimi.

### Örnekler

Örnek 1 dechex() örneği

    <?php
    echo dechex(10) . "\n";
    echo dechex(47);
    ?>

Yukarıdaki örneğin çıktısı:

    a
    2f

Örnek 2 Büyük tamsayılarla dechex() örneği

    <?php
    // Aşağıdaki çıktı 32 bitlik bir platform varsayar.
    // Tüm değerler için çıktının aynı olduğuna dikkat edin.
    echo dechex(-1)."\n";
    echo dechex(PHP_INT_MAX * 2 + 1)."\n";
    echo dechex(pow(2, 32) - 1)."\n";
    ?>

Yukarıdaki örneğin çıktısı:

    ffffffff
    ffffffff
    ffffffff

### Ayrıca Bakınız

- hexdec() - Onaltılıktan onluğa
- decbin() - Onluktan ikiliğe
- decoct() - Onluktan sekizliğe
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür

# decoct

(PHP 4, PHP 5, PHP 7, PHP 8)

decoct — Onluktan sekizliğe

### Açıklama

function decoct(int `$sayı`): string

Verilen `sayı` bağımsız değişkeninin sekizlik gösterimini içeren bir dize döndürür. Dönüştürülebilecek en büyük sayı, kullanılan platforma bağlıdır. 32 bitlik platformlarda bu sayı genellikle onluk tabanda `4294967295` olup `37777777777` sonucunu üretir. 64 bitlik platformlarda ise genellikle onluk tabanda `9223372036854775807` olup `777777777777777777777` sonucunu üretir.

### Bağımsız Değişkenler

`sayı`

  Dönüştürülecek onluk değer.

### Dönen Değerler

`sayı` değerinin sekizlik dize gösterimi.

### Örnekler

Örnek 1 decoct() örneği

    <?php
    echo decoct(15) . "\n";
    echo decoct(264);
    ?>

Yukarıdaki örneğin çıktısı:

    17
    410

### Ayrıca Bakınız

- octdec() - Octal to decimal
- decbin() - Onluktan ikiliğe
- dechex() - Onluktan onaltılığa
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür

# deg2rad

(PHP 4, PHP 5, PHP 7, PHP 8)

deg2rad — Converts the number in degrees to the radian equivalent

### Açıklama

function deg2rad(float `$num`): float

This function converts `num` from degrees to the radian equivalent.

### Bağımsız Değişkenler

`num`

  Angular value in degrees

### Dönen Değerler

The radian equivalent of `num`

### Örnekler

Örnek 1 deg2rad() example

    <?php

    echo deg2rad(45), PHP_EOL; // 0.785398163397
    var_dump(deg2rad(45) === M_PI_4); // bool(true)

    ?>

### Ayrıca Bakınız

- rad2deg() - Converts the radian number to the equivalent number in degrees

# exp

(PHP 4, PHP 5, PHP 7, PHP 8)

exp — `e` sayısının üssünü hesaplar

### Açıklama

function exp(float `$sayı`): float

`e` sayısının `sayı` üssünü döndürür.

> Bilginize:

> '`e`', doğal logaritma sisteminin tabanı olup yaklaşık değeri 2.718282'dir.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`e` sayısının `sayı` üssü.

### Örnekler

Örnek 1 exp() örneği

    <?php
    echo exp(12), PHP_EOL;
    echo exp(5.7);
    ?>

Yukarıdaki örneğin çıktısı:

    162754.791419
    298.86740096706

### Ayrıca Bakınız

- log() - Doğal logaritma
- pow() - Üstel ifade

# expm1

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

expm1 — `exp($sayı) - 1` ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür

### Açıklama

function expm1(float `$sayı`): float

expm1(), `sayı` değeri sıfıra yakın olduğu durumda, `exp($`sayı`) - 1` ifadesinin neredeyse eşit iki sayının çıkarılması nedeniyle hatalı sonuç verebileceği durumda bile, sonucu doğru kalacak biçimde hesaplayıp döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`e` sayısının `sayı` üssünden bir eksiği.

### Ayrıca Bakınız

- log1p() - log(1 + sayı) ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
- exp() - e sayısının üssünü hesaplar

# fdiv

(PHP 8)

fdiv — Divides two numbers, according to IEEE 754

### Açıklama

function fdiv(float `$num1`, float `$num2`): float

Returns the floating point result of dividing the `num1` by the `num2`. If the `num2` is zero, then one of `INF`, -`INF`, or `NAN` will be returned.

Note that in comparisons, `NAN` will never be equal (`==`) or identical (`===`) to any value, including itself.

### Bağımsız Değişkenler

`num1`

  The dividend (numerator)

`num2`

  The divisor

### Dönen Değerler

The floating point result of `num1`/`num2`

### Örnekler

Örnek 1 Using fdiv()

    <?php
    var_dump(fdiv(5.7, 1.3)); // float(4.384615384615385)
    var_dump(fdiv(4, 2)); // float(2)
    var_dump(fdiv(1.0, 0.0)); // float(INF)
    var_dump(fdiv(-1.0, 0.0)); // float(-INF)
    var_dump(fdiv(0.0, 0.0)); // float(NAN)
    ?>

### Ayrıca Bakınız

- Division operator `/`
- intdiv() - Integer division - Integer division
- fmod() - Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür
- fpow() - Raise one number to the power of another, according to IEEE 754

# floor

(PHP 4, PHP 5, PHP 7, PHP 8)

floor — Kesirleri aşağı yuvarlar

### Açıklama

function floor(int|float `$sayı`): float

Gerekirse `sayı` değerini aşağı yuvarlayarak bir sonraki en küçük tamsayı değerini (gerçek sayı olarak) döndürür.

### Bağımsız Değişkenler

`sayı`

  Yuvarlanacak sayısal değer.

### Dönen Değerler

`sayı` değerinin bir sonraki en küçük tamsayıya yuvarlanmış hali. floor() işlevinin dönüş değeri yine float türündedir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | `sayı` artık sayısal dönüşümü destekleyen dahili nesneleri kabul etmemekte.

### Örnekler

Örnek 1 floor() örneği

    <?php
    echo floor(4.3), PHP_EOL;   // 4
    echo floor(9.999), PHP_EOL; // 9
    echo floor(-3.14), PHP_EOL; // -4
    ?>

### Ayrıca Bakınız

- ceil() - Kesirleri yukarı yuvarlar
- round() - Rounds a float

# fmod

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

fmod — Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür

### Açıklama

function fmod(float `$sayı1`, float `$sayı2`): float

Bölünen (`sayı1`) değerinin bölen (`sayı2`) değerine bölümünden kalan gerçek sayı kalanı döndürür. kalan şöyle tanımlanır: bölüm tamsayısı için sayı1 = bölüm * sayı2 + kalan. `sayı2` sıfır değilse, kalan, `sayı1` ile aynı işarete sahip olur ve büyüklüğü `sayı2` büyüklüğünden küçük olur.

### Bağımsız Değişkenler

`sayı1`

  Bölünen.

`sayı2`

  Bölen.

### Dönen Değerler

`sayı1`/`sayı2` işleminin gerçek sayı kalanı. İkinci bağımsız değişken 0 ise `NAN` (float).

### Örnekler

Örnek 1 fmod() kullanımı

    <?php
    $x = 5.7;
    $y = 1.3;
    $r = fmod($x, $y);
    // $r 0.5'e eşittir, çünkü 4 * 1.3 + 0.5 = 5.7

    var_dump($x, $y, $r);
    ?>

### Ayrıca Bakınız

- `/` - Gerçek sayı bölmesi
- `%` - Tamsayı kalan işleci
- intdiv() - Integer division - Tamsayı bölmesi

# fpow

(PHP 8 >= 8.4.0)

fpow — Raise one number to the power of another, according to IEEE 754

### Açıklama

function fpow(float `$num`, float `$exponent`): float

Returns the floating point result of raising `num` to the power of `exponent`. If `num` is zero and `exponent` is less than zero, then `INF` is returned.

### Bağımsız Değişkenler

`num`
  The base to use.
`exponent`
  The exponent.

### Dönen Değerler

Returns a float corresponding to `$num$exponent`.

### Örnekler

Örnek 1 fpow() example

    <?php
    var_dump(fpow(10, 2));
    var_dump(fpow(0, -3));
    var_dump(fpow(-1, 5.5));
    ?>

Yukarıdaki örneğin çıktısı:

    float(100)
    float(INF)
    float(NAN)

### Ayrıca Bakınız

- Exponentiation operator `**`
- pow() - Üstel ifade
- fdiv() - Divides two numbers, according to IEEE 754
- fmod() - Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür

# hexdec

(PHP 4, PHP 5, PHP 7, PHP 8)

hexdec — Onaltılıktan onluğa

### Açıklama

function hexdec(string `$onaltılık_dize`): int|float

`onaltılık_dize` bağımsız değişkeninin temsil ettiği onaltılık sayının onluk eşdeğerini döndürür. hexdec(), bir onaltılık dizeyi onluk sayıya dönüştürür.

hexdec() karşılaştığı onaltılık olmayan tüm karakterleri yok sayar. PHP 7.4.0'dan itibaren geçersiz karakter aktarmak artık önerilmemektedir.

### Bağımsız Değişkenler

`onaltılık_dize`

  Dönüştürülecek onaltılık dize.

### Dönen Değerler

`onaltılık_dize` değerinin onluk gösterimi.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Geçersiz karakter aktarmak artık bir önerilmiyor bildirimi üretir. Sonuç, geçersiz karakterler yokmuş gibi hesaplanmaya devam eder.

### Örnekler

Örnek 1 hexdec() örneği

    <?php
    var_dump(hexdec("ee")); // "int(238)" basar
    var_dump(hexdec("a0")); // "int(160)" basar
    ?>

Örnek 2 Geçersiz karakterlerle hexdec()

    <?php
    var_dump(hexdec("See"));  // "int(238)" basar
    var_dump(hexdec("that")); // "int(10)" basar
    ?>

### Notlar

> Bilginize:

> Bu işlev, platformun int türüne sığamayacak kadar büyük sayıları dönüştürebilir; bu durumda daha büyük değerler float olarak döndürülür.

### Ayrıca Bakınız

- dechex() - Onluktan onaltılığa
- bindec() - İkilikten onluğa
- octdec() - Octal to decimal
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür

# hypot

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

hypot — Calculate the length of the hypotenuse of a right-angle triangle

### Açıklama

function hypot(float `$x`, float `$y`): float

hypot() returns the length of the hypotenuse of a right-angle triangle with sides of length `x` and `y`, or the distance of the point (`x`, `y`) from the origin. This is equivalent to `sqrt($x*$x + $y*$y)`.

### Bağımsız Değişkenler

`x`

  Length of first side

`y`

  Length of second side

### Dönen Değerler

Calculated length of the hypotenuse

# intdiv

(PHP 7, PHP 8)

intdiv — Integer division

### Açıklama

function intdiv(int `$num1`, int `$num2`): int

Returns the integer quotient of the division of `num1` by `num2`.

### Bağımsız Değişkenler

`num1`

  Number to be divided.

`num2`

  Number which divides the `num1`.

### Dönen Değerler

The integer quotient of the division of `num1` by `num2`.

### Hatalar/İstisnalar

If `num2` is `0`, a DivisionByZeroError exception is thrown. If the `num1` is `PHP_INT_MIN` and the `num2` is `-1`, then an ArithmeticError exception is thrown.

### Örnekler

Örnek 1 intdiv() example

    <?php
    var_dump(intdiv(3, 2));
    var_dump(intdiv(-3, 2));
    var_dump(intdiv(3, -2));
    var_dump(intdiv(-3, -2));
    var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
    var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
    ?>

Yukarıdaki örneğin çıktısı:

    int(1)
    int(-1)
    int(-1)
    int(1)
    int(1)
    int(1)

Örnek 2 intdiv() Example With Invalid Divisor

    <?php
    try {
        intdiv(PHP_INT_MIN, -1);
    } catch (Error $e) {
        echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
    }

    try {
        intdiv(1, 0);
    } catch (Error $e) {
        echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
    }
    ?>

Yukarıdaki örneğin çıktısı:

    ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer
    DivisionByZeroError: Division by zero

### Ayrıca Bakınız

- `/` - Floating-point division
- `%` - Integer modulus
- fmod() - Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür - Floating-point modulo

# is_finite

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

is_finite — Checks whether a float is finite

### Açıklama

function is_finite(float `$num`): bool

Returns whether the given `num` is a finite float.

A finite float is neither `NAN` (is_nan()), nor infinite (is_infinite()).

### Bağımsız Değişkenler

`num`

  The float to check

### Dönen Değerler

`true` if `num` is none of `NAN`, `INF`, -`INF`, else `false`.

### Örnekler

Örnek 1 is_finite() example

    <?php
    $float = 1.2345;
    var_dump($float, is_finite($float));

    $nan = sqrt(-1);
    var_dump($nan, is_finite($nan));

    $inf = 1e308 * 2;
    var_dump($inf, is_finite($inf));
    ?>

Yukarıdaki örneğin çıktısı:

    float(1.2345)
    bool(true)
    float(NAN)
    bool(false)
    float(INF)
    bool(false)

### Ayrıca Bakınız

- is_infinite() - Checks whether a float is infinite
- is_nan() - Checks whether a float is NAN

# is_infinite

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

is_infinite — Checks whether a float is infinite

### Açıklama

function is_infinite(float `$num`): bool

Returns whether the given `num` is either `INF` or -`INF`.

### Bağımsız Değişkenler

`num`

  The float to check

### Dönen Değerler

`true` if `num` is either `INF` or -`INF`, else `false`.

### Örnekler

Örnek 1 is_infinite() example

    <?php
    $inf = 1e308 * 2;

    var_dump($inf, is_infinite($inf));

    $negative_inf = -$inf;

    var_dump($negative_inf, is_infinite($negative_inf));
    ?>

Yukarıdaki örneğin çıktısı:

    float(INF)
    bool(true)
    float(-INF)
    bool(true)

### Ayrıca Bakınız

- is_finite() - Checks whether a float is finite
- is_nan() - Checks whether a float is NAN

# is_nan

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

is_nan — Checks whether a float is NAN

### Açıklama

function is_nan(float `$num`): bool

Returns whether the given `num` is `NAN` (Not A Number).

`NAN` is returned from mathematical operations that are undefined, for example when passing parameters outside of function’s input domain. The square root (sqrt()) is only defined for positive numbers, passing a negative number will result in `NAN`. Other examples of operations returning `NAN` are dividing `INF` by `INF` and any operation involving an existing `NAN` value.

> Bilginize:

> Despite its name of Not A Number, `NAN` is a valid value of type float.

Dikkat

`NAN` does not compare equal to `NAN`. To check whether a float is `NAN`, is_nan() must be used. Checking `$float === NAN` will not work.

### Bağımsız Değişkenler

`num`

  The float to check

### Dönen Değerler

`true` if `num` is `NAN`, else `false`.

### Örnekler

Örnek 1 is_nan() example

    <?php
    $nan = sqrt(-1);

    var_dump($nan, is_nan($nan));
    ?>

Yukarıdaki örneğin çıktısı:

    float(NAN)
    bool(true)

### Ayrıca Bakınız

- is_finite() - Checks whether a float is finite
- is_infinite() - Checks whether a float is infinite

# log

(PHP 4, PHP 5, PHP 7, PHP 8)

log — Doğal logaritma

### Açıklama

function log(float `$sayı`, float `$taban` = `M_E`): float

İsteğe bağlı `taban` bağımsız değişkeni belirtilmişse log(), `sayı` değerinin `taban` tabanındaki logaritmasını (logtaban `sayı`) döndürür; aksi takdirde log(), `sayı` değerinin doğal logaritmasını döndürür.

### Bağımsız Değişkenler

`sayı`

  Logaritması hesaplanacak değer.

`taban`

  Kullanılacak isteğe bağlı logaritma tabanı (öntanımlı değer 'e' olup doğal logaritmayı verir).

### Dönen Değerler

`taban` belirtilmişse `sayı` değerinin `taban` tabanındaki logaritması, aksi takdirde doğal logaritması.

### Ayrıca Bakınız

- log10() - 10 tabanında logaritma
- exp() - e sayısının üssünü hesaplar
- pow() - Üstel ifade
- error_log() - Tanımlı hata işleme yordamlarına bir hata iletisi gönderir

# log10

(PHP 4, PHP 5, PHP 7, PHP 8)

log10 — 10 tabanında logaritma

### Açıklama

function log10(float `$sayı`): float

`sayı` değerinin 10 tabanındaki logaritmasını döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin 10 tabanındaki logaritması.

### Ayrıca Bakınız

- log() - Doğal logaritma

# log1p

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

log1p — log(1 + sayı) ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür

### Açıklama

function log1p(float `$sayı`): float

log1p(), log(1 + `sayı`) ifadesinin sonucunu, `sayı` değeri sıfıra yakın olduğunda bile doğru kalacak biçimde hesaplayıp döndürür. Bu durumda log() işlevi hassasiyet yetersizliği nedeniyle yalnızca log(1) değerini döndürebilir.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

log(1 + `sayı`).

### Ayrıca Bakınız

- expm1() - exp($sayı) - 1 ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
- log() - Doğal logaritma
- log10() - 10 tabanında logaritma

# max

(PHP 4, PHP 5, PHP 7, PHP 8)

max — Find highest value

### Açıklama

function max(mixed `$value`, mixed `...$values`): mixed

Alternative signature (not supported with named arguments):

function max(array `$value_array`): mixed

If the first and only parameter is an array, max() returns the highest value in that array. If at least two parameters are provided, max() returns the biggest of these values.

> Bilginize:

> Values of different types will be compared using the standard comparison rules. For instance, a non-numeric string will be compared to an int as though it were `0`, but multiple non-numeric string values will be compared alphanumerically. The actual value returned will be of the original type with no conversion applied.

Dikkat

Be careful when passing arguments of different types because max() can produce unpredictable results.

### Bağımsız Değişkenler

`value`

  Any comparable value.

`values`

  Any comparable values.

`value_array`

  An array containing the values.

### Dönen Değerler

max() returns the parameter value considered "highest" according to standard comparisons. If multiple values of different types evaluate as equal (e.g. `0` and `'abc'`) the first provided to the function will be returned.

### Hatalar/İstisnalar

If an empty array is passed, max() throws a ValueError.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | max() throws a ValueError on failure now; previously, `false` was returned and an `E_WARNING` error was emitted.
8.0.0 | As string to number comparisons were changed, max() no longer returns a different value based on the argument order in those cases.

### Örnekler

Örnek 1 Example uses of max()

    <?php
    echo max(2, 3, 1, 6, 7), PHP_EOL;  // 7
    echo max(array(2, 4, 5)), PHP_EOL; // 5

    // Here we are comparing -1 < 0, so 'hello' is the highest value
    echo max('hello', -1), PHP_EOL;    // hello

    // With multiple arrays of different lengths, max returns the longest
    $val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1)
    var_dump($val);

    // Multiple arrays of the same length are compared from left to right
    // so in our example: 2 == 2, but 5 > 4
    $val = max(array(2, 4, 8), array(2, 5, 1)); // array(2, 5, 1)
    var_dump($val);

    // If both an array and non-array are given, the array will be returned
    // as comparisons treat arrays as greater than any other value
    $val = max('string', array(2, 5, 7), 42);   // array(2, 5, 7)
    var_dump($val);

    // If one argument is NULL or a boolean, it will be compared against
    // other values using the rule FALSE < TRUE regardless of the other types involved
    // In the below example, -10 is treated as TRUE in the comparison
    $val = max(-10, FALSE); // -10
    var_dump($val);

    // 0, on the other hand, is treated as FALSE, so is "lower than" TRUE
    $val = max(0, TRUE); // TRUE
    var_dump($val);
    ?>

### Ayrıca Bakınız

- min() - Find lowest value
- count() - Bir dizideki veya bir Countable nesnesindeki eleman sayısını döndürür

# min

(PHP 4, PHP 5, PHP 7, PHP 8)

min — Find lowest value

### Açıklama

function min(mixed `$value`, mixed `...$values`): mixed

Alternative signature (not supported with named arguments):

function min(array `$value_array`): mixed

If the first and only parameter is an array, min() returns the lowest value in that array. If at least two parameters are provided, min() returns the smallest of these values.

> Bilginize:

> Values of different types will be compared using the standard comparison rules. For instance, a non-numeric string will be compared to an int as though it were `0`, but multiple non-numeric string values will be compared alphanumerically. The actual value returned will be of the original type with no conversion applied.

Dikkat

Be careful when passing arguments of different types because min() can produce unpredictable results.

### Bağımsız Değişkenler

`value`

  Any comparable value.

`values`

  Any comparable values.

`value_array`

  An array containing the values.

### Dönen Değerler

min() returns the parameter value considered "lowest" according to standard comparisons. If multiple values of different types evaluate as equal (e.g. `0` and `'abc'`) the first provided to the function will be returned.

### Hatalar/İstisnalar

If an empty array is passed, min() throws a ValueError.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.0.0 | min() throws a ValueError on failure now; previously, `false` was returned and an `E_WARNING` error was emitted.
8.0.0 | As string to number comparisons were changed, min() no longer returns a different value based on the argument order in those cases.

### Örnekler

Örnek 1 Example uses of min()

    <?php
    echo min(2, 3, 1, 6, 7), PHP_EOL;  // 1
    echo min(array(2, 4, 5)), PHP_EOL; // 2

    // Here we are comparing -1 < 0, so -1 is the lowest value
    echo min('hello', -1), PHP_EOL;    // -1

    // With multiple arrays of different lengths, min returns the shortest
    $val = min(array(2, 2, 2), array(1, 1, 1, 1)); // array(2, 2, 2)
    var_dump($val);

    // Multiple arrays of the same length are compared from left to right
    // so in our example: 2 == 2, but 4 < 5
    $val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
    var_dump($val);

    // If both an array and non-array are given, the array is never returned
    // as comparisons treat arrays as greater than any other value
    $val = min('string', array(2, 5, 7), 42);   // string
    var_dump($val);

    // If one argument is NULL or a boolean, it will be compared against
    // other values using the rules FALSE < TRUE and NULL == FALSE regardless of the
    // other types involved
    // In the below examples, both -10 and 10 are treated as TRUE in the comparison
    $val = min(-10, FALSE, 10); // FALSE
    var_dump($val);

    $val = min(-10, NULL, 10);  // NULL
    var_dump($val);

    // 0, on the other hand, is treated as FALSE, so is "lower than" TRUE
    $val = min(0, TRUE); // 0
    var_dump($val);
    ?>

### Ayrıca Bakınız

- max() - Find highest value
- count() - Bir dizideki veya bir Countable nesnesindeki eleman sayısını döndürür

# octdec

(PHP 4, PHP 5, PHP 7, PHP 8)

octdec — Octal to decimal

### Açıklama

function octdec(string `$octal_string`): int|float

Returns the decimal equivalent of the octal number represented by the `octal_string` argument.

### Bağımsız Değişkenler

`octal_string`

  The octal string to convert. Any invalid characters in `octal_string` are silently ignored. As of PHP 7.4.0 supplying any invalid characters is deprecated.

### Dönen Değerler

The decimal representation of `octal_string`

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
7.4.0 | Passing invalid characters will now generate a deprecation notice. The result will still be computed as if the invalid characters did not exist.

### Örnekler

Örnek 1 octdec() example

    <?php
    echo octdec('77') . "\n";
    echo octdec(decoct(45));
    ?>

Yukarıdaki örneğin çıktısı:

    63
    45

### Notlar

> Bilginize:

> The function can convert numbers that are too large to fit into the platforms int type, larger values are returned as float in that case.

### Ayrıca Bakınız

- decoct() - Onluktan sekizliğe
- bindec() - İkilikten onluğa
- hexdec() - Onaltılıktan onluğa
- base_convert() - Bir sayıyı keyfi tabanlar arasında dönüştürür

# pi

(PHP 4, PHP 5, PHP 7, PHP 8)

pi — Pi sayısının değerini döndürür

### Açıklama

function pi(): float

Pi sayısının yaklaşık değerini döndürür. Ayrıca, pi() işleviyle özdeş sonucu veren `M_PI` sabiti de kullanılabilir.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Pi sayısının float türünde değeri.

### Örnekler

Örnek 1 pi() örneği

    <?php
    echo pi(), PHP_EOL; // 3.1415926535898
    echo M_PI, PHP_EOL; // 3.1415926535898
    ?>

# pow

(PHP 4, PHP 5, PHP 7, PHP 8)

pow — Üstel ifade

### Açıklama

function pow(mixed `$sayı`, mixed `$üs`): int|float|object

`sayı` değerinin `üs`'sünü alıp sonucu döndürür.

> Bilginize:

> Bunun yerine ** işleci de kullanılabilir.

### Bağımsız Değişkenler

`sayı`

  Kullanılacak taban.

`üs`

  Üs.

### Dönen Değerler

`sayı` değerinin `üs`'sü alınmış hali. Her iki bağımsız değişken de negatif olmayan tamsayılar ise ve sonuç bir tamsayı olarak ifade edilebiliyorsa, sonuç int türünde döndürülür; aksi takdirde float türünde döndürülür.

PHP eklentileri bu işlemin davranışını geçersiz kılarak bir nesne döndürmesini sağlayabilir.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | `0` değerinin negatif bir `üs` ile kullanımı önerilmemekte.

### Örnekler

Örnek 1 pow() işlevinden bazı örnekler

    <?php

    var_dump(pow(2, 8)); // int(256)
    echo pow(-1, 20), PHP_EOL; // 1
    echo pow(0, 0), PHP_EOL; // 1
    echo pow(10, -1), PHP_EOL; // 0.1

    echo pow(-1, 5.5), PHP_EOL; // NAN
    ?>

Örnek 2 GMP Eklentisi Nesnesiyle pow() Örnekleri

    <?php
    var_dump(pow(new GMP("3"), new GMP("2"))); // object(GMP)
    ?>

### Notlar

> Bilginize:

> Bu işlev tüm girdiyi, sayıl olmayan değerleri bile bir sayıya dönüştürür; bu da tuhaf sonuçlara yol açabilir.

### Ayrıca Bakınız

- Üs alma işleci `**`
- fpow() - Raise one number to the power of another, according to IEEE 754
- exp() - e sayısının üssünü hesaplar
- sqrt() - Karekök
- bcpow() - Keyfi duyarlıklı sayılar için üs alma işlemi yapar
- gmp_pow() - Raise number into power

# rad2deg

(PHP 4, PHP 5, PHP 7, PHP 8)

rad2deg — Converts the radian number to the equivalent number in degrees

### Açıklama

function rad2deg(float `$num`): float

This function converts `num` from radian to degrees.

### Bağımsız Değişkenler

`num`

  A radian value

### Dönen Değerler

The equivalent of `num` in degrees

### Örnekler

Örnek 1 rad2deg() example

    <?php

    echo rad2deg(M_PI_4); // 45

    ?>

### Ayrıca Bakınız

- deg2rad() - Converts the number in degrees to the radian equivalent

# round

(PHP 4, PHP 5, PHP 7, PHP 8)

round — Rounds a float

### Açıklama

function round(int|float `$num`, int `$precision` = 0, int|RoundingMode `$mode` = `RoundingMode::HalfAwayFromZero`): float

Returns the rounded value of `num` to specified `precision` (number of digits after the decimal point). `precision` can also be negative or zero (default).

### Bağımsız Değişkenler

`num`

  The value to round.

`precision`

  The optional number of decimal digits to round to.

  If the `precision` is positive, `num` is rounded to `precision` significant digits after the decimal point.

  If the `precision` is negative, `num` is rounded to `precision` significant digits before the decimal point, i.e. to the nearest multiple of `pow(10, -$precision)`, e.g. for a `precision` of -1 `num` is rounded to tens, for a `precision` of -2 to hundreds, etc.

`mode`

  Use RoundingMode or one of the following constants to specify the mode in which rounding occurs.

  Sabitler | Açıklama
  --- | ---
  `PHP_ROUND_HALF_UP` | Rounds `num` away from zero when it is half way there, making 1.5 into 2 and -1.5 into -2.
  `PHP_ROUND_HALF_DOWN` | Rounds `num` towards zero when it is half way there, making 1.5 into 1 and -1.5 into -1.
  `PHP_ROUND_HALF_EVEN` | Rounds `num` towards the nearest even value when it is half way there, making both 1.5 and 2.5 into 2.
  `PHP_ROUND_HALF_ODD` | Rounds `num` towards the nearest odd value when it is half way there, making 1.5 into 1 and 2.5 into 3.

  However, please note that some newly added modes only exist in RoundingMode.

### Dönen Değerler

The value rounded to the given `precision` as a float.

### Hatalar/İstisnalar

The function throws a ValueError if `mode` is invalid. Prior to PHP 8.4.0, an invalid mode would silently default to `PHP_ROUND_HALF_UP`.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
8.4.0 | Four new rounding modes have been added.
8.4.0 | Now throws a ValueError if `mode` is invalid.
8.0.0 | `num` no longer accepts internal objects which support numeric conversion.

### Örnekler

Örnek 1 round() examples

    <?php
    var_dump(round(3.4));
    var_dump(round(3.5));
    var_dump(round(3.6));
    var_dump(round(3.6, 0));
    var_dump(round(5.045, 2));
    var_dump(round(5.055, 2));
    var_dump(round(345, -2));
    var_dump(round(345, -3));
    var_dump(round(678, -2));
    var_dump(round(678, -3));
    ?>

Yukarıdaki örneğin çıktısı:

    float(3)
    float(4)
    float(4)
    float(4)
    float(5.05)
    float(5.06)
    float(300)
    float(0)
    float(700)
    float(1000)

Örnek 2 How `precision` affects a float

    <?php
    $number = 135.79;

    var_dump(round($number, 3));
    var_dump(round($number, 2));
    var_dump(round($number, 1));
    var_dump(round($number, 0));
    var_dump(round($number, -1));
    var_dump(round($number, -2));
    var_dump(round($number, -3));
    ?>

Yukarıdaki örneğin çıktısı:

    float(135.79)
    float(135.79)
    float(135.8)
    float(136)
    float(140)
    float(100)
    float(0)

Örnek 3 `mode` examples

    <?php
    echo 'Rounding modes with 9.5' . PHP_EOL;
    var_dump(round(9.5, 0, PHP_ROUND_HALF_UP));
    var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));
    var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));
    var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));

    echo PHP_EOL;
    echo 'Rounding modes with 8.5' . PHP_EOL;
    var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));
    var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));
    var_dump(round(8.5, 0, PHP_ROUND_HALF_EVEN));
    var_dump(round(8.5, 0, PHP_ROUND_HALF_ODD));
    ?>

Yukarıdaki örneğin çıktısı:

    Rounding modes with 9.5
    float(10)
    float(9)
    float(10)
    float(9)

    Rounding modes with 8.5
    float(9)
    float(8)
    float(8)
    float(9)

Örnek 4 `mode` with `precision` examples

    <?php
    echo 'Using PHP_ROUND_HALF_UP with 1 decimal digit precision' . PHP_EOL;
    var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));
    var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));

    echo PHP_EOL;
    echo 'Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision' . PHP_EOL;
    var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));
    var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));

    echo PHP_EOL;
    echo 'Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision' . PHP_EOL;
    var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));
    var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));

    echo PHP_EOL;
    echo 'Using PHP_ROUND_HALF_ODD with 1 decimal digit precision' . PHP_EOL;
    var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));
    var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));
    ?>

Yukarıdaki örneğin çıktısı:

    Using PHP_ROUND_HALF_UP with 1 decimal digit precision
    float(1.6)
    float(-1.6)

    Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision
    float(1.5)
    float(-1.5)

    Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision
    float(1.6)
    float(-1.6)

    Using PHP_ROUND_HALF_ODD with 1 decimal digit precision
    float(1.5)
    float(-1.5)

Örnek 5 Example of using RoundingMode

    <?php
    foreach (RoundingMode::cases() as $mode) {
        foreach ([
            8.5,
            9.5,
            -3.5,
        ] as $number) {
            printf("%-17s: %+.17g -> %+.17g\n", $mode->name, $number, round($number, 0, $mode));
        }
        echo "\n";
    }
    ?>

Yukarıdaki örneğin çıktısı:

    HalfAwayFromZero : +8.5 -> +9
    HalfAwayFromZero : +9.5 -> +10
    HalfAwayFromZero : -3.5 -> -4

    HalfTowardsZero  : +8.5 -> +8
    HalfTowardsZero  : +9.5 -> +9
    HalfTowardsZero  : -3.5 -> -3

    HalfEven         : +8.5 -> +8
    HalfEven         : +9.5 -> +10
    HalfEven         : -3.5 -> -4

    HalfOdd          : +8.5 -> +9
    HalfOdd          : +9.5 -> +9
    HalfOdd          : -3.5 -> -3

    TowardsZero      : +8.5 -> +8
    TowardsZero      : +9.5 -> +9
    TowardsZero      : -3.5 -> -3

    AwayFromZero     : +8.5 -> +9
    AwayFromZero     : +9.5 -> +10
    AwayFromZero     : -3.5 -> -4

    NegativeInfinity : +8.5 -> +8
    NegativeInfinity : +9.5 -> +9
    NegativeInfinity : -3.5 -> -4

    PositiveInfinity : +8.5 -> +9
    PositiveInfinity : +9.5 -> +10
    PositiveInfinity : -3.5 -> -3

### Ayrıca Bakınız

- ceil() - Kesirleri yukarı yuvarlar
- floor() - Kesirleri aşağı yuvarlar
- number_format() - Sayıyı binlik bölümlere ayırır

# sin

(PHP 4, PHP 5, PHP 7, PHP 8)

sin — Sinüs

### Açıklama

function sin(float `$sayı`): float

sin(), `sayı` bağımsız değişkeninin sinüsünü döndürür. `sayı` radyan cinsindendir.

### Bağımsız Değişkenler

`sayı`

  Radyan cinsinden bir değer.

### Dönen Değerler

`sayı` değerinin sinüsü.

### Örnekler

Örnek 1 sin() örneği

    <?php
    // Hassasiyet, precision ini yönergesine bağlıdır
    echo sin(deg2rad(60)), PHP_EOL;  //  0.866025403 ...
    echo sin(60), PHP_EOL;           // -0.304810621 ...
    ?>

### Ayrıca Bakınız

- asin() - Ark sinüs
- sinh() - Hiperbolik sinüs
- cos() - Kosinüs
- tan() - Tanjant
- deg2rad() - Converts the number in degrees to the radian equivalent

# sinh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

sinh — Hiperbolik sinüs

### Açıklama

function sinh(float `$sayı`): float

`sayı` değerinin `(exp($sayı) - exp(-$sayı))/2` olarak tanımlı hiperbolik sinüsünü döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin hiperbolik sinüsü.

### Ayrıca Bakınız

- sin() - Sinüs
- asinh() - Ters hiperbolik sinüs
- cosh() - Hiperbolik kosinüs
- tanh() - Hiperbolik tanjant

# sqrt

(PHP 4, PHP 5, PHP 7, PHP 8)

sqrt — Karekök

### Açıklama

function sqrt(float `$sayı`): float

`sayı` değerinin karekökünü döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin karekökü, ya da negatif sayılar için özel `NAN` değeri.

### Örnekler

Örnek 1 sqrt() örneği

    <?php
    // Hassasiyet, precision ini yönergesine bağlıdır
    echo sqrt(9), PHP_EOL; // 3
    echo sqrt(10), PHP_EOL; // 3.16227766 ...
    ?>

### Ayrıca Bakınız

- pow() - Üstel ifade
- `M_SQRTPI` - `sqrt(pi)`
- `M_2_SQRTPI` - `2/sqrt(pi)`
- `M_SQRT2` - `sqrt(2)`
- `M_SQRT3` - `sqrt(3)`
- `M_SQRT1_2` - `1/sqrt(2)`

# tan

(PHP 4, PHP 5, PHP 7, PHP 8)

tan — Tanjant

### Açıklama

function tan(float `$sayı`): float

tan(), `sayı` bağımsız değişkeninin tanjantını döndürür. `sayı` radyan cinsindendir.

### Bağımsız Değişkenler

`sayı`

  Radyan cinsinden işlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin tanjantı.

### Örnekler

Örnek 1 tan() örneği

    <?php

    echo tan(M_PI_4); // 1

    ?>

### Ayrıca Bakınız

- atan() - Ark tanjant
- atan2() - Arc tangent of two variables
- sin() - Sinüs
- cos() - Kosinüs
- tanh() - Hiperbolik tanjant
- deg2rad() - Converts the number in degrees to the radian equivalent

# tanh

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

tanh — Hiperbolik tanjant

### Açıklama

function tanh(float `$sayı`): float

`sayı` değerinin `sinh($sayı)/cosh($sayı)` olarak tanımlı hiperbolik tanjantını döndürür.

### Bağımsız Değişkenler

`sayı`

  İşlenecek bağımsız değişken.

### Dönen Değerler

`sayı` değerinin hiperbolik tanjantı.

### Ayrıca Bakınız

- tan() - Tanjant
- atanh() - Ters hiperbolik tanjant
- sinh() - Hiperbolik sinüs
- cosh() - Hiperbolik kosinüs

## İçindekiler

- abs — Mutlak değer
- acos — Ark kosinüs
- acosh — Ters hiperbolik kosinüs
- asin — Ark sinüs
- asinh — Ters hiperbolik sinüs
- atan — Ark tanjant
- atan2 — Arc tangent of two variables
- atanh — Ters hiperbolik tanjant
- base_convert — Bir sayıyı keyfi tabanlar arasında dönüştürür
- bindec — İkilikten onluğa
- ceil — Kesirleri yukarı yuvarlar
- cos — Kosinüs
- cosh — Hiperbolik kosinüs
- decbin — Onluktan ikiliğe
- dechex — Onluktan onaltılığa
- decoct — Onluktan sekizliğe
- deg2rad — Converts the number in degrees to the radian equivalent
- exp — e sayısının üssünü hesaplar
- expm1 — exp($sayı) - 1 ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
- fdiv — Divides two numbers, according to IEEE 754
- floor — Kesirleri aşağı yuvarlar
- fmod — Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür
- fpow — Raise one number to the power of another, according to IEEE 754
- hexdec — Onaltılıktan onluğa
- hypot — Calculate the length of the hypotenuse of a right-angle triangle
- intdiv — Integer division
- is_finite — Checks whether a float is finite
- is_infinite — Checks whether a float is infinite
- is_nan — Checks whether a float is NAN
- log — Doğal logaritma
- log10 — 10 tabanında logaritma
- log1p — log(1 + sayı) ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
- max — Find highest value
- min — Find lowest value
- octdec — Octal to decimal
- pi — Pi sayısının değerini döndürür
- pow — Üstel ifade
- rad2deg — Converts the radian number to the equivalent number in degrees
- round — Rounds a float
- sin — Sinüs
- sinh — Hiperbolik sinüs
- sqrt — Karekök
- tan — Tanjant
- tanh — Hiperbolik tanjant

- Öntanımlı Sabitler
- RoundingMode — The RoundingMode Enum
- Math İşlevleri
  - abs — Mutlak değer
  - acos — Ark kosinüs
  - acosh — Ters hiperbolik kosinüs
  - asin — Ark sinüs
  - asinh — Ters hiperbolik sinüs
  - atan — Ark tanjant
  - atan2 — Arc tangent of two variables
  - atanh — Ters hiperbolik tanjant
  - base_convert — Bir sayıyı keyfi tabanlar arasında dönüştürür
  - bindec — İkilikten onluğa
  - ceil — Kesirleri yukarı yuvarlar
  - cos — Kosinüs
  - cosh — Hiperbolik kosinüs
  - decbin — Onluktan ikiliğe
  - dechex — Onluktan onaltılığa
  - decoct — Onluktan sekizliğe
  - deg2rad — Converts the number in degrees to the radian equivalent
  - exp — e sayısının üssünü hesaplar
  - expm1 — exp($sayı) - 1 ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
  - fdiv — Divides two numbers, according to IEEE 754
  - floor — Kesirleri aşağı yuvarlar
  - fmod — Bağımsız değişkenlerin bölümünden gerçek sayı kalanı döndürür
  - fpow — Raise one number to the power of another, according to IEEE 754
  - hexdec — Onaltılıktan onluğa
  - hypot — Calculate the length of the hypotenuse of a right-angle triangle
  - intdiv — Integer division
  - is_finite — Checks whether a float is finite
  - is_infinite — Checks whether a float is infinite
  - is_nan — Checks whether a float is NAN
  - log — Doğal logaritma
  - log10 — 10 tabanında logaritma
  - log1p — log(1 + sayı) ifadesinin sonucunu, sayının değeri sıfıra yakın olduğunda bile doğru kalacak biçimde döndürür
  - max — Find highest value
  - min — Find lowest value
  - octdec — Octal to decimal
  - pi — Pi sayısının değerini döndürür
  - pow — Üstel ifade
  - rad2deg — Converts the radian number to the equivalent number in degrees
  - round — Rounds a float
  - sin — Sinüs
  - sinh — Hiperbolik sinüs
  - sqrt — Karekök
  - tan — Tanjant
  - tanh — Hiperbolik tanjant

# Statistics

# Giriş

Uyarı

This extension is unmaintained.

This is the statistics extension. It contains few dozens of functions useful for statistical computations. It is a wrapper around 2 scientific libraries, namely DCDFLIB (Library of C routines for Cumulative Distributions Functions, Inverses, and Other parameters) by B. Brown & J. Lavato and RANDLIB by Barry Brown, James Lavato & Kathy Russell. Includes CD and PD functions.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

No external libraries are needed. The extension comes bundled with the libraries used.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu eklentinin geliştirmesi durmuştur. Ancak, kaynak kodu PECL SVN deposunda bulunabilir. Yeri: » https://pecl.php.net/package/stats.

Bu PECL eklentisi için Windows kütüphaneleri (DLL dosyaları) PECL sitesinde mevcuttur.

# Statistic İşlevleri

# stats_absolute_deviation

(PECL stats >= 1.0.0)

stats_absolute_deviation — Returns the absolute deviation of an array of values

### Açıklama

function stats_absolute_deviation(array `$a`): float

Returns the absolute deviation of the values in `a`.

### Bağımsız Değişkenler

`a`
  The input array

### Dönen Değerler

Returns the absolute deviation of the values in `a`, or `false` if `a` is empty or is not an array.

# stats_cdf_beta

(PECL stats >= 1.0.0)

stats_cdf_beta — Calculates any one parameter of the beta distribution given values for the others

### Açıklama

function stats_cdf_beta(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the beta distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, alpha, and beta denotes cumulative distribution function, the value of the random variable, and shape parameters of the beta distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | alpha | beta
2 | x | CDF | alpha | beta
3 | alpha | x | CDF | beta
4 | beta | x | CDF | alpha

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, alpha, or beta, determined by `which`.

# stats_cdf_binomial

(PECL stats >= 1.0.0)

stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others

### Açıklama

function stats_cdf_binomial(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the binomial distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, n, and p denotes cumulative distribution function, the number of successes, the number of trials, and the success rate for each trial, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | n | p
2 | x | CDF | n | p
3 | n | x | CDF | p
4 | p | x | CDF | n

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, n, or p, determined by `which`.

# stats_cdf_cauchy

(PECL stats >= 1.0.0)

stats_cdf_cauchy — Calculates any one parameter of the Cauchy distribution given values for the others

### Açıklama

function stats_cdf_cauchy(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the Cauchy distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, x0, and gamma denotes cumulative distribution function, the value of the random variable, the location and the scale parameter of the Cauchy distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | x0 | gamma
2 | x | CDF | x0 | gamma
3 | x0 | x | CDF | gamma
4 | gamma | x | CDF | x0

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, x0, or gamma, determined by `which`.

# stats_cdf_chisquare

(PECL stats >= 1.0.0)

stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others

### Açıklama

function stats_cdf_chisquare(float `$par1`, float `$par2`, int `$which`): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the chi-square distribution. The kind of the return value and parameters (`par1` and `par2`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, and k denotes cumulative distribution function, the value of the random variable, and the degree of freedom of the chi-square distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2`
--- | --- | --- | ---
1 | CDF | x | k
2 | x | CDF | k
3 | k | x | CDF

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, or k, determined by `which`.

# stats_cdf_exponential

(PECL stats >= 1.0.0)

stats_cdf_exponential — Calculates any one parameter of the exponential distribution given values for the others

### Açıklama

function stats_cdf_exponential(float `$par1`, float `$par2`, int `$which`): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the exponential distribution. The kind of the return value and parameters (`par1` and `par2`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, and lambda denotes cumulative distribution function, the value of the random variable, and the rate parameter of the exponential distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2`
--- | --- | --- | ---
1 | CDF | x | lambda
2 | x | CDF | lambda
3 | lambda | x | CDF

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, or lambda, determined by `which`.

# stats_cdf_f

(PECL stats >= 1.0.0)

stats_cdf_f — Calculates any one parameter of the F distribution given values for the others

### Açıklama

function stats_cdf_f(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the F distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, d1, and d2 denotes cumulative distribution function, the value of the random variable, and the degree of freedoms of the F distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | d1 | d2
2 | x | CDF | d1 | d2
3 | d1 | x | CDF | d2
4 | d2 | x | CDF | d1

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, d1, or d2, determined by `which`.

# stats_cdf_gamma

(PECL stats >= 1.0.0)

stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others

### Açıklama

function stats_cdf_gamma(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the gamma distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, k, and theta denotes cumulative distribution function, the value of the random variable, and the shape and the scale parameter of the gamma distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | k | theta
2 | x | CDF | k | theta
3 | k | x | CDF | theta
4 | theta | x | CDF | k

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, k, or theta, determined by `which`.

# stats_cdf_laplace

(PECL stats >= 1.0.0)

stats_cdf_laplace — Calculates any one parameter of the Laplace distribution given values for the others

### Açıklama

function stats_cdf_laplace(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the Laplace distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, mu, and b denotes cumulative distribution function, the value of the random variable, and the location and the scale parameter of the Laplace distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | mu | b
2 | x | CDF | mu | b
3 | mu | x | CDF | b
4 | b | x | CDF | mu

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, mu, or b, determined by `which`.

# stats_cdf_logistic

(PECL stats >= 1.0.0)

stats_cdf_logistic — Calculates any one parameter of the logistic distribution given values for the others

### Açıklama

function stats_cdf_logistic(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the logistic distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, mu, and s denotes cumulative distribution function, the value of the random variable, and the location and the scale parameter of the logistic distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | mu | s
2 | x | CDF | mu | s
3 | mu | x | CDF | s
4 | s | x | CDF | mu

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, mu, or s, determined by `which`.

# stats_cdf_negative_binomial

(PECL stats >= 1.0.0)

stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others

### Açıklama

function stats_cdf_negative_binomial(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the negative binomial distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, r, and p denotes cumulative distribution function, the number of failure, the number of success, and the success rate for each trial, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | r | p
2 | x | CDF | r | p
3 | r | x | CDF | p
4 | p | x | CDF | r

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, r, or p, determined by `which`.

# stats_cdf_noncentral_chisquare

(PECL stats >= 1.0.0)

stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others

### Açıklama

function stats_cdf_noncentral_chisquare(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the non-central chi-square distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, k, and lambda denotes cumulative distribution function, the value of the random variable, the degree of freedom and the non-centrality parameter of the distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | k | lambda
2 | x | CDF | k | lambda
3 | k | x | CDF | lambda
4 | lambda | x | CDF | k

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, k, or lambda, determined by `which`.

# stats_cdf_noncentral_f

(PECL stats >= 1.0.0)

stats_cdf_noncentral_f — Calculates any one parameter of the non-central F distribution given values for the others

### Açıklama

function stats_cdf_noncentral_f(
float `$par1`,
float `$par2`,
float `$par3`,
float `$par4`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the non-central F distribution. The kind of the return value and parameters (`par1`, `par2`, `par3`, and `par4`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, nu1, nu2, and lambda denotes cumulative distribution function, the value of the random variable, the degree of freedoms and the non-centrality parameter of the distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3` | `par4`
--- | --- | --- | --- | --- | ---
1 | CDF | x | nu1 | nu2 | lambda
2 | x | CDF | nu1 | nu2 | lambda
3 | nu1 | x | CDF | nu2 | lambda
4 | nu2 | x | CDF | nu1 | lambda
5 | lambda | x | CDF | nu1 | nu2

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`par4`
  The fourth parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, nu1, nu2, or lambda, determined by `which`.

# stats_cdf_noncentral_t

(PECL stats >= 1.0.0)

stats_cdf_noncentral_t — Calculates any one parameter of the non-central t-distribution give values for the others

### Açıklama

function stats_cdf_noncentral_t(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the non-central t-distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, nu, and mu denotes cumulative distribution function, the value of the random variable, the degrees of freedom and the non-centrality parameter of the distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | nu | mu
2 | x | CDF | nu | mu
3 | nu | x | CDF | mu
4 | mu | x | CDF | nu

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, nu, or mu, determined by `which`.

# stats_cdf_normal

(PECL stats >= 1.0.0)

stats_cdf_normal — Calculates any one parameter of the normal distribution given values for the others

### Açıklama

function stats_cdf_normal(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the normal distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, mu, and sigma denotes cumulative distribution function, the value of the random variable, the mean and the standard deviation of the normal distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | mu | sigma
2 | x | CDF | mu | sigma
3 | mu | x | CDF | sigma
4 | sigma | x | CDF | mu

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, mu, or sigma, determined by `which`.

# stats_cdf_poisson

(PECL stats >= 1.0.0)

stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others

### Açıklama

function stats_cdf_poisson(float `$par1`, float `$par2`, int `$which`): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the Poisson distribution. The kind of the return value and parameters (`par1` and `par2`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, and lambda denotes cumulative distribution function, the value of the random variable, and the parameter of the Poisson distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2`
--- | --- | --- | ---
1 | CDF | x | lambda
2 | x | CDF | lambda
3 | lambda | x | CDF

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, or lambda, determined by `which`.

# stats_cdf_t

(PECL stats >= 1.0.0)

stats_cdf_t — Calculates any one parameter of the t-distribution given values for the others

### Açıklama

function stats_cdf_t(float `$par1`, float `$par2`, int `$which`): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the t-distribution. The kind of the return value and parameters (`par1` and `par2`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, and nu denotes cumulative distribution function, the value of the random variable, and the degrees of freedom of the t-distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2`
--- | --- | --- | ---
1 | CDF | x | nu
2 | x | CDF | nu
3 | nu | x | CDF

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, or nu, determined by `which`.

# stats_cdf_uniform

(PECL stats >= 1.0.0)

stats_cdf_uniform — Calculates any one parameter of the uniform distribution given values for the others

### Açıklama

function stats_cdf_uniform(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the uniform distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, a, and b denotes cumulative distribution function, the value of the random variable, the lower bound and the higher bound of the uniform distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | a | b
2 | x | CDF | a | b
3 | a | x | CDF | b
4 | b | x | CDF | a

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, a, or b, determined by `which`.

# stats_cdf_weibull

(PECL stats >= 1.0.0)

stats_cdf_weibull — Calculates any one parameter of the Weibull distribution given values for the others

### Açıklama

function stats_cdf_weibull(
float `$par1`,
float `$par2`,
float `$par3`,
int `$which`
): float

Returns the cumulative distribution function, its inverse, or one of its parameters, of the Weibull distribution. The kind of the return value and parameters (`par1`, `par2`, and `par3`) are determined by `which`.

The following table lists the return value and parameters by `which`. CDF, x, k, and lambda denotes cumulative distribution function, the value of the random variable, the shape and the scale parameter of the Weibull distribution, respectively.

Return value and parameters
`which` | Return value | `par1` | `par2` | `par3`
--- | --- | --- | --- | ---
1 | CDF | x | k | lambda
2 | x | CDF | k | lambda
3 | k | x | CDF | lambda
4 | lambda | x | CDF | k

### Bağımsız Değişkenler

`par1`
  The first parameter
`par2`
  The second parameter
`par3`
  The third parameter
`which`
  The flag to determine what to be calculated

### Dönen Değerler

Returns CDF, x, k, or lambda, determined by `which`.

# stats_covariance

(PECL stats >= 1.0.0)

stats_covariance — Computes the covariance of two data sets

### Açıklama

function stats_covariance(array `$a`, array `$b`): float

Returns the covariance of `a` and `b`.

### Bağımsız Değişkenler

`a`
  The first array
`b`
  The second array

### Dönen Değerler

Returns the covariance of `a` and `b`, or `false` on failure.

# stats_dens_beta

(PECL stats >= 1.0.0)

stats_dens_beta — Probability density function of the beta distribution

### Açıklama

function stats_dens_beta(float `$x`, float `$a`, float `$b`): float

Returns the probability density at `x`, where the random variable follows the beta distribution of which the shape parameters are `a` and `b`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`a`
  The shape parameter of the distribution
`b`
  The shape parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_cauchy

(PECL stats >= 1.0.0)

stats_dens_cauchy — Probability density function of the Cauchy distribution

### Açıklama

function stats_dens_cauchy(float `$x`, float `$ave`, float `$stdev`): float

Returns the probability density at `x`, where the random variable follows the Cauchy distribution whose location and scale are `ave` and `stdev`, respectively.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`ave`
  The location parameter of the distribution
`stdev`
  The scale parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_chisquare

(PECL stats >= 1.0.0)

stats_dens_chisquare — Probability density function of the chi-square distribution

### Açıklama

function stats_dens_chisquare(float `$x`, float `$dfr`): float

Returns the probability density at `x`, where the random variable follows the chi-square distribution of which the degree of freedom is `dfr`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`dfr`
  The degree of freedom of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_exponential

(PECL stats >= 1.0.0)

stats_dens_exponential — Probability density function of the exponential distribution

### Açıklama

function stats_dens_exponential(float `$x`, float `$scale`): float

Returns the probability density at `x`, where the random variable follows the exponential distribution of which the scale is `scale`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`scale`
  The scale of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_f

(PECL stats >= 1.0.0)

stats_dens_f — Probability density function of the F distribution

### Açıklama

function stats_dens_f(float `$x`, float `$dfr1`, float `$dfr2`): float

Returns the probability density at `x`, where the random variable follows the F distribution of which the degree of freedoms are `dfr1` and `dfr2`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`dfr1`
  The degree of freedom of the distribution
`dfr2`
  The degree of freedom of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_gamma

(PECL stats >= 1.0.0)

stats_dens_gamma — Probability density function of the gamma distribution

### Açıklama

function stats_dens_gamma(float `$x`, float `$shape`, float `$scale`): float

Returns the probability density at `x`, where the random variable follows the gamma distribution of which the shape parameter is `shape` and the scale parameter is `scale`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`shape`
  The shape parameter of the distribution
`scale`
  The scale parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_laplace

(PECL stats >= 1.0.0)

stats_dens_laplace — Probability density function of the Laplace distribution

### Açıklama

function stats_dens_laplace(float `$x`, float `$ave`, float `$stdev`): float

Returns the probability density at `x`, where the random variable follows the Laplace distribution of which the location parameter is `ave` and the scale parameter is `stdev`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`ave`
  The location parameter of the distribution
`stdev`
  The shape parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_logistic

(PECL stats >= 1.0.0)

stats_dens_logistic — Probability density function of the logistic distribution

### Açıklama

function stats_dens_logistic(float `$x`, float `$ave`, float `$stdev`): float

Returns the probability density at `x`, where the random variable follows the logistic distribution of which the location parameter is `ave` and the scale parameter is `stdev`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`ave`
  The location parameter of the distribution
`stdev`
  The shape parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_normal

(PECL stats >= 1.0.0)

stats_dens_normal — Probability density function of the normal distribution

### Açıklama

function stats_dens_normal(float `$x`, float `$ave`, float `$stdev`): float

Returns the probability density at `x`, where the random variable follows the normal distribution of which the mean is `ave` and the standard deviation is `stdev`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`ave`
  The mean of the distribution
`stdev`
  The standard deviation of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_pmf_binomial

(PECL stats >= 1.0.0)

stats_dens_pmf_binomial — Probability mass function of the binomial distribution

### Açıklama

function stats_dens_pmf_binomial(float `$x`, float `$n`, float `$pi`): float

Returns the probability mass at `x`, where the random variable follows the binomial distribution of which the number of trials is `n` and the success rate is `pi`.

### Bağımsız Değişkenler

`x`
  The value at which the probability mass is calculated
`n`
  The number of trials of the distribution
`pi`
  The success rate of the distribution

### Dönen Değerler

The probability mass at `x` or `false` for failure.

# stats_dens_pmf_hypergeometric

(PECL stats >= 1.0.0)

stats_dens_pmf_hypergeometric — Probability mass function of the hypergeometric distribution

### Açıklama

function stats_dens_pmf_hypergeometric(
float `$n1`,
float `$n2`,
float `$N1`,
float `$N2`
): float

Returns the probability mass at `n1`, where the random variable follows the hypergeometric distribution of which the number of failure is `n2`, the number of success samples is `N1`, and the number of failure samples is `N2`.

### Bağımsız Değişkenler

`n1`
  The number of success, at which the probability mass is calculated
`n2`
  The number of failure of the distribution
`N1`
  The number of success samples of the distribution
`N2`
  The number of failure samples of the distribution

### Dönen Değerler

The probability mass at `n1` or `false` for failure.

# stats_dens_pmf_negative_binomial

(PECL stats >= 1.0.0)

stats_dens_pmf_negative_binomial — Probability mass function of the negative binomial distribution

### Açıklama

function stats_dens_pmf_negative_binomial(float `$x`, float `$n`, float `$pi`): float

Returns the probability mass at `x`, where the random variable follows the negative binomial distribution of which the number of the success is `n` and the success rate is `pi`.

### Bağımsız Değişkenler

`x`
  The value at which the probability mass is calculated
`n`
  The number of the success of the distribution
`pi`
  The success rate of the distribution

### Dönen Değerler

The probability mass at `x` or `false` for failure.

# stats_dens_pmf_poisson

(PECL stats >= 1.0.0)

stats_dens_pmf_poisson — Probability mass function of the Poisson distribution

### Açıklama

function stats_dens_pmf_poisson(float `$x`, float `$lb`): float

Returns the probability mass at `x`, where the random variable follows the Poisson distribution whose parameter is `lb`.

### Bağımsız Değişkenler

`x`
  The value at which the probability mass is calculated
`lb`
  The parameter of the Poisson distribution

### Dönen Değerler

The probability mass at `x` or `false` for failure.

# stats_dens_t

(PECL stats >= 1.0.0)

stats_dens_t — Probability density function of the t-distribution

### Açıklama

function stats_dens_t(float `$x`, float `$dfr`): float

Returns the probability density at `x`, where the random variable follows the t-distribution of which the degree of freedom is `dfr`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`dfr`
  The degree of freedom of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_uniform

(PECL stats >= 1.0.0)

stats_dens_uniform — Probability density function of the uniform distribution

### Açıklama

function stats_dens_uniform(float `$x`, float `$a`, float `$b`): float

Returns the probability density at `x`, where the random variable follows the uniform distribution of which the lower bound is `a` and the upper bound is `b`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`a`
  The lower bound of the distribution
`b`
  The upper bound of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_dens_weibull

(PECL stats >= 1.0.0)

stats_dens_weibull — Probability density function of the Weibull distribution

### Açıklama

function stats_dens_weibull(float `$x`, float `$a`, float `$b`): float

Returns the probability density at `x`, where the random variable follows the Weibull distribution of which the shape parameter is `a` and the scale parameter is `b`.

### Bağımsız Değişkenler

`x`
  The value at which the probability density is calculated
`a`
  The shape parameter of the distribution
`b`
  The scale parameter of the distribution

### Dönen Değerler

The probability density at `x` or `false` for failure.

# stats_harmonic_mean

(PECL stats >= 1.0.0)

stats_harmonic_mean — Returns the harmonic mean of an array of values

### Açıklama

function stats_harmonic_mean(array `$a`): number

Returns the harmonic mean of the values in `a`.

### Bağımsız Değişkenler

`a`
  The input array

### Dönen Değerler

Returns the harmonic mean of the values in `a`, or `false` if `a` is empty or is not an array.

# stats_kurtosis

(PECL stats >= 1.0.0)

stats_kurtosis — Computes the kurtosis of the data in the array

### Açıklama

function stats_kurtosis(array `$a`): float

Returns the kurtosis of the values in `a`.

### Bağımsız Değişkenler

`a`
  The input array

### Dönen Değerler

Returns the kurtosis of the values in `a`, or `false` if `a` is empty or is not an array.

# stats_rand_gen_beta

(PECL stats >= 1.0.0)

stats_rand_gen_beta — Generates a random deviate from the beta distribution

### Açıklama

function stats_rand_gen_beta(float `$a`, float `$b`): float

Returns a random deviate from the beta distribution with parameters A and B. The density of the beta is x^(a-1) * (1-x)^(b-1) / B(a,b) for 0 < x <. Method R. C. H. Cheng.

### Bağımsız Değişkenler

`a`
  The shape parameter of the beta distribution
`b`
  The shape parameter of the beta distribution

### Dönen Değerler

A random deviate

# stats_rand_gen_chisquare

(PECL stats >= 1.0.0)

stats_rand_gen_chisquare — Generates a random deviate from the chi-square distribution

### Açıklama

function stats_rand_gen_chisquare(float `$df`): float

Returns a random deviate from the chi-square distribution where the degrees of freedom is `df`.

### Bağımsız Değişkenler

`df`
  The degrees of freedom

### Dönen Değerler

A random deviate

# stats_rand_gen_exponential

(PECL stats >= 1.0.0)

stats_rand_gen_exponential — Generates a random deviate from the exponential distribution

### Açıklama

function stats_rand_gen_exponential(float `$av`): float

Returns a random deviate from the exponential distribution of which the scale is `av`.

### Bağımsız Değişkenler

`av`
  The scale parameter

### Dönen Değerler

A random deviate

# stats_rand_gen_f

(PECL stats >= 1.0.0)

stats_rand_gen_f — Generates a random deviate from the F distribution

### Açıklama

function stats_rand_gen_f(float `$dfn`, float `$dfd`): float

Generates a random deviate from the F (variance ratio) distribution with "dfn" degrees of freedom in the numerator and "dfd" degrees of freedom in the denominator. Method : directly generates ratio of chisquare variates.

### Bağımsız Değişkenler

`dfn`

  The degrees of freedom in the numerator

`dfd`

  The degrees of freedom in the denominator

### Dönen Değerler

A random deviate

# stats_rand_gen_funiform

(PECL stats >= 1.0.0)

stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)

### Açıklama

function stats_rand_gen_funiform(float `$low`, float `$high`): float

Returns a random deviate from the uniform distribution from `low` to `high`.

### Bağımsız Değişkenler

`low`
  The lower bound (exclusive)
`high`
  The upper bound (exclusive)

### Dönen Değerler

A random deviate

# stats_rand_gen_gamma

(PECL stats >= 1.0.0)

stats_rand_gen_gamma — Generates a random deviate from the gamma distribution

### Açıklama

function stats_rand_gen_gamma(float `$a`, float `$r`): float

Generates a random deviate from the gamma distribution whose density is (A**R)/Gamma(R) * X**(R-1) * Exp(-A*X).

### Bağımsız Değişkenler

`a`
  location parameter of Gamma distribution (`a` > 0).
`r`
  shape parameter of Gamma distribution (`r` > 0).

### Dönen Değerler

A random deviate

# stats_rand_gen_ibinomial

(PECL stats >= 1.0.0)

stats_rand_gen_ibinomial — Generates a random deviate from the binomial distribution

### Açıklama

function stats_rand_gen_ibinomial(int `$n`, float `$pp`): int

Returns a random deviate from the binomial distribution whose number of trials is `n` and whose probability of an event in each trial is `pp`.

### Bağımsız Değişkenler

`n`
  The number of trials
`pp`
  The probability of an event in each trial

### Dönen Değerler

A random deviate

# stats_rand_gen_ibinomial_negative

(PECL stats >= 1.0.0)

stats_rand_gen_ibinomial_negative — Generates a random deviate from the negative binomial distribution

### Açıklama

function stats_rand_gen_ibinomial_negative(int `$n`, float `$p`): int

Returns a random deviate from a negative binomial distribution where the number of success is `n` and the success rate is `p`.

### Bağımsız Değişkenler

`n`
  The number of success
`p`
  The success rate

### Dönen Değerler

A random deviate, which is the number of failure.

# stats_rand_gen_int

(PECL stats >= 1.0.0)

stats_rand_gen_int — Generates random integer between 1 and 2147483562

### Açıklama

function stats_rand_gen_int(): int

Returns a random integer between 1 and 2147483562

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A random integer

# stats_rand_gen_ipoisson

(PECL stats >= 1.0.0)

stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution

### Açıklama

function stats_rand_gen_ipoisson(float `$mu`): int

Returns a random deviate from the Poisson distribution with parameter `mu`.

### Bağımsız Değişkenler

`mu`
  The parameter of the Poisson distribution

### Dönen Değerler

A random deviate

# stats_rand_gen_iuniform

(PECL stats >= 1.0.0)

stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)

### Açıklama

function stats_rand_gen_iuniform(int `$low`, int `$high`): int

Returns a random integer from the discrete uniform distribution between `low` (inclusive) and `high` (inclusive).

### Bağımsız Değişkenler

`low`
  The lower bound
`high`
  The upper bound

### Dönen Değerler

A random integer

# stats_rand_gen_noncentral_chisquare

(PECL stats >= 1.0.0)

stats_rand_gen_noncentral_chisquare — Generates a random deviate from the non-central chi-square distribution

### Açıklama

function stats_rand_gen_noncentral_chisquare(float `$df`, float `$xnonc`): float

Returns a random deviate from the non-central chi-square distribution with degrees of freedom, `df`, and non-centrality parameter, `xnonc`.

### Bağımsız Değişkenler

`df`
  The degrees of freedom
`xnonc`
  The non-centrality parameter

### Dönen Değerler

A random deviate

# stats_rand_gen_noncentral_f

(PECL stats >= 1.0.0)

stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F distribution

### Açıklama

function stats_rand_gen_noncentral_f(float `$dfn`, float `$dfd`, float `$xnonc`): float

Returns a random deviate from the non-central F distribution where the degrees of freedoms are `dfn` (numerator) and `dfd` (denominator), and the non-centrality parameter is `xnonc`.

### Bağımsız Değişkenler

`dfn`
  The degrees of freedom of the numerator
`dfd`
  The degrees of freedom of the denominator
`xnonc`
  The non-centrality parameter

### Dönen Değerler

A random deviate

# stats_rand_gen_noncentral_t

(PECL stats >= 1.0.0)

stats_rand_gen_noncentral_t — Generates a single random deviate from a non-central t-distribution

### Açıklama

function stats_rand_gen_noncentral_t(float `$df`, float `$xnonc`): float

Returns a random deviate from the non-central t-distribution with the degrees of freedom, `df`, and the non-centrality parameter, `xnonc`.

### Bağımsız Değişkenler

`df`
  The degrees of freedom
`xnonc`
  The non-centrality parameter

### Dönen Değerler

A random deviate

# stats_rand_gen_normal

(PECL stats >= 1.0.0)

stats_rand_gen_normal — Generates a single random deviate from a normal distribution

### Açıklama

function stats_rand_gen_normal(float `$av`, float `$sd`): float

Returns a random deviate from the normal distribution with mean, `av`, and standard deviation, `sd`.

### Bağımsız Değişkenler

`av`
  The mean of the normal distribution
`sd`
  The standard deviation of the normal distribution

### Dönen Değerler

A random deviate

# stats_rand_gen_t

(PECL stats >= 1.0.0)

stats_rand_gen_t — Generates a single random deviate from a t-distribution

### Açıklama

function stats_rand_gen_t(float `$df`): float

Returns a random deviate from the t-distribution with the degrees of freedom, `df`.

### Bağımsız Değişkenler

`df`
  The degrees of freedom

### Dönen Değerler

A random deviate

# stats_rand_get_seeds

(PECL stats >= 1.0.0)

stats_rand_get_seeds — Get the seed values of the random number generator

### Açıklama

function stats_rand_get_seeds(): array

Returns the current seed values of the random number generator

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an array of two integers.

# stats_rand_phrase_to_seeds

(PECL stats >= 1.0.0)

stats_rand_phrase_to_seeds — Generate two seeds for the RGN random number generator

### Açıklama

function stats_rand_phrase_to_seeds(string `$phrase`): array

Generate two seeds for the random number generator from a `phrase`.

### Bağımsız Değişkenler

`phrase`
  The input phrase

### Dönen Değerler

Returns an array of two integers.

# stats_rand_ranf

(PECL stats >= 1.0.0)

stats_rand_ranf — Generates a random floating point number between 0 and 1

### Açıklama

function stats_rand_ranf(): float

Returns a random floating point number from a uniform distribution between 0 (exclusive) and 1 (exclusive).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

A random floating point number

# stats_rand_setall

(PECL stats >= 1.0.0)

stats_rand_setall — Set seed values to the random generator

### Açıklama

function stats_rand_setall(int `$iseed1`, int `$iseed2`): void

Set `iseed1` and `iseed2` as seed values to the random generator used in statistic functions.

### Bağımsız Değişkenler

`iseed1`
  The value which is used as the random seed
`iseed2`
  The value which is used as the random seed

### Dönen Değerler

No values are returned.

# stats_skew

(PECL stats >= 1.0.0)

stats_skew — Computes the skewness of the data in the array

### Açıklama

function stats_skew(array `$a`): float

Returns the skewness of the values in `a`.

### Bağımsız Değişkenler

`a`
  The input array

### Dönen Değerler

Returns the skewness of the values in `a`, or `false` if `a` is empty or is not an array.

# stats_standard_deviation

(PECL stats >= 1.0.0)

stats_standard_deviation — Returns the standard deviation

### Açıklama

function stats_standard_deviation(array `$a`, bool `$sample` = `false`): float

Returns the standard deviation of the values in `a`.

### Bağımsız Değişkenler

`a`
  The array of data to find the standard deviation for. Note that all values of the array will be cast to float.
`sample`
  Indicates if `a` represents a sample of the population; defaults to `false`.

### Dönen Değerler

Returns the standard deviation on success; `false` on failure.

### Hatalar/İstisnalar

Raises an `E_WARNING` when there are fewer than 2 values in `a`.

# stats_stat_binomial_coef

(PECL stats >= 1.0.0)

stats_stat_binomial_coef — Returns a binomial coefficient

### Açıklama

function stats_stat_binomial_coef(int `$x`, int `$n`): float

Returns the binomial coefficient of `n` choose `x`.

### Bağımsız Değişkenler

`x`
  The number of chooses from the set
`n`
  The number of elements in the set

### Dönen Değerler

Returns the binomial coefficient

# stats_stat_correlation

(PECL stats >= 1.0.0)

stats_stat_correlation — Returns the Pearson correlation coefficient of two data sets

### Açıklama

function stats_stat_correlation(array `$arr1`, array `$arr2`): float

Returns the Pearson correlation coefficient between `arr1` and `arr2`.

### Bağımsız Değişkenler

`arr1`
  The first array
`arr2`
  The second array

### Dönen Değerler

Returns the Pearson correlation coefficient between `arr1` and `arr2`, or `false` on failure.

# stats_stat_factorial

(PECL stats >= 1.0.0)

stats_stat_factorial — Returns the factorial of an integer

### Açıklama

function stats_stat_factorial(int `$n`): float

Returns the factorial of an integer, `n`.

### Bağımsız Değişkenler

`n`
  An integer

### Dönen Değerler

The factorial of `n`.

# stats_stat_independent_t

(PECL stats >= 1.0.0)

stats_stat_independent_t — Returns the t-value from the independent two-sample t-test

### Açıklama

function stats_stat_independent_t(array `$arr1`, array `$arr2`): float

Returns the t-value of the independent two-sample t-test between `arr1` and `arr2`.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`arr1`
  The first set of values
`arr2`
  The second set of values

### Dönen Değerler

Returns the t-value, or `false` if failure.

# stats_stat_innerproduct

(PECL stats >= 1.0.0)

stats_stat_innerproduct — Returns the inner product of two vectors

### Açıklama

function stats_stat_innerproduct(array `$arr1`, array `$arr2`): float

Returns the inner product of `arr1` and `arr2`.

### Bağımsız Değişkenler

`arr1`
  The first array
`arr2`
  The second array

### Dönen Değerler

Returns the inner product of `arr1` and `arr2`, or `false` on failure.

# stats_stat_paired_t

(PECL stats >= 1.0.0)

stats_stat_paired_t — Returns the t-value of the dependent t-test for paired samples

### Açıklama

function stats_stat_paired_t(array `$arr1`, array `$arr2`): float

Returns the t-value of the dependent t-test for paired samples `arr1` and `arr2`.

### Bağımsız Değişkenler

`arr1`
  The first samples
`arr2`
  The second samples

### Dönen Değerler

Returns the t-value, or `false` if failure.

# stats_stat_percentile

(PECL stats >= 1.0.0)

stats_stat_percentile — Returns the percentile value

### Açıklama

function stats_stat_percentile(array `$arr`, float `$perc`): float

Returns the `perc`-th percentile value of the array `arr`.

### Bağımsız Değişkenler

`arr`
  The input array
`perc`
  The percentile

### Dönen Değerler

Returns the percentile values of the input array.

# stats_stat_powersum

(PECL stats >= 1.0.0)

stats_stat_powersum — Returns the power sum of a vector

### Açıklama

function stats_stat_powersum(array `$arr`, float `$power`): float

Returns the sum of the `power`-th power of a vector represented as an array `arr`.

### Bağımsız Değişkenler

`arr`
  The input array
`power`
  The power

### Dönen Değerler

Returns the power sum of the input array.

# stats_variance

(PECL stats >= 1.0.0)

stats_variance — Returns the variance

### Açıklama

function stats_variance(array `$a`, bool `$sample` = `false`): float

Returns the variance of the values in `a`.

### Bağımsız Değişkenler

`a`
  The array of data to find the standard deviation for. Note that all values of the array will be cast to float.
`sample`
  Indicates if `a` represents a sample of the population; defaults to `false`.

### Dönen Değerler

Returns the variance on success; `false` on failure.

## İçindekiler

- stats_absolute_deviation — Returns the absolute deviation of an array of values
- stats_cdf_beta — Calculates any one parameter of the beta distribution given values for the others
- stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others
- stats_cdf_cauchy — Calculates any one parameter of the Cauchy distribution given values for the others
- stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others
- stats_cdf_exponential — Calculates any one parameter of the exponential distribution given values for the others
- stats_cdf_f — Calculates any one parameter of the F distribution given values for the others
- stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others
- stats_cdf_laplace — Calculates any one parameter of the Laplace distribution given values for the others
- stats_cdf_logistic — Calculates any one parameter of the logistic distribution given values for the others
- stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others
- stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others
- stats_cdf_noncentral_f — Calculates any one parameter of the non-central F distribution given values for the others
- stats_cdf_noncentral_t — Calculates any one parameter of the non-central t-distribution give values for the others
- stats_cdf_normal — Calculates any one parameter of the normal distribution given values for the others
- stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others
- stats_cdf_t — Calculates any one parameter of the t-distribution given values for the others
- stats_cdf_uniform — Calculates any one parameter of the uniform distribution given values for the others
- stats_cdf_weibull — Calculates any one parameter of the Weibull distribution given values for the others
- stats_covariance — Computes the covariance of two data sets
- stats_dens_beta — Probability density function of the beta distribution
- stats_dens_cauchy — Probability density function of the Cauchy distribution
- stats_dens_chisquare — Probability density function of the chi-square distribution
- stats_dens_exponential — Probability density function of the exponential distribution
- stats_dens_f — Probability density function of the F distribution
- stats_dens_gamma — Probability density function of the gamma distribution
- stats_dens_laplace — Probability density function of the Laplace distribution
- stats_dens_logistic — Probability density function of the logistic distribution
- stats_dens_normal — Probability density function of the normal distribution
- stats_dens_pmf_binomial — Probability mass function of the binomial distribution
- stats_dens_pmf_hypergeometric — Probability mass function of the hypergeometric distribution
- stats_dens_pmf_negative_binomial — Probability mass function of the negative binomial distribution
- stats_dens_pmf_poisson — Probability mass function of the Poisson distribution
- stats_dens_t — Probability density function of the t-distribution
- stats_dens_uniform — Probability density function of the uniform distribution
- stats_dens_weibull — Probability density function of the Weibull distribution
- stats_harmonic_mean — Returns the harmonic mean of an array of values
- stats_kurtosis — Computes the kurtosis of the data in the array
- stats_rand_gen_beta — Generates a random deviate from the beta distribution
- stats_rand_gen_chisquare — Generates a random deviate from the chi-square distribution
- stats_rand_gen_exponential — Generates a random deviate from the exponential distribution
- stats_rand_gen_f — Generates a random deviate from the F distribution
- stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)
- stats_rand_gen_gamma — Generates a random deviate from the gamma distribution
- stats_rand_gen_ibinomial — Generates a random deviate from the binomial distribution
- stats_rand_gen_ibinomial_negative — Generates a random deviate from the negative binomial distribution
- stats_rand_gen_int — Generates random integer between 1 and 2147483562
- stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution
- stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
- stats_rand_gen_noncentral_chisquare — Generates a random deviate from the non-central chi-square distribution
- stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F distribution
- stats_rand_gen_noncentral_t — Generates a single random deviate from a non-central t-distribution
- stats_rand_gen_normal — Generates a single random deviate from a normal distribution
- stats_rand_gen_t — Generates a single random deviate from a t-distribution
- stats_rand_get_seeds — Get the seed values of the random number generator
- stats_rand_phrase_to_seeds — Generate two seeds for the RGN random number generator
- stats_rand_ranf — Generates a random floating point number between 0 and 1
- stats_rand_setall — Set seed values to the random generator
- stats_skew — Computes the skewness of the data in the array
- stats_standard_deviation — Returns the standard deviation
- stats_stat_binomial_coef — Returns a binomial coefficient
- stats_stat_correlation — Returns the Pearson correlation coefficient of two data sets
- stats_stat_factorial — Returns the factorial of an integer
- stats_stat_independent_t — Returns the t-value from the independent two-sample t-test
- stats_stat_innerproduct — Returns the inner product of two vectors
- stats_stat_paired_t — Returns the t-value of the dependent t-test for paired samples
- stats_stat_percentile — Returns the percentile value
- stats_stat_powersum — Returns the power sum of a vector
- stats_variance — Returns the variance

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Statistic İşlevleri
  - stats_absolute_deviation — Returns the absolute deviation of an array of values
  - stats_cdf_beta — Calculates any one parameter of the beta distribution given values for the others
  - stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others
  - stats_cdf_cauchy — Calculates any one parameter of the Cauchy distribution given values for the others
  - stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others
  - stats_cdf_exponential — Calculates any one parameter of the exponential distribution given values for the others
  - stats_cdf_f — Calculates any one parameter of the F distribution given values for the others
  - stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others
  - stats_cdf_laplace — Calculates any one parameter of the Laplace distribution given values for the others
  - stats_cdf_logistic — Calculates any one parameter of the logistic distribution given values for the others
  - stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others
  - stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others
  - stats_cdf_noncentral_f — Calculates any one parameter of the non-central F distribution given values for the others
  - stats_cdf_noncentral_t — Calculates any one parameter of the non-central t-distribution give values for the others
  - stats_cdf_normal — Calculates any one parameter of the normal distribution given values for the others
  - stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others
  - stats_cdf_t — Calculates any one parameter of the t-distribution given values for the others
  - stats_cdf_uniform — Calculates any one parameter of the uniform distribution given values for the others
  - stats_cdf_weibull — Calculates any one parameter of the Weibull distribution given values for the others
  - stats_covariance — Computes the covariance of two data sets
  - stats_dens_beta — Probability density function of the beta distribution
  - stats_dens_cauchy — Probability density function of the Cauchy distribution
  - stats_dens_chisquare — Probability density function of the chi-square distribution
  - stats_dens_exponential — Probability density function of the exponential distribution
  - stats_dens_f — Probability density function of the F distribution
  - stats_dens_gamma — Probability density function of the gamma distribution
  - stats_dens_laplace — Probability density function of the Laplace distribution
  - stats_dens_logistic — Probability density function of the logistic distribution
  - stats_dens_normal — Probability density function of the normal distribution
  - stats_dens_pmf_binomial — Probability mass function of the binomial distribution
  - stats_dens_pmf_hypergeometric — Probability mass function of the hypergeometric distribution
  - stats_dens_pmf_negative_binomial — Probability mass function of the negative binomial distribution
  - stats_dens_pmf_poisson — Probability mass function of the Poisson distribution
  - stats_dens_t — Probability density function of the t-distribution
  - stats_dens_uniform — Probability density function of the uniform distribution
  - stats_dens_weibull — Probability density function of the Weibull distribution
  - stats_harmonic_mean — Returns the harmonic mean of an array of values
  - stats_kurtosis — Computes the kurtosis of the data in the array
  - stats_rand_gen_beta — Generates a random deviate from the beta distribution
  - stats_rand_gen_chisquare — Generates a random deviate from the chi-square distribution
  - stats_rand_gen_exponential — Generates a random deviate from the exponential distribution
  - stats_rand_gen_f — Generates a random deviate from the F distribution
  - stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)
  - stats_rand_gen_gamma — Generates a random deviate from the gamma distribution
  - stats_rand_gen_ibinomial — Generates a random deviate from the binomial distribution
  - stats_rand_gen_ibinomial_negative — Generates a random deviate from the negative binomial distribution
  - stats_rand_gen_int — Generates random integer between 1 and 2147483562
  - stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution
  - stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
  - stats_rand_gen_noncentral_chisquare — Generates a random deviate from the non-central chi-square distribution
  - stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F distribution
  - stats_rand_gen_noncentral_t — Generates a single random deviate from a non-central t-distribution
  - stats_rand_gen_normal — Generates a single random deviate from a normal distribution
  - stats_rand_gen_t — Generates a single random deviate from a t-distribution
  - stats_rand_get_seeds — Get the seed values of the random number generator
  - stats_rand_phrase_to_seeds — Generate two seeds for the RGN random number generator
  - stats_rand_ranf — Generates a random floating point number between 0 and 1
  - stats_rand_setall — Set seed values to the random generator
  - stats_skew — Computes the skewness of the data in the array
  - stats_standard_deviation — Returns the standard deviation
  - stats_stat_binomial_coef — Returns a binomial coefficient
  - stats_stat_correlation — Returns the Pearson correlation coefficient of two data sets
  - stats_stat_factorial — Returns the factorial of an integer
  - stats_stat_independent_t — Returns the t-value from the independent two-sample t-test
  - stats_stat_innerproduct — Returns the inner product of two vectors
  - stats_stat_paired_t — Returns the t-value of the dependent t-test for paired samples
  - stats_stat_percentile — Returns the percentile value
  - stats_stat_powersum — Returns the power sum of a vector
  - stats_variance — Returns the variance

# Technical Analysis for Traders

# Giriş

The trader extension is a free open source stock library based on TA-Lib. It's dedicated to trading software developers requiring to perform technical analysis of financial market data. Alongside many indicators like ADX, MACD, RSI, Stochastic, TRIX the candlestick pattern recognition and several vector arithmetic and algebraic functions are present.

Calculations can be done in two modes - TA-Lib and Metastock. Changing it using trader_set_compat() will affect the way some trader functions work.

Some trader functions provide different results depending of the "starting point" of the data being involved. This is often referred as a function having memories. An example of such function is the Exponential Moving Average. It is possible to control the unstable period (the amount of data to strip off) using trader_set_unstable_period() function.

Extended documentation about indicators, formulas and implementations in other programming languages can be found under » https://ta-lib.org/.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

The trader extension is based on » TA-Lib. TA-Lib is fully integrated into the extension, therefore no external libraries are needed.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/trader.

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

Trader Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
trader.real_precision | 3 | `INI_ALL` | Since trader 0.2.1
trader.real_round_mode | HALF_DOWN | `INI_ALL` | Since trader 0.3.0

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`trader.real_precision` int

  All the values in the returned arrays will be rounded to this precision. However the calculations inside TA-Lib happen with unrounded values.

`trader.real_round_mode` string

  Controls the trader real rounding policy. Valid values are `HALF_UP`, `HALF_DOWN`, `HALF_EVEN` and `HALF_ODD`. The behaviour is identical to the round() function used with the mode argument.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`TRADER_MA_TYPE_SMA` (int)
`TRADER_MA_TYPE_EMA` (int)
`TRADER_MA_TYPE_WMA` (int)
`TRADER_MA_TYPE_DEMA` (int)
`TRADER_MA_TYPE_TEMA` (int)
`TRADER_MA_TYPE_TRIMA` (int)
`TRADER_MA_TYPE_KAMA` (int)
`TRADER_MA_TYPE_MAMA` (int)
`TRADER_MA_TYPE_T3` (int)
`TRADER_REAL_MIN` (float)
`TRADER_REAL_MAX` (float)
`TRADER_FUNC_UNST_ADX` (int)
`TRADER_FUNC_UNST_ADXR` (int)
`TRADER_FUNC_UNST_ATR` (int)
`TRADER_FUNC_UNST_CMO` (int)
`TRADER_FUNC_UNST_DX` (int)
`TRADER_FUNC_UNST_EMA` (int)
`TRADER_FUNC_UNST_HT_DCPERIOD` (int)
`TRADER_FUNC_UNST_HT_DCPHASE` (int)
`TRADER_FUNC_UNST_HT_PHASOR` (int)
`TRADER_FUNC_UNST_HT_SINE` (int)
`TRADER_FUNC_UNST_HT_TRENDLINE` (int)
`TRADER_FUNC_UNST_HT_TRENDMODE` (int)
`TRADER_FUNC_UNST_KAMA` (int)
`TRADER_FUNC_UNST_MAMA` (int)
`TRADER_FUNC_UNST_MFI` (int)
`TRADER_FUNC_UNST_MINUS_DI` (int)
`TRADER_FUNC_UNST_MINUS_DM` (int)
`TRADER_FUNC_UNST_NATR` (int)
`TRADER_FUNC_UNST_PLUS_DI` (int)
`TRADER_FUNC_UNST_PLUS_DM` (int)
`TRADER_FUNC_UNST_RSI` (int)
`TRADER_FUNC_UNST_STOCHRSI` (int)
`TRADER_FUNC_UNST_T3` (int)
`TRADER_FUNC_UNST_ALL` (int)
`TRADER_FUNC_UNST_NONE` (int)
`TRADER_COMPATIBILITY_DEFAULT` (int)
`TRADER_COMPATIBILITY_METASTOCK` (int)
`TRADER_ERR_SUCCESS` (int)
`TRADER_ERR_LIB_NOT_INITIALIZE` (int)
`TRADER_ERR_BAD_PARAM` (int)
`TRADER_ERR_ALLOC_ERR` (int)
`TRADER_ERR_GROUP_NOT_FOUND` (int)
`TRADER_ERR_FUNC_NOT_FOUND` (int)
`TRADER_ERR_INVALID_HANDLE` (int)
`TRADER_ERR_INVALID_PARAM_HOLDER` (int)
`TRADER_ERR_INVALID_PARAM_HOLDER_TYPE` (int)
`TRADER_ERR_INVALID_PARAM_FUNCTION` (int)
`TRADER_ERR_INPUT_NOT_ALL_INITIALIZE` (int)
`TRADER_ERR_OUTPUT_NOT_ALL_INITIALIZE` (int)
`TRADER_ERR_OUT_OF_RANGE_START_INDEX` (int)
`TRADER_ERR_OUT_OF_RANGE_END_INDEX` (int)
`TRADER_ERR_INVALID_LIST_TYPE` (int)
`TRADER_ERR_BAD_OBJECT` (int)
`TRADER_ERR_NOT_SUPPORTED` (int)
`TRADER_ERR_INTERNAL_ERROR` (int)
`TRADER_ERR_UNKNOWN_ERROR` (int)

# Trader İşlevleri

# trader_acos

(PECL trader >= 0.2.0)

trader_acos — Vector Trigonometric ACos

### Açıklama

function trader_acos(array `$real`): array

Calculates the arc cosine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ad

(PECL trader >= 0.2.0)

trader_ad — Chaikin A/D Line

### Açıklama

function trader_ad(
array `$high`,
array `$low`,
array `$close`,
array `$volume`
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`volume`

  Volume traded, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_add

(PECL trader >= 0.2.0)

trader_add — Vector Arithmetic Add

### Açıklama

function trader_add(array `$real0`, array `$real1`): array

Calculates the vector addition of `real0` to `real1` and returns the resulting vector.

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_adosc

(PECL trader >= 0.2.0)

trader_adosc — Chaikin A/D Oscillator

### Açıklama

function trader_adosc(
array `$high`,
array `$low`,
array `$close`,
array `$volume`,
int `$fastPeriod` = ?,
int `$slowPeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`volume`

  Volume traded, array of real values.

`fastPeriod`

  Number of period for the fast MA. Valid range from 2 to 100000.

`slowPeriod`

  Number of period for the slow MA. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_adx

(PECL trader >= 0.2.0)

trader_adx — Average Directional Movement Index

### Açıklama

function trader_adx(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_adxr

(PECL trader >= 0.2.0)

trader_adxr — Average Directional Movement Index Rating

### Açıklama

function trader_adxr(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_apo

(PECL trader >= 0.2.0)

trader_apo — Absolute Price Oscillator

### Açıklama

function trader_apo(
array `$real`,
int `$fastPeriod` = ?,
int `$slowPeriod` = ?,
int `$mAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`fastPeriod`

  Number of period for the fast MA. Valid range from 2 to 100000.

`slowPeriod`

  Number of period for the slow MA. Valid range from 2 to 100000.

`mAType`

  Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_aroon

(PECL trader >= 0.2.0)

trader_aroon — Aroon

### Açıklama

function trader_aroon(array `$high`, array `$low`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_aroonosc

(PECL trader >= 0.2.0)

trader_aroonosc — Aroon Oscillator

### Açıklama

function trader_aroonosc(array `$high`, array `$low`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_asin

(PECL trader >= 0.2.0)

trader_asin — Vector Trigonometric ASin

### Açıklama

function trader_asin(array `$real`): array

Calculates the arc sine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_atan

(PECL trader >= 0.2.0)

trader_atan — Vector Trigonometric ATan

### Açıklama

function trader_atan(array `$real`): array

Calculates the arc tangent for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_atr

(PECL trader >= 0.2.0)

trader_atr — Average True Range

### Açıklama

function trader_atr(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_avgprice

(PECL trader >= 0.2.0)

trader_avgprice — Average Price

### Açıklama

function trader_avgprice(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_bbands

(PECL trader >= 0.2.0)

trader_bbands — Bollinger Bands

### Açıklama

function trader_bbands(
array `$real`,
int `$timePeriod` = ?,
float `$nbDevUp` = ?,
float `$nbDevDn` = ?,
int `$mAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`nbDevUp`

  Deviation multiplier for upper band. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

`nbDevDn`

  Deviation multiplier for lower band. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

`mAType`

  Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_beta

(PECL trader >= 0.2.0)

trader_beta — Beta

### Açıklama

function trader_beta(array `$real0`, array `$real1`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_bop

(PECL trader >= 0.2.0)

trader_bop — Balance Of Power

### Açıklama

function trader_bop(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cci

(PECL trader >= 0.2.0)

trader_cci — Commodity Channel Index

### Açıklama

function trader_cci(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl2crows

(PECL trader >= 0.2.0)

trader_cdl2crows — Two Crows

### Açıklama

function trader_cdl2crows(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3blackcrows

(PECL trader >= 0.2.0)

trader_cdl3blackcrows — Three Black Crows

### Açıklama

function trader_cdl3blackcrows(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3inside

(PECL trader >= 0.2.0)

trader_cdl3inside — Three Inside Up/Down

### Açıklama

function trader_cdl3inside(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3linestrike

(PECL trader >= 0.2.0)

trader_cdl3linestrike — Three-Line Strike

### Açıklama

function trader_cdl3linestrike(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3outside

(PECL trader >= 0.2.0)

trader_cdl3outside — Three Outside Up/Down

### Açıklama

function trader_cdl3outside(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3starsinsouth

(PECL trader >= 0.2.0)

trader_cdl3starsinsouth — Three Stars In The South

### Açıklama

function trader_cdl3starsinsouth(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdl3whitesoldiers

(PECL trader >= 0.2.0)

trader_cdl3whitesoldiers — Three Advancing White Soldiers

### Açıklama

function trader_cdl3whitesoldiers(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlabandonedbaby

(PECL trader >= 0.2.0)

trader_cdlabandonedbaby — Abandoned Baby

### Açıklama

function trader_cdlabandonedbaby(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdladvanceblock

(PECL trader >= 0.2.0)

trader_cdladvanceblock — Advance Block

### Açıklama

function trader_cdladvanceblock(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlbelthold

(PECL trader >= 0.2.0)

trader_cdlbelthold — Belt-hold

### Açıklama

function trader_cdlbelthold(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlbreakaway

(PECL trader >= 0.2.0)

trader_cdlbreakaway — Breakaway

### Açıklama

function trader_cdlbreakaway(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlclosingmarubozu

(PECL trader >= 0.2.0)

trader_cdlclosingmarubozu — Closing Marubozu

### Açıklama

function trader_cdlclosingmarubozu(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlconcealbabyswall

(PECL trader >= 0.2.0)

trader_cdlconcealbabyswall — Concealing Baby Swallow

### Açıklama

function trader_cdlconcealbabyswall(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlcounterattack

(PECL trader >= 0.2.0)

trader_cdlcounterattack — Counterattack

### Açıklama

function trader_cdlcounterattack(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdldarkcloudcover

(PECL trader >= 0.2.0)

trader_cdldarkcloudcover — Dark Cloud Cover

### Açıklama

function trader_cdldarkcloudcover(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdldoji

(PECL trader >= 0.2.0)

trader_cdldoji — Doji

### Açıklama

function trader_cdldoji(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdldojistar

(PECL trader >= 0.2.0)

trader_cdldojistar — Doji Star

### Açıklama

function trader_cdldojistar(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdldragonflydoji

(PECL trader >= 0.2.0)

trader_cdldragonflydoji — Dragonfly Doji

### Açıklama

function trader_cdldragonflydoji(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlengulfing

(PECL trader >= 0.2.0)

trader_cdlengulfing — Engulfing Pattern

### Açıklama

function trader_cdlengulfing(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdleveningdojistar

(PECL trader >= 0.2.0)

trader_cdleveningdojistar — Evening Doji Star

### Açıklama

function trader_cdleveningdojistar(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdleveningstar

(PECL trader >= 0.2.0)

trader_cdleveningstar — Evening Star

### Açıklama

function trader_cdleveningstar(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlgapsidesidewhite

(PECL trader >= 0.2.0)

trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines

### Açıklama

function trader_cdlgapsidesidewhite(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlgravestonedoji

(PECL trader >= 0.2.0)

trader_cdlgravestonedoji — Gravestone Doji

### Açıklama

function trader_cdlgravestonedoji(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhammer

(PECL trader >= 0.2.0)

trader_cdlhammer — Hammer

### Açıklama

function trader_cdlhammer(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhangingman

(PECL trader >= 0.2.0)

trader_cdlhangingman — Hanging Man

### Açıklama

function trader_cdlhangingman(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlharami

(PECL trader >= 0.2.0)

trader_cdlharami — Harami Pattern

### Açıklama

function trader_cdlharami(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlharamicross

(PECL trader >= 0.2.0)

trader_cdlharamicross — Harami Cross Pattern

### Açıklama

function trader_cdlharamicross(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhighwave

(PECL trader >= 0.2.0)

trader_cdlhighwave — High-Wave Candle

### Açıklama

function trader_cdlhighwave(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhikkake

(PECL trader >= 0.2.0)

trader_cdlhikkake — Hikkake Pattern

### Açıklama

function trader_cdlhikkake(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhikkakemod

(PECL trader >= 0.2.0)

trader_cdlhikkakemod — Modified Hikkake Pattern

### Açıklama

function trader_cdlhikkakemod(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlhomingpigeon

(PECL trader >= 0.2.0)

trader_cdlhomingpigeon — Homing Pigeon

### Açıklama

function trader_cdlhomingpigeon(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlidentical3crows

(PECL trader >= 0.2.0)

trader_cdlidentical3crows — Identical Three Crows

### Açıklama

function trader_cdlidentical3crows(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlinneck

(PECL trader >= 0.2.0)

trader_cdlinneck — In-Neck Pattern

### Açıklama

function trader_cdlinneck(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlinvertedhammer

(PECL trader >= 0.2.0)

trader_cdlinvertedhammer — Inverted Hammer

### Açıklama

function trader_cdlinvertedhammer(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlkicking

(PECL trader >= 0.2.0)

trader_cdlkicking — Kicking

### Açıklama

function trader_cdlkicking(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlkickingbylength

(PECL trader >= 0.2.0)

trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu

### Açıklama

function trader_cdlkickingbylength(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlladderbottom

(PECL trader >= 0.2.0)

trader_cdlladderbottom — Ladder Bottom

### Açıklama

function trader_cdlladderbottom(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdllongleggeddoji

(PECL trader >= 0.2.0)

trader_cdllongleggeddoji — Long Legged Doji

### Açıklama

function trader_cdllongleggeddoji(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdllongline

(PECL trader >= 0.2.0)

trader_cdllongline — Long Line Candle

### Açıklama

function trader_cdllongline(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlmarubozu

(PECL trader >= 0.2.0)

trader_cdlmarubozu — Marubozu

### Açıklama

function trader_cdlmarubozu(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlmatchinglow

(PECL trader >= 0.2.0)

trader_cdlmatchinglow — Matching Low

### Açıklama

function trader_cdlmatchinglow(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlmathold

(PECL trader >= 0.2.0)

trader_cdlmathold — Mat Hold

### Açıklama

function trader_cdlmathold(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlmorningdojistar

(PECL trader >= 0.2.0)

trader_cdlmorningdojistar — Morning Doji Star

### Açıklama

function trader_cdlmorningdojistar(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlmorningstar

(PECL trader >= 0.2.0)

trader_cdlmorningstar — Morning Star

### Açıklama

function trader_cdlmorningstar(
array `$open`,
array `$high`,
array `$low`,
array `$close`,
float `$penetration` = ?
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`penetration`

  Percentage of penetration of a candle within another candle.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlonneck

(PECL trader >= 0.2.0)

trader_cdlonneck — On-Neck Pattern

### Açıklama

function trader_cdlonneck(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlpiercing

(PECL trader >= 0.2.0)

trader_cdlpiercing — Piercing Pattern

### Açıklama

function trader_cdlpiercing(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlrickshawman

(PECL trader >= 0.2.0)

trader_cdlrickshawman — Rickshaw Man

### Açıklama

function trader_cdlrickshawman(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlrisefall3methods

(PECL trader >= 0.2.0)

trader_cdlrisefall3methods — Rising/Falling Three Methods

### Açıklama

function trader_cdlrisefall3methods(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlseparatinglines

(PECL trader >= 0.2.0)

trader_cdlseparatinglines — Separating Lines

### Açıklama

function trader_cdlseparatinglines(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlshootingstar

(PECL trader >= 0.2.0)

trader_cdlshootingstar — Shooting Star

### Açıklama

function trader_cdlshootingstar(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlshortline

(PECL trader >= 0.2.0)

trader_cdlshortline — Short Line Candle

### Açıklama

function trader_cdlshortline(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlspinningtop

(PECL trader >= 0.2.0)

trader_cdlspinningtop — Spinning Top

### Açıklama

function trader_cdlspinningtop(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlstalledpattern

(PECL trader >= 0.2.0)

trader_cdlstalledpattern — Stalled Pattern

### Açıklama

function trader_cdlstalledpattern(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlsticksandwich

(PECL trader >= 0.2.0)

trader_cdlsticksandwich — Stick Sandwich

### Açıklama

function trader_cdlsticksandwich(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdltakuri

(PECL trader >= 0.2.0)

trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)

### Açıklama

function trader_cdltakuri(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdltasukigap

(PECL trader >= 0.2.0)

trader_cdltasukigap — Tasuki Gap

### Açıklama

function trader_cdltasukigap(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlthrusting

(PECL trader >= 0.2.0)

trader_cdlthrusting — Thrusting Pattern

### Açıklama

function trader_cdlthrusting(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdltristar

(PECL trader >= 0.2.0)

trader_cdltristar — Tristar Pattern

### Açıklama

function trader_cdltristar(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlunique3river

(PECL trader >= 0.2.0)

trader_cdlunique3river — Unique 3 River

### Açıklama

function trader_cdlunique3river(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlupsidegap2crows

(PECL trader >= 0.2.0)

trader_cdlupsidegap2crows — Upside Gap Two Crows

### Açıklama

function trader_cdlupsidegap2crows(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cdlxsidegap3methods

(PECL trader >= 0.2.0)

trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods

### Açıklama

function trader_cdlxsidegap3methods(
array `$open`,
array `$high`,
array `$low`,
array `$close`
): array

### Bağımsız Değişkenler

`open`

  Opening price, array of real values.

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ceil

(PECL trader >= 0.2.0)

trader_ceil — Vector Ceil

### Açıklama

function trader_ceil(array `$real`): array

Calculates the next highest integer for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cmo

(PECL trader >= 0.2.0)

trader_cmo — Chande Momentum Oscillator

### Açıklama

function trader_cmo(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_correl

(PECL trader >= 0.2.0)

trader_correl — Pearson's Correlation Coefficient (r)

### Açıklama

function trader_correl(array `$real0`, array `$real1`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cos

(PECL trader >= 0.2.0)

trader_cos — Vector Trigonometric Cos

### Açıklama

function trader_cos(array `$real`): array

Calculates the cosine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_cosh

(PECL trader >= 0.2.0)

trader_cosh — Vector Trigonometric Cosh

### Açıklama

function trader_cosh(array `$real`): array

Calculates the hyperbolic cosine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_dema

(PECL trader >= 0.2.0)

trader_dema — Double Exponential Moving Average

### Açıklama

function trader_dema(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_div

(PECL trader >= 0.2.0)

trader_div — Vector Arithmetic Div

### Açıklama

function trader_div(array `$real0`, array `$real1`): array

Divides each value from `real0` by the corresponding value from `real1` and returns the resulting array.

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_dx

(PECL trader >= 0.2.0)

trader_dx — Directional Movement Index

### Açıklama

function trader_dx(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ema

(PECL trader >= 0.2.0)

trader_ema — Exponential Moving Average

### Açıklama

function trader_ema(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_errno

(PECL trader >= 0.3.0)

trader_errno — Get error code

### Açıklama

function trader_errno(): int

Get error code of the last operation.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the error code identified by one of the TRADER_ERR_* constants.

# trader_exp

(PECL trader >= 0.2.0)

trader_exp — Vector Arithmetic Exp

### Açıklama

function trader_exp(array `$real`): array

Calculates `e` raised to the power of each value in `real`. Returns an array with the calculated data.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_floor

(PECL trader >= 0.2.0)

trader_floor — Vector Floor

### Açıklama

function trader_floor(array `$real`): array

Calculates the next lowest integer for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_get_compat

(PECL trader >= 0.2.2)

trader_get_compat — Get compatibility mode

### Açıklama

function trader_get_compat(): int

Get compatibility mode which affects the way calculations are done by all the extension functions.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the compatibility mode id which can be identified by TRADER_COMPATIBILITY_* series of constants.

# trader_get_unstable_period

(PECL trader >= 0.2.2)

trader_get_unstable_period — Get unstable period

### Açıklama

function trader_get_unstable_period(int `$functionId`): int

Get unstable period factor for a particular function.

### Bağımsız Değişkenler

`functionId`

  Function ID the factor to be read for. TRADER_FUNC_UNST_* series of constants should be used.

### Dönen Değerler

Returns the unstable period factor for the corresponding function.

# trader_ht_dcperiod

(PECL trader >= 0.2.0)

trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period

### Açıklama

function trader_ht_dcperiod(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ht_dcphase

(PECL trader >= 0.2.0)

trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase

### Açıklama

function trader_ht_dcphase(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ht_phasor

(PECL trader >= 0.2.0)

trader_ht_phasor — Hilbert Transform - Phasor Components

### Açıklama

function trader_ht_phasor(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ht_sine

(PECL trader >= 0.2.0)

trader_ht_sine — Hilbert Transform - SineWave

### Açıklama

function trader_ht_sine(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ht_trendline

(PECL trader >= 0.2.0)

trader_ht_trendline — Hilbert Transform - Instantaneous Trendline

### Açıklama

function trader_ht_trendline(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ht_trendmode

(PECL trader >= 0.2.0)

trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode

### Açıklama

function trader_ht_trendmode(array `$real`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_kama

(PECL trader >= 0.2.0)

trader_kama — Kaufman Adaptive Moving Average

### Açıklama

function trader_kama(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_linearreg

(PECL trader >= 0.2.0)

trader_linearreg — Linear Regression

### Açıklama

function trader_linearreg(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_linearreg_angle

(PECL trader >= 0.2.0)

trader_linearreg_angle — Linear Regression Angle

### Açıklama

function trader_linearreg_angle(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_linearreg_intercept

(PECL trader >= 0.2.0)

trader_linearreg_intercept — Linear Regression Intercept

### Açıklama

function trader_linearreg_intercept(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_linearreg_slope

(PECL trader >= 0.2.0)

trader_linearreg_slope — Linear Regression Slope

### Açıklama

function trader_linearreg_slope(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ln

(PECL trader >= 0.2.0)

trader_ln — Vector Log Natural

### Açıklama

function trader_ln(array `$real`): array

Calculates the natural logarithm for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_log10

(PECL trader >= 0.2.0)

trader_log10 — Vector Log10

### Açıklama

function trader_log10(array `$real`): array

Calculates the base-10 logarithm for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ma

(PECL trader >= 0.2.0)

trader_ma — Moving average

### Açıklama

function trader_ma(array `$real`, int `$timePeriod` = ?, int `$mAType` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`mAType`

  Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_macd

(PECL trader >= 0.2.0)

trader_macd — Moving Average Convergence/Divergence

### Açıklama

function trader_macd(
array `$real`,
int `$fastPeriod` = ?,
int `$slowPeriod` = ?,
int `$signalPeriod` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`fastPeriod`

  Number of period for the fast MA. Valid range from 2 to 100000.

`slowPeriod`

  Number of period for the slow MA. Valid range from 2 to 100000.

`signalPeriod`

  Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_macdext

(PECL trader >= 0.2.0)

trader_macdext — MACD with controllable MA type

### Açıklama

function trader_macdext(
array `$real`,
int `$fastPeriod` = ?,
int `$fastMAType` = ?,
int `$slowPeriod` = ?,
int `$slowMAType` = ?,
int `$signalPeriod` = ?,
int `$signalMAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`fastPeriod`

  Number of period for the fast MA. Valid range from 2 to 100000.

`fastMAType`

  Type of Moving Average for fast MA. TRADER_MA_TYPE_* series of constants should be used.

`slowPeriod`

  Number of period for the slow MA. Valid range from 2 to 100000.

`slowMAType`

  Type of Moving Average for slow MA. TRADER_MA_TYPE_* series of constants should be used.

`signalPeriod`

  Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

`signalMAType`

  Type of Moving Average for signal line. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_macdfix

(PECL trader >= 0.2.0)

trader_macdfix — Moving Average Convergence/Divergence Fix 12/26

### Açıklama

function trader_macdfix(array `$real`, int `$signalPeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`signalPeriod`

  Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_mama

(PECL trader >= 0.2.0)

trader_mama — MESA Adaptive Moving Average

### Açıklama

function trader_mama(array `$real`, float `$fastLimit` = ?, float `$slowLimit` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`fastLimit`

  Upper limit use in the adaptive algorithm. Valid range from 0.01 to 0.99.

`slowLimit`

  Lower limit use in the adaptive algorithm. Valid range from 0.01 to 0.99.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_mavp

(PECL trader >= 0.2.0)

trader_mavp — Moving average with variable period

### Açıklama

function trader_mavp(
array `$real`,
array `$periods`,
int `$minPeriod` = ?,
int `$maxPeriod` = ?,
int `$mAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`periods`

  Array of real values.

`minPeriod`

  Value less than minimum will be changed to Minimum period. Valid range from 2 to 100000

`maxPeriod`

  Value higher than minimum will be changed to Maximum period. Valid range from 2 to 100000

`mAType`

  Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_max

(PECL trader >= 0.2.0)

trader_max — Highest value over a specified period

### Açıklama

function trader_max(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_maxindex

(PECL trader >= 0.2.0)

trader_maxindex — Index of highest value over a specified period

### Açıklama

function trader_maxindex(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_medprice

(PECL trader >= 0.2.0)

trader_medprice — Median Price

### Açıklama

function trader_medprice(array `$high`, array `$low`): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_mfi

(PECL trader >= 0.2.0)

trader_mfi — Money Flow Index

### Açıklama

function trader_mfi(
array `$high`,
array `$low`,
array `$close`,
array `$volume`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`volume`

  Volume traded, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_midpoint

(PECL trader >= 0.2.0)

trader_midpoint — MidPoint over period

### Açıklama

function trader_midpoint(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_midprice

(PECL trader >= 0.2.0)

trader_midprice — Midpoint Price over period

### Açıklama

function trader_midprice(array `$high`, array `$low`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_min

(PECL trader >= 0.2.0)

trader_min — Lowest value over a specified period

### Açıklama

function trader_min(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_minindex

(PECL trader >= 0.2.0)

trader_minindex — Index of lowest value over a specified period

### Açıklama

function trader_minindex(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_minmax

(PECL trader >= 0.2.0)

trader_minmax — Lowest and highest values over a specified period

### Açıklama

function trader_minmax(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_minmaxindex

(PECL trader >= 0.2.0)

trader_minmaxindex — Indexes of lowest and highest values over a specified period

### Açıklama

function trader_minmaxindex(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_minus_di

(PECL trader >= 0.2.0)

trader_minus_di — Minus Directional Indicator

### Açıklama

function trader_minus_di(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_minus_dm

(PECL trader >= 0.2.0)

trader_minus_dm — Minus Directional Movement

### Açıklama

function trader_minus_dm(array `$high`, array `$low`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_mom

(PECL trader >= 0.2.0)

trader_mom — Momentum

### Açıklama

function trader_mom(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_mult

(PECL trader >= 0.2.0)

trader_mult — Vector Arithmetic Mult

### Açıklama

function trader_mult(array `$real0`, array `$real1`): array

Calculates the vector dot product of `real0` with `real1` and returns the resulting vector.

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_natr

(PECL trader >= 0.2.0)

trader_natr — Normalized Average True Range

### Açıklama

function trader_natr(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_obv

(PECL trader >= 0.2.0)

trader_obv — On Balance Volume

### Açıklama

function trader_obv(array `$real`, array `$volume`): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`volume`

  Volume traded, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_plus_di

(PECL trader >= 0.2.0)

trader_plus_di — Plus Directional Indicator

### Açıklama

function trader_plus_di(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_plus_dm

(PECL trader >= 0.2.0)

trader_plus_dm — Plus Directional Movement

### Açıklama

function trader_plus_dm(array `$high`, array `$low`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ppo

(PECL trader >= 0.2.0)

trader_ppo — Percentage Price Oscillator

### Açıklama

function trader_ppo(
array `$real`,
int `$fastPeriod` = ?,
int `$slowPeriod` = ?,
int `$mAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`fastPeriod`

  Number of period for the fast MA. Valid range from 2 to 100000.

`slowPeriod`

  Number of period for the slow MA. Valid range from 2 to 100000.

`mAType`

  Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_roc

(PECL trader >= 0.2.0)

trader_roc — Rate of change : ((price/prevPrice)-1)*100

### Açıklama

function trader_roc(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_rocp

(PECL trader >= 0.2.0)

trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice

### Açıklama

function trader_rocp(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_rocr

(PECL trader >= 0.2.0)

trader_rocr — Rate of change ratio: (price/prevPrice)

### Açıklama

function trader_rocr(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_rocr100

(PECL trader >= 0.2.0)

trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100

### Açıklama

function trader_rocr100(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_rsi

(PECL trader >= 0.2.0)

trader_rsi — Relative Strength Index

### Açıklama

function trader_rsi(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sar

(PECL trader >= 0.2.0)

trader_sar — Parabolic SAR

### Açıklama

function trader_sar(
array `$high`,
array `$low`,
float `$acceleration` = ?,
float `$maximum` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`acceleration`

  Acceleration Factor used up to the Maximum value. Valid range from 0 to TRADER_REAL_MAX.

`maximum`

  Acceleration Factor Maximum value. Valid range from 0 to TRADER_REAL_MAX.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sarext

(PECL trader >= 0.2.0)

trader_sarext — Parabolic SAR - Extended

### Açıklama

function trader_sarext(
array `$high`,
array `$low`,
float `$startValue` = ?,
float `$offsetOnReverse` = ?,
float `$accelerationInitLong` = ?,
float `$accelerationLong` = ?,
float `$accelerationMaxLong` = ?,
float `$accelerationInitShort` = ?,
float `$accelerationShort` = ?,
float `$accelerationMaxShort` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`startValue`

  Start value and direction. 0 for Auto, >0 for Long, <0 for Short. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

`offsetOnReverse`

  Percent offset added/removed to initial stop on short/long reversal. Valid range from 0 to TRADER_REAL_MAX.

`accelerationInitLong`

  Acceleration Factor initial value for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

`accelerationLong`

  Acceleration Factor for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

`accelerationMaxLong`

  Acceleration Factor maximum value for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

`accelerationInitShort`

  Acceleration Factor initial value for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

`accelerationShort`

  Acceleration Factor for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

`accelerationMaxShort`

  Acceleration Factor maximum value for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_set_compat

(PECL trader >= 0.2.2)

trader_set_compat — Set compatibility mode

### Açıklama

function trader_set_compat(int `$compatId`): void

Set compatibility mode which will affect the way calculations are done by all the extension functions.

### Bağımsız Değişkenler

`compatId`

  Compatibility Id. TRADER_COMPATIBILITY_* series of constants should be used.

### Dönen Değerler

Hiçbir değer dönmez.

# trader_set_unstable_period

(PECL trader >= 0.2.2)

trader_set_unstable_period — Set unstable period

### Açıklama

function trader_set_unstable_period(int `$functionId`, int `$timePeriod`): void

Influences unstable period factor for functions, which are sensible to it. More information about unstable periods can be found on the » TA-Lib API documentation page.

### Bağımsız Değişkenler

`functionId`

  Function ID the factor should be set for. TRADER_FUNC_UNST_* constant series can be used to affect the corresponding function.

`timePeriod`

  Unstable period value.

### Dönen Değerler

Hiçbir değer dönmez.

# trader_sin

(PECL trader >= 0.2.0)

trader_sin — Vector Trigonometric Sin

### Açıklama

function trader_sin(array `$real`): array

Calculates the sine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sinh

(PECL trader >= 0.2.0)

trader_sinh — Vector Trigonometric Sinh

### Açıklama

function trader_sinh(array `$real`): array

Calculates the hyperbolic sine for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sma

(PECL trader >= 0.2.0)

trader_sma — Simple Moving Average

### Açıklama

function trader_sma(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sqrt

(PECL trader >= 0.2.0)

trader_sqrt — Vector Square Root

### Açıklama

function trader_sqrt(array `$real`): array

Calculates the square root of each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_stddev

(PECL trader >= 0.2.0)

trader_stddev — Standard Deviation

### Açıklama

function trader_stddev(array `$real`, int `$timePeriod` = ?, float `$nbDev` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`nbDev`

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_stoch

(PECL trader >= 0.2.0)

trader_stoch — Stochastic

### Açıklama

function trader_stoch(
array `$high`,
array `$low`,
array `$close`,
int `$fastK_Period` = ?,
int `$slowK_Period` = ?,
int `$slowK_MAType` = ?,
int `$slowD_Period` = ?,
int `$slowD_MAType` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`fastK_Period`

  Time period for building the Fast-K line. Valid range from 1 to 100000.

`slowK_Period`

  Smoothing for making the Slow-K line. Valid range from 1 to 100000, usually set to 3.

`slowK_MAType`

  Type of Moving Average for Slow-K. TRADER_MA_TYPE_* series of constants should be used.

`slowD_Period`

  Smoothing for making the Slow-D line. Valid range from 1 to 100000.

`slowD_MAType`

  Type of Moving Average for Slow-D. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_stochf

(PECL trader >= 0.2.0)

trader_stochf — Stochastic Fast

### Açıklama

function trader_stochf(
array `$high`,
array `$low`,
array `$close`,
int `$fastK_Period` = ?,
int `$fastD_Period` = ?,
int `$fastD_MAType` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`fastK_Period`

  Time period for building the Fast-K line. Valid range from 1 to 100000.

`fastD_Period`

  Smoothing for making the Fast-D line. Valid range from 1 to 100000, usually set to 3.

`fastD_MAType`

  Type of Moving Average for Fast-D. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_stochrsi

(PECL trader >= 0.2.0)

trader_stochrsi — Stochastic Relative Strength Index

### Açıklama

function trader_stochrsi(
array `$real`,
int `$timePeriod` = ?,
int `$fastK_Period` = ?,
int `$fastD_Period` = ?,
int `$fastD_MAType` = ?
): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`fastK_Period`

  Time period for building the Fast-K line. Valid range from 1 to 100000.

`fastD_Period`

  Smoothing for making the Fast-D line. Valid range from 1 to 100000, usually set to 3.

`fastD_MAType`

  Type of Moving Average for Fast-D. TRADER_MA_TYPE_* series of constants should be used.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sub

(PECL trader >= 0.2.0)

trader_sub — Vector Arithmetic Subtraction

### Açıklama

function trader_sub(array `$real0`, array `$real1`): array

Calculates the vector subtraction of `real1` from `real0` and returns the resulting vector.

### Bağımsız Değişkenler

`real0`

  Array of real values.

`real1`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_sum

(PECL trader >= 0.2.0)

trader_sum — Summation

### Açıklama

function trader_sum(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_t3

(PECL trader >= 0.2.0)

trader_t3 — Triple Exponential Moving Average (T3)

### Açıklama

function trader_t3(array `$real`, int `$timePeriod` = ?, float `$vFactor` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`vFactor`

  Volume Factor. Valid range from 1 to 0.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_tan

(PECL trader >= 0.2.0)

trader_tan — Vector Trigonometric Tan

### Açıklama

function trader_tan(array `$real`): array

Calculates the tangent for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_tanh

(PECL trader >= 0.2.0)

trader_tanh — Vector Trigonometric Tanh

### Açıklama

function trader_tanh(array `$real`): array

Calculates the hyperbolic tangent for each value in `real` and returns the resulting array.

### Bağımsız Değişkenler

`real`

  Array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_tema

(PECL trader >= 0.2.0)

trader_tema — Triple Exponential Moving Average

### Açıklama

function trader_tema(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_trange

(PECL trader >= 0.2.0)

trader_trange — True Range

### Açıklama

function trader_trange(array `$high`, array `$low`, array `$close`): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_trima

(PECL trader >= 0.2.0)

trader_trima — Triangular Moving Average

### Açıklama

function trader_trima(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_trix

(PECL trader >= 0.2.0)

trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

### Açıklama

function trader_trix(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_tsf

(PECL trader >= 0.2.0)

trader_tsf — Time Series Forecast

### Açıklama

function trader_tsf(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_typprice

(PECL trader >= 0.2.0)

trader_typprice — Typical Price

### Açıklama

function trader_typprice(array `$high`, array `$low`, array `$close`): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_ultosc

(PECL trader >= 0.2.0)

trader_ultosc — Ultimate Oscillator

### Açıklama

function trader_ultosc(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod1` = ?,
int `$timePeriod2` = ?,
int `$timePeriod3` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod1`

  Number of bars for 1st period. Valid range from 1 to 100000.

`timePeriod2`

  Number of bars for 2nd period. Valid range from 1 to 100000.

`timePeriod3`

  Number of bars for 3rd period. Valid range from 1 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_var

(PECL trader >= 0.2.0)

trader_var — Variance

### Açıklama

function trader_var(array `$real`, int `$timePeriod` = ?, float `$nbDev` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

`nbDev`

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_wclprice

(PECL trader >= 0.2.0)

trader_wclprice — Weighted Close Price

### Açıklama

function trader_wclprice(array `$high`, array `$low`, array `$close`): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_willr

(PECL trader >= 0.2.0)

trader_willr — Williams' %R

### Açıklama

function trader_willr(
array `$high`,
array `$low`,
array `$close`,
int `$timePeriod` = ?
): array

### Bağımsız Değişkenler

`high`

  High price, array of real values.

`low`

  Low price, array of real values.

`close`

  Closing price, array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

# trader_wma

(PECL trader >= 0.2.0)

trader_wma — Weighted Moving Average

### Açıklama

function trader_wma(array `$real`, int `$timePeriod` = ?): array

### Bağımsız Değişkenler

`real`

  Array of real values.

`timePeriod`

  Number of period. Valid range from 2 to 100000.

### Dönen Değerler

Returns an array with calculated data or false on failure.

## İçindekiler

- trader_acos — Vector Trigonometric ACos
- trader_ad — Chaikin A/D Line
- trader_add — Vector Arithmetic Add
- trader_adosc — Chaikin A/D Oscillator
- trader_adx — Average Directional Movement Index
- trader_adxr — Average Directional Movement Index Rating
- trader_apo — Absolute Price Oscillator
- trader_aroon — Aroon
- trader_aroonosc — Aroon Oscillator
- trader_asin — Vector Trigonometric ASin
- trader_atan — Vector Trigonometric ATan
- trader_atr — Average True Range
- trader_avgprice — Average Price
- trader_bbands — Bollinger Bands
- trader_beta — Beta
- trader_bop — Balance Of Power
- trader_cci — Commodity Channel Index
- trader_cdl2crows — Two Crows
- trader_cdl3blackcrows — Three Black Crows
- trader_cdl3inside — Three Inside Up/Down
- trader_cdl3linestrike — Three-Line Strike
- trader_cdl3outside — Three Outside Up/Down
- trader_cdl3starsinsouth — Three Stars In The South
- trader_cdl3whitesoldiers — Three Advancing White Soldiers
- trader_cdlabandonedbaby — Abandoned Baby
- trader_cdladvanceblock — Advance Block
- trader_cdlbelthold — Belt-hold
- trader_cdlbreakaway — Breakaway
- trader_cdlclosingmarubozu — Closing Marubozu
- trader_cdlconcealbabyswall — Concealing Baby Swallow
- trader_cdlcounterattack — Counterattack
- trader_cdldarkcloudcover — Dark Cloud Cover
- trader_cdldoji — Doji
- trader_cdldojistar — Doji Star
- trader_cdldragonflydoji — Dragonfly Doji
- trader_cdlengulfing — Engulfing Pattern
- trader_cdleveningdojistar — Evening Doji Star
- trader_cdleveningstar — Evening Star
- trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines
- trader_cdlgravestonedoji — Gravestone Doji
- trader_cdlhammer — Hammer
- trader_cdlhangingman — Hanging Man
- trader_cdlharami — Harami Pattern
- trader_cdlharamicross — Harami Cross Pattern
- trader_cdlhighwave — High-Wave Candle
- trader_cdlhikkake — Hikkake Pattern
- trader_cdlhikkakemod — Modified Hikkake Pattern
- trader_cdlhomingpigeon — Homing Pigeon
- trader_cdlidentical3crows — Identical Three Crows
- trader_cdlinneck — In-Neck Pattern
- trader_cdlinvertedhammer — Inverted Hammer
- trader_cdlkicking — Kicking
- trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu
- trader_cdlladderbottom — Ladder Bottom
- trader_cdllongleggeddoji — Long Legged Doji
- trader_cdllongline — Long Line Candle
- trader_cdlmarubozu — Marubozu
- trader_cdlmatchinglow — Matching Low
- trader_cdlmathold — Mat Hold
- trader_cdlmorningdojistar — Morning Doji Star
- trader_cdlmorningstar — Morning Star
- trader_cdlonneck — On-Neck Pattern
- trader_cdlpiercing — Piercing Pattern
- trader_cdlrickshawman — Rickshaw Man
- trader_cdlrisefall3methods — Rising/Falling Three Methods
- trader_cdlseparatinglines — Separating Lines
- trader_cdlshootingstar — Shooting Star
- trader_cdlshortline — Short Line Candle
- trader_cdlspinningtop — Spinning Top
- trader_cdlstalledpattern — Stalled Pattern
- trader_cdlsticksandwich — Stick Sandwich
- trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)
- trader_cdltasukigap — Tasuki Gap
- trader_cdlthrusting — Thrusting Pattern
- trader_cdltristar — Tristar Pattern
- trader_cdlunique3river — Unique 3 River
- trader_cdlupsidegap2crows — Upside Gap Two Crows
- trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods
- trader_ceil — Vector Ceil
- trader_cmo — Chande Momentum Oscillator
- trader_correl — Pearson's Correlation Coefficient (r)
- trader_cos — Vector Trigonometric Cos
- trader_cosh — Vector Trigonometric Cosh
- trader_dema — Double Exponential Moving Average
- trader_div — Vector Arithmetic Div
- trader_dx — Directional Movement Index
- trader_ema — Exponential Moving Average
- trader_errno — Get error code
- trader_exp — Vector Arithmetic Exp
- trader_floor — Vector Floor
- trader_get_compat — Get compatibility mode
- trader_get_unstable_period — Get unstable period
- trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period
- trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase
- trader_ht_phasor — Hilbert Transform - Phasor Components
- trader_ht_sine — Hilbert Transform - SineWave
- trader_ht_trendline — Hilbert Transform - Instantaneous Trendline
- trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode
- trader_kama — Kaufman Adaptive Moving Average
- trader_linearreg — Linear Regression
- trader_linearreg_angle — Linear Regression Angle
- trader_linearreg_intercept — Linear Regression Intercept
- trader_linearreg_slope — Linear Regression Slope
- trader_ln — Vector Log Natural
- trader_log10 — Vector Log10
- trader_ma — Moving average
- trader_macd — Moving Average Convergence/Divergence
- trader_macdext — MACD with controllable MA type
- trader_macdfix — Moving Average Convergence/Divergence Fix 12/26
- trader_mama — MESA Adaptive Moving Average
- trader_mavp — Moving average with variable period
- trader_max — Highest value over a specified period
- trader_maxindex — Index of highest value over a specified period
- trader_medprice — Median Price
- trader_mfi — Money Flow Index
- trader_midpoint — MidPoint over period
- trader_midprice — Midpoint Price over period
- trader_min — Lowest value over a specified period
- trader_minindex — Index of lowest value over a specified period
- trader_minmax — Lowest and highest values over a specified period
- trader_minmaxindex — Indexes of lowest and highest values over a specified period
- trader_minus_di — Minus Directional Indicator
- trader_minus_dm — Minus Directional Movement
- trader_mom — Momentum
- trader_mult — Vector Arithmetic Mult
- trader_natr — Normalized Average True Range
- trader_obv — On Balance Volume
- trader_plus_di — Plus Directional Indicator
- trader_plus_dm — Plus Directional Movement
- trader_ppo — Percentage Price Oscillator
- trader_roc — Rate of change : ((price/prevPrice)-1)*100
- trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice
- trader_rocr — Rate of change ratio: (price/prevPrice)
- trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100
- trader_rsi — Relative Strength Index
- trader_sar — Parabolic SAR
- trader_sarext — Parabolic SAR - Extended
- trader_set_compat — Set compatibility mode
- trader_set_unstable_period — Set unstable period
- trader_sin — Vector Trigonometric Sin
- trader_sinh — Vector Trigonometric Sinh
- trader_sma — Simple Moving Average
- trader_sqrt — Vector Square Root
- trader_stddev — Standard Deviation
- trader_stoch — Stochastic
- trader_stochf — Stochastic Fast
- trader_stochrsi — Stochastic Relative Strength Index
- trader_sub — Vector Arithmetic Subtraction
- trader_sum — Summation
- trader_t3 — Triple Exponential Moving Average (T3)
- trader_tan — Vector Trigonometric Tan
- trader_tanh — Vector Trigonometric Tanh
- trader_tema — Triple Exponential Moving Average
- trader_trange — True Range
- trader_trima — Triangular Moving Average
- trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
- trader_tsf — Time Series Forecast
- trader_typprice — Typical Price
- trader_ultosc — Ultimate Oscillator
- trader_var — Variance
- trader_wclprice — Weighted Close Price
- trader_willr — Williams' %R
- trader_wma — Weighted Moving Average

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- Öntanımlı Sabitler
- Trader İşlevleri
  - trader_acos — Vector Trigonometric ACos
  - trader_ad — Chaikin A/D Line
  - trader_add — Vector Arithmetic Add
  - trader_adosc — Chaikin A/D Oscillator
  - trader_adx — Average Directional Movement Index
  - trader_adxr — Average Directional Movement Index Rating
  - trader_apo — Absolute Price Oscillator
  - trader_aroon — Aroon
  - trader_aroonosc — Aroon Oscillator
  - trader_asin — Vector Trigonometric ASin
  - trader_atan — Vector Trigonometric ATan
  - trader_atr — Average True Range
  - trader_avgprice — Average Price
  - trader_bbands — Bollinger Bands
  - trader_beta — Beta
  - trader_bop — Balance Of Power
  - trader_cci — Commodity Channel Index
  - trader_cdl2crows — Two Crows
  - trader_cdl3blackcrows — Three Black Crows
  - trader_cdl3inside — Three Inside Up/Down
  - trader_cdl3linestrike — Three-Line Strike
  - trader_cdl3outside — Three Outside Up/Down
  - trader_cdl3starsinsouth — Three Stars In The South
  - trader_cdl3whitesoldiers — Three Advancing White Soldiers
  - trader_cdlabandonedbaby — Abandoned Baby
  - trader_cdladvanceblock — Advance Block
  - trader_cdlbelthold — Belt-hold
  - trader_cdlbreakaway — Breakaway
  - trader_cdlclosingmarubozu — Closing Marubozu
  - trader_cdlconcealbabyswall — Concealing Baby Swallow
  - trader_cdlcounterattack — Counterattack
  - trader_cdldarkcloudcover — Dark Cloud Cover
  - trader_cdldoji — Doji
  - trader_cdldojistar — Doji Star
  - trader_cdldragonflydoji — Dragonfly Doji
  - trader_cdlengulfing — Engulfing Pattern
  - trader_cdleveningdojistar — Evening Doji Star
  - trader_cdleveningstar — Evening Star
  - trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines
  - trader_cdlgravestonedoji — Gravestone Doji
  - trader_cdlhammer — Hammer
  - trader_cdlhangingman — Hanging Man
  - trader_cdlharami — Harami Pattern
  - trader_cdlharamicross — Harami Cross Pattern
  - trader_cdlhighwave — High-Wave Candle
  - trader_cdlhikkake — Hikkake Pattern
  - trader_cdlhikkakemod — Modified Hikkake Pattern
  - trader_cdlhomingpigeon — Homing Pigeon
  - trader_cdlidentical3crows — Identical Three Crows
  - trader_cdlinneck — In-Neck Pattern
  - trader_cdlinvertedhammer — Inverted Hammer
  - trader_cdlkicking — Kicking
  - trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu
  - trader_cdlladderbottom — Ladder Bottom
  - trader_cdllongleggeddoji — Long Legged Doji
  - trader_cdllongline — Long Line Candle
  - trader_cdlmarubozu — Marubozu
  - trader_cdlmatchinglow — Matching Low
  - trader_cdlmathold — Mat Hold
  - trader_cdlmorningdojistar — Morning Doji Star
  - trader_cdlmorningstar — Morning Star
  - trader_cdlonneck — On-Neck Pattern
  - trader_cdlpiercing — Piercing Pattern
  - trader_cdlrickshawman — Rickshaw Man
  - trader_cdlrisefall3methods — Rising/Falling Three Methods
  - trader_cdlseparatinglines — Separating Lines
  - trader_cdlshootingstar — Shooting Star
  - trader_cdlshortline — Short Line Candle
  - trader_cdlspinningtop — Spinning Top
  - trader_cdlstalledpattern — Stalled Pattern
  - trader_cdlsticksandwich — Stick Sandwich
  - trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)
  - trader_cdltasukigap — Tasuki Gap
  - trader_cdlthrusting — Thrusting Pattern
  - trader_cdltristar — Tristar Pattern
  - trader_cdlunique3river — Unique 3 River
  - trader_cdlupsidegap2crows — Upside Gap Two Crows
  - trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods
  - trader_ceil — Vector Ceil
  - trader_cmo — Chande Momentum Oscillator
  - trader_correl — Pearson's Correlation Coefficient (r)
  - trader_cos — Vector Trigonometric Cos
  - trader_cosh — Vector Trigonometric Cosh
  - trader_dema — Double Exponential Moving Average
  - trader_div — Vector Arithmetic Div
  - trader_dx — Directional Movement Index
  - trader_ema — Exponential Moving Average
  - trader_errno — Get error code
  - trader_exp — Vector Arithmetic Exp
  - trader_floor — Vector Floor
  - trader_get_compat — Get compatibility mode
  - trader_get_unstable_period — Get unstable period
  - trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period
  - trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase
  - trader_ht_phasor — Hilbert Transform - Phasor Components
  - trader_ht_sine — Hilbert Transform - SineWave
  - trader_ht_trendline — Hilbert Transform - Instantaneous Trendline
  - trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode
  - trader_kama — Kaufman Adaptive Moving Average
  - trader_linearreg — Linear Regression
  - trader_linearreg_angle — Linear Regression Angle
  - trader_linearreg_intercept — Linear Regression Intercept
  - trader_linearreg_slope — Linear Regression Slope
  - trader_ln — Vector Log Natural
  - trader_log10 — Vector Log10
  - trader_ma — Moving average
  - trader_macd — Moving Average Convergence/Divergence
  - trader_macdext — MACD with controllable MA type
  - trader_macdfix — Moving Average Convergence/Divergence Fix 12/26
  - trader_mama — MESA Adaptive Moving Average
  - trader_mavp — Moving average with variable period
  - trader_max — Highest value over a specified period
  - trader_maxindex — Index of highest value over a specified period
  - trader_medprice — Median Price
  - trader_mfi — Money Flow Index
  - trader_midpoint — MidPoint over period
  - trader_midprice — Midpoint Price over period
  - trader_min — Lowest value over a specified period
  - trader_minindex — Index of lowest value over a specified period
  - trader_minmax — Lowest and highest values over a specified period
  - trader_minmaxindex — Indexes of lowest and highest values over a specified period
  - trader_minus_di — Minus Directional Indicator
  - trader_minus_dm — Minus Directional Movement
  - trader_mom — Momentum
  - trader_mult — Vector Arithmetic Mult
  - trader_natr — Normalized Average True Range
  - trader_obv — On Balance Volume
  - trader_plus_di — Plus Directional Indicator
  - trader_plus_dm — Plus Directional Movement
  - trader_ppo — Percentage Price Oscillator
  - trader_roc — Rate of change : ((price/prevPrice)-1)*100
  - trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice
  - trader_rocr — Rate of change ratio: (price/prevPrice)
  - trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100
  - trader_rsi — Relative Strength Index
  - trader_sar — Parabolic SAR
  - trader_sarext — Parabolic SAR - Extended
  - trader_set_compat — Set compatibility mode
  - trader_set_unstable_period — Set unstable period
  - trader_sin — Vector Trigonometric Sin
  - trader_sinh — Vector Trigonometric Sinh
  - trader_sma — Simple Moving Average
  - trader_sqrt — Vector Square Root
  - trader_stddev — Standard Deviation
  - trader_stoch — Stochastic
  - trader_stochf — Stochastic Fast
  - trader_stochrsi — Stochastic Relative Strength Index
  - trader_sub — Vector Arithmetic Subtraction
  - trader_sum — Summation
  - trader_t3 — Triple Exponential Moving Average (T3)
  - trader_tan — Vector Trigonometric Tan
  - trader_tanh — Vector Trigonometric Tanh
  - trader_tema — Triple Exponential Moving Average
  - trader_trange — True Range
  - trader_trima — Triangular Moving Average
  - trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
  - trader_tsf — Time Series Forecast
  - trader_typprice — Typical Price
  - trader_ultosc — Ultimate Oscillator
  - trader_var — Variance
  - trader_wclprice — Weighted Close Price
  - trader_willr — Williams' %R
  - trader_wma — Weighted Moving Average

- BC — BCMath Keyfi Duyarlıklı Matematik
  - Yapılandırma/Kurulum
  - BC Math İşlevleri
  - BcMath\Number — The BcMath\Number class
- GMP — GNU Multiple Precision
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - GMP İşlevleri
  - GMP — The GMP class
- Math — Mathematical Functions
  - Öntanımlı Sabitler
  - RoundingMode — The RoundingMode Enum
  - Math İşlevleri
- Statistics
  - Yapılandırma/Kurulum
  - Statistic İşlevleri
- Trader — Technical Analysis for Traders
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Trader İşlevleri

# Salt Metin Olmayan MIME Çıktılama

# Forms Data Format

# Giriş

Forms Data Format (FDF) is a format for handling forms within PDF documents. You should read the documentation at » http://www.adobe.com/devnet/acrobat/fdftoolkit.html for more information on what FDF is and how it is used in general.

The general idea of FDF is similar to HTML forms. The difference is basically the format how data is transmitted to the server when the submit button is pressed (this is actually the Form Data Format) and the format of the form itself (which is the Portable Document Format, PDF). Processing the FDF data is one of the features provided by the fdf functions. But there is more. One may as well take an existing PDF form and populated the input fields with data without modifying the form itself. In such a case one would create a FDF document (fdf_create()) set the values of each input field (fdf_set_value()) and associate it with a PDF form (fdf_set_file()). Finally it has to be sent to the browser with MimeType `application/vnd.fdf`. The Acrobat reader plugin of your browser recognizes the MimeType, reads the associated PDF form and fills in the data from the FDF document.

If you look at an FDF-document with a text editor you will find a catalogue object with the name `FDF`. Such an object may contain a number of entries like `Fields`, `F`, `Status` etc.. The most commonly used entries are `Fields` which points to a list of input fields, and `F` which contains the filename of the PDF-document this data belongs to. Those entries are referred to in the FDF documentation as /F-Key or /Status-Key. Modifying this entries is done by functions like fdf_set_file() and fdf_set_status(). Fields are modified with fdf_set_value(), fdf_set_opt() etc..

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

You need the FDF toolkit SDK available from » http://www.adobe.com/devnet/acrobat/fdftoolkit.html. As of PHP 4.3.0 you need at least SDK version 5.0. The FDF toolkit library is available in binary form only, platforms supported by Adobe are Win32, Linux, Solaris and AIX.

## Kurulum

Bu eklentinin geliştirmesi durmuştur. Ancak, kaynak kodu PECL SVN deposunda bulunabilir. Yeri: » https://svn.php.net/viewvc/pecl/fdf.

This extension is no longer bundled with PHP.

> Bilginize: If you run into problems configuring PHP with fdftk support, check whether the header file fdftk.h and the library libfdftk.so are at the right place. The configure script supports both the directory structure of the FDF SDK distribution and the usual DIR/include / DIR/lib layout, so you can point it either directly to the unpacked distribution directory or put the header file and the appropriate library for your platform into e.g. /usr/local/include and /usr/local/lib and configure with --with-fdftk=/usr/local.

> Bilginize: Note to Win32 Users
> Bu eklentinin çalışabilmesi için bazı DLL dosyalarının bulunduğu yerlerin Windows sistem PATH'ında tanımlı olması gerekir. Bunun nasıl yapılacağı SSS altında "PHP dizinimi Windows'ta PATH'a nasıl eklerim" başlığı altında açıklanmıştır. Eklenti, DLL dosyaları PHP dizininden Windows system dizinine taşındığında da çalışırsa da (çünkü system dizini sistem PATH'ında zaten vardır) bu önerilmez. Bu eklentinin çalışabilmesi için bulunduğu dizine PATH üzerinden erişebilmesi gereken dosyanın ismi: fdftk.dll

## Özkaynak Türleri

Most fdf functions require a `fdf` resource as their first parameter. A `fdf` resource is a handle to an opened fdf file. `fdf` resources may be obtained using fdf_create(), fdf_open() and fdf_open_string().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

`FDFValue` (int)
`FDFStatus` (int)
`FDFFile` (int)
`FDFID` (int)
`FDFFf` (int)
`FDFSetFf` (int)
`FDFClearFf` (int)
`FDFFlags` (int)
`FDFSetF` (int)
`FDFClrF` (int)
`FDFAP` (int)
`FDFAS` (int)
`FDFAction` (int)
`FDFAA` (int)
`FDFAPRef` (int)
`FDFIF` (int)
`FDFEnter` (int)
`FDFExit` (int)
`FDFDown` (int)
`FDFUp` (int)
`FDFFormat` (int)
`FDFValidate` (int)
`FDFKeystroke` (int)
`FDFCalculate` (int)
`FDFNormalAP` (int)
`FDFRolloverAP` (int)
`FDFDownAP` (int)

# Örnekler

The following examples shows just the evaluation of form data.

Örnek 1 Evaluating a FDF document

    <?php
    // Open fdf from input string provided by the extension
    // The pdf form contained several input text fields with the names
    // volume, date, comment, publisher, preparer, and two checkboxes
    // show_publisher and show_preparer.
    $fdf = fdf_open_string($HTTP_FDF_DATA);
    $volume = fdf_get_value($fdf, "volume");
    echo "The volume field has the value '<b>$volume</b>'<br />";

    $date = fdf_get_value($fdf, "date");
    echo "The date field has the value '<b>$date</b>'<br />";

    $comment = fdf_get_value($fdf, "comment");
    echo "The comment field has the value '<b>$comment</b>'<br />";

    if (fdf_get_value($fdf, "show_publisher") == "On") {
      $publisher = fdf_get_value($fdf, "publisher");
      echo "The publisher field has the value '<b>$publisher</b>'<br />";
    } else
      echo "Publisher shall not be shown.<br />";

    if (fdf_get_value($fdf, "show_preparer") == "On") {
      $preparer = fdf_get_value($fdf, "preparer");
      echo "The preparer field has the value '<b>$preparer</b>'<br />";
    } else
      echo "Preparer shall not be shown.<br />";
    fdf_close($fdf);
    ?>

# FDF İşlevleri

# fdf_add_doc_javascript

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_add_doc_javascript — Adds javascript code to the FDF document

### Açıklama

function fdf_add_doc_javascript(resource `$fdf_document`, string `$script_name`, string `$script_code`): bool

Adds a script to the FDF, which Acrobat then adds to the doc-level scripts of a document, once the FDF is imported into it.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`script_name`
  The script name.
`script_code`
  The script code. It is strongly suggested to use `\r` for linebreaks within the script code.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Adding JavaScript code to a FDF

    <?php
    $fdf = fdf_create();
    fdf_add_doc_javascript($fdf, "PlusOne", "function PlusOne(x)\r{\r  return x+1;\r}\r");
    fdf_save($fdf);
    ?>

will create a FDF like this:

    %FDF-1.2
    %âãÏÓ
    1 0 obj
    <<
    /FDF << /JavaScript << /Doc [ (PlusOne)(function PlusOne\(x\)\r{\r  return x+1;\r}\r)] >> >>
    >>
    endobj
    trailer
    <<
    /Root 1 0 R

    >>
    %%EOF

# fdf_add_template

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_add_template — Adds a template into the FDF document

### Açıklama

function fdf_add_template(
resource `$fdf_document`,
int `$newpage`,
string `$filename`,
string `$template`,
int `$rename`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# fdf_close

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_close — Close an FDF document

### Açıklama

function fdf_close(resource `$fdf_document`): void

Closes the FDF document.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- fdf_open() - Open a FDF document

# fdf_create

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_create — Create a new FDF document

### Açıklama

function fdf_create(): resource

Creates a new FDF document.

This function is needed if one would like to populate input fields in a PDF document with data.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a FDF document handle, or `false` on error.

### Örnekler

Örnek 1 Populating a PDF document

    <?php
    $outfdf = fdf_create();
    fdf_set_value($outfdf, "volume", $volume, 0);

    fdf_set_file($outfdf, "http:/testfdf/resultlabel.pdf");
    fdf_save($outfdf, "outtest.fdf");
    fdf_close($outfdf);
    Header("Content-type: application/vnd.fdf");
    $fp = fopen("outtest.fdf", "r");
    fpassthru($fp);
    unlink("outtest.fdf");
    ?>

### Ayrıca Bakınız

- fdf_close() - Close an FDF document
- fdf_save() - Save a FDF document
- fdf_open() - Open a FDF document

# fdf_enum_values

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_enum_values — Call a user defined function for each document value

### Açıklama

function fdf_enum_values(resource `$fdf_document`, callable `$function`, mixed `$userdata` = ?): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# fdf_errno

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_errno — Return error code for last fdf operation

### Açıklama

function fdf_errno(): int

Gets the error code set by the last FDF function call.

A textual description of the error may be obtained using fdf_error().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the error code as an integer, or zero if there was no errors.

### Ayrıca Bakınız

- fdf_error() - Return error description for FDF error code

# fdf_error

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_error — Return error description for FDF error code

### Açıklama

function fdf_error(int `$error_code` = -1): string

Gets a textual description for the FDF error code given in `error_code`.

### Bağımsız Değişkenler

`error_code`
  An error code obtained with fdf_errno(). If not provided, this function uses the internal error code set by the last operation.

### Dönen Değerler

Returns the error message as a string, or the string `no error` if nothing went wrong.

### Ayrıca Bakınız

- fdf_errno() - Return error code for last fdf operation

# fdf_get_ap

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_ap — Get the appearance of a field

### Açıklama

function fdf_get_ap(
resource `$fdf_document`,
string `$field`,
int `$face`,
string `$filename`
): bool

Gets the appearance of a `field` (i.e. the value of the /AP key) and stores it in a file.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`field`
`face`
  The possible values are `FDFNormalAP`, `FDFRolloverAP` and `FDFDownAP`.
`filename`
  The appearance will be stored in this parameter.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# fdf_get_attachment

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_attachment — Extracts uploaded file embedded in the FDF

### Açıklama

function fdf_get_attachment(resource `$fdf_document`, string `$fieldname`, string `$savepath`): array

Extracts a file uploaded by means of the "file selection" field `fieldname` and stores it under `savepath`.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
`savepath`
  May be the name of a plain file or an existing directory in which the file is to be created under its original name. Any existing file under the same name will be overwritten.

  > Bilginize: There seems to be no other way to find out the original filename but to store the file using a directory as `savepath` and check for the basename it was stored under.

### Dönen Değerler

The returned array contains the following fields:

- `path` - path where the file got stored
- `size` - size of the stored file in bytes
- `type` - mimetype if given in the FDF

### Örnekler

Örnek 1 Storing an uploaded file

    <?php
      $fdf = fdf_open_string($HTTP_FDF_DATA);
      $data = fdf_get_attachment($fdf, "filename", "/tmpdir");
      echo "The uploaded file is stored in $data[path]";
    ?>

# fdf_get_encoding

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_encoding — Get the value of the /Encoding key

### Açıklama

function fdf_get_encoding(resource `$fdf_document`): string

Gets the value of the `/Encoding` key.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Returns the encoding as a string. An empty string is returned if the default `PDFDocEncoding/Unicode` scheme is used.

### Ayrıca Bakınız

- fdf_set_encoding() - Sets FDF character encoding

# fdf_get_file

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_file — Get the value of the /F key

### Açıklama

function fdf_get_file(resource `$fdf_document`): string

Gets the value of the `/F` key.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Returns the key value, as a string.

### Ayrıca Bakınız

- fdf_set_file() - Set PDF document to display FDF data in

# fdf_get_flags

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_flags — Gets the flags of a field

### Açıklama

function fdf_get_flags(resource `$fdf_document`, string `$fieldname`, int `$whichflags`): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# fdf_get_opt

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECLv)

fdf_get_opt — Gets a value from the opt array of a field

### Açıklama

function fdf_get_opt(resource `$fdf_document`, string `$fieldname`, int `$element` = -1): mixed
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# fdf_get_status

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_status — Get the value of the /STATUS key

### Açıklama

function fdf_get_status(resource `$fdf_document`): string

Gets the value of the `/STATUS` key.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Returns the key value, as a string.

### Ayrıca Bakınız

- fdf_set_status() - Set the value of the /STATUS key

# fdf_get_value

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_value — Get the value of a field

### Açıklama

function fdf_get_value(resource `$fdf_document`, string `$fieldname`, int `$which` = -1): mixed

Gets the value for the requested field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`which`
  Elements of an array field can be retrieved by passing this optional parameter, starting at zero. For non-array fields, this parameter will be ignored.

### Dönen Değerler

Returns the field value.

### Ayrıca Bakınız

- fdf_set_value() - Set the value of a field

# fdf_get_version

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_get_version — Gets version number for FDF API or file

### Açıklama

function fdf_get_version(resource `$fdf_document` = ?): string

Return the FDF version for the given document, or the toolkit API version number if no parameter is given.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Returns the version as a string. For the current FDF toolkit 5.0 the API version number is `5.0` and the document version number is either `1.2`, `1.3` or `1.4`.

### Ayrıca Bakınız

- fdf_set_version() - Sets version number for a FDF file

# fdf_header

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVNf)

fdf_header — Sets FDF-specific output headers

### Açıklama

function fdf_header(): void

This is a convenience function to set appropriate HTTP headers for FDF output. It sets the `Content-type:` to `application/vnd.fdf`.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# fdf_next_field_name

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_next_field_name — Get the next field name

### Açıklama

function fdf_next_field_name(resource `$fdf_document`, string `$fieldname` = ?): string

Gets the name of the field after the given field. This name can be used with several functions.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string. If not given, the first field will be assumed.

### Dönen Değerler

Returns the field name as a string.

### Örnekler

Örnek 1 Detecting all fieldnames in a FDF

    <?php
    $fdf = fdf_open($HTTP_FDF_DATA);
    for ($field = fdf_next_field_name($fdf);
        $field != "";
        $field = fdf_next_field_name($fdf, $field)) {
        echo "field: $field\n";
    }
    ?>

### Ayrıca Bakınız

- fdf_get_value() - Get the value of a field

# fdf_open

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_open — Open a FDF document

### Açıklama

function fdf_open(string `$filename`): resource

Opens a file with form data.

You can also use fdf_open_string() to process the results of a PDF form POST request.

### Bağımsız Değişkenler

`filename`
  Path to the FDF file. This file must contain the data as returned from a PDF form or created using fdf_create() and fdf_save().

### Dönen Değerler

Returns a FDF document handle, or `false` on error.

### Örnekler

Örnek 1 Accessing the form data

    <?php
    // Save the FDF data into a temp file
    $fdffp = fopen("test.fdf", "w");
    fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
    fclose($fdffp);

    // Open temp file and evaluate data
    $fdf = fdf_open("test.fdf");
    /* ... */
    fdf_close($fdf);
    ?>

### Ayrıca Bakınız

- fdf_open_string() - Read a FDF document from a string
- fdf_close() - Close an FDF document
- fdf_create() - Create a new FDF document
- fdf_save() - Save a FDF document

# fdf_open_string

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_open_string — Read a FDF document from a string

### Açıklama

function fdf_open_string(string `$fdf_data`): resource

Reads form data from a string.

You can use fdf_open_string() together with $HTTP_FDF_DATA to process FDF form input from a remote client.

### Bağımsız Değişkenler

`fdf_data`
  The data as returned from a PDF form or created using fdf_create() and fdf_save_string().

### Dönen Değerler

Returns a FDF document handle, or `false` on error.

### Örnekler

Örnek 1 Accessing the form data

    <?php
    $fdf = fdf_open_string($HTTP_FDF_DATA);
    /* ... */
    fdf_close($fdf);
    ?>

### Ayrıca Bakınız

- fdf_open() - Open a FDF document
- fdf_close() - Close an FDF document
- fdf_create() - Create a new FDF document
- fdf_save_string() - Returns the FDF document as a string

# fdf_remove_item

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_remove_item — Sets target frame for form

### Açıklama

function fdf_remove_item(resource `$fdf_document`, string `$fieldname`, int `$item`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

# fdf_save

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_save — Save a FDF document

### Açıklama

function fdf_save(resource `$fdf_document`, string `$filename` = ?): bool

Saves a FDF document.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`filename`
  If provided, the resulting FDF will be written in this parameter. Otherwise, this function will write the FDF to the default PHP output stream.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_close() - Close an FDF document
- fdf_create() - Create a new FDF document
- fdf_save_string() - Returns the FDF document as a string

# fdf_save_string

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_save_string — Returns the FDF document as a string

### Açıklama

function fdf_save_string(resource `$fdf_document`): string

Returns the FDF document as a string.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

### Dönen Değerler

Returns the document as a string, or `false` on error.

### Örnekler

Örnek 1 Retrieving FDF as a string

    <?php
    $fdf = fdf_create();
    fdf_set_value($fdf, "foo", "bar");
    $str = fdf_save_string($fdf);
    fdf_close($fdf);
    echo $str;
    ?>

Yukarıdaki örneğin çıktısı:

    %FDF-1.2
    %âãÏÓ
    1 0 obj
    <<
    /FDF << /Fields 2 0 R >>
    >>
    endobj
    2 0 obj
    [
    << /T (foo)/V (bar)>>
    ]
    endobj
    trailer
    <<
    /Root 1 0 R

    >>
    %%EOF

### Ayrıca Bakınız

- fdf_open_string() - Read a FDF document from a string
- fdf_close() - Close an FDF document
- fdf_create() - Create a new FDF document
- fdf_save() - Save a FDF document

# fdf_set_ap

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_ap — Set the appearance of a field

### Açıklama

function fdf_set_ap(
resource `$fdf_document`,
string `$field_name`,
int `$face`,
string `$filename`,
int `$page_number`
): bool

Sets the appearance of a field (i.e. the value of the `/AP` key).

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`field_name`
`face`
  The possible values are `FDFNormalAP`, `FDFRolloverAP` and `FDFDownAP`.
`filename`
`page_number`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# fdf_set_encoding

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_encoding — Sets FDF character encoding

### Açıklama

function fdf_set_encoding(resource `$fdf_document`, string `$encoding`): bool

Sets the character encoding for the FDF document.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`encoding`
  The encoding name. The following values are supported: "`Shift-JIS`", "`UHC`", "`GBK`" and "`BigFive`". An empty string resets the encoding to the default `PDFDocEncoding/Unicode` scheme.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# fdf_set_file

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_file — Set PDF document to display FDF data in

### Açıklama

function fdf_set_file(resource `$fdf_document`, string `$url`, string `$target_frame` = ?): bool

Selects a different PDF document to display the form results in than the form it originated from.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`url`
  Should be given as an absolute URL.
`target_frame`
  Use this parameter to specify the frame in which the document will be displayed. You can also set the default value for this parameter using fdf_set_target_frame().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Passing FDF data to a second form

    <?php
      /* set content type for Adobe FDF */
      fdf_header();

      /* start new fdf */
      $fdf = fdf_create();

      /* set field "foo" to value "bar" */
      fdf_set_value($fdf, "foo", "bar");

      /* tell client to display FDF data using "fdf_form.pdf" */
      fdf_set_file($fdf, "http://www.example.com/fdf_form.pdf");

      /* output fdf */
      fdf_save($fdf);

      /* clean up */
      fdf_close($fdf);
    ?>

### Ayrıca Bakınız

- fdf_get_file() - Get the value of the /F key
- fdf_set_target_frame() - Set target frame for form display

# fdf_set_flags

(PHP 4 >= 4.0.2, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_flags — Sets a flag of a field

### Açıklama

function fdf_set_flags(
resource `$fdf_document`,
string `$fieldname`,
int `$whichFlags`,
int `$newFlags`
): bool

Sets certain flags of the given field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`whichFlags`
`newFlags`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_set_opt() - Sets an option of a field

# fdf_set_javascript_action

(PHP 4 >= 4.0.2, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_javascript_action — Sets an javascript action of a field

### Açıklama

function fdf_set_javascript_action(
resource `$fdf_document`,
string `$fieldname`,
int `$trigger`,
string `$script`
): bool

Sets a javascript action for the given field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`trigger`
`script`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_set_submit_form_action() - Sets a submit form action of a field

# fdf_set_on_import_javascript

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF

### Açıklama

function fdf_set_on_import_javascript(resource `$fdf_document`, string `$script`, bool `$before_data_import`): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Ayrıca Bakınız

- fdf_add_doc_javascript() - Adds javascript code to the FDF document
- fdf_set_javascript_action() - Sets an javascript action of a field

# fdf_set_opt

(PHP 4 >= 4.0.2, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_opt — Sets an option of a field

### Açıklama

function fdf_set_opt(
resource `$fdf_document`,
string `$fieldname`,
int `$element`,
string `$str1`,
string `$str2`
): bool

Sets options of the given field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`element`
`str1`
`str2`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_set_flags() - Sets a flag of a field

# fdf_set_status

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_status — Set the value of the /STATUS key

### Açıklama

function fdf_set_status(resource `$fdf_document`, string `$status`): bool

Sets the value of the `/STATUS` key. When a client receives a FDF with a status set it will present the value in an alert box.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`status`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_get_status() - Get the value of the /STATUS key

# fdf_set_submit_form_action

(PHP 4 >= 4.0.2, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_submit_form_action — Sets a submit form action of a field

### Açıklama

function fdf_set_submit_form_action(
resource `$fdf_document`,
string `$fieldname`,
int `$trigger`,
string `$script`,
int `$flags`
): bool

Sets a submit form action for the given field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`trigger`
`script`
`flags`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_set_javascript_action() - Sets an javascript action of a field

# fdf_set_target_frame

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_target_frame — Set target frame for form display

### Açıklama

function fdf_set_target_frame(resource `$fdf_document`, string `$frame_name`): bool

Sets the target frame to display a result PDF defined with fdf_save_file() in.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`frame_name`
  The frame name, as a string.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_save_file()

# fdf_set_value

(PHP 4, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_value — Set the value of a field

### Açıklama

function fdf_set_value(
resource `$fdf_document`,
string `$fieldname`,
mixed `$value`,
int `$isName` = ?
): bool

Sets the `value` for the given field.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`fieldname`
  Name of the FDF field, as a string.
`value`
  This parameter will be stored as a string unless it is an array. In this case all array elements will be stored as a value array.
`isName`

  > Bilginize: In older versions of the FDF toolkit last parameter determined if the field value was to be converted to a PDF Name (= 1) or set to a PDF String (= 0). The value is no longer used in the current toolkit version 5.0. For compatibility reasons it is still supported as an optional parameter, but ignored internally.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_get_value() - Get the value of a field
- fdf_remove_item() - Sets target frame for form

# fdf_set_version

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL fdf SVN)

fdf_set_version — Sets version number for a FDF file

### Açıklama

function fdf_set_version(resource `$fdf_document`, string `$version`): bool

Sets the FDF `version` for the given document.

Some features supported by this extension are only available in newer FDF versions.

### Bağımsız Değişkenler

`fdf_document`
  The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().
`version`
  The version number. For the current FDF toolkit 5.0, this may be either `1.2`, `1.3` or `1.4`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- fdf_get_version() - Gets version number for FDF API or file

## İçindekiler

- fdf_add_doc_javascript — Adds javascript code to the FDF document
- fdf_add_template — Adds a template into the FDF document
- fdf_close — Close an FDF document
- fdf_create — Create a new FDF document
- fdf_enum_values — Call a user defined function for each document value
- fdf_errno — Return error code for last fdf operation
- fdf_error — Return error description for FDF error code
- fdf_get_ap — Get the appearance of a field
- fdf_get_attachment — Extracts uploaded file embedded in the FDF
- fdf_get_encoding — Get the value of the /Encoding key
- fdf_get_file — Get the value of the /F key
- fdf_get_flags — Gets the flags of a field
- fdf_get_opt — Gets a value from the opt array of a field
- fdf_get_status — Get the value of the /STATUS key
- fdf_get_value — Get the value of a field
- fdf_get_version — Gets version number for FDF API or file
- fdf_header — Sets FDF-specific output headers
- fdf_next_field_name — Get the next field name
- fdf_open — Open a FDF document
- fdf_open_string — Read a FDF document from a string
- fdf_remove_item — Sets target frame for form
- fdf_save — Save a FDF document
- fdf_save_string — Returns the FDF document as a string
- fdf_set_ap — Set the appearance of a field
- fdf_set_encoding — Sets FDF character encoding
- fdf_set_file — Set PDF document to display FDF data in
- fdf_set_flags — Sets a flag of a field
- fdf_set_javascript_action — Sets an javascript action of a field
- fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF
- fdf_set_opt — Sets an option of a field
- fdf_set_status — Set the value of the /STATUS key
- fdf_set_submit_form_action — Sets a submit form action of a field
- fdf_set_target_frame — Set target frame for form display
- fdf_set_value — Set the value of a field
- fdf_set_version — Sets version number for a FDF file

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- FDF İşlevleri
  - fdf_add_doc_javascript — Adds javascript code to the FDF document
  - fdf_add_template — Adds a template into the FDF document
  - fdf_close — Close an FDF document
  - fdf_create — Create a new FDF document
  - fdf_enum_values — Call a user defined function for each document value
  - fdf_errno — Return error code for last fdf operation
  - fdf_error — Return error description for FDF error code
  - fdf_get_ap — Get the appearance of a field
  - fdf_get_attachment — Extracts uploaded file embedded in the FDF
  - fdf_get_encoding — Get the value of the /Encoding key
  - fdf_get_file — Get the value of the /F key
  - fdf_get_flags — Gets the flags of a field
  - fdf_get_opt — Gets a value from the opt array of a field
  - fdf_get_status — Get the value of the /STATUS key
  - fdf_get_value — Get the value of a field
  - fdf_get_version — Gets version number for FDF API or file
  - fdf_header — Sets FDF-specific output headers
  - fdf_next_field_name — Get the next field name
  - fdf_open — Open a FDF document
  - fdf_open_string — Read a FDF document from a string
  - fdf_remove_item — Sets target frame for form
  - fdf_save — Save a FDF document
  - fdf_save_string — Returns the FDF document as a string
  - fdf_set_ap — Set the appearance of a field
  - fdf_set_encoding — Sets FDF character encoding
  - fdf_set_file — Set PDF document to display FDF data in
  - fdf_set_flags — Sets a flag of a field
  - fdf_set_javascript_action — Sets an javascript action of a field
  - fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF
  - fdf_set_opt — Sets an option of a field
  - fdf_set_status — Set the value of the /STATUS key
  - fdf_set_submit_form_action — Sets a submit form action of a field
  - fdf_set_target_frame — Set target frame for form display
  - fdf_set_value — Set the value of a field
  - fdf_set_version — Sets version number for a FDF file

# GNU Privacy Guard

# Giriş

This module allows you to interact with » gnupg.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

This extension requires the » gpgme library

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/gnupg.

# Öntanımlı Sabitler

`GNUPG_SIG_MODE_NORMAL` (int)
`GNUPG_SIG_MODE_DETACH` (int)
`GNUPG_SIG_MODE_CLEAR` (int)
`GNUPG_VALIDITY_UNKNOWN` (int)
`GNUPG_VALIDITY_UNDEFINED` (int)
`GNUPG_VALIDITY_NEVER` (int)
`GNUPG_VALIDITY_MARGINAL` (int)
`GNUPG_VALIDITY_FULL` (int)
`GNUPG_VALIDITY_ULTIMATE` (int)
`GNUPG_PROTOCOL_OpenPGP` (int)
`GNUPG_PROTOCOL_CMS` (int)
`GNUPG_SIGSUM_VALID` (int)
`GNUPG_SIGSUM_GREEN` (int)
`GNUPG_SIGSUM_RED` (int)
`GNUPG_SIGSUM_KEY_REVOKED` (int)
`GNUPG_SIGSUM_KEY_EXPIRED` (int)
`GNUPG_SIGSUM_KEY_MISSING` (int)
`GNUPG_SIGSUM_SIG_EXPIRED` (int)
`GNUPG_SIGSUM_CRL_MISSING` (int)
`GNUPG_SIGSUM_CRL_TOO_OLD` (int)
`GNUPG_SIGSUM_BAD_POLICY` (int)
`GNUPG_SIGSUM_SYS_ERROR` (int)
`GNUPG_ERROR_WARNING` (int)
`GNUPG_ERROR_EXCEPTION` (int)
`GNUPG_ERROR_SILENT` (int)

# Örnekler

## İçindekiler

- Clearsign text

## Clearsign text

This example will clearsign a given text.

Örnek 1 gnupg clearsign example (procedural)

    <?php
    // init gnupg
    $res = gnupg_init();
    // not really needed. Clearsign is default
    gnupg_setsignmode($res,GNUPG_SIG_MODE_CLEAR);
    // add key with passphrase 'test' for signing
    gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    // sign
    $signed = gnupg_sign($res,"just a test");
    echo $signed;
    ?>

Örnek 2 gnupg clearsign example (OO)

    <?php
    // new class
    $gnupg = new gnupg();
    // not really needed. Clearsign is default
    $gnupg->setsignmode(gnupg::SIG_MODE_CLEAR);
    // add key with passphrase 'test' for signing
    $gnupg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    // sign
    $signed = $gnupg->sign("just a test");
    echo $signed;
    ?>

Örnek 3 keylistiterator

This extension also comes with an Iterator for your keyring.

    <?php
    // create a new iterator for listing all public keys that matches 'example'
    $iterator = new gnupg_keylistiterator("example");
    foreach($iterator as $fingerprint => $userid){
        echo $fingerprint." -> ".$userid."\n";
    }
    ?>

# GnuPG İşlevleri

# Notlar

This extension makes use of the keyring of the current user. This keyring is normally located in ~/.gnupg/. To specify a custom location, store the path to the keyring in the environment variable GNUPGHOME. See putenv for more information how to do this.

Some functions require the specification of a key. This specification can be anything that refers to a unique key (userid, key-id, fingerprint, ...). This documentation uses the fingerprint in all examples.

> Bilginize: As alternative to the explicitly documented functions using resources, you can also use an object-oriented style using gnupg objects.

# gnupg_adddecryptkey

(PECL gnupg >= 0.5)

gnupg_adddecryptkey — Add a key for decryption

### Açıklama

function gnupg_adddecryptkey(resource `$identifier`, string `$fingerprint`, string `$passphrase`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`fingerprint`

  Parmakizi anahtarı.

`passphrase`
  The pass phrase.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_adddecryptkey() example

    <?php
    $res = gnupg_init();
    gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    ?>

Örnek 2 OO gnupg_adddecryptkey() example

    <?php
    $gpg = new gnupg();
    $gpg->adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    ?>

# gnupg_addencryptkey

(PECL gnupg >= 0.5)

gnupg_addencryptkey — Add a key for encryption

### Açıklama

function gnupg_addencryptkey(resource `$identifier`, string `$fingerprint`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`fingerprint`

  Parmakizi anahtarı.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_addencryptkey() example

    <?php
    $res = gnupg_init();
    gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
    ?>

Örnek 2 OO gnupg_addencryptkey() example

    <?php
    $gpg = new gnupg();
    $gpg->addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
    ?>

# gnupg_addsignkey

(PECL gnupg >= 0.5)

gnupg_addsignkey — Add a key for signing

### Açıklama

function gnupg_addsignkey(resource `$identifier`, string `$fingerprint`, string `$passphrase` = ?): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`fingerprint`

  Parmakizi anahtarı.

`passphrase`
  The pass phrase.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_addsignkey() example

    <?php
    $res = gnupg_init();
    gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    ?>

Örnek 2 OO gnupg_addsignkey() example

    <?php
    $gpg = new gnupg();
    $gpg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    ?>

# gnupg_cleardecryptkeys

(PECL gnupg >= 0.5)

gnupg_cleardecryptkeys — Removes all keys which were set for decryption before

### Açıklama

function gnupg_cleardecryptkeys(resource `$identifier`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_cleardecryptkeys() example

    <?php
    $res = gnupg_init();
    gnupg_cleardecryptkeys($res);
    ?>

Örnek 2 OO gnupg_cleardecryptkeys() example

    <?php
    $gpg = new gnupg();
    $gpg->cleardecryptkeys();
    ?>

# gnupg_clearencryptkeys

(PECL gnupg >= 0.5)

gnupg_clearencryptkeys — Removes all keys which were set for encryption before

### Açıklama

function gnupg_clearencryptkeys(resource `$identifier`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_clearencryptkeys() example

    <?php
    $res = gnupg_init();
    gnupg_clearencryptkeys($res);
    ?>

Örnek 2 OO gnupg_clearencryptkeys() example

    <?php
    $gpg = new gnupg();
    $gpg->clearencryptkeys();
    ?>

# gnupg_clearsignkeys

(PECL gnupg >= 0.5)

gnupg_clearsignkeys — Removes all keys which were set for signing before

### Açıklama

function gnupg_clearsignkeys(resource `$identifier`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_clearsignkeys() example

    <?php
    $res = gnupg_init();
    gnupg_clearsignkeys($res);
    ?>

Örnek 2 OO gnupg_clearsignkeys() example

    <?php
    $gpg = new gnupg();
    $gpg->clearsignkeys();
    ?>

# gnupg_decrypt

(PECL gnupg >= 0.1)

gnupg_decrypt — Decrypts a given text

### Açıklama

function gnupg_decrypt(resource `$identifier`, string `$text`): string|false

Decrypts the given text with the keys, which were set with gnupg_adddecryptkey before.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`text`
  The text being decrypted.

### Dönen Değerler

On success, this function returns the decrypted text. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_decrypt() example

    <?php
    $res = gnupg_init();
    gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    $plain = gnupg_decrypt($res,$encrypted_text);
    echo $plain;
    ?>

Örnek 2 OO gnupg_decrypt() example

    <?php
    $gpg = new gnupg();
    $gpg->adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    $plain = $gpg->decrypt($encrypted_text);
    echo $plain;
    ?>

# gnupg_decryptverify

(PECL gnupg >= 0.2)

gnupg_decryptverify — Decrypts and verifies a given text

### Açıklama

function gnupg_decryptverify(resource `$identifier`, string `$text`, string `&$plaintext`): array|false

Decrypts and verifies a given text and returns information about the signature.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`text`
  The text being decrypted.
`plaintext`
  The parameter `plaintext` gets filled with the decrypted text.

### Dönen Değerler

On success, this function returns information about the signature and fills the `plaintext` parameter with the decrypted text. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_decryptverify() example

    <?php
    $plaintext = "";
    $res = gnupg_init();
    gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    $info = gnupg_decryptverify($res,$text,$plaintext);
    print_r($info);
    ?>

Örnek 2 OO gnupg_decryptverify() example

    <?php
    $plaintext = "";
    $gpg = new gnupg();
    $gpg->adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    $info = $gpg->decryptverify($text,$plaintext);
    print_r($info);
    ?>

# gnupg_deletekey

(PECL gnupg >= 0.5)

gnupg_deletekey — Delete a key from the keyring

### Açıklama

function gnupg_deletekey(resource `$identifier`, string `$key`, bool `$allow_secret`): bool

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`key`
  The key to delete.
`allow_secret`
  It specifies whether to delete secret keys as well.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_deletekey() example

    <?php
    $res = gnupg_init();
    gnupg_deletekey($res, "8660281B6051D071D94B5B230549F9DC851566DC");
    ?>

Örnek 2 OO gnupg_deletekey() example

    <?php
    $gpg = new gnupg();
    $gpg->deletekey("8660281B6051D071D94B5B230549F9DC851566DC");
    ?>

# gnupg_encrypt

(PECL gnupg >= 0.1)

gnupg_encrypt — Encrypts a given text

### Açıklama

function gnupg_encrypt(resource `$identifier`, string `$plaintext`): string|false

Encrypts the given `plaintext` with the keys, which were set with gnupg_addencryptkey before and returns the encrypted text.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`plaintext`
  The text being encrypted.

### Dönen Değerler

On success, this function returns the encrypted text. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_encrypt() example

    <?php
    $res = gnupg_init();
    gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
    $enc = gnupg_encrypt($res, "just a test");
    echo $enc;
    ?>

Örnek 2 OO gnupg_encrypt() example

    <?php
    $gpg = new gnupg();
    $gpg->addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
    $enc = $gpg->encrypt("just a test");
    echo $enc;
    ?>

# gnupg_encryptsign

(PECL gnupg >= 0.2)

gnupg_encryptsign — Encrypts and signs a given text

### Açıklama

function gnupg_encryptsign(resource `$identifier`, string `$plaintext`): string|false

Encrypts and signs the given `plaintext` with the keys, which were set with gnupg_addsignkey and gnupg_addencryptkey before and returns the encrypted and signed text.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`plaintext`
  The text being encrypted.

### Dönen Değerler

On success, this function returns the encrypted and signed text. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_encryptsign() example

    <?php
    $res = gnupg_init();
    gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
    gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    $enc = gnupg_encryptsign($res, "just a test");
    echo $enc;
    ?>

Örnek 2 OO gnupg_encryptsign() example

    <?php
    $gpg = new gnupg();
    $gpg->addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
    $gpg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    $enc = $gpg->encryptsign("just a test");
    echo $enc;
    ?>

# gnupg_export

(PECL gnupg >= 0.1)

gnupg_export — Exports a key

### Açıklama

function gnupg_export(resource `$identifier`, string `$fingerprint`): string|false

Exports the key `fingerprint`.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`fingerprint`

  Parmakizi anahtarı.

### Dönen Değerler

On success, this function returns the keydata. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_export() example

    <?php
    $res = gnupg_init();
    $export = gnupg_export($res,"8660281B6051D071D94B5B230549F9DC851566DC");
    echo $export;
    ?>

Örnek 2 OO gnupg_export() example

    <?php
    $gpg = new gnupg();
    $export = $gpg->export("8660281B6051D071D94B5B230549F9DC851566DC");
    ?>

# gnupg_getengineinfo

(PECL gnupg >= 1.5)

gnupg_getengineinfo — Returns the engine info

### Açıklama

function gnupg_getengineinfo(resource `$identifier`): array

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Returns an array with engine info consisting of `protocol`, `file_name` and `home_dir`.

### Örnekler

Örnek 1 Procedural gnupg_getengineinfo() example

    <?php
    $res = gnupg_init();
    print_r(gnupg_getengineinfo($res));
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      ["protocol"]=>
      int(0)
      ["file_name"]=>
      string(12) "/usr/bin/gpg"
      ["home_dir"]=>
      string(0) ""
    }

Örnek 2 OO gnupg_getengineinfo() example

    <?php
    $gpg = new gnupg(["file_name" => "/usr/bin/gpg2", "home_dir" => "/var/www/.gnupg"]);
    print_r($gpg->getengineinfo());
    ?>

Yukarıdaki örneğin çıktısı:

    array(3) {
      ["protocol"]=>
      int(0)
      ["file_name"]=>
      string(13) "/usr/bin/gpg2"
      ["home_dir"]=>
      string(15) "/var/www/.gnupg"
    }

# gnupg_geterror

(PECL gnupg >= 0.1)

gnupg_geterror — Returns the errortext, if a function fails

### Açıklama

function gnupg_geterror(resource `$identifier`): string|false

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Returns an errortext, if an error has occurred, otherwise `false`.

### Örnekler

Örnek 1 Procedural gnupg_geterror() example

    <?php
    $res = gnupg_init();
    echo gnupg_geterror($res);
    ?>

Örnek 2 OO gnupg_geterror() example

    <?php
    $gpg = new gnupg();
    echo $gpg->geterror();
    ?>

# gnupg_geterrorinfo

(PECL gnupg >= 1.5)

gnupg_geterrorinfo — Returns the error info

### Açıklama

function gnupg_geterrorinfo(resource `$identifier`): array

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Returns an array with error info.

### Örnekler

Örnek 1 Procedural gnupg_geterrorinfo() example

    <?php
    $res = gnupg_init();
    // this is called without any error
    print_r(gnupg_geterrorinfo($res));
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      ["generic_message"]=>
      bool(false)
      ["gpgme_code"]=>
      int(0)
      ["gpgme_source"]=>
      string(18) "Unspecified source"
      ["gpgme_message"]=>
      string(7) "Success"
    }

Örnek 2 OO gnupg_geterrorinfo() example

    <?php
    $gpg = new gnupg();
    // error call
    $gpg->decrypt('abc');
    // error info should be displayed
    print_r($gpg->geterrorinfo());
    ?>

Yukarıdaki örneğin çıktısı:

    array(4) {
      ["generic_message"]=>
      string(14) "decrypt failed"
      ["gpgme_code"]=>
      int(117440570)
      ["gpgme_source"]=>
      string(5) "GPGME"
      ["gpgme_message"]=>
      string(7) "No data"
    }

# gnupg_getprotocol

(PECL gnupg >= 0.1)

gnupg_getprotocol — Returns the currently active protocol for all operations

### Açıklama

function gnupg_getprotocol(resource `$identifier`): int

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

### Dönen Değerler

Returns the currently active protocol, which can be one of `GNUPG_PROTOCOL_OpenPGP` or `GNUPG_PROTOCOL_CMS`.

### Örnekler

Örnek 1 Procedural gnupg_getprotocol() example

    <?php
    $res = gnupg_init();
    echo gnupg_getprotocol($res);
    ?>

Örnek 2 OO gnupg_getprotocol() example

    <?php
    $gpg = new gnupg();
    echo $gpg->getprotocol();
    ?>

# gnupg_gettrustlist

(PECL gnupg >= 0.5)

gnupg_gettrustlist — Search the trust items

### Açıklama

function gnupg_gettrustlist(resource `$identifier`, string `$pattern`): ?array

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`pattern`
  Expression to limit the list of trust items to only the ones matching the pattern.

### Dönen Değerler

On success, this function returns an array of trust items. On failure, this function returns `null`.

### Örnekler

Örnek 1 Procedural gnupg_gettrustlist() example

    <?php
    $res = gnupg_init();
    $items = gnupg_gettrustlist($res);
    print_r($items);
    ?>

Örnek 2 OO gnupg_gettrustlist() example

    <?php
    $gpg = new gnupg();
    $items = $gpg->gettrustlist();
    print_r($items);
    ?>

# gnupg_import

(PECL gnupg >= 0.3)

gnupg_import — Imports a key

### Açıklama

function gnupg_import(resource `$identifier`, string `$keydata`): array|false

Imports the key `keydata` and returns an array with information about the importprocess.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`keydata`
  The data key that is being imported.

### Dönen Değerler

On success, this function returns and info-array about the importprocess. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_import() example

    <?php
    $res = gnupg_init();
    $info = gnupg_import($res,$keydata);
    print_r($info);
    ?>

Örnek 2 OO gnupg_import() example

    <?php
    $gpg = new gnupg();
    $info = $gpg->import($keydata);
    print_r($info);
    ?>

# gnupg_init

(PECL gnupg >= 0.4)

gnupg_init — Initialize a connection

### Açıklama

function gnupg_init(?array `$options` = `null`): resource

### Bağımsız Değişkenler

`options`

  Must be an associative array. It is used to change the default configuration of the crypto engine.

  Configuration overrides
  key | type | description
  --- | --- | ---
  file_name | string | It is the file name of the executable program implementing this protocol which is usually path of the `gpg` executable.
  home_dir | string | It is the directory name of the configuration directory. It also overrides `GNUPGHOME` environment variable that is used for the same purpose.

### Dönen Değerler

A GnuPG resource connection used by other GnuPG functions.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL gnupg 1.5.0 | The `options` parameter was added.

### Örnekler

Örnek 1 Procedural gnupg_init() example with default setting

    <?php
    $res = gnupg_init();
    ?>

Örnek 2 Procedural gnupg_init() example with overridden file name and home dir

    <?php
    $res = gnupg_init(["file_name" => "/usr/bin/gpg2", "home_dir" => "/var/www/.gnupg"]);
    ?>

Örnek 3 OO gnupg initializer example with default setting

    <?php
    $gpg = new gnupg();
    ?>

Örnek 4 OO gnupg initializer example with overridden file name and home dir

    <?php
    $gpg = new gnupg(["file_name" => "/usr/bin/gpg2", "home_dir" => "/var/www/.gnupg"]);
    ?>

# gnupg_keyinfo

(PECL gnupg >= 0.1)

gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern

### Açıklama

function gnupg_keyinfo(resource `$identifier`, string `$pattern`): array|false

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`pattern`
  The pattern being checked against the keys.

### Dönen Değerler

Returns an array with information about all keys that matches the given pattern or `false`, if an error has occurred.

### Örnekler

Örnek 1 Procedural gnupg_keyinfo() example

    <?php
    $res = gnupg_init();
    $info = gnupg_keyinfo($res, 'test');
    print_r($info);
    ?>

Örnek 2 OO gnupg_keyinfo() example

    <?php
    $gpg = new gnupg();
    $info = $gpg->keyinfo("test");
    print_r($info);
    ?>

# gnupg_listsignatures

(PECL gnupg >= 0.5)

gnupg_listsignatures — List key signatures

### Açıklama

function gnupg_listsignatures(resource `$identifier`, string `$keyid`): ?array

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`keyid`
  The key ID to list signatures for.

### Dönen Değerler

On success, this function returns an array of key signatures. On failure, this function returns `null`.

### Örnekler

Örnek 1 Procedural gnupg_listsignatures() example

    <?php
    $res = gnupg_init();
    $signatures = gnupg_listsignatures($res, "8660281B6051D071D94B5B230549F9DC851566DC");
    print_r($signatures);
    ?>

Örnek 2 OO gnupg_listsignatures() example

    <?php
    $gpg = new gnupg();
    $signatures = $gpg->listsignatures("8660281B6051D071D94B5B230549F9DC851566DC");
    print_r($signatures);
    ?>

# gnupg_setarmor

(PECL gnupg >= 0.1)

gnupg_setarmor — Toggle armored output

### Açıklama

function gnupg_setarmor(resource `$identifier`, int `$armor`): bool

Toggle the armored output.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`armor`
  Pass a non-zero integer-value to this function to enable armored-output (default). Pass 0 to disable armored output.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_setarmor() example

    <?php
    $res = gnupg_init();
    gnupg_setarmor($res,1); // enable armored output;
    gnupg_setarmor($res,0); // disable armored output;
    ?>

Örnek 2 OO gnupg_setarmor() example

    <?php
    $gpg = new gnupg();
    $gpg->setarmor(1); // enable armored output;
    $gpg->setarmor(0); // disable armored output;
    ?>

# gnupg_seterrormode

(PECL gnupg >= 0.6)

gnupg_seterrormode — Sets the mode for error_reporting

### Açıklama

function gnupg_seterrormode(resource `$identifier`, int `$errormode`): void

Sets the mode for error_reporting.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`errormode`
  The error mode. `errormode` takes a constant indicating what type of error_reporting should be used. The possible values are `GNUPG_ERROR_WARNING`, `GNUPG_ERROR_EXCEPTION` and `GNUPG_ERROR_SILENT`. By default `GNUPG_ERROR_SILENT` is used.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Procedural gnupg_seterrormode() example

    <?php
    $res = gnupg_init();
    gnupg_seterrormode($res,GNUPG_ERROR_WARNING); // raise a PHP-Warning in case of an error
    ?>

Örnek 2 OO gnupg_seterrormode() example

    <?php
    $gpg = new gnupg();
    $gpg->seterrormode(gnupg::ERROR_EXCEPTION); // throw an exception in case of an error
    ?>

# gnupg_setsignmode

(PECL gnupg >= 0.1)

gnupg_setsignmode — Sets the mode for signing

### Açıklama

function gnupg_setsignmode(resource `$identifier`, int `$signmode`): bool

Sets the mode for signing.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`sigmode`
  The mode for signing. `signmode` takes a constant indicating what type of signature should be produced. The possible values are `GNUPG_SIG_MODE_NORMAL`, `GNUPG_SIG_MODE_DETACH` and `GNUPG_SIG_MODE_CLEAR`. By default `GNUPG_SIG_MODE_CLEAR` is used.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Procedural gnupg_setsignmode() example

    <?php
    $res = gnupg_init();
    gnupg_setsignmode($res,GNUPG_SIG_MODE_DETACH); // produce a detached signature
    ?>

Örnek 2 OO gnupg_setsignmode() example

    <?php
    $gpg = new gnupg();
    $gpg->setsignmode(gnupg::SIG_MODE_DETACH); // produce a detached signature
    ?>

# gnupg_sign

(PECL gnupg >= 0.1)

gnupg_sign — Signs a given text

### Açıklama

function gnupg_sign(resource `$identifier`, string `$plaintext`): string|false

Signs the given `plaintext` with the keys, which were set with gnupg_addsignkey before and returns the signed text or the signature, depending on what was set with gnupg_setsignmode.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`plaintext`
  The plain text being signed.

### Dönen Değerler

On success, this function returns the signed text or the signature. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_sign() example

    <?php
    $res = gnupg_init();
    gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
    $signed = gnupg_sign($res, "just a test");
    echo $signed;
    ?>

Örnek 2 OO gnupg_sign() example

    <?php
    $gpg = new gnupg();
    $gpg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
    $signed = $gpg->sign("just a test");
    echo $signed;
    ?>

# gnupg_verify

(PECL gnupg >= 0.1)

gnupg_verify — Verifies a signed text

### Açıklama

function gnupg_verify(
resource `$identifier`,
string `$signed_text`,
string `$signature`,
string `&$plaintext` = ?
): array|false

Verifies the given `signed_text` and returns information about the signature.

### Bağımsız Değişkenler

`identifier`

  Gnupg tanıtıcısı, bir gnupg_init() çağrısından veya gnupg nesnesinden elde edilir.

`signed_text`
  The signed text.
`signature`
  The signature. To verify a clearsigned text, set signature to `false`.
`plaintext`
  The plain text. If this optional parameter is passed, it is filled with the plain text.

### Dönen Değerler

On success, this function returns information about the signature. On failure, this function returns `false`.

### Örnekler

Örnek 1 Procedural gnupg_verify() example

    <?php
    $plaintext = "";
    $res = gnupg_init();
    // clearsigned
    $info = gnupg_verify($res,$signed_text,false,$plaintext);
    print_r($info);
    // detached signature
    $info = gnupg_verify($res,$signed_text,$signature);
    print_r($info);
    ?>

Örnek 2 OO gnupg_verify() example

    <?php
    $plaintext = "";
    $gpg = new gnupg();
    // clearsigned
    $info = $gpg->verify($signed_text,false,$plaintext);
    print_r($info);
    // detached signature
    $info = $gpg->verify($signed_text,$signature);
    print_r($info);
    ?>

## İçindekiler

- gnupg_adddecryptkey — Add a key for decryption
- gnupg_addencryptkey — Add a key for encryption
- gnupg_addsignkey — Add a key for signing
- gnupg_cleardecryptkeys — Removes all keys which were set for decryption before
- gnupg_clearencryptkeys — Removes all keys which were set for encryption before
- gnupg_clearsignkeys — Removes all keys which were set for signing before
- gnupg_decrypt — Decrypts a given text
- gnupg_decryptverify — Decrypts and verifies a given text
- gnupg_deletekey — Delete a key from the keyring
- gnupg_encrypt — Encrypts a given text
- gnupg_encryptsign — Encrypts and signs a given text
- gnupg_export — Exports a key
- gnupg_getengineinfo — Returns the engine info
- gnupg_geterror — Returns the errortext, if a function fails
- gnupg_geterrorinfo — Returns the error info
- gnupg_getprotocol — Returns the currently active protocol for all operations
- gnupg_gettrustlist — Search the trust items
- gnupg_import — Imports a key
- gnupg_init — Initialize a connection
- gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern
- gnupg_listsignatures — List key signatures
- gnupg_setarmor — Toggle armored output
- gnupg_seterrormode — Sets the mode for error_reporting
- gnupg_setsignmode — Sets the mode for signing
- gnupg_sign — Signs a given text
- gnupg_verify — Verifies a signed text

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
- Öntanımlı Sabitler
- Örnekler
  - Clearsign text
- GnuPG İşlevleri
  - gnupg_adddecryptkey — Add a key for decryption
  - gnupg_addencryptkey — Add a key for encryption
  - gnupg_addsignkey — Add a key for signing
  - gnupg_cleardecryptkeys — Removes all keys which were set for decryption before
  - gnupg_clearencryptkeys — Removes all keys which were set for encryption before
  - gnupg_clearsignkeys — Removes all keys which were set for signing before
  - gnupg_decrypt — Decrypts a given text
  - gnupg_decryptverify — Decrypts and verifies a given text
  - gnupg_deletekey — Delete a key from the keyring
  - gnupg_encrypt — Encrypts a given text
  - gnupg_encryptsign — Encrypts and signs a given text
  - gnupg_export — Exports a key
  - gnupg_getengineinfo — Returns the engine info
  - gnupg_geterror — Returns the errortext, if a function fails
  - gnupg_geterrorinfo — Returns the error info
  - gnupg_getprotocol — Returns the currently active protocol for all operations
  - gnupg_gettrustlist — Search the trust items
  - gnupg_import — Imports a key
  - gnupg_init — Initialize a connection
  - gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern
  - gnupg_listsignatures — List key signatures
  - gnupg_setarmor — Toggle armored output
  - gnupg_seterrormode — Sets the mode for error_reporting
  - gnupg_setsignmode — Sets the mode for signing
  - gnupg_sign — Signs a given text
  - gnupg_verify — Verifies a signed text

# wkhtmltox

# Giriş

libwkhtmltox is an open source LGPLv3 library for rendering HTML into PDF and various image formats using the QtWebKit rendering engine.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Çalışma Anı Yapılandırması

## Gereksinimler

libwkhtmltox source and binary releases are distributed at » wkhtmltopdf.org.

Dikkat

Windows users need to take the additional step of adding wkhtmltox.dll to their PATH.

## Kurulum

The source code of this extension, and binaries for Windows are hosted by » github,

Fetching the source code and building the extension:

    git clone https://github.com/krakjoe/wkhtmltox
    cd wkhtmltox
    phpize
    ./configure --with-wkhtmltox=/path/to/wkhtmltox/installation
    make
    sudo make install

Fetching updates and rebuilding the extension:

    cd wkhtmltox
    phpize --clean
    git pull origin master
    phpize
    ./configure --with-wkhtmltox=/path/to/wkhtmltox/installation
    make
    sudo make install

## Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

wkhtmltox Yapılandırma Seçenekleri
İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi
--- | --- | --- | ---
wkhtmltox.graphics | Off | `INI_SYSTEM`|`INI_PERDIR` | >= 0.3.2

INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

`wkhtmltox.graphics` bool

  Allow libwkhtmltox to use graphics.

# The wkhtmltox\PDF\Converter class

(wkhtmltox >= 0.1.0)

## Giriş

Converts an HTML input, or set of HTML inputs, into PDF output

## Sınıf Sözdizimi

class wkhtmltox\PDF\Converter {
/* Constructor */
public function __construct(array `$settings` = ?)
/* Yöntemler */
public function add(wkhtmltox\PDF\Object `$object`): void
public function convert(): ?string
public function getVersion(): string
}

# wkhtmltox\PDF\Converter::add

(wkhtmltox >= 0.1.0)

wkhtmltox\PDF\Converter::add — Add an object for conversion

### Açıklama

public function wkhtmltox\PDF\Converter::add(wkhtmltox\PDF\Object `$object`): void

Adds the given object to conversion

### Bağımsız Değişkenler

`object`

  The object to add

# wkhtmltox\PDF\Converter::__construct

(wkhtmltox >= 0.1.0)

wkhtmltox\PDF\Converter::__construct — Create a new PDF converter

### Açıklama

public function wkhtmltox\PDF\Converter::__construct(array `$settings` = ?)

Creates a PDF converter, using optional configuration settings

### Bağımsız Değişkenler

`settings`

  Name | Description | Values | Changelog
  --- | --- | --- | ---
  size.pageSize | paper size of output document | A4 | >= 0.1.0
  size.width | with of the output document | 210mm | >= 0.1.0
  size.height | height of the output document | 297mm | >= 0.1.0
  orientation | orientation of the output document |
  Landscape
  Portrait
  | >= 0.1.0
  colorMode | color mode of the output document |
  Color
  Greyscale
  | >= 0.1.0
  resolution | resolution of the output document | most likely has no effect | >= 0.1.0
  dpi | dpi to use while printing | 80 | >= 0.1.0
  pageOffset | integer added to page numbers generating headers, footers, and toc |  | >= 0.1.0
  copies |  |  | >= 0.1.0
  collate | collate copies | boolean | >= 0.1.0
  outline | generate PDF outline | boolean | >= 0.1.0
  outlineDepth | maximum depth of outline |  | >= 0.1.0
  dumpOutline | path of file to dump outline XML |  | >= 0.1.0
  out | path of output file, if "-" stdout is used |  | >= 0.1.0
  documentTitle | title for the output document |  | >= 0.1.0
  useCompression | enable or disable lossless compression | boolean | >= 0.1.0
  margin.top | size of the top margin | 2cm | >= 0.1.0
  margin.bottom | size of the bottom margin | 2cm | >= 0.1.0
  margin.left | size of the left margin | 2cm | >= 0.1.0
  margin.right | size of the right margin | 2cm | >= 0.1.0
  imageDPI | maximum DPI for images in the output document |  | >= 0.1.0
  imageQuality | the jpeg compression factor for images in the output document | 94 | >= 0.1.0
  load.cookieJar | path of file used to load and store cookies | /tmp/cookies.txt | >= 0.1.0

# wkhtmltox\PDF\Converter::convert

(wkhtmltox >= 0.1.0)

wkhtmltox\PDF\Converter::convert — Perform PDF conversion

### Açıklama

public function wkhtmltox\PDF\Converter::convert(): ?string

Performs conversion of all previously added Objects

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Where the return value is used, it will be populated with the contents of the conversion buffer

# wkhtmltox\PDF\Converter::getVersion

(wkhtmltox >= 0.3.2)

wkhtmltox\PDF\Converter::getVersion — Determine version of Converter

### Açıklama

public function wkhtmltox\PDF\Converter::getVersion(): string

Determines the version of Converter as reported by libwkhtmltox

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a version string

## İçindekiler

- wkhtmltox\PDF\Converter::add — Add an object for conversion
- wkhtmltox\PDF\Converter::__construct — Create a new PDF converter
- wkhtmltox\PDF\Converter::convert — Perform PDF conversion
- wkhtmltox\PDF\Converter::getVersion — Determine version of Converter

# The wkhtmltox\PDF\Object class

(wkhtmltox >= 0.1.0)

## Giriş

Represents an HTML document, input to PDF converter

## Sınıf Sözdizimi

class wkhtmltox\PDF\Object {
/* Constructor */
public function __construct(string `$buffer`, array `$settings` = ?)
}

# wkhtmltox\PDF\Object::__construct

(wkhtmltox >= 0.1.0)

wkhtmltox\PDF\Object::__construct — Create a new PDF Object

### Açıklama

public function wkhtmltox\PDF\Object::__construct(string `$buffer`, array `$settings` = ?)

Creates a new PDF Object from the given buffer and optional configuration settings

### Bağımsız Değişkenler

`buffer`

  HTML

`settings`

  Name | Description | Values | Changelog
  --- | --- | --- | ---
  page | URL or path of the HTML to convert |  | >= 0.1.0
  useExternalLinks | set true to convert external links in the input into external PDF links in the output | boolean | >= 0.1.0
  useLocalLinks | set true to convert internal links in the input into internal PDF links in the output | boolean | >= 0.1.0
  produceForms | set true to turn HTML forms into PDF forms | boolean | >= 0.1.0
  replacements | undocumented |  | >= 0.1.0
  includeInOutline | set true to include sections from this object in the outline and toc | boolean | >= 0.1.0
  pagesCount | set true to make page count in toc inclusive of the number of pages in this object | boolean | >= 0.1.0
  tocXsl | set to style sheet to convert this object into a toc object |  | >= 0.1.0
  toc.useDottedLines | set true to use dotted lines in toc | boolean | >= 0.1.0
  toc.captionText | the caption text for toc |  | >= 0.1.0
  toc.forwardLinks | set true to create links from toc to content | boolean | >= 0.1.0
  toc.backLinks | set true to create links from content to toc | boolean | >= 0.1.0
  toc.indentation | indentation for toc | 2em | >= 0.1.0
  toc.fontScale | the factor to scale down the font at every toc level | 0.8 | >= 0.1.0
  header.fontSize | font size for use in header | 13 | >= 0.1.0
  header.fontName | name of font for use in header | times | >= 0.1.0
  header.left | text for left of header |  | >= 0.1.0
  header.center | text for center of header |  | >= 0.1.0
  header.right | text for right of header |  | >= 0.1.0
  header.line | enable or disable horizontal rule under header | boolean | >= 0.1.0
  header.spacing | space between header and content | 1.8 | >= 0.1.0
  header.htmlUrl | URL or path of HTML to use in header |  | >= 0.1.0
  footer.fontSize | font size for use in footer | 13 | >= 0.1.0
  footer.fontName | name of font for use in footer | times | >= 0.1.0
  footer.left | text for left of footer |  | >= 0.1.0
  footer.center | text for center of footer |  | >= 0.1.0
  footer.right | text for right of footer |  | >= 0.1.0
  footer.line | enable or disable horizontal rule under footer | boolean | >= 0.1.0
  footer.spacing | space between footer and content | 1.8 | >= 0.1.0
  footer.htmlUrl | URL or path of HTML to use in footer |  | >= 0.1.0
  load.username | user name to use when loging into a website | bart | >= 0.1.0
  load.password | the password to used when logging into a website | elbarto | >= 0.1.0
  load.jsdelay | the amount of time in milliseconds to wait after a page is loaded until it is captured | 1200 | >= 0.1.0
  load.zoomFactor | how much zoom should be applied to the content | 2.2 | >= 0.1.0
  load.customHeaders | custom headers to send when requesting the main web page |  | >= 0.1.0
  load.repertCustomHeaders | set true to send with all requests | boolean | >= 0.1.0
  load.cookies | cookie string to send when requesting the main web page |  | >= 0.1.0
  load.post | post string to send when requesting the main web page |  | >= 0.1.0
  load.blockLocalFileAccess | disallow local and piped files to access other local files | boolean | >= 0.1.0
  load.stopSlowScript | stop slow running javascript | boolean |
  load.debugJavascript | allow javascript to raise warnings | boolean | >= 0.1.0
  load.loadErrorHandling | set error handling strategy |
  abort | abort the convertion process
  skip | do not add the object to the final output
  ignore | try to add the object to the final output
  | >= 0.1.0
  load.proxy |  |  | >= 0.1.0
  web.background | include background image in output | boolean | >= 0.1.0
  web.loadImages | include images in output | boolean | >= 0.1.0
  web.enableJavascript | enable or disable javascript | boolean | >= 0.1.0
  web.enableIntelligentShrinking | enable to attempt to fit more content on page, only applies to PDF output | boolean | >= 0.1.0
  web.minimumFontSize | the minimum font size allowed | 9 | >= 0.1.0
  web.printMediaType | print content using print media type instead of screen media type | boolean | >= 0.1.0
  web.defaultEncoding | content to use where no encoding is specified | utf-8 | >= 0.1.0
  web.userStyleSheet | URL or path to a user specified style sheet | /path/to/style.css | >= 0.1.0
  web.enablePlugins | enable or disable NS plugins | boolean | >= 0.1.0

## İçindekiler

- wkhtmltox\PDF\Object::__construct — Create a new PDF Object

# The wkhtmltox\Image\Converter class

(wkhtmltox >= 0.1.0)

## Giriş

Converts an HTML input into various image formats

## Sınıf Sözdizimi

class wkhtmltox\Image\Converter {
/* Constructor */
public function __construct(string `$buffer` = ?, array `$settings` = ?)
/* Yöntemler */
public function convert(): ?string
public function getVersion(): string
}

# wkhtmltox\Image\Converter::__construct

(wkhtmltox >= 0.1.0)

wkhtmltox\Image\Converter::__construct — Create a new Image converter

### Açıklama

public function wkhtmltox\Image\Converter::__construct(string `$buffer` = ?, array `$settings` = ?)

Creates an Image converter, optionally taking an input buffer and configuration settings

### Bağımsız Değişkenler

`buffer`

  HTML

`settings`

  Name | Description | Values | Changelog
  --- | --- | --- | ---
  in | URL or path of the input file, if "-" stdin is used | /path/to/markup.html | >= 0.1.0
  out | path of output file, if "-" stdout is used, by default an internal buffer is used | /path/to/output.png | >= 0.1.0
  fmt | output format to use |
  "" | default
  jpg | output as JPEG
  png | output as PNG
  bmp | output as bitmap
  svg | output as SVG
  | >= 0.1.0
  transparent | when outputting a PNG or SVG, make the white background transparent | boolean | >= 0.1.0
  screenWidth | the with of the screen used to render in pixels | 800 | >= 0.1.0
  smartWidth | when true, screenWidth is expanded to the content width | boolean | >= 0.1.0
  quality | compression factor to use when outputting a JPEG image | 94 | >= 0.1.0
  crop.left | left/x coordinate of the window to capture in pixels | 200 | >= 0.1.0
  crop.top | top/y coordinate of the window to capture in pixels | 200 | >= 0.1.0
  crop.width | width of the window to capture in pixels | 200 | >= 0.1.0
  crop.height | height of the window to capture in pixels | 200 | >= 0.1.0
  load.cookieJar | path of file used to load and store cookies | /tmp/cookies.txt | >= 0.1.0
  load.username | user name to use when loging into a website | bart | >= 0.1.0
  load.password | the password to used when logging into a website | elbarto | >= 0.1.0
  load.jsdelay | the amount of time in milliseconds to wait after a page is loaded until it is captured | 1200 | >= 0.1.0
  load.zoomFactor | how much zoom should be applied to the content | 2.2 | >= 0.1.0
  load.customHeaders | custom headers to send when requesting the main web page |  | >= 0.1.0
  load.repertCustomHeaders | set true to send with all requests | boolean | >= 0.1.0
  load.cookies | cookie string to send when requesting the main web page |  | >= 0.1.0
  load.post | post string to send when requesting the main web page |  | >= 0.1.0
  load.blockLocalFileAccess | disallow local and piped files to access other local files | boolean | >= 0.1.0
  load.stopSlowScript | stop slow running javascript | boolean |
  load.debugJavascript | allow javascript to raise warnings | boolean | >= 0.1.0
  load.loadErrorHandling | set error handling strategy |
  abort | abort the convertion process
  skip | do not add the object to the final output
  ignore | try to add the object to the final output
  | >= 0.1.0
  load.proxy |  |  | >= 0.1.0
  web.background | include background image in output | boolean | >= 0.1.0
  web.loadImages | include images in output | boolean | >= 0.1.0
  web.enableJavascript | enable or disable javascript | boolean | >= 0.1.0
  web.enableIntelligentShrinking | enable to attempt to fit more content on page, only applies to PDF output | boolean | >= 0.1.0
  web.minimumFontSize | the minimum font size allowed | 9 | >= 0.1.0
  web.printMediaType | print content using print media type instead of screen media type | boolean | >= 0.1.0
  web.defaultEncoding | content to use where no encoding is specified | utf-8 | >= 0.1.0
  web.userStyleSheet | URL or path to a user specified style sheet | /path/to/style.css | >= 0.1.0
  web.enablePlugins | enable or disable NS plugins | boolean | >= 0.1.0

# wkhtmltox\Image\Converter::convert

(wkhtmltox >= 0.1.0)

wkhtmltox\Image\Converter::convert — Perform Image conversion

### Açıklama

public function wkhtmltox\Image\Converter::convert(): ?string

Performs conversion of the input buffer

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Where the return value is used, it will be populated with the contents of the conversion buffer

# wkhtmltox\Image\Converter::getVersion

(wkhtmltox >= 0.3.2)

wkhtmltox\Image\Converter::getVersion — Determine version of Converter

### Açıklama

public function wkhtmltox\Image\Converter::getVersion(): string

Determines the version of Converter as reported by libwkhtmltox

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a version string

Uyarı

This is not yet implemented by libwkhtmltox

## İçindekiler

- wkhtmltox\Image\Converter::__construct — Create a new Image converter
- wkhtmltox\Image\Converter::convert — Perform Image conversion
- wkhtmltox\Image\Converter::getVersion — Determine version of Converter

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Çalışma Anı Yapılandırması
- wkhtmltox\PDF\Converter — The wkhtmltox\PDF\Converter class
  - wkhtmltox\PDF\Converter::add — Add an object for conversion
  - wkhtmltox\PDF\Converter::__construct — Create a new PDF converter
  - wkhtmltox\PDF\Converter::convert — Perform PDF conversion
  - wkhtmltox\PDF\Converter::getVersion — Determine version of Converter
- wkhtmltox\PDF\Object — The wkhtmltox\PDF\Object class
  - wkhtmltox\PDF\Object::__construct — Create a new PDF Object
- wkhtmltox\Image\Converter — The wkhtmltox\Image\Converter class
  - wkhtmltox\Image\Converter::__construct — Create a new Image converter
  - wkhtmltox\Image\Converter::convert — Perform Image conversion
  - wkhtmltox\Image\Converter::getVersion — Determine version of Converter

# PostScript document creation

# Giriş

This module allows to create PostScript documents. It has many similarities with the pdf extension. Actually the API is almost identical and one can in many cases just replace the prefix of each function from pdf_ to ps_. This also works for functions which has no meaning in the PostScript document (like adding hyperlinks) but will have an effect if the document is converted to PDF.

Documents created by this extension are sometimes even superior to documents created with the pdf extension, because pslib's text rendering functions can handle kerning, hyphenation and ligatures which results in much better output of boxed text.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

You need at least pslib >= 0.1.12. The ps library (pslib) is available at » http://pslib.sourceforge.net/.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/ps.

## Özkaynak Türleri

This extension defines a PostScript document resource returned by ps_new().

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

The following two tables lists all constants defined by the ps extension.

Constants for line caps
Name | Meaning
--- | ---
`ps_LINECAP_BUTT` |
`ps_LINECAP_ROUND` |
`ps_LINECAP_SQUARED` |

Constants for line joins
Name | Meaning
--- | ---
`ps_LINEJOIN_MITER` |
`ps_LINEJOIN_ROUND` |
`ps_LINEJOIN_BEVEL` |

# PS İşlevleri

## Contact Information

If you have comments, bugfixes, enhancements for either this extension or pslib then please drop me a mail » steinm@php.net. Any help is very welcome.

# ps_add_bookmark

(PECL ps >= 1.1.0)

ps_add_bookmark — Add bookmark to current page

### Açıklama

function ps_add_bookmark(
resource `$psdoc`,
string `$text`,
int `$parent` = 0,
int `$open` = 0
): int

Adds a bookmark for the current page. Bookmarks usually appear in PDF-Viewers left of the page in a hierarchical tree. Clicking on a bookmark will jump to the given page.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text used for displaying the bookmark.

`parent`

  A bookmark previously created by this function which is used as the parent of the new bookmark.

`open`

  If `open` is unequal to zero the bookmark will be shown open by the pdf viewer.

### Dönen Değerler

The returned value is a reference for the bookmark. It is only used if the bookmark shall be used as a parent. The value is greater zero if the function succeeds. In case of an error zero will be returned.

### Ayrıca Bakınız

- ps_add_launchlink() - Adds link which launches file
- ps_add_pdflink() - Adds link to a page in a second pdf document
- ps_add_weblink() - Adds link to a web location

# ps_add_launchlink

(PECL ps >= 1.1.0)

ps_add_launchlink — Adds link which launches file

### Açıklama

function ps_add_launchlink(
resource `$psdoc`,
float `$llx`,
float `$lly`,
float `$urx`,
float `$ury`,
string `$filename`
): bool

Places a hyperlink at the given position pointing to a file program which is being started when clicked on. The hyperlink's source position is a rectangle with its lower left corner at (llx, lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`llx`

  The x-coordinate of the lower left corner.

`lly`

  The y-coordinate of the lower left corner.

`urx`

  The x-coordinate of the upper right corner.

`ury`

  The y-coordinate of the upper right corner.

`filename`

  The path of the program to be started, when the link is clicked on.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_add_locallink() - Adds link to a page in the same document
- ps_add_pdflink() - Adds link to a page in a second pdf document
- ps_add_weblink() - Adds link to a web location

# ps_add_locallink

(PECL ps >= 1.1.0)

ps_add_locallink — Adds link to a page in the same document

### Açıklama

function ps_add_locallink(
resource `$psdoc`,
float `$llx`,
float `$lly`,
float `$urx`,
float `$ury`,
int `$page`,
string `$dest`
): bool

Places a hyperlink at the given position pointing to a page in the same document. Clicking on the link will jump to the given page. The first page in a document has number 1.

The hyperlink's source position is a rectangle with its lower left corner at (`llx`, `lly`) and its upper right corner at (`urx`, `ury`). The rectangle has by default a thin blue border.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`llx`

  The x-coordinate of the lower left corner.

`lly`

  The y-coordinate of the lower left corner.

`urx`

  The x-coordinate of the upper right corner.

`ury`

  The y-coordinate of the upper right corner.

`page`

  The number of the page displayed when clicking on the link.

`dest`

  The parameter `dest` determines how the document is being viewed. It can be `fitpage`, `fitwidth`, `fitheight`, or `fitbbox`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_add_launchlink() - Adds link which launches file
- ps_add_pdflink() - Adds link to a page in a second pdf document
- ps_add_weblink() - Adds link to a web location

# ps_add_note

(PECL ps >= 1.1.0)

ps_add_note — Adds note to current page

### Açıklama

function ps_add_note(
resource `$psdoc`,
float `$llx`,
float `$lly`,
float `$urx`,
float `$ury`,
string `$contents`,
string `$title`,
string `$icon`,
int `$open`
): bool

Adds a note at a certain position on the page. Notes are like little rectangular sheets with text on it, which can be placed anywhere on a page. They are shown either folded or unfolded. If folded, the specified icon is used as a placeholder.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`llx`

  The x-coordinate of the lower left corner.

`lly`

  The y-coordinate of the lower left corner.

`urx`

  The x-coordinate of the upper right corner.

`ury`

  The y-coordinate of the upper right corner.

`contents`

  The text of the note.

`title`

  The title of the note as displayed in the header of the note.

`icon`

  The icon shown if the note is folded. This parameter can be set to `comment`, `insert`, `note`, `paragraph`, `newparagraph`, `key`, or `help`.

`open`

  If `open` is unequal to zero the note will be shown unfolded after opening the document with a pdf viewer.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_add_pdflink() - Adds link to a page in a second pdf document
- ps_add_launchlink() - Adds link which launches file
- ps_add_locallink() - Adds link to a page in the same document
- ps_add_weblink() - Adds link to a web location

# ps_add_pdflink

(PECL ps >= 1.1.0)

ps_add_pdflink — Adds link to a page in a second pdf document

### Açıklama

function ps_add_pdflink(
resource `$psdoc`,
float `$llx`,
float `$lly`,
float `$urx`,
float `$ury`,
string `$filename`,
int `$page`,
string `$dest`
): bool

Places a hyperlink at the given position pointing to a second pdf document. Clicking on the link will branch to the document at the given page. The first page in a document has number 1.

The hyperlink's source position is a rectangle with its lower left corner at (`llx`, `lly`) and its upper right corner at (`urx`, `ury`). The rectangle has by default a thin blue border.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`llx`

  The x-coordinate of the lower left corner.

`lly`

  The y-coordinate of the lower left corner.

`urx`

  The x-coordinate of the upper right corner.

`ury`

  The y-coordinate of the upper right corner.

`filename`

  The name of the pdf document to be opened when clicking on this link.

`page`

  The page number of the destination pdf document

`dest`

  The parameter `dest` determines how the document is being viewed. It can be `fitpage`, `fitwidth`, `fitheight`, or `fitbbox`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_add_launchlink() - Adds link which launches file
- ps_add_locallink() - Adds link to a page in the same document
- ps_add_weblink() - Adds link to a web location

# ps_add_weblink

(PECL ps >= 1.1.0)

ps_add_weblink — Adds link to a web location

### Açıklama

function ps_add_weblink(
resource `$psdoc`,
float `$llx`,
float `$lly`,
float `$urx`,
float `$ury`,
string `$url`
): bool

Places a hyperlink at the given position pointing to a web page. The hyperlink's source position is a rectangle with its lower left corner at (`llx`, `lly`) and its upper right corner at (`urx`, `ury`). The rectangle has by default a thin blue border.

The note will not be visible if the document is printed or viewed but it will show up if the document is converted to pdf by either Acrobat Distiller™ or Ghostview.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`llx`

  The x-coordinate of the lower left corner.

`lly`

  The y-coordinate of the lower left corner.

`urx`

  The x-coordinate of the upper right corner.

`ury`

  The y-coordinate of the upper right corner.

`url`

  The url of the hyperlink to be opened when clicking on this link, e.g. `http://www.php.net`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_add_launchlink() - Adds link which launches file
- ps_add_locallink() - Adds link to a page in the same document
- ps_add_pdflink() - Adds link to a page in a second pdf document

# ps_arc

(PECL ps >= 1.1.0)

ps_arc — Draws an arc counterclockwise

### Açıklama

function ps_arc(
resource `$psdoc`,
float `$x`,
float `$y`,
float `$radius`,
float `$alpha`,
float `$beta`
): bool

Draws a portion of a circle with at middle point at (`x`, `y`). The arc starts at an angle of `alpha` and ends at an angle of `beta`. It is drawn counterclockwise (use ps_arcn() to draw clockwise). The subpath added to the current path starts on the arc at angle `alpha` and ends on the arc at angle `beta`.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  The x-coordinate of the circle's middle point.

`y`

  The y-coordinate of the circle's middle point.

`radius`

  The radius of the circle

`alpha`

  The start angle given in degrees.

`beta`

  The end angle given in degrees.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_arcn() - Draws an arc clockwise

# ps_arcn

(PECL ps >= 1.1.0)

ps_arcn — Draws an arc clockwise

### Açıklama

function ps_arcn(
resource `$psdoc`,
float `$x`,
float `$y`,
float `$radius`,
float `$alpha`,
float `$beta`
): bool

Draws a portion of a circle with at middle point at (`x`, `y`). The arc starts at an angle of `alpha` and ends at an angle of `beta`. It is drawn clockwise (use ps_arc() to draw counterclockwise). The subpath added to the current path starts on the arc at angle `beta` and ends on the arc at angle `alpha`.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  The x-coordinate of the circle's middle point.

`y`

  The y-coordinate of the circle's middle point.

`radius`

  The radius of the circle

`alpha`

  The starting angle given in degrees.

`beta`

  The end angle given in degrees.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_arc() - Draws an arc counterclockwise

# ps_begin_page

(PECL ps >= 1.1.0)

ps_begin_page — Start a new page

### Açıklama

function ps_begin_page(resource `$psdoc`, float `$width`, float `$height`): bool

Starts a new page. Although the parameters `width` and `height` imply a different page size for each page, this is not possible in PostScript. The first call of ps_begin_page() will set the page size for the whole document. Consecutive calls will have no effect, except for creating a new page. The situation is different if you intent to convert the PostScript document into PDF. This function places pdfmarks into the document which can set the size for each page indiviually. The resulting PDF document will have different page sizes.

Though PostScript does not know different page sizes, pslib places a bounding box for each page into the document. This size is evaluated by some PostScript viewers and will have precedence over the BoundingBox in the Header of the document. This can lead to unexpected results when you set a BoundingBox whose lower left corner is not (0, 0), because the bounding box of the page will always have a lower left corner (0, 0) and overwrites the global setting.

Each page is encapsulated into save/restore. This means, that most of the settings made on one page will not be retained on the next page.

If there is up to the first call of ps_begin_page() no call of ps_findfont(), then the header of the PostScript document will be output and the bounding box will be set to the size of the first page. The lower left corner of the bounding box is set to (0, 0). If ps_findfont() was called before, then the header has been output already, and the document will not have a valid bounding box. In order to prevent this, one should call ps_set_info() to set the info field `BoundingBox` and possibly `Orientation` before any ps_findfont() or ps_begin_page() calls.

> Bilginize:

> Up to version 0.2.6 of pslib, this function will always overwrite the BoundingBox and Orientation, if it has been set before with ps_set_info() and ps_findfont() has not been called before.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`width`

  The width of the page in pixel, e.g. 596 for A4 format.

`height`

  The height of the page in pixel, e.g. 842 for A4 format.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_end_page() - End a page
- ps_findfont() - Loads a font
- ps_set_info() - Sets information fields of document

# ps_begin_pattern

(PECL ps >= 1.2.0)

ps_begin_pattern — Start a new pattern

### Açıklama

function ps_begin_pattern(
resource `$psdoc`,
float `$width`,
float `$height`,
float `$xstep`,
float `$ystep`,
int `$painttype`
): int|false

Starts a new pattern. A pattern is like a page containing e.g. a drawing which can be used for filling areas. It is used like a color by calling ps_setcolor() and setting the color space to `pattern`.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`width`

  The width of the pattern in pixel.

`height`

  The height of the pattern in pixel.

`xstep`

  The distance in pixel of placements of the pattern in horizontal direction.

`ystep`

  The distance in pixel of placements of the pattern in vertical direction.

`painttype`

  Must be 1 or 2.

### Dönen Değerler

The identifier of the pattern başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Creating and using a pattern

    <?php
    $ps = ps_new();

    if (!ps_open_file($ps, "pattern.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_parameter($ps, "warning", "true");
    ps_set_info($ps, "Creator", "pattern.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Pattern example");

    $pspattern = ps_begin_pattern($ps, 10.0, 10.0, 10.0, 10.0, 1);
    ps_setlinewidth($ps, 0.2);
    ps_setcolor($ps, "stroke", "rgb", 0.0, 0.0, 1.0, 0.0);
    ps_moveto($ps, 0, 0);
    ps_lineto($ps, 7, 7);
    ps_stroke($ps);
    ps_moveto($ps, 0, 7);
    ps_lineto($ps, 7, 0);
    ps_stroke($ps);
    ps_end_pattern($ps);

    ps_begin_page($ps, 596, 842);
    ps_setcolor($ps, "both", "pattern", $pspattern, 0.0, 0.0, 0.0);
    ps_rect($ps, 50, 400, 200, 200);
    ps_fill($ps);
    ps_end_page($ps);

    ps_close($ps);
    ps_delete($ps);
    ?>

### Ayrıca Bakınız

- ps_end_pattern() - End a pattern
- ps_setcolor() - Sets current color
- ps_shading_pattern() - Creates a pattern based on a shading

# ps_begin_template

(PECL ps >= 1.2.0)

ps_begin_template — Start a new template

### Açıklama

function ps_begin_template(resource `$psdoc`, float `$width`, float `$height`): int

Starts a new template. A template is called a form in the postscript language. It is created similar to a pattern but used like an image. Templates are often used for drawings which are placed several times through out the document, e.g. like a company logo. All drawing functions may be used within a template. The template will not be drawn until it is placed by ps_place_image().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`width`

  The width of the template in pixel.

`height`

  The height of the template in pixel.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Creating and using a template

    <?php
    $ps = ps_new();

    if (!ps_open_file($ps, "template.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_parameter($ps, "warning", "true");
    ps_set_info($ps, "Creator", "template.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Template example");

    $pstemplate = ps_begin_template($ps, 30.0, 30.0);
    ps_moveto($ps, 0, 0);
    ps_lineto($ps, 30, 30);
    ps_moveto($ps, 0, 30);
    ps_lineto($ps, 30, 0);
    ps_stroke($ps);
    ps_end_template($ps);

    ps_begin_page($ps, 596, 842);
    ps_place_image($ps, $pstemplate, 20.0, 20.0, 1.0);
    ps_place_image($ps, $pstemplate, 50.0, 30.0, 0.5);
    ps_place_image($ps, $pstemplate, 70.0, 70.0, 0.6);
    ps_place_image($ps, $pstemplate, 30.0, 50.0, 1.3);
    ps_end_page($ps);

    ps_close($ps);
    ps_delete($ps);
    ?>

### Ayrıca Bakınız

- ps_end_template() - End a template

# ps_circle

(PECL ps >= 1.1.0)

ps_circle — Draws a circle

### Açıklama

function ps_circle(
resource `$psdoc`,
float `$x`,
float `$y`,
float `$radius`
): bool

Draws a circle with its middle point at (`x`, `y`). The circle starts and ends at position (`x`+`radius`, `y`). If this function is called outside a path it will start a new path. If it is called within a path it will add the circle as a subpath. If the last drawing operation does not end in point (`x`+`radius`, `y`) then there will be a gap in the path.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  The x-coordinate of the circle's middle point.

`y`

  The y-coordinate of the circle's middle point.

`radius`

  The radius of the circle

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_arc() - Draws an arc counterclockwise
- ps_arcn() - Draws an arc clockwise

# ps_clip

(PECL ps >= 1.1.0)

ps_clip — Clips drawing to current path

### Açıklama

function ps_clip(resource `$psdoc`): bool

Takes the current path and uses it to define the border of a clipping area. Everything drawn outside of that area will not be visible.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_closepath() - Closes path

# ps_close

(PECL ps >= 1.1.0)

ps_close — Closes a PostScript document

### Açıklama

function ps_close(resource `$psdoc`): bool

Closes the PostScript document.

This function writes the trailer of the PostScript document. It also writes the bookmark tree. ps_close() does not free any resources, which is done by ps_delete().

This function is also called by ps_delete() if it has not been called before.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_open_file() - Opens a file for output
- ps_delete() - Deletes all resources of a PostScript document

# ps_close_image

(PECL ps >= 1.1.0)

ps_close_image — Closes image and frees memory

### Açıklama

function ps_close_image(resource `$psdoc`, int `$imageid`): void|false

Closes an image and frees its resources. Once an image is closed it cannot be used anymore.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`imageid`

  Resource identifier of the image as returned by ps_open_image() or ps_open_image_file().

### Dönen Değerler

Returns `null` on success başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_open_image() - Reads an image for later placement
- ps_open_image_file() - Opens image from file

# ps_closepath

(PECL ps >= 1.1.0)

ps_closepath — Closes path

### Açıklama

function ps_closepath(resource `$psdoc`): bool

Connects the last point with the first point of a path. The resulting path can be used for stroking, filling, clipping, etc..

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_clip() - Clips drawing to current path
- ps_closepath_stroke() - Closes and strokes path

# ps_closepath_stroke

(PECL ps >= 1.1.0)

ps_closepath_stroke — Closes and strokes path

### Açıklama

function ps_closepath_stroke(resource `$psdoc`): bool

Connects the last point with first point of a path and draws the resulting closed line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_closepath() - Closes path

# ps_continue_text

(PECL ps >= 1.1.0)

ps_continue_text — Continue text in next line

### Açıklama

function ps_continue_text(resource `$psdoc`, string `$text`): bool

Output a text one line below the last line. The line spacing is taken from the value "leading" which must be set with ps_set_value(). The actual position of the text is determined by the values "textx" and "texty" which can be requested with ps_get_value()

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text to output.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_show() - Output text
- ps_show_xy() - Output text at given position
- ps_show_boxed() - Output text in a box

# ps_curveto

(PECL ps >= 1.1.0)

ps_curveto — Draws a curve

### Açıklama

function ps_curveto(
resource `$psdoc`,
float `$x1`,
float `$y1`,
float `$x2`,
float `$y2`,
float `$x3`,
float `$y3`
): bool

Add a section of a cubic Bézier curve described by the three given control points to the current path.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x1`

  x-coordinate of first control point.

`y1`

  y-coordinate of first control point.

`x2`

  x-coordinate of second control point.

`y2`

  y-coordinate of second control point.

`x3`

  x-coordinate of third control point.

`y3`

  y-coordinate of third control point.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_lineto() - Draws a line

# ps_delete

(PECL ps >= 1.1.0)

ps_delete — Deletes all resources of a PostScript document

### Açıklama

function ps_delete(resource `$psdoc`): bool

Mainly frees memory used by the document. Also closes a file, if it was not closed before with ps_close(). You should in any case close the file with ps_close() before, because ps_close() not just closes the file but also outputs a trailor containing PostScript comments like the number of pages in the document and adding the bookmark hierarchy.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_close() - Closes a PostScript document

# ps_end_page

(PECL ps >= 1.1.0)

ps_end_page — End a page

### Açıklama

function ps_end_page(resource `$psdoc`): bool

Ends a page which was started with ps_begin_page(). Ending a page will leave the current drawing context, which e.g. requires to reload fonts if they were loading within the page, and to set many other drawing parameters like the line width, or color.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_begin_page() - Start a new page

# ps_end_pattern

(PECL ps >= 1.2.0)

ps_end_pattern — End a pattern

### Açıklama

function ps_end_pattern(resource `$psdoc`): bool

Ends a pattern which was started with ps_begin_pattern(). Once a pattern has been ended, it can be used like a color to fill areas.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_begin_pattern() - Start a new pattern

# ps_end_template

(PECL ps >= 1.2.0)

ps_end_template — End a template

### Açıklama

function ps_end_template(resource `$psdoc`): bool

Ends a template which was started with ps_begin_template(). Once a template has been ended, it can be used like an image.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_begin_template() - Start a new template

# ps_fill

(PECL ps >= 1.1.0)

ps_fill — Fills the current path

### Açıklama

function ps_fill(resource `$psdoc`): bool

Fills the path constructed with previously called drawing functions like ps_lineto().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_fill_stroke() - Fills and strokes the current path
- ps_stroke() - Draws the current path

# ps_fill_stroke

(PECL ps >= 1.1.0)

ps_fill_stroke — Fills and strokes the current path

### Açıklama

function ps_fill_stroke(resource `$psdoc`): bool

Fills and draws the path constructed with previously called drawing functions like ps_lineto().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_fill() - Fills the current path
- ps_stroke() - Draws the current path

# ps_findfont

(PECL ps >= 1.1.0)

ps_findfont — Loads a font

### Açıklama

function ps_findfont(
resource `$psdoc`,
string `$fontname`,
string `$encoding`,
bool `$embed` = `false`
): int

Loads a font for later use. Before text is output with a loaded font it must be set with ps_setfont(). This function needs the adobe font metric file in order to calculate the space used up by the characters. A font which is loaded within a page will only be available on that page. Fonts which are to be used in the complete document have to be loaded before the first call of ps_begin_page(). Calling ps_findfont() between pages will make that font available for all following pages.

The name of the afm file must be `fontname``.afm`. If the font shall be embedded the file `fontname``.pfb` containing the font outline must be present as well.

Calling ps_findfont() before the first page requires to output the postscript header which includes the BoundingBox for the whole document. Usually the BoundingBox is set with the first call of ps_begin_page() which now comes after ps_findfont(). Consequently the BoundingBox has not been set and a warning will be issued when ps_findfont() is called. In order to prevent this situation, one should call ps_set_parameter() to set the BoundingBox before ps_findfont() is called.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`fontname`

  The name of the font.

`encoding`

  ps_findfont() will try to load the file passed in the parameter `encoding`. Encoding files are of the same syntax as those used by dvips(1). They contain a font encoding vector (which is currently not used but must be present) and a list of extra ligatures to extend the list of ligatures derived from the afm file.

  `encoding` can be `null` or the empty string if the default encoding (TeXBase1) shall be used.

  If the encoding is set to `builtin` then there will be no reencoding and the font specific encoding will be used. This is very useful with symbol fonts.

`embed`

  If set to a value >0 the font will be embedded into the document. This requires the font outline (.pfb file) to be present.

### Dönen Değerler

Returns the identifier of the font or zero in case of an error. The identifier is a positive number.

### Ayrıca Bakınız

- ps_begin_page() - Start a new page
- ps_setfont() - Sets font to use for following output

# ps_get_buffer

(PECL ps >= 1.1.0)

ps_get_buffer — Fetches the full buffer containig the generated PS data

### Açıklama

function ps_get_buffer(resource `$psdoc`): string

This function is not implemented yet. It will always return an empty string. The idea for a later implementation is to write the contents of the postscript file into an internal buffer if in memory creation is requested, and retrieve the buffer content with this function. Currently, documents created in memory are send to the browser without buffering.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Ayrıca Bakınız

- ps_open_file() - Opens a file for output

# ps_get_parameter

(PECL ps >= 1.1.0)

ps_get_parameter — Gets certain parameters

### Açıklama

function ps_get_parameter(resource `$psdoc`, string `$name`, float `$modifier` = ?): string|false

Gets several parameters which were directly set by ps_set_parameter() or indirectly by one of the other functions. Parameters are by definition string values. This function cannot be used to retrieve resources which were also set by ps_set_parameter().

The parameter `name` can have the following values.

`fontname`

  The name of the currently active font or the font whose identifier is passed in parameter `modifier`.

`fontencoding`

  The encoding of the currently active font.

`dottedversion`

  The version of the underlying pslib library in the format <major>.<minor>.<subminor>

`scope`

  The current drawing scope. Can be object, document, null, page, pattern, path, template, prolog, font, glyph.

`ligaturedisolvechar`

  The character which dissolves a ligature. If your are using a font which contains the ligature `ff' and `|' is the char to dissolve the ligature, then `f|f' will result in two `f' instead of the ligature `ff'.

`imageencoding`

  The encoding used for encoding images. Can be either `hex` or `85`. hex encoding uses two bytes in the postscript file each byte in the image. 85 stand for Ascii85 encoding.

`linenumbermode`

  Set to `paragraph` if lines are numbered within a paragraph or `box` if they are numbered within the surrounding box.

`linebreak`

  Only used if text is output with ps_show_boxed(). If set to `true` a carriage return will add a line break.

`parbreak`

  Only used if text is output with ps_show_boxed(). If set to `true` a carriage return will start a new paragraph.

`hyphenation`

  Only used if text is output with ps_show_boxed(). If set to `true` the paragraph will be hyphenated if a hypen dictionary is set and exists.

`hyphendict`

  Filename of the dictionary used for hyphenation pattern.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`name`

  Name of the parameter.

`modifier`

  An identifier needed if a parameter of a resource is requested, e.g. the size of an image. In such a case the resource id is passed.

### Dönen Değerler

Returns the value of the parameter başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_set_parameter() - Sets certain parameters

# ps_get_value

(PECL ps >= 1.1.0)

ps_get_value — Gets certain values

### Açıklama

function ps_get_value(resource `$psdoc`, string `$name`, float `$modifier` = ?): float

Gets several values which were set by ps_set_value(). Values are by definition float values.

The parameter `name` can have the following values.

`fontsize`

  The size of the currently active font or the font whose identifier is passed in parameter `modifier`.

`font`

  The currently active font itself.

`imagewidth`

  The width of the image whose id is passed in the parameter `modifier`.

`imageheight`

  The height of the image whose id is passed in the parameter `modifier`.

`capheight`

  The height of a capital M in the currently active font or the font whose identifier is passed in parameter `modifier`.

`ascender`

  The ascender of the currently active font or the font whose identifier is passed in parameter `modifier`.

`descender`

  The descender of the currently active font or the font whose identifier is passed in parameter `modifier`.

`italicangle`

  The italicangle of the currently active font or the font whose identifier is passed in parameter `modifier`.

`underlineposition`

  The underlineposition of the currently active font or the font whose identifier is passed in parameter `modifier`.

`underlinethickness`

  The underlinethickness of the currently active font or the font whose identifier is passed in parameter `modifier`.

`textx`

  The current x-position for text output.

`texty`

  The current y-position for text output.

`textrendering`

  The current mode for text rendering.

`textrise`

  The space by which text is risen above the base line.

`leading`

  The distance between text lines in points.

`wordspacing`

  The space between words as a multiple of the width of a space char.

`charspacing`

  The space between chars. If charspacing is != 0.0 ligatures will always be dissolved.

`hyphenminchars`

  Minimum number of chars hyphenated at the end of a word.

`parindent`

  Indention of the first n line in a paragraph.

`numindentlines`

  Number of line in a paragraph to indent if parindent != 0.0.

`parskip`

  Distance between paragraphs.

`linenumberspace`

  Overall space in front of each line for the line number.

`linenumbersep`

  Space between the line and the line number.

`major`

  The major version number of pslib.

`minor`

  The minor version number of pslib.

`subminor`, `revision`

  The subminor version number of pslib.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`name`

  Name of the value.

`modifier`

  The parameter `modifier` specifies the resource for which the value is to be retrieved. This can be the id of a font or an image.

### Dönen Değerler

Returns the value of the parameter or `false`.

### Ayrıca Bakınız

- ps_set_value() - Sets certain values

# ps_hyphenate

(PECL ps >= 1.1.1)

ps_hyphenate — Hyphenates a word

### Açıklama

function ps_hyphenate(resource `$psdoc`, string `$text`): array|false

Hyphenates the passed word. ps_hyphenate() evaluates the value hyphenminchars (set by ps_set_value()) and the parameter hyphendict (set by ps_set_parameter()). hyphendict must be set before calling this function.

This function requires the locale category `LC_CTYPE` to be set properly. This is done when the extension is initialized by using the environment variables. On Unix systems read the man page of locale for more information.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`
  `text` should not contain any non alpha characters. Possible positions for breaks are returned in an array of integer numbers. Each number is the position of the char in `text` after which a hyphenation can take place.

### Dönen Değerler

An array of integers indicating the position of possible breaks in the text başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Hyphennate a text

    <?php
    $word = "Koordinatensystem";
    $psdoc = ps_new();
    ps_set_parameter($psdoc, "hyphendict", "hyph_de.dic");
    $hyphens = ps_hyphenate($psdoc, $word);
    for($i=0; $i<strlen($word); $i++) {
      echo $word[$i];
      if(in_array($i, $hyphens))
        echo "-";
    }
    ps_delete($psdoc);
    ?>

Yukarıdaki örneğin çıktısı:

    Ko-ordi-na-ten-sys-tem

### Ayrıca Bakınız

- ps_show_boxed() - Output text in a box
- locale(1)

# ps_include_file

(PECL ps >= 1.3.4)

ps_include_file — Reads an external file with raw PostScript code

### Açıklama

function ps_include_file(resource `$psdoc`, string `$file`): bool

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`file`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ps_lineto

(PECL ps >= 1.1.0)

ps_lineto — Draws a line

### Açıklama

function ps_lineto(resource `$psdoc`, float `$x`, float `$y`): bool

Adds a straight line from the current point to the given coordinates to the current path. Use ps_moveto() to set the starting point of the line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  x-coordinate of the end point of the line.

`y`

  y-coordinate of the end point of the line.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Drawing a rectangle

    <?php
    $ps = ps_new();
    if (!ps_open_file($ps, "rectangle.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_info($ps, "Creator", "rectangle.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Lineto example");

    ps_begin_page($ps, 596, 842);
    ps_moveto($ps, 100, 100);
    ps_lineto($ps, 100, 200);
    ps_lineto($ps, 200, 200);
    ps_lineto($ps, 200, 100);
    ps_lineto($ps, 100, 100);
    ps_stroke($ps);
    ps_end_page($ps);

    ps_delete($ps);
    ?>

### Ayrıca Bakınız

- ps_moveto() - Sets current point

# ps_makespotcolor

(PECL ps >= 1.1.0)

ps_makespotcolor — Create spot color

### Açıklama

function ps_makespotcolor(resource `$psdoc`, string `$name`, int `$reserved` = 0): int

Creates a spot color from the current fill color. The fill color must be defined in rgb, cmyk or gray colorspace. The spot color name can be an arbitrary name. A spot color can be set as any color with ps_setcolor(). When the document is not printed but displayed by an postscript viewer the given color in the specified color space is use.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`name`

  Name of the spot color, e.g. Pantone 5565.

### Dönen Değerler

The id of the new spot color or 0 in case of an error.

### Örnekler

Örnek 1 Creating and using a spot color

    <?php
    $ps = ps_new();
    if (!ps_open_file($ps, "spotcolor.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_info($ps, "Creator", "spotcolor.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Spot color example");

    ps_begin_page($ps, 596, 842);
    ps_setcolor($ps, "fill", "cmyk", 0.37, 0.0, 0.34, 0.34);
    $spotcolor = ps_makespotcolor($ps, "PANTONE 5565 C", 0);
    ps_setcolor($ps, "fill", "spot", $spotcolor, 0.5, 0.0, 0.0);
    ps_moveto($ps, 100, 100);
    ps_lineto($ps, 100, 200);
    ps_lineto($ps, 200, 200);
    ps_lineto($ps, 200, 100);
    ps_lineto($ps, 100, 100);
    ps_fill($ps);
    ps_end_page($ps);

    ps_delete($ps);
    ?>

This example creates the spot color "PANTONE 5565 C" which is a darker green (olive) and fills a rectangle with 50% intensity.

### Ayrıca Bakınız

- ps_setcolor() - Sets current color

# ps_moveto

(PECL ps >= 1.1.0)

ps_moveto — Sets current point

### Açıklama

function ps_moveto(resource `$psdoc`, float `$x`, float `$y`): bool

Sets the current point to new coordinates. If this is the first call of ps_moveto() after a previous path has been ended then it will start a new path. If this function is called in the middle of a path it will just set the current point and start a subpath.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  x-coordinate of the point to move to.

`y`

  y-coordinate of the point to move to.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_lineto() - Draws a line

# ps_new

(PECL ps >= 1.1.0)

ps_new — Creates a new PostScript document object

### Açıklama

function ps_new(): resource|false

Creates a new document instance. It does not create the file on disk or in memory, it just sets up everything. ps_new() is usually followed by a call of ps_open_file() to actually create the postscript document.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Resource of PostScript document başarısızlık durumunda `false` döner. The return value is passed to all other functions as the first argument.

### Ayrıca Bakınız

- ps_delete() - Deletes all resources of a PostScript document

# ps_open_file

(PECL ps >= 1.1.0)

ps_open_file — Opens a file for output

### Açıklama

function ps_open_file(resource `$psdoc`, string `$filename` = ?): bool

Creates a new file on disk and writes the PostScript document into it. The file will be closed when ps_close() is called.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`filename`

  The name of the postscript file. If `filename` is not passed the document will be created in memory and all output will go straight to the browser.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_close() - Closes a PostScript document

# ps_open_image

(PECL ps >= 1.1.0)

ps_open_image — Reads an image for later placement

### Açıklama

function ps_open_image(
resource `$psdoc`,
string `$type`,
string `$source`,
string `$data`,
int `$length`,
int `$width`,
int `$height`,
int `$components`,
int `$bpc`,
string `$params`
): int

Reads an image which is already available in memory. The parameter `source` is currently not evaluated and assumed to be `memory`. The image data is a sequence of pixels starting in th upper left corner and ending in the lower right corner. Each pixel consists of `components` color components, and each component has `bpc` bits.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The type of the image. Possible values are `png`, `jpeg`, or `eps`.

`source`

  Not used.

`data`

  The image data.

`length`

  The length of the image data.

`width`

  The width of the image.

`height`

  The height of the image.

`components`

  The number of components for each pixel. This can be 1 (gray scale images), 3 (rgb images), or 4 (cmyk, rgba images).

`bpc`

  Number of bits per component (quite often 8).

`params`

### Dönen Değerler

Returns identifier of image or zero in case of an error. The identifier is a positive number greater than 0.

### Ayrıca Bakınız

- ps_open_image_file() - Opens image from file
- ps_place_image() - Places image on the page
- ps_close_image() - Closes image and frees memory

# ps_open_image_file

(PECL ps >= 1.1.0)

ps_open_image_file — Opens image from file

### Açıklama

function ps_open_image_file(
resource `$psdoc`,
string `$type`,
string `$filename`,
string `$stringparam` = ?,
int `$intparam` = 0
): int

Loads an image for later use.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The type of the image. Possible values are `png`, `jpeg`, or `eps`.

`filename`

  The name of the file containing the image data.

`stringparam`

  Not used.

`intparam`

  Not used.

### Dönen Değerler

Returns identifier of image or zero in case of an error. The identifier is a positive number greater than 0.

### Ayrıca Bakınız

- ps_open_image() - Reads an image for later placement
- ps_place_image() - Places image on the page
- ps_close_image() - Closes image and frees memory

# ps_open_memory_image

(PECL ps >= 1.1.0)

ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document

### Açıklama

function ps_open_memory_image(resource `$psdoc`, int `$gd`): int
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`gd`

# ps_place_image

(PECL ps >= 1.1.0)

ps_place_image — Places image on the page

### Açıklama

function ps_place_image(
resource `$psdoc`,
int `$imageid`,
float `$x`,
float `$y`,
float `$scale`
): bool

Places a formerly loaded image on the page. The image can be scaled. If the image shall be rotated as well, you will have to rotate the coordinate system before with ps_rotate().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`imageid`

  The resource identifier of the image as returned by ps_open_image() or ps_open_image_file().

`x`

  x-coordinate of the lower left corner of the image.

`y`

  y-coordinate of the lower left corner of the image.

`scale`

  The scaling factor for the image. A scale of 1.0 will result in a resolution of 72 dpi, because each pixel is equivalent to 1 point.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_open_image() - Reads an image for later placement
- ps_open_image_file() - Opens image from file

# ps_rect

(PECL ps >= 1.1.0)

ps_rect — Draws a rectangle

### Açıklama

function ps_rect(
resource `$psdoc`,
float `$x`,
float `$y`,
float `$width`,
float `$height`
): bool

Draws a rectangle with its lower left corner at (`x`, `y`). The rectangle starts and ends in its lower left corner. If this function is called outside a path it will start a new path. If it is called within a path it will add the rectangle as a subpath. If the last drawing operation does not end in the lower left corner then there will be a gap in the path.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  x-coordinate of the lower left corner of the rectangle.

`y`

  y-coordinate of the lower left corner of the rectangle.

`width`

  The width of the image.

`height`

  The height of the image.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_arc() - Draws an arc counterclockwise
- ps_circle() - Draws a circle
- ps_lineto() - Draws a line

# ps_restore

(PECL ps >= 1.1.0)

ps_restore — Restore previously save context

### Açıklama

function ps_restore(resource `$psdoc`): bool

Restores a previously saved graphics context. Any call of ps_save() must be accompanied by a call to ps_restore(). All coordinate transformations, line style settings, color settings, etc. are being restored to the state before the call of ps_save().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_save() - Save current context

# ps_rotate

(PECL ps >= 1.1.0)

ps_rotate — Sets rotation factor

### Açıklama

function ps_rotate(resource `$psdoc`, float `$rot`): bool

Sets the rotation of the coordinate system.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`rot`

  Angle of rotation in degree.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Rotation of the coordinate system

    <?php
    function rectangle($ps) {
        ps_moveto($ps, 0, 0);
        ps_lineto($ps, 0, 50);
        ps_lineto($ps, 50, 50);
        ps_lineto($ps, 50, 0);
        ps_lineto($ps, 0, 0);
        ps_stroke($ps);
    }

    $ps = ps_new();
    if (!ps_open_file($ps, "rotation.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_info($ps, "Creator", "rotation.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Rotation example");
    ps_set_info($ps, "BoundingBox", "0 0 596 842");

    $psfont = ps_findfont($ps, "Helvetica", "", 0);

    ps_begin_page($ps, 596, 842);
    ps_set_text_pos($ps, 100, 100);
    ps_save($ps);
    ps_translate($ps, 100, 100);
    ps_rotate($ps, 45);
    rectangle($ps);
    ps_restore($ps);
    ps_setfont($ps, $psfont, 8.0);
    ps_show($ps, "Text without rotation");
    ps_end_page($ps);

    ps_delete($ps);
    ?>

The above example illustrates a very common way of rotating a graphic (in this case just a rectangle) by simply rotating the coordinate system. Since the graphic's coordinate system assumes (0,0) to be the origin, the page coordinate system is also translated to place the graphics not on the edge of the page. Pay attention to the order of ps_translate() and ps_rotate(). In the above case the rectancle is rotated around the point (100, 100) in the untranslated coordinate system. Switching the two statements has a completely different result.

In order to output the following text at the original position, all modifications of the coordinate system are encapsulated in ps_save() and ps_restore().

### Ayrıca Bakınız

- ps_scale() - Sets scaling factor
- ps_translate() - Sets translation

# ps_save

(PECL ps >= 1.1.0)

ps_save — Save current context

### Açıklama

function ps_save(resource `$psdoc`): bool

Saves the current graphics context, containing colors, translation and rotation settings and some more. A saved context can be restored with ps_restore().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_restore() - Restore previously save context

# ps_scale

(PECL ps >= 1.1.0)

ps_scale — Sets scaling factor

### Açıklama

function ps_scale(resource `$psdoc`, float `$x`, float `$y`): bool

Sets horizontal and vertical scaling of the coordinate system.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  Scaling factor in horizontal direction.

`y`

  Scaling factor in vertical direction.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_rotate() - Sets rotation factor
- ps_translate() - Sets translation

# ps_set_border_color

(PECL ps >= 1.1.0)

ps_set_border_color — Sets color of border for annotations

### Açıklama

function ps_set_border_color(
resource `$psdoc`,
float `$red`,
float `$green`,
float `$blue`
): bool

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the color of the rectangle's border line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`red`

  The red component of the border color.

`green`

  The green component of the border color.

`blue`

  The blue component of the border color.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_set_border_dash() - Sets length of dashes for border of annotations
- ps_set_border_style() - Sets border style of annotations

# ps_set_border_dash

(PECL ps >= 1.1.0)

ps_set_border_dash — Sets length of dashes for border of annotations

### Açıklama

function ps_set_border_dash(resource `$psdoc`, float `$black`, float `$white`): bool

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the length of the black and white portion of a dashed border line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`black`

  The length of the dash.

`white`

  The length of the gap between dashes.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_set_border_color() - Sets color of border for annotations
- ps_set_border_style() - Sets border style of annotations

# ps_set_border_style

(PECL ps >= 1.1.0)

ps_set_border_style — Sets border style of annotations

### Açıklama

function ps_set_border_style(resource `$psdoc`, string `$style`, float `$width`): bool

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the appearance and width of the border line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`style`

  `style` can be `solid` or `dashed`.

`width`

  The line width of the border.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_set_border_color() - Sets color of border for annotations
- ps_set_border_dash() - Sets length of dashes for border of annotations

# ps_set_info

(PECL ps >= 1.1.0)

ps_set_info — Sets information fields of document

### Açıklama

function ps_set_info(resource `$psdoc`, string `$key`, string `$value`): bool

Sets certain information fields of the document. This fields will be shown as a comment in the header of the PostScript file. If the document is converted to pdf this fields will also be used for the document information.

The `BoundingBox` is usually set to the value given to the first page. This only works if ps_findfont() has not been called before. In such cases the BoundingBox would be left unset unless you set it explicitly with this function.

This function will have no effect anymore when the header of the postscript file has been already written. It must be called before the first page or the first call of ps_findfont().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`key`

  The name of the information field to set. The values which can be set are `Keywords`, `Subject`, `Title`, `Creator`, `Author`, `BoundingBox`, and `Orientation`. Be aware that some of them has a meaning to PostScript viewers.

`value`

  The value of the information field. The field `Orientation` can be set to either `Portrait` or `Landscape`. The `BoundingBox` is a string consisting of four numbers. The first two numbers are the coordinates of the lower left corner of the page. The last two numbers are the coordinates of the upper right corner.

  > Bilginize:

  > Up to version 0.2.6 of pslib, the BoundingBox and Orientation will be overwritten by ps_begin_page(), unless ps_findfont() has been called before.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_findfont() - Loads a font
- ps_begin_page() - Start a new page

# ps_set_parameter

(PECL ps >= 1.1.0)

ps_set_parameter — Sets certain parameters

### Açıklama

function ps_set_parameter(resource `$psdoc`, string `$name`, string `$value`): bool

Sets several parameters which are used by many functions. Parameters are by definition string values.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`name`

  For a list of possible names see ps_get_parameter().

`value`

  The value of the parameter.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_get_parameters()
- ps_set_value() - Sets certain values

# ps_set_text_pos

(PECL ps >= 1.1.0)

ps_set_text_pos — Sets position for text output

### Açıklama

function ps_set_text_pos(resource `$psdoc`, float `$x`, float `$y`): bool

Set the position for the next text output. You may alternatively set the x and y value separately by calling ps_set_value() and choosing `textx` respectively `texty` as the value name.

If you want to output text at a certain position it is more convenient to use ps_show_xy() instead of setting the text position and calling ps_show().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  x-coordinate of the new text position.

`y`

  y-coordinate of the new text position.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Placing text at a given position

    <?php
    $ps = ps_new();
    if (!ps_open_file($ps, "text.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_info($ps, "Creator", "rectangle.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Text placement example");

    ps_begin_page($ps, 596, 842);
    $psfont = ps_findfont($ps, "Helvetica", "", 0);
    ps_setfont($ps, $psfont, 8.0);
    ps_show_xy($ps, "Some text at (100, 100)", 100, 100);

    ps_set_value($ps, "textx", 100);
    ps_set_value($ps, "texty", 120);
    ps_show($ps, "Some text at (100, 120)");
    ps_end_page($ps);

    ps_delete($ps);
    ?>

### Ayrıca Bakınız

- ps_set_value() - Sets certain values
- ps_show() - Output text

# ps_set_value

(PECL ps >= 1.1.0)

ps_set_value — Sets certain values

### Açıklama

function ps_set_value(resource `$psdoc`, string `$name`, float `$value`): bool

Sets several values which are used by many functions. Parameters are by definition float values.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`name`

  The `name` can be one of the following:

  textrendering

    The way how text is shown.

  textx

    The x coordinate for text output.

  texty

    The y coordinate for text output.

  wordspacing

    The distance between words relative to the width of a space.

  leading

    The distance between lines in pixels.

`value`

  The value of the parameter.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_get_value() - Gets certain values
- ps_set_parameter() - Sets certain parameters

# ps_setcolor

(PECL ps >= 1.1.0)

ps_setcolor — Sets current color

### Açıklama

function ps_setcolor(
resource `$psdoc`,
string `$type`,
string `$colorspace`,
float `$c1`,
float `$c2`,
float `$c3`,
float `$c4`
): bool

Sets the color for drawing, filling, or both.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The parameter `type` can be `both`, `fill`, or `fillstroke`.

`colorspace`

  The colorspace should be one of `gray`, `rgb`, `cmyk`, `spot`, `pattern`. Depending on the colorspace either only the first, the first three or all parameters will be used.

`c1`

  Depending on the colorspace this is either the red component (rgb), the cyan component (cmyk), the gray value (gray), the identifier of the spot color or the identifier of the pattern.

`c2`

  Depending on the colorspace this is either the green component (rgb), the magenta component (cmyk).

`c3`

  Depending on the colorspace this is either the blue component (rgb), the yellow component (cmyk).

`c4`

  This must only be set in cmyk colorspace and specifies the black component.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Notlar

Dikkat

The second parameter is currently not always evaluated. The color is sometimes set for filling and drawing just as if `fillstroke` were passed.

# ps_setdash

(PECL ps >= 1.1.0)

ps_setdash — Sets appearance of a dashed line

### Açıklama

function ps_setdash(resource `$psdoc`, float `$on`, float `$off`): bool

Sets the length of the black and white portions of a dashed line.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`on`

  The length of the dash.

`off`

  The length of the gap between dashes.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setpolydash() - Sets appearance of a dashed line

# ps_setflat

(PECL ps >= 1.1.0)

ps_setflat — Sets flatness

### Açıklama

function ps_setflat(resource `$psdoc`, float `$value`): bool

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`value`

  The `value` must be between 0.2 and 1.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ps_setfont

(PECL ps >= 1.1.0)

ps_setfont — Sets font to use for following output

### Açıklama

function ps_setfont(resource `$psdoc`, int `$fontid`, float `$size`): bool

Sets a font, which has to be loaded before with ps_findfont(). Outputting text without setting a font results in an error.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`fontid`

  The font identifier as returned by ps_findfont().

`size`

  The size of the font.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_findfont() - Loads a font
- ps_set_text_pos() - Sets position for text output for an example.

# ps_setgray

(PECL ps >= 1.1.0)

ps_setgray — Sets gray value

### Açıklama

function ps_setgray(resource `$psdoc`, float `$gray`): bool

Sets the gray value for all following drawing operations.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`gray`

  The value must be between 0 (white) and 1 (black).

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setcolor() - Sets current color

# ps_setlinecap

(PECL ps >= 1.1.0)

ps_setlinecap — Sets appearance of line ends

### Açıklama

function ps_setlinecap(resource `$psdoc`, int `$type`): bool

Sets how line ends look like.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The type of line ends. Possible values are `PS_LINECAP_BUTT`, `PS_LINECAP_ROUND`, or `PS_LINECAP_SQUARED`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setlinejoin() - Sets how contected lines are joined
- ps_setlinewidth() - Sets width of a line
- ps_setmiterlimit() - Sets the miter limit

# ps_setlinejoin

(PECL ps >= 1.1.0)

ps_setlinejoin — Sets how contected lines are joined

### Açıklama

function ps_setlinejoin(resource `$psdoc`, int `$type`): bool

Sets how lines are joined.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The way lines are joined. Possible values are `PS_LINEJOIN_MITER`, `PS_LINEJOIN_ROUND`, or `PS_LINEJOIN_BEVEL`.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setlinecap() - Sets appearance of line ends
- ps_setlinewidth() - Sets width of a line
- ps_setmiterlimit() - Sets the miter limit

# ps_setlinewidth

(PECL ps >= 1.1.0)

ps_setlinewidth — Sets width of a line

### Açıklama

function ps_setlinewidth(resource `$psdoc`, float `$width`): bool

Sets the line width for all following drawing operations.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`width`

  The width of lines in points.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setlinecap() - Sets appearance of line ends
- ps_setlinejoin() - Sets how contected lines are joined
- ps_setmiterlimit() - Sets the miter limit

# ps_setmiterlimit

(PECL ps >= 1.1.0)

ps_setmiterlimit — Sets the miter limit

### Açıklama

function ps_setmiterlimit(resource `$psdoc`, float `$value`): bool

If two lines join in a small angle and the line join is set to `PS_LINEJOIN_MITER`, then the resulting spike will be very long. The miter limit is the maximum ratio of the miter length (the length of the spike) and the line width.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`value`

  The maximum ratio between the miter length and the line width. Larger values (> 10) will result in very long spikes when two lines meet in a small angle. Keep the default unless you know what you are doing.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_setlinecap() - Sets appearance of line ends
- ps_setlinejoin() - Sets how contected lines are joined
- ps_setlinewidth() - Sets width of a line

# ps_setoverprintmode

(PECL ps >= 1.3.0)

ps_setoverprintmode — Sets overprint mode

### Açıklama

function ps_setoverprintmode(resource `$psdoc`, int `$mode`): bool

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`mode`

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ps_setpolydash

(PECL ps >= 1.1.0)

ps_setpolydash — Sets appearance of a dashed line

### Açıklama

function ps_setpolydash(resource `$psdoc`, float `$arr`): bool

Sets the length of the black and white portions of a dashed line. ps_setpolydash() is used to set more complicated dash patterns.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`arr`

  `arr` is a list of length elements alternately for the black and white portion.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Drawing a dashed line

    <?php
    $ps = ps_new();
    if (!ps_open_file($ps, "polydash.ps")) {
       print "Cannot open PostScript file\n";
         exit;
    }

    ps_set_info($ps, "Creator", "polydash.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Poly dash example");

    ps_begin_page($ps, 596, 842);
    ps_setpolydash($ps, array(10, 5, 2, 5));
    ps_moveto($ps, 100, 100);
    ps_lineto($ps, 200, 200);
    ps_stroke($ps);
    ps_end_page($ps);

    ps_delete($ps);
    ?>

This example draws a line with a 10 and 2 points long line, and gaps of 5 points inbetween.

### Ayrıca Bakınız

- ps_setdash() - Sets appearance of a dashed line

# ps_shading

(PECL ps >= 1.3.0)

ps_shading — Creates a shading for later use

### Açıklama

function ps_shading(
resource `$psdoc`,
string `$type`,
float `$x0`,
float `$y0`,
float `$x1`,
float `$y1`,
float `$c1`,
float `$c2`,
float `$c3`,
float `$c4`,
string `$optlist`
): int|false

Creates a shading, which can be used by ps_shfill() or ps_shading_pattern().

The color of the shading can be in any color space except for `pattern`.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`type`

  The type of shading can be either `radial` or `axial`. Each shading starts with the current fill color and ends with the given color values passed in the parameters `c1` to `c4` (see ps_setcolor() for their meaning).

`x0, x1, y0, y1`

  The coordinates `x0`, `y0`, `x1`, `y1` are the start and end point of the shading. If the type of shading is `radial` the two points are the middle points of a starting and ending circle.

`c1, c2, c3, c4`

  See ps_setcolor() for their meaning.

`optlist`

  If the shading is of type `radial` the `optlist` must also contain the parameters `r0` and `r1` with the radius of the start and end circle.

### Dönen Değerler

Returns the identifier of the pattern başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_shading_pattern() - Creates a pattern based on a shading
- ps_shfill() - Fills an area with a shading

# ps_shading_pattern

(PECL ps >= 1.3.0)

ps_shading_pattern — Creates a pattern based on a shading

### Açıklama

function ps_shading_pattern(resource `$psdoc`, int `$shadingid`, string `$optlist`): int|false

Creates a pattern based on a shading, which has to be created before with ps_shading(). Shading patterns can be used like regular patterns.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`shadingid`

  The identifier of a shading previously created with ps_shading().

`optlist`

  This argument is not currently used.

### Dönen Değerler

The identifier of the pattern başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_shading() - Creates a shading for later use
- ps_shfill() - Fills an area with a shading

# ps_shfill

(PECL ps >= 1.3.0)

ps_shfill — Fills an area with a shading

### Açıklama

function ps_shfill(resource `$psdoc`, int `$shadingid`): bool

Fills an area with a shading, which has to be created before with ps_shading(). This is an alternative way to creating a pattern from a shading ps_shading_pattern() and using the pattern as the filling color.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`shadingid`

  The identifier of a shading previously created with ps_shading().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_shading() - Creates a shading for later use
- ps_shading_pattern() - Creates a pattern based on a shading

# ps_show

(PECL ps >= 1.1.0)

ps_show — Output text

### Açıklama

function ps_show(resource `$psdoc`, string `$text`): bool

Output a text at the current text position. The text position can be set by storing the x and y coordinates into the values `textx` and `texty` with the function ps_set_value(). The function will issue an error if a font was not set before with ps_setfont().

ps_show() evaluates the following parameters and values as set by ps_set_parameter() and ps_set_value().

charspacing (value)

  Distance between two consecutive glyphs. If this value is unequal to zero then all ligatures will be resolved. Values less than zero are allowed.

kerning (parameter)

  Setting this parameter to "false" will turn off kerning. Kerning is turned on by default.

ligatures (parameter)

  Setting this parameter to "false" will turn off the use of ligatures. Ligatures are turned on by default.

underline (parameter)

  Setting this parameter to "true" will turn on underlining. Underlining is turned off by default.

overline (parameter)

  Setting this parameter to "true" will turn on overlining. Overlining is turned off by default.

strikeout (parameter)

  Setting this parameter to "true" will turn on striking out. Striking out is turned off by default.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text to be output.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_continue_text() - Continue text in next line
- ps_show_xy() - Output text at given position
- ps_setfont() - Sets font to use for following output

# ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxed — Output text in a box

### Açıklama

function ps_show_boxed(
resource `$psdoc`,
string `$text`,
float `$left`,
float `$bottom`,
float `$width`,
float `$height`,
string `$hmode`,
string `$feature` = ?
): int

Outputs a text in a given box. The lower left corner of the box is at (`left`, `bottom`). Line breaks will be inserted where needed. Multiple spaces are treated as one. Tabulators are treated as spaces.

The text will be hyphenated if the parameter `hyphenation` is set to `true` and the parameter `hyphendict` contains a valid filename for a hyphenation file. The line spacing is taken from the value `leading`. Paragraphs can be separated by an empty line just like in TeX. If the value `parindent` is set to value > 0.0 then the first n lines will be indented. The number n of lines is set by the parameter `numindentlines`. In order to prevent indenting of the first m paragraphs set the value `parindentskip` to a positive number.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text to be output into the given box.

`left`

  x-coordinate of the lower left corner of the box.

`bottom`

  y-coordinate of the lower left corner of the box.

`width`

  Width of the box.

`height`

  Height of the box.

`hmode`

  The parameter `hmode` can be `justify`, `fulljustify`, `right`, `left`, or `center`. The difference of `justify` and `fulljustify` just affects the last line of the box. In `fulljustify` mode the last line will be left and right justified unless this is also the last line of paragraph. In `justify` mode it will always be left justified.

`feature`

#### Used parameters

The output of ps_show_boxed() can be configured with several parameters and values which must be set with either ps_set_parameter() or ps_set_value(). Beside the parameters and values which affect text output, the following parameters and values are evaluated.

leading (value)

  Distance between baselines of two consecutive lines.

linebreak (parameter)

  Set to `true` if you want a carriage return to start a new line instead of treating it as a space. Defaults to `false`.

parbreak (parameter)

  Set to `true` if you want a carriage return on a single line to start a new paragraph instead of treating it as a space. Defaults to `true`.

hyphenation (parameter)

  Set to `true` in order to turn hyphenation on. This requires a dictionary to be set with the parameter `hyphendict`. Defaults to `false`.

hyphendict (parameter)

  Filename of the dictionary used for hyphenation pattern (see below).

hyphenminchar (value)

  The number of chars which must at least be left over before or after the hyphen. This implies that only words of at least two times this value will be hyphenated. The default value is three. Setting a value of zero will result in the default value.

parindent (value)

  Set the amount of space in pixel for indenting the first m lines of a paragraph. m can be set with the value `numindentlines`.

parskip (value)

  Set the amount of extra space in pixel between paragraphs. Defaults to `0` which will result in a normal line distance.

numindentlines (value)

  Number of lines from the start of the paragraph which will be indented. Defaults to `1`.

parindentskip (value)

  Number of paragraphs in the box whose first lines will not be indented. This defaults to `0`. This is useful for paragraphs right after a section heading or text being continued in a second box. In both case one would set this to `1`.

linenumbermode (parameter)

  Set how lines are to be numbered. Possible values are `box` for numbering lines in the whole box or `paragraph` to number lines within each paragraph.

linenumberspace (value)

  The space for the column left of the numbered line containing the line number. The line number will be right justified into this column. Defaults to `20`.

linenumbersep (value)

  The space between the column with line numbers and the line itself. Defaults to `5`.

#### Hyphenation

Text is hyphenated if the parameter `hyphenation` is set to true and a valid hyphenation dictionary is set. pslib does not ship its own hyphenation dictionary but uses one from openoffice, scribus or koffice. You can find their dictionaries for different languages in one of the following directories if the software is installed:

- /usr/share/apps/koffice/hyphdicts/
- /usr/lib/scribus/dicts/
- /usr/lib/openoffice/share/dict/ooo/

Currently scribus appears to have the most complete hyphenation dictionaries.

### Dönen Değerler

Number of characters that could not be written.

### Ayrıca Bakınız

- ps_continue_text() - Continue text in next line

# ps_show_xy

(PECL ps >= 1.1.0)

ps_show_xy — Output text at given position

### Açıklama

function ps_show_xy(
resource `$psdoc`,
string `$text`,
float `$x`,
float `$y`
): bool

Output a text at the given text position.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text to be output.

`x`

  x-coordinate of the lower left corner of the box surrounding the text.

`y`

  y-coordinate of the lower left corner of the box surrounding the text.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_continue_text() - Continue text in next line
- ps_show() - Output text

# ps_show_xy2

(PECL ps >= 1.1.0)

ps_show_xy2 — Output text at position

### Açıklama

function ps_show_xy2(
resource `$psdoc`,
string `$text`,
int `$len`,
float `$xcoor`,
float `$ycoor`
): bool
Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ps_show2

(PECL ps >= 1.1.0)

ps_show2 — Output a text at current position

### Açıklama

function ps_show2(resource `$psdoc`, string `$text`, int `$len`): bool

Output text at the current position. Do not print more than `len` characters.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text to be output.

`len`

  The maximum number of characters to print.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

# ps_string_geometry

(PECL ps >= 1.2.0)

ps_string_geometry — Gets geometry of a string

### Açıklama

function ps_string_geometry(
resource `$psdoc`,
string `$text`,
int `$fontid` = 0,
float `$size` = 0.0
): array

This function is similar to ps_stringwidth() but returns an array of dimensions containing the width, ascender, and descender of the text.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text for which the geometry is to be calculated.

`fontid`

  The identifier of the font to be used. If not font is specified the current font will be used.

`size`

  The size of the font. If no size is specified the current size is used.

### Dönen Değerler

An array of the dimensions of a string. The element 'width' contains the width of the string as returned by ps_stringwidth(). The element 'descender' contains the maximum descender and 'ascender' the maximum ascender of the string.

### Ayrıca Bakınız

- ps_continue_text() - Continue text in next line
- ps_stringwidth() - Gets width of a string

# ps_stringwidth

(PECL ps >= 1.1.0)

ps_stringwidth — Gets width of a string

### Açıklama

function ps_stringwidth(
resource `$psdoc`,
string `$text`,
int `$fontid` = 0,
float `$size` = 0.0
): float

Calculates the width of a string in points if it was output in the given font and font size. This function needs an Adobe font metrics file to calculate the precise width. If kerning is turned on, it will be taken into account.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`text`

  The text for which the width is to be calculated.

`fontid`

  The identifier of the font to be used. If not font is specified the current font will be used.

`size`

  The size of the font. If no size is specified the current size is used.

### Dönen Değerler

Width of a string in points.

### Ayrıca Bakınız

- ps_string_geometry() - Gets geometry of a string

# ps_stroke

(PECL ps >= 1.1.0)

ps_stroke — Draws the current path

### Açıklama

function ps_stroke(resource `$psdoc`): bool

Draws the path constructed with previously called drawing functions like ps_lineto().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_closepath_stroke() - Closes and strokes path
- ps_fill() - Fills the current path
- ps_fill_stroke() - Fills and strokes the current path

# ps_symbol

(PECL ps >= 1.2.0)

ps_symbol — Output a glyph

### Açıklama

function ps_symbol(resource `$psdoc`, int `$ord`): bool

Output the glyph at position `ord` in the font encoding vector of the current font. The font encoding for a font can be set when loading the font with ps_findfont().

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`ord`

  The position of the glyph in the font encoding vector.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- ps_symbol_name() - Gets name of a glyph
- ps_symbol_width() - Gets width of a glyph

# ps_symbol_name

(PECL ps >= 1.2.0)

ps_symbol_name — Gets name of a glyph

### Açıklama

function ps_symbol_name(resource `$psdoc`, int `$ord`, int `$fontid` = 0): string

This function needs an Adobe font metrics file to know which glyphs are available.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`ord`

  The parameter `ord` is the position of the glyph in the font encoding vector.

`fontid`

  The identifier of the font to be used. If not font is specified the current font will be used.

### Dönen Değerler

The name of a glyph in the given font.

### Ayrıca Bakınız

- ps_symbol() - Output a glyph
- ps_symbol_width() - Gets width of a glyph

# ps_symbol_width

(PECL ps >= 1.2.0)

ps_symbol_width — Gets width of a glyph

### Açıklama

function ps_symbol_width(
resource `$psdoc`,
int `$ord`,
int `$fontid` = 0,
float `$size` = 0.0
): float

Calculates the width of a glyph in points if it was output in the given font and font size. This function needs an Adobe font metrics file to calculate the precise width.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`ord`

  The position of the glyph in the font encoding vector.

`fontid`

  The identifier of the font to be used. If not font is specified the current font will be used.

`size`

  The size of the font. If no size is specified the current size is used.

### Dönen Değerler

The width of a glyph in points.

### Ayrıca Bakınız

- ps_symbol() - Output a glyph
- ps_symbol_name() - Gets name of a glyph

# ps_translate

(PECL ps >= 1.1.0)

ps_translate — Sets translation

### Açıklama

function ps_translate(resource `$psdoc`, float `$x`, float `$y`): bool

Sets a new initial point of the coordinate system.

### Bağımsız Değişkenler

`psdoc`

  Resource identifier of the postscript file as returned by ps_new().

`x`

  x-coordinate of the origin of the translated coordinate system.

`y`

  y-coordinate of the origin of the translated coordinate system.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 Translation of the coordinate system

    <?php
    function rectangle($ps) {
        ps_moveto($ps, 0, 0);
        ps_lineto($ps, 0, 50);
        ps_lineto($ps, 50, 50);
        ps_lineto($ps, 50, 0);
        ps_lineto($ps, 0, 0);
        ps_stroke($ps);
    }

    $ps = ps_new();
    if (!ps_open_file($ps, "translate.ps")) {
      print "Cannot open PostScript file\n";
      exit;
    }

    ps_set_info($ps, "Creator", "translate.php");
    ps_set_info($ps, "Author", "Uwe Steinmann");
    ps_set_info($ps, "Title", "Translated example");
    ps_set_info($ps, "BoundingBox", "0 0 596 842");

    $psfont = ps_findfont($ps, "Helvetica", "", 0);

    ps_begin_page($ps, 596, 842);
    ps_set_text_pos($ps, 100, 100);
    ps_translate($ps, 500, 750);
    rectangle($ps);
    ps_translate($ps, -500, -750);
    ps_setfont($ps, $psfont, 8.0);
    ps_show($ps, "Text at initial position");
    ps_end_page($ps);

    ps_begin_page($ps, 596, 842);
    ps_set_text_pos($ps, 100, 100);
    ps_save($ps);
    ps_translate($ps, 500, 750);
    rectangle($ps);
    ps_restore($ps);
    ps_setfont($ps, $psfont, 8.0);
    ps_show($ps, "Text at initial position");
    ps_end_page($ps);

    ps_delete($ps);
    ?>

The above example demonstrates two possible ways to place a graphic (in this case just a rectangle) at any position on the page, while the graphic itself uses its own coordinate system. The trick is to change the origin of the current coordinate system before drawing the rectangle. The translation has to be undone after the graphic has been drawn.

On the second page a slightly different and more elegant approach is applied. Instead of undoing the translation with a second call of ps_translate() the graphics context is saved before modifying the coordinate system and restored after drawing the rectangle.

### Ayrıca Bakınız

- ps_scale() - Sets scaling factor
- ps_rotate() - Sets rotation factor

## İçindekiler

- ps_add_bookmark — Add bookmark to current page
- ps_add_launchlink — Adds link which launches file
- ps_add_locallink — Adds link to a page in the same document
- ps_add_note — Adds note to current page
- ps_add_pdflink — Adds link to a page in a second pdf document
- ps_add_weblink — Adds link to a web location
- ps_arc — Draws an arc counterclockwise
- ps_arcn — Draws an arc clockwise
- ps_begin_page — Start a new page
- ps_begin_pattern — Start a new pattern
- ps_begin_template — Start a new template
- ps_circle — Draws a circle
- ps_clip — Clips drawing to current path
- ps_close — Closes a PostScript document
- ps_close_image — Closes image and frees memory
- ps_closepath — Closes path
- ps_closepath_stroke — Closes and strokes path
- ps_continue_text — Continue text in next line
- ps_curveto — Draws a curve
- ps_delete — Deletes all resources of a PostScript document
- ps_end_page — End a page
- ps_end_pattern — End a pattern
- ps_end_template — End a template
- ps_fill — Fills the current path
- ps_fill_stroke — Fills and strokes the current path
- ps_findfont — Loads a font
- ps_get_buffer — Fetches the full buffer containig the generated PS data
- ps_get_parameter — Gets certain parameters
- ps_get_value — Gets certain values
- ps_hyphenate — Hyphenates a word
- ps_include_file — Reads an external file with raw PostScript code
- ps_lineto — Draws a line
- ps_makespotcolor — Create spot color
- ps_moveto — Sets current point
- ps_new — Creates a new PostScript document object
- ps_open_file — Opens a file for output
- ps_open_image — Reads an image for later placement
- ps_open_image_file — Opens image from file
- ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document
- ps_place_image — Places image on the page
- ps_rect — Draws a rectangle
- ps_restore — Restore previously save context
- ps_rotate — Sets rotation factor
- ps_save — Save current context
- ps_scale — Sets scaling factor
- ps_set_border_color — Sets color of border for annotations
- ps_set_border_dash — Sets length of dashes for border of annotations
- ps_set_border_style — Sets border style of annotations
- ps_set_info — Sets information fields of document
- ps_set_parameter — Sets certain parameters
- ps_set_text_pos — Sets position for text output
- ps_set_value — Sets certain values
- ps_setcolor — Sets current color
- ps_setdash — Sets appearance of a dashed line
- ps_setflat — Sets flatness
- ps_setfont — Sets font to use for following output
- ps_setgray — Sets gray value
- ps_setlinecap — Sets appearance of line ends
- ps_setlinejoin — Sets how contected lines are joined
- ps_setlinewidth — Sets width of a line
- ps_setmiterlimit — Sets the miter limit
- ps_setoverprintmode — Sets overprint mode
- ps_setpolydash — Sets appearance of a dashed line
- ps_shading — Creates a shading for later use
- ps_shading_pattern — Creates a pattern based on a shading
- ps_shfill — Fills an area with a shading
- ps_show — Output text
- ps_show_boxed — Output text in a box
- ps_show_xy — Output text at given position
- ps_show_xy2 — Output text at position
- ps_show2 — Output a text at current position
- ps_string_geometry — Gets geometry of a string
- ps_stringwidth — Gets width of a string
- ps_stroke — Draws the current path
- ps_symbol — Output a glyph
- ps_symbol_name — Gets name of a glyph
- ps_symbol_width — Gets width of a glyph
- ps_translate — Sets translation

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- PS İşlevleri
  - ps_add_bookmark — Add bookmark to current page
  - ps_add_launchlink — Adds link which launches file
  - ps_add_locallink — Adds link to a page in the same document
  - ps_add_note — Adds note to current page
  - ps_add_pdflink — Adds link to a page in a second pdf document
  - ps_add_weblink — Adds link to a web location
  - ps_arc — Draws an arc counterclockwise
  - ps_arcn — Draws an arc clockwise
  - ps_begin_page — Start a new page
  - ps_begin_pattern — Start a new pattern
  - ps_begin_template — Start a new template
  - ps_circle — Draws a circle
  - ps_clip — Clips drawing to current path
  - ps_close — Closes a PostScript document
  - ps_close_image — Closes image and frees memory
  - ps_closepath — Closes path
  - ps_closepath_stroke — Closes and strokes path
  - ps_continue_text — Continue text in next line
  - ps_curveto — Draws a curve
  - ps_delete — Deletes all resources of a PostScript document
  - ps_end_page — End a page
  - ps_end_pattern — End a pattern
  - ps_end_template — End a template
  - ps_fill — Fills the current path
  - ps_fill_stroke — Fills and strokes the current path
  - ps_findfont — Loads a font
  - ps_get_buffer — Fetches the full buffer containig the generated PS data
  - ps_get_parameter — Gets certain parameters
  - ps_get_value — Gets certain values
  - ps_hyphenate — Hyphenates a word
  - ps_include_file — Reads an external file with raw PostScript code
  - ps_lineto — Draws a line
  - ps_makespotcolor — Create spot color
  - ps_moveto — Sets current point
  - ps_new — Creates a new PostScript document object
  - ps_open_file — Opens a file for output
  - ps_open_image — Reads an image for later placement
  - ps_open_image_file — Opens image from file
  - ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document
  - ps_place_image — Places image on the page
  - ps_rect — Draws a rectangle
  - ps_restore — Restore previously save context
  - ps_rotate — Sets rotation factor
  - ps_save — Save current context
  - ps_scale — Sets scaling factor
  - ps_set_border_color — Sets color of border for annotations
  - ps_set_border_dash — Sets length of dashes for border of annotations
  - ps_set_border_style — Sets border style of annotations
  - ps_set_info — Sets information fields of document
  - ps_set_parameter — Sets certain parameters
  - ps_set_text_pos — Sets position for text output
  - ps_set_value — Sets certain values
  - ps_setcolor — Sets current color
  - ps_setdash — Sets appearance of a dashed line
  - ps_setflat — Sets flatness
  - ps_setfont — Sets font to use for following output
  - ps_setgray — Sets gray value
  - ps_setlinecap — Sets appearance of line ends
  - ps_setlinejoin — Sets how contected lines are joined
  - ps_setlinewidth — Sets width of a line
  - ps_setmiterlimit — Sets the miter limit
  - ps_setoverprintmode — Sets overprint mode
  - ps_setpolydash — Sets appearance of a dashed line
  - ps_shading — Creates a shading for later use
  - ps_shading_pattern — Creates a pattern based on a shading
  - ps_shfill — Fills an area with a shading
  - ps_show — Output text
  - ps_show_boxed — Output text in a box
  - ps_show_xy — Output text at given position
  - ps_show_xy2 — Output text at position
  - ps_show2 — Output a text at current position
  - ps_string_geometry — Gets geometry of a string
  - ps_stringwidth — Gets width of a string
  - ps_stroke — Draws the current path
  - ps_symbol — Output a glyph
  - ps_symbol_name — Gets name of a glyph
  - ps_symbol_width — Gets width of a glyph
  - ps_translate — Sets translation

# RpmInfo

# Giriş

This extension enables you to retrieve information from RPM files or from the installed RPMs database.

It also provides a `rpm` stream wrapper to retrieve RPM content (since version 1.0.0 with librpm >= 4.13).

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Installation via PECL

## Gereksinimler

This extension requires » librpm version 4.11.3 or higher.

## Installation via PECL

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/rpminfo.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Miscellaneous constants
`RPMVERSION` (string)
  System librpm version.

RPM Senses
`RPMSENSE_ANY` (int)
`RPMSENSE_LESS` (int)
`RPMSENSE_GREATER` (int)
`RPMSENSE_EQUAL` (int)
`RPMSENSE_POSTTRANS` (int)
`RPMSENSE_PREREQ` (int)
`RPMSENSE_PRETRANS` (int)
`RPMSENSE_INTERP` (int)
`RPMSENSE_SCRIPT_PRE` (int)
`RPMSENSE_SCRIPT_POST` (int)
`RPMSENSE_SCRIPT_PREUN` (int)
`RPMSENSE_SCRIPT_POSTUN` (int)
`RPMSENSE_SCRIPT_VERIFY` (int)
`RPMSENSE_FIND_REQUIRES` (int)
`RPMSENSE_FIND_PROVIDES` (int)
`RPMSENSE_TRIGGERIN` (int)
`RPMSENSE_TRIGGERUN` (int)
`RPMSENSE_TRIGGERPOSTUN` (int)
`RPMSENSE_MISSINGOK` (int)
`RPMSENSE_RPMLIB` (int)
`RPMSENSE_TRIGGERPREIN` (int)
`RPMSENSE_KEYRING` (int)
`RPMSENSE_CONFIG` (int)

RPM Mire
`RPMMIRE_DEFAULT` (int)
  Search pattern is a regular expression with `\.`, `.*`, and `^...$` added.
`RPMMIRE_STRCMP` (int)
  Search pattern is a string, using `strcmp(3)`.
`RPMMIRE_REGEX` (int)
  Search pattern is a regular expression, using `regcomp(3)`.
`RPMMIRE_GLOB` (int)
  Search pattern is a glob expression, using `fnmatch(3)`.

RPM tags
`RPMTAG_ARCH` (int)
`RPMTAG_ARCHSUFFIX` (int)
  Requires librpm >= 4.18
`RPMTAG_ARCHIVESIZE` (int)
`RPMTAG_BASENAMES` (int)
  Name (not path) of files, with database index.
`RPMTAG_BUGURL` (int)
`RPMTAG_BUILDARCHS` (int)
`RPMTAG_BUILDHOST` (int)
`RPMTAG_BUILDTIME` (int)
`RPMTAG_C` (int)
`RPMTAG_CHANGELOGNAME` (int)
`RPMTAG_CHANGELOGTEXT` (int)
`RPMTAG_CHANGELOGTIME` (int)
`RPMTAG_CLASSDICT` (int)
`RPMTAG_CONFLICTFLAGS` (int)
`RPMTAG_CONFLICTNAME` (int)
  Conflicting dependencies, with database index.
`RPMTAG_CONFLICTNEVRS` (int)
`RPMTAG_CONFLICTS` (int)
`RPMTAG_CONFLICTVERSION` (int)
`RPMTAG_COOKIE` (int)
`RPMTAG_DBINSTANCE` (int)
`RPMTAG_DEPENDSDICT` (int)
`RPMTAG_DESCRIPTION` (int)
`RPMTAG_DIRINDEXES` (int)
`RPMTAG_DIRNAMES` (int)
  Directory of files, with database index.
`RPMTAG_DISTRIBUTION` (int)
`RPMTAG_DISTTAG` (int)
`RPMTAG_DISTURL` (int)
`RPMTAG_DSAHEADER` (int)
`RPMTAG_E` (int)
`RPMTAG_ENCODING` (int)
`RPMTAG_ENHANCEFLAGS` (int)
`RPMTAG_ENHANCENAME` (int)
  Weak dependencies, with database index, requires librpm >= 4.13.
`RPMTAG_ENHANCENEVRS` (int)
`RPMTAG_ENHANCES` (int)
`RPMTAG_ENHANCEVERSION` (int)
`RPMTAG_EPOCH` (int)
`RPMTAG_EPOCHNUM` (int)
`RPMTAG_EVR` (int)
`RPMTAG_EXCLUDEARCH` (int)
`RPMTAG_EXCLUDEOS` (int)
`RPMTAG_EXCLUSIVEARCH` (int)
`RPMTAG_EXCLUSIVEOS` (int)
`RPMTAG_FILECAPS` (int)
`RPMTAG_FILECLASS` (int)
`RPMTAG_FILECOLORS` (int)
`RPMTAG_FILECONTEXTS` (int)
`RPMTAG_FILEDEPENDSN` (int)
`RPMTAG_FILEDEPENDSX` (int)
`RPMTAG_FILEDEVICES` (int)
`RPMTAG_FILEDIGESTALGO` (int)
`RPMTAG_FILEDIGESTS` (int)
`RPMTAG_FILEFLAGS` (int)
`RPMTAG_FILEGROUPNAME` (int)
`RPMTAG_FILEINODES` (int)
`RPMTAG_FILELANGS` (int)
`RPMTAG_FILELINKTOS` (int)
`RPMTAG_FILEMD5S` (int)
`RPMTAG_FILEMODES` (int)
`RPMTAG_FILEMTIMES` (int)
`RPMTAG_FILENAMES` (int)
`RPMTAG_FILENLINKS` (int)
`RPMTAG_FILEPROVIDE` (int)
`RPMTAG_FILERDEVS` (int)
`RPMTAG_FILEREQUIRE` (int)
`RPMTAG_FILESIGNATURELENGTH` (int)
`RPMTAG_FILESIGNATURES` (int)
`RPMTAG_FILESIZES` (int)
`RPMTAG_FILESTATES` (int)
`RPMTAG_FILETRIGGERCONDS` (int)
`RPMTAG_FILETRIGGERFLAGS` (int)
`RPMTAG_FILETRIGGERINDEX` (int)
`RPMTAG_FILETRIGGERNAME` (int)
  File trigger name, with database index, requires librpm >= 4.13.
`RPMTAG_FILETRIGGERPRIORITIES` (int)
`RPMTAG_FILETRIGGERSCRIPTFLAGS` (int)
`RPMTAG_FILETRIGGERSCRIPTPROG` (int)
`RPMTAG_FILETRIGGERSCRIPTS` (int)
`RPMTAG_FILETRIGGERTYPE` (int)
`RPMTAG_FILETRIGGERVERSION` (int)
`RPMTAG_FILEUSERNAME` (int)
`RPMTAG_FILEVERIFYFLAGS` (int)
`RPMTAG_FSCONTEXTS` (int)
`RPMTAG_GIF` (int)
`RPMTAG_GROUP` (int)
  Group of the package, with database index.
`RPMTAG_HDRID` (int)
  Deprecated, use `RPMTAG_SHA1HEADER` instead. Removed in librpm 6.
`RPMTAG_HEADERCOLOR` (int)
`RPMTAG_HEADERI18NTABLE` (int)
`RPMTAG_HEADERIMAGE` (int)
`RPMTAG_HEADERIMMUTABLE` (int)
`RPMTAG_HEADERREGIONS` (int)
`RPMTAG_HEADERSIGNATURES` (int)
`RPMTAG_ICON` (int)
`RPMTAG_INSTALLCOLOR` (int)
`RPMTAG_INSTALLTID` (int)
  Installation transaction ID, with database index.
`RPMTAG_INSTALLTIME` (int)
`RPMTAG_INSTFILENAMES` (int)
  Path of files, with database index.
`RPMTAG_INSTPREFIXES` (int)
`RPMTAG_LICENSE` (int)
`RPMTAG_LONGARCHIVESIZE` (int)
`RPMTAG_LONGFILESIZES` (int)
`RPMTAG_LONGSIGSIZE` (int)
`RPMTAG_LONGSIZE` (int)
`RPMTAG_MODULARITYLABEL` (int)
`RPMTAG_N` (int)
`RPMTAG_NAME` (int)
  Package name, with database index.
`RPMTAG_NEVR` (int)
`RPMTAG_NEVRA` (int)
`RPMTAG_NOPATCH` (int)
`RPMTAG_NOSOURCE` (int)
`RPMTAG_NVR` (int)
`RPMTAG_NVRA` (int)
`RPMTAG_O` (int)
`RPMTAG_OBSOLETEFLAGS` (int)
`RPMTAG_OBSOLETENAME` (int)
  Obsoleted packages, with database index.
`RPMTAG_OBSOLETENEVRS` (int)
`RPMTAG_OBSOLETES` (int)
`RPMTAG_OBSOLETEVERSION` (int)
`RPMTAG_OLDENHANCES` (int)
`RPMTAG_OLDENHANCESFLAGS` (int)
`RPMTAG_OLDENHANCESNAME` (int)
`RPMTAG_OLDENHANCESVERSION` (int)
`RPMTAG_OLDFILENAMES` (int)
`RPMTAG_OLDSUGGESTS` (int)
`RPMTAG_OLDSUGGESTSFLAGS` (int)
`RPMTAG_OLDSUGGESTSNAME` (int)
`RPMTAG_OLDSUGGESTSVERSION` (int)
`RPMTAG_OPTFLAGS` (int)
`RPMTAG_ORDERFLAGS` (int)
`RPMTAG_ORDERNAME` (int)
`RPMTAG_ORDERVERSION` (int)
`RPMTAG_ORIGBASENAMES` (int)
`RPMTAG_ORIGDIRINDEXES` (int)
`RPMTAG_ORIGDIRNAMES` (int)
`RPMTAG_ORIGFILENAMES` (int)
`RPMTAG_OS` (int)
`RPMTAG_P` (int)
`RPMTAG_PACKAGER` (int)
`RPMTAG_PATCH` (int)
`RPMTAG_PATCHESFLAGS` (int)
`RPMTAG_PATCHESNAME` (int)
`RPMTAG_PATCHESVERSION` (int)
`RPMTAG_PAYLOADCOMPRESSOR` (int)
`RPMTAG_PAYLOADDIGEST` (int)
`RPMTAG_PAYLOADDIGESTALT` (int)
  With librpm >= 4.16.
`RPMTAG_PAYLOADDIGESTALGO` (int)
`RPMTAG_PAYLOADFLAGS` (int)
`RPMTAG_PAYLOADFORMAT` (int)
`RPMTAG_PKGID` (int)
  Deprecated, use `RPMTAG_SIGMD5` instead. Removed in librpm 6.
`RPMTAG_PLATFORM` (int)
`RPMTAG_POLICIES` (int)
`RPMTAG_POLICYFLAGS` (int)
`RPMTAG_POLICYNAMES` (int)
`RPMTAG_POLICYTYPES` (int)
`RPMTAG_POLICYTYPESINDEXES` (int)
`RPMTAG_POSTIN` (int)
`RPMTAG_POSTINFLAGS` (int)
`RPMTAG_POSTINPROG` (int)
`RPMTAG_POSTTRANS` (int)
`RPMTAG_POSTTRANSFLAGS` (int)
`RPMTAG_POSTTRANSPROG` (int)
`RPMTAG_POSTUN` (int)
`RPMTAG_POSTUNFLAGS` (int)
`RPMTAG_POSTUNPROG` (int)
`RPMTAG_POSTUNTRANS` (int)
  Requires librpm >= 4.19
`RPMTAG_POSTUNTRANSFLAGS` (int)
  Requires librpm >= 4.19
`RPMTAG_POSTUNTRANSPROG` (int)
  Requires librpm >= 4.19
`RPMTAG_PREFIXES` (int)
`RPMTAG_PREIN` (int)
`RPMTAG_PREINFLAGS` (int)
`RPMTAG_PREINPROG` (int)
`RPMTAG_PRETRANS` (int)
`RPMTAG_PRETRANSFLAGS` (int)
`RPMTAG_PRETRANSPROG` (int)
`RPMTAG_PREUN` (int)
`RPMTAG_PREUNFLAGS` (int)
`RPMTAG_PREUNPROG` (int)
`RPMTAG_PREUNTRANS` (int)
  Requires librpm >= 4.19
`RPMTAG_PREUNTRANSFLAGS` (int)
  Requires librpm >= 4.19
`RPMTAG_PREUNTRANSPROG` (int)
  Requires librpm >= 4.19
`RPMTAG_PROVIDEFLAGS` (int)
`RPMTAG_PROVIDENAME` (int)
  Provided dependencies, with database index.
`RPMTAG_PROVIDENEVRS` (int)
`RPMTAG_PROVIDES` (int)
`RPMTAG_PROVIDEVERSION` (int)
`RPMTAG_PUBKEYS` (int)
`RPMTAG_R` (int)
`RPMTAG_RECOMMENDFLAGS` (int)
`RPMTAG_RECOMMENDNAME` (int)
  Recommended weak dependencies, with database index, requires librpm >= 4.13.
`RPMTAG_RECOMMENDNEVRS` (int)
`RPMTAG_RECOMMENDS` (int)
`RPMTAG_RECOMMENDVERSION` (int)
`RPMTAG_RECONTEXTS` (int)
`RPMTAG_RELEASE` (int)
`RPMTAG_REMOVETID` (int)
`RPMTAG_REQUIREFLAGS` (int)
`RPMTAG_REQUIRENAME` (int)
  Required dependencies, with database index.
`RPMTAG_REQUIRENEVRS` (int)
`RPMTAG_REQUIRES` (int)
`RPMTAG_REQUIREVERSION` (int)
`RPMTAG_RPMVERSION` (int)
`RPMTAG_RSAHEADER` (int)
`RPMTAG_SHA1HEADER` (int)
  SHA1 signature, with database index.
`RPMTAG_SHA256HEADER` (int)
`RPMTAG_SIGGPG` (int)
`RPMTAG_SIGMD5` (int)
  MD5 signature, with database index.
`RPMTAG_SIGPGP` (int)
`RPMTAG_SIGSIZE` (int)
`RPMTAG_SIZE` (int)
`RPMTAG_SOURCE` (int)
`RPMTAG_SOURCEPACKAGE` (int)
`RPMTAG_SOURCEPKGID` (int)
`RPMTAG_SOURCERPM` (int)
`RPMTAG_SPEC` (int)
  Requires librpm >= 4.18
`RPMTAG_SUGGESTFLAGS` (int)
`RPMTAG_SUGGESTNAME` (int)
  Suggested weak dependencies, with database index, requires librpm >= 4.13.
`RPMTAG_SUGGESTNEVRS` (int)
`RPMTAG_SUGGESTS` (int)
`RPMTAG_SUGGESTVERSION` (int)
`RPMTAG_SUMMARY` (int)
`RPMTAG_SUPPLEMENTFLAGS` (int)
`RPMTAG_SUPPLEMENTNAME` (int)
  Weak dependencies, with database index, requires librpm >= 4.13.
`RPMTAG_SUPPLEMENTNEVRS` (int)
`RPMTAG_SUPPLEMENTS` (int)
`RPMTAG_SUPPLEMENTVERSION` (int)
`RPMTAG_SYSUSERS` (int)
  Requires librpm >= 4.19
`RPMTAG_TRANSFILETRIGGERCONDS` (int)
`RPMTAG_TRANSFILETRIGGERFLAGS` (int)
`RPMTAG_TRANSFILETRIGGERINDEX` (int)
`RPMTAG_TRANSFILETRIGGERNAME` (int)
  Transaction file trigger name, with database index, requires librpm >= 4.13.
`RPMTAG_TRANSFILETRIGGERPRIORITIES` (int)
`RPMTAG_TRANSFILETRIGGERSCRIPTFLAGS` (int)
`RPMTAG_TRANSFILETRIGGERSCRIPTPROG` (int)
`RPMTAG_TRANSFILETRIGGERSCRIPTS` (int)
`RPMTAG_TRANSFILETRIGGERTYPE` (int)
`RPMTAG_TRANSFILETRIGGERVERSION` (int)
`RPMTAG_TRANSLATIONURL` (int)
  Requires librpm >= 4.18
`RPMTAG_TRIGGERCONDS` (int)
`RPMTAG_TRIGGERFLAGS` (int)
`RPMTAG_TRIGGERINDEX` (int)
`RPMTAG_TRIGGERNAME` (int)
  Trigger name, with database index.
`RPMTAG_TRIGGERSCRIPTFLAGS` (int)
`RPMTAG_TRIGGERSCRIPTPROG` (int)
`RPMTAG_TRIGGERSCRIPTS` (int)
`RPMTAG_TRIGGERTYPE` (int)
`RPMTAG_TRIGGERVERSION` (int)
`RPMTAG_UPSTREAMRELEASES` (int)
  Requires librpm >= 4.18
`RPMTAG_URL` (int)
`RPMTAG_V` (int)
`RPMTAG_VCS` (int)
`RPMTAG_VENDOR` (int)
`RPMTAG_VERBOSE` (int)
`RPMTAG_VERIFYSCRIPT` (int)
`RPMTAG_VERIFYSCRIPTFLAGS` (int)
`RPMTAG_VERIFYSCRIPTPROG` (int)
`RPMTAG_VERITYSIGNATUREALGO` (int)
  With librpm >= 4.17.
`RPMTAG_VERITYSIGNATURES` (int)
  With librpm >= 4.17.
`RPMTAG_VERSION` (int)
`RPMTAG_XPM` (int)

# RpmInfo İşlevleri

# rpmaddtag

(PECL rpminfo >= 0.5.0)

rpmaddtag — Add tag retrieved in query

### Açıklama

function rpmaddtag(int `$tag`): bool

Add an additional retrieved tag in subsequent queries.

### Bağımsız Değişkenler

`tag`
  One of `RPMTAG_*` constant.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- rpminfo() - Get information from a RPM file
- rpmdbinfo() - Get information from installed RPM
- rpmdbsearch() - Search RPM packages

# rpmdbinfo

(PECL rpminfo >= 0.2.0)

rpmdbinfo — Get information from installed RPM

### Açıklama

function rpmdbinfo(string `$nevr`, bool `$full` = `false`): ?array

Retrieve information about an installed package, from the system RPM database.

### Bağımsız Değişkenler

`nevr`
  Name with optional epoch, version and release.
`full`
  If `true` all information headers for the file are retrieved, else only a minimal set.

### Dönen Değerler

An array of array of information, or `null` on error.

### Örnekler

Örnek 1 A rpmdbinfo() example

    <?php
    rpmaddtag(RPMTAG_INSTALLTIME);
    $info = rpmdbinfo("php-pecl-rpminfo");
    print_r($info);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => Array
            (
                [Name] => php-pecl-rpminfo
                [Version] => 0.4.2
                [Release] => 1.fc31
                [Summary] => RPM information
                [Installtime] => 1586244687
                [Arch] => x86_64
            )
    )

### Ayrıca Bakınız

- rpmaddtag() - Add tag retrieved in query

# rpmdbsearch

(PECL rpminfo >= 0.3.0)

rpmdbsearch — Search RPM packages

### Açıklama

function rpmdbsearch(
string `$pattern`,
int `$rpmtag` = RPMTAG_NAME,
int `$rpmmire` = -1,
bool `$full` = `false`
): ?array

Search packages in the system RPM database.

### Bağımsız Değişkenler

`pattern`
  Value to search for.
`rpmtag`
  Search criterion, which is one of the `RPMTAG_*` constants.
`rpmmire`
  Pattern type, which is one of the `RPMMIRE_*` constants. When < 0 the criterion must equal the value, and database index is used if possible.
`full`
  If `true` all information headers for the file are retrieved, else only a minimal set.

### Dönen Değerler

An array of array of information, or `null` on error.

### Örnekler

Örnek 1 Searching for the package owning a file

    <?php
    $info = rpmdbsearch("/usr/bin/php", RPMTAG_INSTFILENAMES);
    print_r($info);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [0] => Array
            (
                [Name] => php-cli
                [Version] => 7.4.4
                [Release] => 1.fc32
                [Summary] => Command-line interface for PHP
                [Arch] => x86_64
            )

    )

### Ayrıca Bakınız

- rpmaddtag() - Add tag retrieved in query

# rpmdefine

(PECL rpminfo >= 1.2.0)

rpmdefine — Define or change a RPM macro value

### Açıklama

function rpmdefine(string `$text`): bool

Define or change a RPM macro value.

This can be used to select the database path and backend to use instead of system default one.

### Bağımsız Değişkenler

`text`
  Macro name, options, body.

### Dönen Değerler

Başarı durumunda `true`, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 A rpmdefine() example

    <?php
    // use an old database (bdb) from an EL-8 chroot
    rpmdefine("_dbpath /var/lib/mock/almalinux-8-x86_64/root/var/lib/rpm");
    rpmdefine("_db_backend bdb_ro");
    print_r(rpmdbinfo("almalinux-release")[0]["Summary"]);

    // use a new database (sqlite) from a Fedora-41 chroot
    rpmdefine("_dbpath /var/lib/mock/fedora-41-x86_64/root/usr/lib/sysimage/rpm");
    rpmdefine("_db_backend sqlite");
    print_r(rpmdbinfo("fedora-release")[0]["Summary"]);
    ?>

Yukarıdaki örneğin çıktısı:

    AlmaLinux release file
    Fedora release files

### Ayrıca Bakınız

- rpmexpand() - Retrieve expanded value of a RPM macro
- rpmdbinfo() - Get information from installed RPM

# rpmexpand

(PECL rpminfo >= 1.2.0)

rpmexpand — Retrieve expanded value of a RPM macro

### Açıklama

function rpmexpand(string `$text`): string

Retrieve expanded value of a RPM macro.

### Bağımsız Değişkenler

`text`
  Text with RPM macros to expand.

### Dönen Değerler

A string with concatenated macro expansions.

### Örnekler

Örnek 1 A rpmexpand() example

    <?php
    $distro = rpmexpand("%{?fedora:Fedora %{fedora}}%{?rhel:Enterprise Linux %{rhel}}");
    print_r($distro);
    ?>

Yukarıdaki örneğin çıktısı:

    Fedora 41

### Ayrıca Bakınız

- rpmexpandnumeric() - Retrieve numerical value of a RPM macro

# rpmexpandnumeric

(PECL rpminfo >= 1.2.0)

rpmexpandnumeric — Retrieve numerical value of a RPM macro

### Açıklama

function rpmexpandnumeric(string `$text`): int

Retrieve numerical value of a RPM macro.

### Bağımsız Değişkenler

`text`
  Text with RPM macros to expand.

### Dönen Değerler

Macro expansion as a int. Boolean values (`Y` or `y` returns 1, `N` or `n` returns `0`) are permitted as well. An undefined macro returns `0`.

### Örnekler

Örnek 1 A rpmexpandnumeric() example

    <?php
    $bits = rpmexpandnumeric("%__isa_bits");
    print_r($bits);
    ?>

Yukarıdaki örneğin çıktısı:

    64

### Ayrıca Bakınız

- rpmexpand() - Retrieve expanded value of a RPM macro

# rpmgetsymlink

(PECL rpminfo >= 1.1.0)

rpmgetsymlink — Get target of a symlink

### Açıklama

function rpmgetsymlink(string `$path`, string `$name`): ?string

Get target of a symlink.

### Bağımsız Değişkenler

`path`
  Path of the RPM file.
`name`
  Name of the symlink file.

### Dönen Değerler

A string with target of the symlink, `null` on error, or an empty string if not a symlink.

# rpminfo

(PECL rpminfo >= 0.1.0)

rpminfo — Get information from a RPM file

### Açıklama

function rpminfo(string `$path`, bool `$full` = `false`, string `&$error` = ?): ?array

Retrieve information about a local file, a RPM package.

### Bağımsız Değişkenler

`path`
  Path of the RPM file.
`full`
  If `true` all information headers for the file are retrieved, else only a minimal set.
`error`
  If provided, will receive the possible error message, and will avoid a runtime warning.

### Dönen Değerler

An array of information, or `null` on error.

### Örnekler

Örnek 1 A rpminfo() example

    <?php
    rpmaddtag(RPMTAG_BUILDTIME);
    $info = rpminfo("./php-pecl-rpminfo-0.4.2-1.el8.remi.7.4.x86_64.rpm");
    print_r($info);
    ?>

Yukarıdaki örneğin çıktısı:

    Array
    (
        [Name] => php-pecl-rpminfo
        [Version] => 0.4.2
        [Release] => 1.el8
        [Summary] => RPM information
        [Buildtime] => 1586244821
        [Arch] => x86_64
    )

### Ayrıca Bakınız

- rpmaddtag() - Add tag retrieved in query

# rpmvercmp

(PECL rpminfo >= 0.1.0)

rpmvercmp — RPM version comparison

### Açıklama

function rpmvercmp(string `$evr1`, string `$evr2`, ?string `$operator` = `null`): int|bool

Compare two RPM package versions.

### Bağımsız Değişkenler

`evr1`
  First `epoch:version-release` string.
`evr2`
  Second `epoch:version-release` string.
`operator`

  An optional operator. The possible operators are: `<`, `lt`, `<=`, `le`, `>`, `gt`, `>=`, `ge`, `==`, `=`, `eq`, `!=`, `<>`, `ne`.

  This parameter is case-sensitive, values should be lowercase.

### Dönen Değerler

Returns `-1` if `evr1` is less than `evr2`, `1` if `evr1` is greater than `evr2`, and `0` if they are equal.

When using the optional `operator` argument, the function will return `true` if the relationship is the one specified by the operator, `false` otherwise.

### Sürüm Bilgisi

Sürüm: | Açıklama
--- | ---
PECL rpminfo 0.7.0 | Optional `operator` was added.

## İçindekiler

- rpmaddtag — Add tag retrieved in query
- rpmdbinfo — Get information from installed RPM
- rpmdbsearch — Search RPM packages
- rpmdefine — Define or change a RPM macro value
- rpmexpand — Retrieve expanded value of a RPM macro
- rpmexpandnumeric — Retrieve numerical value of a RPM macro
- rpmgetsymlink — Get target of a symlink
- rpminfo — Get information from a RPM file
- rpmvercmp — RPM version comparison

- Yapılandırma/Kurulum
  - Gereksinimler
  - Installation via PECL
- Öntanımlı Sabitler
- RpmInfo İşlevleri
  - rpmaddtag — Add tag retrieved in query
  - rpmdbinfo — Get information from installed RPM
  - rpmdbsearch — Search RPM packages
  - rpmdefine — Define or change a RPM macro value
  - rpmexpand — Retrieve expanded value of a RPM macro
  - rpmexpandnumeric — Retrieve numerical value of a RPM macro
  - rpmgetsymlink — Get target of a symlink
  - rpminfo — Get information from a RPM file
  - rpmvercmp — RPM version comparison

# XLSWriter

# Giriş

An efficient and fast xlsx file export extension.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

XLSWriter requires PHP 7.0 and above.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/xlswriter

## Özkaynak Türleri

There is one resource used by the procedural version of the XLSWriter extension: returned by fileName() or \Vtiful\Kernel\Format.

# The Vtiful\Kernel\Excel class

(PECL xlswriter >= 1.2.1)

## Giriş

Create xlsx files and set cells and output xlsx files

## Sınıf Sözdizimi

class Vtiful\Kernel\Excel {
/* Yöntemler */
public function __construct(array `$config`)
public function addSheet(string `$sheetName`)
public function autoFilter(string `$scope`)
public function constMemory(string `$fileName`, string `$sheetName` = ?)
public function data(array `$data`)
public function fileName(string `$fileName`, string `$sheetName` = ?)
public function getHandle()
public function header(array `$headerData`)
public function insertFormula(int `$row`, int `$column`, string `$formula`)
public function insertImage(int `$row`, int `$column`, string `$localImagePath`)
public function insertText(
int `$row`,
int `$column`,
int|float|string `$data`,
string `$format` = ?
)
public function mergeCells(string `$scope`, string `$data`)
public function output()
public function setColumn(string `$range`, float `$width`, resource `$format` = ?)
public function setRow(string `$range`, float `$height`, resource `$format` = ?)
}

# Vtiful\Kernel\Excel::addSheet

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::addSheet — Vtiful\Kernel\Excel addSheet

### Açıklama

public function Vtiful\Kernel\Excel::addSheet(string `$sheetName`)

Create a new worksheet in the xlsx file.

### Bağımsız Değişkenler

`sheetName`

  Worksheet name

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet_one')
        ->header(['name', 'age'])
        ->data([
            ['viest', 23],
            ['wjx', 23]
        ]);

    $file->addSheet('sheet_two')
        ->header(['name', 'age'])
        ->data([
            ['james', 33],
            ['king', 33]
        ]);

    $file->output();
    ?>

# Vtiful\Kernel\Excel::autoFilter

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::autoFilter — Vtiful\Kernel\Excel autoFilter

### Açıklama

public function Vtiful\Kernel\Excel::autoFilter(string `$scope`)

Add autofilter to a worksheet.

### Bağımsız Değişkenler

`scope`

  Cell start and end coordinate string.

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('test.xlsx')
            ->header(['name', 'age'])
            ->data($data)
            ->autoFilter('A1:B11')  // auto filter
            ->output();
    ?>

# Vtiful\Kernel\Excel::constMemory

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::constMemory — Vtiful\Kernel\Excel constMemory

### Açıklama

public function Vtiful\Kernel\Excel::constMemory(string `$fileName`, string `$sheetName` = ?)

Write a large file with constant memory usage.

### Bağımsız Değişkenler

`fileName`

  XLSX file name

`sheetName`

  Worksheet name

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
      'path' => '/home/viest'
    ];

    $fileObject = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->constMemory('tutorial.xlsx', 'sheet');
    ?>

# Vtiful\Kernel\Excel::__construct

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::__construct — Vtiful\Kernel\Excel constructor

### Açıklama

public function Vtiful\Kernel\Excel::__construct(array `$config`)

Vtiful\Kernel\Excel constructor, create a class object.

### Bağımsız Değişkenler

`config`

  XLSX file export configuration

### Örnekler

Örnek 1 example

    <?php
    $config = [
      'path' => '/home/viest'
    ];

    $excelObject = new \Vtiful\Kernel\Excel($config);
    ?>

# Vtiful\Kernel\Excel::data

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::data — Vtiful\Kernel\Excel data

### Açıklama

public function Vtiful\Kernel\Excel::data(array `$data`)

Write a data in the worksheet.

### Bağımsız Değişkenler

`data`

  worksheet data

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet_one')
        ->header(['name', 'age'])
        ->data([
          ['viest', 23],
          ['wjx', 23],
        ]);
    ?>

# Vtiful\Kernel\Excel::fileName

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::fileName — Vtiful\Kernel\Excel fileName

### Açıklama

public function Vtiful\Kernel\Excel::fileName(string `$fileName`, string `$sheetName` = ?)

Create a brand new xlsx file and create a worksheet.

### Bağımsız Değişkenler

`fileName`

  XLSX file name

`sheetName`

  Worksheet name

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
      'path' => '/home/viest'
    ];

    $fileObject = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet');
    ?>

# Vtiful\Kernel\Excel::getHandle

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::getHandle — Vtiful\Kernel\Excel getHandle

### Açıklama

public function Vtiful\Kernel\Excel::getHandle()

Get the xlsx text resource handle.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Resource

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet_one')
        ->header(['name', 'age']);

    $handle = $file->getHandle();
    ?>

# Vtiful\Kernel\Excel::header

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::header — Vtiful\Kernel\Excel header

### Açıklama

public function Vtiful\Kernel\Excel::header(array `$headerData`)

Write a header in the worksheet.

### Bağımsız Değişkenler

`headerData`

  worksheet header data

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet_one')
        ->header(['name', 'age']);
    ?>

# Vtiful\Kernel\Excel::insertFormula

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::insertFormula — Vtiful\Kernel\Excel insertFormula

### Açıklama

public function Vtiful\Kernel\Excel::insertFormula(int `$row`, int `$column`, string `$formula`)

Insert calculation formula.

### Bağımsız Değişkenler

`row`

  cell row

`column`

  cell column

`formula`

  formula string

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);

    $file = $excel->fileName("free.xlsx")
        ->header(['name', 'money']);

    for($index = 1; $index < 10; $index++) {
        $file->insertText($index, 0, 'viest');
        $file->insertText($index, 1, 10);
    }

    $file->insertText(12, 0, "Total");
    $file->insertFormula(12, 1, '=SUM(B2:B11)'); // insert formula

    $file->output();

# Vtiful\Kernel\Excel::insertImage

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::insertImage — Vtiful\Kernel\Excel insertImage

### Açıklama

public function Vtiful\Kernel\Excel::insertImage(int `$row`, int `$column`, string `$localImagePath`)

Insert a local image into the cell.

### Bağımsız Değişkenler

`row`

  cell row

`column`

  cell column

`localImagePath`

  local image path

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);

    $file = $excel->fileName("free.xlsx");

    $file->insertImage(5, 0, '/vagrant/ASW-G-66.jpg');

    $file->output();

# Vtiful\Kernel\Excel::insertText

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::insertText — Vtiful\Kernel\Excel insertText

### Açıklama

public function Vtiful\Kernel\Excel::insertText(
int `$row`,
int `$column`,
int|float|string `$data`,
string `$format` = ?
)

Write text in a cell.

### Bağımsız Değişkenler

`row`

  cell row

`column`

  cell column

`data`

  data to be written

`format`

  String format

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);

    $file = $excel->fileName("free.xlsx")
        ->header(['name', 'money']);

    for ($index = 0; $index < 10; $index++) {
        $file->insertText($index+1, 0, 'viest');
        $file->insertText($index+1, 1, 10000, '#,##0');
    }

    $file->output();

# Vtiful\Kernel\Excel::mergeCells

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::mergeCells — Vtiful\Kernel\Excel mergeCells

### Açıklama

public function Vtiful\Kernel\Excel::mergeCells(string `$scope`, string `$data`)

Merge Cells.

### Bağımsız Değişkenler

`scope`

  cell start and end coordinate strings

`data`

  string data

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);

    $excel->fileName("test.xlsx")
            ->mergeCells('A1:C1', 'Merge cells')
            ->output();

# Vtiful\Kernel\Excel::output

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::output — Vtiful\Kernel\Excel output

### Açıklama

public function Vtiful\Kernel\Excel::output()

Output xlsx file to disk.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

XLSX file path;

### Örnekler

Örnek 1 example

    <?php
    $config = [
        'path' => './tests'
    ];

    $fileObject  = new \Vtiful\Kernel\Excel($config);

    $file = $fileObject->fileName('tutorial.xlsx', 'sheet_one')
        ->header(['name', 'age'])
        ->data([
          ['viest', 23],
          ['wjx', 23],
        ]);

    $path = $file->output();
    ?>

# Vtiful\Kernel\Excel::setColumn

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::setColumn — Vtiful\Kernel\Excel setColumn

### Açıklama

public function Vtiful\Kernel\Excel::setColumn(string `$range`, float `$width`, resource `$format` = ?)

Set the format of the column.

### Bağımsız Değişkenler

`range`

  cell start and end coordinate strings

`width`

  column width

`format`

  cell format resource

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 setColumn example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $boldStyle = $format->bold()->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setColumn('A:A', 200, $boldStyle)
        ->output();

# Vtiful\Kernel\Excel::setRow

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Excel::setRow — Vtiful\Kernel\Excel setRow

### Açıklama

public function Vtiful\Kernel\Excel::setRow(string `$range`, float `$height`, resource `$format` = ?)

Set the format of the row.

### Bağımsız Değişkenler

`range`

  cell start and end coordinate strings

`height`

  row height

`format`

  cell format resource

### Dönen Değerler

Vtiful\Kernel\Excel instance

### Örnekler

Örnek 1 setRow example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $boldStyle = $format->bold()->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setRow('A1', 20, $boldStyle)
        ->output();

## İçindekiler

- Vtiful\Kernel\Excel::addSheet — Vtiful\Kernel\Excel addSheet
- Vtiful\Kernel\Excel::autoFilter — Vtiful\Kernel\Excel autoFilter
- Vtiful\Kernel\Excel::constMemory — Vtiful\Kernel\Excel constMemory
- Vtiful\Kernel\Excel::__construct — Vtiful\Kernel\Excel constructor
- Vtiful\Kernel\Excel::data — Vtiful\Kernel\Excel data
- Vtiful\Kernel\Excel::fileName — Vtiful\Kernel\Excel fileName
- Vtiful\Kernel\Excel::getHandle — Vtiful\Kernel\Excel getHandle
- Vtiful\Kernel\Excel::header — Vtiful\Kernel\Excel header
- Vtiful\Kernel\Excel::insertFormula — Vtiful\Kernel\Excel insertFormula
- Vtiful\Kernel\Excel::insertImage — Vtiful\Kernel\Excel insertImage
- Vtiful\Kernel\Excel::insertText — Vtiful\Kernel\Excel insertText
- Vtiful\Kernel\Excel::mergeCells — Vtiful\Kernel\Excel mergeCells
- Vtiful\Kernel\Excel::output — Vtiful\Kernel\Excel output
- Vtiful\Kernel\Excel::setColumn — Vtiful\Kernel\Excel setColumn
- Vtiful\Kernel\Excel::setRow — Vtiful\Kernel\Excel setRow

# The Vtiful\Kernel\Format class

(PECL xlswriter >= 1.2.1)

## Giriş

Create a cell format object

## Sınıf Sözdizimi

class Vtiful\Kernel\Format {
/* Sabitler */
const int FORMAT_ALIGN_LEFT = 1;
const int FORMAT_ALIGN_CENTER = 2;
const int FORMAT_ALIGN_RIGHT = 3;
const int FORMAT_ALIGN_FILL = 4;
const int FORMAT_ALIGN_JUSTIFY = 5;
const int FORMAT_ALIGN_CENTER_ACROSS = 6;
const int FORMAT_ALIGN_DISTRIBUTED = 7;
const int FORMAT_ALIGN_VERTICAL_TOP = 8;
const int FORMAT_ALIGN_VERTICAL_BOTTOM = 9;
const int FORMAT_ALIGN_VERTICAL_CENTER = 10;
const int FORMAT_ALIGN_VERTICAL_JUSTIFY = 11;
const int FORMAT_ALIGN_VERTICAL_DISTRIBUTED = 12;
const int UNDERLINE_SINGLE = 1;
const int UNDERLINE_DOUBLE = 2;
const int UNDERLINE_SINGLE_ACCOUNTING = 3;
const int UNDERLINE_DOUBLE_ACCOUNTING = 4;
/* Yöntemler */
public function align(resource `$handle`, int `$style`)
public function bold(resource `$handle`)
public function italic(resource `$handle`)
public function underline(resource `$handle`, int `$style`)
}

## Öntanımlı Sabitler

`Vtiful\Kernel\Format::FORMAT_ALIGN_LEFT`

`Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER`

`Vtiful\Kernel\Format::FORMAT_ALIGN_RIGHT`

`Vtiful\Kernel\Format::FORMAT_ALIGN_FILL`

`Vtiful\Kernel\Format::FORMAT_ALIGN_JUSTIFY`

`Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER_ACROSS`

`Vtiful\Kernel\Format::FORMAT_ALIGN_DISTRIBUTED`

`Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_TOP`

`Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_BOTTOM`

`Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER`

`Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_JUSTIFY`

`Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_DISTRIBUTED`

`Vtiful\Kernel\Format::UNDERLINE_SINGLE`

`Vtiful\Kernel\Format::UNDERLINE_DOUBLE`

`Vtiful\Kernel\Format::UNDERLINE_SINGLE_ACCOUNTING`

`Vtiful\Kernel\Format::UNDERLINE_DOUBLE_ACCOUNTING`

# Vtiful\Kernel\Format::align

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Format::align — Vtiful\Kernel\Format align

### Açıklama

public function Vtiful\Kernel\Format::align(resource `$handle`, int `$style`)

set cell align

### Bağımsız Değişkenler

`handle`

  xlsx file handle

`style`

  Vtiful\Kernel\Format constant

### Dönen Değerler

Resource

### Örnekler

Örnek 1 Align style example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $alignStyle = $format->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_LEFT)->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setColumn('A:A', 200, $alignStyle)
        ->output();
    ?>

# Vtiful\Kernel\Format::bold

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Format::bold — Vtiful\Kernel\Format bold

### Açıklama

public function Vtiful\Kernel\Format::bold(resource `$handle`)

Vtiful\Kernel\Format bold format

### Bağımsız Değişkenler

`handle`

  xlsx file handle

### Dönen Değerler

Resource

### Örnekler

Örnek 1 Bold style example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $boldStyle = $format->bold()->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setColumn('A:A', 200, $boldStyle)
        ->output();
    ?>

# Vtiful\Kernel\Format::italic

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Format::italic — Vtiful\Kernel\Format italic

### Açıklama

public function Vtiful\Kernel\Format::italic(resource `$handle`)

Vtiful\Kernel\Format italic format

### Bağımsız Değişkenler

`handle`

  xlsx file handle

### Dönen Değerler

Resource

### Örnekler

Örnek 1 Italic style example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $italicStyle = $format->italic()->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setColumn('A:A', 200, $italicStyle)
        ->output();
    ?>

# Vtiful\Kernel\Format::underline

(PECL xlswriter >= 1.2.1)

Vtiful\Kernel\Format::underline — Vtiful\Kernel\Format underline

### Açıklama

public function Vtiful\Kernel\Format::underline(resource `$handle`, int `$style`)

Vtiful\Kernel\Format underline format

### Bağımsız Değişkenler

`handle`

  xlsx file handle

`style`

  Vtiful\Kernel\Format constant

### Dönen Değerler

Resource

### Örnekler

Örnek 1 Underline style example

    <?php
    $config = [
        'path' => './tests'
    ];

    $excel = new \Vtiful\Kernel\Excel($config);
    $excel->fileName('tutorial01.xlsx');

    $format = new \Vtiful\Kernel\Format($excel->getHandle());
    $underlineStyle = $format->underline(\Vtiful\Kernel\Format::UNDERLINE_SINGLE)->toResource();

    $excel->header(['name', 'age'])
        ->data([['viest', 21]])
        ->setColumn('A:A', 200, $underlineStyle)
        ->output();
    ?>

## İçindekiler

- Vtiful\Kernel\Format::align — Vtiful\Kernel\Format align
- Vtiful\Kernel\Format::bold — Vtiful\Kernel\Format bold
- Vtiful\Kernel\Format::italic — Vtiful\Kernel\Format italic
- Vtiful\Kernel\Format::underline — Vtiful\Kernel\Format underline

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Vtiful\Kernel\Excel — The Vtiful\Kernel\Excel class
  - Vtiful\Kernel\Excel::addSheet — Vtiful\Kernel\Excel addSheet
  - Vtiful\Kernel\Excel::autoFilter — Vtiful\Kernel\Excel autoFilter
  - Vtiful\Kernel\Excel::constMemory — Vtiful\Kernel\Excel constMemory
  - Vtiful\Kernel\Excel::__construct — Vtiful\Kernel\Excel constructor
  - Vtiful\Kernel\Excel::data — Vtiful\Kernel\Excel data
  - Vtiful\Kernel\Excel::fileName — Vtiful\Kernel\Excel fileName
  - Vtiful\Kernel\Excel::getHandle — Vtiful\Kernel\Excel getHandle
  - Vtiful\Kernel\Excel::header — Vtiful\Kernel\Excel header
  - Vtiful\Kernel\Excel::insertFormula — Vtiful\Kernel\Excel insertFormula
  - Vtiful\Kernel\Excel::insertImage — Vtiful\Kernel\Excel insertImage
  - Vtiful\Kernel\Excel::insertText — Vtiful\Kernel\Excel insertText
  - Vtiful\Kernel\Excel::mergeCells — Vtiful\Kernel\Excel mergeCells
  - Vtiful\Kernel\Excel::output — Vtiful\Kernel\Excel output
  - Vtiful\Kernel\Excel::setColumn — Vtiful\Kernel\Excel setColumn
  - Vtiful\Kernel\Excel::setRow — Vtiful\Kernel\Excel setRow
- Vtiful\Kernel\Format — The Vtiful\Kernel\Format class
  - Vtiful\Kernel\Format::align — Vtiful\Kernel\Format align
  - Vtiful\Kernel\Format::bold — Vtiful\Kernel\Format bold
  - Vtiful\Kernel\Format::italic — Vtiful\Kernel\Format italic
  - Vtiful\Kernel\Format::underline — Vtiful\Kernel\Format underline

- FDF — Forms Data Format
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - FDF İşlevleri
- GnuPG — GNU Privacy Guard
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - Örnekler
  - GnuPG İşlevleri
- wkhtmltox
  - Yapılandırma/Kurulum
  - wkhtmltox\PDF\Converter — The wkhtmltox\PDF\Converter class
  - wkhtmltox\PDF\Object — The wkhtmltox\PDF\Object class
  - wkhtmltox\Image\Converter — The wkhtmltox\Image\Converter class
- PS — PostScript document creation
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - PS İşlevleri
- RpmInfo
  - Yapılandırma/Kurulum
  - Öntanımlı Sabitler
  - RpmInfo İşlevleri
- XLSWriter
  - Yapılandırma/Kurulum
  - Vtiful\Kernel\Excel — The Vtiful\Kernel\Excel class
  - Vtiful\Kernel\Format — The Vtiful\Kernel\Format class

# Süreç Denetim Eklentileri

# Eio

# Giriş

This extension provides asynchronous POSIX I/O by means of » libeio C library written by Marc Lehmann.

> Bilginize: Bu eklenti Windows sistemlerinde çalışmaz.

Uyarı

It is important to be aware that each request is executed in a thread, and the order of execution of continuously queued requests basically is unpredictable. For instance, the following piece of code is incorrect.

Örnek 1 Incorrect requests

    <?php
    // Request to create symlink of $filename to $link
    eio_symlink($filename, $link);

    // Request to move $filename to $new_filename
    eio_rename($filename, $new_filename);

    // Process requests
    eio_event_loop();
    ?>

In the example above eio_rename() request may finish before eio_symlink(). To fix it you might call eio_rename() in the callback of eio_symlink():

Örnek 2 Calling request from a request callback

    <?php
    function my_symlink_done($filename, $result) {
     // Request to move $filename to $new_filename
     eio_rename($filename, "/path/to/new-name");

     // Process requests
     eio_event_loop();
    }

    // Request to create symlink of $filename to $link
    eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_done", $filename);

    // Process requests
    eio_event_loop();
    ?>

Alternatively, you might want to create a request group:

Örnek 3 Calling request from a request callback

    <?php
    /* Is called when the group requests are done */
    function my_grp_done($data, $result) {
     // ...
    }

    function my_symlink_done($filename, $result) {
     // Create eio_rename request and add it to the group
     $req = eio_rename($filename, "/path/to/new-name");
     eio_grp_add($grp, $req);
     // You might want to add more requests...
    }

    // Create a request group
    $grp = eio_grp("my_grp_done", "my_grp_data");

    // Create eio_symlink request and add it to the group
    // Pass $filename to the callback
    $req = eio_symlink($filename, $link,
      EIO_PRI_DEFAULT, "my_symlink_done", $filename);
    eio_grp_add($grp, $req);

    // Process requests
    eio_event_loop();
    ?>

Group is a special kind of request that could accumulate a set of regular eio requests. This could be used to create a complex request that opens, reads and closes a file.

Since version 0.3.0 alpha, a variable used in communications with libeio internally, could be retrieved with eio_get_event_stream(). The variable could be used to bind to an event loop supported by some other extension. You might organize a simple event loop where eio and libevent work together:

Örnek 4 Using eio with libevent

    <?php
    function my_eio_poll($fd, $events, $arg) {
        /* Some libevent regulation might go here .. */
        if (eio_nreqs()) {
            eio_poll();
        }
        /* .. and here */
    }

    function my_res_cb($d, $r) {
        var_dump($r); var_dump($d);
    }

    $base = event_base_new();
    $event = event_new();

    // This stream is used to bind with libevent
    $fd = eio_get_event_stream();

    eio_nop(EIO_PRI_DEFAULT, "my_res_cb", "nop data");
    eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_res_cb", "mkdir data");
    /* some other eio_* calls here ... */

    // set event flags
    event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

    // set event base
    event_base_set($event, $base);

    // enable event
    event_add($event);

    // start event loop
    event_base_loop($base);

    /* The same will be available via buffered libevent interface */
    ?>

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum
- Özkaynak Türleri

## Gereksinimler

This extension has » libeio library embedded. So you do NOT need to install libeio separately.

## Kurulum

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/eio.

For information about manual installation, please read the file INSTALL included in the package.

## Özkaynak Türleri

There are two resource types in this extension: request and request group.

# Öntanımlı Sabitler

Buradaki sabitler bu eklenti için tanımlanmış olup, sadece eklentinin PHP içinde derlenmiş olması veya çalışma anında dinamik olarak yüklenmesi halinde kullanılabilir.

Request priority constants:

`EIO_PRI_MIN` (int)
  Request minimal priority.
`EIO_PRI_DEFAULT` (int)
  Request default priority.
`EIO_PRI_MAX` (int)
  Request maximal priority.

eio_seek() `whence` argument:

`EIO_SEEK_SET` (int)
  The offset is set to specified number of bytes (`offset`).
`EIO_SEEK_CUR` (int)
  The offset is set to its current location plus `offset` bytes.
`EIO_SEEK_END` (int)
  The offset is set to the size of the file plus `offset` bytes.

Flags used with eio_readdir():

`EIO_READDIR_DENTS` (int)
  eio_readdir() flag. If specified, the result argument of the callback becomes an array with the following keys: `'names'` - array of directory names `'dents'` - array of `struct eio_dirent`-like arrays having the following keys each: `'name'` - the directory name; `'type'` - one of EIO_DT_* constants; `'inode'` - the inode number, if available, otherwise unspecified.
`EIO_READDIR_DIRS_FIRST` (int)
  When this flag is specified, the names will be returned in an order where likely directories come first, in optimal stat order.
`EIO_READDIR_STAT_ORDER` (int)
  When this flag is specified, then the names will be returned in an order suitable for `stat`'ing each one. When planning to stat() all files in the given directory, the returned order will likely be fastest.
`EIO_READDIR_FOUND_UNKNOWN` (int)
`EIO_DT_UNKNOWN` (int)
  Unknown node type (very common). Further stat() needed.
`EIO_DT_FIFO` (int)
  FIFO node type.
`EIO_DT_CHR` (int)
  Node type.
`EIO_DT_MPC` (int)
  Multiplexed char device (v7+coherent) node type.
`EIO_DT_DIR` (int)
  Directory node type.
`EIO_DT_NAM` (int)
  Xenix special named file node type.
`EIO_DT_BLK` (int)
  Node type.
`EIO_DT_MPB` (int)
  Multiplexed block device (v7+coherent).
`EIO_DT_REG` (int)
  Node type.
`EIO_DT_NWK` (int)
`EIO_DT_CMP` (int)
  HP-UX network special node type.
`EIO_DT_LNK` (int)
  Link node type.
`EIO_DT_SOCK` (int)
  Socket node type.
`EIO_DT_DOOR` (int)
  Solaris door node type.
`EIO_DT_WHT` (int)
  Node type.
`EIO_DT_MAX` (int)
  Highest node type value.

Access modes for eio_open() `flags` argument:

`EIO_O_RDONLY` (int)
`EIO_O_WRONLY` (int)
`EIO_O_RDWR` (int)
`EIO_O_NONBLOCK` (int)
`EIO_O_APPEND` (int)
`EIO_O_CREAT` (int)
`EIO_O_TRUNC` (int)
`EIO_O_EXCL` (int)
`EIO_O_FSYNC` (int)

`mode` argument flags for eio_open():

`EIO_S_IRUSR` (int)
`EIO_S_IWUSR` (int)
`EIO_S_IXUSR` (int)
`EIO_S_IRGRP` (int)
`EIO_S_IWGRP` (int)
`EIO_S_IXGRP` (int)
`EIO_S_IROTH` (int)
`EIO_S_IWOTH` (int)
`EIO_S_IXOTH` (int)
`EIO_S_IFREG` (int)
`EIO_S_IFCHR` (int)
`EIO_S_IFBLK` (int)
`EIO_S_IFIFO` (int)
`EIO_S_IFSOCK` (int)

eio_sync_file_range() flags:

`EIO_SYNC_FILE_RANGE_WAIT_BEFORE` (int)
`EIO_SYNC_FILE_RANGE_WRITE` (int)
`EIO_SYNC_FILE_RANGE_WAIT_AFTER` (int)

eio_fallocate() flags:

`EIO_FALLOC_FL_KEEP_SIZE` (int)

> Bilginize: EIO_S_I* constants have the same meaning as their S_I* POSIX counterparts.

> Bilginize: EIO_SYNC_FILE_* constants have the same meaning as their SYNC_FILE_** counterparts.

> Bilginize: EIO_O_* constants have the same meaning as their O_* POSIX counterparts.

# Örnekler

Örnek 1 Cancelling a request

    <?php
     /* Is called when eio_nop() finished */
     function my_nop_cb($data, $result) {
      echo "my_nop ", $data, "\n";
     }

    // This eio_nop() call will be cancelled
    $req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1");
    var_dump($req);
    eio_cancel($req);

    // This time eio_nop() will be processed
    eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2");

    // Process requests
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(4) of type (EIO Request Descriptor)
    my_nop 2

Örnek 2 Calling eio_chmod()

    <?php
    $temp_filename = dirname(__FILE__) ."/eio-temp-file.tmp";
    touch($temp_filename);

    /* Is called when eio_chmod() finished */
    function my_chmod_callback($data, $result) {
        global $temp_filename;

        if ($result == 0 && !is_readable($temp_filename) && is_writable($temp_filename)) {
            echo "eio_chmod_ok";
        }

        @unlink($temp_filename);
    }

    eio_chmod($temp_filename, 0200, EIO_PRI_DEFAULT, "my_chmod_callback");
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_chmod_ok

Örnek 3 Making a custom request

    <?php
    /* Callback for the custom callback */
    function my_custom_callback($data, $result) {
        var_dump($data);
        var_dump(count($result));
        var_dump($result['data_modified']);
        var_dump($result['result']);
    }

    /* The custom request */
    function my_custom($data) {
        var_dump($data);

        $result  = array(
            'result'        => 1001,
            'data_modified' => "my custom data",
        );

        return $result;
    }

    $data = "my_custom_data";
    $req = eio_custom("my_custom", EIO_PRI_DEFAULT, "my_custom_callback", $data);
    var_dump($req);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(4) of type (EIO Request Descriptor)
    string(14) "my_custom_data"
    string(14) "my_custom_data"
    int(2)
    string(14) "my custom data"
    int(1001)

Örnek 4 Grouping requests

    <?php
    /*
     * Create a group request to open, read and close a file
     */

    $temp_filename = dirname(__FILE__) ."/eio-file.tmp";
    $fp = fopen($temp_filename, "w");
    fwrite($fp, "some data");
    fclose($fp);

    /* Is called when the group requests are done */
    function my_grp_done($data, $result) {
     global $temp_filename;
     var_dump($result == 0);
     @unlink($temp_filename);
    }

    /* Is called when eio_open() done */
    function my_grp_file_opened_callback($data, $result) {
     global $my_file_fd, $grp;

     $my_file_fd = $result;

     var_dump($result > 0);

     // Create eio_read() request and add it to the group
     $req = eio_read($my_file_fd, 4, 0, EIO_PRI_DEFAULT, "my_grp_file_read_callback");
     eio_grp_add($grp, $req);
    }

    /* Is called when eio_read() done */
    function my_grp_file_read_callback($data, $result) {
     global $my_file_fd, $grp;

     var_dump($result);

     // Create eio_close() request and add it to the group
     $req = eio_close($my_file_fd);
     eio_grp_add($grp, $req);
    }

    $grp = eio_grp("my_grp_done", "my_grp_data");

    // Create eio_open() request and add it to the group
    $req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
      EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);
    eio_grp_add($grp, $req);
    var_dump($grp);

    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(6) of type (EIO Group Descriptor)
    bool(true)
    string(4) "some"
    bool(true)

Örnek 5 Using eio with libevent extension

    <?php
    function my_eio_poll($fd, $events, $arg) {
        /* Some libevent regulation might go here .. */
        if (eio_nreqs()) {
            eio_poll();
        }
        /* .. and here */
    }

    function my_nop_cb($d, $r) {
        var_dump($r); var_dump($d);
    }

    $base = event_base_new();
    $event = event_new();

    $fd = eio_get_event_stream();
    var_dump($fd);

    eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "nop data");
    eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_nop_cb", "nop data");
    /* some other eio_* calls here ... */

    // set event flags
    event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

    // set event base
    event_base_set($event, $base);

    // enable event
    event_add($event);

    // start event loop
    event_base_loop($base);

    /* The same will be available via buffered libevent interface */
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(3)
    int(0)
    string(8) "nop data"
    int(0)
    string(10) "mkdir data"

Örnek 6 Using eio with event extension

    <?php
    $base = new EventBase();

    // Retrieve eio polling stream.
    // Note, this variable should be alive as long as the event loop is running.
    $eio_stream = eio_get_event_stream();

    // Bind eio polling stream to the event loop.
    $poll_event = new Event($base, $eio_stream, Event::READ, function () {
      if (eio_nreqs()) {
        eio_poll();
      }
    });
    $poll_event->add();

    // Add eio jobs
    eio_nop(EIO_PRI_DEFAULT, function () {
      echo "eio_nop\n";
    });

    // Add events
    $timer = Event::timer($base, function () {
      echo "2 seconds elapsed\n";
    });
    $timer->add(2);

    // Dispatch events.
    $base->dispatch();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_nop
    2 seconds elapsed

# Eio İşlevleri

# eio_busy

(PECL eio >= 0.0.1dev)

eio_busy — Artificially increase load. Could be useful in tests, benchmarking

### Açıklama

function eio_busy(
int `$delay`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_busy() artificially increases load taking `delay` seconds to execute. May be used for debugging, or benchmarking.

### Bağımsız Değişkenler

`delay`
  Delay in seconds
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`
  This callback is called when all the group requests are done.
`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_busy() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_nop() - Does nothing, except go through the whole request cycle

# eio_cancel

(PECL eio >= 0.0.1dev)

eio_cancel — Cancels a request

### Açıklama

function eio_cancel(resource `$req`): void

eio_cancel() cancels a request specified by `req`

### Bağımsız Değişkenler

`req`
  The request resource
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 eio_cancel() example

    <?php
     /* Is called when eio_nop() finished */
     function my_nop_cb($data, $result) {
      echo "my_nop ", $data, "\n";
     }

    // This eio_nop() call will be cancelled
    $req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1");
    var_dump($req);
    eio_cancel($req);

    // This time eio_nop() will be processed
    eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2");

    // Process requests
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(4) of type (EIO Request Descriptor)
    my_nop 2

### Ayrıca Bakınız

- eio_grp_cancel() - Cancels a request group

# eio_chmod

(PECL eio >= 0.0.1dev)

eio_chmod — Change file/directory permissions

### Açıklama

function eio_chmod(
string `$path`,
int `$mode`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_chmod() changes file, or directory permissions. The new permissions are specified by `mode`.

### Bağımsız Değişkenler

`path`
  Path to the target file or directory
  Uyarı

  Avoid relative paths

`mode`
  The new permissions. E.g. `0644`.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_chmod() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_chown() - Change file/directory ownership

# eio_chown

(PECL eio >= 0.0.1dev)

eio_chown — Change file/directory ownership

### Açıklama

function eio_chown(
string `$path`,
int `$uid`,
int `$gid` = -1,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_chown() changes ownership of a file, or directory. The new owner is specified by `uid`, and the group by `gid`.

### Bağımsız Değişkenler

`path`
  Path to file or directory.
  Uyarı

  Avoid relative paths

`uid`
  User ID. Is ignored when equal to -1.
`gid`
  Group ID. Is ignored when equal to -1.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_chown() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_chmod() - Change file/directory permissions

# eio_close

(PECL eio >= 0.0.1dev)

eio_close — Close file

### Açıklama

function eio_close(
mixed `$fd`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_close() closes file specified by `fd`.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_close() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_open() - Opens a file

# eio_custom

(PECL eio >= 0.0.1dev)

eio_custom — Execute custom request like any other eio_* call

### Açıklama

function eio_custom(
callable `$execute`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

eio_custom() executes custom function specified by `execute` processing it just like any other eio_* call.

### Bağımsız Değişkenler

`execute`

  Specifies the request function that should match the following prototype:

            mixed execute(mixed data);

  `callback` is event completion callback that should match the following prototype:

            void callback(mixed data, mixed result);

  `data` is the data passed to `execute` via `data` argument without modifications `result` value returned by `execute`
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_custom() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_custom() example

    <?php
    /* Callback for the custom callback */
    function my_custom_callback($data, $result) {
        var_dump($data);
        var_dump(count($result));
        var_dump($result['data_modified']);
        var_dump($result['result']);
    }

    /* The custom request */
    function my_custom($data) {
        var_dump($data);

        $result  = array(
            'result'        => 1001,
            'data_modified' => "my custom data",
        );

        return $result;
    }

    $data = "my_custom_data";
    $req = eio_custom("my_custom", EIO_PRI_DEFAULT, "my_custom_callback", $data);
    var_dump($req);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(4) of type (EIO Request Descriptor)
    string(14) "my_custom_data"
    string(14) "my_custom_data"
    int(2)
    string(14) "my custom data"
    int(1001)

# eio_dup2

(PECL eio >= 0.0.1dev)

eio_dup2 — Duplicate a file descriptor

### Açıklama

function eio_dup2(
mixed `$fd`,
mixed `$fd2`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_dup2() duplicates file descriptor.

### Bağımsız Değişkenler

`fd`
  Source stream, Socket resource, or numeric file descriptor
`fd2`
  Target stream, Socket resource, or numeric file descriptor
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_dup2() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_event_loop

(PECL eio >= 0.0.1dev)

eio_event_loop — Polls libeio until all requests proceeded

### Açıklama

function eio_event_loop(): bool

eio_event_loop() polls libeio until all requests proceeded.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_event_loop() returns `true` on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_event_loop() example

    <?php
    $temp_filename = "eio-temp-file.tmp";
    touch($temp_filename);

    /* Is called when eio_chmod() finished */
    function my_chmod_callback($data, $result) {
        global $temp_filename;

        if ($result == 0 && !is_readable($temp_filename) && is_writable($temp_filename)) {
            echo "eio_chmod_ok";
        }

        @unlink($temp_filename);
    }

    eio_chmod($temp_filename, 0200, EIO_PRI_DEFAULT, "my_chmod_callback");
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_chmod_ok

### Ayrıca Bakınız

- eio_poll() - Can be called whenever there are pending requests that need finishing

# eio_fallocate

(PECL eio >= 0.0.1dev)

eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file

### Açıklama

function eio_fallocate(
mixed `$fd`,
int `$mode`,
int `$offset`,
int `$length`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_fallocate() allows the caller to directly manipulate the allocated disk space for the file specified by `fd` file descriptor for the byte range starting at `offset` and continuing for `length` bytes.

> Bilginize: File should be opened for writing
> `EIO_O_CREAT` should be logically OR'd with `EIO_O_WRONLY`, or `EIO_O_RDWR`

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().
`mode`
  Currently only one flag is supported for mode: `EIO_FALLOC_FL_KEEP_SIZE` (the same as POSIX constant `FALLOC_FL_KEEP_SIZE`).
`offset`
  Specifies start of the byte range.
`length`
  Specifies length of the byte range.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fallocate() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_fchmod

(PECL eio >= 0.0.1dev)

eio_fchmod — Change file permissions

### Açıklama

function eio_fchmod(
mixed `$fd`,
int `$mode`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_fchmod() changes permissions for the file specified by `fd` file descriptor.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().
`mode`
  The new permissions. E.g. 0644.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fchmod() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_fchown() - Change file ownership

# eio_fchown

(PECL eio >= 0.0.1dev)

eio_fchown — Change file ownership

### Açıklama

function eio_fchown(
mixed `$fd`,
int `$uid`,
int `$gid` = -1,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_fchown() changes ownership of the file specified by `fd` file descriptor.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor.
`uid`
  User ID. Is ignored when equal to -1.
`gid`
  Group ID. Is ignored when equal to -1.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fchown() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_fchmod() - Change file permissions

# eio_fdatasync

(PECL eio >= 0.0.1dev)

eio_fdatasync — Synchronize a file's in-core state with storage device

### Açıklama

function eio_fdatasync(
mixed `$fd`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_fdatasync() synchronizes a file's in-core state with storage device.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fdatasync() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_fstat

(PECL eio >= 0.0.1dev)

eio_fstat — Get file status

### Açıklama

function eio_fstat(
mixed `$fd`,
int `$pri`,
callable `$callback`,
mixed `$data` = ?
): resource

eio_fstat() returns file status information in `result` argument of `callback`

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fstat() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_fstat() example

    <?php
    // Create temporary file
    $tmp_filename = dirname(__FILE__) ."/eio-file.tmp";
    touch($tmp_filename);

    /* Is called when eio_fstat() done */
    function my_res_cb($data, $result) {
     // Should output array with stat info
     var_dump($result);

     if ($data['fd']) {
      // Close temporary file
      eio_close($data['fd']);
      eio_event_loop();
     }
     // Remove temporary file
     @unlink($data['file']);
    }

    /* Is called when eio_open() done */
    function my_open_cb($data, $result) {
     // Prepare data for callback
     $d = array(
      'fd'  => $result,
      'file'=> $data
     );
     // Request stat info
     eio_fstat($result, EIO_PRI_DEFAULT, "my_res_cb", $d);
     // Process request(s)
     eio_event_loop();
    }

    // Open temporary file
    eio_open($tmp_filename, EIO_O_RDONLY, NULL, EIO_PRI_DEFAULT,
      "my_open_cb", $tmp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(12) {
     ["st_dev"]=>
      int(2050)
      ["st_ino"]=>
      int(2489159)
      ["st_mode"]=>
      int(33188)
      ["st_nlink"]=>
      int(1)
      ["st_uid"]=>
      int(1000)
      ["st_gid"]=>
      int(100)
      ["st_rdev"]=>
      int(0)
      ["st_blksize"]=>
      int(4096)
      ["st_blocks"]=>
      int(0)
      ["st_atime"]=>
      int(1318239506)
      ["st_mtime"]=>
      int(1318239506)
      ["st_ctime"]=>
      int(1318239506)
    }

### Ayrıca Bakınız

- eio_lstat() - Get file status
- eio_stat() - Get file status

# eio_fstatvfs

(PECL eio >= 0.0.1dev)

eio_fstatvfs — Get file system statistics

### Açıklama

function eio_fstatvfs(
mixed `$fd`,
int `$pri`,
callable `$callback`,
mixed `$data` = ?
): resource

eio_fstatvfs() returns file system statistics in `result` of `callback`.

### Bağımsız Değişkenler

`fd`
  A file descriptor of a file within the mounted file system.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fstatvfs() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_statvfs() - Get file system statistics

# eio_fsync

(PECL eio >= 0.0.1dev)

eio_fsync — Synchronize a file's in-core state with storage device

### Açıklama

function eio_fsync(
mixed `$fd`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

Synchronize a file's in-core state with storage device

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_fsync() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_sync() - Commit buffer cache to disk

# eio_ftruncate

(PECL eio >= 0.0.1dev)

eio_ftruncate — Truncate a file

### Açıklama

function eio_ftruncate(
mixed `$fd`,
int `$offset` = 0,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_ftruncate() causes a regular file referenced by `fd` file descriptor to be truncated to precisely `length` bytes.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor.
`offset`
  Offset from beginning of the file
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_ftruncate() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_truncate() - Truncate a file

# eio_futime

(PECL eio >= 0.0.1dev)

eio_futime — Change file last access and modification times

### Açıklama

function eio_futime(
mixed `$fd`,
float `$atime`,
float `$mtime`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_futime() changes file last access and modification times.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open()
`atime`
  Access time
`mtime`
  Modification time
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_futime() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_utime() - Change file last access and modification times

# eio_get_event_stream

(PECL eio >= 0.3.1b)

eio_get_event_stream — Get stream representing a variable used in internal communications with libeio

### Açıklama

function eio_get_event_stream(): mixed

eio_get_event_stream() acquires stream representing a variable used in internal communications with libeio. Could be used to bind with some event loop provided by other PECL extension, for example libevent.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_get_event_stream() returns stream on success; otherwise, `null`

### Örnekler

Örnek 1 Using eio with libevent

    <?php
    function my_eio_poll($fd, $events, $arg) {
        /* Some libevent regulation might go here .. */
        if (eio_nreqs()) {
            eio_poll();
        }
        /* .. and here */
    }

    function my_res_cb($d, $r) {
        var_dump($r); var_dump($d);
    }

    $base = event_base_new();
    $event = event_new();

    $fd = eio_get_event_stream();
    var_dump($fd);

    eio_nop(EIO_PRI_DEFAULT, "my_res_cb", "nop data");
    eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_res_cb", "mkdir data");
    /* some other eio_* calls here ... */

    // set event flags
    event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

    // set event base
    event_base_set($event, $base);

    // enable event
    event_add($event);

    // start event loop
    event_base_loop($base);

    /* The same will be available via buffered libevent interface */
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    int(3)
    int(0)
    string(8) "nop data"
    int(0)
    string(10) "mkdir data"

# eio_get_last_error

(PECL eio >= 1.0.0)

eio_get_last_error — Returns string describing the last error associated with a request resource

### Açıklama

function eio_get_last_error(resource `$req`): string

eio_get_last_error() returns string describing the last error associated with `req`.

### Bağımsız Değişkenler

`req`
  The request resource.

### Dönen Değerler

eio_get_last_error() returns string describing the last error associated with the request resource specified by `req`.

Uyarı

Bu işlev DENEYSELDİR. Bu işlevin davranışı, ismi ve belgeleri PHP'nin sonraki sürümlerinde hiçbir duyuru yapılmaksızın değiştirilebilir. Bu risk göze alınamayacaksa bu işlev kullanılmamalıdır.

# eio_grp

(PECL eio >= 0.0.1dev)

eio_grp — Creates a request group

### Açıklama

function eio_grp(callable `$callback`, string `$data` = NULL): resource

eio_grp() creates a request group.

### Bağımsız Değişkenler

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_grp() returns request group resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_grp() example

    <?php
    $temp_filename = dirname(__FILE__) ."/eio-file.tmp";
    $fp = fopen($temp_filename, "w");
    fwrite($fp, "some data");
    fclose($fp);
    $my_file_fd = NULL;

    /* Is called when the group requests are done */
    function my_grp_done($data, $result) {
     // Remove the file, if it still exists
     @unlink($data);
    }

    /* Is called when the temporary file is opened */
    function my_grp_file_opened_callback($data, $result) {
     global $my_file_fd, $grp;

     $my_file_fd = $result;

     $req = eio_read($my_file_fd, 4, 0,
       EIO_PRI_DEFAULT, "my_grp_file_read_callback");
     eio_grp_add($grp, $req);
    }

    /* Is called when the file is read */
    function my_grp_file_read_callback($data, $result) {
     global $my_file_fd, $grp;

     var_dump($result);

     // Create request to close the file
     $req = eio_close($my_file_fd);

     // Add request to the group
     eio_grp_add($grp, $req);
    }

    // Create request group
    $grp = eio_grp("my_grp_done", $temp_filename);

    // Create request
    $req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
      EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);

    // Add request to the group
    eio_grp_add($grp, $req);

    // Process requests
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(4) "some"

### Ayrıca Bakınız

- eio_grp_cancel() - Cancels a request group
- eio_grp_add() - Adds a request to the request group

# eio_grp_add

(PECL eio >= 0.0.1dev)

eio_grp_add — Adds a request to the request group

### Açıklama

function eio_grp_add(resource `$grp`, resource `$req`): void

eio_grp_add() adds a request to the request group.

### Bağımsız Değişkenler

`grp`
  The request group resource returned by eio_grp()
`req`
  The request resource

### Dönen Değerler

Hiçbir değer dönmez.

### Örnekler

Örnek 1 Grouping requests

    <?php
    /*
     * Create a group request to open, read and close a file
     */

    // Create temporary file and write some bytes to it
    $temp_filename = dirname(__FILE__) ."/eio-file.tmp";
    $fp = fopen($temp_filename, "w");
    fwrite($fp, "some data");
    fclose($fp);

    /* Is called when the group requests are done */
    function my_grp_done($data, $result) {
     var_dump($result == 0);
     @unlink($data);
    }

    /* Is called when eio_open() done */
    function my_grp_file_opened_callback($data, $result) {
     global $grp;

     // $result should contain the file descriptor
     var_dump($result > 0);

     // Create eio_read() request and add it to the group
     // Pass file descriptor to the callback
     $req = eio_read($result, 4, 0,
       EIO_PRI_DEFAULT, "my_grp_file_read_callback", $result);
     eio_grp_add($grp, $req);
    }

    /* Is called when eio_read() done */
    function my_grp_file_read_callback($data, $result) {
     global $grp;

     // Read bytes
     var_dump($result);

     // Create eio_close() request and add it to the group
     // $data should contain the file descriptor
     $req = eio_close($data);
     eio_grp_add($grp, $req);
    }

    // Create request group
    $grp = eio_grp("my_grp_done", $temp_filename);
    var_dump($grp);

    // Create eio_open() request and add it to the group
    $req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
      EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);
    eio_grp_add($grp, $req);

    // Process requests
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    resource(6) of type (EIO Group Descriptor)
    bool(true)
    string(4) "some"
    bool(true)

### Ayrıca Bakınız

- eio_grp() - Creates a request group
- eio_grp_cancel() - Cancels a request group
- eio_grp_limit() - Set group limit

# eio_grp_cancel

(PECL eio >= 0.0.1dev)

eio_grp_cancel — Cancels a request group

### Açıklama

function eio_grp_cancel(resource `$grp`): void

eio_grp_cancel() cancels a group request specified by `grp` request group resource.

### Bağımsız Değişkenler

`grp`
  The request group resource returned by eio_grp().

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- eio_grp() - Creates a request group
- eio_grp_add() - Adds a request to the request group

# eio_grp_limit

(PECL eio >= 0.0.1dev)

eio_grp_limit — Set group limit

### Açıklama

function eio_grp_limit(resource `$grp`, int `$limit`): void

Limit number of requests in the request group.

### Bağımsız Değişkenler

`grp`
  The request group resource.
`limit`
  Number of requests in the group.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- eio_grp_add() - Adds a request to the request group

# eio_init

(PECL eio = 1.0.0)

eio_init — (Re-)initialize Eio

### Açıklama

function eio_init(): void

eio_init() (re-)initializes Eio. It allocates memory for internal structures of libeio and Eio itself. You may call eio_init() before using Eio functions. Otherwise it will be called internally first time you invoke an Eio function in a process.

> Bilginize: This function was removed in version 3.0.0RC1 of the eio extension for PHP version 8 and higher.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# eio_link

(PECL eio >= 0.0.1dev)

eio_link — Create a hardlink for file

### Açıklama

function eio_link(
string `$path`,
string `$new_path`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_link() creates a hardlink `new_path` for a file specified by `path`.

### Bağımsız Değişkenler

`path`
  Source file path.
`new_path`
  Target file path.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

### Örnekler

Örnek 1 eio_link() example

    <?php
    $filename = dirname(__FILE__)."/symlink.dat";
    touch($filename);
    $link = dirname(__FILE__)."/symlink.link";
    $hardlink = dirname(__FILE__)."/hardlink.link";

    function my_hardlink_cb($data, $result) {
        global $link, $filename;
        var_dump(file_exists($data) && !is_link($data));
        @unlink($data);

        eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
    }

    function my_symlink_cb($data, $result) {
        global $link, $filename;
        var_dump(file_exists($data) && is_link($data));

        if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
            @unlink($link);
            @unlink($filename);
        }
    }

    function my_readlink_cb($data, $result) {
        global $filename, $link;
        var_dump($result);

        @unlink($link);
        @unlink($filename);
    }

    eio_link($filename, $hardlink, EIO_PRI_DEFAULT, "my_hardlink_cb", $hardlink);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    bool(true)
    string(%d) "%ssymlink.dat"

### Ayrıca Bakınız

- eio_symlink() - Create a symbolic link

# eio_lstat

(PECL eio >= 0.0.1dev)

eio_lstat — Get file status

### Açıklama

function eio_lstat(
string `$path`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

eio_lstat() returns file status information in `result` argument of `callback`

### Bağımsız Değişkenler

`path`
  The file path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_lstat() returns request resource on success or `false` on error.

### Örnekler

Örnek 1 eio_lstat() example

    <?php
    $tmp_filename = dirname(__FILE__). "/eio-file.tmp";
    touch($tmp_filename);

    function my_res_cb($data, $result) {
        var_dump($data);
        var_dump($result);
    }

    function my_open_cb($data, $result) {
        eio_close($result);
        eio_event_loop();

        @unlink($data);
    }

    eio_lstat($tmp_filename, EIO_PRI_DEFAULT, "my_res_cb", "eio_lstat");
    eio_open($tmp_filename, EIO_O_RDONLY, NULL,
     EIO_PRI_DEFAULT, "my_open_cb", $tmp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(9) "eio_lstat"
    array(12) {
     ["st_dev"]=>
      int(2050)
      ["st_ino"]=>
      int(2099197)
      ["st_mode"]=>
      int(33188)
      ["st_nlink"]=>
      int(1)
      ["st_uid"]=>
      int(1000)
      ["st_gid"]=>
      int(100)
      ["st_rdev"]=>
      int(0)
      ["st_blksize"]=>
      int(4096)
      ["st_blocks"]=>
      int(0)
      ["st_atime"]=>
      int(1318235777)
      ["st_mtime"]=>
      int(1318235777)
      ["st_ctime"]=>
      int(1318235777)
    }

### Ayrıca Bakınız

- eio_stat() - Get file status
- eio_fstat() - Get file status

# eio_mkdir

(PECL eio >= 0.0.1dev)

eio_mkdir — Create directory

### Açıklama

function eio_mkdir(
string `$path`,
int `$mode`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_mkdir() creates directory with specified access `mode`.

### Bağımsız Değişkenler

`path`
  Path for the new directory.
`mode`
  Access mode, e.g. 0755
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_mkdir() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_mkdir() example

    <?php
    $temp_dirname = "eio-temp-dir";

    /* Is called when eio_mkdir() finishes */
    function my_mkdir_callback($data, $result) {
     if ($result == 0 && is_dir($temp_dirname)
       && !is_readable($temp_dirname)
       && is_writable($temp_dirname)) {
      echo "eio_mkdir_ok";
     }

     // Remove directory
        if (file_exists($data))
            rmdir($temp_dirname);
    }

    // Create directory with access mode 0300
    eio_mkdir($temp_dirname, 0300, EIO_PRI_DEFAULT, "my_mkdir_callback", $temp_dirname);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_mkdir_ok

### Ayrıca Bakınız

- eio_rmdir() - Remove a directory

# eio_mknod

(PECL eio >= 0.0.1dev)

eio_mknod — Create a special or ordinary file

### Açıklama

function eio_mknod(
string `$path`,
int `$mode`,
int `$dev`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_mknod() creates ordinary or special(often) file.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

### Bağımsız Değişkenler

`path`
  Path for the new node(file).
`mode`
  Specifies both the permissions to use and the type of node to be created. It should be a combination (using bitwise OR) of one of the file types listed below and the permissions for the new node(e.g. 0640). Possible file types are: `EIO_S_IFREG`(regular file), `EIO_S_IFCHR`(character file), `EIO_S_IFBLK`(block special file), `EIO_S_IFIFO`(FIFO - named pipe) and `EIO_S_IFSOCK`(UNIX domain socket). To specify permissions EIO_S_I* constants could be used.
`dev`
  If the file type is `EIO_S_IFCHR` or `EIO_S_IFBLK` then dev specifies the major and minor numbers of the newly created device special file. Otherwise `dev` ignored. See mknod(2) man page for details.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_mknod() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_mknod() example

    <?php
    // FIFO name
    $temp_filename = "/tmp/eio-temp-fifo";

    /* Is called when eio_mknod() finishes */
    function my_mknod_callback($data, $result) {
        $s = stat($data);
        var_dump($s);

        if ($result == 0) {
            echo "eio_mknod_ok";
        }

        @unlink($data);
    }

    eio_mknod($temp_filename, EIO_S_IFIFO, 0,
        EIO_PRI_DEFAULT, "my_mknod_callback", $temp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    array(26) {
      [0]=>
      int(17)
      [1]=>
      int(2337608)
      [2]=>
      int(4096)
      [3]=>
      int(1)
      [4]=>
      int(1000)
      [5]=>
      int(100)
      [6]=>
      int(0)
      [7]=>
      int(0)
      [8]=>
      int(1318241261)
      [9]=>
      int(1318241261)
      [10]=>
      int(1318241261)
      [11]=>
      int(4096)
      [12]=>
      int(0)
      ["dev"]=>
      int(17)
      ["ino"]=>
      int(2337608)
      ["mode"]=>
      int(4096)
      ["nlink"]=>
      int(1)
      ["uid"]=>
      int(1000)
      ["gid"]=>
      int(100)
      ["rdev"]=>
      int(0)
      ["size"]=>
      int(0)
      ["atime"]=>
      int(1318241261)
      ["mtime"]=>
      int(1318241261)
      ["ctime"]=>
      int(1318241261)
      ["blksize"]=>
      int(4096)
      ["blocks"]=>
      int(0)
    }
    eio_mknod_ok

### Ayrıca Bakınız

- eio_open() - Opens a file

# eio_nop

(PECL eio >= 0.0.1dev)

eio_nop — Does nothing, except go through the whole request cycle

### Açıklama

function eio_nop(int `$pri` = EIO_PRI_DEFAULT, callable `$callback` = NULL, mixed `$data` = NULL): resource

eio_nop() does nothing, except go through the whole request cycle. Could be useful in debugging.

### Bağımsız Değişkenler

`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_nop() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_busy() - Artificially increase load. Could be useful in tests, benchmarking

# eio_npending

(PECL eio >= 0.0.1dev)

eio_npending — Returns number of finished, but unhandled requests

### Açıklama

function eio_npending(): int

eio_npending() returns number of finished, but unhandled requests

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_npending() returns number of finished, but unhandled requests.

### Ayrıca Bakınız

- eio_nreqs() - Returns number of requests to be processed
- eio_nready() - Returns number of not-yet handled requests
- eio_nthreads() - Returns number of threads currently in use

# eio_nready

(PECL eio >= 0.0.1dev)

eio_nready — Returns number of not-yet handled requests

### Açıklama

function eio_nready(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_nready() returns number of not-yet handled requests

### Ayrıca Bakınız

- eio_nreqs() - Returns number of requests to be processed
- eio_nthreads() - Returns number of threads currently in use

# eio_nreqs

(PECL eio >= 0.0.1dev)

eio_nreqs — Returns number of requests to be processed

### Açıklama

function eio_nreqs(): int

eio_nreqs() could be called in a custom loop calling eio_poll().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_nreqs() returns number of requests to be processed.

### Örnekler

Örnek 1 eio_nreqs() example

    <?php
    function res_cb($data, $result) {
        var_dump($data);
        var_dump($result);
    }

    eio_nop(EIO_PRI_DEFAULT, "res_cb", "1");
    eio_nop(EIO_PRI_DEFAULT, "res_cb", "2");
    eio_nop(EIO_PRI_DEFAULT, "res_cb", "3");

    while (eio_nreqs()) {
        eio_poll();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(1) "1"
    int(0)
    string(1) "3"
    int(0)
    string(1) "2"
    int(0)

### Ayrıca Bakınız

- eio_poll() - Can be called whenever there are pending requests that need finishing
- eio_nready() - Returns number of not-yet handled requests

# eio_nthreads

(PECL eio >= 0.0.1dev)

eio_nthreads — Returns number of threads currently in use

### Açıklama

function eio_nthreads(): int

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_nthreads() returns number of threads currently in use.

### Ayrıca Bakınız

- eio_npending() - Returns number of finished, but unhandled requests
- eio_nready() - Returns number of not-yet handled requests
- eio_nreqs() - Returns number of requests to be processed
- eio_set_max_idle() - Set maximum number of idle threads
- eio_set_max_parallel() - Set maximum parallel threads
- eio_set_min_parallel() - Set minimum parallel thread number

# eio_open

(PECL eio >= 0.0.1dev)

eio_open — Opens a file

### Açıklama

function eio_open(
string `$path`,
int `$flags`,
int `$mode`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

eio_open() opens file specified by `path` in access mode `mode` with the given `flags`.

### Bağımsız Değişkenler

`path`

  Path of the file to be opened.

  Uyarı

  In some SAPIs(e.g. PHP-FPM) it could fail, if you don't specify full path.

`flags`
  One of EIO_O_* constants, or their combinations. EIO_O_* constants have the same meaning, as their corresponding O_* counterparts defined in `fnctl.h` C header file. Default is `EIO_O_RDWR`.
`mode`
  One of EIO_S_I* constants, or their combination (via bitwise OR operator). The constants have the same meaning as their S_I* counterparts defined in » sys/stat.h C header file. Required, if a file is created. Otherwise ignored.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_open() returns file descriptor in `result` argument of `callback` on success; otherwise, `result` is equal to `-1`.

### Örnekler

Örnek 1 eio_open() example

    <?php
    $temp_filename = "eio-temp-file.tmp";

    /* Is called when eio_close() finishes */
    function my_close_cb($data, $result) {
     // Zero indicates success
        var_dump($result == 0);
     @unlink($data);
    }

    /* Is called when eio_open() finishes */
    function my_file_opened_callback($data, $result) {
     // $result should contain the file descriptor
        var_dump($result > 0);

        if ($result > 0) {
      // Close the file
            eio_close($result, EIO_PRI_DEFAULT, "my_close_cb", $data);
            eio_event_loop();
        }
    }

    // Create new file for reading and writing
    // Deny group and others to do anything with that file
    eio_open($temp_filename, EIO_O_CREAT | EIO_O_RDWR, EIO_S_IRUSR | EIO_S_IWUSR,
      EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    bool(true)

### Ayrıca Bakınız

- eio_mknod() - Create a special or ordinary file

# eio_poll

(PECL eio >= 0.0.1dev)

eio_poll — Can be called whenever there are pending requests that need finishing

### Açıklama

function eio_poll(): int

eio_poll() can be used to implement special event loop. For this eio_nreqs() could be used to test if there are unprocessed requests.

> Bilginize: Applicable only when implementing userspace event loop.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

If any request invocation returns a non-zero value, returns that value. Otherwise, it returns `0`.

### Örnekler

Örnek 1 eio_poll() example

    <?php
    function res_cb($data, $result) {
        var_dump($data);
        var_dump($result);
    }

    eio_nop(EIO_PRI_DEFAULT, "res_cb", "1");
    eio_nop(EIO_PRI_DEFAULT, "res_cb", "2");
    eio_nop(EIO_PRI_DEFAULT, "res_cb", "3");

    while (eio_nreqs()) {
        // Some specific IPC or so
        eio_poll();
    }
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(1) "1"
    int(0)
    string(1) "3"
    int(0)
    string(1) "2"
    int(0)

### Ayrıca Bakınız

- eio_nreqs() - Returns number of requests to be processed

# eio_read

(PECL eio >= 0.0.1dev)

eio_read — Read from a file descriptor at given offset

### Açıklama

function eio_read(
mixed `$fd`,
int `$length`,
int `$offset`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

eio_read() reads up to `length` bytes from `fd` file descriptor at `offset`. The read bytes are stored in `result` argument of `callback`.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor
`length`
  Maximum number of bytes to read.
`offset`
  Offset within the file.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_read() stores read bytes in `result` argument of `callback` function.

### Örnekler

Örnek 1 eio_read() example

    <?php
    // Open a temporary file and write some bytes there
    $temp_filename = "eio-temp-file.tmp";
    $fp = fopen($temp_filename, "w");
    fwrite($fp, "1234567890");
    fclose($fp);

    /* Is called when eio_read() is done */
    function my_read_cb($data, $result) {
        global $temp_filename;

     // Output read bytes
        var_dump($result);

     // Close file
        eio_close($data);
        eio_event_loop();

     // Remove temporary file
        @unlink($temp_filename);
    }

    /* Is called when eio_open() is done */
    function my_file_opened_callback($data, $result) {
     // $result should contain the file descriptor
        if ($result > 0) {
      // Read 5 bytes starting from third
            eio_read($result, 5, 2, EIO_PRI_DEFAULT, "my_read_cb", $result);
            eio_event_loop();
        } else {
      // eio_open() failed
            unlink($data);
        }
    }

    // Open the file for reading and writing
    eio_open($temp_filename, EIO_O_RDWR, NULL,
        EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(5) "34567"

### Ayrıca Bakınız

- eio_open() - Opens a file
- eio_write() - Write to file
- eio_close() - Close file
- eio_event_loop() - Polls libeio until all requests proceeded

# eio_readahead

(PECL eio >= 0.0.1dev)

eio_readahead — Perform file readahead into page cache

### Açıklama

function eio_readahead(
mixed `$fd`,
int `$offset`,
int `$length`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_readahead() populates the page cache with data from a file so that subsequent reads from that file will not block on disk I/O. See `READAHEAD(2)` man page for details.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor
`offset`
  Starting point from which data is to be read.
`length`
  Number of bytes to be read.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_readahead() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdir — Reads through a whole directory

### Açıklama

function eio_readdir(
string `$path`,
int `$flags`,
int `$pri`,
callable `$callback`,
string `$data` = NULL
): resource

Reads through a whole directory(via the `opendir`, `readdir` and `closedir` system calls) and returns either the names or an array in `result` argument of `callback` function, depending on the `flags` argument.

### Bağımsız Değişkenler

`path`
  Directory path.
`flags`
  Combination of EIO_READDIR_* constants.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_readdir() returns request resource on success, başarısızlık durumunda `false` döner. Sets `result` argument of `callback` function according to `flags`:

`EIO_READDIR_DENTS` (int)
  eio_readdir() flag. If specified, the result argument of the callback becomes an array with the following keys: `'names'` - array of directory names `'dents'` - array of `struct eio_dirent`-like arrays having the following keys each: `'name'` - the directory name; `'type'` - one of EIO_DT_* constants; `'inode'` - the inode number, if available, otherwise unspecified;
`EIO_READDIR_DIRS_FIRST` (int)
  When this flag is specified, the names will be returned in an order where likely directories come first, in optimal stat order.
`EIO_READDIR_STAT_ORDER` (int)
  When this flag is specified, then the names will be returned in an order suitable for `stat`'ing each one. When planning to stat() all files in the given directory, the returned order will likely be fastest.
`EIO_READDIR_FOUND_UNKNOWN` (int)

Node types:

`EIO_DT_UNKNOWN` (int)
  Unknown node type(very common). Further stat() needed.
`EIO_DT_FIFO` (int)
  FIFO node type
`EIO_DT_CHR` (int)
  Node type
`EIO_DT_MPC` (int)
  Multiplexed char device (v7+coherent) node type
`EIO_DT_DIR` (int)
  Directory node type
`EIO_DT_NAM` (int)
  Xenix special named file node type
`EIO_DT_BLK` (int)
  Node type
`EIO_DT_MPB` (int)
  Multiplexed block device (v7+coherent)
`EIO_DT_REG` (int)
  Node type
`EIO_DT_NWK` (int)
`EIO_DT_CMP` (int)
  HP-UX network special node type
`EIO_DT_LNK` (int)
  Link node type
`EIO_DT_SOCK` (int)
  Socket node type
`EIO_DT_DOOR` (int)
  Solaris door node type
`EIO_DT_WHT` (int)
  Node type
`EIO_DT_MAX` (int)
  Highest node type value

### Örnekler

Örnek 1 eio_readdir() example

    <?php
    /* Is called when eio_readdir() finishes */
    function my_readdir_callback($data, $result) {
        echo __FUNCTION__, " called\n";
        echo "data: "; var_dump($data);
        echo "result: "; var_dump($result);
        echo "\n";
    }

    eio_readdir("/var/spool/news", EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST,
      EIO_PRI_DEFAULT, "my_readdir_callback");
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    my_readdir_callback called
    data: NULL
    result: array(2) {
     ["names"]=>
      array(7) {
       [0]=>
        string(7) "archive"
        [1]=>
        string(8) "articles"
        [2]=>
        string(8) "incoming"
        [3]=>
        string(7) "innfeed"
        [4]=>
        string(8) "outgoing"
        [5]=>
        string(8) "overview"
        [6]=>
        string(3) "tmp"
      }
     ["dents"]=>
      array(7) {
       [0]=>
        array(3)
        {
         ["name"]=>
          string(7)
          "archive"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393265)
        }
       [1]=>
        array(3)
        {
         ["name"]=>
          string(8)
          "articles"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393266)
        }
       [2]=>
        array(3)
        {
         ["name"]=>
          string(8)
          "incoming"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393267)
        }
       [3]=>
        array(3)
        {
         ["name"]=>
          string(7)
          "innfeed"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393269)
        }
       [4]=>
        array(3)
        {
         ["name"]=>
          string(8)
          "outgoing"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393270)
        }
       [5]=>
        array(3)
        {
         ["name"]=>
          string(8)
          "overview"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393271)
        }
       [6]=>
        array(3)
        {
         ["name"]=>
          string(3)
          "tmp"
          ["type"]=>
          int(4)
          ["inode"]=>
          int(393272)
        }
      }
    }

# eio_readlink

(PECL eio >= 0.0.1dev)

eio_readlink — Read value of a symbolic link

### Açıklama

function eio_readlink(
string `$path`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

### Bağımsız Değişkenler

`path`
  Source symbolic link path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_readlink() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_readlink() example

    <?php
    $filename = dirname(__FILE__)."/symlink.dat";
    touch($filename);
    $link = dirname(__FILE__)."/symlink.link";
    $hardlink = dirname(__FILE__)."/hardlink.link";

    function my_hardlink_cb($data, $result) {
        global $link, $filename;
        var_dump(file_exists($data) && !is_link($data));
        @unlink($data);

        eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
    }

    function my_symlink_cb($data, $result) {
        global $link, $filename;
        var_dump(file_exists($data) && is_link($data));

        if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
            @unlink($link);
            @unlink($filename);
        }
    }

    function my_readlink_cb($data, $result) {
        global $filename, $link;
        var_dump($result);

        @unlink($link);
        @unlink($filename);
    }

    eio_link($filename, $hardlink, EIO_PRI_DEFAULT, "my_hardlink_cb", $hardlink);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    bool(true)
    string(16) "/tmp/symlink.dat"

### Ayrıca Bakınız

- eio_symlink() - Create a symbolic link

# eio_realpath

(PECL eio >= 0.0.1dev)

eio_realpath — Get the canonicalized absolute pathname

### Açıklama

function eio_realpath(
string `$path`,
int `$pri`,
callable `$callback`,
string `$data` = NULL
): resource

eio_realpath() returns the canonicalized absolute pathname in `result` argument of `callback` function.

### Bağımsız Değişkenler

`path`
  Short pathname
`pri`
`callback`
`data`

### Dönen Değerler

### Örnekler

Örnek 1 eio_realpath() example

    <?php
    var_dump(getcwd());

    function my_realpath_callback($data, $result) {
        var_dump($result);
    }

    eio_realpath("../", EIO_PRI_DEFAULT, "my_realpath_callback");
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(12) "/home/ruslan"
    string(5) "/home"

# eio_rename

(PECL eio >= 0.0.1dev)

eio_rename — Change the name or location of a file

### Açıklama

function eio_rename(
string `$path`,
string `$new_path`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_rename() renames or moves a file to new location.

### Bağımsız Değişkenler

`path`
  Source path
`new_path`
  Target path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_rename() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_rename() example

    <?php
    $filename = dirname(__FILE__)."/eio-temp-file.dat";
    touch($filename);
    $new_filename = dirname(__FILE__)."/eio-temp-file-new.dat";

    function my_rename_cb($data, $result) {
        global $filename, $new_filename;

        if ($result == 0 && !file_exists($filename) && file_exists($new_filename)) {
            @unlink($new_filename);
            echo "eio_rename_ok";
        } else {
            @unlink($filename);
        }
    }

    eio_rename($filename, $new_filename, EIO_PRI_DEFAULT, "my_rename_cb", $filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_rename_ok

# eio_rmdir

(PECL eio >= 0.0.1dev)

eio_rmdir — Remove a directory

### Açıklama

function eio_rmdir(
string `$path`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_rmdir() removes a directory.

### Bağımsız Değişkenler

`path`
  Directory path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_rmdir() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_rmdir() example

    <?php
    $temp_dirname = "eio-temp-dir";
    mkdir($temp_dirname);

    function my_rmdir_callback($data, $result) {
        if ($result == 0 && !file_exists($data)) {
            echo "eio_rmdir_ok";
        } else if (file_exists($data)) {
            rmdir($data);
        }
    }

    eio_rmdir($temp_dirname, EIO_PRI_DEFAULT, "my_rmdir_callback", $temp_dirname);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    eio_rmdir_ok

### Ayrıca Bakınız

- eio_mkdir() - Create directory

# eio_seek

(PECL eio >= 0.5.0b)

eio_seek — Seek to a position

### Açıklama

function eio_seek(
mixed `$fd`,
int `$offset`,
int `$whence`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_seek() repositions the offset of the open file associated with stream, Socket instance, or file descriptor specified by `fd` to the argument `offset` according to the directive `whence`.

### Bağımsız Değişkenler

`fd`
  Stream, Socket instance, or numeric file descriptor.
`offset`
  Starting point from which data is to be read.
`whence`

  `whence` values are:

  - `EIO_SEEK_SET` - Set position equal to `offset` bytes.
  - `EIO_SEEK_CUR` - Set position to current location plus `offset`.
  - `EIO_SEEK_END` - Set position to end-of-file plus `offset`.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_seek() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_sendfile

(PECL eio >= 0.0.1dev)

eio_sendfile — Transfer data between file descriptors

### Açıklama

function eio_sendfile(
mixed `$out_fd`,
mixed `$in_fd`,
int `$offset`,
int `$length`,
int `$pri` = ?,
callable `$callback` = ?,
string `$data` = ?
): resource

eio_sendfile() copies data between one file descriptor and another. See `SENDFILE(2)` man page for details.

### Bağımsız Değişkenler

`out_fd`
  Output stream, Socket resource, or file descriptor. Should be opened for writing.
`in_fd`
  Input stream, Socket resource, or file descriptor. Should be opened for reading.
`offset`
  Offset within the source file.
`length`
  Number of bytes to copy.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_sendfile() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_set_max_idle

(PECL eio >= 0.0.1dev)

eio_set_max_idle — Set maximum number of idle threads

### Açıklama

function eio_set_max_idle(int `$nthreads`): void

### Bağımsız Değişkenler

`nthreads`
  Number of idle threads.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- eio_nthreads() - Returns number of threads currently in use
- eio_set_min_parallel() - Set minimum parallel thread number
- eio_set_max_parallel() - Set maximum parallel threads

# eio_set_max_parallel

(PECL eio >= 0.0.1dev)

eio_set_max_parallel — Set maximum parallel threads

### Açıklama

function eio_set_max_parallel(int `$nthreads`): void

### Bağımsız Değişkenler

`nthreads`
  Number of parallel threads

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- eio_nthreads() - Returns number of threads currently in use
- eio_set_max_idle() - Set maximum number of idle threads
- eio_set_min_parallel() - Set minimum parallel thread number

# eio_set_max_poll_reqs

(PECL eio >= 0.0.1dev)

eio_set_max_poll_reqs — Set maximum number of requests processed in a poll

### Açıklama

function eio_set_max_poll_reqs(int `$nreqs`): void

### Bağımsız Değişkenler

`nreqs`
  Number of requests

### Dönen Değerler

Hiçbir değer dönmez.

# eio_set_max_poll_time

(PECL eio >= 0.0.1dev)

eio_set_max_poll_time — Set maximum poll time

### Açıklama

function eio_set_max_poll_time(float `$nseconds`): void

Polling stops, if poll took longer than `nseconds` seconds.

### Bağımsız Değişkenler

`nseconds`
  Number of seconds

### Dönen Değerler

Hiçbir değer dönmez.

# eio_set_min_parallel

(PECL eio >= 0.0.1dev)

eio_set_min_parallel — Set minimum parallel thread number

### Açıklama

function eio_set_min_parallel(string `$nthreads`): void

### Bağımsız Değişkenler

`nthreads`
  Number of parallel threads.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- eio_nthreads() - Returns number of threads currently in use
- eio_set_max_idle() - Set maximum number of idle threads
- eio_set_max_parallel() - Set maximum parallel threads

# eio_stat

(PECL eio >= 0.0.1dev)

eio_stat — Get file status

### Açıklama

function eio_stat(
string `$path`,
int `$pri`,
callable `$callback`,
mixed `$data` = NULL
): resource

eio_stat() returns file status information in `result` argument of `callback`

### Bağımsız Değişkenler

`path`
  The file path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_stat() returns request resource on success or `false` on error. On success assigns `result` argument of `callback` to an array.

### Örnekler

Örnek 1 eio_stat() example

    <?php
    $tmp_filename = "eio-file.tmp";
    touch($tmp_filename);

    function my_res_cb($data, $result) {
        var_dump($data);
        var_dump($result);
    }

    function my_open_cb($data, $result) {
        eio_close($result);
        eio_event_loop();

        @unlink($data);
    }

    eio_stat($tmp_filename, EIO_PRI_DEFAULT, "my_res_cb", "eio_stat");
    eio_open($tmp_filename, EIO_O_RDONLY, NULL,
     EIO_PRI_DEFAULT, "my_open_cb", $tmp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(8) "eio_stat"
    array(12) {
      ["st_dev"]=>
      int(2050)
      ["st_ino"]=>
      int(2489173)
      ["st_mode"]=>
      int(33188)
      ["st_nlink"]=>
      int(1)
      ["st_uid"]=>
      int(1000)
      ["st_gid"]=>
      int(100)
      ["st_rdev"]=>
      int(0)
      ["st_blksize"]=>
      int(4096)
      ["st_blocks"]=>
      int(0)
      ["st_atime"]=>
      int(1318250380)
      ["st_mtime"]=>
      int(1318250380)
      ["st_ctime"]=>
      int(1318250380)
    }

### Ayrıca Bakınız

- eio_lstat() - Get file status
- eio_fstat() - Get file status

# eio_statvfs

(PECL eio >= 0.0.1dev)

eio_statvfs — Get file system statistics

### Açıklama

function eio_statvfs(
string `$path`,
int `$pri`,
callable `$callback`,
mixed `$data` = ?
): resource

eio_statvfs() returns file system statistics information in `result` argument of `callback`

### Bağımsız Değişkenler

`path`
  Pathname of any file within the mounted file system
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_statvfs() returns request resource on success, başarısızlık durumunda `false` döner. On success assigns `result` argument of `callback` to an array.

### Örnekler

Örnek 1 eio_statvfs() example

    <?php
    $tmp_filename = '/tmp/eio-file.tmp';
    touch($tmp_filename);

    function my_statvfs_callback($data, $result) {
        var_dump($data);
        var_dump($result);

     @unlink($data);
    }

    eio_statvfs($tmp_filename, EIO_PRI_DEFAULT, "my_statvfs_callback", $tmp_filename);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    string(17) "/tmp/eio-file.tmp"
    array(11) {
      ["f_bsize"]=>
      int(4096)
      ["f_frsize"]=>
      int(4096)
      ["f_blocks"]=>
      int(262144)
      ["f_bfree"]=>
      int(262111)
      ["f_bavail"]=>
      int(262111)
      ["f_files"]=>
      int(1540815)
      ["f_ffree"]=>
      int(1540743)
      ["f_favail"]=>
      int(1540743)
      ["f_fsid"]=>
      int(0)
      ["f_flag"]=>
      int(4102)
      ["f_namemax"]=>
      int(255)
    }

# eio_symlink

(PECL eio >= 0.0.1dev)

eio_symlink — Create a symbolic link

### Açıklama

function eio_symlink(
string `$path`,
string `$new_path`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_symlink() creates a symbolic link `new_path` to `path`.

### Bağımsız Değişkenler

`path`
  Source path
`new_path`
  Target path
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_symlink() returns request resource on success, başarısızlık durumunda `false` döner.

### Örnekler

Örnek 1 eio_symlink() example

    <?php
    $filename = dirname(__FILE__)."/symlink.dat";
    touch($filename);
    $link = dirname(__FILE__)."/symlink.link";

    function my_symlink_cb($data, $result) {
        global $link, $filename;
        var_dump(file_exists($data) && is_link($data));

        if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
            @unlink($link);
            @unlink($filename);
        }
    }

    function my_readlink_cb($data, $result) {
        global $filename, $link;
        var_dump($result);

        @unlink($link);
        @unlink($filename);
    }

    eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
    eio_event_loop();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    bool(true)
    string(16) "/tmp/symlink.dat"

### Ayrıca Bakınız

- eio_link() - Create a hardlink for file

# eio_sync

(PECL eio >= 0.0.1dev)

eio_sync — Commit buffer cache to disk

### Açıklama

function eio_sync(int `$pri` = EIO_PRI_DEFAULT, callable `$callback` = NULL, mixed `$data` = NULL): resource

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

eio_sync() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_sync_file_range

(PECL eio >= 0.0.1dev)

eio_sync_file_range — Sync a file segment with disk

### Açıklama

function eio_sync_file_range(
mixed `$fd`,
int `$offset`,
int `$nbytes`,
int `$flags`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_sync_file_range() permits fine control when synchronizing the open file referred to by the file descriptor `fd` with disk.

### Bağımsız Değişkenler

`fd`
  File descriptor
`offset`
  The starting byte of the file range to be synchronized
`nbytes`
  Specifies the length of the range to be synchronized, in bytes. If `nbytes` is zero, then all bytes from `offset` through to the end of file are synchronized.
`flags`
  A bit-mask. Can include any of the following values: `EIO_SYNC_FILE_RANGE_WAIT_BEFORE`, `EIO_SYNC_FILE_RANGE_WRITE`, `EIO_SYNC_FILE_RANGE_WAIT_AFTER`. These flags have the same meaning as their SYNC_FILE_RANGE_* counterparts(see `SYNC_FILE_RANGE(2)` man page).
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_sync_file_range() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_syncfs

(PECL eio >= 0.0.1dev)

eio_syncfs — Calls Linux' syncfs syscall, if available

### Açıklama

function eio_syncfs(
mixed `$fd`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

### Bağımsız Değişkenler

`fd`
  File descriptor
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_syncfs() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_truncate

(PECL eio >= 0.0.1dev)

eio_truncate — Truncate a file

### Açıklama

function eio_truncate(
string `$path`,
int `$offset` = 0,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_truncate() causes the regular file named by `path` to be truncated to a size of precisely `length` bytes

### Bağımsız Değişkenler

`path`
  File path
`offset`
  Offset from beginning of the file.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_truncate() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_ftruncate() - Truncate a file

# eio_unlink

(PECL eio >= 0.0.1dev)

eio_unlink — Delete a name and possibly the file it refers to

### Açıklama

function eio_unlink(
string `$path`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_unlink() deletes a name from the file system.

### Bağımsız Değişkenler

`path`
  Path to file
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_unlink() returns request resource on success, başarısızlık durumunda `false` döner.

# eio_utime

(PECL eio >= 0.0.1dev)

eio_utime — Change file last access and modification times

### Açıklama

function eio_utime(
string `$path`,
float `$atime`,
float `$mtime`,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

### Bağımsız Değişkenler

`path`
  Path to the file.
`atime`
  Access time
`mtime`
  Modification time
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_utime() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_futime() - Change file last access and modification times

# eio_write

(PECL eio >= 0.0.1dev)

eio_write — Write to file

### Açıklama

function eio_write(
mixed `$fd`,
string `$str`,
int `$length` = 0,
int `$offset` = 0,
int `$pri` = EIO_PRI_DEFAULT,
callable `$callback` = NULL,
mixed `$data` = NULL
): resource

eio_write() writes up to `length` bytes from `str` at `offset` offset from the beginning of the file.

### Bağımsız Değişkenler

`fd`
  Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open()
`str`
  Source string
`length`
  Maximum number of bytes to write.
`offset`
  Offset from the beginning of file.
`pri`

  The request priority: `EIO_PRI_DEFAULT`, `EIO_PRI_MIN`, `EIO_PRI_MAX`, or `null`. If `null` passed, `pri` internally is set to `EIO_PRI_DEFAULT`.

`callback`

  `callback` function is called when the request is done. It should match the following prototype:

      void callback(mixed $data, int $result[, resource $req]);

  `data`

    is custom data passed to the request.

  `result`

    request-specific result value; basically, the value returned by corresponding system call.

  `req`

    is optional request resource which can be used with functions like eio_get_last_error().

`data`
  Arbitrary variable passed to `callback`.

### Dönen Değerler

eio_write() returns request resource on success, başarısızlık durumunda `false` döner.

### Ayrıca Bakınız

- eio_open() - Opens a file

## İçindekiler

- eio_busy — Artificially increase load. Could be useful in tests, benchmarking
- eio_cancel — Cancels a request
- eio_chmod — Change file/directory permissions
- eio_chown — Change file/directory ownership
- eio_close — Close file
- eio_custom — Execute custom request like any other eio_* call
- eio_dup2 — Duplicate a file descriptor
- eio_event_loop — Polls libeio until all requests proceeded
- eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file
- eio_fchmod — Change file permissions
- eio_fchown — Change file ownership
- eio_fdatasync — Synchronize a file's in-core state with storage device
- eio_fstat — Get file status
- eio_fstatvfs — Get file system statistics
- eio_fsync — Synchronize a file's in-core state with storage device
- eio_ftruncate — Truncate a file
- eio_futime — Change file last access and modification times
- eio_get_event_stream — Get stream representing a variable used in internal communications with libeio
- eio_get_last_error — Returns string describing the last error associated with a request resource
- eio_grp — Creates a request group
- eio_grp_add — Adds a request to the request group
- eio_grp_cancel — Cancels a request group
- eio_grp_limit — Set group limit
- eio_init — (Re-)initialize Eio
- eio_link — Create a hardlink for file
- eio_lstat — Get file status
- eio_mkdir — Create directory
- eio_mknod — Create a special or ordinary file
- eio_nop — Does nothing, except go through the whole request cycle
- eio_npending — Returns number of finished, but unhandled requests
- eio_nready — Returns number of not-yet handled requests
- eio_nreqs — Returns number of requests to be processed
- eio_nthreads — Returns number of threads currently in use
- eio_open — Opens a file
- eio_poll — Can be called whenever there are pending requests that need finishing
- eio_read — Read from a file descriptor at given offset
- eio_readahead — Perform file readahead into page cache
- eio_readdir — Reads through a whole directory
- eio_readlink — Read value of a symbolic link
- eio_realpath — Get the canonicalized absolute pathname
- eio_rename — Change the name or location of a file
- eio_rmdir — Remove a directory
- eio_seek — Seek to a position
- eio_sendfile — Transfer data between file descriptors
- eio_set_max_idle — Set maximum number of idle threads
- eio_set_max_parallel — Set maximum parallel threads
- eio_set_max_poll_reqs — Set maximum number of requests processed in a poll
- eio_set_max_poll_time — Set maximum poll time
- eio_set_min_parallel — Set minimum parallel thread number
- eio_stat — Get file status
- eio_statvfs — Get file system statistics
- eio_symlink — Create a symbolic link
- eio_sync — Commit buffer cache to disk
- eio_sync_file_range — Sync a file segment with disk
- eio_syncfs — Calls Linux' syncfs syscall, if available
- eio_truncate — Truncate a file
- eio_unlink — Delete a name and possibly the file it refers to
- eio_utime — Change file last access and modification times
- eio_write — Write to file

- Yapılandırma/Kurulum
  - Gereksinimler
  - Kurulum
  - Özkaynak Türleri
- Öntanımlı Sabitler
- Örnekler
- Eio İşlevleri
  - eio_busy — Artificially increase load. Could be useful in tests, benchmarking
  - eio_cancel — Cancels a request
  - eio_chmod — Change file/directory permissions
  - eio_chown — Change file/directory ownership
  - eio_close — Close file
  - eio_custom — Execute custom request like any other eio_* call
  - eio_dup2 — Duplicate a file descriptor
  - eio_event_loop — Polls libeio until all requests proceeded
  - eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file
  - eio_fchmod — Change file permissions
  - eio_fchown — Change file ownership
  - eio_fdatasync — Synchronize a file's in-core state with storage device
  - eio_fstat — Get file status
  - eio_fstatvfs — Get file system statistics
  - eio_fsync — Synchronize a file's in-core state with storage device
  - eio_ftruncate — Truncate a file
  - eio_futime — Change file last access and modification times
  - eio_get_event_stream — Get stream representing a variable used in internal communications with libeio
  - eio_get_last_error — Returns string describing the last error associated with a request resource
  - eio_grp — Creates a request group
  - eio_grp_add — Adds a request to the request group
  - eio_grp_cancel — Cancels a request group
  - eio_grp_limit — Set group limit
  - eio_init — (Re-)initialize Eio
  - eio_link — Create a hardlink for file
  - eio_lstat — Get file status
  - eio_mkdir — Create directory
  - eio_mknod — Create a special or ordinary file
  - eio_nop — Does nothing, except go through the whole request cycle
  - eio_npending — Returns number of finished, but unhandled requests
  - eio_nready — Returns number of not-yet handled requests
  - eio_nreqs — Returns number of requests to be processed
  - eio_nthreads — Returns number of threads currently in use
  - eio_open — Opens a file
  - eio_poll — Can be called whenever there are pending requests that need finishing
  - eio_read — Read from a file descriptor at given offset
  - eio_readahead — Perform file readahead into page cache
  - eio_readdir — Reads through a whole directory
  - eio_readlink — Read value of a symbolic link
  - eio_realpath — Get the canonicalized absolute pathname
  - eio_rename — Change the name or location of a file
  - eio_rmdir — Remove a directory
  - eio_seek — Seek to a position
  - eio_sendfile — Transfer data between file descriptors
  - eio_set_max_idle — Set maximum number of idle threads
  - eio_set_max_parallel — Set maximum parallel threads
  - eio_set_max_poll_reqs — Set maximum number of requests processed in a poll
  - eio_set_max_poll_time — Set maximum poll time
  - eio_set_min_parallel — Set minimum parallel thread number
  - eio_stat — Get file status
  - eio_statvfs — Get file system statistics
  - eio_symlink — Create a symbolic link
  - eio_sync — Commit buffer cache to disk
  - eio_sync_file_range — Sync a file segment with disk
  - eio_syncfs — Calls Linux' syncfs syscall, if available
  - eio_truncate — Truncate a file
  - eio_unlink — Delete a name and possibly the file it refers to
  - eio_utime — Change file last access and modification times
  - eio_write — Write to file

# Ev

# Giriş

This extension provides interface to » libev library - a high performance full-featured event loop written in C.

> Bilginize: Bu eklenti Windows sistemlerinde çalışmaz.

Libev is an event loop: one registers interest in certain events (such as a file descriptor being readable or a timeout occurring), and it will manage these event sources and provide the program with events.

To do this, it must take more or less complete control over the process (or thread) by executing the event loop handler, and will then communicate events via a callback mechanism.

You register interest in certain events by registering so-called event watchers, and then hand it over to libev by starting the watcher.

For details refer to the » documentation of libev.

# Yapılandırma/Kurulum

## İçindekiler

- Gereksinimler
- Kurulum

## Gereksinimler

`libev` library is embedded into this extension. You don't need to install it separately.

## Kurulum

Bu » PECL eklentisi PHP ile gelmez.

Bu PECL eklentisini kurma bilgisi kılavuzun PECL eklentisinin kurulması başlıklı faslında bulunabilir. Yeni dağıtımlar, indirmeler, kaynak dosyaları, sürdürücü bilgileri ve CHANGELOG gibi ek bilgiler şu adreste bulunabilir: » https://pecl.php.net/package/ev.

# Örnekler

Örnek 1 Simple timers

    <?php
    // Create and start timer firing after 2 seconds
    $w1 = new EvTimer(2, 0, function () {
        echo "2 seconds elapsed\n";
    });

    // Create and launch timer firing after 2 seconds repeating each second
    // until we manually stop it
    $w2 = new EvTimer(2, 1, function ($w) {
        echo "is called every second, is launched after 2 seconds\n";
        echo "iteration = ", Ev::iteration(), PHP_EOL;

        // Stop the watcher after 5 iterations
        Ev::iteration() == 5 and $w->stop();
        // Stop the watcher if further calls cause more than 10 iterations
        Ev::iteration() >= 10 and $w->stop();
    });

    // Create stopped timer. It will be inactive until we start it ourselves
    $w_stopped = EvTimer::createStopped(10, 5, function($w) {
        echo "Callback of a timer created as stopped\n";

        // Stop the watcher after 2 iterations
        Ev::iteration() >= 2 and $w->stop();
    });

    // Loop until Ev::stop() is called or all of watchers stop
    Ev::run();

    // Start and look if it works
    $w_stopped->start();
    echo "Run single iteration\n";
    Ev::run(Ev::RUN_ONCE);

    echo "Restart the second watcher and try to handle the same events, but don't block\n";
    $w2->again();
    Ev::run(Ev::RUN_NOWAIT);

    $w = new EvTimer(10, 0, function() {});
    echo "Running a blocking loop\n";
    Ev::run();
    echo "END\n";
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    2 seconds elapsed
    is called every second, is launched after 2 seconds
    iteration = 1
    is called every second, is launched after 2 seconds
    iteration = 2
    is called every second, is launched after 2 seconds
    iteration = 3
    is called every second, is launched after 2 seconds
    iteration = 4
    is called every second, is launched after 2 seconds
    iteration = 5
    Run single iteration
    Callback of a timer created as stopped
    Restart the second watcher and try to handle the same events, but don't block
    Running a blocking loop
    is called every second, is launched after 2 seconds
    iteration = 8
    is called every second, is launched after 2 seconds
    iteration = 9
    is called every second, is launched after 2 seconds
    iteration = 10
    END

Örnek 2 Periodic timer. Tick each 10.5 seconds

    <?php
    $w = new EvPeriodic(0., 10.5, NULL, function ($w, $revents) {
        echo time(), PHP_EOL;
    });

    Ev::run();
    ?>

Örnek 3 Periodic timer. Use reschedule callback

    <?php
    // Tick each 10.5 seconds

    function reschedule_cb ($watcher, $now) {
        return $now + (10.5. - fmod($now, 10.5));
    }

    $w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
        echo time(), PHP_EOL;
    });

    Ev::run();
    ?>

Örnek 4 Periodic timer. Tick every 10.5 seconds starting at now

    <?php
    // Tick every 10.5 seconds starting at now
    $w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
        echo time(), PHP_EOL;
    });

    Ev::run();
    ?>

Örnek 5 Wait until STDIN is readable

    <?php
    // Wait until STDIN is readable
    $w = new EvIo(STDIN, Ev::READ, function ($watcher, $revents) {
        echo "STDIN is readable\n";
    });

    Ev::run(Ev::RUN_ONCE);
    ?>

Örnek 6 Use some async I/O to access a socket

    <?php
    /* Use some async I/O to access a socket */

    // `sockets' extension still logs warnings
    // for EINPROGRESS, EAGAIN/EWOULDBLOCK etc.
    error_reporting(E_ERROR);

    $e_nonblocking = array (/*EAGAIN or EWOULDBLOCK*/11, /*EINPROGRESS*/115);

    // Get the port for the WWW service
    $service_port = getservbyname('www', 'tcp');

    // Get the IP address for the target host
    $address = gethostbyname('google.co.uk');

    // Create a TCP/IP socket
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket === FALSE) {
        echo "socket_create() failed: reason: "
            .socket_strerror(socket_last_error()) . "\n";
    }

    // Set O_NONBLOCK flag
    socket_set_nonblock($socket);

    // Abort on timeout
    $timeout_watcher = new EvTimer(10.0, 0., function () use ($socket) {
        socket_close($socket);
        Ev::stop(Ev::BREAK_ALL);
    });

    // Make HEAD request when the socket is writable
    $write_watcher = new EvIo($socket, Ev::WRITE, function ($w)
        use ($socket, $timeout_watcher, $e_nonblocking)
    {
        // Stop timeout watcher
        $timeout_watcher->stop();
        // Stop write watcher
        $w->stop();

        $in = "HEAD / HTTP/1.1\r\n";
        $in .= "Host: google.co.uk\r\n";
        $in .= "Connection: Close\r\n\r\n";

        if (!socket_write($socket, $in, strlen($in))) {
            trigger_error("Failed writing $in to socket", E_USER_ERROR);
        }

        $read_watcher = new EvIo($socket, Ev::READ, function ($w, $re)
            use ($socket, $e_nonblocking)
        {
            // Socket is readable. recv() 20 bytes using non-blocking mode
            $ret = socket_recv($socket, $out, 20, MSG_DONTWAIT);

            if ($ret) {
                echo $out;
            } elseif ($ret === 0) {
                // All read
                $w->stop();
                socket_close($socket);
                return;
            }

            // Caught EINPROGRESS, EAGAIN, or EWOULDBLOCK
            if (in_array(socket_last_error(), $e_nonblocking)) {
                return;
            }

            $w->stop();
            socket_close($socket);
        });

        Ev::run();
    });

    $result = socket_connect($socket, $address, $service_port);

    Ev::run();
    ?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

    HTTP/1.1 301 Moved Permanently
    Location: http://www.google.co.uk/
    Content-Type: text/html; charset=UTF-8
    Date: Sun, 23 Dec 2012 16:08:27 GMT
    Expires: Tue, 22 Jan 2013 16:08:27 GMT
    Cache-Control: public, max-age=2592000
    Server: gws
    Content-Length: 221
    X-XSS-Protection: 1; mode=block
    X-Frame-Options: SAMEORIGIN
    Connection: close

Örnek 7 Embedding one loop into another

    <?php
    /*
    * Try to get an embeddable event loop and embed it into the default event loop.
    * If it is impossible, use the default
    * loop. The default loop is stored in $loop_hi, while the embeddable loop is
    * stored in $loop_lo(which is $loop_hi in the case no embeddable loop can be
    * used).
    *
    * Sample translated to PHP
    * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
    */
    $loop_hi = EvLoop::defaultLoop();
    $loop_lo = NULL;
    $embed   = NULL;

    /*
    * See if there is a chance of getting one that works
    * (flags' value of 0 means autodetection)
    */
    $loop_lo = Ev::embeddableBackends() & Ev::recommendedBackends()
        ? new EvLoop(Ev::embeddableBackends() & Ev::recommendedBackends())
        : 0;

    if ($loop_lo) {
        $embed = new EvEmbed($loop_lo, function () {});
    } else {
        $loop_lo = $loop_hi;
    }
    ?>

Örnek 8 Embedding loop created with kqueue backend into the default loop

    <?php
    /*
    * Check if kqueue is available but not recommended and create a kqueue backend
    * for use with sockets (which usually work with any kqueue implementation).
    * Store the kqueue/socket-only event loop in loop_socket. (One might optionally
    * use EVFLAG_NOENV, too)
    *
    * Example borrowed from
    * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
    */
    $loop        = EvLoop::defaultLoop();
    $socket_loop = NULL;
    $embed       = NULL;

    if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
        if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
            $embed = new EvEmbed($loop);
        }
    }

    if (!$socket_loop) {
        $socket_loop = $loop;
    }

    // Now use $socket_loop for all sockets, and $loop for anything else
    ?>

Örnek 9 Handle SIGTERM signal

    <?php
    $w = new EvSignal(SIGTERM, function ($watcher) {
        echo "SIGTERM received\n";
        $watcher->stop();
    });

    Ev::run();
    ?>

Örnek 10 Monitor changes of /var/log/messages

    <?php
    // Use 10 second update interval.
    $w = new EvStat("/var/log/messages", 8, function ($w) {
        echo "/var/log/messages changed\n";

        $attr = $w->attr();

        if ($attr['nlink']) {
            printf("Current size: %ld\n", $attr['size']);
            printf("Current atime: %ld\n", $attr['atime']);
            printf("Current mtime: %ld\n", $attr['mtime']);
        } else {
            fprintf(STDERR, "`messages` file is not there!");
            $w->stop();
        }
    });

    Ev::run();
    ?>

Örnek 11 Monitor changes of /var/log/messages. Avoid missing updates by means of one second delay

    <?php
    $timer = EvTimer::createStopped(0., 1.02, function ($w) {
        $w->stop();

        $stat = $w->data;

        // 1 second after the most recent change of the file
        printf("Current size: %ld\n", $stat->attr()['size']);
    });

    $stat = new EvStat("/var/log/messages", 0., function () use ($timer) {
        // Reset timer watcher
        $timer->again();
    });

    $timer->data = $stat;

    Ev::run();
    ?>

Örnek 12 Process status changes

    <?php
    $pid = pcntl_fork();

    if ($pid == -1) {
        fprintf(STDERR, "pcntl_fork failed\n");
    } elseif ($pid) {
        $w = new EvChild($pid, FALSE, function ($w, $revents) {
            $w->stop();

            printf("Process %d exited with status %d\n", $w->rpid, $w->rstatus);
        });

        Ev::run();

        // Protect against Zombies
        pcntl_wait($status);
    } else {
        //Forked child
        exit(2);
    }
    ?>

# Watchers

A watcher is an object that gets created to record interest in some event. For instance, the following code waits for `STDIN` to become readable:

    <?php
    // Wait until STDIN is readable
    $w = new EvIo(STDIN, Ev::READ, function ($watcher, $revents) {
     echo "STDIN is readable\n";
    });
    Ev::run(Ev::RUN_ONCE);
    ?>

All the watcher constructors automatically start the watchers. `createStopped` methods create stopped watchers(e.g. EvIo::createStopped())

Note that a watcher will automatically be stopped when the watcher object is destroyed. Therefore, the watcher objects returned by the constructors or factory methods should be kept.

Note also that all methods changing some watcher property( set, priority etc.) automatically stop and start it again if it is active, which means pending events get lost.

See also: Watcher callbacks.

# Watcher callbacks

All watchers can be active(waiting for events) or inactive(paused). Only active watchers will have their callbacks invoked. All callbacks will be called with at least two arguments: `watcher` - the watcher, and `revents` a bitmask of received events.

Watcher callbacks are passed to the watcher constructors (the classes derived from EvWatcher - EvCheck::__construct(), EvChild::__construct() etc.). A watcher callback should match the following prototype:

function callback( object `$watcher` = NULL , int `$revents` = NULL ): void

`watcher`
  The watcher instance(of a class extending EvWatcher ).
`revents`
  Watcher received events.

Each watcher type has its associated bit in `revents`, so one can use the same callback for multiple watchers. The event mask is named after the type, i.e. EvChild (or EvLoop::child()) sets `Ev::CHILD`, EvPrepare (or EvLoop::prepare()) sets `Ev::PREPARE`, EvPeriodic (or EvLoop::periodic()) sets `Ev::PERIODIC` and so on, with the exception of I/O events (which can set both `Ev::READ` and `Ev::WRITE` bits).

# Periodic watcher operation modes

EvPeriodic watcher works in different modes depending on the `offset`, `interval` and `reschedule_cb` parameters.

1. Absolute timer. In this mode `interval` = `0`, `reschedule_cb` = `null`. This time simply fires at the wallclock time `offset` and doesn't repeat. It will not adjust when a time jump occurs, that is, if it is to be run at January 1st 2014 then it will run when the system time reaches or surpasses this time.
2. Repeating interval timer. In this mode `interval` > `0`, `reschedule_cb` = `null`; the watcher will always be scheduled to timeout at the next `offset` + `N` * `interval` time(for some integer `N`) and then repeat, regardless of any time jumps.

   This can be used to create timers that do not drift with respect to system time:

       <?php
       $hourly = EvPeriodic(0, 3600, NULL, function () {
         echo "once per hour\n";
       });
       ?>

   That doesn't mean there will always be `3600` seconds in between triggers, but only that the callback will be called when the system time shows a full hour( UTC ). EvPeriodic will try to run the callback in this mode at the next possible time where time = `offset` ( `mod` `interval` ), regardless of any time jumps.
3. Manual reschedule mode. In this mode `reschedule_cb` is a callable. `interval` and `offset` are both being ignored. Instead, each time the periodic watcher gets scheduled, the reschedule callback ( `reschedule_cb`) will be called with the watcher as first, and the current time as second argument. This callback must not stop or destroy this or any other periodic watchers, ever, and must not call any event loop functions or methods. To stop it return `1e30` and stop it afterwards. An EvPrepare watcher may be used for this task. It must return the next time to trigger, based on the passed time value (that is, the lowest time value larger than or equal to the second argument). It will usually be called just before the callback will be triggered, but might be called at other times, too.

   Örnek 1 Using reschedule callback

       <?php
       // Tick each 10.5 seconds

       function reschedule_cb ($watcher, $now) {
          return $now + (10.5. - fmod($now, 10.5));
       }

       $w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
          echo time(), PHP_EOL;
       });

       Ev::run();
       ?>

# The Ev class

(PECL ev >= 0.2.0)

## Giriş

Ev is a static class providing access to the default loop and to some common operations.

## Sınıf Sözdizimi

final class Ev {
/* Sabitler */
const int FLAG_AUTO = 0;
const int FLAG_NOENV = 16777216;
const int FLAG_FORKCHECK = 33554432;
const int FLAG_NOINOTIFY = 1048576;
const int FLAG_SIGNALFD = 2097152;
const int FLAG_NOSIGMASK = 4194304;
const int RUN_NOWAIT = 1;
const int RUN_ONCE = 2;
const int BREAK_CANCEL = 0;
const int BREAK_ONE = 1;
const int BREAK_ALL = 2;
const int MINPRI = -2;
const int MAXPRI = 2;
const int READ = 1;
const int WRITE = 2;
const int TIMER = 256;
const int PERIODIC = 512;
const int SIGNAL = 1024;
const int CHILD = 2048;
const int STAT = 4096;
const int IDLE = 8192;
const int PREPARE = 16384;
const int CHECK = 32768;
const int EMBED = 65536;
const int CUSTOM = 16777216;
const int ERROR = 2147483648;
const int BACKEND_SELECT = 1;
const int BACKEND_POLL = 2;
const int BACKEND_EPOLL = 4;
const int BACKEND_KQUEUE = 8;
const int BACKEND_DEVPOLL = 16;
const int BACKEND_PORT = 32;
const int BACKEND_ALL = 63;
const int BACKEND_MASK = 65535;
/* Yöntemler */
final public static function backend(): int
final public static function depth(): int
final public static function embeddableBackends(): int
final public static function feedSignal( int `$signum` ): void
final public static function feedSignalEvent( int `$signum` ): void
final public static function iteration(): int
final public static function now(): float
final public static function nowUpdate(): void
final public static function recommendedBackends(): int
final public static function resume(): void
final public static function run( int `$flags` = ?): void
final public static function sleep( float `$seconds` ): void
final public static function stop( int `$how` = ?): void
final public static function supportedBackends(): int
final public static function suspend(): void
final public static function time(): float
final public static function verify(): void
}

## Öntanımlı Sabitler

Flags passed to create a loop:

`Ev::FLAG_AUTO`
  The default flags value
`Ev::FLAG_NOENV`
  If this flag used(or the program runs setuid or setgid), `libev` won't look at the environment variable LIBEV_FLAGS. Otherwise(by default), LIBEV_FLAGS will override the flags completely if it is found. Useful for performance tests and searching for bugs.
`Ev::FLAG_FORKCHECK`
  Makes libev check for a fork in each iteration, instead of calling EvLoop::fork() manually. This works by calling `getpid()` on every iteration of the loop, and thus this might slow down the event loop with lots of loop iterations, but usually is not noticeable. This flag setting cannot be overridden or specified in the LIBEV_FLAGS environment variable.
`Ev::FLAG_NOINOTIFY`
  When this flag is specified, `libev` won't attempt to use the `inotify` API for its » ev_stat watchers. The flag can be useful to conserve inotify file descriptors, as otherwise each loop using `ev_stat` watchers consumes one `inotify` handle.
`Ev::FLAG_SIGNALFD`
  When this flag is specified, `libev` will attempt to use the `signalfd` API for its » ev_signal (and » ev_child) watchers. This API delivers signals synchronously, which makes it both faster and might make it possible to get the queued signal data. It can also simplify signal handling with threads, as long as signals are properly blocked in threads. `Signalfd` will not be used by default.
`Ev::FLAG_NOSIGMASK`
  When this flag is specified, `libev` will avoid to modify the signal mask. Specifically, this means having to make sure signals are unblocked before receiving them. This behaviour is useful for custom signal handling, or handling signals only in specific threads.

Flags passed to Ev::run(), or EvLoop::run()

`Ev::RUN_NOWAIT`
  Means that event loop will look for new events, will handle those events and any already outstanding ones, but will not wait and block the process in case there are no events and will return after one iteration of the loop. This is sometimes useful to poll and handle new events while doing lengthy calculations, to keep the program responsive.
`Ev::RUN_ONCE`
  Means that event loop will look for new events (waiting if necessary) and will handle those and any already outstanding ones. It will block the process until at least one new event arrives (which could be an event internal to libev itself, so there is no guarantee that a user-registered callback will be called), and will return after one iteration of the loop.

Flags passed to Ev::stop(), or EvLoop::stop()

`Ev::BREAK_CANCEL`
  Cancel the break operation.
`Ev::BREAK_ONE`
  Makes the innermost Ev::run() (or EvLoop::run()) call return.
`Ev::BREAK_ALL`
  Makes all nested Ev::run() (or EvLoop::run()) calls return.

Watcher priorities:

`Ev::MINPRI`
  Minimum allowed watcher priority.
`Ev::MAXPRI`
  Maximum allowed watcher priority.

Bit masks of (received) events:

`Ev::READ`
  The file descriptor in the EvIo watcher has become readable.
`Ev::WRITE`
  The file descriptor in the EvIo watcher has become writable.
`Ev::TIMER`
  EvTimer watcher has been timed out.
`Ev::PERIODIC`
  EvPeriodic watcher has been timed out.
`Ev::SIGNAL`
  A signal specified in EvSignal::__construct() has been received.
`Ev::CHILD`
  The `pid` specified in EvChild::__construct() has received a status change.
`Ev::STAT`
  The path specified in EvStat watcher changed its attributes.
`Ev::IDLE`
  EvIdle watcher works when there is nothing to do with other watchers.
`Ev::PREPARE`
  All EvPrepare watchers are invoked just before Ev::run() starts. Thus, EvPrepare watchers are the last watchers invoked before the event loop sleeps or polls for new events.
`Ev::CHECK`
  All EvCheck watchers are queued just after Ev::run() has gathered the new events, but before it queues any callbacks for any received events. Thus, EvCheck watchers will be invoked before any other watchers of the same or lower priority within an event loop iteration.
`Ev::EMBED`
  The embedded event loop specified in the EvEmbed watcher needs attention.
`Ev::CUSTOM`
  Not ever sent(or otherwise used) by `libev` itself, but can be freely used by `libev` users to signal watchers (e.g. via EvWatcher::feed() ).
`Ev::ERROR`
  An unspecified error has occurred, the watcher has been stopped. This might happen because the watcher could not be properly started because `libev` ran out of memory, a file descriptor was found to be closed or any other problem. `Libev` considers these application bugs. See also » ANATOMY OF A WATCHER

Backend flags:

`Ev::BACKEND_SELECT`
  `select(2) backend`
`Ev::BACKEND_POLL`
  `poll(2) backend`
`Ev::BACKEND_EPOLL`
  Linux-specific `epoll(7)` backend for both pre- and post-2.6.9 kernels
`Ev::BACKEND_KQUEUE`
  `kqueue` backend used on most BSD systems. EvEmbed watcher could be used to embed one loop(with kqueue backend) into another. For instance, one can try to create an event loop with `kqueue` backend and use it for sockets only.
`Ev::BACKEND_DEVPOLL`
  Solaris 8 backend. This is not implemented yet.
`Ev::BACKEND_PORT`
  Solaris 10 event port mechanism with a good scaling.
`Ev::BACKEND_ALL`
  Try all backends(even corrupted ones). It's not recommended to use it explicitly. Bitwise operators should be applied here(e.g. `Ev::BACKEND_ALL` & ~ `Ev::BACKEND_KQUEUE`) Use Ev::recommendedBackends(), or don't specify any backends at all.
`Ev::BACKEND_MASK`
  Not a backend, but a mask to select all backend bits from `flags` value to mask out any backends(e.g. when modifying the LIBEV_FLAGS environment variable).

> Bilginize: For the default loop during module initialization phase `Ev` registers » ev_loop_fork call by means of `pthread_atfork` (if available).

> Bilginize: There are methods providing access to the default event loop in Ev class(e.g. Ev::iteration(), Ev::depth() etc.) For custom loops (created with EvLoop::__construct()) these values may be accessed via corresponding properties and methods of the EvLoop class. The instance of the default event loop itself can be fetched by means of EvLoop::defaultLoop() method.

# Ev::backend

(PECL ev >= 0.2.0)

Ev::backend — Returns an integer describing the backend used by libev

### Açıklama

final public static function Ev::backend(): int

Returns an integer describing the backend used by libev. See Backend flags

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an integer(bit mask) describing the backend used by libev.

### Ayrıca Bakınız

- EvEmbed
- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops
- Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform
- Ev::supportedBackends() - Returns the set of backends supported by current libev configuration
- Backend flags

# Ev::depth

(PECL ev >= 0.2.0)

Ev::depth — Returns recursion depth

### Açıklama

final public static function Ev::depth(): int

The number of times Ev::run() was entered minus the number of times Ev::run() was exited normally, in other words, the recursion depth. Outside Ev::run(), this number is `0`. In a callback, this number is `1`, unless Ev::run() was invoked recursively (or from another thread), in which case it is higher.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

ev_depth() returns recursion depth of the default loop.

### Ayrıca Bakınız

- Ev::iteration() - Return the number of times the default event loop has polled for new events

# Ev::embeddableBackends

(PECL ev >= 0.2.0)

Ev::embeddableBackends — Returns the set of backends that are embeddable in other event loops

### Açıklama

final public static function Ev::embeddableBackends(): int

Returns the set of backends that are embeddable in other event loops.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

### Örnekler

Örnek 1 Embedding loop created with kqueue backend into the default loop

    <?php
    /*
    * Check if kqueue is available but not recommended and create a kqueue backend
    * for use with sockets (which usually work with any kqueue implementation).
    * Store the kqueue/socket-only event loop in loop_socket. (One might optionally
    * use EVFLAG_NOENV, too)
    *
    * Example borrowed from
    * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
    */
    $loop        = EvLoop::defaultLoop();
    $socket_loop = NULL;
    $embed       = NULL;

    if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
     if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
      $embed = new EvEmbed($loop);
     }
    }

    if (!$socket_loop) {
     $socket_loop = $loop;
    }

    // Now use $socket_loop for all sockets, and $loop for anything else
    ?>

### Ayrıca Bakınız

- EvEmbed
- Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform
- Ev::supportedBackends() - Returns the set of backends supported by current libev configuration
- Backend flags
- Examples

# Ev::feedSignal

(PECL ev >= 0.2.0)

Ev::feedSignal — Feed a signal event into Ev

### Açıklama

final public static function Ev::feedSignal( int `$signum` ): void

Simulates a signal receive. It is safe to call this function at any time, from any context, including signal handlers or random threads. Its main use is to customise signal handling in the process.

Unlike Ev::feedSignalEvent(), this works regardless of which loop has registered the signal.

### Bağımsız Değişkenler

`signum`
  Signal number. See `signal(7)` man page for details. You can use constants exported by `pcntl` extension.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::feedSignalEvent() - Feed signal event into the default loop

# Ev::feedSignalEvent

(No version information available, might only be in Git)

Ev::feedSignalEvent — Feed signal event into the default loop

### Açıklama

final public static function Ev::feedSignalEvent( int `$signum` ): void

Feed signal event into the default loop. Ev will react to this call as if the signal specified by `signal` had occurred.

### Bağımsız Değişkenler

`signum`
  Signal number. See `signal(7)` man page for details. See also constants exported by `pcntl` extension.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::feedSignal() - Feed a signal event into Ev

# Ev::iteration

(PECL ev >= 0.2.0)

Ev::iteration — Return the number of times the default event loop has polled for new events

### Açıklama

final public static function Ev::iteration(): int

Return the number of times the event loop has polled for new events. Sometimes useful as a generation counter.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns number of polls of the default event loop.

### Ayrıca Bakınız

- Ev::depth() - Returns recursion depth

# Ev::now

(PECL ev >= 0.2.0)

Ev::now — Returns the time when the last iteration of the default event loop has started

### Açıklama

final public static function Ev::now(): float

Returns the time when the last iteration of the default event loop has started. This is the time that timers( EvTimer and EvPeriodic) are based on, and referring to it is usually faster than calling Ev::time().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns number of seconds(fractional) representing the time when the last iteration of the default event loop has started.

### Ayrıca Bakınız

- Ev::nowUpdate() - Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress

# Ev::nowUpdate

(PECL ev >= 0.2.0)

Ev::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress

### Açıklama

final public static function Ev::nowUpdate(): void

Establishes the current time by querying the kernel, updating the time returned by Ev::now() in the progress. This is a costly operation and is usually done automatically within Ev::run().

This method is rarely useful, but when some event callback runs for a very long time without entering the event loop, updating libev 's consideration of the current time is a good idea.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::now() - Returns the time when the last iteration of the default event loop has started

# Ev::recommendedBackends

(PECL ev >= 0.2.0)

Ev::recommendedBackends — Returns a bit mask of recommended backends for current platform

### Açıklama

final public static function Ev::recommendedBackends(): int

Returns the set of all backends compiled into this binary of `libev` and also recommended for this platform, meaning it will work for most file descriptor types. This set is often smaller than the one returned by ev_supported_backends(), as for example `kqueue` is broken on most `BSD` systems and will not be auto-detected unless it is requested explicitly. This is the set of backends that `libev` will probe when no backends are specified explicitly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

### Örnekler

Örnek 1 Embedding one loop into another

    <?php
    /*
    * Try to get an embeddable event loop and embed it into the default event loop.
    * If it is impossible, use the default
    * loop. The default loop is stored in $loop_hi, while the embeddable loop is
    * stored in $loop_lo(which is $loop_hi in the case no embeddable loop can be
    * used).
    *
    * Sample translated to PHP
    * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
    */
    $loop_hi = EvLoop::defaultLoop();
    $loop_lo = NULL;
    $embed   = NULL;

    /*
    * See if there is a chance of getting one that works
    * (flags' value of 0 means autodetection)
    */
    $loop_lo = Ev::embeddableBackends() & Ev::recommendedBackends()
     ? new EvLoop(Ev::embeddableBackends() & Ev::recommendedBackends())
     : 0;

    if ($loop_lo) {
     $embed = new EvEmbed($loop_lo, function () {});
    } else {
     $loop_lo = $loop_hi;
    }
    ?>

### Ayrıca Bakınız

- EvEmbed
- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops
- Ev::supportedBackends() - Returns the set of backends supported by current libev configuration
- Backend flags
- Examples

# Ev::resume

(PECL ev >= 0.2.0)

Ev::resume — Resume previously suspended default event loop

### Açıklama

final public static function Ev::resume(): void

Ev::suspend() and Ev::resume() methods suspend and resume a loop correspondingly.

All timer watchers will be delayed by the time spent between suspend and resume, and all periodic watchers will be rescheduled(that is, they will lose any events that would have occurred while suspended).

After calling Ev::suspend() it is not allowed to call any function on the given loop other than Ev::resume(). Also it is not allowed to call Ev::resume() without a previous call to Ev::suspend().

Calling suspend / resume has the side effect of updating the event loop time(see Ev::nowUpdate() ).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::suspend() - Suspend the default event loop

# Ev::run

(PECL ev >= 0.2.0)

Ev::run — Begin checking for events and calling callbacks for the default loop

### Açıklama

final public static function Ev::run( int `$flags` = ?): void

Begin checking for events and calling callbacks for the default loop. Returns when a callback calls Ev::stop() method, or the flags are nonzero(in which case the return value is true) or when there are no active watchers which reference the loop( EvWatcher::keepalive() is `true`), in which case the return value will be `false`. The return value can generally be interpreted as if `true`, there is more work left to do.

### Bağımsız Değişkenler

`flags`

  Optional parameter `flags` can be one of the following:

  List for possible values of `flags`
  `flags` | Description
  --- | ---
  `0` | The default behavior described above
  `Ev::RUN_ONCE` | Block at most one(wait, but don't loop)
  `Ev::RUN_NOWAIT` | Don't block at all(fetch/handle events, but don't wait)

  See the run flag constants.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::stop() - Stops the default event loop
- EvLoop::run() - Begin checking for events and calling callbacks for the loop

# Ev::sleep

(PECL ev >= 0.2.0)

Ev::sleep — Block the process for the given number of seconds

### Açıklama

final public static function Ev::sleep( float `$seconds` ): void

Block the process for the given number of seconds.

### Bağımsız Değişkenler

`seconds`
  Fractional number of seconds

### Dönen Değerler

Hiçbir değer dönmez.

# Ev::stop

(PECL ev >= 0.2.0)

Ev::stop — Stops the default event loop

### Açıklama

final public static function Ev::stop( int `$how` = ?): void

Stops the default event loop

### Bağımsız Değişkenler

`how`
  One of Ev::BREAK_* constants.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::run() - Begin checking for events and calling callbacks for the default loop

# Ev::supportedBackends

(PECL ev >= 0.2.0)

Ev::supportedBackends — Returns the set of backends supported by current libev configuration

### Açıklama

final public static function Ev::supportedBackends(): int

Returns the set of backends supported by current libev configuration.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

### Örnekler

Örnek 1 Embedding loop created with kqueue backend into the default loop

    <?php
    /*
    * Check if kqueue is available but not recommended and create a kqueue backend
    * for use with sockets (which usually work with any kqueue implementation).
    * Store the kqueue/socket-only event loop in loop_socket. (One might optionally
    * use EVFLAG_NOENV, too)
    *
    * Example borrowed from
    * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
    */
    $loop        = EvLoop::defaultLoop();
    $socket_loop = NULL;
    $embed       = NULL;

    if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
     if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
      $embed = new EvEmbed($loop);
     }
    }

    if (!$socket_loop) {
     $socket_loop = $loop;
    }

    // Now use $socket_loop for all sockets, and $loop for anything else
    ?>

### Ayrıca Bakınız

- EvEmbed
- Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform
- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops
- Backend flags
- Examples

# Ev::suspend

(PECL ev >= 0.2.0)

Ev::suspend — Suspend the default event loop

### Açıklama

final public static function Ev::suspend(): void

Ev::suspend() and Ev::resume() methods suspend and resume the default loop correspondingly.

All timer watchers will be delayed by the time spent between suspend and resume, and all periodic watchers will be rescheduled(that is, they will lose any events that would have occurred while suspended).

After calling Ev::suspend() it is not allowed to call any function on the given loop other than Ev::resume(). Also it is not allowed to call Ev::resume() without a previous call to Ev::suspend().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::resume() - Resume previously suspended default event loop

# Ev::time

(PECL ev >= 0.2.0)

Ev::time — Returns the current time in fractional seconds since the epoch

### Açıklama

final public static function Ev::time(): float

Returns the current time in fractional seconds since the epoch. Consider using Ev::now()

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the current time in fractional seconds since the epoch.

### Ayrıca Bakınız

- Ev::now() - Returns the time when the last iteration of the default event loop has started

# Ev::verify

(PECL ev >= 0.2.0)

Ev::verify — Performs internal consistency checks(for debugging)

### Açıklama

final public static function Ev::verify(): void

Performs internal consistency checks(for debugging libev) and abort the program if any data structures were found to be corrupted.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- Ev::backend — Returns an integer describing the backend used by libev
- Ev::depth — Returns recursion depth
- Ev::embeddableBackends — Returns the set of backends that are embeddable in other event loops
- Ev::feedSignal — Feed a signal event into Ev
- Ev::feedSignalEvent — Feed signal event into the default loop
- Ev::iteration — Return the number of times the default event loop has polled for new events
- Ev::now — Returns the time when the last iteration of the default event loop has started
- Ev::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress
- Ev::recommendedBackends — Returns a bit mask of recommended backends for current platform
- Ev::resume — Resume previously suspended default event loop
- Ev::run — Begin checking for events and calling callbacks for the default loop
- Ev::sleep — Block the process for the given number of seconds
- Ev::stop — Stops the default event loop
- Ev::supportedBackends — Returns the set of backends supported by current libev configuration
- Ev::suspend — Suspend the default event loop
- Ev::time — Returns the current time in fractional seconds since the epoch
- Ev::verify — Performs internal consistency checks(for debugging)

# The EvCheck class

(PECL ev >= 0.2.0)

## Giriş

EvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards.

It is not allowed to call EvLoop::run() or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck, so having a watcher of each kind they will always be called in pairs bracketing the blocking call.

The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.

It is recommended to give EvCheck watchers highest( `Ev::MAXPRI`) priority, to ensure that they are being run before any other watchers after the poll (this doesn’t matter for EvPrepare watchers).

Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job.

## Sınıf Sözdizimi

class EvCheck extends EvWatcher {
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct( callable `$callback` , mixed `$data` = ?, int `$priority` = ?)
final public static function createStopped( string `$callback` , string `$data` = ?, string `$priority` = ?): object
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

# EvCheck::__construct

(PECL ev >= 0.2.0)

EvCheck::__construct — Constructs the EvCheck watcher object

### Açıklama

public function EvCheck::__construct( callable `$callback` , mixed `$data` = ?, int `$priority` = ?)

Constructs the EvCheck watcher object.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvPrepare
- EvLoop::check() - Creates EvCheck object associated with the current event loop instance

# EvCheck::createStopped

(PECL ev >= 0.2.0)

EvCheck::createStopped — Create instance of a stopped EvCheck watcher

### Açıklama

final public static function EvCheck::createStopped( string `$callback` , string `$data` = ?, string `$priority` = ?): object

Create instance of a stopped EvCheck watcher

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvCheck object on success.

### Ayrıca Bakınız

- EvPrepare

## İçindekiler

- EvCheck::__construct — Constructs the EvCheck watcher object
- EvCheck::createStopped — Create instance of a stopped EvCheck watcher

# The EvChild class

(PECL ev >= 0.2.0)

## Giriş

EvChild watchers trigger when the process receives a `SIGCHLD` in response to some child status changes (most typically when a child dies or exits). It is permissible to install an `EvChild` watcher after the child has been forked(which implies it might have already exited), as long as the event loop isn't entered(or is continued from a watcher), i.e. forking and then immediately registering a watcher for the child is fine, but forking and registering a watcher a few event loop iterations later or in the next callback invocation is not.

It is allowed to register EvChild watchers in the default loop only.

## Sınıf Sözdizimi

class EvChild extends EvWatcher {
/* Özellikler */
public $pid;
public $rpid;
public $rstatus;
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct(
int `$pid` ,
bool `$trace` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)
final public static function createStopped(
int `$pid` ,
bool `$trace` ,
callable `$callback` ,
mixed `$data` = ?,
int `$priority` = ?
): object
public function set( int `$pid` , bool `$trace` ): void
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

## Özellikler

pid
  Readonly. The process ID this watcher watches out for, or `0`, meaning any process ID.
rpid
  Readonly .The process ID that detected a status change.
rstatus
  Readonly. The process exit status caused by rpid.

# EvChild::__construct

(PECL ev >= 0.2.0)

EvChild::__construct — Constructs the EvChild watcher object

### Açıklama

public function EvChild::__construct(
int `$pid` ,
bool `$trace` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)

Constructs the EvChild watcher object.

Call the callback when a status change for process ID `pid` (or any PID if `pid` is `0`) has been received(a status change happens when the process terminates or is killed, or, when `trace` is `true`, additionally when it is stopped or continued). In other words, when the process receives a `SIGCHLD`, Ev will fetch the outstanding exit/wait status for all changed/zombie children and call the callback.

It is valid to install a child watcher after an EvChild has exited but before the event loop has started its next iteration. For example, first one calls `fork`, then the new child process might exit, and only then an EvChild watcher is installed in the parent for the new PID.

You can access both exit/tracing status and `pid` by using the rstatus and rpid properties of the watcher object.

The number of PID watchers per PID is unlimited. All of them will be called.

The EvChild::createStopped() method doesn't start(activate) the newly created watcher.

### Bağımsız Değişkenler

`pid`
  Wait for status changes of process PID(or any process if PID is specified as `0` ).
`trace`
  If `false`, only activate the watcher when the process terminates. Otherwise(`true`) additionally activate the watcher when the process is stopped or continued.
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvLoop::child() - Creates EvChild object associated with the current event loop

# EvChild::createStopped

(PECL ev >= 0.2.0)

EvChild::createStopped — Create instance of a stopped EvChild watcher

### Açıklama

final public static function EvChild::createStopped(
int `$pid` ,
bool `$trace` ,
callable `$callback` ,
mixed `$data` = ?,
int `$priority` = ?
): object

The same as EvChild::__construct(), but doesn't start the watcher automatically.

### Bağımsız Değişkenler

`pid`
  The same as for EvChild::__construct()
`trace`
  The same as for EvChild::__construct()
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

### Ayrıca Bakınız

- EvChild::__construct() - Constructs the EvChild watcher object
- EvLoop::child() - Creates EvChild object associated with the current event loop

# EvChild::set

(PECL ev >= 0.2.0)

EvChild::set — Configures the watcher

### Açıklama

public function EvChild::set( int `$pid` , bool `$trace` ): void

### Bağımsız Değişkenler

`pid`
  The same as for EvChild::__construct()
`trace`
  The same as for EvChild::__construct()

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvChild::__construct() - Constructs the EvChild watcher object

## İçindekiler

- EvChild::__construct — Constructs the EvChild watcher object
- EvChild::createStopped — Create instance of a stopped EvChild watcher
- EvChild::set — Configures the watcher

# The EvEmbed class

(PECL ev >= 0.2.0)

## Giriş

Used to embed one event loop into another.

## Sınıf Sözdizimi

class EvEmbed extends EvWatcher {
/* Özellikler */
public $embed;
/* Yöntemler */
public function __construct(
object `$other` ,
callable `$callback` = ?,
mixed `$data` = ?,
int `$priority` = ?
)
final public static function createStopped(
object `$other` ,
callable `$callback` = ?,
mixed `$data` = ?,
int `$priority` = ?
): void
public function set( object `$other` ): void
public function sweep(): void
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

## Özellikler

is_active
data
is_pending
priority
embed

# EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__construct — Constructs the EvEmbed object

### Açıklama

public function EvEmbed::__construct(
object `$other` ,
callable `$callback` = ?,
mixed `$data` = ?,
int `$priority` = ?
)

This is a rather advanced watcher type that lets to embed one event loop into another(currently only IO events are supported in the embedded loop, other types of watchers might be handled in a delayed or incorrect fashion and must not be used).

See » the libev documentation for details.

This watcher is most useful on BSD systems without working `kqueue` to still be able to handle a large number of sockets. See example below.

### Bağımsız Değişkenler

`other`
  Instance of EvLoop. The loop to embed, this loop must be embeddable(see Ev::embeddableBackends() ).
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Örnekler

Örnek 1 Embedding loop created with kqueue backend into the default loop

    <?php
    /*
     * Check if kqueue is available but not recommended and create a kqueue backend
     * for use with sockets (which usually work with any kqueue implementation).
     * Store the kqueue/socket-only event loop in loop_socket. (One might optionally
     * use EVFLAG_NOENV, too)
     *
     * Example borrowed from
     * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
     */
    $loop        = EvLoop::defaultLoop();
    $socket_loop = NULL;
    $embed       = NULL;

    if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
        if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
            $embed = new EvEmbed($loop);
        }
    }

    if (!$socket_loop) {
        $socket_loop = $loop;
    }

    // Now use $socket_loop for all sockets, and $loop for anything else
    ?>

### Ayrıca Bakınız

- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops

# EvEmbed::createStopped

(PECL ev >= 0.2.0)

EvEmbed::createStopped — Create stopped EvEmbed watcher object

### Açıklama

final public static function EvEmbed::createStopped(
object `$other` ,
callable `$callback` = ?,
mixed `$data` = ?,
int `$priority` = ?
): void

The same as EvEmbed::__construct(), but doesn't start the watcher automatically.

### Bağımsız Değişkenler

`other`
  The same as for EvEmbed::__construct()
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns stopped EvEmbed object on success.

### Ayrıca Bakınız

- EvEmbed::__construct() - Constructs the EvEmbed object
- Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops

# EvEmbed::set

(PECL ev >= 0.2.0)

EvEmbed::set — Configures the watcher

### Açıklama

public function EvEmbed::set( object `$other` ): void

Configures the watcher to use `other` event loop object.

### Bağımsız Değişkenler

`other`
  The same as for EvEmbed::__construct()

### Dönen Değerler

Hiçbir değer dönmez.

# EvEmbed::sweep

(PECL ev >= 0.2.0)

EvEmbed::sweep — Make a single, non-blocking sweep over the embedded loop

### Açıklama

public function EvEmbed::sweep(): void

Make a single, non-blocking sweep over the embedded loop. Works similarly to the following, but in the most appropriate way for embedded loops:

    <?php
    $other->start(Ev::RUN_NOWAIT);
    ?>

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvWatcher::start() - Starts the watcher

## İçindekiler

- EvEmbed::__construct — Constructs the EvEmbed object
- EvEmbed::createStopped — Create stopped EvEmbed watcher object
- EvEmbed::set — Configures the watcher
- EvEmbed::sweep — Make a single, non-blocking sweep over the embedded loop

# The EvFork class

(PECL ev >= 0.2.0)

## Giriş

Fork watchers are called when a `fork()` was detected (usually because whoever signalled libev about it by calling EvLoop::fork() ). The invocation is done before the event loop blocks next and before EvCheck watchers are being called, and only in the child after the fork. Note, that if whoever calling EvLoop::fork() calls it in the wrong process, the fork handlers will be invoked, too.

## Sınıf Sözdizimi

class EvFork extends EvWatcher {
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 )
final public static function createStopped( string `$callback` , string `$data` = ?, string `$priority` = ?): object
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

# EvFork::__construct

(PECL ev >= 0.2.0)

EvFork::__construct — Constructs the EvFork watcher object

### Açıklama

public function EvFork::__construct( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 )

Constructs the EvFork watcher object and starts the watcher automatically.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvLoop::fork() - Creates EvFork watcher object associated with the current event loop instance
- EvCheck

# EvFork::createStopped

(PECL ev >= 0.2.0)

EvFork::createStopped — Creates a stopped instance of EvFork watcher class

### Açıklama

final public static function EvFork::createStopped( string `$callback` , string `$data` = ?, string `$priority` = ?): object

The same as EvFork::__construct(), but doesn't start the watcher automatically.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvFork(stopped) object on success.

### Ayrıca Bakınız

- EvFork::__construct() - Constructs the EvFork watcher object

## İçindekiler

- EvFork::__construct — Constructs the EvFork watcher object
- EvFork::createStopped — Creates a stopped instance of EvFork watcher class

# The EvIdle class

(PECL ev >= 0.2.0)

## Giriş

EvIdle watchers trigger events when no other events of the same or higher priority are pending ( EvPrepare, EvCheck and other EvIdle watchers do not count as receiving events ).

Thus, as long as the process is busy handling sockets or timeouts(or even signals) of the same or higher priority it will not be triggered. But when the process is in idle(or only lower-priority watchers are pending), the EvIdle watchers are being called once per event loop iteration - until stopped, that is, or the process receives more events and becomes busy again with higher priority stuff.

Apart from keeping the process non-blocking(which is a useful on its own sometimes), EvIdle watchers are a good place to do "pseudo-background processing", or delay processing stuff to after the event loop has handled all outstanding events.

The most noticeable effect is that as long as any idle watchers are active, the process will not block when waiting for new events.

## Sınıf Sözdizimi

class EvIdle extends EvWatcher {
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct( callable `$callback` , mixed `$data` = ?, int `$priority` = ?)
final public static function createStopped( string `$callback` , mixed `$data` = ?, int `$priority` = ?): object
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

# EvIdle::__construct

(PECL ev >= 0.2.0)

EvIdle::__construct — Constructs the EvIdle watcher object

### Açıklama

public function EvIdle::__construct( callable `$callback` , mixed `$data` = ?, int `$priority` = ?)

Constructs the EvIdle watcher object and starts the watcher automatically.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvIdle::createStopped() - Creates instance of a stopped EvIdle watcher object
- EvLoop::idle() - Creates EvIdle watcher object associated with the current event loop instance

# EvIdle::createStopped

(PECL ev >= 0.2.0)

EvIdle::createStopped — Creates instance of a stopped EvIdle watcher object

### Açıklama

final public static function EvIdle::createStopped( string `$callback` , mixed `$data` = ?, int `$priority` = ?): object

The same as EvIdle::__construct(), but doesn't start the watcher automatically.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvIdle object on success.

### Ayrıca Bakınız

- EvIdle::__construct() - Constructs the EvIdle watcher object
- EvLoop::idle() - Creates EvIdle watcher object associated with the current event loop instance

## İçindekiler

- EvIdle::__construct — Constructs the EvIdle watcher object
- EvIdle::createStopped — Creates instance of a stopped EvIdle watcher object

# The EvIo class

(PECL ev >= 0.2.0)

## Giriş

EvIo watchers check whether a file descriptor(or socket, or a stream castable to numeric file descriptor) is readable or writable in each iteration of the event loop, or, more precisely, when reading would not block the process and writing would at least be able to write some data. This behaviour is called level-triggering because events are kept receiving as long as the condition persists. To stop receiving events just stop the watcher.

The number of read and/or write event watchers per `fd` is unlimited. Setting all file descriptors to non-blocking mode is also usually a good idea(but not required).

Another thing to watch out for is that it is quite easy to receive false readiness notifications, i.e. the callback might be called with `Ev::READ` but a subsequent read() will actually block because there is no data. It is very easy to get into this situation. Thus it is best to always use non-blocking I/O: An extra read() returning `EAGAIN` (or similar) is far preferable to a program hanging until some data arrives.

If for some reason it is impossible to run the `fd` in non-blocking mode, then separately re-test whether a file descriptor is really ready. Some people additionally use `SIGALRM` and an interval timer, just to be sure they won't block infinitely.

Always consider using non-blocking mode.

## Sınıf Sözdizimi

class EvIo extends EvWatcher {
/* Özellikler */
public $fd;
public $events;
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = ?,
int `$priority` = ?
)
final public static function createStopped(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvIo
public function set( mixed `$fd` , int `$events` ): void
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

## Özellikler

fd
events

# EvIo::__construct

(PECL ev >= 0.2.0)

EvIo::__construct — Constructs EvIo watcher object

### Açıklama

public function EvIo::__construct(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = ?,
int `$priority` = ?
)

Constructs EvIo watcher object and starts the watcher automatically.

### Bağımsız Değişkenler

`fd`
  Can be a stream opened with fopen() or similar functions, numeric file descriptor, or socket.
`events`
  `Ev::READ` and/or `Ev::WRITE`. See the bit masks.
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvIo::createStopped() - Create stopped EvIo watcher object
- EvLoop::io() - Create EvIo watcher object associated with the current event loop instance

# EvIo::createStopped

(PECL ev >= 0.2.0)

EvIo::createStopped — Create stopped EvIo watcher object

### Açıklama

final public static function EvIo::createStopped(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvIo

The same as EvIo::__construct(), but doesn't start the watcher automatically.

### Bağımsız Değişkenler

`fd`
  The same as for EvIo::__construct()
`events`
  The same as for EvIo::__construct()
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvIo object on success.

### Ayrıca Bakınız

- EvIo::__construct() - Constructs EvIo watcher object
- EvLoop::io() - Create EvIo watcher object associated with the current event loop instance

# EvIo::set

(PECL ev >= 0.2.0)

EvIo::set — Configures the watcher

### Açıklama

public function EvIo::set( mixed `$fd` , int `$events` ): void

Configures the EvIo watcher

### Bağımsız Değişkenler

`fd`
  The same as for EvIo::__construct()
`events`
  The same as for EvIo::__construct()

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- EvIo::__construct — Constructs EvIo watcher object
- EvIo::createStopped — Create stopped EvIo watcher object
- EvIo::set — Configures the watcher

# The EvLoop class

(PECL ev >= 0.2.0)

## Giriş

Represents an event loop that is always distinct from the default loop. Unlike the default loop, it cannot handle EvChild watchers.

Having threads we have to create a loop per thread, and use the default loop in the parent thread.

The default event loop is initialized automatically by Ev. It is accessible via methods of the Ev class, or via EvLoop::defaultLoop() method.

## Sınıf Sözdizimi

final class EvLoop {
/* Özellikler */
public $data;
public $backend;
public $is_default_loop;
public $iteration;
public $pending;
public $io_interval;
public $timeout_interval;
public $depth;
/* Yöntemler */
public function __construct(
int `$flags` = ?,
mixed `$data` = NULL ,
float `$io_interval` = 0.0 ,
float `$timeout_interval` = 0.0
)
public function backend(): int
final public function check( string `$callback` , string `$data` = ?, string `$priority` = ?): EvCheck
final public function child(
string `$pid` ,
string `$trace` ,
string `$callback` ,
string `$data` = ?,
string `$priority` = ?
): EvChild
public static function defaultLoop(
int `$flags` = Ev::FLAG_AUTO ,
mixed `$data` = NULL ,
float `$io_interval` = 0. ,
float `$timeout_interval` = 0.
): EvLoop
final public function embed(
string `$other` ,
string `$callback` = ?,
string `$data` = ?,
string `$priority` = ?
): EvEmbed
final public function fork( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvFork
final public function idle( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvIdle
public function invokePending(): void
final public function io(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvIo
public function loopFork(): void
public function now(): float
public function nowUpdate(): void
final public function periodic(
float `$offset` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic
final public function prepare( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvPrepare
public function resume(): void
public function run( int `$flags` = 0 ): void
final public function signal(
int `$signum` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvSignal
final public function stat(
string `$path` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvStat
public function stop( int `$how` = ?): void
public function suspend(): void
final public function timer(
float `$after` ,
float `$repeat` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvTimer
public function verify(): void
}

## Özellikler

data
  Custom data attached to loop
backend
  Readonly. The backend flags indicating the event backend in use.
is_default_loop
  Readonly. `true` if it is the default event loop.
iteration
  The current iteration count of the loop. See Ev::iteration()
pending
  The number of pending watchers. `0` indicates that there are no watchers pending.
io_interval
  Higher io_interval allows libev to spend more time collecting EvIo events, so more events can be handled per iteration, at the cost of increasing latency. Timeouts (both EvPeriodic and EvTimer) will not be affected. Setting this to a non-zero value will introduce an additional `sleep()` call into most loop iterations. The sleep time ensures that libev will not poll for EvIo events more often than once per this interval, on average. Many programs can usually benefit by setting the io_interval to a value near `0.1`, which is often enough for interactive servers(not for games). It usually doesn't make much sense to set it to a lower value than `0.01`, as this approaches the timing granularity of most systems. See also » FUNCTIONS CONTROLLING EVENT LOOPS.
timeout_interval
  Higher timeout_interval allows libev to spend more time collecting timeouts, at the expense of increased latency/jitter/inexactness(the watcher callback will be called later). EvIo watchers will not be affected. Setting this to a non-null value will not introduce any overhead in libev. See also » FUNCTIONS CONTROLLING EVENT LOOPS.
depth
  The recursion depth. See Ev::depth().

# EvLoop::backend

(PECL ev >= 0.2.0)

EvLoop::backend — Returns an integer describing the backend used by libev

### Açıklama

public function EvLoop::backend(): int

The same as Ev::backend(), but for the loop instance.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns an integer describing the backend used by libev. See Ev::backend().

### Ayrıca Bakınız

- Ev::backend() - Returns an integer describing the backend used by libev

# EvLoop::check

(PECL ev >= 0.2.0)

EvLoop::check — Creates EvCheck object associated with the current event loop instance

### Açıklama

final public function EvLoop::check( string `$callback` , string `$data` = ?, string `$priority` = ?): EvCheck

Creates EvCheck object associated with the current event loop instance.

### Bağımsız Değişkenler

All parameters have the same meaning as for EvCheck::__construct()

### Dönen Değerler

Returns EvCheck object on success.

### Ayrıca Bakınız

- EvCheck::__construct() - Constructs the EvCheck watcher object

# EvLoop::child

(PECL ev >= 0.2.0)

EvLoop::child — Creates EvChild object associated with the current event loop

### Açıklama

final public function EvLoop::child(
string `$pid` ,
string `$trace` ,
string `$callback` ,
string `$data` = ?,
string `$priority` = ?
): EvChild

Creates EvChild object associated with the current event loop.

### Bağımsız Değişkenler

All parameters have the same meaning as for EvChild::__construct()

### Dönen Değerler

Returns EvChild object on success.

### Ayrıca Bakınız

- EvChild::__construct() - Constructs the EvChild watcher object

# EvLoop::__construct

(PECL ev >= 0.2.0)

EvLoop::__construct — Constructs the event loop object

### Açıklama

public function EvLoop::__construct(
int `$flags` = ?,
mixed `$data` = NULL ,
float `$io_interval` = 0.0 ,
float `$timeout_interval` = 0.0
)

Constructs the event loop object.

### Bağımsız Değişkenler

`flags`
  One of the event loop flags
`data`
  Custom data associated with the loop.
`io_interval`
  See io_interval
`timeout_interval`
  See timeout_interval

### Ayrıca Bakınız

- EvLoop::defaultLoop() - Returns or creates the default event loop

# EvLoop::defaultLoop

(PECL ev >= 0.2.0)

EvLoop::defaultLoop — Returns or creates the default event loop

### Açıklama

public static function EvLoop::defaultLoop(
int `$flags` = Ev::FLAG_AUTO ,
mixed `$data` = NULL ,
float `$io_interval` = 0. ,
float `$timeout_interval` = 0.
): EvLoop

If the default event loop is not created, EvLoop::defaultLoop() creates it with the specified parameters. Otherwise, it just returns the object representing previously created instance ignoring all the parameters.

### Bağımsız Değişkenler

`flags`
  One of the event loop flags
`data`
  Custom data to associate with the loop.
`io_collect_interval`
  See io_interval
`timeout_collect_interval`
  See timeout_interval

### Dönen Değerler

Returns EvLoop object on success.

### Ayrıca Bakınız

- EvLoop::__construct() - Constructs the event loop object

# EvLoop::embed

(PECL ev >= 0.2.0)

EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object

### Açıklama

final public function EvLoop::embed(
string `$other` ,
string `$callback` = ?,
string `$data` = ?,
string `$priority` = ?
): EvEmbed

Creates an instance of EvEmbed watcher associated with the current EvLoop object.

### Bağımsız Değişkenler

All parameters have the same meaning as for EvEmbed::__construct().

### Dönen Değerler

Returns EvEmbed object on success.

### Ayrıca Bakınız

- EvEmbed::__construct() - Constructs the EvEmbed object

# EvLoop::fork

(PECL ev >= 0.2.0)

EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::fork( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvFork

Creates EvFork watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvFork::__construct()

### Dönen Değerler

Returns EvFork object on success.

### Ayrıca Bakınız

- EvFork::__construct() - Constructs the EvFork watcher object

# EvLoop::idle

(PECL ev >= 0.2.0)

EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::idle( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvIdle

Creates EvIdle watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All the parameters have the same meaning as for EvIdle::__construct()

### Dönen Değerler

Returns EvIdle object on success.

### Ayrıca Bakınız

- EvIdle::__construct() - Constructs the EvIdle watcher object

# EvLoop::invokePending

(PECL ev >= 0.2.0)

EvLoop::invokePending — Invoke all pending watchers while resetting their pending state

### Açıklama

public function EvLoop::invokePending(): void

Invoke all pending watchers while resetting their pending state.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# EvLoop::io

(PECL ev >= 0.2.0)

EvLoop::io — Create EvIo watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::io(
mixed `$fd` ,
int `$events` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvIo

Create EvIo watcher object associated with the current event loop instance.

### Bağımsız Değişkenler

All parameters have the same meaning as for EvIo::__construct()

### Dönen Değerler

Returns EvIo object on success.

### Ayrıca Bakınız

- EvIo::__construct() - Constructs EvIo watcher object

# EvLoop::loopFork

(PECL ev >= 0.2.0)

EvLoop::loopFork — Must be called after a fork

### Açıklama

public function EvLoop::loopFork(): void

Must be called after a fork in the child, before entering or continuing the event loop. An alternative is to use `Ev::FLAG_FORKCHECK` which calls this function automatically, at some performance loss (refer to the » libev documentation ).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

# EvLoop::now

(PECL ev >= 0.2.0)

EvLoop::now — Returns the current "event loop time"

### Açıklama

public function EvLoop::now(): float

Returns the current "event loop time", which is the time the event loop received events and started processing them. This timestamp does not change as long as callbacks are being processed, and this is also the base time used for relative timers. You can treat it as the timestamp of the event occurring(or more correctly, libev finding out about it).

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns time of the event loop in (fractional) seconds.

### Ayrıca Bakınız

- Ev::now() - Returns the time when the last iteration of the default event loop has started

# EvLoop::nowUpdate

(PECL ev >= 0.2.0)

EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress

### Açıklama

public function EvLoop::nowUpdate(): void

Establishes the current time by querying the kernel, updating the time returned by EvLoop::now() in the progress. This is a costly operation and is usually done automatically within EvLoop::run().

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvLoop::now() - Returns the current "event loop time"
- Ev::nowUpdate() - Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress

# EvLoop::periodic

(PECL ev >= 0.2.0)

EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::periodic(
float `$offset` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic

Creates EvPeriodic watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvPeriodic::__construct()

### Dönen Değerler

Returns EvPeriodic object on success.

### Ayrıca Bakınız

- EvPeriodic::__construct() - Constructs EvPeriodic watcher object

# EvLoop::prepare

(PECL ev >= 0.2.0)

EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::prepare( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvPrepare

Creates EvPrepare watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvPrepare()

### Dönen Değerler

Returns EvPrepare object on success

### Ayrıca Bakınız

- EvPrepare::__construct() - Constructs EvPrepare watcher object

# EvLoop::resume

(PECL ev >= 0.2.0)

EvLoop::resume — Resume previously suspended default event loop

### Açıklama

public function EvLoop::resume(): void

EvLoop::suspend() and EvLoop::resume() methods suspend and resume a loop correspondingly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvLoop::suspend() - Suspend the loop
- Ev::resume() - Resume previously suspended default event loop

# EvLoop::run

(PECL ev >= 0.2.0)

EvLoop::run — Begin checking for events and calling callbacks for the loop

### Açıklama

public function EvLoop::run( int `$flags` = 0 ): void

Begin checking for events and calling callbacks for the current event loop. Returns when a callback calls Ev::stop() method, or the flags are nonzero(in which case the return value is true) or when there are no active watchers which reference the loop( EvWatcher::keepalive() is `true`), in which case the return value will be `false`. The return value can generally be interpreted as if `true`, there is more work left to do.

### Bağımsız Değişkenler

`flags`

  Optional parameter `flags` can be one of the following:

  List for possible values of `flags`
  `flags` | Description
  --- | ---
  `0` | The default behavior described above
  `Ev::RUN_ONCE` | Block at most one(wait, but don't loop)
  `Ev::RUN_NOWAIT` | Don't block at all(fetch/handle events, but don't wait)

  See the run flag constants.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvLoop::stop() - Stops the event loop
- Ev::run() - Begin checking for events and calling callbacks for the default loop

# EvLoop::signal

(PECL ev >= 0.2.0)

EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::signal(
int `$signum` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvSignal

Creates EvSignal watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvSignal::__construct()

### Dönen Değerler

Returns EvSignal object on success

### Ayrıca Bakınız

- EvSignal::__construct() - Constructs EvSignal watcher object

# EvLoop::stat

(PECL ev >= 0.2.0)

EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::stat(
string `$path` ,
float `$interval` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvStat

Creates EvStat watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvSignal::__construct()

### Dönen Değerler

Returns EvStat object on success

### Ayrıca Bakınız

- EvSignal::__construct() - Constructs EvSignal watcher object

# EvLoop::stop

(PECL ev >= 0.2.0)

EvLoop::stop — Stops the event loop

### Açıklama

public function EvLoop::stop( int `$how` = ?): void

Stops the event loop

### Bağımsız Değişkenler

`how`
  One of Ev::BREAK_* constants.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvLoop::run() - Begin checking for events and calling callbacks for the loop
- Ev::stop() - Stops the default event loop

# EvLoop::suspend

(PECL ev >= 0.2.0)

EvLoop::suspend — Suspend the loop

### Açıklama

public function EvLoop::suspend(): void

EvLoop::suspend() and EvLoop::resume() methods suspend and resume a loop correspondingly.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvLoop::resume() - Resume previously suspended default event loop
- Ev::suspend() - Suspend the default event loop

# EvLoop::timer

(PECL ev >= 0.2.0)

EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance

### Açıklama

final public function EvLoop::timer(
float `$after` ,
float `$repeat` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvTimer

Creates EvTimer watcher object associated with the current event loop instance

### Bağımsız Değişkenler

All parameters have the same meaning as for EvTimer::__construct()

### Dönen Değerler

Returns EvTimer object on success

### Ayrıca Bakınız

- EvTimer::__construct() - Constructs an EvTimer watcher object

# EvLoop::verify

(PECL ev >= 0.2.0)

EvLoop::verify — Performs internal consistency checks(for debugging)

### Açıklama

public function EvLoop::verify(): void

Performs internal consistency checks(for debugging libev) and abort the program if any data structures were found to be corrupted.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- Ev::verify() - Performs internal consistency checks(for debugging)

## İçindekiler

- EvLoop::backend — Returns an integer describing the backend used by libev
- EvLoop::check — Creates EvCheck object associated with the current event loop instance
- EvLoop::child — Creates EvChild object associated with the current event loop
- EvLoop::__construct — Constructs the event loop object
- EvLoop::defaultLoop — Returns or creates the default event loop
- EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object
- EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance
- EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance
- EvLoop::invokePending — Invoke all pending watchers while resetting their pending state
- EvLoop::io — Create EvIo watcher object associated with the current event loop instance
- EvLoop::loopFork — Must be called after a fork
- EvLoop::now — Returns the current "event loop time"
- EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress
- EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance
- EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance
- EvLoop::resume — Resume previously suspended default event loop
- EvLoop::run — Begin checking for events and calling callbacks for the loop
- EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance
- EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance
- EvLoop::stop — Stops the event loop
- EvLoop::suspend — Suspend the loop
- EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance
- EvLoop::verify — Performs internal consistency checks(for debugging)

# The EvPeriodic class

(PECL ev >= 0.2.0)

## Giriş

Periodic watchers are also timers of a kind, but they are very versatile.

Unlike EvTimer, EvPeriodic watchers are not based on real time(or relative time, the physical time that passes) but on wall clock time(absolute time, calendar or clock). The difference is that wall clock time can run faster or slower than real time, and time jumps are not uncommon(e.g. when adjusting it).

EvPeriodic watcher can be configured to trigger after some specific point in time. For example, if an EvPeriodic watcher is configured to trigger "in 10 seconds" (e.g. EvLoop::now() + `10.0`, i.e. an absolute time, not a delay), and the system clock is reset to January of the previous year, then it will take a year or more to trigger the event (unlike an EvTimer, which would still trigger roughly `10` seconds after starting it as it uses a relative timeout).

As with timers, the callback is guaranteed to be invoked only when the point in time where it is supposed to trigger has passed. If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones with later time-out values (but this is no longer true when a callback calls EvLoop::run() recursively).

## Sınıf Sözdizimi

class EvPeriodic extends EvWatcher {
/* Özellikler */
public $offset;
public $interval;
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct(
float `$offset` ,
string `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)
public function again(): void
public function at(): float
final public static function createStopped(
float `$offset` ,
float `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic
public function set( float `$offset` , float `$interval` ): void
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

## Özellikler

offset
  When repeating, this contains the offset value, otherwise this is the absolute point in time(the offset value passed to EvPeriodic::set(), although libev might modify this value for better numerical stability).
interval
  The current interval value. Can be modified any time, but changes only take effect when the periodic timer fires or EvPeriodic::again() is being called.

# EvPeriodic::again

(PECL ev >= 0.2.0)

EvPeriodic::again — Simply stops and restarts the periodic watcher again

### Açıklama

public function EvPeriodic::again(): void

Simply stops and restarts the periodic watcher again. This is only useful when attributes are changed.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Hiçbir değer dönmez.

### Ayrıca Bakınız

- EvTimer::again() - Restarts the timer watcher

# EvPeriodic::at

(PECL ev >= 0.2.0)

EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next

### Açıklama

public function EvPeriodic::at(): float

When the watcher is active, returns the absolute time that this watcher is supposed to trigger next. This is not the same as the offset argument to EvPeriodic::set() or EvPeriodic::__construct(), but indeed works even in interval mode.

### Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

### Dönen Değerler

Returns the absolute time this watcher is supposed to trigger next in seconds.

# EvPeriodic::__construct

(PECL ev >= 0.2.0)

EvPeriodic::__construct — Constructs EvPeriodic watcher object

### Açıklama

public function EvPeriodic::__construct(
float `$offset` ,
string `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)

Constructs EvPeriodic watcher object and starts it automatically. EvPeriodic::createStopped() method creates stopped periodic watcher.

### Bağımsız Değişkenler

`offset`
  See Periodic watcher operation modes
`interval`
  See Periodic watcher operation modes
`reschedule_cb`
  Reschedule callback. You can pass `null`. See Periodic watcher operation modes
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Örnekler

Örnek 1 Periodic timer. Use reschedule callback

    <?php
    // Tick each 10.5 seconds

    function reschedule_cb ($watcher, $now) {
     return $now + (10.5 - fmod($now, 10.5));
    }

    $w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
     echo time(), PHP_EOL;
    });
    Ev::run();
    ?>

Örnek 2 Periodic timer. Tick every 10.5 seconds starting at now

    <?php
    // Tick every 10.5 seconds starting at now
    $w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
     echo time(), PHP_EOL;
    });
    Ev::run();
    ?>

Örnek 3 Hourly watcher

    <?php
    $hourly = EvPeriodic(0, 3600, NULL, function () {
     echo "once per hour\n";
    });
    ?>

### Ayrıca Bakınız

- Periodic watcher operation modes
- EvTimer
- EvPeriodic::createStopped() - Create a stopped EvPeriodic watcher

# EvPeriodic::createStopped

(PECL ev >= 0.2.0)

EvPeriodic::createStopped — Create a stopped EvPeriodic watcher

### Açıklama

final public static function EvPeriodic::createStopped(
float `$offset` ,
float `$interval` ,
callable `$reschedule_cb` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
): EvPeriodic

Create EvPeriodic object. Unlike EvPeriodic::__construct() this method doesn't start the watcher automatically.

### Bağımsız Değişkenler

`offset`
  See Periodic watcher operation modes
`interval`
  See Periodic watcher operation modes
`reschedule_cb`
  Reschedule callback. You can pass `null`. See Periodic watcher operation modes
`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvPeriodic watcher object on success.

### Ayrıca Bakınız

- EvPeriodic::__construct() - Constructs EvPeriodic watcher object
- EvTimer::createStopped() - Creates EvTimer stopped watcher object

# EvPeriodic::set

(PECL ev >= 0.2.0)

EvPeriodic::set — Configures the watcher

### Açıklama

public function EvPeriodic::set( float `$offset` , float `$interval` ): void

(Re-)Configures EvPeriodic watcher

### Bağımsız Değişkenler

`offset`
  The same meaning as for EvPeriodic::__construct(). See Periodic watcher operation modes
`interval`
  The same meaning as for EvPeriodic::__construct(). See Periodic watcher operation modes

### Dönen Değerler

Hiçbir değer dönmez.

## İçindekiler

- EvPeriodic::again — Simply stops and restarts the periodic watcher again
- EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next
- EvPeriodic::__construct — Constructs EvPeriodic watcher object
- EvPeriodic::createStopped — Create a stopped EvPeriodic watcher
- EvPeriodic::set — Configures the watcher

# The EvPrepare class

(PECL ev >= 0.2.0)

## Giriş

EvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards.

It is not allowed to call EvLoop::run() or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck, so having a watcher of each kind they will always be called in pairs bracketing the blocking call.

The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.

It is recommended to give EvCheck watchers highest( `Ev::MAXPRI`) priority, to ensure that they are being run before any other watchers after the poll (this doesn’t matter for EvPrepare watchers).

Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job.

## Sınıf Sözdizimi

class EvPrepare extends EvWatcher {
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct( string `$callback` , string `$data` = ?, string `$priority` = ?)
final public static function createStopped( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvPrepare
/* Miras alınan yöntemler */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int `$revents` ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int `$revents` ): void
public function EvWatcher::keepalive( bool `$value` = ?): bool
public function EvWatcher::setCallback( callable `$callback` ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

# EvPrepare::__construct

(PECL ev >= 0.2.0)

EvPrepare::__construct — Constructs EvPrepare watcher object

### Açıklama

public function EvPrepare::__construct( string `$callback` , string `$data` = ?, string `$priority` = ?)

Constructs EvPrepare watcher object. And starts the watcher automatically. If a stopped watcher is needed, consider using EvPrepare::createStopped()

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Ayrıca Bakınız

- EvCheck

# EvPrepare::createStopped

(PECL ev >= 0.2.0)

EvPrepare::createStopped — Creates a stopped instance of EvPrepare watcher

### Açıklama

final public static function EvPrepare::createStopped( callable `$callback` , mixed `$data` = `null` , int `$priority` = 0 ): EvPrepare

Creates a stopped instance of EvPrepare watcher. Unlike EvPrepare::__construct(), this method doesn't start the watcher automatically.

### Bağımsız Değişkenler

`callback`
  See Watcher callbacks.
`data`
  Custom data associated with the watcher.
`priority`
  Watcher priority

### Dönen Değerler

Returns EvPrepare object on success.

### Ayrıca Bakınız

- EvPrepare::__construct() - Constructs EvPrepare watcher object
- EvWatcher::start() - Starts the watcher

## İçindekiler

- EvPrepare::__construct — Constructs EvPrepare watcher object
- EvPrepare::createStopped — Creates a stopped instance of EvPrepare watcher

# The EvSignal class

(PECL ev >= 0.2.0)

## Giriş

EvSignal watchers will trigger an event when the process receives a specific signal one or more times. Even though signals are very asynchronous, libev will try its best to deliver signals synchronously, i.e. as part of the normal event processing, like any other event.

There is no limit for the number of watchers for the same signal, but only within the same loop, i.e. one can watch for `SIGINT` in the default loop and for `SIGIO` in another loop, but it is not allowed to watch for `SIGINT` in both the default loop and another loop at the same time. At the moment, `SIGCHLD` is permanently tied to the default loop.

If possible and supported, libev will install its handlers with `SA_RESTART` (or equivalent) behaviour enabled, so system calls should not be unduly interrupted. In case of a problem with system calls getting interrupted by signals, all the signals can be blocked in an EvCheck watcher and unblocked in a EvPrepare watcher.

## Sınıf Sözdizimi

class EvSignal extends EvWatcher {
/* Özellikler */
public $signum;
/* Miras alınan özellikler */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Yöntemler */
public function __construct(
int `$signum` ,
callable `$callback` ,
mixed `$data` = `null` ,
int `$priority` = 0
)
final public static function createStopped(
&nb
[file cut: first 33554432 bytes kept]
